Dynamic Quantiser - 制作自定义高质量动态量化的方法
摘要
Dynamic Quantiser 是一款开源工具,使用户能够创建自定义和高质量的 LLM GGUF 文件动态量化,通过最小化余弦偏差来提高准确性,相比标准量化更优。
Dynamic Quantiser 简述 - 为 ggufs 创建动态和/或自定义量化。无需数据,只需 gguf 文件 + llama.cpp。最小化余弦偏差 - 与最小化 KLD 高度相关。速度快,远优于标准量化,在纯文本上不及 Unsloth,但在混合输入/代码上可能相当。免费,开源。
简介
允许任何人以任何所需大小或质量制作自己的 LLM .gguf 文件动态量化。自动、快速且相当优化 - 比标准 K 量化准确得多。应适用于任何 llama.cpp 兼容的 .gguf 文件(bf16/f16/f32)。通过混合量化级别选择张量以最小化整个模型的余弦偏差。还允许通过选择不同量化级别的层/组来制作自定义量化。
动机
许多本地 LLM 用户受 VRAM 限制,此工具允许任何人制作精确大小的量化模型,准确性远优于标准 Qx_K_M 量化。整个模型的余弦偏差与 KLD 高度相关(0.99 皮尔逊相关性)- 这是量化质量的良好指标。一旦初始表构建完成,解决方案仅需几秒。
工作原理
程序中有三种不同的算法:制作动态量化 - 最准确、完整的解决方案。它最小化固定文件大小下的整个模型余弦偏差,为每个单独张量选择最佳量化级别。需要目标文件大小。最小化余弦偏差 - 最小化整个模型余弦偏差,但不在张量级别;而是在层/组级别使用更近似的解决方案。适用于制作自定义量化 - 从合理的基线解决方案轻松调整。也需要目标文件大小。最小化磁盘大小 - 同样在层/组级别(非张量级别),执行与第二项相同的操作,但最小化磁盘大小,而非固定余弦偏差。需要目标余弦偏差。
技术
对于每个张量和每个量化级别,它预计算与原始权重的点积(S)、反量化副本的平方范数(Q)和字节数(C)。然后,整个模型的余弦偏差为 1 - S / sqrt(AQ),目标是在总文件大小预算约束下,为每个张量选择最小化此偏差的量化级别。该比率和目标使用 Dinkelbach 算法和可分离的(基于乘子的)拉格朗日内循环进行优化,并通过多起点局部搜索在单层和配对交换移动上进行完善。
基准测试
我为 Qwen 3.8 27b 制作了 q3、q4、q5、q6 大小的量化,以与标准量化和 Unsloth 进行比较,有无 imatrix。当然,你可以制作任何你喜欢的大小的量化 - 这些大小是为了与标准量化进行比较而选择的。WikiText(样本):https://preview.redd.it/ilozyrmo53rh1.png?width=1500&format=png&auto=webp&s=b3c7908f4297a14787a8d1110a18706d532dcc4c Unsloth 在这里碾压。混合数据集(Bartowski 的校准 v5):https://preview.redd.it/zp7dklgs53rh1.png?width=1500&format=png&auto=webp&s=6ae971a9d7d68ccf69f995ea34a9ed440238e029 奇怪的是,在某些量化上似乎击败了 Unsloth dynamic 3.0。
局限性
使用 AI 制作。想法是我的,代码由 AI 编写(我知道这里的人不喜欢这样,但我编码不太好)。我是 Windows 新手用户。我没有 Linux,也没有在 Linux 上测试过。本地 Qwen 说它会工作,所以请放心,它肯定会!/s 未在所有模型上完全测试;会有 bug。它似乎在 Qwen、Gemma 和我尝试的其他模型随机样本上运行良好。如果你报告 bug,我会修复它们。初始表构建较慢。在 Ryzen 5 3600 上,从 53GB 源文件构建 Qwen 3.8 27b 需要约 25 分钟。但这是一次性构建。你必须下载整个 bf16 文件。最小化余弦偏差不等于最小化模型错误。不如 SOTA 动态量化如 Unsloth dynamic 3.0。它更多是用于制作自定义内容 + 代码是开源的。不使用 IQn_XS 风格量化。我实际上编码了一些,它们很容易添加。然而,因为它们在余弦偏差最小化方面似乎更高效,所以经常被使用。这会使推理变慢太多,因为它们计算较慢,所以我目前省略了它们。不过,它们确实能更显著地下降 KLD。未决定。
要求
要求极简 - 只是你可能已经拥有的东西(Python、C++、llama.cpp)。请参阅 GitHub README 进行设置和下载。对于 Windows,它只是一个包含 .exe 文件的 zip 文件。GitHub: Dynamic Quantiser
相似文章
这是我的 llama.cpp NVFP4/MXFP6 GGUF 量化工具
作者介绍了一款开源的 GGUF 量化工具,用于 llama.cpp,能够创建 NVFP4 和 MXFP6 量化模型,并采用 RSF、张量提升、动态量化等先进技术,质量优于现有方法(如 ModelOpt)。
Voodoo Dynamic Quant - 现已采用MIT许可证开源
一种名为Voodoo Quant的新动态量化方法,现已采用MIT许可证开源,使用梯度下降法优化AI模型的每张量量化级别,在激进量化级别下表现出更好的性能。
@MinLiBuilds: 令人震惊,量化即将改变其游戏规则。Unsloth Dynamic 已经足够智能:对敏感权重进行轻度压缩…
该帖子讨论了量化如何从固定的比特宽度转向自适应方案:Unsloth Dynamic 已经会对敏感权重进行轻度压缩、对不敏感权重进行激进压缩,而 GSQ + RCO 则训练一个网络利用梯度来决定每个权重以何种方式、在多少比特宽度下进行压缩,其在 Qwen3.8-Flash-Next-GSQ-RCO-GGUF 上的 IQ3_S 性能已接近 BF16 全精度水平。
Unsloth Dynamic 3.0 GGUFs
Unsloth已发布适用于Qwen3.8模型的Dynamic v3.0 GGUFs,通过改进的量化技术和校准方法,在相同尺寸下提供超过10%的准确率提升。
更多QAT内容以及毛茸茸的tick
作者发布了Gemma 4模型(12B和31B)改进后的GGUF量化版本,采用了更精确的量化感知训练过程,相比原版量化实现了更低的KLD和更高的同top百分比。