Skip to content

Update GB300 DeepSeek V4.1 Flash vLLM nightly / 更新 GB300 DeepSeek V4.1 Flash vLLM nightly - #3396

Draft
xinli-sw wants to merge 1 commit into
mainfrom
config/dsv41flash-gb300-vllm-nightly
Draft

xinli-sw wants to merge 1 commit into
mainfrom
config/dsv41flash-gb300-vllm-nightly

Conversation

@xinli-sw

Copy link
Copy Markdown
Collaborator

Pin the GB300 DeepSeek-V4.1-Flash AgentX arm to vLLM nightly 0961bbae. Enable the merged Blackwell sparse indexer settings and select FlashInfer at TP2, MegaAttention at TP4. Preserve the existing topology and memory limits. Also pass the engine readiness timeout from the launcher where needed.

The vLLM tracking issue and upstream recipe document the included changes. Local shell, YAML, and exact-key matrix checks pass; GPU sweep and eval are pending.

中文

将 GB300 DeepSeek-V4.1-Flash AgentX 配置固定到 vLLM nightly 0961bbae。启用已合并的 Blackwell 稀疏索引器参数,TP2 选择 FlashInfer,TP4 选择 MegaAttention;保留现有拓扑与显存限制,并由启动脚本传入所需的引擎就绪超时。

相关改动见 vLLM 跟踪问题 与上游配方。本地 shell、YAML 和指定配置的矩阵检查通过;GPU sweep 与 eval 待运行。

@github-actions

Copy link
Copy Markdown
Contributor

Thanks for the contribution!

  • Review: If this PR changes files owned by someone other than a repository admin or @SemiAnalysisAI/core, ask one eligible CODEOWNER to complete the latest PR_REVIEW_CHECKLIST.md before contacting a core maintainer on Slack. Follow the template exactly, including As a PR reviewer and CODEOWNER, I have reviewed this and have, so sign-off verification triggers.
  • PR verification: Sweeps only run on labeled PRs. Add full-sweep-fail-fast (strongly recommended); use full-sweep-enabled only when matrix jobs should continue after a failure.
  • After merging: PR authors must ensure all GitHub Actions jobs pass. Transient failures often pass on rerun; see how to rerun failed jobs.
中文

感谢你的贡献!

  • **审阅:**如果 PR 修改的文件归属于仓库管理员及 @SemiAnalysisAI/core 之外的 CODEOWNER,请先联系一位有资格的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,再通过 Slack 联系核心维护者。必须严格遵循模板,并保留 As a PR reviewer and CODEOWNER, I have reviewed this and have,才能触发签核验证。
  • **PR 验证:**扫描仅在带有标签的 PR 上运行。强烈建议添加 full-sweep-fail-fast;仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled。
  • **合并后:**PR 作者必须确保所有 GitHub Actions 任务通过。临时性失败通常可以通过重新运行恢复;参见重新运行失败任务的说明。

@xinli-sw
xinli-sw marked this pull request as ready for review September 23, 2026 17:53
@xinli-sw
xinli-sw requested a review from a team September 23, 2026 17:53
@claude

claude Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @xinli-sw's task in 4m 3s —— View job


Review of PR #3396

  • Gather context (diff, changed files, repo guidelines)
  • Review benchmarks/single_node/agentic/dsv41flash_fp4_vllm_mtp.sh changes
  • Validate configs/nvidia-master.yaml image and perf-changelog.yaml entry position
  • Post review

One 🔴 BLOCKING issue (inline on benchmarks/single_node/agentic/dsv41flash_fp4_vllm_mtp.sh:80-91): the new --attention-config / --kv-cache-dtype fp8 block is gated on GPU_MEM_MIB >= 150000, but dsv41flash_fp4_b200_vllm_mtp.sh and dsv41flash_fp4_gb200_vllm_mtp.sh are symlinks to this shared script and both SKUs clear that threshold. The B200 and GB200 vLLM arms remain pinned to nightly-cd10ed6f (2026-09-15), which predates the "merged Blackwell sparse indexer settings" this PR targets, so they would likely fail at vllm serve argument parsing. Even if the older nightly accepted the flags, their recipes change without a perf-changelog.yaml entry for those config keys. Suggested fix: opt in via an env var exported from runners/launch_gb300-nv.sh (same pattern as VLLM_SAFETENSORS_LOAD_STRATEGY), or re-pin B200/GB200 and document them in the changelog. Fix this →

Other checks passed: configs/nvidia-master.yaml and perf-changelog.yaml are edited together, the new changelog entry is appended at the tail of the file, the image is a public Docker Hub tag, and the TP2/TP4 backend selection matches the PR description. Note that I could not reach the upstream vLLM source or tracking issue from this session (network fetches were not permitted), so the claim that cd10ed6f lacks the new keys is inferred from the PR description and the pin dates rather than verified against the code.
· Branch

Comment on lines +80 to +91
# Sparse indexer logits are opt-in in the upstream Blackwell recipe. This
# shared script also serves H200, where these SM100 backends are unsupported.
# TP2 uses FlashInfer; TP4 uses MegaAttention. fp8 resolves backend KV layout.
ATTENTION_ARGS=()
if (( GPU_MEM_MIB >= 150000 )); then
if (( TP == 2 )); then
ATTENTION_CONFIG='{"backend":"FLASHINFER_MLA_SPARSE_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
else
ATTENTION_CONFIG='{"backend":"FLASHMLA_MEGA_ATTN_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
fi
ATTENTION_ARGS=(--attention-config "$ATTENTION_CONFIG" --kv-cache-dtype fp8)
fi

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 BLOCKING: This gate is not GB300-specific. dsv41flash_fp4_b200_vllm_mtp.sh and dsv41flash_fp4_gb200_vllm_mtp.sh are symlinks to this file, and both B200 (~183 GB) and GB200 pass GPU_MEM_MIB >= 150000, so dsv41flash-fp4-b200-vllm-agentic-dspark and dsv41flash-fp4-gb200-vllm-agentic-dspark also start receiving --attention-config {FLASHINFER_MLA_SPARSE_DSV41 | FLASHMLA_MEGA_ATTN_DSV41, indexer_kv_dtype=mxfp4, indexer_sparse_logits=true} --kv-cache-dtype fp8. The comment above only accounts for H200.

Why it matters: Those two arms stay pinned to vllm/vllm-openai:nightly-cd10ed6f (2026-09-15), while the PR describes these as newly merged Blackwell settings landing in the 2026-09-22 nightly. vLLM's AttentionConfig rejects unknown keys and resolves backend through the AttentionBackendEnum name, so an older image that lacks indexer_sparse_logits, the mxfp4 indexer dtype, or the *_DSV41 backend names fails at vllm serve argument parsing and the whole B200/GB200 grid goes red. Even if the old nightly did accept them, this silently changes the B200/GB200 recipe (fp8 KV cache, MXFP4 indexer KV, different attention backends) while perf-changelog.yaml only lists the GB300 config key, which violates the AGENTS.md rule that every perf-affecting recipe change needs a changelog entry for the affected configs. (I could not reach the upstream vLLM source from this session to confirm which nightly introduced the keys, so please verify against cd10ed6f if you intend to keep the memory gate.)

Fix: Opt in from the GB300 launcher instead of inferring from GPU memory, following the existing VLLM_SAFETENSORS_LOAD_STRATEGY pattern in this script. Add export DSV41_SPARSE_INDEXER_LOGITS=1 next to export VLLM_ENGINE_READY_TIMEOUT_S=7200 in runners/launch_gb300-nv.sh (line 130), and gate here on that variable:

Suggested change
# Sparse indexer logits are opt-in in the upstream Blackwell recipe. This
# shared script also serves H200, where these SM100 backends are unsupported.
# TP2 uses FlashInfer; TP4 uses MegaAttention. fp8 resolves backend KV layout.
ATTENTION_ARGS=()
if (( GPU_MEM_MIB >= 150000 )); then
if (( TP == 2 )); then
ATTENTION_CONFIG='{"backend":"FLASHINFER_MLA_SPARSE_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
else
ATTENTION_CONFIG='{"backend":"FLASHMLA_MEGA_ATTN_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
fi
ATTENTION_ARGS=(--attention-config "$ATTENTION_CONFIG" --kv-cache-dtype fp8)
fi
# Sparse indexer logits are opt-in in the upstream Blackwell recipe. This
# shared script also serves H200, B200 and GB200; H200 lacks these SM100
# backends and the B200/GB200 arms pin an older nightly, so the GB300
# launcher opts in explicitly via DSV41_SPARSE_INDEXER_LOGITS=1.
# TP2 uses FlashInfer; TP4 uses MegaAttention. fp8 resolves backend KV layout.
ATTENTION_ARGS=()
if [[ "${DSV41_SPARSE_INDEXER_LOGITS:-0}" == "1" ]]; then
if (( TP == 2 )); then
ATTENTION_CONFIG='{"backend":"FLASHINFER_MLA_SPARSE_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
else
ATTENTION_CONFIG='{"backend":"FLASHMLA_MEGA_ATTN_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
fi
ATTENTION_ARGS=(--attention-config "$ATTENTION_CONFIG" --kv-cache-dtype fp8)
fi

Alternatively, if the intent is for B200 and GB200 to adopt the same settings, re-pin both to nightly-0961bbae in configs/nvidia-master.yaml and add their config keys and the recipe change to the perf-changelog.yaml entry.

Comment on lines +83 to +90
ATTENTION_ARGS=()
if (( GPU_MEM_MIB >= 150000 )); then
if (( TP == 2 )); then
ATTENTION_CONFIG='{"backend":"FLASHINFER_MLA_SPARSE_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
else
ATTENTION_CONFIG='{"backend":"FLASHMLA_MEGA_ATTN_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
fi
ATTENTION_ARGS=(--attention-config "$ATTENTION_CONFIG" --kv-cache-dtype fp8)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 This script is symlinked to by dsv41flash_fp4_b200_vllm_mtp.sh and dsv41flash_fp4_gb200_vllm_mtp.sh too, so the new ATTENTION_ARGS block also fires for those arms, not just GB300. GPU_MEM_MIB>=150000 is true on B200 (180GB) and GB200 (256GB) as well as GB300, but only the gb300-vllm-agentic-dspark image was bumped; b200 and gb200 still pin vllm/vllm-openai:nightly-cd10ed6f9f6b37a8ace9cf380007e66fe12ec0c3, the same build documented as lacking these SM100 sparse-indexer backends on H200. Passing --attention-config with FLASHINFER_MLA_SPARSE_DSV41/FLASHMLA_MEGA_ATTN_DSV41 and --kv-cache-dtype fp8 to that older image will likely fail vllm serve startup, breaking the b200 and gb200 agentic-coding benchmark runs. …

Why this was flagged

…Fix: gate ATTENTION_ARGS on the image/nightly actually shipping this feature (e.g. per-config-key or image-tag check), not solely on GPU_MEM_MIB, and add matching perf-changelog entries if those arms' behavior does change too.

dsv41flash_fp4_b200_vllm_mtp.sh and dsv41flash_fp4_gb200_vllm_mtp.sh are symlinks to this file (benchmarks/single_node/agentic/dsv41flash_fp4_vllm_mtp.sh), confirmed via ls -la showing both -> dsv41flash_fp4_vllm_mtp.sh. Their configs (configs/nvidia-master.yaml lines ~8092 and ~8155, dsv41flash-fp4-gb200-vllm-agentic-dspark and dsv41flash-fp4-b200-vllm-agentic-dspark) still use image vllm/vllm-openai:nightly-cd10ed6f9f6b37a8ace9cf380007e66fe12ec0c3, unchanged by this diff. Both are Blackwell so GPU_MEM_MIB>=150000 at line 84 is true, so the new --attention-config/--kv-cache-dtype fp8 args at line 90 get added to their vllm serve invocation. The PR/changelog only pins and documents this feature for dsv41flash-fp4-gb300-vllm-agentic-dspark on the new nightly-0961bbae image; the older shared nightly is the same one the script's own comment says lacks SM100…

Verification: normal. The new block at benchmarks/single_node/agentic/dsv41flash_fp4_vllm_mtp.sh:83-91 is gated only on hardware memory (if (( GPU_MEM_MIB >= 150000 ))), and GPU_MEM_MIB comes from nvidia-smi --query-gpu=memory.total (line 59). The script's own comment at line 51 enumerates the Blackwell arms sharing this file — "B200 180 GB, GB200 256 GB, GB300 277 GB" — all far above 150000 MiB; the…

@xinli-sw
xinli-sw marked this pull request as draft September 24, 2026 15:54
@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

@xinli-sw
xinli-sw force-pushed the config/dsv41flash-gb300-vllm-nightly branch 2 times, most recently from 2585e75 to 3494e65 Compare September 25, 2026 01:08
更新 GB300 DeepSeek-V4.1-Flash vLLM nightly 配方,并在 TP2 和 TP4 使用 FlashInfer 稀疏注意力。
@xinli-sw
xinli-sw force-pushed the config/dsv41flash-gb300-vllm-nightly branch from 3494e65 to b4fa176 Compare September 25, 2026 02:03
@functionstackx

Copy link
Copy Markdown
Collaborator

InferenceX has switched away from unmaintainable bash scripts to YAML files that don't repeat the same stuff over and over again. Please merge the latest main into this PR: we have migrated single-node AgentX onto native srt-slurm (#3428), so AgentX configs are now declarative YAML recipes, not per-config 1000+ line bash slop scripts. Please also delete the old benchmarks/single_node/** scripts (see this recipe for the new format).

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants