Prhub

#35121 docs(cookbook): add Qwen3.8-27B DGX Spark configs

原始 PR 作者 Jiminator 合并时间 2026-08-18 06:04 文件变更 2 提交数 7 评论 4 代码增减 +44 / -21

执行摘要

DGX Spark 复用 RTX PRO 6000 配方并完成 36 项验证

PR body 指出三个 DGX Spark cell 承载了定制 SM121 运行点,但同一注释却声称 "Unvalidated on SM121 / aarch64";定制设置没有测量依据,其中 --disable-prefill-cuda-graph 在 #34863 引入时,同一注释就声明该配方未验证。同时两个平台同属 SM12x Blackwell 架构,且 GB10 的 128GB 统一内存大于 RTX PRO 6000 的 96GB,"a recipe that fits the smaller card has headroom on the larger one",因此复用更合理的配方。

这个 PR 值得精读。它展示了文档/配置类变更如何以真实硬件实测为支撑,并在 review 中坚持验证口径诚实;"弱验证标准明确声明、不借用强验证措辞"的做法尤其值得借鉴。关注 @Jiminator 对误导性注释的 re-audit 和 @zijiexia 对陈述准确性的把关。

讨论亮点

主要讨论集中在文档陈述的准确性与诚实性:

  • zijiexia 指出 Deploy 面板 Note(第 59-65 行)仍宣称非默认 overlay 选择 "valid but unmeasured",与该 PR 翻转到 Verified 的徽章直接矛盾,要求 DGX Spark 单独成句,因为 5090/6000 的验证含吞吐量数字,而本轮仅是并发 1 的 boot-and-serve。
  • Jiminator 在 91dcdd7 修复:Note 为 DGX Spark 增加独立条款,明确 "no throughput or acceptance-length numbers taken";同时清理了源码注释中 "Still unvalidated on / VALIDATED" 自相矛盾的相邻行,以及 FP8 cell 注释错误指向 "the BF16 cell above" 的引用。
  • 后续 re-audit(0141367)又发现 cells[] 头部注释仍写着 "DGX Spark stays unverified",一并修正为指向 cell 块的新验证标准,确保两文件无残留的 unvalidated/unverified 声明。

实现拆解

变更按以下步骤推进:

  1. 替换部署配方(docs/src/snippets/configs/Qwen/qwen3.8-27b.jsx):将 DGX Spark 三个 cell(NVFP4 / FP8 / BF16)的 flags 从 --mem-fraction-static 0.95--chunked-prefill-size 8192--disable-prefill-cuda-graph 改为 RTX PRO 6000 的 0.852048、移除该 flag,使两个 SM12x 平台共享同一条命令;每个 cell 补充实测说明并设置 verified: true

  2. 更新验证元信息注释:把 DGX Spark stays unverified 改为 measured across its whole overlay envelope ... to a weaker standard (boot-and-serve only),消除与徽章的对立;后续 re-audit 又修正了 cells[] 头部注释残留的 unverified 声明。

  3. 同步文档正文(docs/cookbook/autoregressive/Qwen/Qwen3.8-27B.mdx):Deploy 面板 Note 为 DGX Spark 增加独立条款,声明 boot-and-serve 弱验证标准;§2 平台说明删除 8192 chunk 特例描述,补充 GB10 复现注意事项(Docker GPU 访问为 CDI-only、nvidia-smi 不支持统一内存查询、改用 /proc/meminfoMemAvailable 判断)。

  4. 校验与验证:本地执行 node docs/scripts/check_cookbook_configs.mjs 通过;全部 36 个配置在真实硬件上 boot-and-serve 成功后才翻转 verified 徽章。无专门自动化测试变更,验证依赖实测。

文件 模块 状态 重要度
docs/src/snippets/configs/Qwen/qwen3.8-27b.jsx 部署面板 modified 5.82
docs/cookbook/autoregressive/Qwen/Qwen3.8-27B.mdx 部署文档 modified 3.42

关键源码片段

docs/src/snippets/configs/Qwen/qwen3.8-27b.jsx core-logic

核心变更文件:DGX Spark 三个 cell 的部署命令从定制 SM121 运行点改为逐字复用 RTX PRO 6000 配方,并基于 36 项实测标记 verified。

