🦥Aider Polyglot 上的 Unsloth Dynamic GGUF
Unsloth Dynamic GGUF 在 Aider Polyglot 基准测试中的表现
我们很高兴展示 Unsloth Dynamic GGUFs 如何让量化像 DeepSeek-V3.1 (671B)这样的 LLM 到仅 1-bit 或 3 位,同时仍然能够超越像 GPT-4.5、GPT-4.1 (2025年4月)和 Claude-4-Opus (2025年5月)这样的 SOTA 模型。
此前, 我们已经演示了 Unsloth Dynamic GGUFs 如何在 5-shot MMLU 和 KL 散度上优于其他量化方法。现在,我们展示它们在使用 Aider Polyglot 基准


⭐关键结果
我们的 1-bit Unsloth Dynamic GGUF 将 DeepSeek-V3.1 从 671GB → 192GB(体积减少 75%) 压缩到如此程度,并且在 no-thinking 模式下大幅优于 GPT-4.1(2025年4月)、GPT-4.5 和 DeepSeek-V3-0324。
3 位 Unsloth DeepSeek-V3.1(thinking)GGUF:优于 Claude-4-Opus-20250514(thinking)。
5-bit Unsloth DeepSeek-V3.1(non-thinking)GGUF:性能与 Claude-4-Opus-20250514(non-thinking)相当。
Unsloth Dynamic GGUFs 的表现始终优于其他非 Unsloth Dynamic imatrix GGUFs
其他非 Unsloth 的 1-bit 和 2-bit DeepSeek-V3.1 量化,以及在没有选择性层量化的情况下的标准 1-bit 量化,要么加载失败,要么输出胡言乱语并陷入循环。这凸显了 Unsloth Dynamic GGUFs 能够在很大程度上保留准确性,而其他方法甚至无法正常工作。
为什么选择 Aider Polyglot 基准? Aider 是衡量 LLM 在写作、编码、遵循指令以及无需人工干预地应用更改方面表现如何的最全面指标之一,因此它也是现实世界使用中最难且最有价值的基准之一。
该 关键优势 使用 Unsloth 套件和模型的一个关键优势在于,我们积极参与 修复关键漏洞 在主要模型中。我们已与以下团队直接合作: Qwen3, Meta(Llama 4), Mistral(Devstral), Google(Gemma 1–3) 和 Microsoft(Phi-3/4),贡献了显著提升准确性的关键修复。
🦥Unsloth 动态量化
动态 1 bit 会将重要层以 8 或 16 bit 保存,而将不重要层量化到 1、2、3、4、5 或 6 bit。
在 2024年11月,我们的 4-bit Dynamic Quants 展示了你可以仅通过 选择性量化层,在很大程度上恢复 QLoRA 微调与模型准确性。之后我们研究了 DeepSeek-R1的架构并应用了类似方法,其中我们将某些层量化到低至 1-bit,而将重要层保留为更高位宽(6、8-bit)。这一方法迅速流行起来,并被证明对 MoE 模型尤其有效,使动态量化事实上成为 MoE 量化的默认方案。
当我们的 Dynamic GGUFs 与 imatrix 校准数据集配合使用时效果更佳,该数据集专为聊天和编码性能而设计。所有这些使得在不灾难性损失质量的情况下实现了极端的 LLM 压缩。
例如,在 Qwen2-VL-2B-Instruct 中,简单粗暴地将所有层量化到 4bit 会导致模型无法理解下面的图像。那是一列火车,不是海岸景色!


我们也在 https://docs.unsloth.ai/basics/unsloth-dynamic-2.0-ggufs 中展示了 Gemma 3 和 Llama 4 Scout 的动态基准,说明了我们的方法有多么有效:


