Coder390 NVFP4 校正(校准)方式
适用档位:NVFP4 W4A16、W4A4、W4A4+W8A8 混合。三档用的是同一份校准数据和同一种算法,区别只在激活要不要量化、哪些层改用 FP8。
脚本:quant_nvfp4_lh.py;校准清单:CALIB_MANIFEST.json。
1. 校准数据(方案 A,2026-10-04 选定)
| 项 | 值 |
|---|---|
| 来源 | Coder390 自己的 RLOO 训练包 里答对且答案非空的 rollout(859 条中选) |
| 取样 | 172 组轮转取样,每轮每组取 1 条,组内按 advantage 从高到低,一共 512 条,172 组全部覆盖 |
| 每条内容 | 完整的"提示 + 思考 + 最终答案",套用对话模板,单条最多 4096 token(有 319 条被截断) |
| 规模 | 512 条,173.5 万 token,中位 4096 token |
| 校验 | 文件 sha256 bec6dc657e4ad43ee9a060008d8e29c746f8fa9b24d8ca56391661c1cd4a5a20 |
| 不用的数据 | 官方 GPQA、MMLU、LCB 的任何题目都不进校准 |
2. 算法:ModelOpt 0.46 local-Hessian(NVFP4_W4A4_WEIGHT_LOCAL_HESSIAN_CFG)
对每个要量化的 Linear 层分三步:
- max 校准:把 512 条数据前向跑一遍,记下每层权重和激活的最大绝对值,作为初始尺度。
- 采集局部 Hessian:关掉权重假量化(也就是用全精度权重),再前向跑一遍,在每层输入处按 16 个通道一块累加 H = ΣXᵀX。这一步的目的是知道哪些输入方向对输出影响大。
- 按 Hessian 加权搜索权重尺度:把每个 16 元素块的 FP8 E4M3 块尺度在全部 128 个取值里扫一遍(
fp8_scale_sweep),挑出让 (W−Wq)ᵀH(W−Wq) 最小的那个。效果是:对输出影响大的方向,量化误差被压得最小。
格式:NVFP4 E2M1,16 个元素一块,每块一个 E4M3 尺度,另加一个张量级的 FP32 二级尺度。
量化耗时:单张 RTX PRO 6000,W4A16 约 22 分钟,W4A4 约 23 分钟(两遍前向加 400 个层的尺度搜索)。
3. 层布局(和 9/06 已发布的 W4A16 布局一致,层数不对就停)
| 层 | W4A16 | W4A4 | W4A4+W8A8 混合 |
|---|---|---|---|
| MLP gate/up/down(192 个) | NVFP4 权重,BF16 激活 | NVFP4 权重 + NVFP4 激活 | NVFP4 权重 + NVFP4 激活 |
| 全注意力 q/k/v/o(64 个)+ 线性注意力 in_proj_qkv / in_proj_z / out_proj(144 个) | NVFP4 权重,BF16 激活 | NVFP4 权重 + NVFP4 激活 | FP8 E4M3 W8A8,每张量静态尺度 |
| 线性注意力 in_proj_a / in_proj_b(alpha/beta 门控,96 个)+ lm_head(1 个) | BF16 | BF16 | BF16 |
| conv1d、A_log、dt_bias、norm、embedding | BF16(不是 Linear,不量化) | 同左 | 同左 |
| 计数 | NVFP4 400 / BF16 97 | NVFP4 400 / BF16 97 | NVFP4 192 / FP8 208 / BF16 97 |
激活量化方式:NVFP4 激活是推理时动态量化(每 16 个元素一块,E4M3 块尺度);FP8 激活用的是校准时统计出来的静态尺度。
4. 导出与免补丁加载
- 导出:用
modelopt.torch.export.export_hf_checkpoint导出。 - W4A16 改写量化元数据:ModelOpt 默认把顶层
quant_algo写成W4A16_NVFP4,当前 SGLang 不接受。所以把量化元数据改写成 ModelOpt 自己的MIXED_PRECISION格式:400 个层逐层标为W4A16_NVFP4,权重一字节不动,改动记录在QUANT_METADATA_MIXED.json。改完后 SGLang 自动识别成modelopt_mixed,不需要加任何启动参数。 - W4A4:导出就是标准
NVFP4,SGLang 自动识别成modelopt_fp4。 - 混合档:导出就是
MIXED_PRECISION,逐层标 FP8 或 NVFP4。 - 发布包:和静态 FP8 一样改成完整多模态结构,附带 BF16 视觉塔和 BF16 MTP,DFLASH2 外挂。
Xet Storage Details
- Size:
- 3.71 kB
- Xet hash:
- fdb0573bea64d937e0df70a0c92894082bced188a08bfd4683dfbd572f534b83
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.