# PR #37286 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[AMD][MORI] Bump MoRI to 7c51d18 for ionic RoCE dmabuf fix (#509)
- 合并时间：2026-09-01 12:37
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/37286

---

# 执行摘要

- 一句话：升级 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）后提交本变更。

# 实现拆解

1. 定位版本缺口：`docker/rocm.Dockerfile` 中 `MORI_COMMIT` 固定为 `12d1bc32`，该版本未包含上游 #509 的 ionic RoCE dmabuf 修复。
2. 更新依赖 pin：将 `MORI_COMMIT` 一行替换为 `7c51d18fda59457cc9238ed262bd93c8cad906c9`，镜像构建时从源码克隆并编译的 MoRI 即携带 #509 修复，同时包含 #505 到 #617 之间的全部上游变更。
3. 验证与配套：无 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 的行为。

```dockerfile
# 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): 批准合入，无需进一步修改。

# 风险与影响

- 风险：
 1. 版本跳升范围较大：从 `12d1bc32`（#505 时代）跳到 `7c51d18`（#617），携带 #505 至 #617 之间的所有上游变更，除目标修复外可能引入其他行为变化。
 2. CI 状态存疑：Extra 与 AMD ROCm 7.2 两条流水线标记为未通过，PR 中未给出原因；考虑到变更仅发生在 ROCm 镜像构建参数上，若失败发生在镜像构建阶段则与本 PR 直接相关，合入前需确认失败根因。
 3. 镜像级影响面：`docker/rocm.Dockerfile` 是 ROCm 全量镜像的构建入口，该改动影响所有基于此镜像的构建产物与下游测试，行数虽少但影响面是整类镜像。
 4. 验证覆盖面窄：端到端验证仅在 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 传输与缓存的端到端可靠性。