Prhub

#37293 [Cookbook] Add DeepSeek-V4-Flash-Vision-Exp to the DeepSeek-V4 page

原始 PR 作者 zijiexia 合并时间 2026-09-01 05:52 文件变更 8 提交数 3 评论 1 代码增减 +417 / -26

执行摘要

DeepSeek-V4 文档新增 Flash Vision 多模态变体

PR body 的核心诉求是把实验性多模态 checkpoint deepseek-ai/DeepSeek-V4-Flash-Vision-Exp(0731 Flash 基座 + 视觉编码器与 aligner,305B)接入既有 DeepSeek-V4 页面,以 Flash Vision 变体形式呈现,而不是新建独立页面。同时文档需要承载三类关键信息:已验证的 B200 部署形态(4×B200、TP=4、--mem-fraction-static 0.85)与实测 MMMU-Pro 74.96%;未验证矩阵的诚实标注(balanced / high-throughput 为 in-progress);以及引擎支持未发布前的 preview 构建引导(#37253)。

该 PR 属于文档站变更,不涉及引擎运行时,不值得精读;但两个设计决策值得关注:一是“向后兼容的配置解析链扩展”(新键插在链首、旧键顺序不变),作为数据契约演进的范例;二是“验证状态三态治理”(verified / in-progress / pending + warn banner),适合推广到任何带基准数据的文档场景。若后续要改动 cookbook 引擎,务必记住 _deployment.jsx_playground.jsx 需同步修改这一 Mintlify 约束。

讨论亮点

本 PR 几乎没有形成 review 交锋:review_comments_count = 0,唯一 approval(wisclmy0611)为空正文,唯一 issue 评论是 mintlify[bot] 的预览部署通知。值得提炼的讨论点全部来自 PR body 的自述性设计权衡:

  • 镜像解析链为何要动共享引擎:作者说明 Flash Vision 与 Flash / Flash Official 共享 hw / quant / strategy 维度值,旧键位无法把镜像作用域切到变体级,因此新增两级变体键。
  • 双引擎重复维护的架构约束:> Both engines carry the change because the playground duplicates image resolution by design (Mintlify strips shared module state). 这是 Mintlify 平台限制下的刻意取舍,不是冗余代码。
  • 验证数据治理纪律:> recorded as per-cell accuracy on the verified low-latency cell only — the in-progress cells stay on the "pending" state. 只有实测格标 verified,其余用 verificationStatus 三态占位,避免未验证数据冒充已验证。

实现拆解

  1. 配置数据扩展(docs/src/snippets/configs/deepseek-ai/deepseek-v4.jsx):新增 flash-vision 变体(305B · Exp)与 "flash-vision|fp4" 模型映射;在 accuracyLabels 追加 mmmu_pro_pct 指标行;在 benchmarkCommands.accuracy 增加按变体键控的 MMMU-Pro 复现命令(--reasoning-effort max --temperature 1.0 --top-p 0.95);dockerImages 增加 "flash-vision|fp4" 指向 lmsysorg/sglang:dev-dsv4-flash-vision;投机解码面板对 flash-vision 隐藏 EAGLE 预设、禁用 DSpark 并附原因。最后追加部署格:B200 FP4 三策略(low-latency 为 verified: true,其余 verificationStatus: "in-progress"),以及 B300 / GB200 / GB300 / H200 / H100 的 pending 格,所有格带 warn banner 指向 preview 构建与 #37253。

  2. 基准数据(docs/src/snippets/configs/deepseek-ai/deepseek-v4-benchmarks.jsx):新增 Flash Vision 基准条目:B200 low-latency 格记录 sglang_version: "dev-dsv4-flash-vision"accuracy: { mmmu_pro_pct: 74.96 } 与测量条件 notes;其余格空占位。注意 h100 仅配 balanced 一格,与其它硬件三策略齐全不一致(可能是预期,但该硬件缺少 low-latency / high-throughput 入口)。

  3. 共享引擎镜像解析链(docs/src/snippets/_deployment.jsx 与 _playground.jsx):两处同一逻辑——镜像选择从 hw|quant|strategy → hw|quant → hw 扩展为 hw|variant|quant → variant|quant → hw|quant|strategy → hw|quant → hw。原因是 Flash Vision 与 Flash 等在 hw / quant / strategy 维度取值相同,旧键位无法表达“同一格子的不同镜像”;新键插在链首,历史配置(无 variant 键)解析结果逐字节不变。两个引擎必须同步改,因为 Mintlify 剥离共享模块状态,playground 只能复制一份解析逻辑。

  4. 页面正文(docs/cookbook/autoregressive/DeepSeek/DeepSeek-V4.mdx):Deploy 面板上方加 <Note> 预告 preview 镜像;§1 变体表与资源行增加 Flash Vision;#vision-note 锚点章节说明 preview 构建、span 对齐 chunked prefill 与 radix-cache 行为、shared-experts fusion 自动关闭、target-only 投机、以及评测 max_tokens 提示;§3.4 补 DSpark 说明;§3.5 增加视觉 image-input 示例(输出待补)。

  5. 配套技能文档(.claude/skills/cookbook-add-model)config.jsx.tmpl 注释、SKILL.mdauthoring-reference.md 同步五级镜像键契约,并重申“询问作者实际构建、不要猜 release 标签”,把本次 PR 学到的模式沉淀为可复用技能。

测试与验证配套:无自动化测试文件;PR body 报告 mint validatemint broken-links 通过,并在 mint dev 下手工冒烟 badge 状态、镜像解析、精度卡作用域、playground 门控与锚点链接。

文件 模块 状态 重要度
docs/src/snippets/configs/deepseek-ai/deepseek-v4.jsx 配置数据 modified 7.12
docs/src/snippets/configs/deepseek-ai/deepseek-v4-benchmarks.jsx 基准数据 modified 6.03
docs/src/snippets/_deployment.jsx 部署引擎 modified 5.83
docs/src/snippets/_playground.jsx 沙盒引擎 modified 5.89
docs/cookbook/autoregressive/DeepSeek/DeepSeek-V4.mdx 页面正文 modified 4.97
.claude/skills/cookbook-add-model/templates/config.jsx.tmpl 技能模板 modified 3.88
.claude/skills/cookbook-add-model/SKILL.md 技能文档 modified 2.63
.claude/skills/cookbook-add-model/references/authoring-reference.md 技能文档 modified 2.5

关键符号

Deployment Playground config (deepseek-v4.jsx) benchmarks (deepseek-v4-benchmarks.jsx)

关键源码片段

docs/src/snippets/configs/deepseek-ai/deepseek-v4.jsx core-logic

本 PR 的核心配置数据文件:新增 flash-vision 变体、模型映射、preview 镜像键、MMMU-Pro 指标与复现命令、投机解码门控,以及 B200 / B300 / GB200 / GB300 / H200 / H100 的部署格。

// ===== Flash Vision (Exp) 相关配置摘录(deepseek-v4.jsx) =====
// 变体表:新增 305B 实验性多模态条目(0731 Flash 基座 + 视觉编码器)。
variants: [
  { id: "flash", label: "Flash", subtitle: "284B" },
  { id: "flash-official", label: "Flash Official", subtitle: "284B · 0731" },
  { id: "flash-vision", label: "Flash Vision", subtitle: "305B · Exp" },
  { id: "pro", label: "Pro", subtitle: "1.6T" },
  { id: "pro-official", label: "Pro Official", subtitle: "1.6T · 0813" },
],
// 模型映射:该变体只发布 FP4 量化,直接指向官方实验 checkpoint。
modelNames: {
  "flash-vision|fp4": "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp",
},
// 专属 preview 镜像:引擎支持尚未进入 release(见 sgl-project/sglang#37253),
// 由镜像解析链保证只有 Flash Vision 格命中它;其余硬件键保持 `:latest`。
dockerImages: {
  "flash-vision|fp4": "lmsysorg/sglang:dev-dsv4-flash-vision",
},
// 投机解码门控:checkpoint 自带 DSpark draft head,但“图像批次 + 投机解码”
// 尚未验证,因此 EAGLE 预设对该变体隐藏、DSpark 禁用,配方一律 target-only。
"mtp-314": { hide: { variant: ["flash-official", "flash-vision", "pro-official"] } },
dspark: {
  disable: [
    { when: { variant: ["flash-vision"] },
      reason: "The Flash Vision checkpoint bundles a DSpark head, but speculative decoding is not yet verified with image inputs — the cookbook recipes run target-only for now." },
  ],
},
// B200 + FP4 low-latency 格:唯一端到端验证的部署形态(4×B200、TP=4)。
{
  match: { hw: "b200", variant: "flash-vision", quant: "fp4", strategy: "low-latency", nodes: "single" },
  verified: true,
  warn: "DeepSeek-V4-Flash-Vision-Exp support has not shipped in an SGLang release yet (sglang PR 37253): Docker mode already points at the preview image; for Python mode install SGLang from that PR. See [Flash Vision notes](#vision-note).",
  flags: ["--model-path {{MODEL_NAME}}", "--tp 4", "--mem-fraction-static 0.85", "--host {{HOST_IP}}", "--port {{PORT}}"],
},
docs/src/snippets/configs/deepseek-ai/deepseek-v4-benchmarks.jsx core-logic

基准数据入口:为 Flash Vision 各格新增基准条目,只有已实测的 B200 low-latency 格携带精度与 sglang 版本,其余占位待终验。

// ===== B200 + FP4 — Flash Vision (Exp) 基准条目(deepseek-v4-benchmarks.jsx) =====
// 只有 low-latency 格带实测数据:MMMU-Pro (standard, 10-option) 74.96%,
// 测量条件与 sglang 构建版本一并记录,保证可复现;其余格先占位,待终验后翻转。
{
  match: { hw: "b200", variant: "flash-vision", quant: "fp4", strategy: "low-latency", nodes: "single" },
  sglang_version: "dev-dsv4-flash-vision",
  accuracy: { mmmu_pro_pct: 74.96 },
  notes: "MMMU-Pro (standard, 10-option) measured with sgl-eval on 4×B200 (TP=4) at temperature 1.0, top-p 0.95, --reasoning-effort max.",
},
// balanced / high-throughput 与其它硬件(B300 / GB200 / GB300 / H200 / H100)
// 均为 pending 占位;h100 目前只配 balanced 一格,与其他硬件三策略齐全不一致。
{ match: { hw: "b200", variant: "flash-vision", quant: "fp4", strategy: "balanced", nodes: "single" } },
{ match: { hw: "b200", variant: "flash-vision", quant: "fp4", strategy: "high-throughput", nodes: "single" } },
{ match: { hw: "h100", variant: "flash-vision", quant: "fp4", strategy: "balanced", nodes: "single" } },
docs/src/snippets/_deployment.jsx core-logic

共享部署引擎:Docker 镜像解析链扩展出变体级键位,是让 Flash Vision 命中 preview 镜像、同时保持其它 cookbook 向后兼容的关键逻辑改动。

// ===== Docker 镜像解析链(_deployment.jsx;_playground.jsx 为同一逻辑的副本) =====
// 解析优先级从具体到宽泛:命中第一个存在的键即返回。
// 新增的 ``hw|variant|quant`` 与 ``variant|quant`` 两级,用于“同一硬件 / 量化下,
// 某个 checkpoint 变体需要专属镜像”的场景(如 Flash Vision 的 preview 构建);
// 原有 ``hw|quant|strategy → hw|quant → hw`` 链放在其后,保证不带 variant 键的
// 历史配置解析结果与改动前完全一致。
const di = config.dockerImages || {};
const image = di[`${sel.hw}|${sel.variant}|${sel.quant}`] // 例 : "b200|flash-vision|fp4"
  || di[`${sel.variant}|${sel.quant}`] // 例 : "flash-vision|fp4"(跨硬件共享镜像)
  || di[`${sel.hw}|${sel.quant}|${sel.strategy}`] // 原有策略级键(如 spec-decoding preview 镜像)
  || di[`${sel.hw}|${sel.quant}`] // 原有“硬件 + 量化”键
  || di[sel.hw] // 原有硬件级键
  || "lmsysorg/sglang:dev"; // 兜底 dev 镜像

评论区精华

无实质 review 评论,仅 bot 预览与 APPROVE other

PR 的 review_comments 为 0,唯一 issue 评论是 mintlify[bot] 的预览部署通知;wisclmy0611 以空正文 APPROVED,说明该文档改动未引发技术分歧。

结论:设计权衡均由作者在 PR body 中自述并被接受。 · 已解决

playground 与 deployment 镜像解析逻辑必须双份维护 设计

PR body 说明两个引擎都带上同一改动:Both engines carry the change because the playground duplicates image resolution by design (Mintlify strips shared module state)。这是 Mintlify 平台约束下的刻意设计,而非冗余代码。

结论:接受该架构约束;后续任何镜像解析变更都要同步修改两处。 · 已解决

风险与影响

  1. 共享引擎回归面_deployment.jsx / _playground.jsx 被所有 cookbook 页面复用。新键插在解析链首,理论上对不带 variant 键的存量配置向后兼容;但若某现存配置恰好定义了 variant|quanthw|variant|quant 键(此前为永不命中的死键),行为会变化,建议对其它 cookbook 页面做一次镜像解析冒烟回归。
  2. 全局指标行扩容mmmu_pro_pct 加入 accuracyLabels 后,Flash / Pro 等没有该数据的变体,基准卡也会渲染该行,可能出现空值或 N/A,需要确认渲染层对缺失精度的处理。
  3. 数据不对称:h100 的 flash-vision 只有 balanced 一格(cells 与 benchmarks 均如此),而 b200 / b300 / gb200 / gb300 / h200 三策略齐全;h100 缺少 low-latency / high-throughput 入口,用户按 h100 查找时入口不完整。
  4. 依赖未发布引擎:所有 Flash Vision 格依赖 #37253;Python 模式命令要求用户自行安装 PR 分支,若照抄到 release 环境会失败(warn banner 已缓解)。#37253 合入并发布后,需要把 preview 镜像统一替换回 :latest,这是明确的后续维护项。
  5. 本 PR 不含任何引擎运行时代码,不影响 SGLang 服务稳定性。

用户侧:Flash Vision 用户可获得已实测的 B200 部署命令、MMMU-Pro 74.96% 精度锚点与复现命令;未验证矩阵以 in-progress / pending 状态透明呈现,降低误用风险。系统侧:只影响文档站(Mintlify)构建与渲染,mint validate / broken-links 通过;镜像解析链变更对所有 cookbook 页面生效,是共享基础设施的一次数据契约扩展。团队侧:cookbook-add-model 技能模板同步升级,未来新增“同页变体”模型成本下降;同时确立了一套“未验证先占位、验证后翻转”的文档数据治理模式,对 cookbook 自动化长期演进有价值。

依赖未发布引擎支持 共享引擎解析链改动需回归 全局指标行扩容 验证状态数据不对称

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论