Skip to content

Commit efd49e5

Browse files
Ankur-singhgithub-actions[bot]kedarpotdar-nvankursingh-nv
authored
Add Qwen3.5-397B FP8 B200 SGLang benchmark config (#804)
Add Qwen3.5-397B-A17B-FP8 SGLang B200 benchmark (STP) --------- Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Kedar Potdar <kedarpotdar-nv@users.noreply.github.com> Co-authored-by: Ankur Singh <ankursingh-nv@users.noreply.github.com>
1 parent 4706e70 commit efd49e5

3 files changed

Lines changed: 118 additions & 0 deletions

File tree

.github/configs/nvidia-master.yaml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1804,6 +1804,31 @@ qwen3.5-bf16-b200-sglang:
18041804
search-space:
18051805
- { tp: 8, ep: 1, conc-start: 4, conc-end: 64 }
18061806

1807+
qwen3.5-fp8-b200-sglang:
1808+
image: lmsysorg/sglang:v0.5.9-cu129-amd64
1809+
model: Qwen/Qwen3.5-397B-A17B-FP8
1810+
model-prefix: qwen3.5
1811+
runner: b200
1812+
precision: fp8
1813+
framework: sglang
1814+
multinode: false
1815+
seq-len-configs:
1816+
- isl: 1024
1817+
osl: 1024
1818+
search-space:
1819+
- { tp: 4, ep: 4, conc-start: 4, conc-end: 16 }
1820+
- { tp: 4, ep: 4, conc-start: 64, conc-end: 64 }
1821+
- isl: 1024
1822+
osl: 8192
1823+
search-space:
1824+
- { tp: 8, ep: 1, conc-start: 4, conc-end: 8 }
1825+
- { tp: 4, ep: 4, conc-start: 8, conc-end: 64}
1826+
- isl: 8192
1827+
osl: 1024
1828+
search-space:
1829+
- { tp: 8, ep: 1, conc-start: 4, conc-end: 4}
1830+
- { tp: 4, ep: 4, conc-start: 8, conc-end: 64 }
1831+
18071832
kimik2.5-int4-b200-vllm:
18081833
image: vllm/vllm-openai:v0.15.1
18091834
model: moonshotai/Kimi-K2.5
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#!/usr/bin/env bash
2+
3+
source "$(dirname "$0")/../benchmark_lib.sh"
4+
5+
check_env_vars \
6+
MODEL \
7+
TP \
8+
CONC \
9+
ISL \
10+
OSL \
11+
RANDOM_RANGE_RATIO \
12+
RESULT_FILENAME \
13+
EP_SIZE
14+
15+
if [[ -n "$SLURM_JOB_ID" ]]; then
16+
echo "JOB $SLURM_JOB_ID running on $SLURMD_NODENAME"
17+
fi
18+
19+
nvidia-smi
20+
21+
hf download "$MODEL"
22+
23+
export NCCL_NVLS_ENABLE=1
24+
export SGL_ENABLE_JIT_DEEPGEMM=false
25+
export SGLANG_ENABLE_FLASHINFER_GEMM=true
26+
export PYTHONUNBUFFERED=1
27+
28+
SERVER_LOG=/workspace/server.log
29+
PORT=${PORT:-8888}
30+
31+
# Default: recv every ~10 requests; if CONC ≥ 16, relax to ~30 requests between scheduler recv polls.
32+
if [[ $CONC -ge 16 ]]; then
33+
SCHEDULER_RECV_INTERVAL=30
34+
else
35+
SCHEDULER_RECV_INTERVAL=10
36+
fi
37+
38+
MEM_FRAC_STATIC=0.82
39+
CHUNKED_PREFILL_SIZE=32768
40+
MAX_PREFILL_TOKENS=32768
41+
CUDA_GRAPH_MAX_BATCH_SIZE=$CONC
42+
MAX_RUNNING_REQUESTS=128
43+
CONTEXT_LENGTH=$((ISL + OSL + 20))
44+
45+
echo "SCHEDULER_RECV_INTERVAL: $SCHEDULER_RECV_INTERVAL, CONC: $CONC, ISL: $ISL, OSL: $OSL"
46+
47+
set -x
48+
PYTHONNOUSERSITE=1 python3 -m sglang.launch_server --model-path=$MODEL --host=0.0.0.0 --port=$PORT \
49+
--trust-remote-code \
50+
--tensor-parallel-size=$TP --data-parallel-size=1 --ep-size $EP_SIZE \
51+
--quantization fp8 --kv-cache-dtype fp8_e4m3 \
52+
--mamba-ssm-dtype bfloat16 \
53+
--cuda-graph-max-bs $CUDA_GRAPH_MAX_BATCH_SIZE --max-running-requests $MAX_RUNNING_REQUESTS \
54+
--mem-fraction-static $MEM_FRAC_STATIC --chunked-prefill-size $CHUNKED_PREFILL_SIZE --max-prefill-tokens $MAX_PREFILL_TOKENS \
55+
--context-length $CONTEXT_LENGTH --disable-radix-cache \
56+
--attention-backend trtllm_mha --moe-runner-backend flashinfer_trtllm \
57+
--scheduler-recv-interval $SCHEDULER_RECV_INTERVAL \
58+
--tokenizer-worker-num 6 --stream-interval 30 > $SERVER_LOG 2>&1 &
59+
60+
SERVER_PID=$!
61+
62+
# Wait for server to be ready
63+
wait_for_server_ready --port "$PORT" --server-log "$SERVER_LOG" --server-pid "$SERVER_PID"
64+
65+
pip install -q datasets pandas
66+
67+
run_benchmark_serving \
68+
--model "$MODEL" \
69+
--port "$PORT" \
70+
--backend vllm \
71+
--input-len "$ISL" \
72+
--output-len "$OSL" \
73+
--random-range-ratio "$RANDOM_RANGE_RATIO" \
74+
--num-prompts "$((CONC * 10))" \
75+
--max-concurrency "$CONC" \
76+
--result-filename "$RESULT_FILENAME" \
77+
--result-dir /workspace/
78+
79+
# After throughput, run evaluation only if RUN_EVAL is true
80+
if [ "${RUN_EVAL}" = "true" ]; then
81+
run_eval --framework lm-eval --port "$PORT" --concurrent-requests $CONC
82+
append_lm_eval_summary
83+
fi
84+
set +x

perf-changelog.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -856,3 +856,12 @@
856856
- "Switch from TP=8/EP=8 to TP=4/EP=4, concurrency 4-64 for 1k1k, 1k8k, and 8k1k"
857857
- "Script uses conditional --enable-expert-parallel based on EP_SIZE env var"
858858
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/832
859+
860+
- config-keys:
861+
- qwen3.5-fp8-b200-sglang
862+
description:
863+
- "Add Qwen3.5-397B-A17B-FP8 SGLang benchmark configuration for B200"
864+
- "Image: lmsysorg/sglang:v0.5.9-cu129-amd64"
865+
- "Uses trtllm_mha attention backend and flashinfer_trtllm MOE runner"
866+
- "Enable SGLANG_ENABLE_FLASHINFER_GEMM=true, NCCL_NVLS_ENABLE=1"
867+
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/804

0 commit comments

Comments
 (0)