news 2026/10/18 4:22:57

从校准到导出:DeepSeek-V4-Pro-0813-nvfp4-DSpark 三阶段 NVFP4 量化流程实战(ModelOpt 配方全解)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从校准到导出:DeepSeek-V4-Pro-0813-nvfp4-DSpark 三阶段 NVFP4 量化流程实战(ModelOpt 配方全解)

【免费下载链接】DeepSeek-V4-Pro-0813-nvfp4-DSpark

项目地址:https://ai.gitcode.com/hf_mirrors/nvidia/DeepSeek-V4-Pro-0813-nvfp4-DSpark
点击查看免费下载

DeepSeek-V4-Pro-0813-nvfp4-DSpark 是 DeepSeek-V4-Pro-0813 的NVFP4 全量量化版,由 NVIDIA Model Optimizer(ModelOpt)配方量化得到。它把 MoE 路由专家从原生 MXFP4 无损转成 NVFP4,让 target 与 draft 共用同一份自洽检查点。本文带你走一遍它的三阶段 NVFP4 量化流程——校准(calibration)采集激活 amax、导出(export)无损位转换——并解读 ModelOpt 配方里的关键参数,帮你彻底搞懂"只量化专家、混合精度"的工程取舍。

🧭 先搞懂:这个模型是什么,为什么要 NVFP4

DeepSeek-V4-Pro-0813是一个总参数1.65T、激活 49B的自回归 MoE 模型,采用混合注意力(Compressed Sparse Attention + Heavily Compressed Attention)和 Manifold-Constrained Hyper-Connections,最大上下文 100 万 token。它原生把路由专家存成MXFP4,注意力与共享专家用 FP8,norm/embedding 保留 BF16。

一句话理解 NVFP4 的价值:用更细粒度的缩放因子,在 4-bit 精度下更贴近原始分布,从而让 1.65T 这样的超大 MoE 能塞进 Blackwell(B200/B300)的显存里高效推理。

这个检查点和nvidia/DeepSeek-V4-Pro-0813-NVFP4的区别只有一个:后者的 DSpark 草稿头仍停留在源 MXFP4 格式,target 与 draft 专家格式不一致;而DSpark 版把草稿专家的 MXFP4 无损 cast 成 NVFP4,得到一个"一个检查点同时当 target 和 draft"的自洽产物。主干权重与 NVFP4 版逐位一致(bit-identical)。

完整说明见 README.md。

📦 三阶段流程总览

ModelOpt 配方按顺序跑三步,分别对应重切分 → 校准 → 导出:

阶段脚本运行位置目标关键产物
1. Reshardconvert.pyCPU把 HF 检查点切成模型并行布局model{i}-mp8.safetensors
2. Calibrateptq.py8×GPU (torchrun)采集路由专家激活范围 amaxamax dump
3. Exportquantize_to_nvfp4.pyGPU导出 NVFP4 检查点NVFP4 检查点

说明:第 1 步的convert.py就是本仓库里带完整源码的 DeepSeek 官方切分脚本(见 inference/convert.py);第 2、3 步的ptq.py、quantize_to_nvfp4.py属于 ModelOpt 官方仓库的examples/deepseek/deepseek_v4配方,这里讲解它们的职责与参数。

🔧 阶段一:Reshard 重切分到模型并行布局

量化前,得先把 HF 格式的大检查点按专家维度切成 8 份(model-parallel 8),让后续 8 卡各拿一份路由专家做校准。这一步只跑在 CPU,用 DeepSeek 自己的convert.py:

python convert.py \ --hf-ckpt-path <DeepSeek-V4-Pro-0813> \ --save-path <mp8_checkpoint> \ --n-experts 384 \ --model-parallel 8 \ --expert-dtype fp4

要点解读:

  • --n-experts 384:该模型每层有 384 个路由专家(见 config.json 的n_routed_experts: 384)。
  • --model-parallel 8:把专家均分到 8 份,要求 384 能被 8 整除。
  • --expert-dtype fp4:保留 FP4 专家格式(也可传fp8,见下)。

切分逻辑在 inference/convert.py:遍历每个张量,凡是名字里带experts(且不是shared_experts)的权重,按expert index // (384/8)决定落到哪一份 shard。

