Skip to content

config(musespark): tune GB200 SGLang AgentX low-concurrency settings / config(musespark): 调整 GB200 SGLang AgentX 低并发参数 - #4343

Merged
adibarra merged 3 commits into
mainfrom
musespark-fp4-gb200-sglang-agentic-lowconc
Oct 22, 2026
Merged

adibarra merged 3 commits into
mainfrom
musespark-fp4-gb200-sglang-agentic-lowconc

Conversation

@shyeh25

@shyeh25 shyeh25 commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator

Summary

Retune the Muse Spark Open GB200 SGLang AgentX low-concurrency points (TP4/EP4) at concurrency 1, 4, 6, 8 and 10, and drop concurrency 12:

  • TP4/EP4, GPU-resident KV: concurrency 1 (moves to a kv-offloading: none search-space row)
  • TP4/EP4, DRAM HiCache (unchanged): concurrency 2, 4, 6, 8, 10, 16, 20, 24, 28, 32

Per point, the recipe lowers request admission and decode graph batch limits (1 at concurrency 1, 2 at 4, 3 at 6 and 8, 10 at 10) and sets the prefill-decode interval (128 at concurrency 4, 16 at 8, 32 at 10). Concurrency 1 runs without the HiCache host tier, uses a breakable prefill CUDA graph with 8192-token chunked prefill, memory fraction 0.95, SWA/full ratio 0.3, frees out-of-window SWA slots, sets SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK=2048 and PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True; concurrency 6 raises memory fraction to 0.95 with SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK=2048. Concurrency 1–10 overrides pin KV_OFFLOADING to match their search-space row. Concurrency 12 is removed from the recipe and the conc-list. The base, the server settings of concurrency 2 and 16–32, the image, 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 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 GB200 SGLang AgentX 低并发点(TP4/EP4)在并发 1、4、6、8、10 的参数,并移除并发 12:

  • TP4/EP4,KV 仅驻留 GPU:并发 1(移至 kv-offloading: none 的搜索空间行)
  • TP4/EP4,DRAM HiCache(不变):并发 2、4、6、8、10、16、20、24、28、32

每个点分别降低请求准入与 decode graph 批大小上限(并发 1 为 1,并发 4 为 2,并发 6 和 8 为 3,并发 10 为 10),并设置 prefill-decode interval(并发 4 为 128,并发 8 为 16,并发 10 为 32)。并发 1 不使用 HiCache 主机层,改用可中断的 prefill CUDA graph 与 8192 token 的 chunked prefill,显存占用比例 0.95,SWA/full 比例 0.3,释放窗口外的 SWA 槽位,并设置 SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK=2048 与 PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True;并发 6 将显存占用比例提高到 0.95,并设置 SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK=2048。并发 1–10 的 override 固定 KV_OFFLOADING,与其搜索空间行一致。并发 12 从配方和 conc-list 中移除。基础配置、并发 2 与 16–32 的服务端设置、镜像、模型检查点和 DFlash2 草稿模型设置保持不变。

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

🤖 Generated with Claude Code

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 20, 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-gb200-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 (bdfb83f2e) 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-gb200-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 (bdfb83f2e) 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 39404635036

@github-actions

Copy link
Copy Markdown
Contributor

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