// DGX Spark (GB10, SM121):单节点,128GB 统一内存与 CPU 共享。
// 这些 cell 复用 RTX PRO 6000 配方,而不使用独立的 SM121 运行点:
// 两块卡同属 SM12x Blackwell,且 GB10 的 128GB 大于 6000 的 96GB,
// 小卡能跑通的配方在大卡上有余量。
//
// 已在 GB10 (SM121 / aarch64) 上验证:全部 36 个配置均完成 boot-and-serve
// (ISL 8192 / OSL 1024,并发 1)。这比 SM120 那对的验证标准弱——没有
// 吞吐量或接受长度数字——Deploy 面板的 Note 也如此声明。
{
  match: { hw: "dgx-spark", variant: "default", quant: "nvfp4", nodes: "single" },
  // 12 个 overlay 组合全部在 GB10 上服务成功;DSPARK 还覆盖了该
  // checkpoint 量化的 4-bit lm_head,未出现形状错误。
  verified: true,
  env: [],
  flags: [
    '--trust-remote-code',
    '--model-path {{MODEL_NAME}}',
    '--kv-cache-dtype fp8_e4m3',
    // 0.85 是统一内存池比例,与主机 OS / 页缓存共享,权衡不同于专用显存
    '--mem-fraction-static 0.85',
    '--attention-backend flashinfer',
    // 2048 与 RTX PRO 6000 一致;不再使用 8192 与 --disable-prefill-cuda-graph
    '--chunked-prefill-size 2048',
    '--reasoning-parser qwen3',
    '--tool-call-parser qwen3_coder',
    '--host {{HOST_IP}}',
    '--port {{PORT}}',
  ],
},

评论区精华

Deploy 面板 Note 与 Verified 徽章矛盾 documentation

zijiexia 指出第 186 行改动与 Deploy 面板 Note(59-65 行)矛盾:Note 仍说其他平台非默认 overlay 选择 "valid but unmeasured",旁边却是本 PR 翻转为 Verified 的徽章。要求 DGX Spark 单独成句,因为 5090/6000 的验证含吞吐量数字,本轮只是 boot-and-serve。

结论:Jiminator 在 91dcdd7 中为 DGX Spark 增加独立条款,明确 weaker standard(boot-and-serve,无吞吐量 / 接受长度数字),并同步 §2 措辞,避免同一声明出现两种强度。 · 已解决

代码注释误导性清理 style

zijiexia 在总结审阅中要求清理误导性注释;具体包括 DGX Spark 块注释中 "Still unvalidated on / VALIDATED" 自相矛盾的相邻行,以及 FP8 cell 注释错误指向 "the BF16 cell above"。

结论:Jiminator 在 91dcdd7 与 0141367 两轮修复中纠正了这些注释,并全量扫描两文件确认无残留 unvalidated/unverified/in-progress 声明,check_cookbook_configs.mjs 通过。 · 已解决

风险与影响

  • 验证口径偏弱:36/36 仅为并发 1 的 boot-and-serve,无吞吐量与接受长度数据,文档却展示 Verified 徽章;读者可能高估 DGX Spark 性能,需要依赖 Note 的弱标准声明来纠偏。
  • 统一内存与专用显存差异:0.85 比例基于与主机 OS / 页缓存共享的 128GB 统一池,PR body 明确 "it is not a strictly-safer setting in every respect",极端内存负载下可能不足。
  • 启动延迟上升:移除 --disable-prefill-cuda-graph 后,prefill graph 后端从 disabled 变为 breakable,GB10 上启动多付 54.09s capture 时间,对频繁重启的部署有影响。
  • EAGLE + bfloat16 状态精度风险:引擎会告警 closed-loop fold 重量化可能导致长序列漂移,该 caveat 未写入 §2,等待后续跟进。
  • 文档配置直接影响用户部署命令:错误配方会被直接复制使用,属于低代码风险、高用户影响。

对用户:部署到 DGX Spark 的命令发生变化,新用户可按验证过的配方开箱即用;旧配方(0.95 / 8192 / 禁 graph)不再展示。对系统:无运行时代码改动,不影响引擎行为。对团队:确立 cookbook 验证标准分层(全量测量 vs boot-and-serve)的先例,并为多平台配方复用提供了"同架构家族 + 内存余量"的决策范式;两个 SM12x 平台今后只需维护一条命令,降低维护成本。

验证口径偏弱(boot-and-serve) 统一内存与显存权衡差异 启动 capture 延迟 +54s EAGLE+bfloat16 精度漂移未文档化

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论