config(musespark): tune GB300 SGLang AgentX settings per concurrency / config(musespark): 按并发调整 GB300 SGLang AgentX 参数 by shyeh25 · Pull Request #4342 · SemiAnalysisAI/InferenceX · GitHub
Skip to content

config(musespark): tune GB300 SGLang AgentX settings per concurrency / config(musespark): 按并发调整 GB300 SGLang AgentX 参数 - #4342

Merged
adibarra merged 4 commits into
mainfrom
musespark-fp4-gb300-sglang-agentic-per-conc
Oct 22, 2026
Merged

adibarra merged 4 commits into
mainfrom
musespark-fp4-gb300-sglang-agentic-per-conc

Conversation

@shyeh25

@shyeh25 shyeh25 commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Replace the Muse Spark Open GB300 SGLang AgentX zip sweep (TP4/EP4 at concurrency 1–32) with 10 per-concurrency points, each with its own override_tp4_c{conc} section:

  • TP4/EP4, GPU-resident KV: concurrency 1, 5, 8, 10, 15
  • TP4/EP4, DRAM HiCache (120–150 GB per rank): concurrency 16, 20, 24, 34, 40

Per point, the recipe sets request admission and decode graph batch limits, memory fraction, prefill-decode interval and chunked prefill; concurrency 16–34 use shortest-prefill-first, concurrency 10, 15 and 40 run 4 tokenizer workers with incremental streaming output, and concurrency 34 and 40 set SGLANG_TRTLLM_MHA_DECODE_SEQ_LEN_SPLITS=4. The base raises the SWA/full ratio to 0.3, frees out-of-window SWA slots, and removes the explicit fa4 draft attention backend so SGLang uses the image default (trtllm_mha). Concurrency 5, 10 and 15 keep fa4. Concurrency 40 sets speculative-draft-attention-backend: trtllm_mha and speculative-draft-kv-cache-dtype: fp8_e4m3 explicitly, which restates that default. As a result, the draft KV cache changes from BF16 (forced by fa4) to FP8 fp8_e4m3 at concurrency 1, 8, 16, 20, 24, 34 and 40, inheriting the target's KV cache dtype. It stays BF16 at concurrency 5, 10 and 15. The draft weights are unchanged: the image, target checkpoint and DFlash2 draft checkpoint (RadixArk/Muse-Spark-Open-DFlash2, served as shipped in BF16 with 8 draft tokens) are the same as before.

AI model disclosure
  • Model/version: claude-opus-5-5 (the identifier exposed by the runtime).
  • Role: ran the tuning campaign (the orchestrating agent and its delegated task agents all used claude-opus-5-5), generated the recipe, master-config and perf-changelog changes from the measured runs, checked them locally, 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 的 zip sweep(TP4/EP4、并发 1–32)替换为 10 个按并发配置的点,每个点有独立的 override_tp4_c{conc} 段:

  • TP4/EP4,KV 仅驻留 GPU:并发 1、5、8、10、15
  • TP4/EP4,DRAM HiCache(每 rank 120–150 GB):并发 16、20、24、34、40

每个点分别设置请求准入与 decode graph 批大小上限、显存占用比例、prefill-decode interval 和 chunked prefill;并发 16–34 使用 shortest-prefill-first,并发 10、15、40 使用 4 个 tokenizer worker 及增量流式输出,并发 34 和 40 设置 SGLANG_TRTLLM_MHA_DECODE_SEQ_LEN_SPLITS=4。基础配置将 SWA/full 比例提高到 0.3,释放窗口外的 SWA 槽位,并移除显式指定的 fa4 草稿注意力后端,改用镜像默认值(trtllm_mha)。并发 5、10、15 仍使用 fa4;并发 40 显式设置 speculative-draft-attention-backend: trtllm_mha 和 speculative-draft-kv-cache-dtype: fp8_e4m3,与该默认值一致。因此,并发 1、8、16、20、24、34、40 的草稿 KV cache 从 BF16(由 fa4 强制)变为 FP8 fp8_e4m3,与目标模型的 KV cache dtype 一致;并发 5、10、15 仍为 BF16。草稿模型权重不变:镜像、目标模型检查点和 DFlash2 草稿检查点(RadixArk/Muse-Spark-Open-DFlash2,按发布的 BF16 精度提供,8 个草稿 token)均与之前相同。

AI 模型使用说明:运行环境提供的模型标识为 claude-opus-5-5。工作内容包括执行调优(编排代理及其委派的任务代理均使用 claude-opus-5-5)、根据实测结果生成配方、主配置和性能变更记录的改动、在本地检查,以及起草本 PR 说明。

