Prhub

#23980 docs(cookbook): add H200 (FP4) deployment option for DeepSeek-V4

原始 PR 作者 Fridge003 合并时间 2026-04-29 10:38 文件变更 2 提交数 5 评论 2 代码增减 +84 / -8

执行摘要

为 DeepSeek-V4 新增 H200 (FP4) 部署选项

为了满足在 H200 GPU 上使用原始 FP4 检查点部署 DeepSeek-V4(Flash 和 Pro)的需求,提供与 Marlin MoE 运行器兼容的部署命令。此变更补充了已有的 FP8 部署选项,使用户可以根据硬件和精度偏好选择部署路径。

值得阅读以了解如何在前端组件中处理不兼容硬件选项的优雅降级。设计上使用 Set 和显示禁用原因对用户友好。如果团队正在编写类似部署 cookbook,可参考此模式。

讨论亮点

PR 由作者独自迭代完成,无 Review 评论。设计决策在提交信息中体现:禁用 cp/pd-disagg 并自动回退、为 balanced recipe 启用更温和的 MTP(steps=1/topk=1/draft=2)、移除不必要的 chunked-prefill-size 和 disable-flashinfer-autotune 标志。

实现拆解

  1. 新增硬件选项:在 options.hardware.items 中添加 { id: 'h200-fp4', label: 'H200 (FP4)', default: false },使前端交互组件支持选择 H200 FP4 平台。
  2. 定义不兼容 recipe 集合:创建常量 H200_FP4_UNSUPPORTED_RECIPES = new Set(['cp', 'pd-disagg']),标识在该路径下不支持的部署模式(上下文并行和 PD 分离部署)。
  3. 动态过滤 recipe 选项:重写 resolveItems 函数,使其接收当前选中的值 vals,当 hardware === 'h200-fp4'option.name === 'recipe' 时,将不兼容的 recipe 标记为 disabled 并附带原因提示。
  4. 硬件切换时自动回退:修改 handleRadioChange,当切换到 h200-fp4 且当前 recipe 在不兼容集合中时,自动将 recipe 置为 low-latency,避免用户选中无效组合。
  5. 更新命令映射表:在 COMMANDS 对象中添加 h200-fp4|smallh200-fp4|big 的模型路径(使用原始 Hugging Face FP4 检查点)和 TP 配置(Flash: TP=4, Pro: TP=8, 单节点),并在允许的 recipe 集和命令构建分支中增加对应条目。
  6. 更新文档描述:修改 DeepSeek-V4.mdx 的标题描述、硬件兼容性表格和 Hopper 说明,清晰区分 FP4(原始检查点)和 FP8(转换检查点)两种路径。
文件 模块 状态 重要度
docs_new/src/snippets/autoregressive/deepseek-v4-deployment.jsx 部署生成器 modified 7.3
docs_new/cookbook/autoregressive/DeepSeek/DeepSeek-V4.mdx 文档 modified 3.16

关键符号

resolveItems handleRadioChange

关键源码片段

docs_new/src/snippets/autoregressive/deepseek-v4-deployment.jsx core-logic

核心交互组件,新增 h200-fp4 硬件选项,并实现了不兼容 recipe 的禁用和自动回退逻辑。

// 硬件选项列表(部分),新增 h200-fp4 项
const options = {
  hardware: {
    name: "hardware",
    title: "Hardware Platform",
    items: [
      { id: "b200", label: "B200 (FP4)", default: true },
      { id: "b300", label: "B300 (FP4)", default: false },
      { id: "gb200", label: "GB200 (FP4)", default: false },
      { id: "gb300", label: "GB300 (FP4)", default: false },
      { id: "h200", label: "H200 (FP8)", default: false },
      { id: "h200-fp4", label: "H200 (FP4)", default: false }, // 新增
    ],
  },
  // ... modelSize, recipe, reasoningParser, toolcall 保持不变
};// 不支持的 recipe 集合(cp 和 pd-disagg)
const H200_FP4_UNSUPPORTED_RECIPES = new Set(["cp", "pd-disagg"]);// 根据当前硬件动态计算可见的 recipe 列表,禁用不支持的选项
const resolveItems = (option, vals) => {
  if (option.name === "recipe" && vals && vals.hardware === "h200-fp4") {
    // 对 H200 (FP4) 路径禁用不支持的 recipe,并附带原因提示
    return option.items.map((it) =>
      H200_FP4_UNSUPPORTED_RECIPES.has(it.id)
        ? { ...it, disabled: true, disabledReason: "Not supported on H200 (FP4)" }
        : it
    );
  }
  return option.items;
};// 切换硬件时自动回退 recipe 到 low-latency
const handleRadioChange = (optionName, value) => {
  setValues((prev) => {
    const next = { ...prev, [optionName]: value };
    // 切换到 h200-fp4 且当前 recipe 不受支持时,回退到默认低延迟模式
    if (
      optionName === "hardware" &&
      value === "h200-fp4" &&
      H200_FP4_UNSUPPORTED_RECIPES.has(next.recipe)
    ) {
      next.recipe = "low-latency";
    }
    return next;
  });
};

评论区精华

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

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

风险与影响

前端逻辑正确性风险:硬件切换时 recipe 的禁用与回退逻辑依赖状态一致性,若其他部分直接读取 options 而非通过 resolveItems,可能导致选项显示与实际可用性不一致。文档描述可能使用户对 FP4/FP8 路径的功能支持范围产生误解。该变更不涉及后端代码,无性能或安全风险。

用户:获得在 H200 上部署 FP4 模型的新选项,部署命令生成器交互更加完善,不支持的模式会被自动禁用并提示。系统:无后端变更。团队:需要维护额外的部署参数组合,新增的硬件选项会与未来其他硬件或 recipe 变更产生耦合。影响范围:仅涉及 DeepSeek-V4 部署文档页面。

缺少前端测试覆盖 配置耦合

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论