🦥Unsloth Dynamic 2.0 GGUF
我们动态量化的一项重大新升级!
我们很高兴推出 Unsloth Dynamic v2.0 量化——这是对我们先前量化版本的一次重大升级。这种新方法优于主流量化方法,并为以下项目树立了新的基准: Aider Polyglot、5-shot MMLU 和 KL 散度。
这意味着你现在可以运行并微调 量化 LLM 同时尽可能保留精度!你可以在大多数推理引擎上运行 2.0 GGUF,例如 llama.cpp、 Unsloth Studio 等。
2026 年 4 月 20 日更新: 查看我们针对以下模型的新 GGUF 基准测试: Qwen3.6 和 Gemma 4.
2026 年 2 月 27 日更新: Qwen3.5 已发布,我们修复了一些工具调用聊天模板问题,并对每个 GGUF 在困惑度和 KL 散度上进行了基准测试。 查看基准测试!
使用 关键优势 的 Unsloth 软件包 和量化版本在于,我们积极参与修复主流模型中的错误。我们已直接与以下团队合作: Qwen3, Meta(Llama 4), Mistral(Devstral), Google(Gemma 1–3) 和 Microsoft(Phi-3/4),贡献了可提升准确率的修复。


Unsloth Dynamic GGUF 现在可以运行于 Unsloth Studio ✨

2025 年 9 月 10 日更新: 你们想要更严格的基准测试,所以这里带来了 Aider Polyglot 的结果!我们的 Dynamic 3-bit DeepSeek V3.1 GGUF 得分为 75.6%,超过了许多全精度 SOTA LLM。 阅读更多。


你还可以查看 Benjamin Marie 针对 LiveCodeBench v6、MMLU Pro 等所进行的真实世界用例基准测试:


你可以看到,尽管 Unsloth 的 GGUF 体积小了约 8GB,但其表现仍优于非 Unsloth 的量化版本。
下方还有我们基准测试和评估的详细分析。
💡 Dynamic v2.0 有哪些新内容?
为 GGUF + safetensors 重新设计的层选择: Unsloth Dynamic 2.0 现在能够以更智能、更广泛的方式对层进行选择性量化。我们不再只修改少数特定层,而是会动态调整每一个可能层的量化类型,而且不同层和不同模型的组合都会有所不同。
当前已选择的以及未来所有 GGUF 上传都将使用 Dynamic 2.0 和我们的新校准数据集。该数据集包含超过 >1.5M 个 token (取决于模型),由高质量、人工精心筛选并清洗的数据组成——可大幅提升对话聊天性能。
此前,我们的 Dynamic 量化(DeepSeek-R1 1.58-bit GGUF)仅对 MoE 架构有效。 Dynamic 2.0 量化现在适用于所有模型(包括 MoE 和非 MoE).
模型特定量化: 每个模型现在都使用量身定制的量化方案。例如,Gemma 3 中被量化的层与 Llama 4 中的层有显著差异。
为了最大化效率,尤其是在 Apple Silicon 和 ARM 设备上,我们现在还加入了 Q4_NL、Q5.1、Q5.0、Q4.1 和 Q4.0 格式。
为了确保基准测试准确,我们构建了一个内部评估框架,以匹配 Llama 4 和 Gemma 3 官方报告的 5-shot MMLU 分数。这使我们能够在全精度与 Dynamic v2.0、 QAT 以及标准 imatrix GGUF 量化版本之间进行公平对比。


未来所有 GGUF 上传都将使用 Unsloth Dynamic 2.0,而我们的 Dynamic 4-bit safetensor 量化版本未来也将从中受益。
📊 为什么是 KL 散度?
准确率并不是你所需要的一切 展示了即便剪枝的层是被认为不必要的层,在“翻转”方面仍会带来巨大的差异。“翻转”被定义为答案从错误变为正确,或从正确变为错误。论文表明,当我们剪枝层或进行量化时,MMLU 可能不会下降,但那是因为一些错误答案可能“翻转”为正确答案。我们的目标是匹配原始模型,因此衡量“翻转”是一个很好的指标。