🤖 Generated with Claude Code

…/ config(musespark): 按并发调整 GB300 SGLang AgentX 参数

Replace the Muse Spark Open GB300 SGLang AgentX zip sweep (TP4/EP4 at
concurrency 1-32) with 10 per-concurrency points: GPU-resident KV at
concurrency 1, 5, 8, 10, 15 and DRAM HiCache at 16, 20, 24, 34, 40.

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

Copy link
Copy Markdown
Contributor

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

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

@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. Because the recipe and master config have designated code owners and this replaces the whole sweep with hand-tuned points, a human look would still be worthwhile.

What was reviewed:

  • Each conc-list entry in nvidia-master.yaml (1, 5, 8, 10, 15 and 16, 20, 24, 34, 40) has a matching override_tp4_c{conc} block in agentic.yaml, and HiCache is enabled only on the DRAM-offload points.
  • The new perf-changelog entry is appended at the end and leaves existing bytes unchanged. Its pr-link still ends in pull/XXX and needs the real number. Its text says write_through is used at concurrency 16-40, but c24 and c34 don't set hicache-write-policy. The file is append-only, so it's worth fixing that before merge.
  • c5 and c8 cap max-running-requests below CONC (2 and 3), while c24 and c34 set it above (48 and 96). This looks deliberate but isn't explained in the recipe.
Extended reasoning...

The change edits the single-node Muse Spark GB300 FP4 SGLang AgentX srt-slurm recipe (agentic.yaml), two conc-lists in nvidia-master.yaml, and appends a perf-changelog.yaml entry. It is benchmark configuration only and touches no security-sensitive surface. CODEOWNERS assigns both nvidia-master.yaml and the gb300 recipe tree to specific owners, which rules out auto-approval. The recipe change replaces a zipped sweep with ten hand-tuned override blocks of about 170 lines, so the per-point tuning choices are a judgment call for the owners. The changelog entry still has a placeholder pr-link.

…rrency 24 and 34

Both points already ran with write_through (the SGLang default); this states it in the recipe.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@shyeh25 shyeh25 added the full-sweep-fail-fast Full sweep with canary gate; first failure cancels the rest of that matrix (recommended) label Oct 20, 2026
@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#45513, 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 (be8cdbac6) 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#45513 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 (be8cdbac6) 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 39408192975

@nvpohanh

nvpohanh commented Oct 21, 2026 •

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 (single-node aggregated SGLang, GB300, TP4/EP4, DFlash2), agentic-coding only. Changed files: musespark/sglang/gb300-fp4-mtp/agentic.yaml (base tuning plus 10 override_tp4_c{conc} sections), nvidia-master.yaml (conc-lists become [1, 5, 8, 10, 15] GPU-resident KV and [16, 20, 24, 34, 40] DRAM HiCache), and one appended perf-changelog.yaml entry. Assessed head: be8cdbac6be4bcdf9b1c4496760354099f1e0aaa.
  • PR validation: Run Sweep 39408192975 (pull_request, head be8cdbac) succeeded. All 10 agentic / jobs (c1, 5, 8, 10, 15, 16, 20, 24, 34, 40) and the agentic eval / job succeeded. Fixed-sequence and multi-node lanes were skipped because this PR has no such configs. The run is pinned with /use 39408192975. Every point used the full semianalysis_cc_traces_weka_062126 corpus.
  • Evals: agentic eval / (c40 recipe, same image digest sha256:8cfc5a72…bb2b0a): gsm8k em_strict = 0.9773 (± 0.0041, n=1319), above the 0.90 default threshold in infx/evals/thresholds.yaml (no musespark override). Artifact: eval_results_all from run 39408192975.
  • Chat template: AgentX replay drives POST /v1/chat/completions (5,064 chat requests and 0 raw completions in the c40 server log), with the server using chat_template=/model/chat_template.jinja.
  • Draft precision (served as shipped): The draft is RadixArk/Muse-Spark-Open-DFlash2 (HF revision main, sha 46c90f41). It ships as BF16: config.json has dtype: bfloat16, no quantization_config, and architectures: [DFlash2DraftModel], a dense 5-layer draft (num_hidden_layers: 5, intermediate_size: 28672, no expert fields). The repo contains only config.json, README.md and one model.safetensors (4,887,479,552 BF16 params), with no hf_quant_config.json. The recipe sets no draft weight quantization, dtype, or revision override. Effective draft weight precision: BF16 = shipped precision. Evidence:
    • Why the server-args dump shows speculative_draft_model_quantization='modelopt_fp4': the recipe passes --quantization modelopt_fp4 for the NVFP4 target. When no draft quantization is given, SGLang copies the target's value into that field and records _speculative_draft_quantization_explicitly_set=False (arg_groups/serving_hook.py L618-L633). All 10 server logs show 'speculative_draft_model_quantization': 'modelopt_fp4' and '_speculative_draft_quantization_explicitly_set': False.
    • That inherited value does not quantize this draft: the draft has no quant config, so _verify_quantization keeps modelopt_fp4 without a checkpoint override (configs/model_config.py L1868-L1885). get_quant_config then finds no hf_quant_config.json and returns ModelOptFp4Config.for_online_weight_quantization ("Without serialized metadata, quantize MoE expert weights online; leave dense layers in source precision", model_loader/weight_utils.py L374-L381). For a non-serialized config, get_quant_method returns UnquantizedLinearMethod() for every LinearBase/ParallelLMHead and quantizes only FusedMoE (layers/quantization/modelopt_quant.py L1676-L1688). models/dflash.py has no FusedMoE, so every draft layer stays BF16. Source commit: the image's SGLANG_BUILD_COMMIT=e00930c5489053f26d86b179cee0d087f846acbb (from the run's fingerprint_agg_w0.json env dump), which contains DFlash2DraftModel.
    • Runtime confirms BF16 draft weights (verbatim from the c40 server log server_logs_musespark_tp4_conc40_…/srt-single-node-logs.tar.gz → logs/im-gb300-r03-c015_agg_w0.out; the other 9 points log the same 3.63 GB draft load):
      • Target: [2026-10-20 11:09:57 TP0 EP0] Load weight end. elapsed=359.27 s, type=MuseSparkForConditionalGeneration, quant=modelopt_fp4, quant_algo=NVFP4, avail mem=144.07 GB, mem usage=130.77 GB.
      • Draft: [2026-10-20 11:10:24 TP0 EP0] Load weight end. elapsed=19.20 s, type=DFlash2DraftModel, avail mem=140.44 GB, mem usage=3.63 GB.
      • 3.63 GB per GPU at TP4 matches BF16 (9.77 GB of BF16 safetensors sharded over 4 GPUs, plus replicated pieces). NVFP4 weights would take roughly a quarter of that. No server log contains an Online modelopt_fp4 quantization: quantized … layers report or any other online-quantization or requantization message.
    • Draft KV cache: c5, c10 and c15 keep speculative-draft-attention-backend: fa4, and the image forces BF16 draft KV there (DFLASH fa4 draft: overriding KV cache dtype float8_e4m3fn -> bfloat16). The other points use the pinned image's default draft backend, trtllm_mha, which inherits the target's fp8_e4m3 KV cache. The c1, c8, c16, c20, c24 and c34 logs show draft KV cache allocated. dtype: torch.float8_e4m3fn with no draft-specific KV setting. c40 explicitly sets speculative-draft-attention-backend: trtllm_mha and speculative-draft-kv-cache-dtype: fp8_e4m3. Both restate that default and match the target's kv-cache-dtype: fp8_e4m3, so they do not lower draft precision below the default. This is an upstream-supported KV dtype applied consistently to target and draft, which the checklist allows.
    • SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE does not appear in the recipe, the master config, or any of the 10 generated config.yaml/sbatch_script.sh files and server logs. It is not enabled, and DFlash2 is a dense draft with no NextN MoE.
  • Golden AL: The connector (infx/srt_slurm/synthetic_acceptance.py) maps DFlash speculative-num-draft-tokens: 8 to num_speculative_tokens = 7. musespark_dflash.yaml muse-spark-open-816b-a42b-nvfp4 / thinking_on / 7 = 4.05. The generated config for all 10 throughput points has SGLANG_SIMULATE_ACC_LEN=4.05, SGLANG_SIMULATE_ACC_METHOD=match-expected and SGLANG_SIMULATE_ACC_TOKEN_MODE=real-draft-token; the eval run has none of these, as expected. The recipe hard-codes none of them.
  • MODELS.md: musespark (Muse Spark Open 816B-A42B, added 2026-10-15) lists Agentic coding with the SGLang DFlash2 draft as active, with no deprecated scenarios.
  • No architecture hacks: no --hf-overrides or json-model-override-args (effective json_model_override_args='{}'), and no layer, expert or indexer skipping. The changes are scheduling, admission and CUDA-graph limits, chunking, memory, SWA pool ratio, HiCache, tokenizer workers, and attention-kernel tuning only.
  • 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:dev-muse-spark-open@sha256:8cfc5a72cb296771f5f8a4a4688cb6d05685610a830cbb616fa4ab0eb7bb2b0a (upstream lmsysorg org, unchanged by this PR). This is an SGLang submission, so the engine-first ordering is satisfied.
  • Upstream recipe: sgl-project/sglang#45513 is MERGED (2026-10-21T05:22:39Z, merge commit 1689cb2d). 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, cell musespark-fp4-gb300-sglang-agentic-dflash#0, provenance sha be8cdbac, pr 4342).
    • The GB300 cell documents the full python3 -m sglang.launch_server command matching the recipe base: TP4/EP4, modelopt_fp4, flashinfer_trtllm MoE, fp8_e4m3 KV, layernorm-SP/MegaMoE, DFLASH with DFlash2 and 8 draft tokens, no explicit draft attention backend, swa-full-tokens-ratio 0.3, chunked-prefill-size 8192, muse parsers, SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1 and SGLANG_TIMEOUT_KEEP_ALIVE=900, with the c1 values (max-running-requests/cuda-graph-max-bs-decode 1, mem-fraction-static 0.88) as the default point.
    • It also documents every per-concurrency override in this PR (c5 through c40): max-running-requests/cuda-graph-max-bs-decode, mem-fraction-static, prefill-decode-interval, schedule-policy shortest-prefill-first, fa4 draft attention at c5/c10/c15, tokenizer-worker-num 4 with incremental-streaming-output at c10/c15/c40, HiCache (enable-hierarchical-cache, hicache-size 120/150/149, hicache-write-policy write_through), swa-full-tokens-ratio 0.1, the breakable prefill CUDA graph with max-prefill-tokens/chunked-prefill-size at c24/c34, c40's trtllm_mha draft backend, fp8_e4m3 draft KV and removed chunked-prefill size, and the SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK (c24/c34) and SGLANG_TRTLLM_MHA_DECODE_SEQ_LEN_SPLITS=4 (c34/c40) env vars.
    • InferenceX-only settings excluded from upstream coverage: enable-metrics (scraped by the AIPerf harness), PYTHONNOUSERSITE/PYTHONUNBUFFERED, HF_HUB_OFFLINE (cluster-local shared HF cache), the health-check polling and Slurm time limit, all benchmark.env client settings (TOKENIZER, AIPERF_*, CONC), the cluster-local served-model-name/staged-checkpoint plumbing, the 0.80 DRAM-utilization benchmark setting, and the synthetic-acceptance env injected by the harness.
  • No engine patches: the diff adds only YAML overrides. 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: one affected curve: Muse-Spark-Open · agentic-coding · gb300_sglang · FP4. No other config on main maps to this series. Measured from the 10 bmk_agentic_musespark_tp4_conc* artifacts of run 39408192975 (head be8cdbac, same image), x = E2EL (s) and y = throughput.per_gpu.total_tput_tps. Computed with infx.workflows.pareto_coverage:
    • P90 E2EL: 8 frontier points / 10 measured (c5, c8, c10, c16, c20, c24, c34, c40).
    • P75 E2EL (reported separately): 7 frontier points / 10 measured (c10, c15, c16, c20, c24, c34, c40).
    • No invalid or missing points.
  • The PR branch currently conflicts with main only in the append-only inferencex-e2e/perf-changelog.yaml tail, which is resolved at merge.

Signed: nvpohanh

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

@nvpohanh staged run 39408192975.

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

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

✅✅✅ Verdict: PASS ✅✅✅

Passed and not applicable checks

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

✅ Check 1 (Sweep on in-PR commit): PASS — PR head be8cdbac (the pinned SHA, unchanged) has all 10 agentic / jobs (c1, c5, c8, c10, c15, c16, c20, c24, c34, c40) and agentic eval / marked success in run 39408192975. The PR adds only agentic configs, so it has no fixed-sequence lanes.

✅ Check 2 (Evals): PASS — eval_results_all from run 39408192975 reports gsm8k em_strict = 0.9773 (± 0.0041, n=1319), above the 0.90 threshold. The eval ran on the c40 recipe with the same image digest, sha256:8cfc5a72…bb2b0a.

✅ Check 3 (Upstream recipe): PASS — sgl-project/sglang#45513 is MERGED (2026-10-21T05:22:39Z). On sglang main, cell musespark-fp4-gb300-sglang-agentic-dflash#0 of muse-spark-open.jsx (provenance be8cdbac) documents the full sglang.launch_server base command, the base env, and every override_tp4_c{1..40} arg and env patch, all matching the recipe. The listed exclusions (metrics scraping, harness env, HF offline, synthetic acceptance) are InferenceX-only.

✅ Check 4 (Reuse command): PASS — nvpohanh (COLLABORATOR) posted /use 39408192975 on its own line.

✅ Check 5 (Latest checklist): PASS — the sign-off contains all 18 items of the current PR_REVIEW_CHECKLIST.md template, every one checked.

✅ Check 6 (Upstream image / engine order): PASS — lmsysorg/sglang:dev-muse-spark-open@sha256:8cfc5a72… comes from the upstream lmsysorg org. The entry uses framework: sglang, an open-source engine, so engine-first ordering is satisfied.

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

✅ Check 8 (No architecture hacks): PASS — the diff has no --hf-overrides, json-model-override-args or model-config edits. It changes only scheduling, memory, HiCache, CUDA graph, chunking, tokenizer and attention-backend settings.

✅ Check 9 (Chat template): PASS — the DFlash spec-decode config is benchmarked with AgentX profile replay of the chat-message semianalysis_cc_traces_weka_062126 traces through the chat endpoint, not raw completions.

✅ Check 10 (No engine patches): PASS — the diff is YAML-only. The recipe has no setup scripts, patches, pip install, file overwrites or monkey-patching.

✅ Check 11 (Golden AL): PASS — speculative-num-draft-tokens: 8 maps to 7 draft tokens, and musespark_dflash.yaml thinking_on/7 gives 4.05. The c40 job applied SGLANG_SIMULATE_ACC_LEN=4.05 with match-expected and real-draft-token, and the recipe hard-codes no AL.

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

✅ Check 13 (Draft precision): PASS — the draft is RadixArk/Muse-Spark-Open-DFlash2. Its config.json is bfloat16 with no quantization_config, and it is a dense 5-layer model. The image index sha256:8cfc5a72… was built from SGLANG_BUILD_COMMIT=e00930c5 (Docker Hub layer metadata). At that commit, the draft inherits modelopt_fp4 only by default, with no explicit draft quantization in the c40 launch command. get_quant_config then returns the non-serialized online config, which keeps every LinearBase/ParallelLMHead unquantized, and dflash.py has no FusedMoE, so the effective draft weights are BF16, as shipped. Draft KV is either the target's fp8_e4m3 (default trtllm_mha path, restated explicitly at c40) or BF16 under fa4. SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE is absent from the recipe, the master config and the c40 runtime env.

✅ Check 14 (Pareto coverage): PASS — one curve: musespark / agentic-coding / gb300_sglang / fp4, from run 39408192975 (head be8cdbac, same image), with y = per-GPU total_tput_tps from the 10 bmk_agentic_* artifacts. infx.workflows.pareto_coverage gives 8/10 frontier points at P90 E2EL (c5, c8, c10, c16, c20, c24, c34, c40) and 7/10 at P75 (reported separately), with no invalid points.

✅ Check 15 (PR description): PASS — the body's claims match the recipe at be8cdbac: the 10 concurrency points, HiCache at 120–150 GB, shortest-prefill-first at c16–c34, 4 tokenizer workers at c10/c15/c40, SGLANG_TRTLLM_MHA_DECODE_SEQ_LEN_SPLITS=4 at c34/c40, the base SWA ratio of 0.3, and the per-point draft attention backend and KV dtype.

✅ Check 16 (NVIDIA overview): PASS — the Framework Recipes table of the NVIDIA overview has a Muse-Spark-Open row with an SGLang checkmark linking to the SGLang cookbook page.

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

Assessed commit: be8cdbac6be4bcdf9b1c4496760354099f1e0aaa.

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

lgtm

Resolve conflicts: take main's refactored recipes and re-apply this PR's non-image edits; take main's perf-changelog.yaml and re-append this PR's entry.

中文:合并 origin/main;配方采用 main 重构后的版本并重新应用本 PR 的非镜像改动,perf-changelog.yaml 采用 main 版本并在末尾重新追加本 PR 的条目。
@adibarra

Copy link
Copy Markdown
Collaborator

@adibarra
adibarra merged commit 66bb19d into main Oct 22, 2026
26 checks passed
@adibarra
adibarra deleted the musespark-fp4-gb300-sglang-agentic-per-conc branch October 22, 2026 01:36
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) night-shift

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants