Prhub

#29400 [Docs] Cookbook: match playground docker image resolution to deployment (hw|quant)

原始 PR 作者 zijiexia 合并时间 2026-06-26 15:56 文件变更 1 提交数 1 评论 1 代码增减 +3 / -1

执行摘要

Playground Docker 镜像选择同步 deployment 逻辑

PR #29380 为 Deployment 引擎添加了按 hw|quant 解析 Docker 镜像的功能,但 Playground 引擎仍使用仅按 hw 查找的旧逻辑。这导致当配置中定义了量化专用镜像时,Playground 显示的 Docker 命令使用了错误的镜像。例如,GLM-5.2 NVFP4 在 Playground 中显示 lmsysorg/sglang:latest 而非正确的 lmsysorg/sglang:dev-glm52-nvfp4

5

讨论亮点

无实质性讨论,PR 获得 Fridge003 的批准,无 review 评论。

实现拆解

在文件 docs_new/src/snippets/_playground.jsx 的 Docker 镜像解析逻辑中,将原来一行代码拆分为两行,并添加 | 组合键作为首选。

  1. 提取配置对象: 使用 const di = config.dockerImages || {}; 安全提取 dockerImages 配置。
  2. 多级查找: 使用 const image = di[${sel.hw}|${sel.quant}] || di[sel.hw] || "lmsysorg/sglang:dev"; 依次按 hw|quant 组合键、hw 键查找,若都未找到则使用默认镜像。
  3. 仅影响 Playground: 变更仅涉及 Playground 组件,Deployment 组件已在 PR #29380 中更新。
文件 模块 状态 重要度
docs_new/src/snippets/_playground.jsx 文档组件 modified 4.99

关键符号

renderCommandLines

关键源码片段

docs_new/src/snippets/_playground.jsx core-logic

更新了 Docker 镜像选择逻辑,使 Playground 组件支持按 `hw|quant` 组合键解析镜像,与 Deployment 组件保持一致。

    let cmd;
    if (mode === "docker") {
      // 按 `hw|quant`(最具体)→ `hw` → 默认 `:dev` 依次解析镜像,与 _deployment.jsx 对齐。
      const di = config.dockerImages || {};
      const image = di[`${sel.hw}|${sel.quant}`] || di[sel.hw] || "lmsysorg/sglang:dev";
      const portFlag = f.find((x) => x.split(/[\s=]/)[0] === "--port");
      const servePort = portFlag ? portFlag.slice("--port".length).trim() : "{{PORT}}";
      const dockerLines = [
        "docker run --gpus all",
        "  --shm-size 32g",
        (multinode || pdMode) ? "  --network host" : `  -p ${servePort}:${servePort}`,
        "  -v ~/.cache/huggingface:/root/.cache/huggingface",
        `  --env "HF_TOKEN={{HF_TOKEN}}"`,
        ...cellEnv.map((e) => `  --env ${e}`),
        "  --ipc=host",
        `  ${image}`,
        "  sglang serve",
        ...f.map((x) => "    " + x),
      ];
      cmd = dockerLines.join(" \\\n");
    } else {
      // Python 模式保持不变
      const flagBlock = f.map((x) => "  " + x).join(" \\\n");
      const envBlock = cellEnv.length ? cellEnv.join(" \\\n") + " \\\n" : "";
      cmd = `${envBlock}sglang serve \\\n${flagBlock}`;
    }

评论区精华

无实质讨论 other

PR 获得批准,无 review 评论。

结论:无需变更。 · 已解决

风险与影响

该变更仅修改了 Docker 镜像的解析逻辑,且遵循向下兼容的设计:当配置中不存在 hw|quant 键时,行为与旧代码完全一致。目前仅 GLM-5.2 使用了 hw|quant 键,因此对其他 cookbook 无影响。风险极低。

  • 用户影响: Playground 中展示的 Docker 命令现在会正确反映量化专用镜像,提升文档准确性。
  • 系统影响: 无运行时影响,仅影响文档生成逻辑。
  • 团队影响: 保持 Playground 和 Deployment 两个引擎的一致性,减少后续因镜像不匹配产生的维护问题。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论