Prhub

#2478 docs: rewrite INT4 QAT guide

原始 PR 作者 nanjiangwill 合并时间 2026-08-13 04:13 文件变更 1 提交数 5 评论 0 代码增减 +219 / -60

执行摘要

重写 INT4 QAT 指南,修正 W4A16 训练路径描述

PR body 明确指出旧页面把 INT4 QAT 描述为通用 W4A16 训练内存路径,并以旧 shell 配方为中心,而实际实现更窄:Megatron 保留配置 dtype 的可训练权重,在 Transformer Engine GroupedLinear 中做对称 fake INT4 量化,并导出 packed routed-expert 张量供 SGLang rollout。重写的目的正是将流程各部分分配给实际所属组件,区分 rollout checkpoint 的 compressed-tensors 存储契约与 Megatron 独立配置的 fake-QAT group size,并删除不被支持的功能宣称。

值得精读。该 PR 虽然只改一个文档文件,但准确区分了“训练时 fake 量化”与“rollout 时 packed 存储格式”两组易混淆概念,并明确了 Megatron Bridge 的双向打包职责与 OPEN_TRAINING_INT4_GROUP_SIZE 的独立语义。对理解 miles 的 INT4 QAT 架构、Kimi-K2.5 初始化路径以及 Qwen 路径的 group size 现实差异,都是最直接的一手资料;也适合作为文档审计类 PR 的范本。

讨论亮点

该 PR 没有产生 review 评论或讨论线程,最终由 Zhichenzzz 直接批准。核心质量保障体现在 PR body 的 validation 说明中:作者对照 miles 实现、Megatron-LM miles-main、Docker-pinned Megatron-Bridge commit 以及 SGLang origin/sglang-miles 逐一审计文档声明,并完成 git diff --check、pre-commit、内链检查与代码围栏平衡校验。

实现拆解

  1. 结构重写与定位修正:更新文档标题描述,将 INT4 QAT 定位为“MoE 策略在 Megatron 中以 fake 量化专家权重训练、SGLang 以 packed W4A16 rollout 权重服务”,新增组件职责表,拆分 Hugging Face checkpoint、Megatron、Megatron Bridge/raw-mode exporter、SGLang 四类角色。
  2. 补充权重生命周期与量化公式:在 docs/advanced/int4-qat.md 中新增 5 步 weight lifecycle,从 --hf-checkpoint 初始化、Megatron 训练 dtype 初始化、fake 量化 forward(STE 反向)、权重导出打包、到 SGLang weight-update session 加载;同时给出对称 INT4 fake 量化公式 scale = max(max(abs(w)) / 7, 1e-5)clamp(round(w / scale), -7, 7) * scale
  3. 明确 quantization settings 与配置独立性:记录 rollout 侧 compressed-tensors pack-quantized 契约(num_bits: 4strategy: groupsymmetric: true、仅打包 GroupedLinear 覆盖的 routed expert projections、末维需能被 group size 整除);强调训练侧 OPEN_TRAINING_INT4_GROUP_SIZE 与 checkpoint group size 是两个独立实现,匹配不等于 bitwise 一致,改变环境变量不转换 checkpoint。
  4. 补充 Kimi-K2.5 与 Qwen 路径:记录 Kimi Bridge 双向转换(HF→Megatron 解包 INT4 到 BF16,Megatron→HF 重新打包为 group-size-32 INT4 并返回 weight_packed/weight_scale/weight_shape);说明 --ref-load BF16 只是当前 launcher 写法而非 Bridge 要求;记录 Qwen 路径 rollout packing 用 group size 32、trainer fake QAT 用 128 的现状。
  5. 删除不支持声明:移除关于通用内存节省、成熟度、兼容性及旧 workflow 的过度宣称。

该 PR 为纯文档变更,无源码、测试或配置联动;提交历史显示作者在 5 次提交中逐步完成结构重写、Bridge 精度澄清、数据路径对齐、声明收敛与最终审计。

文件 模块 状态 重要度
docs/advanced/int4-qat.md 模型文档 modified 4.4

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

  1. 文档与实现漂移风险:文档精确描述了当前 pinned Megatron Bridge、Transformer Engine GroupedLinear 行为以及 SGLang packed W4A16 契约,一旦相关组件升级或改用其他量化实现(如离线 GPTQ 转换),文档可能迅速过期。
  2. 配置误导风险:文档明确指出 OPEN_TRAINING_INT4_GROUP_SIZE 与 checkpoint group size 相互独立、且改变环境变量不会转换 checkpoint;若读者忽略该提示,仍可能误以为修改环境变量即可完成量化迁移。
  3. 行为收窄的认知落差:移除 memory-saving 与通用 W4A16 路径的描述后,期望利用 INT4 QAT 降低显存/存储的用户需要重新评估预期;文档已经说明不降低训练权重、优化器、梯度与激活的存储,但这一信息需要被新读者及时看到。
  4. 无自动化校验:文档中的公式、flag 与路径均为人工审计,后续重构缺少能自动捕获文档过期的手段。

影响对象主要是使用 INT4 QAT 的用户与参考该路径复现 Kimi-K2.5、Qwen3 INT4 配方的工程师:文档将“训练侧 fake 量化”与“rollout 侧 packed W4A16 存储格式”彻底分离,能显著减少对容量规划、权重导出与 group size 语义的误解。对团队而言,文档与真实实现的对齐降低了未来基于该指南做二次开发或问题排查的沟通成本;同时该变更与 scripts/ 下 .py 启动器体系(如 run_kimi_k25.py)和低精度文档刷新趋势一致。整体影响面限于文档,无运行时行为变化。

纯文档变更 实现声明依赖人工审计 与源码演进存在漂移风险

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论