Prhub

#24367 [docs] Update B300 Pro cookbook with accuracy-verified serving configs

原始 PR 作者 yhyang201 合并时间 2026-05-05 14:26 文件变更 1 提交数 1 评论 3 代码增减 +108 / -11

执行摘要

为 B300 Pro 更新准确性验证的部署配置

PR body 说明需要更新 DeepSeek-V4 cookbook 中 B300 Pro 的部署命令,使用基于 SimpleQA-Verified(1000 个事实 QA 样本)验证的配置,确保准确度达到官方 57.9% Pass@1 基准(±2% 内)。

值得精读,特别是条件逻辑和准确性验证方法。建议关注 review 中未解决的条件范围问题,确保配置只针对目标硬件。设计决策中基于 SimpleQA 验证配置的方法值得借鉴。

讨论亮点

gemini-code-assist[bot] 在 review 中指出两个条件过于宽泛的问题:

  • 第 477 行附近:hardware !== "h200" 条件导致 GB200、GB300 和 B200 small 也接受了为 B200 big 设计的 chunked-prefill-size 和 swa-full-tokens-ratio,与 PR 摘要所述不符。建议改为仅当 isBig && hardware === "b200" 时应用。
  • 第 483 行附近:类似地,mem-fraction-static 的条件从 isBig 直接改为对非 H200 硬件都应用 0.90,影响了 GB200 和 GB300。建议使用 isBig && hardware === "b200"
    这些评论未得到解决即合并,表明风险已接受或后续修复。

实现拆解

  1. 在 JSX 组件的环境变量生成部分(recipeEnv),针对 B200|big 硬件在三个配方中分别添加了不同的准确性验证环境变量集合。
    - Low Latency:添加 SGLANG_JIT_DEEPGEMM_PRECOMPILE=0 等 6 个变量。
    - Balanced:添加 13 个变量,包括禁用 deepgemm mega moe、启用 fast mask ep、固定 dispatch-token 上限等。
    - Max Throughput:添加 13 个变量,启用 deepgemm mega moe 并设置 token 上限 8320,同时添加 NVSHMEM_DISABLE_IB=1 和 SWA 锁释放等优化。
  2. 在标志生成部分(flags)调整了三个配方的参数:
    • Low Latency:chunked-prefill-size 从 4096 改为 big 时 8192,small 保持 4096;mem-fraction-static 从 0.88 改为 0.90(big);添加 swa-full-tokens-ratio 0.1(big)。
    • Balanced:将 MoE runner backend 从 deepep 改为 flashinfer_mxfp4(仅 B200 big);chunked-prefill-size 设为 32768;mem-fraction-static 从 0.82 改为 0.92;cuda-graph-max-bs 从 64 改为 256;添加 swa-full-tokens-ratio 0.1。
    • Max Throughput:mem-fraction-static 从 0.82 改为 0.835;cuda-graph-max-bs 从 64 改为 544;chunked-prefill-size 设为 65536;tokenizer-worker-num 设为 8;启用 prefill-delayer;添加 swa-full-tokens-ratio 0.075。
  3. 在生成的命令注释中添加 # flags will be simplified 提示,并附带 MegaMoE 使用说明的新段落。
文件 模块 状态 重要度
docs_new/src/snippets/autoregressive/deepseek-v4-deployment.jsx 部署配置 modified 7.43

关键符号

simplifyNote

关键源码片段

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

核心变更文件,为 B300 Pro 添加准确性验证的配置环境变量和标志,并调整多个配方分支。