关于 MXFP4 的"无损"种子:脚本里有个 cast_e2m1fn_to_e4m3fn() 函数,把 E2M1 nibble(4-bit 数据)无损地映射成 E4M3(8-bit)——这正是阶段三"换格式不丢权重位"思想的底层基础。它先把 int8 里高低 4 位拆开、查FP4_TABLE还原成真实数值,再按 128 块重写缩放因子。

本仓库的 inference/README.md 展示了同一脚本的--expert-dtype fp8用法:想跑 FP8 专家,就把 inference/config.json 里的"expert_dtype": "fp4"去掉并加--expert-dtype fp8即可。

🎯 阶段二:校准(Calibration)采集激活范围 amax

这是整个流程里最影响精度的一步。用 8 卡torchrun跑ptq.py,让一批真实样本过模型,记录每个路由专家线性层的激活最大值 amax:

torchrun --nproc-per-node 8 deepseek_v4/ptq.py \ --model_path <mp8_checkpoint> \ --config <DeepSeek-V4-Pro-0813>/inference/config.json \ --calib_size 512 \ --calib_seq 4096 \ --output_path <amax_dump>

关键参数(新手最容易踩坑处):

  • --calib_size 512:每个校准集取 512 条。脚本默认用两个数据集——cnn_dailymail(约 30 万篇英文新闻)和Nemotron-Post-Training-Dataset-v2(多轮对话),各 512 条,合计 1024 条。
  • --calib_seq 4096:tokenizer 截断上限。这是本模型最关键的设置——默认的 512 覆盖不到长上下文的激活范围,会导致 amax 偏小、量化溢出。把它调到 4096 才能采到真实的长程激活峰值。

🔑 核心结论:NVFP4 里唯一真正"校准"出来的量,就是这一步采到的激活 amax。权重位本身是位转换、无需重算,所以校准集是否覆盖真实业务分布,直接决定最终精度。

配方同样支持声明式写法,通过--recipe指向models/deepseek-ai/DeepSeek-V4-Pro-0813/ptq/nvfp4_experts_only的 YAML,该 YAML 被测试钉死与内置默认一致,两条路径产出的量化器配置完全相同。

⚡ 阶段三:导出 NVFP4 检查点 + 无损位转换

最后一步把校准好的 amax 落盘,并做MXFP4 → NVFP4 的无损 cast:

python deepseek_v4/quantize_to_nvfp4.py \ --amax_path <amax_dump> \ --source_ckpt <DeepSeek-V4-Pro-0813> \ --output_ckpt <output> \ --cast_mxfp4_to_nvfp4 \ --device cuda

🧮 为什么--cast_mxfp4_to_nvfp4是"无损"的?

理解这一点,就看 MXFP4 和 NVFP4 的存储结构:

维度MXFP4(源)NVFP4(目标)
权重数据位E2M1 nibble同一套 E2M1 nibble 网格(不变)
缩放因子类型E8M0(纯 2 的幂)E4M3(带尾数)
缩放因子粒度每 32 元素 1 个每 16 元素 1 个
是否重算权重位—❌ 不重算,直接位转换

因为 NVFP4复用了 MXFP4 的 E2M1 nibble 网格,权重比特可以原样搬过去,只需重写块 scale(从 32 元素的 E8M0 换成 16 元素的 E4M3)。所以这是"无损位转换"——不丢任何一位权重精度。

一个反直觉的结论:这个 NVFP4 检查点反而比源检查点更大——权重字节数不变,但缩放因子字节翻倍(粒度从 32 细化到 16)。精度换存储,是 NVFP4 的固有代价。

只量化专家:混合精度配置解析

这份检查点只把 Transformer 块内的路由专家(MoE linear)量化成 NVFP4,其余保持原精度。量化配置记录在 hf_quant_config.json 与 config.json:

  • "quant_algo": "MIXED_PRECISION":混合精度,不是全局统一量化。
  • "group_size": 16:NVFP4 的块大小(每 16 元素一个 scale)。
  • "moe_quant_algo": "NVFP4":仅 MoE 路由专家用 NVFP4。
  • 排除项exclude_modules(见 hf_quant_config.json):
    • *.attn.*→ 注意力层保持FP8
    • *.ffn.shared_experts.*→ 共享专家保持FP8
    • head→ 输出层保持原精度
  • quantized_layers里列出了layers.0~59.ffn.experts和mtp.0/1/2.ffn.experts全部设为NVFP4——61 层主干 + 3 层 DSpark MTP 草稿专家全部覆盖。

