bartowski 发布了一项关于用于计算 GGUF 模型中 imatrix 的校准数据的新实验,说明新的 dataset 并不是改善性能的“万能方案”,但在某些情况下取得了有限而重要的收益,并加深了人们对量化所使用文本类型如何影响最终模型的理解。实验作者表示,这并非最终结果,他预计将继续更新和测试这些数据。
实验与 Fable 合作进行,并使用了 LTT Labs 提供的 GPU 资源。bartowski 公开发布了所使用的文件,包括分别用于散文文本和对话的两个独立文件,以及经过模型专用聊天模板处理后的文本。他还提供了一个说明如何生成格式化版本的脚本,并指出 Qwen 文件在末尾包含有意添加的 <|endoftext|> 字符串,以免模型忽略数据的最后部分。
imatrix 在量化过程中有什么作用?
bartowski 解释说,llama.cpp 中的量化算法试图减少将权重组转换为低精度表示时产生的误差。为了估计这些权重的相对重要性,系统会将大量文本输入模型,然后收集输入通道的激活测量值,更准确地说,是到达每个张量的激活值平方和。
在大量文本中持续强烈激活的通道,会被认为其相关权重对最终结果更重要。而很少被激活的通道可能看起来不太重要,但也可能是因为数据没有包含能够调用它们的正确文本类型。因此,结果不仅取决于 corpus 的大小,还取决于其多样性,以及激活模型不同部分的能力。
测试涵盖了稠密模型和混合专家模型
团队测试了七个模型:gemma-4-E2B-it、Qwen3.5-4B、Qwen3.6-27B、Qwen3.6-35B-A3B、Mistral-Small-4-119B、Qwen3-Next-80B-A3B 和 Qwen3.5-397B-A17B。评估重点是与 bf16 比较 KLD、进行 BFCL 测试,此外还包括一组定制的短测试,以及检查 MoE 模型中的专家覆盖率。由于完整运行测试的成本较高,还使用了 MMLU-Pro 和 GSM8K 的样本进行更深入的验证。
总体结果显示,在超过约每权重 4 比特的比特率下,这些数据并未带来明显可预期的差异。早期测试包括完全随机的数据,以排除部分假设;但在 Q4_0、IQ4_XS 及更高水平上,大多数情况下差异仍然有限,因为这些级别的量化误差相对较小。
最大的差异出现在低水平量化中,尤其是 MoE 模型的 Q2_K。在不使用 imatrix 的情况下量化 Qwen3.6-35B 时,BFCL 性能下降了约 28 个百分点,从约 82% 降至 54%。在该测试中,最佳与最差 corpus 之间的差异也约为 10%。相比之下,用于 IQ2_M 的大多数干净数据彼此接近,差异通常不超过几个百分点。
为什么聊天格式和工具使用很重要?
实验表明,MoE 模型面临的挑战不仅与语言多样性或文本质量有关,还与数据激活不同专家的能力有关。在 Qwen3-Next-80B-A3B 中,一个专门用于工具使用的英语 corpus 即使在输入 3126 个片段后,仍有 512 个专家中的 18 个完全没有被激活;这一数据量约为 calibration_datav5.txt 长度的四倍。
将 calibration_datav5.txt 与工具调用数据结合后,实现了完整的专家覆盖。实验发现,多语言内容和编程内容是激活其中一些专家所需的主要因素。此外,在 MoE 模型中,按照 chat template 编写的对话似乎尤其重要,因为某些专家可能只有在看到聊天标记和聊天结构时才会被激活。
实际上,这意味着为支持聊天或工具调用的模型准备 imatrix 时,不应仅限于随机散文文本。缺少聊天模板或工具示例,可能会使某些专家在校准期间代表性不足,这种情况之后可能会在低量化比特率下的性能中体现出来。
新版本是如何构建的?
bartowski 进行了片段级分析,以了解哪些数据部分能够更好地激活专家。结果显示,某些专家只会在特定类型的内容中出现,例如代码、法语文本、叙事文学或科学材料。因此,团队收集了多样化的散文文本,旨在最大限度地覆盖测试中所用 MoE 模型的专家。
此外,还加入了来自 interstellarninja/hermes_reasoning_tool_use 的工具调用格式化对话;在测试中,散文与对话 2:3 的比例是最佳组合。在尝试了包含 400 至 800 个片段的版本后,最终版本的表现优于大得多的版本,即使后者基于相同的质量构建。作者提出的初步解释是,超大的 corpus 可能会被最常见的内容所主导,从而掩盖出现频率较低但重要的信号。
他还表示,新的数据并未缩小多语言覆盖范围;相反,散文部分中以拉丁字母书写的文本占比下降,这意味着与 v5 版本相比,非拉丁语文字在 corpus 中所占比例更大,不过仍需进行更多测试。
v5 与 v6 的比较并非绝对胜出
在构建 Qwen3.8-27B 时,bartowski 使用 wikitext、HuggingFaceH4/no_robots 和 Salesforce/xlam-function-calling-60k 上的 perplexity 与 KLD,对 v5 和 v6 两个版本进行了比较。他将这些数字描述为近似指标,而非决定性证据,尤其是 bf16 在 no_robots 上的参考 perplexity 值为 19.05。在 wikitext 上,v6 在某些水平上的平均 KLD 得到改善,例如 Q2_K_L 提升 2.6%,IQ2_M 提升 1.8%;但在其他水平上有所下降,例如 Q4_K_S 下降 3.6%,IQ2_S 下降 3.1%。
这一比较表明,新 dataset 带来的收益具有选择性,并不是对所有量化格式或所有测试集的全面升级。作者的结论也证实了这一点:imatrix 的影响在低比特率下更加明显,并且在依赖大量专家之间分配工作量的模型中更为显著。
作者还测试了在计算 imatrix 时使用 2048 而非 512 的上下文长度,但没有观察到结果改善,反而在许多情况下专家覆盖率下降。对使用 bf16 和 Q8_0 计算出的 imatrix 结果进行余弦相似度比较时,相似度超过 99.99%,但也存在一些异常值。
实际结论并不是某一个 dataset 总能保证更好的性能,而是 corpus 的选择已经成为值得调节的因素,尤其是在将 MoE 模型量化到较低水平时。新版本及其文件和生成方法均已公开;与此同时,bartowski 仍在其他模型上进行测试,其中包括 Mistral 和 Qwen3-Next-80B-A3B。