Prhub

verl-project/verl · 标签视图

标签列表

聚合结果

test 相关 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
缺陷修复 重要性 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
缺陷修复 重要性 9.18 洞察度 7.00

R2 回放模型作用域化并显式启用,修复 Megatron 回归

值得精读。重点学习三点:(1) opt-in + model-scoped 的双重机制如何从根上避免 #7106 的回归——这是"修复被回退后重做"的教科书案例;(2) 分布式集体通信中空 stage 用 0-layer 占位参与的设计,`pp_gather` 的防御性校验也值得借鉴;(3) 多模态 HF config 树遍历中"只走 text 分支、隔离兄弟配置"的约束,对 Qwen3-Omni 类模型接入有直接价值。此外,SamitHuang 的三条 review 展示了如何把"静默错误"审出来并推动作者用测试固化。

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.33 洞察度 5.00

新增 Ascend NPU batch-invariant 开关回归测试(14 例)

值得精读,但读的是测试脚手架而不是代码改动本身。 - 重点看 `run_on_npu` 的 spawn 子进程隔离设计:对于会在全局注册 torch dispatch 表或替换 `torch.sum`、`torch_npu.npu_add_rms_norm` 这类入口的开关,进程级隔离是唯一可靠的隔离手段,这套写法可直接迁移到其他 NPU 补丁测试。 - 重点看 `_run_check` 如何用真实 `vLLMHttpServer` 加最小 mock(模型元数据 + Ray 上下文 + 引擎配置单例)触发真实的 `init_batch_invariance()`,避免了「只测 mock」的假阳性,同时不付出加载权重与拉起推理引擎的代价。 - 关键设计决策:enabled/disabled 双向断言(特别是 disabled 时要求 `batch_invariant_ops::` 事件数必须为 0),这比只测开启路径更能捕获 dispatch 注册泄漏。 - 若要真正确认能力,建议后续补一个跨 batch size 的一致性用例:同一条样本分别放进 batch=1 与 batch=N 比较 logprob 位级一致,才覆盖 `full_determinism` 的语义;并补齐 CI 收集与算子包安装的验证,避免长期 skipped。 - 维护建议:把对 `bi._batch_invariant_LIB` 等私有符号的依赖在注释中显式标注为「随 vllm-ascend 版本可能变动」,并在 PR 描述中把文件名与 body 里的 `test_batch_invariant_switch.py` 对齐。

缺陷修复 重要性 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-09
测试 重要性 3.99 洞察度 2.00

为 AMD/ROCm 平台补充自动检测和注册断言的测试用例。

这是一个标准、低风险的测试补充 PR,旨在提升硬件兼容性测试覆盖。建议精读以了解 verl 平台抽象层的测试设计模式,特别是如何通过模拟环境变量和断言注册表来验证多平台支持。对于负责平台适配或 CI 配置的工程师,此 PR 值得参考。

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

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

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