Skip to content

Add Qwen3.5 FP8 B300 AgentX MTP - #2515

Merged
cquil11 merged 8 commits into
mainfrom
agent/qwen35-fp8-b300-agentx-mtp
Aug 7, 2026
Merged

Add Qwen3.5 FP8 B300 AgentX MTP#2515
cquil11 merged 8 commits into
mainfrom
agent/qwen35-fp8-b300-agentx-mtp

Conversation

@cquil11

@cquil11 cquil11 commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add a B300 Qwen3.5 FP8 AgentX scenario with native SGLang NEXTN MTP.
  • Mirror the FP4 AgentX MTP TP4 and TP2/EP2 concurrency grids, including the TP2/EP2 HiCache arm.
  • Use the validated Qwen AgentX trace, cache-metric, and synthetic-acceptance setup.
  • Keep synthetic acceptance disabled during evals so accuracy uses real target-model verification.

Why

InferenceX has Qwen3.5 FP8 AgentX and fixed-sequence FP8 MTP coverage on B300, but no scenario combining AgentX with FP8 MTP. This adds that missing benchmark path alongside the existing FP4 AgentX MTP scenario.

Validation

  • bash -n benchmarks/single_node/agentic/qwen3.5_fp8_b300_sglang_mtp.sh
  • python utils/matrix_logic/generate_sweep_configs.py test-config --config-files configs/nvidia-master.yaml --config-keys qwen3.5-fp8-b300-sglang-agentic-mtp
  • python -m pytest utils/matrix_logic/ -q (224 passed)
  • Confirmed the FP8 checkpoint is present on B300 cluster storage.

@github-actions

github-actions Bot commented Aug 7, 2026

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 关于重新运行失败任务的文档

@cquil11
cquil11 marked this pull request as ready for review August 7, 2026 05:21
@cquil11
cquil11 requested a review from a team August 7, 2026 05:21
@claude

claude Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Claude finished @cquil11's task in 2m 54s —— View job


PR Review

  • Gather context and read the PR diff
  • Review benchmark script (qwen3.5_fp8_b300_sglang_mtp.sh)
  • Review config changes (configs/nvidia-master.yaml)
  • Validate perf-changelog.yaml entry placement
  • Post review feedback

LGTM - no blocking issues found

Verified during review:

  • The new script is a faithful mirror of qwen3.5_fp4_b300_sglang_mtp.sh — the only deltas are the quantization flags (--quantization fp8, dropping the FP4 GEMM backend), which exactly match the validated flags in the existing qwen3.5_fp8_b300_sglang.sh AgentX script.
  • Launcher routing resolves the new config key to benchmarks/single_node/agentic/qwen3.5_fp8_b300_sglang_mtp.sh via the _${FRAMEWORK}${SPEC_SUFFIX} naming convention in runners/launch_b300-nv.sh, and Qwen3.5-397B-A17B-FP8 is already in the staged-models list.
  • Config entry uses a public Docker Hub image, correct SGLang --ep-size usage, and concurrency grids that match the FP4 AgentX MTP scenario as described.
  • perf-changelog.yaml entry is correctly appended at the end of the file with the PR link.
  • The --use-chat-template MTP requirement doesn't apply here: the AgentX replay client drives /v1/chat/completions (--endpoint-type chat), so chat templating happens server-side, consistent with the merged FP4 mirror.

One observation (non-blocking): the synthetic acceptance length 3.39 is reused from the FP4 recipes. This matches every other Qwen3.5 MTP recipe in the repo and is documented in the changelog, but if the FP8 target model's measured AL differs meaningfully, the throughput numbers will be skewed accordingly — worth confirming against a real-acceptance run if that hasn't been done.

@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.

LGTM — this mirrors the existing FP4 AgentX MTP recipe closely and follows established patterns.

Extended reasoning...

Overview

Adds a new B300 benchmark scenario (qwen3.5-fp8-b300-sglang-agentic-mtp) combining Qwen3.5-397B-A17B FP8 with SGLang native NEXTN MTP, plus its config entry and changelog note. Three files: a new benchmark shell script, a configs/nvidia-master.yaml addition, and a perf-changelog.yaml entry.

Security risks

None. This is benchmark infrastructure — no auth, no user input handling, no network-facing code beyond internal server launch flags. The script only downloads a model checkpoint and launches a local SGLang server.

Level of scrutiny

Low-to-moderate. This is a config/benchmark-recipe addition, not production logic. I diffed the new script against the existing qwen3.5-fp4-b300-sglang-agentic-mtp script it's explicitly mirroring, and the only differences are precision-specific (fp8 quantization flag vs. fp4/cutlass backend) plus one cosmetic stream-interval variable-vs-literal difference — no functional divergence. The config's search-space grid (TP4 and TP2/EP2 with HiCache arm) is byte-for-byte identical to the FP4 scenario's grid, matching the PR's stated intent to mirror it.

Other factors

The bug hunting system raised a concern that the mirrored TP2/EP2 grid might OOM for FP8's larger weights, but that was investigated and refuted. The PR includes validation steps (shellcheck syntax, config test-generation, full pytest suite) and confirms the FP8 checkpoint exists on cluster storage. This isn't CODEOWNER-restricted critical-path code, and the change is additive (new scenario key) with no modification to existing scenarios.

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

1 similar comment
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

@cquil11

cquil11 commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator Author

/stage-results 31152055079

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

@cquil11 staged run 31152055079: https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-08-07~r31152055079

This run remains available across future /stage-results requests. Staging the same run ID again updates its staged data. Staging workflow

@cquil11 已将运行 31152055079 发布到预发布环境:https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-08-07~r31152055079

后续的 /stage-results 请求不会移除此运行;再次发布相同的运行 ID 会更新其预发布数据。预发布工作流

@cquil11

cquil11 commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator Author

/reuse-sweep-run 31152055079

…-agentx-mtp

# Conflicts:
#	perf-changelog.yaml
@cquil11

cquil11 commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator Author

As a PR reviewer and CODEOWNER, I have reviewed this and have:

  • Verified that as of the moment of typing this, this is the latest version of PR_REVIEW_CHECKLIST.md
  • Verified that the general code quality meets the InferenceX standard and does not make the code quality any worse.
  • Verified that this PR has passed PR validation. Please link to GitHub Action workflow that shows this.
  • Verified that this PR passes evals. Please link to GitHub Action workflow that shows this.
  • Verified that speculative decoding PRs use chat templates to align the AL distribution to real world traffic.
  • For agentic workloads: verified that speculative-decoding configs run with simulated synthetic acceptance using the committed golden AL curve for the model, thinking mode, and draft length.
  • Verified against the current MODELS.md that this PR does not submit a deprecated model, scenario, or model-scenario combination.
  • Verified that the model architecture is not changed with benchmark hacks or reductions in model FLOPs.
  • Verified that this SGLang submission uses the upstream lmsysorg/sglang image.
  • Verified that the upstream SGLang submission exists before any additional-framework submission.
  • Verified that every single-node SGLang recipe in this PR is documented in the official SGLang cookbook, with the corresponding upstream change merged.
  • Verified that this PR does not patch the inference engine or serving stack; the pinned image runs as shipped.
  • If any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.

Additional detail section:

Signed: @cquil11

@Klaud-Cold

Copy link
Copy Markdown
Collaborator

❌❌❌ REJECTED ❌❌❌

@cquil11 — blocking: the PR's kernel configuration does not match the published SGLang cookbook recipe for Qwen3.5 FP8 on B300. The cookbook pins --attention-backend flashinfer for B300 FP8 (trtllm_mha is documented only for B200 and B300 FP4), and --moe-runner-backend flashinfer_trtllm appears only in the NVFP4 recipe. This PR mirrors the FP4 kernel setup onto the FP8 checkpoint, so the community cannot reproduce it from the linked upstream documentation. Fix: align the launch command with the published FP8 recipe, or land a cookbook update documenting trtllm_mha + flashinfer_trtllm for B300 FP8 and re-sign.

✅ Check 0 (CODEOWNER): PASS — configs/nvidia-master.yaml is owned by @ankur-singh @kedarpotdar-nv @InferenceX/core; signer is an org MEMBER signing via @InferenceX/core (team membership not readable by this token; no mismatch with any specific-owner path).
✅ Check 1 (sweep on in-PR commit): PASS — commit 997e74f4 (in this PR) has every executed agentic / job and the agentic eval / job green in run 31152055079; the bare eval / / single-node */ check-runs are the skipped placeholders for scenarios this agentic-only config doesn't run.
✅ Check 2 (eval accuracy): PASS — GSM8K strict EM 0.9780 (n=1319) on Qwen3.5-397B-A17B-FP8, MTP, TP4 c72, from run 31152055079 artifacts; eval job ran the PR's image lmsysorg/sglang:v0.5.16-cu130.
❌ Check 3 (recipe): FAIL — (a) link present and (b) sgl-project/sglang#26695 is MERGED (2026-05-29), but (c) major server args contradict the published cookbook: for B300 FP8 the recipe emits --attention-backend flashinfer, not this PR's trtllm_mha; and --moe-runner-backend flashinfer_trtllm is documented only for the NVFP4 checkpoint and is not the engine default (auto → DeepGEMM on Blackwell; this PR sets SGL_ENABLE_JIT_DEEPGEMM=false to force it). Informational, not blockers: --enable-symm-mem is documented for H100 FP8 only; the recipe's --enable-flashinfer-allreduce-fusion is absent here; chunked-prefill/scheduler-recv/HiCache/concurrency knobs are expected InferenceX harness tuning.
✅ Check 4 (reuse command): PASS — /reuse-sweep-run 31152055079 posted by @cquil11 (MEMBER).
✅ Check 5 (latest checklist): PASS — every current-template item has a checked counterpart (recipe item and its merged-upstream sub-item are merged into one line, semantically complete).
✅ Check 6 (upstream image / engine-first): PASS — lmsysorg/sglang:v0.5.16-cu130 is the upstream SGLang org image on established B300; framework is SGLang itself, so engine-first ordering is trivially satisfied.
✅ Check 7 (deprecations): PASS — as of 2026-08-07, qwen3.5 FP8 agentic-coding with MTP is active in MODELS.md (only bf16 recipes and the non-MTP agentic arm are deprecated; this PR adds the MTP arm).
✅ Check 8 (no architecture hacks): PASS — no --hf-overrides/model-config edits; only precision (fp8 KV cache, bf16 mamba SSM) and kernel-selection flags.
✅ Check 9 (spec-decode chat template): PASS — AgentX replay drives /v1/chat/completions (--endpoint-type chat, benchmark_lib.sh) and evals use lm_eval local-chat-completions --apply_chat_template.
✅ Check 10 (no engine patches): PASS — no patch files, heredoc rewrites, site-packages edits, or engine wheel installs; only harness/client deps.
✅ Check 11 (golden AL): PASS — throughput pins SGLANG_SIMULATE_ACC_LEN=3.39 (match-expected, real-draft-token), equal to the committed golden qwen3.5 thinking_on value for 3 speculative tokens; evals run real verification; no synthetic-acceptance knobs on non-agentic configs.

@cquil11
cquil11 merged commit 9cc21aa into main Aug 7, 2026
6 checks passed
@cquil11
cquil11 deleted the agent/qwen35-fp8-b300-agentx-mtp branch August 7, 2026 15:53
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.

2 participants