Shar137/two / evaluation /NVFP4_CALIBRATION_METHOD.md
Shar137's picture
|
download
raw
3.71 kB

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 层分三步:

  1. max 校准:把 512 条数据前向跑一遍,记下每层权重和激活的最大绝对值,作为初始尺度。
  2. 采集局部 Hessian:关掉权重假量化(也就是用全精度权重),再前向跑一遍,在每层输入处按 16 个通道一块累加 H = ΣXᵀX。这一步的目的是知道哪些输入方向对输出影响大。
  3. 按 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.