KL 散度 应该是 报告量化误差的黄金标准之一 正如研究论文《Accuracy is Not All You Need》中所述。 使用困惑度是不正确的 因为输出 token 的数值可能会相互抵消,所以我们必须使用 KLD 或更严格的基准测试,例如 Aider.
论文还表明,有趣的是,KL 散度与翻转高度相关,因此我们的目标是在尽可能少增加量化磁盘空间的同时,降低平均 KL 散度。
⚖️ 校准数据集过拟合
大多数框架使用维基百科文章测试集来报告困惑度和 KL 散度。然而,我们注意到,如果使用同样与维基百科相关的校准数据集,会导致量化版本过拟合,并获得更低的困惑度分数。我们使用 Calibration_v3 和 Calibration_v5 数据集进行公平测试,其中除其他数据外还包含一些 wikitext 数据。 另外,指令模型具有独特的聊天模板,仅使用纯文本校准数据集对指令模型并不有效 (基础模型则可以)。事实上,大多数 imatrix GGUF 通常都带有这些校准问题。因此,它们在同样使用维基百科数据的 KL 散度基准测试中自然表现更好,因为模型本质上已针对该领域进行了优化。
为了确保评估公平且可控,我们在进行 KL 散度基准测试时不会使用我们自己的校准数据集(该数据集针对聊天性能进行了优化)。相反,我们使用相同的标准维基百科数据集进行了测试,从而能够将我们的 Dynamic 2.0 方法与基线 imatrix 方法直接比较性能。
🔢 MMLU 复现历险记
复现 MMLU 5 shot 简直是一场噩梦。我们 无法 由于 细微的实现问题,我们无法复现许多模型的 MMLU 结果,包括 Llama 3.1(8B)Instruct、Gemma 3(12B)等。例如,Llama 3.1(8B)理论上应达到约 68.2%,而使用错误实现则可能只有 35% 的准确率。

