执行摘要
修复 CI 测试,调整梯度比对逻辑与配置
修复 CI 测试中的数值精度不匹配和配置问题,确保 GPU 上的 PPO logprob/entropy 反向传播测试能通过,以及 Qwen3 并行检查测试的稳定性。
本 PR 是典型的 CI 稳定性修复,值得关注的是 _assert_logprob_backward_close 的设计:通过 bfloat16 对齐来规避不同 kernel 的精度差异,是一个实用的数值测试技巧。
本 PR 无 review 评论或审核。
修复 CI 测试中的数值精度不匹配和配置问题,确保 GPU 上的 PPO logprob/entropy 反向传播测试能通过,以及 Qwen3 并行检查测试的稳定性。
本 PR 是典型的 CI 稳定性修复,值得关注的是 _assert_logprob_backward_close 的设计:通过 bfloat16 对齐来规避不同 kernel 的精度差异,是一个实用的数值测试技巧。
本 PR 无 review 评论或审核。
_assert_logprob_backward_close 函数(tests/test_ppo_logprob_entropy_gpu.py):用于统一比较 log-prob 反向梯度。由于 Megatron 融合 CE kernel 会将梯度量化到 bfloat16,而新实现保持 fp32 梯度,因此先将双方梯度转换为 bfloat16 再对比,避免精度差异导致的误报。_assert_legacy_parity 中的反向测试(同上文件):将 log-prob 和 entropy 的梯度测试分离。log-prob 梯度使用 _assert_logprob_backward_close 在 bfloat16 精度下对比;entropy 梯度使用 ENTROPY_BACKWARD_ATOL 容差单独测试。同时,将 logprob_weights 和 entropy_weights 的构造与 backward 调用解耦,避免混合计算导致精度污染。tests/test_qwen3_0.6B_parallel_check.py):在 sglang_args 中增加 --sglang-disable-piecewise-cuda-graph,禁用分段 CUDA graph 以规避潜在的稳定性问题。| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
tests/test_ppo_logprob_entropy_gpu.py |
测试 | modified | 6.18 |
tests/test_qwen3_0.6B_parallel_check.py |
测试 | modified | 3.11 |
tests/test_ppo_logprob_entropy_gpu.py
test-coverage
主要变更文件,新增梯度对比辅助函数并重构反向测试逻辑,提升测试精度和稳定性。
# tests/test_ppo_logprob_entropy_gpu.py
def _assert_logprob_backward_close(actual_grad: torch.Tensor, legacy_grad: torch.Tensor) -> None:
# Megatron's fused vocab-parallel CE backward quantizes the log-prob
# gradient to bfloat16 on CUDA. The new implementation keeps fp32 grads, so
# compare this branch at the legacy kernel's effective precision.
if actual_grad.is_cuda:
actual_grad = actual_grad.to(torch.bfloat16)
legacy_grad = legacy_grad.to(torch.bfloat16)
torch.testing.assert_close(actual_grad, legacy_grad, rtol=BACKWARD_RTOL, atol=BACKWARD_ATOL)
当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
风险较低。变更仅影响测试文件,不会影响生产代码。主要风险在于测试重构可能遗漏某些梯度组合场景,但 PARITY_SCENARIOS 已覆盖常见参数组合,且分离后的测试逻辑更清晰可靠。
影响范围仅限于 CI 测试管道。修复后,与 PPO logprob/entropy 计算相关的 GPU 测试和 Qwen3 并行检查将更加稳定,减少因数值精度或配置问题导致的 CI 失败。
当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论