⚙️基准设置
对于我们的 DeepSeek-V3.1 实验,我们将不同位宽的 Unsloth Dynamic GGUFs 与以下对象进行比较:
全精度、未量化的 LLM 包括 GPT 4.5、4.1、Claude-4-Opus、DeepSeek-V3-0324 等。
其他 动态 imatrix V3.1 GGUFs
半动态 (部分选择性层量化)imatrix V3.1 GGUFs, 用于消融实验.
基准实验主要由以下人员完成: David Sluys (在 Aider Discord上的 neolithic5452),他是 Aider Polyglot 评测中值得信赖的社区贡献者。测试大约运行了 3 次并取中位数平均分,按照惯例报告 Pass-2 准确率。Aider 的 Discord 中有一些可复现的基准代码片段。
展开以查看推理模型的 Aider 基准
GPT-5
86.7
Gemini 2.5 Pro(6月)
83.1
o3
76.9
DeepSeek V3.1
76.1
(3 bit)DeepSeek V3.1 Unsloth
75.6
Claude-4-Opus(5月)
72
o4-mini(High)
72
DeepSeek R1 0528
71.4
(2 bit)DeepSeek V3.1 Unsloth
66.7
Claude-3.7-Sonnet(2月)
64.9
(1 bit)DeepSeek V3.1 Unsloth
57.8
DeepSeek R1
56.9
展开以查看非推理模型的 Aider 基准
DeepSeek V3.1
71.6
Claude-4-Opus(5月)
70.7
(5 bit)DeepSeek V3.1 Unsloth
70.7
(4 bit)DeepSeek V3.1 Unsloth
69.7
(3 bit)DeepSeek V3.1 Unsloth
68.4
(2 bit)DeepSeek V3.1 Unsloth
65.8
Qwen3 235B A22B
59.6
Kimi K2
59.1
(1 bit)DeepSeek V3.1 Unsloth
55.7
DeepSeek V3-0324
55.1
GPT-4.1(2025年4月)
52.4
ChatGPT 4o(2025年3月)
45.3
GPT-4.5
44.9
DeepSeek V3.1 同时具有推理和非推理模式,我们两者都进行了测试。对于非推理模式,我们可以清晰看到下面动态量化的表现趋势:动态 5-bit 在 Aider Pass-2 上达到 70.7%,而动态 1-bit 达到 55.7%。就尺寸和准确率而言,3-bit 和 4-bit 都极其强大!

🎇与其他量化方案的比较
我们还在社区提供的其他动态 imatrix GGUFs 上运行了 Aider Polyglot 基准,并将其与我们的结果进行比较。为了确保 公平比较,我们采取以下做法:
我们为每个 Unsloth 量化选择大小和位类型相近的文件。
我们使用我们的 固定聊天模板 如果社区量化无法执行基准测试。我们发现一些社区量化
{"code":500,"message":"split method must have between 1 and 1 positional arguments and between 0 and 0 keyword arguments at row 3, column 1908"},而使用我们的固定聊天模板就能修复这一问题。
我们看到,Unsloth 动态量化在与同模型大小和同量化类型的其他社区量化相比时表现非常出色!

展开查看与其他量化的原始数值数据比较
IQ2_XXS
164
43.6
TQ1_0
170
50.7
IQ1_M
206
55.7
IQ2_M
215
56.6
IQ2_XXS
225
61.2
IQ2_M
235
64.3
Q2_K_L
239
64.0
Q2_K_XL
255
65.8
IQ3_XXS
268
65.6
65.6
IQ3_XXS
279
66.8
Q3_K_S
293
65.2
Q3_K_XL
300
68.4
IQ4_XS
357
69.2
IQ4_XS
360
66.3
Q4_K_XL
387
69.7
Q4_K_M
405
69.7
Q4_K_M
409
67.7
Q5_K_M
478
68.9
Q5_K_XL
484
70.7
🍰动态量化消融
我们也做了一些消融实验,以确认我们的校准数据集和动态量化方法是否真的有效。Unsloth 动态方法的诀窍是将 重要层量化到更高位宽 比如 8bits,而 不重要层则保留在较低位宽,如 2bits.
为了测试我们的方法,我们将特定张量保留在较低精度,例如 4bit 与更高精度进行对比。如下所示,我们将 attn_k_b 张量保留在 4bit(半动态)而不是 8bit(当前 Unsloth),仅仅将量化大小增加约 100MB 左右(<0.1%),准确率就会显著提升!
attn_k_b 而 DeepSeek V3.1 中其他张量都极其重要 / 对量化非常敏感,应当保留更高精度以维持准确率!

🐛聊天模板 Bug 修复
在测试 DeepSeek-V3.1 量化版本时,我们发现一些低位宽量化没有正确包裹 <think> </think> 或出现了一些奇怪的格式。这导致一些社区量化在低位宽下无法工作,因此造成了不公平的比较。我们发现 llama.cpp 对 minja(更简单版本的 jinja)的使用不接受 .split中的位置参数。我们必须将:
改为下面这样:
查看 这里 用于我们的固定聊天模板,或者 这里 用于原始 jinja 文件。
📊Pass Rate 1
Aider 主要报告 pass rate 2。我们也报告 pass rate 1,以比较相同大小的社区量化。我们看到,我们的动态量化在与其他相近大小的社区量化相比时表现好得多,尤其是在小于 2 bit 和大于 4 bit 的情况下。3 bit 和 4 bit 的表现也同样很好。

💻运行 DeepSeek V3.1 动态量化
请前往我们的 DeepSeek V3.1 指南 ,或者若想快速获取动态 2bit 版本,请执行:
然后使用 llama.cpp 即可直接下载权重。我们也已设置好建议的最佳参数,例如 temperature、聊天模板等:
最后更新于
这有帮助吗?