使用朴素的 MMLU 实现时,Llama 3.1(8B)Instruct 的 MMLU 5 shot 准确率为 67.8%。但我们发现 Llama 会将“A”和“_A”(前面带空格的 A)分词为不同的 token id。如果我们同时考虑带空格和不带空格的 token,结果就会达到 68.2% (+0.4%)
有趣的是,Llama 3 依据 Eleuther AI 的 LLM Harness 还会附加 “The best answer is” 到问题后面,遵循了 Llama 3 原始的 MMLU 基准测试方式。
还有许多其他细微问题,因此为了在受控环境中对所有内容进行基准测试,我们通过直接研究 github.com/hendrycks/test 从零开始设计了自己的 MMLU 实现,并在多个模型上验证了结果并与报告数字进行了比较。
✨ Gemma 3 QAT 复现与基准测试
Gemma 团队发布了 Gemma 3 的两个 QAT(量化感知训练)版本:
Q4_0 GGUF —— 通过公式将所有层量化为 Q4_0
w = q * block_scale,每个块有 32 个权重。更多细节请参见 llama.cpp wiki 。int4 版本——推测是 TorchAO int4 风格?
我们对所有 Q4_0 GGUF 版本进行了基准测试,并在 12B 模型上进行了大量实验。我们看到 12B Q4_0 QAT 模型达到 67.07% ,而全精度 bfloat16 12B 版本在 5 shot MMLU 上达到 67.15%。这非常令人印象深刻!27B 模型也已经非常接近了!
MMLU 5 shot
26.12%
55.13%
67.07%(67.15% BF16)
70.64%(71.5% BF16)
磁盘空间
0.93GB
2.94GB
7.52GB
16.05GB
效率*
1.20
10.26
5.59
2.84
我们设计了一个新的 效率指标 用于计算模型的实用性,同时也将其磁盘大小和 MMLU 5 shot 分数考虑在内:
我们必须 减去 25 因为 MMLU 有 4 个选项——A、B、C 或 D。假设我们做一个只会随机选答案的模型——它会得到 25% 准确率,而且磁盘空间只需几个字节。但显然这不是一个有用的模型。
关于相对于基础模型的 KL 散度,下面的表格展示了改进情况。提醒一下,KL 散度越接近 0 越好(也就是说 0 表示与全精度模型完全相同)
IQ1_S
1.035688
5.83
0.972932
6.06
IQ1_M
0.832252
6.33
0.800049
6.51
IQ2_XXS
0.535764
7.16
0.521039
7.31
IQ2_M
0.26554
8.84
0.258192
8.96
Q2_K_XL
0.229671
9.78
0.220937
9.95
Q3_K_XL
0.087845
12.51
0.080617
12.76
Q4_K_XL
0.024916
15.41
0.023701
15.64
如果我们绘制磁盘空间增加比例与 KL 散度变化比例的关系图,就能更清楚地看出收益!我们的动态 2bit Q2_K_XL 显著降低了 KLD(约 7.5%)。
Gemma 3(27B)的 MMLU 结果截断表。见下方。
我们的动态 4bit 版本小了 2GB,同时相比 QAT 版本还额外提升了 +1% 准确率!
从效率角度看,2bit Q2_K_XL 等版本似乎表现非常好!
IQ1_M
48.10
47.23
6.51
3.42
IQ2_XXS
59.20
56.57
7.31
4.32
IQ2_M
66.47
64.47
8.96
4.40
Q2_K_XL
68.70
67.77
9.95
4.30
Q3_K_XL
70.87
69.50
12.76
3.49
Q4_K_XL
71.47
71.07
15.64
2.94
Google QAT
70.64
17.2
2.65
点击这里 查看 Google 完整的 Gemma 3(27B)QAT 基准测试:
IQ1_S
41.87
43.37
6.06
3.03
IQ1_M
48.10
47.23
6.51
3.42
IQ2_XXS
59.20
56.57
7.31
4.32
IQ2_M
66.47
64.47
8.96
4.40
Q2_K
68.50
67.60
9.78
4.35
Q2_K_XL
68.70
67.77
9.95
4.30
IQ3_XXS
68.27
67.07
10.07
4.18
Q3_K_M
70.70
69.77
12.51
3.58
Q3_K_XL
70.87
69.50
12.76
3.49
Q4_K_M
71.23
71.00
15.41
2.98
Q4_K_XL
71.47
71.07
15.64
2.94
Q5_K_M
71.77
71.23
17.95
2.58
Q6_K
71.87
71.60
20.64
2.26
Q8_0
71.60
71.53
26.74
1.74
Google QAT
70.64
17.2
2.65
🦙 Llama 4 错误修复 + 运行
我们还帮助修复了一些 Llama 4 的问题:
Llama 4 Scout 在其官方仓库中更改了 RoPE Scaling 配置。我们帮助解决了 llama.cpp 中的问题,以支持这一 这里的更改

Llama 4 的 QK Norm 中,Scout 和 Maverick 的 epsilon 都应来自配置文件——这意味着应使用 1e-05 而不是 1e-06。我们帮助在以下项目中解决了这些问题: llama.cpp 和 transformers
Llama 4 团队和 vLLM 还独立修复了一个 QK Norm 在所有头之间共享的问题(本不该如此) 这里。MMLU Pro 准确率从 68.58% 提升到 71.53%。
Wolfram Ravenwolf 展示了我们的 GGUF 通过 llama.cpp 能达到远高于第三方推理提供商的准确率——这很可能是上述问题叠加所致,也可能与量化问题有关。

如我们的图表所示,我们的 4-bit Dynamic QAT 量化在 5-shot MMLU 上带来了更好的性能,同时体积也更小。
运行 Llama 4 Scout:
例如,要运行 Llama 4 Scout,首先克隆 llama.cpp:
然后下载我们为 Scout 提供的全新 Dynamic v2.0 量化版本:
然后让我们开始推理!
在这里阅读更多有关运行 Llama 4 的内容: https://docs.unsloth.ai/basics/tutorial-how-to-run-and-fine-tune-llama-4
最后更新于
这有帮助吗?

