Prhub

radixark/miles · 标签视图

标签列表

聚合结果

blackwell 相关 PR

2026-09-14

#3217 Reduce NVFP4 weight synchronization overhead

原始 PR · 作者 zianglih · 合并时间 2026-09-14 15:25

性能优化 重要性 7.62 洞察度 7.00

消除 NVFP4 权重发布的主机同步与规则扫描开销

值得精读,尤其推荐给维护 NVFP4 RL、权重同步与 checkpoint 导出性能的工程师。重点关注四个设计决策:(1) 用 Python 标量 + `clamp_max` + `torch.where` 取代标量张量分配与 CUDA 标量真值判断,这是消除隐式同步的通用手法,前提是分子在 FP32 下精确可表示(1536 / 2688),换其它 `e4m3_max` 时需要重新确认;(2) `_literal_ignore_rules` 返回 `None` 作为“交给正则路径”的哨兵值,虽然保留了顺序 `re.match` 与异常行为,但把正确性押在调用约定上,建议后续补一个断言或在 `_is_ignored` 中显式处理;(3) 用 TorchDispatchMode 把性能契约写成断言,这是本 PR 最值得借鉴的测试范式;(4) 接受 `(1,)` 形状保持、并在 head 上删除策略回归测试,属于明确声明的取舍,建议后续补回 `tests/fast/utils/test_nvfp4_ignore_policy.py` 或等价用例,并在合并 head 上重跑一次完整发布路径的墙钟对比以闭合性能证据链。

2026-09-11

#2864 Add fused NVFP4 fake-QAT QDQ kernels

原始 PR · 作者 zianglih · 合并时间 2026-09-11 12:03

功能 重要性 9.18 洞察度 8.00

新增融合 NVFP4 fake-QAT QDQ 内核、Megatron 适配层与 W4A16 RL 端到端配方

值得精读,但建议按“契约 → 内核 → 测试”的顺序读:(1) 先读 `NVFP4QDQConfig.__post_init__` 与 `current_nvfp4_qdq_config()`,这是理解整个内核能力边界(哪些开关合法、哪些组合被拒绝)的最短路径;(2) 再看 `miles/utils/nvfp4_fake_qat.py` 的 env 门控 + 延迟 import 设计,它决定了这项功能是否会影响未启用它的用户;(3) 最后读 `tests/fast-gpu/test_nvfp4_quantizer.py` 的 `_te_qdq_reference` 与 bit-exact 断言,理解“逐比特一致”具体对齐了什么(含 +0/-0 的整数视图比较)。特别值得学习的设计决策有:用编译期特化代替运行时分支、保留 TE 变量名但在文档串/注释/测试三处澄清语义、以及用 `--no-gradient-accumulation-fusion` 保证 STE 梯度回落到原始专家参数。同时请带着两个疑问阅读:TE 版本升级后 bit-exact 契约如何维护,以及 Megatron 侧 hook 缺失时的静默失配如何被发现。

#2855 Restrict NVFP4 RL to routed experts

原始 PR · 作者 zianglih · 合并时间 2026-09-11 08:59

缺陷修复 重要性 6.99 洞察度 6.00

NVFP4 量化范围收紧至路由专家,共享专家保持高精度

值得精读,重点不在 diff 体量(+25/-51),而在于它把一条隐式契约变成默认行为:建议仔细阅读 `_is_routed_expert_weight_name` 的判定顺序(共享专家否决必须早于 `.experts.` 匹配)、`quantize_params_nvfp4` 的分发结构,以及三条路径的对齐关系,这是理解 miles NVFP4 RL 现状的关键。 需要额外关注的决策与后续动作:一是 `--ci-disable-kl-checker` 属于「绕过而非修复」,建议单独跟进 signed `train/ppo_kl < 1e-8` 门禁的判据缺陷(应改为绝对值或幅值阈值);二是 `tests/fast/test_nvfp4_scope.py` 被删除后没有替代守卫,建议补回一个纯 CPU 的名称判定单测,锁住单数/复数/嵌套共享专家三种命名;三是把 FlashInfer 0.6.18 固化到镜像/依赖,避免 E2E 长期依赖手工 wheel 覆盖;四是给用户一条明确的迁移提示——旧 NVFP4 checkpoint 需要重新转换导出。

2026-09-10

#3181 docs: DeepSeek-V4.1 Flash cookbook

原始 PR · 作者 Zhichenzzz · 合并时间 2026-09-10 14:12

文档 重要性 4.75 洞察度 5.00

新增 DeepSeek-V4.1 Flash 训练配方文档并接入导航

值得精读,尤其是 §3.5 的必选 flag 解释与 §3.6 的预期指标表——它们把 colocated 引擎休眠释放 engram 表、全参数 Adam 状态必须落盘这些隐性坑写成了显式约束,是理解 V4.1 训练栈成本结构的最短路径。建议跟进三件事:① 明确 `dsv41_cut_cast.py` 的仓库路径或提供等价工具(回应 issue 评论);② 确认 docs.json 中 `developer/ci/*` → `ci/*` 的回退是否有意,必要时拆成独立 PR;③ 为文档中的脚本与参数增加轻量可用性检查,避免 cookbook 成为新的答疑入口。

2026-08-18
缺陷修复 重要性 5.17 洞察度 6.00

镜像钉死 cutlass-dsl 4.6.2 与 flashinfer 0.6.15.post1,修复 B300 训练挂起

值得精读。虽然只是单文件 Dockerfile 改动,但它演示了一套高价值的镜像依赖治理模式:区分"元数据版本"与"实际加载 runtime"、用 force-reinstall + 构建时断言锁定镜像、基于上游回归链(sglang#31625 → #31927)谨慎选择修复版本。对负责镜像构建、发布流程以及 Blackwell/B300 训练基础设施的工程师尤其有参考价值。

2026-08-05
缺陷修复 重要性 5.79 洞察度 4.00

按后端 scale 格式门控 ue8m0 权重量化

该 PR 值得快速精读,尤其是 3 个 commit 反映的方案演进:从 `DEEPGEMM_SCALE_UE8M0` 门控改为真实 TE 环境变量门控,体现了“用训练侧事实约束转换侧行为”的设计思路。值得关注的设计决策:把后端能力判断(DeepGEMM 是否支持 ue8m0)与训练侧 scale 格式选择解耦。建议后续补充:环境变量缺失兜底、AMD gfx942/gfx950 分支、以及针对转换输出的回归测试。

2026-08-04
缺陷修复 重要性 6.38 洞察度 7.00

修复 sparse_mla_bwd NaN 并新增 GB300 RL 训练配方

值得精读,重点看三点:一是 PR body 对 kernel miscompile 的论证——为什么 Hopper 没炸不能作为 gate 条件,正确性修复不应依赖调度巧合,这是编译器 pass 配置踩坑的宝贵案例;二是显存瓶颈的实测推理——KV pool 而非 max-seq-len 才是 context 上限,mem-fraction 从 0.75 提到 0.85 是数据驱动而非拍脑袋;三是 --sglang-config 把复杂 rollout 引擎形状抽象为两个具名配方,并在 __post_init__ 用 assert 拒绝无法表达的组合,这种配置设计模式可直接借鉴到其他启动器。

#2043 Compact NVFP4 BF16 MoE exclusion metadata

原始 PR · 作者 zianglih · 合并时间 2026-08-04 05:48

重构 重要性 5.71 洞察度 5.00

NVFP4 转换器压缩 BF16 MoE 排除项,冗余从 3571 降至 499

值得快速精读 `tools/convert_hf_to_nvfp4.py` 的 else 分支,理解“动态 BF16 层专家折叠为容器、同时保留层前缀与容器前缀”的取舍。对维护量化转换管线的同学有参考价值;注意测试当前被 CI 禁用,合并后建议留意后续启用时机。