ESC
AI 2 分钟阅读

Unsloth Dynamic 3.0 GGUFs 发布:新一代量化技术大幅提升模型精度

Unsloth 发布 Dynamic 3.0 量化技术,相比旧版 UD-2 在未见数据上显著改善 KL 散度,并避免过拟合。新版支持所有模型架构,提供定制化量化方案,新增多种格式,并与 Qwen、Meta、Mistral、Google、Microsoft 等团队合作修复模型 bug。基准测试显示在 Aider Polyglot、MMLU 等任务上超越现有量化方法。

来源:Hacker News

所有图表在计算磁盘空间时均从 x 轴移除 MTP 头,以提供公平对比。

与旧版 UD-2 在未见过的 Wikitext 和 Code 数据上对比时,我们在 KLD 上显示出巨大改进——但较大模型改进不明显,因此我们仍对较大量化使用旧版 UD-2——我们计划进一步实验和改进它们!

我们还通过使用完全不同的数据集进行校准来控制过拟合,并尽可能消除所有泄漏。我们在这些未见数据集上测试 KLD,并且我们不做 QAD / QAT,仅做纯 PTQ,因此与 QAD / QAT 方法相比,过拟合的担忧更小。

类似地,🔀 Divergence-300 @32 使用来自 DeepSWE、Terminal Bench 等的 300 个提示的未见数据集,作为另一个衡量过拟合的数据集——结果显示我们的新 UD-3 方法不会过拟合。

我们推出 Unsloth Dynamic v2.0 量化——这是对之前量化版本的重大升级。新方法超越了领先的量化方法,并在 Aider Polyglot、5-shot MMLU 和 KL 散度上树立了新基准。

这意味着你现在可以在尽可能保持精度的前提下运行和微调 量化 LLM!你可以在大多数推理引擎(如 llama.cpp、Unsloth Studio 等)上运行 2.0 GGUFs。

2026 年 4 月 20 日更新:查看我们针对 Qwen3.6 和 Gemma 4 的新 GGUF 基准测试。

2026 年 2 月 27 日更新: Qwen3.5 已发布,我们修复了一些工具调用聊天模板问题,并对每个 GGUF 在困惑度和 KL 散度上进行了基准测试。查看基准测试!

使用 Unsloth 包 和量化的关键优势在于我们积极修复主流模型中的 bug。我们直接与 Qwen3、Meta (Llama 4)、Mistral (Devstral)、Google (Gemma 1–3) 和 Microsoft (Phi-3/4) 团队合作,贡献了提高精度的修复。

Gemma 4 26B A4B 基准测试(越低越好)

Qwen3.6 基准测试(越低越好)

Unsloth Dynamic GGUFs 现在可以在 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 的 GGUFs 尽管小约 8GB,但性能优于非 Unsloth 量化。

下面是对我们基准测试和评估的详细分析。

为 GGUFs + safetensors 重新设计的层选择:Unsloth Dynamic 2.0 现在更智能、更广泛地选择性量化层。我们不再仅修改选定层,而是动态调整每个可能层的量化类型,每种层和模型的组合都会不同。

当前选定的以及所有未来的 GGUF 上传都将使用 Dynamic 2.0 和我们的新校准数据集。该数据集包含超过 150 万 token(取决于模型),由高质量、手工精选和清理的数据组成——以大幅增强对话聊天性能。

此前,我们的动态量化(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 量化也将从中受益。

Accuracy is Not All You Need 展示了剪枝层(即使选择不必要的层)如何在“翻转”方面产生巨大差异。“翻转”定义为答案从错误变为正确或反之。该论文展示了 MMLU 可能不会因剪枝层或量化而下降,但这只是因为一些错误答案可能“翻转”为正确答案。我们的目标是匹配原始模型,因此衡量“翻转”是一个很好的指标。

根据研究论文“Accuracy is Not All You Need”,KL 散度应是报告量化误差的黄金标准之一。使用困惑度是不正确的,因为输出 token 值可能相互抵消,因此我们必须使用 KLD 或更难的基准测试,如 Aider。

该论文还表明,有趣的是 KL 散度与翻转高度相关,因此我们的目标是在尽可能少增加量化磁盘空间的同时降低平均 KL 散度。

大多数框架使用维基百科文章测试集报告困惑度和 KL 散度。然而,我们注意到使用同样与维基百科相关的校准数据集会导致量化过拟合,并获得更低的困惑度分数。我们使用 Calibration_v3 和 Calibration_v5 数据集进行公平测试,其中包含一些 wikitext 数据和其他数据。此外,指令模型有独特的聊天模板,仅使用文本校准数据集对指令模型无效(基础模型有效)。实际上,大多数 imatrix GGUFs 通常都是带着这些问题校准的。因此,它们在使用维基百科数据的 KL 散度基准上自然表现更好,因为模型本质上针对该领域进行了优化。

为确保公平和受控的评估,我们在基准测试 KL 散度时不使用自己的校准数据集(该数据集针对聊天性能优化)。相反,我们使用相同的标准维基百科数据集进行测试,使我们能够直接比较 Dynamic 2.0 方法与基线 imatrix 方法的性能。

复现 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 实现时,MMLU 5-shot 准确率为 67.8%。但我们发现 Llama 将“A”和“_A”(前面有空格的 A)标记为不同的 token id。如果我们同时考虑带空格和不带空格的 token,我们得到 68.2%(+0.4%)。

有趣的是,根据 Eleuther AI 的 LLM Harness,Llama 3 还在问题后附加“The best answer is”,遵循 Llama 3 的原始 MMLU 基准。

还有许多其他微妙问题,因此为了在受控环境中对所有内容进行基准测试,我们通过直接研究 github.com/hendrycks/test 从零开始设计了自己的 MMLU 实现,并跨多个模型验证了我们的结果,并与报告的数字进行了比较。

Gemma 团队发布了两个 Gemma 3 的 QAT(量化感知训练)版本:

Q4_0 GGUF——通过公式 w = q * block_scale 将所有层量化为 Q4_0,每个块有 32 个权重。有关更多详细信息,请参阅 llama.cpp wiki。

int4 版本——推测是 TorchAO int4 风格?

我们对所有 Q4_0 GGUF 版本进行了基准测试,并在 12B 模型上进行了大量实验。我们看到 12B Q4_0 QAT 模型在 5-shot MMLU 上获得 67.07%,而全 bfloat16 12B 版本获得 67.15%。非常令人印象深刻!27B 模型也几乎接近!

我们设计了一个新的效率指标,该指标计算模型的有用性,同时考虑其磁盘大小和 MMLU 5-shot 分数:

我们必须减去 25,因为 MMLU 有 4 个选项——A、B、C 或 D。假设我们制作一个随机选择答案的模型——它会获得 25% 的准确率,并且磁盘空间只有几个字节。但这显然不是一个有用的模型。

在与基础模型的 KL 散度对比方面,下表展示了改进。提醒:KL 散度越接近 0 越好(即 0 表示与全精度模型相同)。

如果我们绘制磁盘空间增加比率与 KL 散度比率变化的关系,可以看到更明显的好处!我们的动态 2bit Q2_K_XL 使 KLD 降低了不少(约 7.5%)。

Gemma 3 (27B) 的 MMLU 结果截断表。见下文。

我们的动态 4bit 版本比 QAT 版本小 2GB,同时准确率还高出 +1%!