Prhub

#2729 fix(ci): use local UCX transports for RDT test

原始 PR 作者 guapisolo 合并时间 2026-08-25 03:03 文件变更 1 提交数 1 评论 2 代码增减 +4 / -0

执行摘要

限制 RDT 测试使用本地 UCX 传输以修复 CI 失败

CI 测试 stage-c-8-gpu-h100 在 revision 1b756a756f 上失败,错误为 `uct_iface_open(rc_verbs/mlx5_bond_0:

1) failed: Address not validNIXL_ERR_BACKEND。根本原因是 Novita H100 runner 暴露了不可用的mlx5_bond_0:1`,导致 UCX 自动发现中止,无法选择同节点 CUDA IPC 路径。

值得精读,尤其关注 extra_env_vars 的使用方式,可作为类似测试环境限制的参考。

讨论亮点

无实质 review 评论,仅有 Claude bot 的自动评论提示手动 review 设置,以及 yushengsu-thu 的批准。

实现拆解

  1. 修改 tests/e2e/megatron/test_qwen3_30B_A3B_rdt.py 中的 execute() 函数,在 U.execute_train() 调用中添加 extra_env_vars 参数,设置 UCX_TLSsm,self,tcp,cuda_copy,cuda_ipc
  2. 该环境变量通过 Ray runtime environment 传递给测试进程,确保 UCX 只使用本地传输(共享内存、自环、TCP、CUDA 复制、CUDA IPC),避免 verbs 设备。
  3. 保持生产 RDT 配置不变,仅影响测试。
  4. 验证:py_compileruff check 通过,两 GPU Ray/NIXL H200 探针成功传输 torch.arange(1024) 并返回 523776
文件 模块 状态 重要度
tests/e2e/megatron/test_qwen3_30B_A3B_rdt.py 测试 modified 3.99

关键符号

execute

关键源码片段

tests/e2e/megatron/test_qwen3_30B_A3B_rdt.py test-coverage

为单节点 RDT E2E 测试添加 UCX_TLS 环境变量限制,修复 CI 失败

# tests/e2e/megatron/test_qwen3_30B_A3B_rdt.py
# 在训练执行时,通过 extra_env_vars 显式限制 UCX 使用的传输层。
# 该单节点测试仅需 CUDA IPC,Novita H100 runner 上不可用的 mlx5 bond 会导致 UCX 后端创建失败。
U.execute_train(
    train_args=train_args,
    num_gpus_per_node=NUM_GPUS,
    megatron_model_type=MODEL_TYPE,
    train_script="train_async.py",
    # 限制传输为共享内存、自环、TCP、CUDA 复制和 CUDA IPC,避免 verbs 设备
    extra_env_vars={"UCX_TLS": "sm,self,tcp,cuda_copy,cuda_ipc"},
)

评论区精华

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

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

风险与影响

风险较低。修改仅针对测试环境,通过 extra_env_vars 限制 UCX 传输,不影响生产 RDT 配置。但需要确保在 Novita H100 runner 上测试通过,且其他 RDT 测试或单节点场景不受影响。

影响范围限于 RDT 相关 CI 测试,提升测试稳定性。对用户无直接影响,对团队CI 流程有益。

测试环境特定修复 未覆盖其他 RDT 测试

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论