执行摘要
- 一句话:升级AMD ROCm Docker中Mooncake并启用多协议
- 推荐动作:该PR值得关注,特别是对AMD平台部署PD Disaggregation的团队,其多协议运行时选择的设计思路清晰,可参考。
功能与动机
旧版Mooncake缺少多协议传输支持,在USE_HIP=ON构建下仅支持XGMI,导致跨节点RDMA返回NotSupportedTransport错误。升级版本并启用多协议后,同一进程可自动根据对端选择传输协议,无需重建或手动切换。
实现拆解
- 升级Mooncake版本与构建参数:在
docker/rocm.Dockerfile中将MOONCAKE_COMMIT更新至01d1eb2a7ec37fd5e20a88573e9b4956e7846e9a,并在cmake命令中添加-DENABLE_MULTI_PROTOCOL=ON -DWITH_STORE=ON -DBUILD_UNIT_TESTS=OFF。其中BUILD_UNIT_TESTS=OFF用于规避Mooncake测试目标mp_transport_test因未启用CXL导致的链接错误。
- 优化CI调试与设备配置:在两个CI工作流文件(
pr-test-amd-rocm720.yml和pr-test-amd.yml)的disaggregation测试步骤中添加rocm-smi --showtopotype输出、Mooncake引擎的协议广告字符串检查、MC_LOG_LEVEL=TRACE和GLOG_logtostderr=1环境变量。同时将RDMA设备从自动检测所有HCA(rdma0..rdma7)硬编码为单个rdma0,以解决单节点1P1D测试中多设备导致P2P握手失败的问题。
关键文件:
docker/rocm.Dockerfile(模块 部署脚本;类别 infra;类型 infrastructure): 核心变更:升级Mooncake commit并添加多协议构建标志。
.github/workflows/pr-test-amd-rocm720.yml(模块 CI配置;类别 infra;类型 infrastructure): 为ROCm 7.2 CI添加调试日志、环境变量和RDMA设备固定。
.github/workflows/pr-test-amd.yml(模块 CI配置;类别 infra;类型 infrastructure): 为主AMD CI(ROCm 7.0)同步添加相同的调试日志、环境变量和RDMA设备固定。
关键符号:未识别
评论区精华
讨论主要集中在两部分:一是Mooncake自身测试编译失败(undefined reference to typeinfo for mooncake::CxlTransport),通过添加-DBUILD_UNIT_TESTS=OFF解决;二是单节点1P1D disagg测试中RDMA多设备导致P2P握手失败(received packet mismatch),最终固定为单个rdma0解决。
- Mooncake多协议构建链接错误 (correctness): 通过添加-DBUILD_UNIT_TESTS=OFF禁用测试编译。
- 单节点RDMA多设备P2P失败 (correctness): 将RDMA设备固定为单个rdma0。
风险与影响
- 风险:主要风险来自Mooncake版本升级可能引入新的bug或不兼容行为,但由于仅改动Docker构建参数和CI脚本,不涉及模型前向或内核代码,影响范围可控。CI中添加的硬编码
rdma0可能在未来多NIC环境下需要重新评估,但当前仅用于单节点调试场景。
- 影响:对AMD ROCm用户影响较大:PD Disaggregation现在可以在多节点间通过RDMA传输KV,同一镜像同时支持XGMI和RDMA,简化部署。CI中添加的调试日志有助于未来排查相关问题,但设备固定可能掩盖部分环境问题。
- 风险标记:依赖外部仓库版本迭代, CI调试变化可能影响测试稳定性
关联脉络
参与讨论