Skip to content

[AgentX] Update Muse Spark Open GB300 SGLang image and retune concurrency points / [AgentX] 更新 Muse Spark Open GB300 SGLang 镜像并调整并发点 - #4404

Merged
Oseltamivir merged 2 commits into
mainfrom
musespark-fp4-gb300-sglang-agentic-c1c287a4
Oct 23, 2026
Merged

Oseltamivir merged 2 commits into
mainfrom
musespark-fp4-gb300-sglang-agentic-c1c287a4

Conversation

@shyeh25

@shyeh25 shyeh25 commented Oct 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

Update the Muse Spark Open GB300 SGLang AgentX curve to lmsysorg/sglang:nightly-dev-20261021-c1c287a4, set SGLANG_FLASHINFER_NVFP4_PER_TOKEN_ACTIVATION=0 and --stream-interval 20 in the base, and replace concurrency 16, 20 and 40 with 28, 30, 44 and 48:

  • TP4/EP4, GPU-resident KV: concurrency 1, 5, 8, 10, 15
  • TP4/EP4, DRAM HiCache: concurrency 24, 28, 30, 34, 44, 48

Per-point changes:

  • Concurrency 10: request admission and decode graph batch 10 → 3
  • Concurrency 24: prefill-decode interval 32 → 96
  • Concurrency 28 (new), starting from the concurrency 24 settings:
    • HiCache write policy write_through → write_back
    • HiCache size 120 → 160
  • Concurrency 30 (new), starting from the concurrency 24 settings:
    • prefill-decode interval 32 → 64
    • HiCache write policy write_through → write_back
    • HiCache size 120 → 160
  • Concurrency 34:
    • HiCache write policy write_through → write_back
    • HiCache size 150 → 160
  • Concurrency 44 and 48 (new), starting from the previous concurrency 40 settings: HiCache write policy write_through → write_back
  • Concurrency 16, 20 and 40 are removed.

Concurrency 1, 5, 8 and 15 keep their per-point settings; they only pick up the new image and the base changes. The checkpoint and DFlash2 draft settings are unchanged.

AI model disclosure
  • Model/version: claude-opus-5-5 (the identifier exposed by the runtime).
  • Role: ran the tuning measurements, generated the recipe, master-config and perf-changelog changes from the measured runs, checked them locally against the measured server configurations, and drafted this PR description.
PR checklist and change type

Type of Change

  • Bug fix
  • New feature
  • Configuration change
  • Documentation update
  • Other (please describe)

