Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
base:
schema: 2
name: musespark-fp4-gb300-sglang-agentic
resources:
gpu_type: gb300
gpus_per_node: 4
slurm:
time_limit: '4:00:00'
frontend:
type: sglang
enable_multiple_frontends: false
observability:
enabled: false
tachometer:
enabled: false
engine: sglang
roles:
agg:
nodes: 1
workers: 1
gpus: 4
args:
served-model-name: meta-models/Muse-Spark-Open-816B-A42B-NVFP4
trust-remote-code: true
tensor-parallel-size: 4
expert-parallel-size: 4
quantization: modelopt_fp4
moe-runner-backend: flashinfer_trtllm
kv-cache-dtype: fp8_e4m3
mem-fraction-static: 0.85
# 46 of 62 layers use a 2048-token window; at the 0.8 default the SWA pool sat
# 4% used while full-attention KV saturated at concurrency 24.
swa-full-tokens-ratio: 0.1
enable-layernorm-sp: true
enable-megamoe-for-layernorm-sp: true
# DFlash2 verifies 8 tokens per step: the current token plus 7 drafts.
speculative-algorithm: DFLASH
speculative-draft-model-path: RadixArk/Muse-Spark-Open-DFlash2
speculative-draft-attention-backend: fa4
speculative-num-draft-tokens: 8
mm-feature-transport: cpu
reasoning-parser: muse
tool-call-parser: muse
watchdog-timeout: 3600
enable-metrics: true
env:
PYTHONNOUSERSITE: '1'
PYTHONUNBUFFERED: '1'
# Outlast AIPerf's pooled connections past Uvicorn's keep-alive.
SGLANG_TIMEOUT_KEEP_ALIVE: '900'
# Cold 533 GB weight loads from shared storage plus graph capture outlast the default.
health_check:
max_attempts: 1440
interval_seconds: 5
benchmark:
env:
# The gated Hub repo is unreadable with the job token; tokenize from the staged checkpoint.
TOKENIZER: /model
# Warmup can leave bytes unacknowledged past AIPerf's 30 s default.
AIPERF_HTTP_TCP_USER_TIMEOUT: '900000'
AIPERF_REQUIRED_SERVER_METRIC_PREFIX: 'sglang:'

zip_override_tp4:
roles:
agg:
args:
max-running-requests: [1, 2, 3, 4, 6, 8, 10, 12, 16, 20, 24, 32]
benchmark:
env:
CONC: ['1', '2', '3', '4', '6', '8', '10', '12', '16', '20', '24', '32']
14 changes: 14 additions & 0 deletions inferencex-e2e/configs/nvidia-master.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9235,6 +9235,20 @@ qwen3.8next-fp4-gb300-sglang-agentic-mtp:
conc-list: [1, 2, 4, 8, 16, 32, 48, 64]
srt-recipe: agentic.yaml

musespark-fp4-gb300-sglang-agentic-dflash:
image: lmsysorg/sglang:dev-muse-spark-open@sha256:8cfc5a72cb296771f5f8a4a4688cb6d05685610a830cbb616fa4ab0eb7bb2b0a
model: meta-models/Muse-Spark-Open-816B-A42B-NVFP4
model-prefix: musespark
runner: cluster:gb300-nv
precision: fp4
framework: sglang
multinode: false
srt-recipe-dir: musespark/sglang/gb300-fp4-mtp
scenarios:
agentic-coding:
- search-space:
- { tp: 4, ep: 4, kv-offloading: none, spec-decoding: draft_model, conc-list: [1, 2, 3, 4, 6, 8, 10, 12, 16, 20, 24, 32], srt-recipe: agentic.yaml }

qwen3.5-fp8-gb300-dynamo-sglang-agentic-pp-midcurve:
image: lmsysorg/sglang:nightly-dev-cu13-20260913-fa663e72
model: Qwen/Qwen3.5-397B-A17B-FP8
Expand Down
2 changes: 2 additions & 0 deletions inferencex-e2e/configs/runners.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,7 @@ clusters:
Kimi-K3: {root: scratch, dir: Kimi-K3}
MiniMax-M3-MXFP8: {root: data-models, dir: MiniMax-M3-MXFP8}
MiniMax-M3-NVFP4: {root: scratch, dir: MiniMax-M3-NVFP4}
Muse-Spark-Open-816B-A42B-NVFP4: {root: data-models, dir: Muse-Spark-Open-816B-A42B-NVFP4}
Qwen3.5-397B-A17B-FP8: {root: scratch, dir: Qwen3.5-397B-A17B-FP8}
Qwen3.5-397B-A17B-NVFP4-V2: {root: scratch, dir: Qwen3.5-397B-A17B-NVFP4-V2}
Qwen3.5-397B-A17B-NVFP4: {root: scratch, dir: Qwen3.5-397B-A17B-NVFP4-V2}
Expand Down Expand Up @@ -676,6 +677,7 @@ clusters:
rdma-device-ports: [mlx5_0:1, mlx5_1:1, mlx5_2:1, mlx5_3:1]
job-tag: gb300
segment-directive: false
single-node-models: staged
container-aliases: [dynamo-trtllm, dynamo-sglang, v0.5.11, v0.5.13.post1]
nginx-aliases: [nginx-sqsh]
env:
Expand Down
12 changes: 12 additions & 0 deletions inferencex-e2e/perf-changelog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9919,3 +9919,15 @@
- "Add Muse Spark Open NVFP4 SGLang DFlash2 AgentX on B300 at TP4/EP4 with GPU-resident KV and concurrency 1 to 128."
- "Use the committed golden curve for DFlash acceptance and the staged checkpoint for serving and tokenization."
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/4146

- config-keys:
- musespark-fp4-gb300-sglang-agentic-dflash
scenario-type:
- agentic-coding
description:
- "Add Muse Spark Open (meta-models/Muse-Spark-Open-816B-A42B-NVFP4) agentic coding on GB300 via single-node SGLang (lmsysorg/sglang:dev-muse-spark-open, digest sha256:8cfc5a72cb296771f5f8a4a4688cb6d05685610a830cbb616fa4ab0eb7bb2b0a) with DFlash2 speculative decoding (RadixArk/Muse-Spark-Open-DFlash2, 8-token verification block)."
- "Serve flags follow the verified GB300 NVFP4 cell of the SGLang Muse Spark cookbook: TP4/EP4, modelopt_fp4, flashinfer_trtllm MoE, fp8_e4m3 KV, layernorm SP with MegaMoE, fa4 draft attention, muse reasoning and tool-call parsers. KV stays GPU-resident (no HiCache)."
- "mem-fraction-static 0.85 and swa-full-tokens-ratio 0.1: 46 of 62 layers use a 2048-token sliding window, so shrinking the SWA pool raises the full-attention KV pool from 2.1M to 5.5M tokens."
- "Concurrency 1, 2, 3, 4, 6, 8, 10, 12, 16, 20, 24 and 32, with max-running-requests equal to concurrency."
- "Synthetic acceptance follows the committed musespark_dflash golden curve: AL 4.05 at 7 draft tokens, thinking_on."
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/4141
Loading