@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-gb200-sglang-agentic-dflash (single-node aggregated SGLang, GB200, TP4/EP4, DFlash2), agentic-coding only. Changed files: musespark/sglang/gb200-fp4-mtp/agentic.yaml (retuned c1, c4, c6, c8 and c10 overrides; c1 drops HiCache; KV_OFFLOADING pinned for c1–c10; c12 removed), nvidia-master.yaml (c1 moves to a new kv-offloading: none search-space row, and c12 leaves the DRAM conc-list), and one appended perf-changelog.yaml entry. Assessed head: bdfb83f2e0d95441eebd2b1dfb5928b76d8d0f27, the only commit in the PR.
  • PR validation: Run Sweep 39404635036 (attempt 1, pull_request, head bdfb83f2) succeeded:
    • All 11 agentic / jobs passed: c1 without offload, and c2, 4, 6, 8, 10, 16, 20, 24, 28 and 32 with HiCache DRAM offload.
    • The agentic eval / job and check-changelog passed.
    • The fixed-sequence, multi-node and canary lanes were skipped because this PR has no such configs.
    • Every point used the full semianalysis_cc_traces_weka_062126 corpus (semianalysisai/cc-traces-weka-062126) with 0 error-dropped records, except 1 at c32.
    • Pinned with /use 39404635036.
  • Evals: agentic eval / ran the c32 recipe on the same image digest (sha256:8cfc5a72…bb2b0a). gsm8k em_strict = 0.9757 (± 0.0042, n=1319), above the 0.90 default threshold in infx/evals/thresholds.yaml, which has no musespark override. Artifact: eval_results_all from run 39404635036.
  • Chat template: AgentX replay drives POST /v1/chat/completions. The c1 server log has 293 chat requests and 0 raw /v1/completions or /generate requests. The server runs with 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 and no quantization_config, and the safetensors hold 4,887,479,552 BF16 params.
    • The recipe sets no draft quantization, dtype, revision or draft-KV override. The c1 and c10 server args show _speculative_draft_quantization_explicitly_set=False, speculative_draft_kv_cache_dtype=None and speculative_draft_model_revision=main.
    • The draft loads without a quant tag (Load weight end … type=DFlash2DraftModel, mem usage=3.61 GB per GPU at TP4). The target logs quant=modelopt_fp4, quant_algo=NVFP4. The speculative_draft_model_quantization='modelopt_fp4' server arg is the pinned image's default inheritance from the target --quantization, not a submission setting, and the draft load shows no quantization. Both match the evidence accepted for this config and image in config(musespark): configure GB200 AgentX settings per concurrency / config(musespark): 按并发配置 GB200 AgentX 参数 #4302. Effective draft weight precision: BF16 = shipped precision.
    • Draft KV cache: c1–c8 keep speculative-draft-attention-backend: fa4, and the image forces BF16 draft KV (DFLASH fa4 draft: overriding KV cache dtype torch.float8_e4m3fn -> torch.bfloat16; c1 log: draft KV cache allocated. dtype: torch.bfloat16). c10–c32 use the default backend (trtllm_mha), which inherits the target's fp8_e4m3 KV for the draft (c10 log: dtype: torch.float8_e4m3fn). Both are the framework's default handling. The FP8 case applies an upstream-supported KV dtype consistently to target and draft. This PR does not change the c10–c32 draft-backend setting.
    • SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE does not appear in the recipe, the master config, infx/ or runners/, the generated config.yaml/sbatch_script.sh, or the c1 and c10 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. In musespark_dflash.yaml, muse-spark-open-816b-a42b-nvfp4 / thinking_on / 7 = 4.05. The c1 and c10 job logs show SGLANG_SIMULATE_ACC_LEN=4.05, SGLANG_SIMULATE_ACC_METHOD=match-expected and SGLANG_SIMULATE_ACC_TOKEN_MODE=real-draft-token. 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. Review date: 2026-10-21.
  • No architecture hacks: the recipe has no --hf-overrides or json-model-override-args (effective json_model_override_args='{}') and skips no layers, experts or indexer. The changes cover only request admission, decode CUDA-graph batch size, prefill CUDA-graph backend and chunking, prefill-decode interval, memory fraction, SWA/full ratio, HiCache on/off and allocator/MegaMoE/SWA-slot env settings.
  • 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 comes from the upstream lmsysorg org and is 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, GB200 entry provenance sha bdfb83f2, pr 4343).
    • The GB200 base command is the new c1 configuration: python3 -m sglang.launch_server with TP4/EP4, modelopt_fp4, flashinfer_trtllm MoE, fp8_e4m3 KV, layernorm-SP/MegaMoE, DFLASH with DFlash2, 8 draft tokens, fa4 draft attention, max-running-requests/cuda-graph-max-bs-decode 1, breakable prefill CUDA graph, chunked-prefill-size/max-prefill-tokens 8192, mem-fraction-static 0.95, swa-full-tokens-ratio 0.3, no HiCache, muse parsers and watchdog-timeout 3600. Its env is PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True, SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK=2048, SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1 and SGLANG_TIMEOUT_KEEP_ALIVE=900.
    • Its per-concurrency patches match the effective recipe line by line, including every point this PR changes:
      • c4: limits 2, PDI 128, mem-fraction-static 0.88, HiCache 120, SWA ratio 0.1, env cleared.
      • c6: limits 3, mem-fraction-static 0.95, MegaMoE 2048 kept.
      • c8: limits 3, PDI 16, mem-fraction-static 0.88.
      • c10: limits 10, PDI 32, shortest-prefill-first, default draft backend.
      • The unchanged c2 and c16–c32 points also match. c12 no longer appears.
    • InferenceX-only settings excluded from upstream coverage:
      • enable-metrics, which the AIPerf harness scrapes.
      • PYTHONNOUSERSITE/PYTHONUNBUFFERED and HF_HUB_OFFLINE, plus the staged /model checkpoint and served-model-name plumbing.
      • The health-check polling.
      • All benchmark.env client settings: TOKENIZER, AIPERF_*, AGENTIC_WARMUP_GRACE_PERIOD, CONC and KV_OFFLOADING. The last one only labels the harness's offload mode; the server-side HiCache flags themselves are documented.
      • The synthetic-acceptance env injected by the harness.
  • No engine patches: the diff adds only YAML. The recipe and generated job have 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 · gb200_sglang · FP4. No other config maps to this series.
    • Source: the 11 bmk_agentic_musespark_tp4_conc* artifacts of run 39404635036 (attempt 1, head bdfb83f2, image digest …bb2b0a), with x = E2EL (s) and y = throughput.per_gpu.total_tput_tps. Computed with infx.workflows.pareto_coverage.
    • P90 E2EL: 7 frontier points / 11 measured (c6, c10, c16, c20, c24, c28, c32).
    • P75 E2EL, reported separately: 7 frontier points / 11 measured (same points).
    • 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. The changelog pr-link uses the XXX placeholder that validate_perf_changelog.py accepts.

