Prhub

verl-project/verl · 标签视图

标签列表

聚合结果

trainer 相关 PR

2026-09-16
缺陷修复 重要性 8.36 洞察度 7.00

detach model_output 修复多引擎逐 micro-batch 显存泄漏

值得精读。建议关注四点: 1. 根因定位方法:`_record_memory_history` 栈归因锁定 `p2p_communication.py::create_tensor_recv_prev`,并用 `forward_only`(0.76 MiB/micro-batch)与 PP=1(0.31 MiB/micro-batch)两组对照实验把“图保留”机制钉死,是排查训练显存泄漏的范本。 2. `detach_tree` 设计:惰性 detach(已 detached 张量原样返回)避免逐 key 创建 `TensorImpl`;递归支持 dict / list / tuple,从而覆盖 jagged nested tensors 这类新型输出结构。 3. 回归测试设计:CPU-only 下用最小 checkpoint 模型 + weakref 复现“图被钉住”机制,再配合 AST 静态检查 4 个引擎调用点,绕开“必须 PP>=2 才可复现”与“无法在 CI 断言绝对显存”的双重困境。 4. 工程陷阱提醒:“detach 位置错误导致梯度静默归零且 loss 曲线正常”说明此类内存修复必须用梯度可达性断言(`requires_grad` 契约)双保险,而不能只靠数值曲线。

2026-09-15
文档 重要性 3.31 洞察度 3.00

补充昇腾 NPU 上 Checkpoint Engine 后端配置文档

该 PR 无需精读代码,建议用 3-5 分钟浏览文档正文即可,重点关注三个设计决策:(1) `nccl` 在 NPU 上被隐式解析为 HCCL——这是一个“配置名与实现后端不一致”的接口约定,值得确认其实现位置并在代码侧保留注释,避免后续被误当作 bug 改掉;(2) Mooncake 在 NPU 上依赖源码编译 `ascend_direct`,属于部署前置条件,建议在昇腾镜像或安装脚本文档中交叉引用;(3) 参数表默认值(2048 MB 桶、`group_name=default`、`rebuild_group=False`)与实现的一致性没有自动化保障,建议后续修改 checkpoint engine 的 PR(如 Mooncake 相关修复)把更新本文档纳入 checklist。若团队有英文文档镜像,建议同步一份以覆盖英文用户。

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

V1 验证指标把失败会话按 acc=0 计入

值得精读。这是一个“小 diff、大语义”的指标修正:104 行改动里的核心只有三处(期望计数采集、源级 opt-in 补齐、None/has_pred 安全化),但直接改变了 Trainer V1 验证主指标的语义,阅读时建议重点看 `metric_utils.py` 的 `expected_acc_counts` 块与 `has_pred` 的判定条件,以及 `trainer_base.py` 中 `(str(data_source), str(uid))` 键的构造是否与指标侧分组严格对齐。建议配套动作:在监控中同时画 `acc` 与 `acc_success_only`,把两者差值作为失败率诊断;为 `_validate → _val_metrics_update` 补一个 CPU 级端到端单测(覆盖 `__rollout_n__` 缺省回退与键一致性);明确 `pred` 是否也应随 `acc` 补齐,避免 `maj` 指标与 `mean` 基数不一致。

2026-09-14
缺陷修复 重要性 5.49 洞察度 4.00

补齐蒸馏 teacher 字段填充并支持 fsdp2 策略

值得精读,但只需读源码不必读讨论——PR 本身讨论为零。重点关注三个设计决策:一是 padding 模板选择 "按模板序列长度重建" 而非 "裁剪/丢弃教师字段",意味着合成样本仍需保持可被蒸馏 loss 消费的完整张量结构;二是用 .new_full/.new_zeros 保留 topk 维与 dtype/device,写法克制,便于后续扩展更多 teacher 字段;三是把 fsdp2 直接并入 fsdp/veomni 分支而不是新建实现。建议阅读者在本地补一条 CPU 单测覆盖 teacher_ids/teacher_logprobs 存在与不存在两种情况,并确认跨 tokenizer 场景下 eos_token_id 作为 teacher topk id 的合法性。

2026-09-11
缺陷修复 重要性 6.61 洞察度 6.00

对齐 VLM THD 序列长度,修复 Megatron SP 崩溃

建议精读,尤其是正在维护 Megatron VLM / 序列并行 / 上下文并行前向路径的工程师。值得关注的三个设计点:一是「SP scatter 要求 S 能被 tp_size 整除」这一硬约束通过 padding 在模型入口处满足,而不是在 scatter 处打补丁;二是 CP>1 时对齐粒度取 `tp_size * cp_size * 2` 的推导(zigzag 切分保证单 rank 局部长度仍可被 tp_size 整除);三是把对齐逻辑收敛到 `build_vlm_attn_mask_thd`、让 fused 路径复用,避免两套实现继续分叉。同时应把 Copilot 的测试建议当作待办跟进:补一个覆盖 B=1、4026 这类奇数长度的 CPU 单测,断言输出 S 可被 `tp_size`(CP>1 时为 `tp_size * cp_size * 2`)整除,并在 CP 分支校验每个 rank 拿到完整切片。

2026-09-10
缺陷修复 重要性 7.85 洞察度 7.00

修复 V1 异步训练恢复后重复提交 warmup 导致的跳样本与窗口溢出

建议精读,尤其是维护 V1 异步训练与 checkpoint 恢复链路的同学。三个值得关注的设计决策:(1) 门控依据从「reissue 动作返回值」改为「恢复状态占用计数」,揭示了恢复类逻辑应以状态而非动作结果做门控;(2) 预取窗口的度量单位由 batch 改为 prompt,并配套 `_add_prompts_to_generate(missing_prompts)`;(3) 恢复池超额时「只保不缩」,用日志而非裁剪处理异常状态。此外,Begunner 在 review 中指出反例并直接提交修复的协作模式,以及 PR body 中明确标注 AI 辅助定位、人工逐行复核的做法,都值得作为流程参考。后续建议补齐两个覆盖缺口:带 `global_steps` 过滤的计数测试,以及打通真实 replay buffer / dataloader 的集成测试。

2026-09-08
功能 重要性 6.29 洞察度 5.00

默认使用标准 pre-KL 奖励(rm_scores)进行 DAPO 动态分组过滤

此 PR 是一个**有价值且实现精良的功能增强**。它通过提供开箱即用的标准奖励过滤路径,显著简化了 DAPO 动态采样的配置,并提升了其与核心奖励计算流程的集成度。实现方案清晰,通过分支逻辑兼容了新旧两种指标读取方式,并附带了针对性强的单元测试。考虑到默认值的变更可能对现有用户产生影响,建议在发布说明中明确提示此行为变化。整体而言,**值得精读其核心逻辑分支和测试用例的设计**,以理解如何优雅地扩展现有功能并保持兼容性。

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

分离 rollout 和训练 profiler 窗口,修复 NPU/GPU 并发采集冲突导致数据丢失。

本 PR 是一个高质量、有针对性的 bugfix,解决了实际硬件平台上的关键问题。它不仅修复了核心逻辑,还显著增强了测试和验证基础设施。强烈建议精读其实现,尤其是三种 trainer 模式下 profiler 生命周期控制的新设计,这对理解 V1 架构的扩展性和健壮性有重要参考价值。实现逻辑清晰,测试充分。