这种"选择性量化"是超大 MoE 的标准工程取舍:把占显存大头的路由专家压到 4-bit,而对精度敏感的注意力、共享专家和输出层保留更高精度,从而在近乎无损的前提下拿到最大显存收益。

📊 效果验证:精度几乎无损 + 推测解码加速

精度:NVFP4 与 MXFP4 源模型基本持平

主干权重 bit-identical,推测解码又不改变 target 输出,所以精度沿用 NVFP4 版的实测:

精度GPQA DiamondAA-LCRτ²-BenchSciCodeIFBenchTerminal-Bench Hard
MXFP4(源)88.5168.6796.4953.4576.5351.39
NVFP488.4269.3398.2553.7575.6850.69

可以看到多数基准 NVFP4 持平甚至略胜(AA-LCR、τ²-Bench、SciCode 反超),验证了"无损位转换 + 只量化专家"路线的稳健性。

速度:DSpark 推测解码平均接受长度 ≈ 3.8

DSpark 用半自回归草稿骨架成块提出候选 token,配合轻量 Markov 头和置信头做调度验证。实测(num_speculative_tokens=7,8×B300):

  • MT-Bench 整体平均接受长度 3.795(coding 5.366、math 5.479 最高,roleplay 2.488 最低)。
  • SPEED-Bench 32K 长上下文整体平均 3.898,其中low_entropy4.613、high_entropy2.693。

接受长度 >1 就意味着每步能吐出多个 token,直接降低解码延迟。

🚀 上手部署:SGLang / vLLM 两条路

模型支持 SGLang 与 vLLM 两个运行时,硬件面向 NVIDIA Blackwell B200。

SGLang(用于精度基准):

python3 -m sglang.launch_server \ --model-path nvidia/DeepSeek-V4-Pro-0813-nvfp4-DSpark \ --tp 8 --trust-remote-code \ --tool-call-parser deepseekv4 \ --reasoning-parser deepseek-v4

vLLM(用于 DSpark 推测解码):需一个同时提供 NVFP4 MoE 后端与 DSpark 的构建。num_speculative_tokens至少要 ≥dspark_block_size(5),取 7 是遵循 DeepSeek 官方建议。去掉--speculative-config即关闭推测解码。

⚠️ 新手易踩坑:若开启 CUDA graphs 后在 FlashMLA 构建 TMA descriptor 时启动失败,请加--enforce-eager。vLLM 会自动选择 NVFP4 MoE 后端,无需额外环境变量;用--model-loader-extra-config多线程加载可显著加快这个体量检查点的启动。

📂 关键文件导航

文件作用
README.md模型卡、三阶段配方、部署与评测
hf_quant_config.jsonNVFP4 量化配置(算法、块大小、排除项)
config.json模型结构 + 量化层清单(61 层 + 3 层 MTP)
generation_config.json采样参数(temperature 1.0, top_p 1.0)
inference/convert.py阶段一 Reshard 脚本 + MXFP4→FP8 无损 cast
inference/config.json推理超参(61 层、384 专家、DSpark 配置)
inference/model.py模型定义(MoE + 混合注意力 + Hyper-Connections)
inference/kernel.pyFP8/FP4 GEMM 与量化 kernel
encoding/encoding_dsv4.py自定义 prompt 编码(thinking / 工具调用 / reasoning effort)

补充:vLLM 原生套用本仓库的 encoding/encoding_dsv4.py 作为编码器(tokenizer_mode=deepseek_v4),无需chat_template.jinja。它支持 thinking / non-thinking 两种模式与low/high/max三档 reasoning effort,详见 encoding/README.md。

🎬 小结

DeepSeek-V4-Pro-0813-nvfp4-DSpark 的三阶段 NVFP4 量化流程,核心是**"重切分 → 校准采 amax → 无损位转换导出"**:

  1. Reshard(CPU,convert.py)把 384 个路由专家切成 8 份并行布局;
  2. Calibrate(ptq.py,--calib_seq 4096)采到真正决定精度的激活 amax;
  3. Export(quantize_to_nvfp4.py)借 E2M1 nibble 网格复用做 MXFP4→NVFP4 无损位转换。

最终得到一份"target + draft 一体"、精度几乎无损、还能开 DSpark 推测解码加速的自洽 NVFP4 检查点——这也是超大 MoE 落到 Blackwell 上高能效推理的完整范本。

【免费下载链接】DeepSeek-V4-Pro-0813-nvfp4-DSpark

项目地址:https://ai.gitcode.com/hf_mirrors/nvidia/DeepSeek-V4-Pro-0813-nvfp4-DSpark
点击查看免费下载
上一篇:Polar 前端异步性能优化:Defer Await Until Needed 规则实战解析
下一篇:将 OpenAI Agents SDK SandboxAgent 接入 CubeSandbox MicroVM:E2B 兼容集成实战指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 4:22:30

软件体系结构复习资料:风格、质量属性与ATAM评估考点详解

简介&#xff1a;软件体系结构复习资料&#xff08;doc&#xff09;是一份面向计算机相关专业学生与软件工程学习者的知识点整理文档&#xff0c;围绕体系结构基本概念、DSSA、构件与连接件、体系结构配置与拓扑、设计模式分类、软件产品线、生命周期模型、质量属性、ATAM评估方…

作者头像 李华
网站建设 2026/10/18 4:21:20

eCharts 344县区地图资源:GeoJSON注册与两种加载方式实战

简介&#xff1a;这是一份面向 Web 前端开发者与数据分析师的 eCharts 地图资源包&#xff0c;目标是在中国县级行政区划层面实现可视化展示与交互操作。资源提供 344 个县区的地图数据&#xff0c;并围绕两种常见集成方式给出可运行的 demo&#xff1a;其一是直接引用内置预置…

作者头像 李华
网站建设 2026/10/18 4:21:18

Flutter拖拽交互实战:Draggable与DragTarget从入门到排坑

拖拽交互在App里并不稀奇&#xff0c;但Flutter里想写一个“把数据从一个区域拖到另一个区域”的功能&#xff0c;很多人第一次碰Draggable还是会踩坑。不是拖不起来&#xff0c;就是拖过去了目标区不认&#xff0c;再不然就是两个列表的数据对不上、界面不刷新。今天我拿一个很…

作者头像 李华
网站建设 2026/10/18 4:17:36

C#使用Open XML SDK生成PPTX:零Office依赖的离线方案

简介&#xff1a;本资源是一份面向C#开发者与Office自动化实践者的Open XML SDK实战项目&#xff0c;聚焦于使用纯代码动态生成PowerPoint演示文稿&#xff0c;无需依赖PowerPoint应用程序。适用于Windows桌面应用开发、自动化报告生成、教学课件批量制作等场景&#xff0c;适合…

作者头像 李华
网站建设 2026/10/18 4:17:07

BLE低功耗设计-第10章第4题-定时器合并唤醒策略如何优化低功耗

蓝牙面试题解析:定时器合并唤醒策略如何优化低功耗? 难度:⭐⭐⭐⭐ 较难 | 场景:社招二面、定时器合并 | 高频:🔥🔥🔥🔥 标准答案 定时器合并将多个定时器对齐到同一时间点(或窄窗口) 触发,减少唤醒次数,延长连续深睡时间,是 BLE 软件最重要的省电手段之一。 …

作者头像 李华
网站建设 2026/10/18 4:16:19

CS自学指南课程地图:1个实验跑通,3条路线主攻

CS自学指南课程地图&#xff1a;1个实验跑通&#xff0c;3条路线主攻 【免费下载链接】cs-self-learning 计算机自学指南 项目地址: https://gitcode.com/GitHub_Trending/cs/cs-self-learning 打开 cs-self-learning 仓库&#xff0c;十几个方向、上百篇课程文档列在目…

作者头像 李华