// Balanced 配方环境变量设置(B200/B300 Pro 专用)
if (recipe === "balanced") {
  if (hardware === "h200") {
    // H200:根据大小设置 dispatch-token 上限
    recipeEnv.push(isBig
      ? "SGLANG_DEEPEP_NUM_MAX_DISPATCH_TOKENS_PER_RANK=128"
      : "SGLANG_DEEPEP_NUM_MAX_DISPATCH_TOKENS_PER_RANK=256");
  } else if (isBig && hardware === "b200") {
    // B200/B300 Pro 经过 SimpleQA 验证的环境变量(提升准确度并优化 MegaMoE)
    recipeEnv.push(
      "SGLANG_JIT_DEEPGEMM_PRECOMPILE=0", // 避免预编译
      "SGLANG_OPT_SWA_SPLIT_LEAF_ON_INSERT=1", // SWA 叶节点分离
      "SGLANG_OPT_USE_JIT_NORM=1", // JIT 归一化
      "SGLANG_OPT_USE_JIT_INDEXER_METADATA=1", // JIT 索引元数据
      "SGLANG_OPT_USE_TOPK_V2=1", // TopK v2 实现
      "SGLANG_OPT_USE_CUSTOM_ALL_REDUCE_V2=1", // 自定义 AllReduce v2
      "SGLANG_OPT_SWA_EVICT_DROP_PAGE_MARGIN=1", // SWA 逐出优化
      "SGLANG_OPT_USE_DEEPGEMM_MEGA_MOE=0", // 禁用 deepgemm mega moe
      "SGLANG_OPT_FIX_HASH_MEGA_MOE=0", // 修复 hash mega moe
      "SGLANG_OPT_USE_FAST_MASK_EP=1", // 快速 mask EP
      "SGLANG_OPT_FIX_MEGA_MOE_MEMORY=1", // 修复 mega moe 内存
      "SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK=4096", // token 上限
      "SGLANG_OPT_FIX_NEXTN_MEGA_MOE=1", // 修复 NextN mega moe
      "SGLANG_DEEPEP_NUM_MAX_DISPATCH_TOKENS_PER_RANK=0", // 禁用 DeepEP 调度
    );
  } else {
    // 其他 Blackwell 硬件(小 B200、GB200、GB300)使用统一设置
    recipeEnv.push(isBig
      ? "SGLANG_DEEPEP_NUM_MAX_DISPATCH_TOKENS_PER_RANK=256"
      : "SGLANG_DEEPEP_NUM_MAX_DISPATCH_TOKENS_PER_RANK=1024");
  }
}
// Low Latency 配方标志调整(针对 B300 Pro 优化)
if (recipe === "low-latency") {
  // ... 其他标志 ...
  flags.push("  --speculative-eagle-topk 1");
  flags.push("  --speculative-num-draft-tokens 4");  // 注意:hardware !== "h200" 条件可能过宽,影响其他 Blackwell 硬件
  if (hardware !== "h200") {
    // B200/B300 Pro 准确性验证:big 使用 8192,small 保持 4096
    flags.push(isBig
      ? " --chunked-prefill-size 8192"
      : " --chunked-prefill-size 4096");
    flags.push("  --disable-flashinfer-autotune");
    // 对 big 场景设置 SWA 全 tokens 比例 0.1
    flags.push(isBig ? " --swa-full-tokens-ratio 0.1" : "");
  }  if (isBig) {
    // mem-fraction-static 从 0.88 提升到 0.90(B300 Pro 已验证)
    flags.push(" --mem-fraction-static 0.90");
  }
}

评论区精华

条件 `hardware !== "h200"` 范围过宽 正确性

gemini-code-assist[bot] 指出第 477 行条件 `hardware !== "h200"` 会让 GB200、GB300 和 B200 small 错误应用 B300 Pro 的 chunked-prefill-size 和 swa-full-tokens-ratio 配置,与 PR 目标不符。

结论:建议改为 `isBig && hardware === "b200"`,但 PR 合并时未采纳该建议。 · unresolved

mem-fraction-static 条件也需限制 正确性

同样的条件范围问题出现在 mem-fraction-static 设置行(约第 483 行),导致 GB200、GB300 也被设置为 0.90。建议使用 `isBig && hardware === "b200"`。

结论:建议未采纳,PR 合并时条件未改。 · unresolved

风险与影响

主要风险:条件 hardware !== "h200" 过于宽泛,可能导致 GB200、GB300 甚至 B200 small 错误应用为 B300 Pro 设计的配置,影响这些硬件的准确性和性能。此外,环境变量和参数依赖 JIT 优化和特定运行时行为,若底层实现变更可能导致配置失效。文档本身没有自动化测试,配置错误不易提前发现。

影响用户:B300 Pro 用户获得经过准确性验证的推荐配置,可提升部署信心;非 B300 Pro 用户(如 GB200、GB300)可能因条件宽泛而受到配置错误影响,但概率较低。影响范围:仅一个文档 JSX 文件,但生成命令被实际使用。影响程度:中等,配置直接影响模型服务准确性和性能。

条件范围过宽 无测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论