🦥Unsloth Dynamic GGUF 在 Aider Polyglot 上的表现
Unsloth Dynamic GGUF 在 Aider Polyglot 基准测试上的性能
我们很高兴展示 Unsloth Dynamic GGUFs 如何使得可以将像 DeepSeek-V3.1 (671B)压缩到仅 1 位 或 3 位,并且仍然能够超过像 GPT-4.5、GPT-4.1 (2025 年 4 月)和 Claude-4-Opus (2025 年 5 月)。
之前, 我们演示了 Unsloth Dynamic GGUFs 如何在 5-shot MMLU 和 KL 散度上胜过其他量化方法。现在,我们展示它们在独立第三方评估中的表现,使用 Aider Polyglot 基准。


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


我们还在以下链接展示了动态基准: https://docs.unsloth.ai/basics/unsloth-dynamic-2.0-ggufs 针对 Gemma 3 和 Llama 4 Scout,展示了我们方法的有效性:


⚙️基准设置
在我们的 DeepSeek-V3.1 实验中,我们比较了不同位数的 Unsloth Dynamic GGUFs 与:
全精度、未量化的 LLMs 包括 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 位)DeepSeek V3.1 Unsloth
75.6
Claude-4-Opus(5 月)
72
o4-mini(高)
72
DeepSeek R1 0528
71.4
(2 位)DeepSeek V3.1 Unsloth
66.7
Claude-3.7-Sonnet(2 月)
64.9
(1 位)DeepSeek V3.1 Unsloth
57.8
DeepSeek R1
56.9
展开以查看非推理模型的 Aider 基准
DeepSeek V3.1
71.6
Claude-4-Opus(5 月)
70.7
(5 位)DeepSeek V3.1 Unsloth
70.7
(4 位)DeepSeek V3.1 Unsloth
69.7
(3 位)DeepSeek V3.1 Unsloth
68.4
(2 位)DeepSeek V3.1 Unsloth
65.8
Qwen3 235B A22B
59.6
Kimi K2
59.1
(1 位)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 位在 Aider Pass-2 上达到 70.7%,而动态 1 位达到 55.7%。在大小和准确性方面,3 位和 4 位表现极其强大!

🎇与其他量化的比较
我们还对社区的其他动态 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 动态方法的诀窍是将 重要层量化为更高位 例如 8 位,而 不重要的层则保留在更低位,如 2 位.
为了测试我们的方法,我们将特定张量保留在较低精度(如 4 位)与更高精度之间进行比较。例如下面我们将 attn_k_b 张量保留为 4 位(半动态)与 8 位(Unsloth 当前),并且仅通过将量化大小增加约 ~100MB(<0.1%),准确率就急剧上升!
attn_k_b DeepSeek V3.1 中的其他张量对量化高度重要/敏感,应该保留在更高精度以保持准确性!

🐛聊天模板错误修复
在测试 DeepSeek-V3.1 量化时,我们发现一些较低位的量化未能正确封装 <think> </think> 或出现一些奇怪的格式化。这导致一些社区量化在较低位上无法工作,从而导致不公平的比较。我们发现 llama.cpp 使用的 minja(jinja 的简化版本)在 .split中不接受位置参数。
{%- set content = content.split("</think>", 1)[1] -%}
{%- set content = splitted[1:] | join("</think>") -%} 参见 此处 参见 以获取我们的修复聊天模板或
📊以获取原始 jinja 文件。
通过率 1

💻Aider 主要以通过率 2 报告。我们也报告通过率 1 以比较相同大小的社区量化。我们发现我们的动态量化在与其他类似大小的社区量化比较时表现要好得多,尤其是在小于 2 位和大于 4 位的情况下。3 位和 4 位的表现相似且都很好。
运行 DeepSeek V3.1 动态量化 前往我们的 DeepSeek V3.1 指南
cp llama.cpp/build/bin/llama-* llama.cpp 然后使用 llama.cpp
最后更新于
这有帮助吗?

