Prhub

#30651 cookbook(deepseek-v4): add MORI disagg backend for AMD + bump MI355X image

原始 PR 作者 ChangLiu0709 合并时间 2026-07-15 15:33 文件变更 2 提交数 4 评论 2 代码增减 +52 / -29

执行摘要

添加 MORI 分离后端及 MI355X 镜像 / 参数更新

AMD 用户需要 PD 分离传输后端选项(当前只有 Mooncake 和 NiXL),且 MI355X 镜像和参数需要跟进最新的性能调优结果(参考 SemiAnalysisAI/InferenceX#1818、#2093、#2108)。

值得关注的是 MORI 后端的硬件门控方式(hide 约束)和 Playground 的回退机制,对于其他需要硬件特定选项的 cookbook 有参考价值。

讨论亮点

无突出讨论;只有 gemini-code-assist 机器人的配额提示,无人工评论。

实现拆解

  1. 在 deepseek-v4.jsx 中添加 MORI 后端:在 pdDisagg.transferBackends 数组中插入 { id: "mori", label: "MORI", hide: { hw: ["h100", "h200", ...] } },通过硬件约束隐藏在所有非 ROCm 平台上。
  2. 更新 MI355X 镜像和指标:将 dockerImages.mi355x 标签从 v0.5.13.post1 升级到 v0.5.14-rocm720-mi35x-20260708;在所有 MI355X 单元中将 --swa-full-tokens-ratio 从 0.1 改为 0.15;将 --enable-prefill-delayer/--prefill-delayer-max-delay-ms 5000 替换为 --enable-two-batch-overlap;添加 SGLANG_SHARED_EXPERT_TP1=1SGLANG_DP_SHARED_EXPERT_LOCAL=1SGLANG_DP_USE_REDUCE_SCATTER=1 环境变量。
  3. 在 _playground.jsx 中添加后端隐藏回退逻辑pdDisagg.revertHidden 中新增对 transferBackend 的检查——若当前后端因硬件切换被隐藏,则自动回退到 "mooncake"
文件 模块 状态 重要度
docs_new/src/snippets/configs/deepseek-ai/deepseek-v4.jsx cookbook 配置 modified 6.43
docs_new/src/snippets/_playground.jsx Playground UI modified 4.83

关键源码片段

docs_new/src/snippets/configs/deepseek-ai/deepseek-v4.jsx configuration

主要变更文件:添加 MORI 传输后端、更新 MI355X 镜像和性能参数。

// 展示 MORI 后端的添加和镜像更新(来自 deepseek-v4.jsx)// AMD daily-updated lmsysorg/sglang-rocm images. Bump the dated tag when you
// re-verify on a newer build.
mi300x: "lmsysorg/sglang-rocm:v0.5.13.post1-rocm720-mi30x-20260623",
mi355x: "lmsysorg/sglang-rocm:v0.5.14-rocm720-mi35x-20260708", // 镜像标签从 v0.5.13.post1 升级// ----- Card 5: "PD Disaggregation" -----
pdDisagg: {
  modes: [
    { id: "off", label: "Off" },
    { id: "prefill", label: "Prefill role" },
    { id: "decode", label: "Decode role" },
  ],
  transferBackends: [
    { id: "mooncake", label: "Mooncake", ... },
    { id: "nixl", label: "NiXL" },
    // MORI-IO transport is AMD-only — hidden on every non-ROCm platform.
    { id: "mori", label: "MORI",
      hide: { hw: ["h100", "h200", "b200", "b300", "gb200", "gb300", "rtx6000"] } },
  ],
  // ...
},// 示例:某个 DP-Attention 单元的参数替换(两处类似的修改)
// 之前:--enable-prefill-delayer --prefill-delayer-max-delay-ms 5000
// 之后:--enable-two-batch-overlap
"--swa-full-tokens-ratio 0.15", // 从 0.1 提升
"--enable-two-batch-overlap", // 替换老化的 prefill delayer
// 环境变量新增
"SGLANG_SHARED_EXPERT_TP1=1",
"SGLANG_DP_SHARED_EXPERT_LOCAL=1",
"SGLANG_DP_USE_REDUCE_SCATTER=1",
docs_new/src/snippets/_playground.jsx core-logic

添加 transferBackend 隐藏时的回退逻辑,确保硬件切换后后端选择不会被卡住。

// 在 pdDisagg.revertHidden 函数中添加 transferBackend 检测(位于 _playground.jsx)
pdDisagg: {
  initState: () => ({ mode: "off", transferBackend: "mooncake", ibDevice: "auto" }),  revertHidden: (value, fc, base, h) => {
    let changed = false;
    const next = { ...value };
    // 原有的 mode 和 ibDevice 检测…
    // 新增:若当前 transferBackend 在 fc.transferBackends 中被隐藏,则回退到 mooncake
    if (next.transferBackend !== "mooncake" && fc.transferBackends
        && h.isHidden(fc.transferBackends, next.transferBackend, base)) {
      next.transferBackend = "mooncake"; changed = true;
    }
    return changed ? next : value;
  },
  // …
}

评论区精华

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

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

风险与影响

仅修改 cookbook 配置和 Playground UI,不涉及任何引擎或核心代码。风险极低,但 MI355X 参数变更(如 swa 比例、two batch overlap)可能影响 AMD 用户的基准测试结果,需确保新参数在生产环境同样有效。

影响范围限定在 DeepSeek-V4 的 Playground 页面:AMD 用户可以看到 MORI 传输后端选项;MI355X 的预设命令和 Docker 镜像会更新。不影响其他模型或非 AMD 用户。

仅配置文件变更 AMD 专用

关联 Issue

#1818 [AMD] add dsv4 sglang disagg / 新增 DSv4 SGLang 分离式基准测试
#2093 [AMD][MI35X] 0706 DSV4 sglang
#2108 [AMD][MI35X] 0706 DSV4 sglang mtp

完整报告

参与讨论