Repository navigation
[AMD][MI35X] Qwen3.8-Flash-Next FP4 SGLang agentic MTP: 20261031 image, monokernel at c1-c8 / [AMD][MI35X] Qwen3.8-Flash-Next:20261031 镜像,c1-c8 启用 monokernel - #4542
Conversation
|
Thanks for the contribution!
中文感谢你的贡献!
|
Co-authored-by: Cursor <cursoragent@cursor.com>
b3d2725 to
c51963c
Compare
Co-authored-by: Cursor <cursoragent@cursor.com>
…e monokernel Upstream ROCm 10 SGLang image with the merged aiter #6201, #5804, #6467, The full-patch configuration follows in #3974. Co-authored-by: Cursor <cursoragent@cursor.com>
… c12 and c16 Co-authored-by: Cursor <cursoragent@cursor.com>
…es, QSA and GDN decode PRs Adds aiter #5992, #6670, #6769 and sglang #41879, #41880, #45196 on top of the merged-PR baseline, with SGLANG_AITER_GDN_CONV, SGLANG_AITER_GDN_DECODE and SGLANG_ENABLE_QSA_FLYDSL_DECODE on. Co-authored-by: Cursor <cursoragent@cursor.com>
…6769 are merged Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…5.22-rocm10-mi35x-20261026 The image's AITER (285579b6) already has aiter #6201, #5804, #6467, #6165, #6225 and #6050, so those patches and the MoE sorting JIT rebuild are dropped. The remaining four AITER and four SGLang patches apply on 285579b6 and the image's SGLang 5ef99013. Co-authored-by: Cursor <cursoragent@cursor.com>
…ang 5ef99013 Co-authored-by: Cursor <cursoragent@cursor.com>
c51963c to
69234e2
Compare
…l-amd-mono#29 - Regenerate sglang #41879, #41880 and #45196 from the current PR heads (merge-base with main to head) against the image's SGLang 5ef99013. - Replace the sglang#45353 monokernel patch with sgl-amd-mono#29 at 0298cc497, applied to the image's editable sgl-amd-mono (05e0bb02), plus merged sglang#46036 (register specs by model type) which it needs. The setup script finds the checkout through importlib. - Recipe: --enable-amd-monokernel on c1/c2/c4/c8 instead of the SGLANG_ENABLE_QWEN4_* env vars; c8 back to 3 steps / 4 draft tokens (the only shape #29 supports); drop SGLANG_ENABLE_QSA_FLYDSL_DECODE (no longer in #45196).
- Image lmsysorg/sglang-rocm:v0.5.23-rocm10-mi35x-20261030 (SGLang 17e94c4677, AITER 285579b6); SGLang is not patched. - Drop the patches for open PRs (sglang #41879, #45196) and for PRs the image already has (aiter #5992, #6670; sglang #41880, #46036). - Keep AITER #5993 and #6769 (merged after the image's AITER). - Move the image's sgl-amd-mono checkout to b10f3b71 (merged sgl-amd-mono #29) instead of patching it. - c1-c8: monokernel with the PLE table on the GPU; c8 back to 3 steps. Co-authored-by: Cursor <cursoragent@cursor.com>
…p4-mi355x-sglang-agentic-baseline-r02 Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # inferencex-e2e/perf-changelog.yaml
Co-authored-by: Cursor <cursoragent@cursor.com>
|
Claude finished @ChangLiu0709's task in 43s —— View job Review: PR #4542
LGTM - no blocking issues found. |
The setup script now only moves the image's sgl-amd-mono checkout to the merged sgl-amd-mono #29 (b10f3b71). Co-authored-by: Cursor <cursoragent@cursor.com>
| scheduler-recv-interval: 10 | ||
| stream-interval: 50 | ||
| reasoning-parser: qwen3 | ||
| default-chat-template-kwargs: '{"enable_thinking": false}' |
There was a problem hiding this comment.
🔴 MI355X Qwen3.8-Flash-Next AgentX numbers would be measured with thinking turned off. They are still scored against the thinking-on golden AL and compared with NVIDIA siblings that run thinking on. default-chat-template-kwargs: '{"enable_thinking": false}' at agentic.yaml:52 changes the server-side chat template for every point. Neither the PR description nor the changelog mentions this. Fix: drop this arg so the server keeps the model's default thinking-on template, like the b200/b300/gb300/h200 qwen3.8next recipes, and so the injected thinking_on AL matches the mode actually served.
Why this was flagged
Every agentic point (c1-c16) launches SGLang with default-chat-template-kwargs set to {"enable_thinking": false} (agentic.yaml:52). AgentX chat requests are therefore rendered in non-thinking mode. The workflow hard-codes THINKING_MODE: thinking_on (.github/workflows/benchmark-tmpl.yml:108). synthetic_acceptance.py:166 then injects the thinking_on golden AL. qwen3.8next_mtp.yaml has no thinking_off curve at all, and its thinking_on value for 3 steps is 2.32. infx/golden_al_distribution/README.md says each model and thinking mode has one curve, and all submissions for the same model and mode use the same curve. No other qwen3.8next recipe sets this kwarg; b200, b300, gb300 and h200 all run with reasoning-parser: auto and the default thinking-on template. So the MI355X rows published under model-prefix qwen3.8next use a different workload mode from every sibling, and output and reasoning token mix can differ. Nothing in check_fragment or validate_recipe catches this, because they never inspect chat-template kwargs.
Verification: Trigger: any AgentX or eval request that reaches SGLang's chat endpoint without its own chat_template_kwargs, since the recipe sets no AIPERF_EXTRA_INPUTS. agentic.yaml:52 sets default-chat-template-kwargs: '{"enable_thinking": false}' for c1-c16. synthetic_acceptance.py:166 still injects the thinking_on golden AL of 2.32 from qwen3.8next_mtp.yaml.
| # Qwen3.8-Flash-Next Quark MXFP4 MoE (MTP experts included), FP8 attention and | ||
| # FP8 PLE, AgentX on MI355X via SGLang with native NEXTN MTP. The ~116 GiB | ||
| # checkpoint fits on one MI355X, so TP1. Two merged AITER PRs (hc_mix, GEMM | ||
| # tables) are patched into the image and its sgl-amd-mono is moved to the merged | ||
| # monokernel (sgl-amd-mono#29). |
There was a problem hiding this comment.
🟡 nit (optional): New header and history comments break AGENTS.md's mandatory comment rules (no headers describing a file, config or override; no history). sweep:^# Qwen3.8-Flash-Next|^# One variant per point|^# Qwen3.8-Flash-Next baseline Example sites: agentic.yaml:1-5 and amd-master.yaml:488-490 describe the config, and the script's lines 2-23 list PR/commit provenance. Fix: delete them and keep only short notes on why a specific line is set. [also at: inferencex-e2e/benchmarks/multi_node/srt-slurm-recipes/configs/qwen3.8next-rocm10-merged-patches.sh:23 - Maintainers get new file, recipe and section header comments full of PR history, which AGENTS.md:56-57 bans in every file.]
Why this was flagged
AGENTS.md "Comments (mandatory, every file)" bans header comments that describe a file, config, recipe, override or section. It also bans history: where code came from, what it replaced, or past results. The diff adds a 5-line header at agentic.yaml:1-5. It adds a block before override_c1 (agentic.yaml:80-91) that describes the overrides. It adds a 3-line header above the new key in amd-master.yaml:488-490. qwen3.8next-rocm10-merged-patches.sh:2-23 lists upstream PR numbers, image commits and what the image already has. The rule says that information belongs in git and perf-changelog.yaml. Each block restates the recipe or carries provenance that goes stale on the next image bump.
Verification: AGENTS.md:54-58 says: "No header comments describing a file, topology, config, recipe, override, or section." and bans history. agentic.yaml:1-5 and amd-master.yaml:488-490 are headers describing the config, and qwen3.8next-rocm10-merged-patches.sh:2-23 is a file header full of provenance. Nothing breaks at runtime.
It no longer applies patches; it only moves the image's sgl-amd-mono to the merged #29. Co-authored-by: Cursor <cursoragent@cursor.com>
…rnel points The image pins sgl-amd-mono before the Qwen3.8 monokernel, so drop c1, c2 and c4, move c8 to the c12/c16 setup (ReplaySSM, PLE offload, 2x CONC admission) and remove the sgl-amd-mono setup script. The image runs as shipped. Co-authored-by: Cursor <cursoragent@cursor.com>
|
View unofficial run (performance): https://inferencex.semianalysis.com/inference?unofficialRun=41526799231 View unofficial run (accuracy): https://inferencex.semianalysis.com/evaluation?unofficialRun=41526799231 |
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # inferencex-e2e/perf-changelog.yaml
…nking on
- c1, c2, c4 and c8 set SGLANG_USE_AITER=1, which the monokernel requires and the image already sets. Their engine env now differs from c12 and c16, so the agentic GSM8K selection also runs an eval at c8 on the monokernel path.
- Drop --default-chat-template-kwargs '{"enable_thinking": false}' so the server keeps the model's thinking-on template, matching the thinking_on golden AL and the other qwen3.8next recipes.
- Update the changelog entry, including the monokernel's BF16-activation (a16w4) MoE.
Co-authored-by: Cursor <cursoragent@cursor.com>
|
Pushed
Full sweep: Run Sweep 41511531988. The earlier 中文已推送
Full sweep:Run Sweep 41511531988。原先的 |
|
Restarted the sweep on the current head with
中文已在当前 head 上带
|
|
/use 41526799231 |
|
@chunfangamd staged run 41526799231. This run remains available across future |
chunfangamd
left a comment
There was a problem hiding this comment.
As a PR reviewer and CODEOWNER, I have reviewed this and have:
Checklist items
- 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. https://github.com/SemiAnalysisAI/InferenceX/actions/runs/41526799231
- Verified that this PR passes evals. Please link to GitHub Action workflow that shows this. https://github.com/SemiAnalysisAI/InferenceX/actions/runs/41526799231
- Verified that speculative decoding PRs uses chat templates to align the AL distribution to real world
- Verified that every draft model and draft head is served as it ships: the draft that ships with the served checkpoint, at its stored precision, through the pinned upstream image's default handling, with the shipped and effective draft precision recorded in the additional detail section. No submission-side quantization, dtype override, checkpoint substitution, or patch may lower draft precision below that default, regardless of eval results or AL. Explicitly verified that
SGLANG_NVFP4_CKPT_FP8_NEXTN_MOEis not enabled in the effective recipe, including inherited settings; enabling it is prohibited going forward, and historical runs do not grant an exception. See Draft-model precision for what counts as the default and the MLPerf comparison. - For agentic workloads: verified that speculative-decoding configs (EAGLE / MTP / draft models) run with simulated synthetic acceptance, with the acceptance-length value taken from the committed golden AL curve in infx/golden_al_distribution/ for that model, thinking mode, and draft length. A submission may choose any supported draft length, but it may not substitute a different acceptance target.
- 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 isn't changed with benchmark hacks like using --hf-overrides to skipping indexer for every x layers on models that don't natively support this. As a general rule, we won't accept optimizations that reduces the number of model architecture FLOPs. Anything that makes that same computation run faster is fair game; target/verifier FLOPs at lower precisions is fine, given that the config passes private evals, but this does not permit lowering draft-model or draft-head precision below what ships. As an general north star princple, we should only use optimizations which is used in production by customers that care about accuracy
- Verified that new models disable integer all-reduce, with SGLang ROCm explicitly setting
ROCM_QUICK_REDUCE_QUANTIZATION=NONE. Existing models are grandfathered per MODELS.md. - For affected Dynamo TRT-LLM benchmarks, verified that iteration/KV-cache metrics are collected and published under the pinned Dynamo implementation and effective engine settings. Resolve the installed Dynamo version separately from the container tag; use supported metrics controls without requiring KV events. Record the version and configuration evidence in the additional detail section. See verifier Check 17. N/A for unaffected serving paths or frameworks without these Dynamo settings.
- If an company claims that they support vLLM/SGLang as first class LLM inference engines on their hardware, I have verified that the respective vLLM submission made using upstream https://hub.docker.com/u/vllm docker repo, upstream SGLang https://hub.docker.com/u/lmsysorg docker repo. The only exceptions are for new hardware, such as MI455X UALoE72, Vera Rubin NVL72, Rubin NVL8, etc., and for new model architectures where there is an actual reason why vLLM/SGLang does not fundamentally support them yet as supported by vLLM/SGLang community maintainers
- For official InferenceX (non-preview), verified that established models use upstream engine images built from
master(or the equivalent default development branch), with new models transitioning within a reasonable time after release. See MODELS.md. - If an company claims that they support vLLM/SGLang as first class upstream in-tree LLM inference engines on their hardware, I have have verified that the respective vLLM/SGLang submission has been made before additional frameworks (TRT-LLM, ATOM, etc.). The only exceptions are for new hardware, such as MI455X UALoE72, Vera Rubin NVL72, Rubin NVL8, etc., and for new model architectures where there is an actual reason why vLLM/SGLang does not fundamentally support them yet.
- Verified that every affected vLLM/SGLang production serving configuration in this PR, including Dynamo deployments, is documented in the official vLLM recipes and/or the SGLang cookbook, for both single-node and multi-node aggregated and disaggregated serving. The documentation covers production-useful flags, environment variables, and launch commands (including prefill, decode, and router/frontend commands for disaggregation); InferenceX-only benchmark/harness settings are excluded with reasoning in the additional detail section:
- I linked the corresponding upstream PR in the vLLM recipe repo or SGLang cookbook source repo and verified that it is MERGED before this InferenceX PR merges. An opened, draft, or closed-without-merge upstream PR does not satisfy this requirement. If the matching recipe was already published, I linked the published recipe/cookbook page in the additional detail section below.
- Verified that this PR does not patch the inference engine or serving stack — the pinned image must run as shipped. This covers .patch files / git apply / patch, inline patches embedded in benchmark scripts (e.g. a python3/sed heredoc that rewrites installed engine sources before serving), in-place edits of site-packages, monkey-patching, overwriting container files, and installing forked/rebuilt engine wheels on top of the pinned image. The only exception is a patch covered by a filled-out waiver at docs/waiver/
<PR_NUMBER>.md— named after the PR that introduces the patch and filed in that same PR, stating what is patched, why the unmodified upstream image cannot run this benchmark, the upstream PR/issue link, and the removal plan — which I have linked below in the additional detail section. - If this PR uses
append-only: true, verified that it only adds generated points or recipe variants inside a selected existing config/scenario and existing same-image visual curve: every previously generated point remains present with the same recipe, no prior point is removed or rerun, and every benchmark-affecting change in the complete diff can affect only the corresponding newly appended points (never an existing point), regardless of which file contains it. - If any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.
- Reported measured throughput/E2EL Pareto counts and evidence per affected curve (≥5 points strongly recommended). Below 5 or unverifiable: tag a core maintainer for review; recorded admin bypass required before merge. N/A if no curves are affected. Details.
Additional detail section:
- Evals: run 41526799231 ran GSM8K at all six points (
all-evals) on the PR image: strict 0.9788 (c1), 0.9780 (c2), 0.9773 (c4), 0.9795 (c8), 0.9788 (c12) and 0.9795 (c16), n = 1319, SE about 0.004. No row trails another by more than 2σ. The c1, c2, c4 and c8 eval servers ranenable_amd_monokernel: Trueand logged the monokernel'sruns target_verify stepsandMTP draft runslines; c12 and c16 ran the default path. Default sweeps also evaluate the monokernel: c1–c8 setSGLANG_USE_AITER=1(its requirement and the image default), which gives them their own eval group. - Cookbook: sgl-project/sglang#47951 merged.
- Golden AL: all six points inject
SGLANG_SIMULATE_ACC_LEN=2.32, theqwen3.8next_mtp.yamlthinking_on value for 3 draft tokens;signoff_facts golden-almatches it. Every server now runs the model's default thinking-on template (default_chat_template_kwargs: None), matching that curve and the other qwen3.8next recipes. - Draft precision: the MTP head (
mtp.*ofamd/Qwen3.8-Flash-Next-Quark-MXFP4-AttnFP8-PLEFP8@bd6e49d9) runs as shipped.- Shipped: W8A8 FP8 attention and indexer projections (F8_E4M3 with F32 scales, per-token dynamic activations), W4A4 MXFP4 routed and shared experts, and BF16 router, HC mixers,
fc_embedding/fc_hiddenand norms. The draft loads with the checkpoint's own Quark config (speculative_draft_model_quantization: quark) and a BF16 KV cache. - c12/c16 default path: as shipped; the aiter MoE key is
..., 513, 11, ..., float4_e2m1fn_x2, float4_e2m1fn_x2, per_1x32. - c1–c8: sgl-amd-mono
b10f3b71, pinned by SGLange9c18259, reads the FP8 and MXFP4 weights in place and copies only BF16 tensors into its tile order. It keeps per-token FP8 activations for the W8A8 projections and runs the MoE on BF16 activations (a16w4), so no draft weight or activation is lowered. It also turns off SGLang's QSA MTP index sharing, so each draft decode selects its own blocks. SGLANG_NVFP4_CKPT_FP8_NEXTN_MOEis unset, and integer all-reduce is off (ROCM_QUICK_REDUCE_QUANTIZATION=NONE, TP1).
- Shipped: W8A8 FP8 attention and indexer projections (F8_E4M3 with F32 scales, per-token dynamic activations), W4A4 MXFP4 routed and shared experts, and BF16 router, HC mixers,
- Changelog: the entry covers the image, the monokernel and its BF16-activation (a16w4) MoE,
SGLANG_USE_AITERat c1–c8 and the thinking-on template. - Validation / reuse: run 41526799231 (attempt 1) on the current head
64527ed: all six agentic points and six evals are green, and/use 41526799231is posted. Requests dropped with errors: 2 at c2, 2 at c8, 1 at c12 and 5 at c16. The branch conflicts with main only inperf-changelog.yaml; leave the sync tomerge_with_reuse, because main now carries srt-slurm v2.66.1 and the AgentX AL gate, both on this config's launch path. - Images:
lmsysorg/sglang-rocm:v0.5.23-rocm10-mi35x-20261031@sha256:3867dc07…resolves. It is built from SGLangmainate9c18259, with aiter285579b6, sgl-amd-monob10f3b71and morif39fa765, each on its default branch.qwen3.8nextis grandfathered under the all-reduce policy and still setsROCM_QUICK_REDUCE_QUANTIZATION=NONE. - Other: no patches or setup scripts.
json-model-override-argsonly declares the FP8 PLE storage the checkpoint ships. Noappend-only; Checks 16 and 17 are N/A. - Pareto (p90 throughput per GPU vs E2EL, one curve, the six
bmk_agentic_*artifacts of run 41526799231, viapareto_coverage): 6 measured, 0 invalid, 3 on the frontier (c8, c12, c16). c1, c2 and c4 are dominated by c8. With fewer than 5, core maintainer review and an admin bypass are needed before merge. cc @functionstackx
Signed: @chunfangamd
|
Ingest report — ✅ Results ingested into the Ingest workflow · Merge Ingest run · Benchmark source run
benchmarkFiles 6, rawBenchmarkRows 6, coveredByPerJobFiles 0, purgedPoints 0, failedRunRows 0, runStatsNew 0, runStatsDuplicate 0, evalSamplesNew 7914, gpuMetricSamplesNew 29224, powerPublicationPoints 6, changelogEntriesWritten 1 Counts cover only this run. Rows: benchmark_results, eval_results, agentic rows linked to a trace, gpu_metrics series. This comment updates if the ingest is rerun. 中文Ingest 报告 — ✅ 结果已写入 上表仅统计本次运行写入的数据,各行单位依次为 benchmark_results 行、eval_results 行、已关联 trace 的 agentic 行和 gpu_metrics 序列。重新运行 ingest 时本评论会原地更新。 |
…ne to conc 24/48/80 with HiCache DRAM offload, no patches / [AMD][MI35X] Qwen3.8-Flash-Next:基线扩展至并发 24/48/80(HiCache DRAM 卸载,无补丁) (#4779) * qwen3.8next: extend the MI355X baseline to concurrency 24, 48 and 80 Same image and recipe as the merged round 02 baseline (#4542) for c1-c16. Add a HiCache DRAM-offload search-space entry for c24, c48 and c80 with the server settings of the AMD submission recipes (FP8 KV, mem-fraction-static 0.88, extra_buffer_lazy Mamba pool, hicache-size 200/298), without the extra AITER/SGLang patches those recipes carry. * perf-changelog: link the c24/c48/c80 entry to PR 4779 Co-authored-by: Cursor <cursoragent@cursor.com> * perf-changelog: restore historical pr-link placeholders, link only the c24/c48/c80 entry to PR 4779 Co-authored-by: Cursor <cursoragent@cursor.com> * perf-changelog: restore the config-keys header of the c24/c48/c80 entry after the main merge Co-authored-by: Cursor <cursoragent@cursor.com> * qwen3.8next: credit the c24/c48/c80 co-authors Co-authored-by: Nikolai <289648307+amd-nprotaso@users.noreply.github.com> Co-authored-by: Christian Gilli <272772515+amd-cgilli@users.noreply.github.com> Co-authored-by: Amanzhol Salykov <asalykov@amd.com> Co-authored-by: wufann <36477220+wufann@users.noreply.github.com> Co-authored-by: Thomas Wang <1am9trash@gmail.com> Co-authored-by: Chun-Hung Yeh <Chun-Hung.Yeh@amd.com> Co-authored-by: jacky.cheng <yichiche@amd.com> Co-authored-by: Cursor <cursoragent@cursor.com> * qwen3.8next: credit Chun Fang as a c24/c48/c80 co-author Co-authored-by: Chun Fang <chun.fang@amd.com> Co-authored-by: Cursor <cursoragent@cursor.com> * perf-changelog: restore main's entries and append the c24/c48/c80 entry at the end after the branch update * perf-changelog: put the c24/c48/c80 entry back at the physical end The Update-branch merges of main inserted the entry in front of the VideoGenX H3 entry, which cost that entry its config-keys header and made infx.matrix.plan reject the diff. Main's file is restored unchanged and the entry is appended after it. * perf-changelog: rebuild from current main with the c24/c48/c80 entry last The previous fix started from a stale origin/main and dropped newer main entries. --------- Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Nikolai <289648307+amd-nprotaso@users.noreply.github.com> Co-authored-by: Christian Gilli <272772515+amd-cgilli@users.noreply.github.com> Co-authored-by: Amanzhol Salykov <asalykov@amd.com> Co-authored-by: wufann <36477220+wufann@users.noreply.github.com> Co-authored-by: Thomas Wang <1am9trash@gmail.com> Co-authored-by: Chun-Hung Yeh <Chun-Hung.Yeh@amd.com> Co-authored-by: jacky.cheng <yichiche@amd.com> Co-authored-by: Chun Fang <chun.fang@amd.com>
Summary
Updates the merged round 03 recipe (#4680) onto the upstream
lmsysorg/sglang-rocm:v0.5.23-rocm10-mi35x-20261031image, pinned by digestsha256:3867dc07ba2530f914e1f210ed829f7a572a75286c8c362dbc22cbecf9b5a7e6. There is no custom image, no patch, and no setup script. The nightly was built from SGLange9c18259c. AITER stays285579b6. SGLang pins sgl-amd-mono atb10f3b71(sglang#47483, the merge of sgl-amd-mono#29), soqwen3.8next-rocm10-setup.shis removed.Against #4680, concurrency 12 and 16 are unchanged. Concurrency 1, 2, 4 and 8 switch to the FlyDSL monokernel:
qwen3.8next-fp4-mi355x-sglang-agentic-mtp: same model, TP1/EP1, conc 1/2/4/8/12/16,kv-offloading: none. Only the image digest changes.--enable-amd-monokernelfor MTP target verify and each draft step. The kernel needs the per-draft SSM states and the PLE table on the GPU, so these points drop ReplaySSM and PLE offload, and admitmax-running-requests = cuda-graph-max-bs-decode = conc(1, 2, 4, 8).max-running-requests = 2x conc(24 and 32).ROCM_QUICK_REDUCE_QUANTIZATION=NONE.SGLANG_USE_AITER,SGLANG_USE_AITER_UNIFIED_ATTNandAITER_FLYDSL_FORCEare not set.Upstream pieces
--enable-amd-monokernel)b10f3b71via sglang#47483e9c18259c)285579b6, unchanged)Not included:
lm_headthrough AITER tgemm; kept on [AMD][MI35X] Add Qwen3.8-Flash-Next FP4 SGLang agentic MTP on upstream v0.5.21-rocm724 image / 基于上游 v0.5.21-rocm724 镜像新增 MI355X Qwen3.8-Flash-Next FP4 SGLang agentic MTP #3974);285579b6(2026-10-17): aiter#5993, aiter#6769, aiter#5992 and aiter#6670.c12 and c16 stay on the default GDN and QSA paths, so they remain the slower points. #3974 carries those pieces.
Validation
90fc8ffbb, the 20261031 image, no setup script, monokernel at c1–c8,full-sweep-enabled) passed at all six points and the c16 eval. c4, c8 and c12 failed in their first attempt in host setup (GPU memory left by a previous job on the node, not the recipe) and passed on rerun. The branch was then updated with main (bdf93a7f1, workflow and test files only). A new sweep on that head, 41248881067, was queued when this was written.Round 03 is the merged #4680 sweep (run 41114439370). The c16 eval scored GSM8K 0.9674 strict (1319 questions, threshold 0.9).
qwen3.8-mi355x-init-01, heada5c969f6a) passed at all six points and the c16 eval on the 20261030 image. That head checked sgl-amd-mono out to the sameb10f3b71with a setup script. It is not a result for this image.qwen38_flash_next_hipandqwen38_flash_next_mtp_draft_hipon gfx950), 0 error-dropped requests:90c23551tob10f3b71(that revision also applied aiter#5993 and #6769), 600 s: interactivity p50 / p90 401.0 / 390.0 tok/s/user, TTFT p50 / p90 0.30 / 1.57 s, TPOT p50 2.49 ms, 119 requests.Known gaps:
InvalidInferenceResultError(not yet investigated; c16 does not use the monokernel).AI model disclosure
qwen3.8next-rocm10-setup.sh, and this description: Claude Sonnet 5.5 (Cursor agent).PR checklist and change type
Type of Change
Checklist
inferencex-e2e/perf-changelog.yamland have not edited historical entriesfull-sweep-fail-fast(recommended),full-sweep-enabled, ornon-canary-full-sweep-enabled. Optional modifiersall-evals,evals-only, andagentx-fastrequire a primary label; the last two block reuse while applied.OWNER/MEMBER/COLLABORATOR) has commented/use <run_id>(or the legacy/reuse-sweep-run) on this PR. Do this only once there is a final full sweep that is all green with evals passing, since after this comment the primary sweep label will no longer automatically kick off new sweeps. Remove and re-add the primary sweep label to force a new sweep.中文
概要
在已合入的第 03 轮配方(#4680)上,将镜像更新为上游
lmsysorg/sglang-rocm:v0.5.23-rocm10-mi35x-20261031(digestsha256:3867dc07ba2530f914e1f210ed829f7a572a75286c8c362dbc22cbecf9b5a7e6)。无自定义镜像、无补丁、无 setup 脚本。该 nightly 由 SGLange9c18259c构建,AITER 仍为285579b6。SGLang 将 sgl-amd-mono 固定在b10f3b71(sglang#47483,即 sgl-amd-mono#29 的合入提交),因此删除qwen3.8next-rocm10-setup.sh。相对 #4680,c12 与 c16 不变。c1、c2、c4、c8 改为 FlyDSL monokernel(
--enable-amd-monokernel):不使用 ReplaySSM,PLE 表留在 GPU 上,max-running-requests = cuda-graph-max-bs-decode = conc(1、2、4、8)。ROCM_QUICK_REDUCE_QUANTIZATION=NONE。验证: 当前 head 的 PR sweep 41226389969(head
90fc8ffbb,20261031 镜像,c1–c8 启用 monokernel)6 个并发点及 c16 eval 全部通过。c4、c8、c12 首次运行因节点上一个任务遗留的 GPU 显存在 host setup 阶段失败(非配方问题),重跑后通过。相对已合入的第 03 轮(#4680)总吞吐 tok/s/GPU:c1 +42.2%(16,716)、c2 +70.0%(20,583)、c4 +48.6%(25,405)、c8 +22.0%(42,789)、c12 +0.3%(54,013)、c16 +0.2%(72,358);c16 eval GSM8K strict 0.9674。随后分支已合入 main(bdf93a7f1,仅涉及 workflow 与测试文件),该 head 上的新 sweep 41248881067 撰写时仍在排队。上一轮 CI 41057516117 跑在 20261030 镜像上,不是本镜像的结果。已知缺口: GSM8K 只在 c16(默认路径)运行,c1–c8 的 monokernel 点在 sweep 中没有精度 eval;c8、c16 各有 1 个
InvalidInferenceResultError尚未排查。AI 模型使用说明: 2026-10-31 镜像更新、删除 setup 脚本和本说明由 Claude Sonnet 5.5(Cursor agent)完成。更早的配方与说明由 Claude Opus 5.5 与 Claude Sonnet 5.5(Cursor agent)完成。