比较小于50GB的Llama 4 Scout量化模型(KLD/Top P)

社区文章 2025年4月9日发布

重要免责声明:KLD并非衡量一切的标准,PPL更是如此,Top P则…多少有点用。

还要非常感谢BeaverAI Club的Artus(Discord服务器链接:https://discord.gg/kfhWt9XeSB),他帮助我运行了完整的BF16模型的KLD计算,否则我可能要花几天时间才能完成 :D

在着手Maverick项目之前,我决定投入一些计算资源,来计算几个我发布的小型Scout量化模型的PPL/KLD/Top P值,这些模型在相同的设置下,但排除了我的PR更改(即主分支版本会生成的内容),甚至还加入了几个Unsloth的量化模型。

此举是为了查看我的PR更改是总体上有益还是有害。我不太喜欢它们变得更大,这让我们失去了一些“IQ1_M”(本来应该平均1.75BPW……)之类的含义,但无论如何,我认为值得 выяснить这些更改是否值得继续并应用于Maverick。

原始数据(手机用户请见谅)

测量 IQ1_M (我的版本) IQ1_M (主分支版本) IQ2_XXS (我的版本) IQ2_XXS (主分支版本) IQ2_S (我的版本) UD-IQ1_M (unsloth版本) Q2_K_L (我的版本) Q2_K_L (主分支版本) UD-Q2_K_XL (unsloth版本) IQ3_XXS (我的版本) IQ3_XXS (主分支版本)
大小 (GB) 26.32 24.57 30.17 28.56 34.34 35.4 44 40.57 42.6 44.96 41.66
平均PPL 11.81 13.79 10.55 11.66 9.85 10.30 9.02 9.88 9.31 9.266434 9.76184
KLD
平均 0.691 0.933 0.464 0.664 0.361 0.376 0.217 0.332 0.185 0.164 0.244
最大值 17.819 23.806 26.647 26.761 17.597 21.264 24.180 17.556 23.286 28.166 25.849
99.9% 9.912 10.822 7.897 10.029 6.693 6.995 11.729 12.766 4.213 4.232 4.964
99% 5.463 6.250 4.084 5.094 3.237 3.560 2.108 2.966 1.844 1.600 2.178
中位数 0.315 0.503 0.187 0.336 0.141 0.131 0.067 0.125 0.060 0.056 0.099
10% 0.0053 0.0099 0.002 0.004 0.0012 0.0012 0.0005 0.0009 0.0004 0.0004 0.0005
5% 0.00097 0.00179 0.0003 0.00064 0.00019 0.00018 0.00008 0.00013 0.00005 0.00005 0.00007
1% 0.000046 0.000073 0.000011 0.000030 0.000007 0.000007 0.000003 0.000004 0.000001 0.000001 0.000002
Delta 概率
平均 -8.03% -10.30% -4.62% -6.70% -3.38% -3.46% -2.14% -2.37% -1.38% -1.13% -1.57%
最大值 99.67% 98.73% 99.81% 99.81% 99.13% 98.90% 99.88% 99.81% 99.83% 99.91% 99.89%
99.9% 77.40% 79.77% 76.36% 79.42% 75.03% 76.59% 69.34% 75.65% 69.69% 65.60% 71.73%
99% 42.37% 47.40% 41.62% 47.11% 40.06% 40.50% 32.34% 41.88% 33.46% 31.38% 37.88%
95.00% 15.79% 18.51% 16.32% 19.86% 16.05% 15.56% 12.41% 17.30% 12.83% 12.71% 16.04%
90.00% 6.59% 7.56% 7.69% 9.05% 7.62% 7.33% 5.92% 8.86% 6.43% 6.50% 8.23%
75.00% 0.16% 0.13% 0.44% 0.35% 0.54% 0.51% 0.53% 0.89% 0.70% 0.70% 0.86%
中位数 -0.78% -1.21% -0.18% -0.42% -0.09% -0.09% -0.03% -0.02% -0.01% -0.01% -0.01%
25.00% -11.66% -15.85% -6.11% -9.93% -4.65% -4.56% -2.86% -3.40% -2.11% -1.96% -2.66%
10.00% -35.57% -46.38% -23.74% -34.08% -19.19% -18.97% -12.61% -16.60% -10.76% -10.12% -13.68%
5.00% -56.91% -68.67% -40.94% -53.40% -33.86% -34.31% -23.01% -30.06% -20.07% -18.53% -24.41%
1.00% -91.25% -95.39% -80.42% -87.98% -70.51% -73.12% -55.83% -67.16% -49.11% -44.35% -53.65%
0.10% -99.61% -99.87% -98.74% -99.76% -95.85% -95.98% -99.92% -99.92% -82.64% -78.71% -86.82%
最小值 -100.00% -100.00% -100.00% -100.00% -99.95% -99.99% -100.00% -100.00% -99.90% -100.00% -100.00%
RMS Δp 23.63% 27.63% 19.13% 23.06% 16.88% 17.16% 13.55% 16.31% 12.16% 11.30% 13.69%
相同的顶部 68.58% 62.65% 74.02% 67.77% 76.74% 77.00% 82.92% 77.85% 83.42% 84.28% 80.08%

上述图像

image/png

https://i.imgur.com/35GAKe5.png

编辑:我搞错了一些较低的计算!(这就是我包含原始数据的原因,哈哈……)这里是更新后的图片

https://i.imgur.com/hFkza66.png

我还为Top P的大小添加了一个logit(并在之后乘以100使其更清晰),因为我认为这能更清晰地描绘Top P……显然,如果模型非常小但有时能给出正确答案,它会获得超高的Top P/GB,但当Top P越接近100时,差异就越重要。在我看来,logit计算能更好地反映这些差异。

我在底部添加了一些“指标”,比如1/PPL/MB(因为GB是一个很小的数字)

对于所有这些指标,数值越大越好(我将PPL、KLD和RMS进行了反转,以获得有意义的结果,因为按GB计算的较小值是一种奇怪的衡量标准)。

我添加了一些颜色来突出一些内容,但请不要过度解读,这纯粹是信息性的。我不能真正说明哪些值更重要(尽管我会说PPL本身似乎相当无用,即使是完整的BF16模型也超过了8)。

KLD、RMS和Top P都与PPL无关,它们只是告诉你量化模型与完整模型权重有多相似。这并不意味着越接近就越好,只是更相似而已。

我分享了所有信息,因为每个量化模型在不同部分表现出色。

就每GB性能而言,我的IQ3_XXS似乎名列前茅,但它的最大KLD值是迄今为止最差的……这并不是特别令人担忧,因为99.9%的值非常合理,但值得注意的是,没有哪个量化模型在所有方面都表现最佳。

最重要的是,我的IQ3_XXS和Unsloth的UD-Q2_K_XL似乎是50GB以下模型的王者,在图表中互有胜负,我的模型大了2.36 GB。

如果你需要更小的模型,我的IQ2_S和Unsloth的UD-1Q_M相似,Unsloth的模型大了1.05GB。

总之,希望有人能在图表中发现有趣的东西!

社区

我冒昧地尝试增加更多数据可视化。你可以在这里查看:

[精简版]
https://page.genspark.site/page/toolu_013iF9H8mPpqYyNHfi3sc8KA/performance_metrics_analysis.html

[高级版]
https://page.genspark.site/page/toolu_018LCdFVi8w6aXChyMqERMdx/revised_quantization_performance_analysis.html

[注意]
此编辑包含一个更新版本,具有增强的视觉效果,同时保留了精简版供希望查看的用户。增强模式未针对移动设备进行优化。横向模式似乎可以解决问题,桌面版显示正常。

·
文章作者

太棒了,谢谢!

此评论已被隐藏(标记为无关话题)

天哪,这正是我注册想看的内容!非常感谢bartowski撰写了这篇深入探讨合成基准的文章,用于比较给定模型架构的量化质量。

我一直在关注你的llama.cpp PR以及你新的V2模型在降低困惑度方面的良好进展。

我之前只测试困惑度,但KDL和Top P看起来也很有趣。非常感谢 @Matrix-Array 的彩图,特别是最后一张“每GiB指标”,在我看来,它最清楚地展示了差异。我是一周前从 @nicoboss 那里第一次听说这些的。

强烈建议您测量kv-散度、top token概率和相同token概率,而不是困惑度,以获得更好的数据。- mradermacher 团队

如果你的PR不影响非MoE模型,那么将其合并可能是值得的。有趣的是,GG也提出了llama.cpp PR#12511,这基本上和我一直在用 @ikawrakow ik_llama.cpp with --custom-q做的事情一样。

据我所知,主线PR也支持使用与你发现的类似正则表达式样式进行张量和行自定义量化。Unsloth团队 @danielhanchen 已经展示了多个模型,建议按层测量激活和权重误差分析,以指导如何进行量化,因为有些层似乎更敏感,例如这个gemma-3-27b例子

总之,抱歉打扰了大家,只是很感激你们,这对普通AI爱好者来说都是好消息,因为领先的量化烹饪者都在改进他们的方法。

干杯!

·
文章作者

我之前只测试困惑度,但KDL和Top P看起来也很有趣。非常感谢 @Matrix-Array 的彩图,特别是最后一张“每GiB指标”,在我看来,它最清楚地展示了差异。我是一周前从 @nicoboss 那里第一次听说这些的。

是的,困惑度绝对是一个有趣的统计数据,但如你所见,它并不能说明全部情况。

Llama 4 的困惑度高得离谱,但这仅仅意味着它不太可能逐字重复wikitext…如果量化后困惑度反而降低,那实际上更说明量化从根本上改变了模型。

它变得更好了吗?当然有可能!但我宁愿它忠于源模型,并以此发布,而不是试图操纵PPL系统(最近我没见过有人这么做,这很好)。

KLD和top P可以显示与完整权重的相似性,这非常有价值,我总体上更喜欢它!你甚至可以在我的图表中看到原因。

我更新后的Q2_K_L拥有所有量化模型中最好的PPL,然而,它与bf16的差异比我的IQ3_XXS更大!这是否意味着Q2_K_L更好?几乎肯定不是!

好帖,感谢分享。计算PPL/KLD等使用的测试语料库是什么?

·
文章作者

Wiki文本的前300个分块,我个人觉得从KLD的角度看,使用哪个数据集是任意的,PPL当然可能因数据集而异(Scout在wiki文本上的完全精度PPL接近9也很奇怪……)

这里有两张图表,显示了平均KLD和顶部token概率作为ln(PPL)的函数。数据取自上表。当用直线(图中红线)拟合数据点时,KLD的相关系数为0.988,顶部token概率为-0.978。从统计学上讲,这意味着如果我计算(或观察)了这三个中的一个,我就不需要计算(或观察)另外两个,因为我不会学到任何新的东西。我冒昧地在顶部token概率上添加了误差条,这能更真实地反映与期望值的偏差。

ppl_vs_kld.png

ppl_vs_top1.png

·

我完全理解你的意思,我想我担心的是它不一定非要那样发展,它通常和一般情况下都是如此,但即使趋势是一条漂亮的直线,数据也并非那么直接。

我想对我来说,尽管PPL是一个(出乎意料地)有用的近似值,但当我们深入到极其细致的程度(就像我在这里似乎做的那样)时,通过使用KLD和Top P来描绘全貌会更容易。

如果这能引起你的兴趣,这里有一些关于使用ik_llama.cpp量化L4-Scout的笔记

跳过了IQ2M,Maverick 128E在IQ2M上出错。不知道B5125是否修复了。无论如何,任何低于IQ2_M的PPL测量值基本都是垃圾。

@bartowski :

mradermacher 在 Maverick 128E IQ2_M 上遇到了问题。嵌入层需要是3位。这就是IQ2_M和IQ2_S之间的全部区别。对于编码,你需要嵌入是3位。任何更少都会搞乱编码(不是说llama4模型擅长编码,也许Athene或Dracarys的微调会使编码达到标准,或者Meta会发布0236版本)。你能看看B5125是否修复了Maverick 128E IQ2_M吗?

注册登录 以评论