Checklist

  • I have completed the AI model disclosure and kept it current
  • I have tested my changes locally
  • I have updated documentation if necessary
  • If python -m infx.matrix.changed --base origin/main lists affected config keys, I have appended one new entry covering them to the physical end of inferencex-e2e/perf-changelog.yaml; if it lists none, I have added none. I have not edited historical entries
  • If this PR appends an inferencex-e2e/perf-changelog.yaml entry, it carries exactly one primary sweep label (a maintainer applies it on fork PRs): full-sweep-fail-fast (recommended), full-sweep-enabled, or non-canary-full-sweep-enabled. Optional modifiers all-evals, evals-only, and agentx-fast require a primary label; the last two block reuse while applied.
  • Before merging via reuse, an authorized maintainer (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.
中文

将 Muse Spark Open GB300 SGLang AgentX 曲线更新到 lmsysorg/sglang:nightly-dev-20261021-c1c287a4,在 base 中设置 SGLANG_FLASHINFER_NVFP4_PER_TOKEN_ACTIVATION=0 与 --stream-interval 20,并以并发 28、30、44、48 取代并发 16、20、40:

  • TP4/EP4,KV 留在 GPU:并发 1、5、8、10、15
  • TP4/EP4,DRAM HiCache:并发 24、28、30、34、44、48

各点改动:

  • 并发 10:请求数上限与 decode graph batch 10 → 3
  • 并发 24:prefill-decode interval 32 → 96
  • 并发 28(新增),以并发 24 的设置为基础:
    • HiCache 写入策略 write_through → write_back
    • HiCache 大小 120 → 160
  • 并发 30(新增),以并发 24 的设置为基础:
    • prefill-decode interval 32 → 64
    • HiCache 写入策略 write_through → write_back
    • HiCache 大小 120 → 160
  • 并发 34:
    • HiCache 写入策略 write_through → write_back
    • HiCache 大小 150 → 160
  • 并发 44 与 48(新增),以原并发 40 的设置为基础:HiCache 写入策略 write_through → write_back
  • 移除并发 16、20、40。

并发 1、5、8、15 的各点设置不变,只随之更新镜像与 base 的改动。checkpoint 与 DFlash2 draft 设置不变。

AI 模型使用说明:运行环境提供的模型标识为 claude-opus-5-5。工作内容包括执行调优量测、根据实测结果生成配方、主配置和性能变更记录的改动、在本地与实测的服务配置逐项核对,以及起草本 PR 说明。

🤖 Generated with Claude Code

…ency points / [AgentX] 更新 Muse Spark Open GB300 SGLang 镜像并调整并发点

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@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 run only when the PR appends an inferencex-e2e/perf-changelog.yaml entry and carries exactly one primary label: full-sweep-fail-fast (strongly recommended; canary plus per-matrix fail-fast), full-sweep-enabled (canary; matrix jobs continue after a failure), or non-canary-full-sweep-enabled (no canary or fail-fast). The modifiers all-evals, evals-only, and agentx-fast require a primary label. On fork PRs, a maintainer applies the label. See sweep labels and reuse.
  • 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 在 inferencex-e2e/perf-changelog.yaml 末尾追加了条目,并且恰好带有一个主标签时,才会运行扫描:full-sweep-fail-fast(强烈推荐;canary 加逐矩阵 fail-fast)、full-sweep-enabled(有 canary;矩阵任务在失败后继续运行)或 non-canary-full-sweep-enabled(无 canary,也无 fail-fast)。修饰标签 all-evals、evals-only 和 agentx-fast 必须与主标签一起使用。fork PR 的标签由维护者添加。参见扫描标签与复用。
  • **合并后:**PR 作者必须确保所有 GitHub Actions 任务通过。临时性失败通常可以通过重新运行恢复;参见重新运行失败任务的说明。

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

Code review found no issues

No high-confidence issues detected in this change.

@shyeh25 shyeh25 added the full-sweep-fail-fast Full sweep with canary gate; first failure cancels the rest of that matrix (recommended) label Oct 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

@nvpohanh

Copy link
Copy Markdown
Collaborator

[by Claude Code] The SGLang cookbook integration of this PR's AgentX config (musespark-fp4-gb300-sglang-agentic-dflash) will happen in sgl-project/sglang#46005, in the Agentic Long-Context Deployment section of the Muse Spark Open cookbook page.

This PR has no authorized /use <run_id> comment yet, so the cookbook shows the recipe at this PR's head (316905a06) as "in progress". A later cookbook PR switches it to the measured run once a run is pinned or this PR merges.

@nvpohanh

Copy link
Copy Markdown
Collaborator

[by Claude Code] sgl-project/sglang#46005 has been merged. This PR's AgentX config (musespark-fp4-gb300-sglang-agentic-dflash) is now in the Agentic Long-Context Deployment section of the SGLang Muse Spark Open cookbook: https://docs.sglang.io/cookbook/autoregressive/Meta/MuseSparkOpen#agentic-long-context-deployment

This PR has no authorized /use <run_id> comment yet, so the cookbook shows the recipe at this PR's head (316905a06) as "in progress". A later cookbook PR switches it to the measured run once a run is pinned or this PR merges.

@nvpohanh

Copy link
Copy Markdown
Collaborator

/use 39794121900

@nvpohanh

Copy link
Copy Markdown
Collaborator

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 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_MOE is 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
  • 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
  • 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:

  • Scope: one config, musespark-fp4-gb300-sglang-agentic-dflash. It is single-node aggregated SGLang on GB300 with TP4/EP4 and the DFlash2 draft, and runs agentic-coding only. Assessed head: 316905a060115a9a393f6a464d3646b830a3c74e (the only commit in the PR).
    • The image moves to lmsysorg/sglang:nightly-dev-20261021-c1c287a4.
    • The recipe base adds --stream-interval 20 and SGLANG_FLASHINFER_NVFP4_PER_TOKEN_ACTIVATION=0.
    • c10 now uses max-running-requests/cuda-graph-max-bs-decode 3, and c24 uses prefill-decode-interval 96.
    • c34 now uses HiCache write_back with size 160. c16, c20 and c40 are replaced by c28, c30, c44 and c48.
    • One perf-changelog.yaml entry is appended.
  • Code quality: the PR changes only YAML: the existing srt-slurm recipe, one nvidia-master.yaml entry, and one changelog entry at the end of the file. No scripts or shared launchers change. The changelog pr-link uses the pull/XXX placeholder, which main already uses in 5 other entries, and check-changelog passed. The claude[bot] code review found no issues.
  • PR validation: pinned run Run Sweep 39794121900 (pull_request, completed/success, head 316905a0, the current PR head).
    • All 11 agentic / jobs succeeded and none was skipped: c1, c5, c8, c10 and c15 with GPU KV, and c24, c28, c30, c34, c44 and c48 with DRAM HiCache.
    • The agentic eval / job and check-changelog also succeeded.
    • The fixed-sequence, generic eval / and multi-node lanes were skipped because this PR has no such configs.
    • The result artifacts (bmk_agentic_* ×11, eval_results_all) are present and have not expired. Reuse is pinned with /use 39794121900.
  • Evals: the agentic eval / job ran the c48 recipe on the same image (SGLANG_IMAGE_TAG=lmsysorg/sglang:nightly-dev-20261021-c1c287a4, sglang 0.0.0.dev1+gc1c287a42). gsm8k em_strict = 0.9788 (± 0.0040, n=1319). That is above the 0.90 default in infx/evals/thresholds.yaml, which has no musespark override. Accuracy view: https://inferencex.semianalysis.com/evaluation?unofficialRun=39794121900
  • Chat template: AgentX replays through agentx profile with AIPerf against the streaming chat endpoint (/v1/chat/completions). The server uses the checkpoint's Jinja chat template (/model/chat_template.jinja).
  • Draft precision (served as shipped): the draft is RadixArk/Muse-Spark-Open-DFlash2@46c90f41, unchanged by this PR.
    • Shipped precision: BF16. config.json has dtype: bfloat16 and no quantization_config, and the HF safetensors metadata reports 4,887,479,552 BF16 parameters.
    • No draft override in the recipe: it sets no draft quantization, dtype, revision or checkpoint override.
    • Why modelopt_fp4 does not quantize the draft: the pinned image (sglang c1c287a4, SGLANG_BUILD_COMMIT in the worker fingerprint) lets the draft inherit the target's modelopt_fp4 (serving_hook.py#L664-L668). The draft checkpoint has no quant metadata, so that inheritance only selects online NVFP4 (weight_utils.py#L388). Online NVFP4 returns UnquantizedLinearMethod for every LinearBase in a non-FP8 checkpoint and acts only on FusedMoE (nvfp4_online.py#L163-L176). The DFlash2 draft is dense: supports_quantization = False (dflash.py#L648), and dflash.py has no FusedMoE.
    • Runtime check: the logs match. In the c1, c10, c28 and c48 worker logs, the draft loads as Load weight end ... type=DFlash2DraftModel, ... mem usage=3.63 GB on every rank, with no quant= tag. The target logs quant=modelopt_fp4, quant_algo=NVFP4. The draft's 3.63 GB per rank at TP4 is the same BF16 footprint verified for this draft in config(musespark): add GB300 Dynamo SGLang AgentX aggregated points / config(musespark): 新增 GB300 Dynamo SGLang AgentX 聚合配置点 #4344.
    • Effective draft weight precision: BF16 = shipped precision.
    • SGLANG_FLASHINFER_NVFP4_PER_TOKEN_ACTIVATION=0: this only selects per-tensor rather than per-token activation scales in ModelOptFp4Config for the serialized NVFP4 target (modelopt_quant.py#L1478-L1520). The Muse Spark hook enables per-token scales by default when the variable is unset (muse_spark_hook.py#L58-L64). The BF16 draft has no NVFP4 layers, so the setting cannot change it. It is a target-side choice, covered by the passing eval (0.9788, the same score as the earlier per-token Muse Spark runs).
    • Draft KV cache: points using speculative-draft-attention-backend: fa4 (c5, c10, c15) get BF16 draft KV from the image's default handling (DFLASH fa4 draft: overriding KV cache dtype torch.float8_e4m3fn -> torch.bfloat16). c44/c48 keep the earlier c40 settings trtllm_mha + speculative-draft-kv-cache-dtype: fp8_e4m3, which is the same FP8 dtype as the target's kv-cache-dtype: fp8_e4m3. The other points inherit the target's FP8 KV by default.
    • SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE: not enabled.
      • Its default is EnvBool(False) (environ.py#L1102).
      • It is read only by overrides.py#L865 and the DeepSeek NextN helper deepseek_common/utils.py#L131.
      • It is absent from the recipe, the master config, the rendered config.yaml and all five inspected server-log bundles (c1, c10, c28, c48 and the eval). It is also absent from the worker's captured runtime environment (fingerprint_agg_w0.json → env). That environment includes the variables baked into the image (SGLANG_BUILD_COMMIT, SGLANG_IMAGE_TAG, SGLANG_RUST_BUILD_MODE), so the image does not set it either.
  • Golden AL: speculative-num-draft-tokens: 8 is DFlash block size 8, so 7 draft tokens. musespark_dflash.yaml muse-spark-open-816b-a42b-nvfp4 / thinking_on / 7 = 4.05.
    • The rendered server config.yaml and the worker env set SGLANG_SIMULATE_ACC_LEN=4.05, SGLANG_SIMULATE_ACC_METHOD=match-expected and SGLANG_SIMULATE_ACC_TOKEN_MODE=real-draft-token. They are injected by the harness, not hard-coded in the recipe.
    • The mean logged accept len is 4.05 in the c1, c10, c28 and c48 worker logs.
  • MODELS.md: musespark (Muse Spark Open 816B-A42B, added 2026-10-15) is active for Agentic coding with the SGLang DFlash2 draft and golden curve musespark_dflash.yaml, and has no deprecated scenarios (review date 2026-10-23).
  • No architecture hacks: the recipe has no --hf-overrides or --json-model-override-args, and no layer, expert or indexer skipping. The changes are the image, the streaming interval, the target activation-scale mode, and scheduling, CUDA-graph and HiCache settings. None changes model FLOPs.
  • Dynamo TRT-LLM metrics: N/A. This is a direct SGLang deployment with no Dynamo TRT-LLM serving path.
  • Upstream image / engine order: lmsysorg/sglang:nightly-dev-20261021-c1c287a4 comes from the upstream lmsysorg org (sglang commit c1c287a4). This is an SGLang submission, so engine-first ordering is satisfied.
  • Upstream recipe: sgl-project/sglang#46005 is MERGED (2026-10-23T08:04:02Z, merge commit 02d24451). It is published at https://docs.sglang.io/cookbook/autoregressive/Meta/MuseSparkOpen#agentic-long-context-deployment. The source is docs/src/snippets/agentx/meta-models/muse-spark-open.jsx, cell musespark-fp4-gb300-sglang-agentic-dflash#0, with provenance pr 4404, sha 316905a0; it is unchanged on sglang main since the merge.
    • Launch command: it documents the image lmsysorg/sglang:nightly-dev-20261021-c1c287a4 and the python3 -m sglang.launch_server command matching the recipe base:
      • TP4/EP4, modelopt_fp4, flashinfer_trtllm MoE and fp8_e4m3 KV.
      • swa-full-tokens-ratio 0.3, chunked prefill 8192, and layernorm-SP + MegaMoE.
      • DFLASH with DFlash2 and 8 draft tokens.
      • mm-feature-transport cpu, the muse parsers, watchdog-timeout 3600 and --stream-interval 20.
      • The env vars SGLANG_FLASHINFER_NVFP4_PER_TOKEN_ACTIVATION=0, SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1 and SGLANG_TIMEOUT_KEEP_ALIVE=900.
    • Per-concurrency overrides: it documents every override for c1, c5, c8, c10, c15, c24, c28, c30, c34, c44 and c48. These match the recipe line by line, including the new c10, c24, c28, c30, c34, c44 and c48 values and their env vars (SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK, SGLANG_TRTLLM_MHA_DECODE_SEQ_LEN_SPLITS).
    • InferenceX-only settings, excluded from upstream coverage:
      • enable-metrics, which the AIPerf harness scrapes.
      • PYTHONNOUSERSITE/PYTHONUNBUFFERED, HF_HUB_OFFLINE and the staged /model checkpoint and served-model-name plumbing.
      • The health-check polling, Slurm and observability blocks.
      • All benchmark.env client settings (TOKENIZER, AIPERF_*, CONC).
      • dram-utilization.
      • The harness-injected SGLANG_SIMULATE_ACC_* synthetic-acceptance env, which must not be used in production.
  • No engine patches: the diff adds only YAML. The recipe has no setup scripts, patches, pip install, file overwrites or monkey-patching, so no waiver is needed.
  • append-only: true: N/A. The appended changelog entry does not use append-only.
  • Pareto coverage: there is one affected curve, Muse-Spark-Open · agentic-coding · gb300_sglang · FP4. No other config maps to this series; the Dynamo GB300 config is a separate dynamo-sglang series.
    • Source: the 11 bmk_agentic_musespark_tp4_conc* artifacts of run 39794121900 (attempt 1, head 316905a0, image lmsysorg/sglang:nightly-dev-20261021-c1c287a4). x = E2EL (s) and y = throughput.per_gpu.total_tput_tps. Computed with infx.workflows.pareto_coverage.
    • P90 E2EL: 9 frontier points / 11 measured (c5, c8, c10, c15, c24, c28, c34, c44, c48), as (s, tok/s/GPU): (10.25, 9023), (10.91, 14799), (12.62, 17207), (13.72, 21687), (19.61, 29535), (21.17, 40988), (27.61, 45858), (31.68, 53594), (35.98, 55725).
    • P75 E2EL (reported separately): 9 frontier points / 11 measured (c5, c8, c15, c24, c30, c28, c34, c44, c48).
    • No invalid or missing points. Dashboard: https://inferencex.semianalysis.com/inference?unofficialRun=39794121900

Signed: nvpohanh

@github-actions

Copy link
Copy Markdown
Contributor

@nvpohanh staging run 39794121900. Existing staged runs will be preserved; a completion link will be posted here.

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

✅✅✅ Verdict: PASS ✅✅✅

Passed and not applicable checks

✅ Check 0 (CODEOWNER): PASS — @nvpohanh is a named owner of inferencex-e2e/configs/nvidia-master.yaml and of the srt-slurm-recipes/**/gb300-*/ recipe path; perf-changelog.yaml falls under the catch-all.

✅ Check 1 (Sweep on in-PR commit): PASS — the PR's only commit, 316905a0 (the pinned head), carries run 39794121900 (pull_request, attempt 1, success). All 11 executed single-node agentic / jobs (c1–c48) and agentic eval / concluded success. The fixed-sequence single-node */ and generic eval / lanes were skipped because the PR has no such configs.

✅ Check 2 (Evals pass): PASS — eval_results_all from run 39794121900 shows gsm8k em_strict 0.9788 (±0.0040, n=1319) for musespark fp4 GB300 TP4/EP4 c48. That clears the 0.90 default in thresholds.yaml, which has no musespark override. The eval ran on lmsysorg/sglang:nightly-dev-20261021-c1c287a4, the PR image.

✅ Check 3 (Upstream recipe): PASS — sgl-project/sglang#46005 is MERGED (2026-10-23T08:04:02Z, 02d24451), and the snippet is unchanged on main since then. Cell musespark-fp4-gb300-sglang-agentic-dflash#0 (provenance pr 4404 / sha 316905a) documents the same image and the sglang.launch_server agg command: TP4/EP4, modelopt_fp4, flashinfer_trtllm, fp8_e4m3 KV, DFLASH/DFlash2/8 draft tokens, --stream-interval 20, SGLANG_FLASHINFER_NVFP4_PER_TOKEN_ACTIVATION=0. Every per-point override for c1–c48, including the new c10/c24/c28/c30/c34/c44/c48 values and their env vars, matches the recipe at the pinned SHA. The excluded settings (enable-metrics, harness env, synthetic acceptance) are justified in the sign-off.

✅ Check 4 (Reuse command): PASS — nvpohanh (COLLABORATOR) posted /use 39794121900 on its own line, pointing at the Check 1 run.

✅ Check 5 (Latest template): PASS — every item in the current PR_REVIEW_CHECKLIST.md template, including the draft-precision, Dynamo-metrics and Pareto items, appears checked in the sign-off.

✅ Check 6 (Upstream image / engine order): PASS — musespark-fp4-gb300-sglang-agentic-dflash (framework sglang) uses upstream lmsysorg/sglang:nightly-dev-20261021-c1c287a4. This is an open-source engine entry, so the engine-first ordering rule does not apply.

✅ Check 7 (Deprecated models): PASS — on 2026-10-23, MODELS.md lists musespark (added 2026-10-15) as active for Agentic coding with the SGLang DFlash2 draft, with no deprecated scenarios.

✅ Check 8 (No architecture hacks): PASS — the diff has no --hf-overrides, --json-model-override-args or config edits. The changes are the image, stream interval, activation-scale mode, scheduling, CUDA-graph and HiCache settings.

✅ Check 9 (Chat template): PASS — AgentX replays agentic traces through AIPerf against /v1/chat/completions, so the server applies the checkpoint chat template.

✅ Check 10 (No engine patches): PASS — the PR changes only YAML (recipe, master config, changelog), with no patches, heredocs, pip installs or file overwrites.

✅ Check 11 (Golden AL): PASS — speculative-num-draft-tokens: 8 maps to 7 draft tokens (synthetic_acceptance.py uses width−1). musespark_dflash.yaml gives thinking_on/7 = 4.05, and the c1 job log shows the harness applied SGLANG_SIMULATE_ACC_LEN=4.05 with match-expected and real-draft-token.

➖ Check 12 (Append-only): N/A — the new changelog entry does not set append-only: true.

✅ Check 13 (Draft precision): PASS — the DFlash2 draft config is bfloat16 with no quantization_config and no MoE. The recipe sets no draft quantization, dtype or path override. In the pinned sglang c1c287a4, the draft inherits modelopt_fp4, which resolves to online-weight quantization. That leaves LinearBase unquantized and acts only on FusedMoE, and dflash.py has no FusedMoE (supports_quantization = False), so the draft runs in its shipped BF16. The c44/c48 FP8 draft KV matches the target's fp8_e4m3 KV. SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE defaults to EnvBool(False), is absent from the recipe and the launched env, and is read only on the DeepSeek/HIP/EAGLE path.

✅ Check 14 (Pareto coverage): PASS — one curve, Muse-Spark-Open / agentic-coding / gb300_sglang / FP4, from the 11 bmk_agentic_musespark_tp4_conc* artifacts of run 39794121900 (attempt 1, sha 316905a, same image). Using total_tput_tps against p90_e2el, the frontier has 9 of 11 points (c1 and c30 are dominated); P75 is also 9 of 11. Counts were computed by hand with upper_right semantics because the sandbox blocked the helper's stdin.

✅ Check 15 (PR description): PASS — the body's claims match the pinned recipe and master config: the image, the base stream-interval and env change, c10 3, c24 PDI 96, c28/c30/c34 write_back with size 160, c44/c48 derived from c40, removal of c16/c20/c40, and the conc lists.

✅ Check 16 (NVIDIA overview): PASS — the NVIDIA overview Framework Recipes table lists Muse-Spark-Open with SGLang populated.

➖ Check 17 (Metrics publication): N/A — this is a direct SGLang deployment with no Dynamo TRT-LLM serving path.

Assessed commit: 316905a060115a9a393f6a464d3646b830a3c74e.

@Oseltamivir
Oseltamivir merged commit dae7067 into main Oct 23, 2026
28 checks passed
@Oseltamivir
Oseltamivir deleted the musespark-fp4-gb300-sglang-agentic-c1c287a4 branch October 23, 2026 12:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

full-sweep-fail-fast Full sweep with canary gate; first failure cancels the rest of that matrix (recommended)

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants