Skip to content

[AgentX] Retune Muse Spark Open GB300 SGLang per concurrency / [AgentX] 按并发重新调优 Muse Spark Open GB300 SGLang - #4724

Merged
nvpohanh merged 2 commits into
mainfrom
musespark-fp4-gb300-sglang-agentic-retune-1101
Nov 4, 2026
Merged

nvpohanh merged 2 commits into
mainfrom
musespark-fp4-gb300-sglang-agentic-retune-1101

Conversation

@shyeh25

@shyeh25 shyeh25 commented Nov 1, 2026

Copy link
Copy Markdown
Collaborator

Summary

Move the Muse Spark Open GB300 SGLang AgentX curve to lmsysorg/sglang:nightly-dev-cu13-20261030-302b78cc and retune it per concurrency:

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

Concurrency 5, 28 and 34 are removed. Each removed point is covered by the new curve on throughput per GPU and mean interactivity: concurrency 5 lies below the line between concurrency 4 and 8, and concurrency 28 and 34 lie below the line between concurrency 30 and 40.

Per-point changes:

  • Concurrency 4 (new):
    • request admission and decode graph batch 1
    • memory fraction 0.88
    • shortest-prefill-first scheduling
  • Concurrency 8:
    • request admission and decode graph batch 3 → 2
    • prefill-decode interval 64 → 128, prefill-decode-interval-min-bs 1
    • shortest-prefill-first scheduling
    • draft attention backend fa4
  • Concurrency 10:
    • shortest-prefill-first scheduling
  • Concurrency 24:
    • prefill-decode-interval-min-bs 2
  • Concurrency 30:
    • prefill-decode-interval-min-bs 3
    • HiCache size 160 → 150
  • Concurrency 40 (new), HiCache 150 GB write_back:
    • request admission and decode graph batch 18
    • memory fraction 0.95
    • chunked prefill and max prefill tokens 16384
    • prefill CUDA graph backend breakable
    • shortest-prefill-first scheduling
    • prefill-decode interval 48
    • SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK=4096, SGLANG_TRTLLM_MHA_DECODE_SEQ_LEN_SPLITS=4
  • Concurrency 44:
    • request admission and decode graph batch 24 → 20
    • memory fraction 0.9 → 0.95
    • SWA full-tokens ratio 0.1 → base (0.3)
    • chunked prefill disabled → 16384, max prefill tokens 16384
    • prefill CUDA graph backend breakable
    • shortest-prefill-first scheduling
    • prefill-decode interval 48
    • draft attention backend and draft KV cache dtype back to the base defaults (drop trtllm_mha and fp8_e4m3)
    • HiCache size 149 → 150
    • drop tokenizer workers 4 and incremental streaming output
    • SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK=4096

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

AI model disclosure
  • Model/version: claude-opus-5-5
  • Role: tuning, config changes
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-cu13-20261030-302b78cc,并按并发重新调优:

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

移除并发 5、28、34。每个移除的点在每 GPU 吞吐与平均交互性上都被新曲线覆盖:并发 5 位于并发 4 与 8 的连线下方,并发 28 与 34 位于并发 30 与 40 的连线下方。

各点改动:

  • 并发 4(新增):
    • 请求数上限与 decode graph batch 1
    • memory fraction 0.88
    • shortest-prefill-first 调度
  • 并发 8:
    • 请求数上限与 decode graph batch 3 → 2
    • prefill-decode interval 64 → 128,prefill-decode-interval-min-bs 1
    • shortest-prefill-first 调度
    • draft attention backend fa4
  • 并发 10:
    • shortest-prefill-first 调度
  • 并发 24:
    • prefill-decode-interval-min-bs 2
  • 并发 30:
    • prefill-decode-interval-min-bs 3
    • HiCache 大小 160 → 150
  • 并发 40(新增),HiCache 150 GB write_back:
    • 请求数上限与 decode graph batch 18
    • memory fraction 0.95
    • chunked prefill 与 max prefill tokens 16384
    • prefill CUDA graph backend breakable
    • shortest-prefill-first 调度
    • prefill-decode interval 48
    • SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK=4096、SGLANG_TRTLLM_MHA_DECODE_SEQ_LEN_SPLITS=4
  • 并发 44:
    • 请求数上限与 decode graph batch 24 → 20
    • memory fraction 0.9 → 0.95
    • SWA full-tokens ratio 0.1 → base(0.3)
    • chunked prefill 关闭 → 16384,max prefill tokens 16384
    • prefill CUDA graph backend breakable
    • shortest-prefill-first 调度
    • prefill-decode interval 48
    • draft attention backend 与 draft KV cache dtype 回到 base 默认值(去掉 trtllm_mha 与 fp8_e4m3)
    • HiCache 大小 149 → 150
    • 去掉 tokenizer workers 4 与 incremental streaming output
    • SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK=4096

并发 1、15、48 保留原各点设置,只换新镜像。checkpoint 与 DFlash2 draft 设置不变。

🤖 Generated with Claude Code

…X] 按并发重新调优 Muse Spark Open GB300 SGLang

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 1, 2026

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.

I reviewed this PR and didn't find any bugs. The NVIDIA config and GB300 recipe paths have CODEOWNERS, and the per-point tuning values are performance choices, so a code owner should still take a look.

What was reviewed:

  • Every conc in both master conc-lists (1, 4, 8, 10, 15 and 24, 30, 40, 44, 48) has a matching override_tp4_cN block. None are orphaned: c5, c28 and c34 were removed or renamed.
  • In every override, max-running-requests equals cuda-graph-max-bs-decode. The overrides set no image, model or benchmark command, only CONC.
  • The perf-changelog entry is appended only at the tail. Its pull/XXX placeholder link follows a pattern already used elsewhere in the file.
Extended reasoning...

The change switches the image for musespark-fp4-gb300-sglang-agentic-dflash and replaces two conc-list entries in nvidia-master.yaml. It also retunes the matching single-node GB300 srt-slurm recipe overrides and appends one perf-changelog entry. None of it touches security-sensitive areas like auth, injection or data exposure. It is benchmark config only. The bug hunt ended on a dry streak with no findings. I deferred because CODEOWNERS assigns both nvidia-master.yaml and the gb300-* recipe tree to specific NVIDIA owners. The retuned values are also empirical choices that only a sweep can validate.

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

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

@nvpohanh

nvpohanh commented Nov 2, 2026

Copy link
Copy Markdown
Collaborator

/use 41327192200

@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

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

@nvpohanh

nvpohanh commented Nov 2, 2026

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#47929, in the Agentic Long-Context Deployment section of the Muse Spark Open cookbook page.

The commands mirror the launch measured in run 41327192200, pinned by this PR's /use comment.

@nvpohanh

nvpohanh commented Nov 3, 2026

Copy link
Copy Markdown
Collaborator

[by Claude Code] sgl-project/sglang#47929 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

The commands mirror the launch measured in run 41327192200, pinned by this PR's /use comment.

@nvpohanh

nvpohanh commented Nov 3, 2026

Copy link
Copy Markdown
Collaborator

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.
  • 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
  • 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:

  • Scope: one config, musespark-fp4-gb300-sglang-agentic-dflash (single-node aggregated SGLang on GB300 with DFlash2), agentic-coding only. Changed files: musespark/sglang/gb300-fp4-mtp/agentic.yaml, nvidia-master.yaml (image nightly-dev-20261021-c1c287a4 → nightly-dev-cu13-20261030-302b78cc; TP4/EP4 c1, 4, 8, 10, 15 and TP4/EP4 HiCache c24, 30, 40, 44, 48) and one appended perf-changelog.yaml entry. Assessed head: 98ea294c, the only commit in the PR.
  • PR validation: Run Sweep 41327192200 (attempt 1, pull_request) on head 98ea294c. All 10 agentic / jobs succeeded (TP4 c1, 4, 8, 10, 15; TP4 HiCache c24, 30, 40, 44, 48), as did all 4 agentic eval / jobs, check-changelog and collect-evals. Fixed-sequence and multi-node lanes were skipped because this PR has no such configs. The run is pinned with /use 41327192200, and its bmk_agentic_* and eval_results_all artifacts are unexpired (until 2027-01-30). Every point used the semianalysis_cc_traces_weka_062126 corpus.
  • Evals: eval_results_all from run 41327192200, gsm8k em_strict (n=1319): TP4 c15 0.9765, HiCache c30 0.9773, c44 0.9742, c48 0.9750. All are above the 0.90 default threshold in infx/evals/thresholds.yaml (no musespark override). They are within 2σ of each other and of the closest ingested GB300 cohort (run 39794121900, TP4 c48, 0.9788). The evals ran on the same image as the benchmark jobs.
  • Chat template: AgentX replays through agentx profile with AIPerf input_config.endpoint.type: chat (streaming chat completions) at every point (profile_export_aiperf.json in each server_logs_* artifact). Every server runs with chat_template='/model/chat_template.jinja'.
  • Draft precision (served as shipped): the draft is RadixArk/Muse-Spark-Open-DFlash2 (speculative_draft_model_revision='main', HF sha 46c90f41). It ships as BF16: safetensors metadata reports 4,887,479,552 parameters, all BF16. No point sets a draft quantization, dtype, revision, checkpoint or draft-KV-dtype override beyond what is noted below. On every point the server args show _speculative_draft_quantization_explicitly_set=False and json_model_override_args='{}'.
    • The server args show speculative_draft_model_quantization='modelopt_fp4'. This comes from the pinned image's default inheritance of the target's --quantization (serving_hook.py), not from a submission setting. The draft checkpoint has no quantization metadata, so weight_utils.get_quant_config uses ModelOptFp4Config.for_online_weight_quantization → nvfp4_online.get_quant_method. That returns UnquantizedLinearMethod for every LinearBase layer (the checkpoint is not FP8-serialized) and quantizes only FusedMoE. models/dflash.py (DFlash2DraftModel, dense DFlashMLP) has no FusedMoE. This holds at the pinned image's sglang commit.
    • The logs match: on every point the draft loads as Load weight end … type=DFlash2DraftModel with no quant tag, at 3.63 GB per GPU at TP4 (BF16-sized). The target logs quant=modelopt_fp4, quant_algo=NVFP4. Shipped draft precision: BF16. Effective draft weight/activation precision: BF16, at every point.
    • Draft KV cache: c8, c10 and c15 use fa4 draft attention, and the image forces BF16 draft KV there (overriding KV cache dtype torch.float8_e4m3fn -> torch.bfloat16). The other points use trtllm_mha draft attention: unset at c1, c4, c24, c30, c40 and c44, so the image takes the target backend, and set explicitly at c48. Their draft KV is FP8 (Post-capture KV sizing: draft KV cache allocated. dtype: torch.float8_e4m3fn), which is the upstream-supported fp8_e4m3 KV dtype applied consistently to target and draft. c48 (unchanged by this PR) keeps an explicit speculative-draft-kv-cache-dtype: fp8_e4m3. That only restates the dtype the draft inherits from the target on the trtllm_mha path, as the c44 point (which this PR moved off the explicit setting) shows: it allocates the same FP8 draft KV. The c44 change therefore leaves the effective draft KV dtype unchanged.
    • SGLANG_FLASHINFER_NVFP4_PER_TOKEN_ACTIVATION=0 is already in this recipe's base env on main (unchanged by this PR). It is a target-only setting. At the pinned sglang commit it is read only by ModelOptFp4Config.__init__ for serialized NVFP4 checkpoints and by the MoE runner hook. It selects per-tensor instead of per-token FP32 activation scales for the target's NVFP4 GEMMs, and the passing evals cover it. The draft has no serialized NVFP4 metadata (online config, see above), so it is unaffected.
    • SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE is not enabled. It does not appear in the recipe, the master config, the generated config.yaml/sbatch_script.sh, or the server logs of any point. Its pinned default is EnvBool(False) (environ.py), and DFlash2 is a dense draft with no NextN MoE.
  • Golden AL: DFlash speculative-num-draft-tokens: 8 maps to num_speculative_tokens = 7. musespark_dflash.yaml gives muse-spark-open-816b-a42b-nvfp4 / thinking_on / 7 = 4.05 (signoff_facts golden-al --model musespark --method dflash --tokens 7 --thinking thinking_on → matches: true). Every point's server env has SGLANG_SIMULATE_ACC_LEN=4.05, SGLANG_SIMULATE_ACC_METHOD=match-expected and SGLANG_SIMULATE_ACC_TOKEN_MODE=real-draft-token, injected by the harness (the recipe hard-codes none).
  • MODELS.md: musespark (Muse Spark Open 816B-A42B, added 2026-10-15) lists Agentic coding with SGLang and the DFlash2 draft as active, with no deprecated scenarios (review date 2026-11-03).
  • No architecture hacks: there is no --hf-overrides or json-model-override-args (effective '{}'), and no layer, expert or indexer skipping. The changes cover image, request admission, CUDA-graph batch/backend, memory fraction, SWA pool ratio, scheduling policy, prefill-decode interval, stream interval, chunked prefill, HiCache sizing, and draft attention backend.
  • Integer all-reduce: musespark is in the policy-baseline model support matrix, so it is grandfathered. This is also a CUDA path: no *QUICK_REDUCE_QUANTIZATION or other all-reduce quantization control appears in the recipe, the resolved configs, or the captured worker environment.
  • Dynamo TRT-LLM metrics: N/A. This is a direct SGLang deployment (framework: sglang) with no Dynamo TRT-LLM serving path.
  • Upstream image / main-branch provenance / engine order: lmsysorg/sglang:nightly-dev-cu13-20261030-302b78cc comes from the upstream lmsysorg org and resolves now (check_18c_images). It is a multi-arch tag. GB300 pulls the arm64 manifest sha256:1b5bfd57… (pushed 2026-10-30T01:58Z, before this run), and the run fingerprint reports SGLang 0.0.0.dev1+g52604e1d4. Both sgl-project/sglang 302b78cc (#46024, named in the tag) and 52604e1d4 (#47208, 6 commits later) are ancestors of main (compare 52604e1d4...main: behind 0), so this is a main-branch nightly. The 6 intervening commits do not touch quantization, DFlash, speculative or model-loader code. This is an SGLang submission, so the engine-first ordering is satisfied.
  • Upstream recipe: sgl-project/sglang#47929 is MERGED (2026-11-03T03:28:14Z, merge commit cd41d53d69). It is published at https://docs.sglang.io/cookbook/autoregressive/Meta/MuseSparkOpen#agentic-long-context-deployment (docs/src/snippets/agentx/meta-models/muse-spark-open.jsx), with GB300 cell musespark-fp4-gb300-sglang-agentic-dflash#0 (Agg TP4·EP4: GPU-resident KV and HiCache items), provenance sha 98ea294c, run 41327192200, pr 4724.
    • I decoded every cookbook launch with the page's own decoder (_agentx.jsx at sglang main) and compared it, point by point, with the resolved config.yaml and the actual python3 -m sglang.launch_server argv in each server_logs_* artifact of run 41327192200. Every flag and env var matches for every measured point: image, model, TP/EP, modelopt_fp4, flashinfer_trtllm MoE, fp8_e4m3 KV, DFLASH + DFlash2 with 8 draft tokens, draft attention backend, muse parsers, and all per-concurrency overrides (admission, CUDA-graph batch/backend, memory fraction, SWA ratio, scheduling, prefill-decode interval, stream interval, chunked prefill, HiCache size/write policy, layernorm SP/MegaMoE, and the SGLANG_*/PYTORCH_CUDA_ALLOC_CONF env). The cookbook additionally shows NCCL_CUMEM_ENABLE=1, which the measured workers also had (cluster environment).
    • InferenceX-only settings excluded from upstream coverage: --enable-metrics (scraped by the AIPerf harness); --enable-cache-report (adds cached-token counts to response usage for the harness's cache accounting, with no change to scheduling, caching or kernels); the staged /model path, --host/--port/--nccl-port launcher plumbing; PYTHONNOUSERSITE/PYTHONUNBUFFERED; HF_HUB_OFFLINE; health-check polling; all benchmark.env client settings (TOKENIZER, AIPERF_*, CONC, KV_OFFLOADING); and the harness-injected synthetic-acceptance env (SGLANG_SIMULATE_ACC_*).
    • NVIDIA overview: Muse-Spark-Open is listed with SGLang ✅ in the Framework Recipes table of https://docs.nvidia.com/llm-inference-quick-start-recipes/overview.
  • No engine patches: the diff changes only YAML. The effective recipe has no setup script, patch, pip install, file overwrite or monkey-patching, and the generated sbatch_script.sh and config.yaml of every point contain none. 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. All points of this config share that series, and no other config maps to it. Counts use the bmk_agentic_* artifacts of run 41327192200 (attempt 1, head 98ea294c), with x = E2EL (s) and y = request_metrics.throughput.per_gpu.total_tput_tps, computed with infx.workflows.pareto_coverage:
    • P90 E2EL: 7 frontier points / 10 measured (TP4 c10, c15; HiCache c24, c30, c40, c44, c48).
    • P75 E2EL (reported separately): 6 frontier points / 10 measured (TP4 c15; HiCache c24, c30, c40, c44, c48).
    • No invalid or missing points.
  • Removed points: c5, c28 and c34. signoff_facts report at 98ea294c finds undominated_removed: [] and unmeasured_removed: [], so every removed point is covered by the measured head curve. Re-tuned deltas (tput/GPU, mean interactivity): c44 −5.3% / +23.2%, c8 −4.6% / +12.2%, c24 +6.7% / −0.8%, c30 +7.3% / −1.2%; the rest are within ±4%.
  • CPU DRAM policy: the largest HiCache pool is 150 GB per rank × 4 ranks = 600 GB on one GB300 NVL72 compute tray (4 of 4 GPUs), within the tray's standard CPU DRAM.
  • The changelog pr-link uses the pull/XXX placeholder, which validate_perf_changelog.py accepts (check-changelog passed).
  • The PR branch currently conflicts with main only in the append-only inferencex-e2e/perf-changelog.yaml tail (git merge-tree), which is resolved at merge. The pinned run stays reusable for that merge.

Signed: nvpohanh

@github-actions

github-actions Bot commented Nov 3, 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 **/gb300-*/ srt-slurm recipe path; perf-changelog.yaml falls under the catch-all, which any listed CODEOWNER covers.

✅ Check 1 (Sweep on in-PR commit): PASS — The PR's only commit is the pinned head 98ea294c, and run 41327192200 (attempt 1, pull_request, headSha 98ea294c) ran on it. All 10 executed agentic / jobs and all 4 agentic eval / jobs succeeded. The fixed-sequence lanes were skipped because this PR has no such configs. No later commits.

✅ Check 2 (Evals): PASS — eval_results_all from run 41327192200 has gsm8k em_strict (n=1319) of 0.9765 (TP4 c15), 0.9773 (HiCache c30), 0.9742 (c44) and 0.9750 (c48). The eval check-runs are tagged with image lmsysorg/sglang:nightly-dev-cu13-20261030-302b78cc. Every row is within 2σ of its best sibling and of the exact-scope GB300 cohort (run 39794121900, c48 0.9788). The changed scheduling and chunked-prefill settings are exercised by the c30 and c44 evals; this PR makes no conditional kernel change.

✅ Check 3 (Upstream recipe): PASS — sgl-project/sglang#47929 was MERGED on 2026-11-03T03:28:14Z. On sglang main, muse-spark-open.jsx has cell musespark-fp4-gb300-sglang-agentic-dflash#0 with provenance sha 98ea294c, run 41327192200 and PR 4724. Its base launch command and the c1-c48 per-point args and env match the pinned recipe. The sign-off justifies the InferenceX-only exclusions (metrics/cache-report, harness, simulated acceptance).

✅ Check 4 (Reuse command): PASS — nvpohanh (COLLABORATOR) posted /use 41327192200 on its own line on 2026-11-02.

✅ Check 5 (Latest checklist): PASS — The sign-off contains every item of the current PR_REVIEW_CHECKLIST.md template, including the merged-upstream sub-item, and all are checked.

✅ Check 6 (Upstream image/provenance/order): PASS — lmsysorg/sglang:nightly-dev-cu13-20261030-302b78cc is from the upstream lmsysorg org. sglang 302b78cc and the fingerprinted 52604e1d4 are both on main (compare: behind_by 0). This is a direct SGLang entry, so the engine-first ordering rule does not apply.

✅ Check 7 (Deprecated models): PASS — musespark (added 2026-10-15) has Agentic coding active in MODELS.md and no deprecated scenarios as of 2026-11-03.

✅ Check 8 (No arch hacks): PASS — The diff changes only scheduling, memory, CUDA-graph, chunked-prefill, HiCache and draft-attention tuning. There are no --hf-overrides or model-override args and no indexer, layer or expert skipping. musespark is in the policy-baseline matrix at 2a45791d (grandfathered), and on this CUDA path no quick-reduce quantization control is set.

✅ Check 9 (Chat template): PASS — AgentX replays through AIPerf's streaming chat-completions endpoint, so the spec-decode points are benchmarked through the model's chat template.

✅ Check 10 (No engine patches): PASS — The diff is YAML-only. The pinned recipe has no setup script, patch, pip install, file overwrite or monkey-patch.

✅ Check 11 (Agentic golden AL): PASS — DFlash speculative-num-draft-tokens: 8 means 7 speculative tokens, and musespark_dflash.yaml gives thinking_on/7 = 4.05. The c44 launch shows harness-injected SGLANG_SIMULATE_ACC_LEN=4.05, SGLANG_SIMULATE_ACC_METHOD=match-expected and SGLANG_SIMULATE_ACC_TOKEN_MODE=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 draft is RadixArk/Muse-Spark-Open-DFlash2, which ships in BF16. At pinned sglang 52604e1d4, the inherited modelopt_fp4 maps to nvfp4_online. That config returns UnquantizedLinearMethod for LinearBase on non-FP8-serialized checkpoints and quantizes only FusedMoE, and DFlashMLP is dense, so the draft weights stay BF16. Draft KV follows the target's upstream-supported FP8, or fa4's BF16. SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE defaults to EnvBool(False) and is set nowhere.

✅ Check 14 (Pareto coverage): PASS — There is one curve: musespark · agentic-coding · gb300_sglang · fp4, measured from the bmk_agentic_* artifacts of run 41327192200 (attempt 1, sha 98ea294c, one image). P90 E2EL vs total tput/GPU: 7/10 frontier points (c10, c15, c24, c30, c40, c44, c48). P75 (reported separately): 6/10.

✅ Check 15 (PR description): PASS — The body's per-point claims (new c4/c40, the c8/c10/c24/c30/c44 changes, c1/c15/c48 unchanged apart from the image, removal of c5/c28/c34) match the pinned recipe and master config.

✅ Check 16 (NVIDIA overview): PASS — Muse-Spark-Open is listed with SGLang ✅ in the Framework Recipes table of the NVIDIA overview.

➖ Check 17 (Dynamo metrics): N/A — This is a direct framework: sglang deployment with no Dynamo TRT-LLM serving path.

✅ Check 18 (Recipe/image/sweep consistency): PASS — Head generation has no errors. TP4/EP4 on 4 GPUs and both conc lists match the override_tp4_c* blocks. The image resolves now. There are no orchestration or dispatch changes. The changelog accurately describes the image bump, the retune and the point changes. undominated_removed and unmeasured_removed are both empty. Re-tune deltas (tput/GPU, mean interactivity): c44 -5.3%/+23.2%, c8 -4.6%/+12.2%, c24 +6.7%/-0.8%, c30 +7.3%/-1.2%; the rest are within ±4%.

Assessed commit: 98ea294c289546dca624e1f07d9d3d2106715741.

@functionstackx functionstackx left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Approved at Oren’s request.

@nvpohanh nvpohanh removed the full-sweep-fail-fast Full sweep with canary gate; first failure cancels the rest of that matrix (recommended) label Nov 4, 2026
@nvpohanh

nvpohanh commented Nov 4, 2026

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run 41327192200

# Conflicts:
#	inferencex-e2e/perf-changelog.yaml
@nvpohanh
nvpohanh merged commit 57116ff into main Nov 4, 2026
30 checks passed
@nvpohanh
nvpohanh deleted the musespark-fp4-gb300-sglang-agentic-retune-1101 branch November 4, 2026 07:12
@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Ingest report — ✅ Results ingested into the production database.

Ingest workflow · Merge Ingest run · Benchmark source run

Category new duplicate skipped unmapped failed
benchmark 10 0 0 0 0
eval 4 4 4 0 0
trace 10 0 0 0 0
power 10 0 0 0 0

benchmarkFiles 10, rawBenchmarkRows 10, coveredByPerJobFiles 0, purgedPoints 0, failedRunRows 0, runStatsNew 0, runStatsDuplicate 0, evalSamplesNew 5276, gpuMetricSamplesNew 206272, powerPublicationPoints 10, 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 报告 — ✅ 结果已写入 production 数据库。

上表仅统计本次运行写入的数据,各行单位依次为 benchmark_results 行、eval_results 行、已关联 trace 的 agentic 行和 gpu_metrics 序列。重新运行 ingest 时本评论会原地更新。

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

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants