执行摘要
- 一句话:升级 MoRI 依赖,修复 ionic RoCE 上 KV 传输 EOF 错误
- 推荐动作:作为一行依赖版本升级,无需精读实现细节;但 AMD、hi-cache、disaggregation 相关团队应关注验证结论与 CI 失败项,建议合入前确认 Extra/AMD ROCm 7.2 流水线失败是否与本次 bump 相关。值得关注的设计决策是:将 MoRI 的 pin 放在 Dockerfile ARG 中并附带 NIXL/UCX 构建注释,便于快速定位和追踪上游依赖版本。
功能与动机
PR body 明确指出:DSV4 HiSparse/HiCache PD over MoRI on ionic RoCE hits ReadMessageHeader failed: EOF during KV transfer with the pinned MoRI;#509 fixes it。即当前固定的 MoRI 版本缺少上游 #509(rdma: fix dmabuf offset for sub-allocated GPU buffers, LOC_PROT on ionic RoCE)的修复,在 ionic RoCE 网卡与子分配 GPU 缓冲组合下,KV 传输因 dmabuf 偏移错误而失败。作者在 7c51d18 版本上完成端到端验证(DSV4-Pro 2 节点 1P1D,GSM8K 0.95,0 faults)后提交本变更。
实现拆解
- 定位版本缺口:
docker/rocm.Dockerfile 中 MORI_COMMIT 固定为 12d1bc32,该版本未包含上游 #509 的 ionic RoCE dmabuf 修复。
- 更新依赖 pin:将
MORI_COMMIT 一行替换为 7c51d18fda59457cc9238ed262bd93c8cad906c9,镜像构建时从源码克隆并编译的 MoRI 即携带 #509 修复,同时包含 #505 到 #617 之间的全部上游变更。
- 验证与配套:无 Python 代码与测试改动,仅镜像构建参数变化;作者在 2 节点 1P1D DSV4-Pro 上完成端到端验证。CI 中 Base 流水线通过,Extra 与 AMD ROCm 7.2 流水线未通过,PR 内未说明失败原因。
关键文件:
docker/rocm.Dockerfile(模块 镜像构建;类别 infra;类型 dependency-bump): ROCm 镜像构建入口,MORI_COMMIT 构建参数的 pin 从 12d1bc32 更新为 7c51d18,是整个 PR 唯一且核心的变更点,直接决定镜像内 MoRI 的行为。
关键符号:未识别
关键源码片段
docker/rocm.Dockerfile
ROCm 镜像构建入口,MORI_COMMIT 构建参数的 pin 从 12d1bc32 更新为 7c51d18,是整个 PR 唯一且核心的变更点,直接决定镜像内 MoRI 的行为。
# MoRI 版本 pin:需与上游修复保持同步。此次从 12d1bc32 提升到 7c51d18,
# 以引入 ionic RoCE 上子分配 GPU 缓冲的 dmabuf 偏移修复(上游 #509)。
ARG ENABLE_MORI=0
ARG NIC_BACKEND=none
ARG MORI_REPO="https://github.com/ROCm/mori.git"
ARG MORI_COMMIT="7c51d18fda59457cc9238ed262bd93c8cad906c9"
# NIXL(上游 ai-dynamo/nixl)—— prefill/decode 分离场景下的 KV 传输后端。
# 从源码构建以适配 ROCm,需要 UCX 以 --with-rocm 方式构建(此处基于 openucx 源码构建)。
评论区精华
本 PR 没有任何 review 评论或讨论线程,审核人 Duyi-Wang 直接提交 APPROVED 且未附加说明。因此没有设计权衡交锋可提炼,唯一可确认的是该依赖 bump 获得了 AMD 侧维护者的快速认可。
- review 结论 (other): 批准合入,无需进一步修改。
风险与影响
- 风险:
- 版本跳升范围较大:从
12d1bc32(#505 时代)跳到 7c51d18(#617),携带 #505 至 #617 之间的所有上游变更,除目标修复外可能引入其他行为变化。
- CI 状态存疑:Extra 与 AMD ROCm 7.2 两条流水线标记为未通过,PR 中未给出原因;考虑到变更仅发生在 ROCm 镜像构建参数上,若失败发生在镜像构建阶段则与本 PR 直接相关,合入前需确认失败根因。
- 镜像级影响面:
docker/rocm.Dockerfile 是 ROCm 全量镜像的构建入口,该改动影响所有基于此镜像的构建产物与下游测试,行数虽少但影响面是整类镜像。
- 验证覆盖面窄:端到端验证仅在 DSV4-Pro 2 节点 1P1D + ionic RoCE 一种拓扑上完成,其他网卡、后端或模型组合未覆盖。
- 影响:对用户:AMD ROCm 平台上使用 MoRI 做 prefill/decode 分离或 DSV4 HiSparse/HiCache 部署的用户(尤其是 ionic RoCE 网络)将修复 KV 传输 EOF 故障;非 AMD 平台用户不受影响。对系统:ROCm 镜像重新构建后生效,属于部署侧变更,需要镜像仓库重新出包。对团队:AMD 平台维护者需跟进 Extra 与 ROCm 7.2 CI 失败项,并保持 MoRI pin 与上游修复的同步节奏。
- 风险标记:依赖版本跳升, CI 部分流水线未通过, ROCm 镜像全局变更, 验证场景单一
关联脉络
- PR #37279 Bump sgl-deep-gemm to 0.1.7: 同为通过依赖版本 bump 修复或启用能力的维护型 PR,反映 SGLang 对上游外部组件(MoRI、sgl-deep-gemm)保持快速追赶的依赖管理节奏。
- PR #37307 fix(unified-memory): forward the KV-index translator through every wrapper backend: 同属 KV 数据通路上的正确性修复,但层次不同:#37307 在内存索引层,本 PR 在网络传输层(MoRI/NIXL),共同支撑 KV 传输与缓存的端到端可靠性。
参与讨论