Signed: nvpohanh

@github-actions

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 /inferencex-e2e/benchmarks/*_node/srt-slurm-recipes/**/gb200-*/. perf-changelog.yaml falls only under the * catch-all, so any recognized CODEOWNER covers it.

✅ Check 1 (Passing sweep on in-PR commit): PASS — bdfb83f2, the only PR commit and the pinned head, has all 11 executed agentic / jobs (c1 through c32) and the agentic eval / job at success in run 39404635036 (attempt 1, pull_request). The fixed-sequence lanes skipped because this config is agentic-only.

✅ Check 2 (Evals): PASS — In eval_results_all from run 39404635036, gsm8k em_strict is 0.9757 (±0.0042, n=1319) on the c32 recipe, above the 0.90 default in thresholds.yaml, which has no musespark override. The eval ran on the same lmsysorg/sglang:dev-muse-spark-open@sha256:8cfc5a72…bb2b0a image.

✅ Check 3 (Upstream recipe): PASS — sgl-project/sglang#45513 is MERGED (2026-10-21T05:22:39Z). On main, muse-spark-open.jsx has a GB200 entry with provenance bdfb83f2/PR 4343, published at MuseSparkOpen. Its base command matches the effective c1 launch command in the job log flag for flag (TP4/EP4, modelopt_fp4, flashinfer_trtllm, fp8_e4m3 KV, DFLASH/DFlash2 with 8 draft tokens and fa4, limits 1, breakable prefill graph, 8192 chunk, mem 0.95, SWA 0.3, no HiCache) and in env. The per-point patches for c2, c4, c6, c8, c10 and c16–c32 match the recipe, and c12 is gone. The InferenceX-only exclusions are justified (enable-metrics, harness env, staged /model).

✅ Check 4 (Reuse command): PASS — nvpohanh (COLLABORATOR) posted /use 39404635036 on its own line. That is the passing in-PR run.

✅ Check 5 (Latest checklist): PASS — Every item in the current PR_REVIEW_CHECKLIST.md template, including the merged-upstream sub-item and the Pareto item, appears checked in the sign-off.

✅ Check 6 (Upstream image / engine order): PASS — The only affected entry is framework: sglang on GB200, running the unchanged upstream lmsysorg/sglang:dev-muse-spark-open@sha256:8cfc5a72…. It is an open-source engine entry, so the ordering rule does not apply.

✅ Check 7 (Deprecated models): PASS — MODELS.md lists musespark (added 2026-10-15) as active for Agentic coding with the DFlash2 draft and no deprecated scenarios. The review date is 2026-10-21.

✅ Check 8 (No architecture hacks): PASS — The diff and the effective launch command contain no --hf-overrides, json-model-override-args or model-file edits. The changes only tune admission, graph sizes, chunking, PDI, memory fraction, SWA ratio and HiCache.

✅ Check 9 (Spec-decode chat template): PASS — AgentX replay drives /v1/chat/completions (docs/agentx-standalone.md), so DFlash acceptance runs on chat-templated traffic. The recipe sets no raw-completions override.

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

✅ Check 11 (Agentic golden AL): PASS — synthetic_acceptance.py maps DFLASH speculative-num-draft-tokens: 8 to 7 speculative tokens, and musespark_dflash.yaml gives thinking_on / 7 = 4.05. The c1 and c10 job logs apply SGLANG_SIMULATE_ACC_LEN=4.05, 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 draft RadixArk/Muse-Spark-Open-DFlash2 config.json has dtype: bfloat16 and no quantization_config. The effective c1 launch command and server env in the job log contain no draft quantization, dtype, revision or draft-KV override, and do not set SGLANG_NVFP4_CKPT_FP8_NEXTN_MOE. The draft settings are unchanged, and the FP8 draft KV at c10+ is inherited consistently from the target's fp8_e4m3, which is allowed.

✅ Check 14 (Pareto coverage): PASS — There is one curve, musespark / agentic-coding / gb200_sglang / fp4, taken from the 11 bmk_agentic_* artifacts of run 39404635036 (attempt 1, bdfb83f2, same image digest). With x = E2EL and y = per_gpu.total_tput_tps, pareto_coverage gives 7/11 frontier points at P90 and, reported separately, 7/11 at P75 (c6, c10, c16, c20, c24, c28, c32). There are 0 invalid points.

✅ Check 15 (PR description): PASS — The body's claims match the pinned diff: c1 moves to a kv-offloading: none row; c1, c4, c6, c8 and c10 get the stated limits, PDI and memory/env settings; KV_OFFLOADING is pinned for c1–c10; c12 is removed; c2, c16–c32, the image and the draft are unchanged.

✅ Check 16 (NVIDIA overview): PASS — The NVIDIA overview Framework Recipes table lists Muse-Spark-Open with a populated SGLang cell that links the SGLang cookbook page. This covers the GB200 SGLang pair.

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

Assessed commit: bdfb83f2e0d95441eebd2b1dfb5928b76d8d0f27.

@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

/reuse-sweep-run 39404635036

@adibarra
adibarra merged commit 9aba132 into main Oct 22, 2026
26 checks passed
@adibarra
adibarra deleted the musespark-fp4-gb200-sglang-agentic-lowconc branch October 22, 2026 01:44
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.

5 participants