Skip to content

[Klaud Cold] qwen3.8next-fp8-h100-sglang-agentic-mtp: Qwen3.8-Flash-Next FP8 SGLang AgentX on H100 / H100 上 Qwen3.8-Flash-Next FP8 SGLang AgentX 配方 - #2756

Merged
functionstackx merged 4 commits into
mainfrom
feat/qwen3.8next-fp8-h100-sglang-agentic-mtp
Aug 27, 2026
Merged

[Klaud Cold] qwen3.8next-fp8-h100-sglang-agentic-mtp: Qwen3.8-Flash-Next FP8 SGLang AgentX on H100 / H100 上 Qwen3.8-Flash-Next FP8 SGLang AgentX 配方#2756
functionstackx merged 4 commits into
mainfrom
feat/qwen3.8next-fp8-h100-sglang-agentic-mtp

Conversation

@functionstackx

@functionstackx functionstackx commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Summary / 摘要

Qwen3.8-Flash-Next AgentX recipe on H100, served by SGLang with native NEXTN MTP. Fifth arm of the one-PR-per-chip set, mirroring the H200 arm (#2753).

H100 上的 Qwen3.8-Flash-Next AgentX 配方,由 SGLang 提供服务,采用原生 NEXTN MTP。这是按芯片划分系列的第五个分支,对应 H200 分支(#2753)。

Config key / 配置项

qwen3.8next-fp8-h100-sglang-agentic-mtpQwen/Qwen3.8-Flash-Next-FP8, lmsysorg/sglang:qwen38flashnext, cluster:h100-dgxc, TP8/EP8, conc [1, 4, 8, 12, 16], no KV offloading.

Not a verified cookbook command / 并非 cookbook 验证命令

The SGLang cookbook offers B300, GB300, B200, H200, MI350X and MI355X — not H100. So this is the H200 arm adjusted for the smaller part, and it is stated as such rather than presented as verified:

  • TP8/EP8, not the cookbook's TP4/EP4. At TP4 the 172.8 GiB checkpoint is ~43 GiB per rank of an 80 GB card, leaving too little for the 256k-capped agentic traces. TP8 halves it to ~22 GiB. TP8/EP8 also matches the existing qwen3.5-fp8-h100-sglang-agentic-mtp sibling.
  • --mem-fraction-static 0.75, not 0.85. 80 GB HBM3 has far less slack than H200's 141 GB HBM3e; 0.75 is what the Qwen3.5 H100 sibling uses.
  • FP8, not NVFP4 — Hopper has no SM100 tensor cores.
  • float32 SSM state. Hopper's flashinfer gated_delta_rule_mtp verify kernel asserts float32; the Blackwell arms must use bfloat16 because SGLang rejects anything else on SM100+. The two are genuinely opposite and the comments say so.

SGLang cookbook 提供 B300、GB300、B200、H200、MI350X 与 MI355X,不含 H100。因此本配方是按较小硬件调整后的 H200 分支,并如实标注而非声称已验证:TP8/EP8 而非 TP4/EP4(TP4 下每卡约 43 GiB,80 GB 卡上留给 256k 轨迹的空间不足;TP8/EP8 亦与现有 Qwen3.5 H100 同类配方一致);显存占用 0.75 而非 0.85;使用 FP8(Hopper 无 SM100 张量核心);SSM 状态为 float32(Hopper 的 flashinfer 验证内核要求 float32,而 Blackwell 上 SGLang 只接受 bfloat16,两者确实相反,注释中已写明)。

Acceptance length / 接受长度

SGLANG_SIMULATE_ACC_LEN=2.32golden_al_distribution/qwen3.8next_mtp.yaml thinking_on[3], the committed curve from #2749. Three speculative tokens per verification step is the MTP=3 cell.

SGLANG_SIMULATE_ACC_LEN=2.32,取自 #2749 已提交的 golden_al_distribution/qwen3.8next_mtp.yamlthinking_on[3]

Files / 改动文件

  • benchmarks/single_node/agentic/qwen3.8next_fp8_h100_mtp.sh (new — the H100 launcher builds the script name without a framework infix, so no _sglang in the filename)
  • configs/nvidia-master.yaml — new entry after the Qwen3.5 FP8 H100 sibling
  • perf-changelog.yaml — appended entry

No launcher change needed: the H100 model-path gate lives inside the multinode branch, so the single-node path leaves MODEL_PATH unset and the bench script downloads into the mounted HuggingFace cache.

无需改动 launcher:H100 的权重路径分支位于多节点条件内,单节点路径下 MODEL_PATH 保持未设置,基准脚本会下载到已挂载的 HuggingFace 缓存。

Set: B200 (#2751), B300 (#2752), H200 (#2753), MI355X (#2754), H100 (this).

系列:B200(#2751)、B300(#2752)、H200(#2753)、MI355X(#2754)、H100(本 PR)。

🤖 Generated with Claude Code


Note

Low Risk
Benchmark and config-only changes with no production serving or auth paths; main risk is mis-tuned H100 memory/TP settings affecting benchmark validity rather than user-facing systems.

Overview
Adds the day-zero AgentX coding benchmark arm for Qwen/Qwen3.8-Flash-Next-FP8 on H100 via SGLang with NEXTN MTP, completing the per-chip Qwen3.8-Flash-Next set.

A new launcher script qwen3.8next_fp8_h100_mtp.sh mirrors the H200 recipe but tunes for 80 GB Hopper: TP8/EP8, --mem-fraction-static 0.75, flashinfer linear-attention backends, --mamba-ssm-dtype float32 (Hopper verify path), 256k-capped trace corpus, optional HiCache when KV offload is requested, the usual multi_tokenizer cached_tokens_details patch, and throughput runs pinned to SGLANG_SIMULATE_ACC_LEN=2.32 (eval-only keeps real verification).

configs/nvidia-master.yaml registers qwen3.8next-fp8-h100-sglang-agentic-mtp (lmsysorg/sglang:qwen38flashnext, cluster:h100-dgxc, agentic-coding at TP8/EP8, conc 1/4/8/12/16, KV offloading none only). perf-changelog.yaml documents the addition.

Reviewed by Cursor Bugbot for commit 859d657. Bugbot is set up for automated code reviews on this repo. Configure here.

…AgentX on H100

Add the Qwen3.8-Flash-Next AgentX recipe on H100, served by SGLang with native
NEXTN MTP. H100 is Hopper, so FP8: NVFP4 needs SM100 tensor cores.

The SGLang cookbook does not list H100, so this is the H200 arm adjusted for
the smaller part rather than a verified command. TP8 with EP8 instead of the
cookbook's TP4/EP4, because 172.8 GiB at TP4 is ~43 GiB per rank of an 80 GB
card and leaves too little for the 256k-capped agentic traces; TP8 halves that.
Memory fraction 0.75 rather than 0.85, matching the Qwen3.5 H100 sibling. The
SSM state is float32, as Hopper's flashinfer verify kernel requires and unlike
the bfloat16 the Blackwell arms must use.

No launcher change: the H100 model-path gate is inside the multinode branch, so
the single-node path leaves MODEL_PATH unset and the bench script downloads
into the mounted HuggingFace cache.

新增 H100 上的 Qwen3.8-Flash-Next AgentX 配方,由 SGLang 以原生 NEXTN MTP 提供
服务。H100 属 Hopper 架构,故使用 FP8(NVFP4 需要 SM100 张量核心)。

SGLang cookbook 未列出 H100,因此本配方是按较小硬件调整后的 H200 分支,而非官方
验证命令:采用 TP8/EP8 而非 cookbook 的 TP4/EP4——172.8 GiB 在 TP4 下每卡约
43 GiB,对 80 GB 显存而言留给 256k 智能体轨迹的空间过少,TP8 可将其减半;显存
占用取 0.75 而非 0.85,与 Qwen3.5 H100 同类配方一致。SSM 状态为 float32,这是
Hopper 上 flashinfer 验证内核的要求,与 Blackwell 分支必须使用的 bfloat16 相反。

无需改动 launcher:H100 的权重路径分支位于多节点条件内,单节点路径下 MODEL_PATH
保持未设置,基准脚本会下载到已挂载的 HuggingFace 缓存。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…link

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Thanks for the contribution! Please reach out to respective companies' CODEOWNER to fill in the latest PR_REVIEW_CHECKLIST.md before pinging core maintainer on Slack for review. In order for the signoff PR check bot to trigger, you must follow the PR_REVIEW_CHECKLIST.md template correctly, including the phrase As a PR reviewer and CODEOWNER, I have reviewed this and have.

For PR verification, add the full-sweep-fail-fast label (strongly recommended) to this PR — the benchmark sweep only runs on labeled PRs. Use full-sweep-enabled only if you need matrix jobs to keep running past a failure.

PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. See GitHub's docs on re-running failed jobs


感谢你的贡献!请联系相应公司的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,然后再在 Slack 上联系核心维护者进行审阅。为了触发 signoff PR 检查机器人,你必须正确遵循 PR_REVIEW_CHECKLIST.md 模板,包括保留英文语句 As a PR reviewer and CODEOWNER, I have reviewed this and have

如需进行 PR 验证,请为此 PR 添加 full-sweep-fail-fast 标签(强烈推荐)— 基准测试 sweep 仅在带有标签的 PR 上运行。仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled

PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档

@claude claude Bot left a comment

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.

Beyond the inline finding on the stale comment block, I also checked --reasoning-parser auto at line 194 — it's the only script in the repo using auto instead of a model-specific parser name, but nothing in the diff suggests this is a copy-paste error rather than an intentional choice for this model, so I'm not flagging it as a bug.

Extended reasoning...

The confirmed finding (stale comment referencing the Qwen3.5 curve/version instead of the actual Qwen3.8 values used in this script) will be posted inline and is sufficient reason to hold off on approval. I additionally checked the --reasoning-parser auto usage at line 194, which is unique across the 143 reasoning-parser references in the repo (every other sibling script passes a model-specific parser name like qwen3, deepseek_v4, minimax_m3, etc.). I could not find a qwen3.8next sibling script (e.g. an H200 arm) in this repo to compare against, so I could not confirm whether auto is a deliberate, valid choice for this specific model or an oversight; there is no vendored SGLang source in this checkout to verify the parser's behavior. I'm surfacing this as an examined-but-inconclusive item rather than a new finding, since I lack a comparison point to say it's wrong.

Comment on lines +124 to +126
# quality (golden_al_distribution/README.md). 3.39 is the Qwen3.5 MTP curve at
# num_speculative_tokens=3, thinking_on (golden_al_distribution/qwen3.5_mtp.yaml)
# -- the same value the GB300 Qwen3.5 AgentX srt-slurm recipes pin.

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.

🟡 Stale copy-pasted comment block from the Qwen3.5 H100 sibling still claims the pinned golden AL is "3.39 ... the Qwen3.5 MTP curve" from golden_al_distribution/qwen3.5_mtp.yaml, and that the image is pinned for v0.5.16 vs the sibling's v0.5.12, even though this script actually exports SGLANG_SIMULATE_ACC_LEN=2.32 from golden_al_distribution/qwen3.8next_mtp.yaml a few lines below and uses a differently-named image tag (qwen38flashnext) with no version pin claim.

Extended reasoning...

A reviewer or future engineer auditing/reusing this recipe reads the outer comment, believes the pinned acceptance length is 3.39 for a Qwen3.5-style curve, and either miscopies that stale value into a new arm or is confused when the actual exported value (2.32) disagrees with the documentation, since the code correctly uses 2.32 but the surrounding prose was never updated after copy-paste from the qwen3.5_fp8_h100_mtp.sh template.

Verification: nit. The candidate is factually correct and the contradiction is on the changed lines. The outer comment (diff lines 114-122) states "3.39 is the Qwen3.5 MTP curve at num_speculative_tokens=3, thinking_on (golden_al_distribution/qwen3.5_mtp.yaml)" and claims the image is pinned because "SGLANG_SIMULATE_ACC_TOKEN_MODE landed in SGLang v0.5.16 ... rather than the non-MTP agentic sibling's…

@github-actions

Copy link
Copy Markdown
Contributor

Same fix as PRs #2753 and #2752. validate_perf_changelog.py requires the
appended suffix to start with "\n- config-keys:" unless the base file already
ends in a blank line, and merge_with_reuse.sh refuses the merge without it.
Historical bytes were already exact; this only inserts the separator.

与 PR #2753#2752 相同的修复:追加条目必须与历史之间空一行,否则
merge_with_reuse.sh 会拒绝合并。历史字节本就完全一致,此处仅插入该分隔空行。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@functionstackx

Copy link
Copy Markdown
Collaborator Author

/reuse-sweep-run 33039903416

@functionstackx

Copy link
Copy Markdown
Collaborator Author

/reuse-sweep-run

@functionstackx

Copy link
Copy Markdown
Collaborator Author

/reuse-sweep-run 33039903416

@functionstackx
functionstackx merged commit 00e4d79 into main Aug 27, 2026
29 checks passed
@functionstackx
functionstackx deleted the feat/qwen3.8next-fp8-h100-sglang-agentic-mtp branch August 27, 2026 06:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Development

Successfully merging this pull request may close these issues.

1 participant