DeepSeek V4 0731 量化与基准测试:发现转换漏洞并对比 38 个版本
AtomicChat 团队量化 DeepSeek V4 0731 并横向对比 38 个社区版本,发现转换器存在精度损失缺…
AtomicChat 团队在 8 张 RTX 5090 上对 DeepSeek V4 0731 进行了完整量化与基准测试,并将其结果与社区已发布的 38 个量化版本进行了横向对比。过程中,他们发现了官方转换流程中的两处会显著影响模型精度的缺陷,并在 HuggingFace 上发布了修复后的量化文件。
转换流程存在两处关键缺陷
团队从原始 safetensors 权重开始转换时遇到两个问题。第一,必须使用 --no-lazy 选项,否则 token_embd.weight 会变成 NaN,量化会在多次尝试后失败。
第二处问题更为隐蔽:转换脚本 conversion/deepseek.py 中硬编码将 FP8 张量降级为 Q8_0,这使得生成的所谓「无损」162 GB 基线模型在量化尚未开始时,就与原始权重之间产生平均 0.219 的 KLD 偏差。相比之下,团队自己的 118 GB 量化版本 KLD 仅为 0.2065——意味着这个 162 GB 的「无损基线」反而比 3 bit 量化版本偏离原模型更远。修复方法是把这些张量替换为 BF16,最终得到的基线模型与原始权重达到 bit-exact(逐位一致)。
量化方法与测试环境
修复基线后,团队在 187 万 token 上生成 imatrix(按 8192 token 分块),并构建了 13 个带有 per-tensor override 的量化版本,每个 MoE 专家的 bit 数根据该层实测激活能量单独设置。
基准测试采用统一的测试环境:
- 硬件:8 张 RTX 5090
- 数据集:wikitext-2,上下文长度 5632,51 个 chunk
- 参考基准:团队自建的 bit-exact BF16 基线(与 unsloth 无损量化在 top-1 上一致性达 100%)
跨 GPU 测试结果差异显著
在对比其他社区量化版本的数字时,团队发现问题——同一份量化文件在不同 GPU 上跑出不同结果。原因是 llama.cpp 针对消费级 Blackwell(5090)有 MXFP4 权重的 fast path,而 H100 没有。实测同一文件在 5090 上 PPL 为 4.5381,在 H100 上为 4.3406,差异显著。
因此团队放弃引用已发布数字,将全部 38 个量化文件在同一台机器上自行测量。
38 个量化版本横向对比结果
由于模型本身经过 QAT(量化感知训练),所有 154 GB 以上的量化版本表现相近,差异集中在 85–135 GB 区间。在主要量化范围内,团队发布的曲线整体低于其他社区版本,意味着在相同文件大小下,他们的量化更接近完整模型、预测的 next token 一致性更高。
但也存在个别优于团队结果的社区版本,例如 prometheusAIR 与 bullerwins 的若干量化。团队指出,由于各发布方对量化命名的标准不统一,对比必须按文件大小而非 quant 名称进行。例如团队的 AD-IQ2_M 每专家权重 2.79 bit,被其他发布方称作 IQ3_XXS。
推荐方案与社区命名乱象
基于自测结果,团队推荐的 128 GB 硬件最佳量化方案是 AD-IQ2_M(104 GB),top-1 准确率达 83.6%。完整的 imatrix、per-tensor 布局与所有量化文件已发布在 HuggingFace 集合页。
针对 HuggingFace 上量化命名混乱的问题,团队表示已与多位高频发布者沟通,并将单独发帖讨论量化命名的标准化方案。AtomicChat 团队同时开放了其开源应用 atomic.chat,欢迎社区反馈。
