From f1f49eeba644e15905e27dd516970e6d63dfcfc6 Mon Sep 17 00:00:00 2001 From: functionstackx <47992694+functionstackx@users.noreply.github.com> Date: Thu, 23 Apr 2026 23:42:28 -0400 Subject: [PATCH 1/6] Add B200 config: dsv4-fp4-vllm (DeepSeek-V4-Pro) New DeepSeek-V4-Pro vLLM B200 benchmark, per the recipe published at https://vllm.ai/blog/deepseek-v4. Uses the vllm/vllm-openai:deepseekv4-cu130 image against deepseek-ai/DeepSeek-V4-Pro. The 8xB200 recipe runs as DP=8 + expert parallelism with TP=1 per replica, FP8 KV cache, block size 256, and an FP4 indexer cache. The search space uses a single entry per seq-len (tp=8, ep=8, dp-attn=true) so DP_ATTENTION=true routes into the DP-path in the launch script. Launch flags per the recipe: --trust-remote-code, --kv-cache-dtype fp8, --block-size 256, --enable-expert-parallel, --data-parallel-size=$TP (=8), --compilation-config '{"cudagraph_mode":"FULL_AND_PIECEWISE","custom_ops":["all"]}', --attention_config.use_fp4_indexer_cache=True, --tokenizer-mode deepseek_v4, --tool-call-parser deepseek_v4, --enable-auto-tool-choice, --reasoning-parser deepseek_v4. Configs: 1k1k conc 4-1024, 8k1k conc 4-512. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/configs/nvidia-master.yaml | 21 +++++ benchmarks/single_node/dsv4_fp4_b200.sh | 0 benchmarks/single_node/dsv4_fp4_b200_vllm.sh | 89 ++++++++++++++++++++ perf-changelog.yaml | 16 +++- 4 files changed, 125 insertions(+), 1 deletion(-) mode change 100755 => 100644 benchmarks/single_node/dsv4_fp4_b200.sh create mode 100644 benchmarks/single_node/dsv4_fp4_b200_vllm.sh diff --git a/.github/configs/nvidia-master.yaml b/.github/configs/nvidia-master.yaml index 1d467308f..e8b9bea14 100644 --- a/.github/configs/nvidia-master.yaml +++ b/.github/configs/nvidia-master.yaml @@ -2409,6 +2409,27 @@ dsr1-fp8-b200-trt-mtp: # TP8 for all points - { tp: 8, ep: 1, conc-start: 4, conc-end: 256, spec-decoding: mtp } +# DeepSeek-V4-Pro recipe from https://vllm.ai/blog/deepseek-v4 +# Runs on 8xB200 with DP=8 + expert parallelism (TP=1 per replica), +# FP8 KV cache, block size 256, and FP4 indexer cache. +dsv4-fp4-b200-vllm: + image: vllm/vllm-openai:deepseekv4-cu130 + model: deepseek-ai/DeepSeek-V4-Pro + model-prefix: dsv4 + runner: b200 + precision: fp4 + framework: vllm + multinode: false + seq-len-configs: + - isl: 1024 + osl: 1024 + search-space: + - { tp: 8, ep: 8, dp-attn: true, conc-start: 4, conc-end: 1024 } + - isl: 8192 + osl: 1024 + search-space: + - { tp: 8, ep: 8, dp-attn: true, conc-start: 4, conc-end: 512 } + dsr1-fp8-h200-sglang: image: lmsysorg/sglang:v0.5.9-cu130 model: deepseek-ai/DeepSeek-R1-0528 diff --git a/benchmarks/single_node/dsv4_fp4_b200.sh b/benchmarks/single_node/dsv4_fp4_b200.sh old mode 100755 new mode 100644 diff --git a/benchmarks/single_node/dsv4_fp4_b200_vllm.sh b/benchmarks/single_node/dsv4_fp4_b200_vllm.sh new file mode 100644 index 000000000..80982fee2 --- /dev/null +++ b/benchmarks/single_node/dsv4_fp4_b200_vllm.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash + +source "$(dirname "$0")/../benchmark_lib.sh" + +check_env_vars \ + MODEL \ + TP \ + EP_SIZE \ + DP_ATTENTION \ + CONC \ + ISL \ + OSL \ + MAX_MODEL_LEN \ + RANDOM_RANGE_RATIO \ + RESULT_FILENAME + +if [[ -n "$SLURM_JOB_ID" ]]; then + echo "JOB $SLURM_JOB_ID running on $SLURMD_NODENAME" +fi + +nvidia-smi + +hf download "$MODEL" + +SERVER_LOG=/workspace/server.log +PORT=${PORT:-8888} + +# Per https://vllm.ai/blog/deepseek-v4 the DeepSeek-V4-Pro recipe on 8xB200 +# runs with DP=8 + expert parallelism (TP=1 per replica). dp-attn: true in +# the search space routes here. +if [ "${DP_ATTENTION}" = "true" ]; then + PARALLEL_ARGS="--tensor-parallel-size=1 --data-parallel-size=$TP --enable-expert-parallel" +elif [ "$EP_SIZE" -gt 1 ]; then + PARALLEL_ARGS="--tensor-parallel-size=$TP --enable-expert-parallel" +else + PARALLEL_ARGS="--tensor-parallel-size=$TP" +fi + +if [ "${EVAL_ONLY}" = "true" ]; then + setup_eval_context + MAX_MODEL_LEN="$EVAL_MAX_MODEL_LEN" +fi + +# Start GPU monitoring (power, temperature, clocks every second) +start_gpu_monitor + +set -x +vllm serve $MODEL --host 0.0.0.0 --port $PORT \ +$PARALLEL_ARGS \ +--trust-remote-code \ +--kv-cache-dtype fp8 \ +--block-size 256 \ +--max-model-len $MAX_MODEL_LEN \ +--compilation-config '{"cudagraph_mode":"FULL_AND_PIECEWISE","custom_ops":["all"]}' \ +--attention_config.use_fp4_indexer_cache=True \ +--tokenizer-mode deepseek_v4 \ +--tool-call-parser deepseek_v4 \ +--enable-auto-tool-choice \ +--reasoning-parser deepseek_v4 > $SERVER_LOG 2>&1 & + +SERVER_PID=$! + +# Wait for server to be ready +wait_for_server_ready --port "$PORT" --server-log "$SERVER_LOG" --server-pid "$SERVER_PID" + +pip install -q datasets pandas + +run_benchmark_serving \ + --model "$MODEL" \ + --port "$PORT" \ + --backend vllm \ + --input-len "$ISL" \ + --output-len "$OSL" \ + --random-range-ratio "$RANDOM_RANGE_RATIO" \ + --num-prompts "$((CONC * 10))" \ + --max-concurrency "$CONC" \ + --result-filename "$RESULT_FILENAME" \ + --result-dir /workspace/ \ + --trust-remote-code + +# After throughput, run evaluation only if RUN_EVAL is true +if [ "${RUN_EVAL}" = "true" ]; then + run_eval --framework lm-eval --port "$PORT" + append_lm_eval_summary +fi + +# Stop GPU monitoring +stop_gpu_monitor +set +x diff --git a/perf-changelog.yaml b/perf-changelog.yaml index a6c811748..df0594af0 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -1735,7 +1735,7 @@ - "Add Qwen3.5-397B-A17B FP8 MI355X ATOM benchmark configs with and without MTP" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1040 -- config-keys: +- config-keys: - glm5.1-fp4-mi355x-atom description: - "Add GLM-5.1 MXFP4 single-node MI355X ATOM benchmark" @@ -1812,3 +1812,17 @@ - "Topologies: low-conc 1p1d-dep8-tep8 (4 nodes, mirrored from NVIDIA srt-slurm PR #71 with offload kept and numa-bind dropped); mid 1p1d-dep8-dep16 (6 nodes) and high 3p1d-dep8-dep16 (10 nodes) hand-rolled, structurally derived from the kimi-k2.5 1k/1k pattern" - "Recipes stored under benchmarks/multi_node/srt-slurm-recipes/ and overlaid onto the upstream srt-slurm checkout at runtime" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1129 + +- config-keys: + - dsv4-fp4-b200-vllm + description: + - "Add DeepSeek-V4-Pro vLLM B200 benchmark per https://vllm.ai/blog/deepseek-v4" + - "Image: vllm/vllm-openai:deepseekv4-cu130" + - "Model: deepseek-ai/DeepSeek-V4-Pro" + - "8xB200 recipe: DP=8 + expert parallelism (TP=1/replica), FP8 KV cache, block size 256, FP4 indexer cache" + - "Flags: --trust-remote-code, --kv-cache-dtype fp8, --block-size 256, --enable-expert-parallel," + - " --data-parallel-size 8, --compilation-config cudagraph_mode=FULL_AND_PIECEWISE custom_ops=all," + - " --attention_config.use_fp4_indexer_cache=True, --tokenizer-mode deepseek_v4," + - " --tool-call-parser deepseek_v4, --enable-auto-tool-choice, --reasoning-parser deepseek_v4" + - "Configs: 1k1k conc 4-1024, 8k1k conc 4-512" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXXX From 6d6525b6230cb1e417f27358154bb417f0c70564 Mon Sep 17 00:00:00 2001 From: functionstackx <47992694+functionstackx@users.noreply.github.com> Date: Thu, 23 Apr 2026 23:43:50 -0400 Subject: [PATCH 2/6] dsv4-fp4-b200-vllm: disable prefix caching Add --no-enable-prefix-caching to the launch to match the other vLLM B200 benchmark scripts (gptoss, minimaxm2.5), which disable prefix caching to avoid cross-request cache hits skewing steady-state throughput numbers. Co-Authored-By: Claude Opus 4.7 (1M context) --- benchmarks/single_node/dsv4_fp4_b200_vllm.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/benchmarks/single_node/dsv4_fp4_b200_vllm.sh b/benchmarks/single_node/dsv4_fp4_b200_vllm.sh index 80982fee2..e9021c0e1 100644 --- a/benchmarks/single_node/dsv4_fp4_b200_vllm.sh +++ b/benchmarks/single_node/dsv4_fp4_b200_vllm.sh @@ -50,6 +50,7 @@ $PARALLEL_ARGS \ --trust-remote-code \ --kv-cache-dtype fp8 \ --block-size 256 \ +--no-enable-prefix-caching \ --max-model-len $MAX_MODEL_LEN \ --compilation-config '{"cudagraph_mode":"FULL_AND_PIECEWISE","custom_ops":["all"]}' \ --attention_config.use_fp4_indexer_cache=True \ From 3a6ed5a10330c0094182215f6f987db44728737e Mon Sep 17 00:00:00 2001 From: functionstackx <47992694+functionstackx@users.noreply.github.com> Date: Thu, 23 Apr 2026 23:46:01 -0400 Subject: [PATCH 3/6] dsv4-fp4-b200-vllm: drop --tensor-parallel-size, use EP + DP=$TP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per the recipe, no --tensor-parallel-size flag is passed — vLLM shards via expert parallelism + data parallelism only. Drop the PARALLEL_ARGS branching (and the now-unused EP_SIZE / DP_ATTENTION env-var checks) and pass --enable-expert-parallel --data-parallel-size $TP directly. TP from the search space is still used by the runner for GPU allocation (and as the DP size). Co-Authored-By: Claude Opus 4.7 (1M context) --- benchmarks/single_node/dsv4_fp4_b200_vllm.sh | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/benchmarks/single_node/dsv4_fp4_b200_vllm.sh b/benchmarks/single_node/dsv4_fp4_b200_vllm.sh index e9021c0e1..edba0c4be 100644 --- a/benchmarks/single_node/dsv4_fp4_b200_vllm.sh +++ b/benchmarks/single_node/dsv4_fp4_b200_vllm.sh @@ -5,8 +5,6 @@ source "$(dirname "$0")/../benchmark_lib.sh" check_env_vars \ MODEL \ TP \ - EP_SIZE \ - DP_ATTENTION \ CONC \ ISL \ OSL \ @@ -25,17 +23,6 @@ hf download "$MODEL" SERVER_LOG=/workspace/server.log PORT=${PORT:-8888} -# Per https://vllm.ai/blog/deepseek-v4 the DeepSeek-V4-Pro recipe on 8xB200 -# runs with DP=8 + expert parallelism (TP=1 per replica). dp-attn: true in -# the search space routes here. -if [ "${DP_ATTENTION}" = "true" ]; then - PARALLEL_ARGS="--tensor-parallel-size=1 --data-parallel-size=$TP --enable-expert-parallel" -elif [ "$EP_SIZE" -gt 1 ]; then - PARALLEL_ARGS="--tensor-parallel-size=$TP --enable-expert-parallel" -else - PARALLEL_ARGS="--tensor-parallel-size=$TP" -fi - if [ "${EVAL_ONLY}" = "true" ]; then setup_eval_context MAX_MODEL_LEN="$EVAL_MAX_MODEL_LEN" @@ -44,13 +31,17 @@ fi # Start GPU monitoring (power, temperature, clocks every second) start_gpu_monitor +# Per https://vllm.ai/blog/deepseek-v4 the DeepSeek-V4-Pro recipe on 8xB200 +# runs with EP + DP=8 (no --tensor-parallel-size flag). TP from the search +# space is used only for GPU allocation by the runner and as the DP size. set -x vllm serve $MODEL --host 0.0.0.0 --port $PORT \ -$PARALLEL_ARGS \ --trust-remote-code \ --kv-cache-dtype fp8 \ --block-size 256 \ --no-enable-prefix-caching \ +--enable-expert-parallel \ +--data-parallel-size $TP \ --max-model-len $MAX_MODEL_LEN \ --compilation-config '{"cudagraph_mode":"FULL_AND_PIECEWISE","custom_ops":["all"]}' \ --attention_config.use_fp4_indexer_cache=True \ From e5a68acdcffac18d069785738ecad479fdb46c77 Mon Sep 17 00:00:00 2001 From: functionstackx <47992694+functionstackx@users.noreply.github.com> Date: Thu, 23 Apr 2026 23:47:45 -0400 Subject: [PATCH 4/6] perf-changelog: restore trailing whitespace in prior glm5.1 entry process_changelog.py's additions-only check flagged the previous commit because I'd stripped the two trailing spaces on an unrelated '- config-keys: ' line while adding the dsv4 entry. Restore the original whitespace so the diff is pure additions. Co-Authored-By: Claude Opus 4.7 (1M context) --- perf-changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index df0594af0..f1944aaad 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -1735,7 +1735,7 @@ - "Add Qwen3.5-397B-A17B FP8 MI355X ATOM benchmark configs with and without MTP" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1040 -- config-keys: +- config-keys: - glm5.1-fp4-mi355x-atom description: - "Add GLM-5.1 MXFP4 single-node MI355X ATOM benchmark" From ff34a18a91292159308a99397bece49b446da707 Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Fri, 24 Apr 2026 00:10:35 -0500 Subject: [PATCH 5/6] dsv4-fp4-b200-vllm: set VLLM_ENGINE_READY_TIMEOUT_S=3600 Give the vllm engine up to an hour to finish startup/compilation on B200 before the client considers it unready. Co-Authored-By: Claude Opus 4.7 (1M context) --- benchmarks/single_node/dsv4_fp4_b200_vllm.sh | 1 + perf-changelog.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/benchmarks/single_node/dsv4_fp4_b200_vllm.sh b/benchmarks/single_node/dsv4_fp4_b200_vllm.sh index edba0c4be..90c0a4656 100644 --- a/benchmarks/single_node/dsv4_fp4_b200_vllm.sh +++ b/benchmarks/single_node/dsv4_fp4_b200_vllm.sh @@ -35,6 +35,7 @@ start_gpu_monitor # runs with EP + DP=8 (no --tensor-parallel-size flag). TP from the search # space is used only for GPU allocation by the runner and as the DP size. set -x +VLLM_ENGINE_READY_TIMEOUT_S=3600 \ vllm serve $MODEL --host 0.0.0.0 --port $PORT \ --trust-remote-code \ --kv-cache-dtype fp8 \ diff --git a/perf-changelog.yaml b/perf-changelog.yaml index f1944aaad..b34bc69c9 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -1755,7 +1755,7 @@ - "VLLM_ENGINE_READY_TIMEOUT_S=3600 to accommodate large weight loading" - "Configs: 1k1k conc 4-64, 8k1k conc 4-64" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1130 - + - config-keys: - dsv4-fp4-b300-sglang description: From ad0f7bd957f7cc64577d290505d282df4eb3d34f Mon Sep 17 00:00:00 2001 From: functionstackx <47992694+functionstackx@users.noreply.github.com> Date: Sat, 25 Apr 2026 01:30:11 -0400 Subject: [PATCH 6/6] chore: tag dsv4 b200 benchmark scripts with inference engine Mirror of #1146 for B200. Each model historically used one inference engine, so the b200 launchers just resolved benchmarks/single_node/${model}_${precision}_b200.sh regardless of FRAMEWORK. With dsv4 we now want both an sglang script (already on main as dsv4_fp4_b200.sh from #1131) and a vllm script (added by this PR as dsv4_fp4_b200_vllm.sh) to coexist. - launch_b200-{nb,dgxc-slurm,cw}.sh prefer an engine-tagged script (e.g. dsv4_fp4_b200_vllm.sh) and fall back to the legacy unsuffixed name (or the existing _trt suffix) when the tagged variant is absent. Existing dsr1/glm5/qwen3.5/kimik2.5/minimaxm2.5/gptoss /minimaxm2.5/dsv4-sglang b200 scripts keep their current names. - This wires up the dsv4-fp4-b200-vllm config so FRAMEWORK=vllm resolves to dsv4_fp4_b200_vllm.sh instead of the sglang script that shares the unsuffixed path. Co-Authored-By: Claude Opus 4.7 (1M context) --- runners/launch_b200-cw.sh | 14 ++++++++++++-- runners/launch_b200-dgxc-slurm.sh | 13 +++++++++++-- runners/launch_b200-nb.sh | 14 ++++++++++++-- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/runners/launch_b200-cw.sh b/runners/launch_b200-cw.sh index ec7ba9a97..dafd16f74 100644 --- a/runners/launch_b200-cw.sh +++ b/runners/launch_b200-cw.sh @@ -4,9 +4,19 @@ export HF_HUB_CACHE_MOUNT="/tmp/gharunner/hf-hub-cache" export PORT=8888 MODEL_CODE="${EXP_NAME%%_*}" -FRAMEWORK_SUFFIX=$([[ "$FRAMEWORK" == "trt" ]] && printf '_trt' || printf '') SPEC_SUFFIX=$([[ "$SPEC_DECODING" == "mtp" ]] && printf '_mtp' || printf '') +# Prefer a framework-tagged script (e.g. dsv4_fp4_b200_vllm.sh) so models +# with multiple inference engines can coexist; fall back to the historical +# name without an engine suffix (`_trt` for trt, bare for everyone else) +# for scripts that haven't been retagged yet. +BENCH_BASE="benchmarks/single_node/${MODEL_CODE}_${PRECISION}_b200" +BENCH_SCRIPT="${BENCH_BASE}_${FRAMEWORK}${SPEC_SUFFIX}.sh" +if [[ ! -f "$BENCH_SCRIPT" ]]; then + LEGACY_FW_SUFFIX=$([[ "$FRAMEWORK" == "trt" ]] && printf '_trt' || printf '') + BENCH_SCRIPT="${BENCH_BASE}${LEGACY_FW_SUFFIX}${SPEC_SUFFIX}.sh" +fi + PARTITION="b200" SQUASH_FILE="/tmp/gharunner/squash/$(echo "$IMAGE" | sed 's/[\/:@#]/_/g').sqsh" LOCK_FILE="${SQUASH_FILE}.lock" @@ -58,6 +68,6 @@ srun --jobid=$JOB_ID \ --container-mount-home \ --container-workdir=$CONTAINER_MOUNT_DIR \ --no-container-entrypoint --export=ALL \ -bash benchmarks/single_node/${MODEL_CODE}_${PRECISION}_b200${FRAMEWORK_SUFFIX}${SPEC_SUFFIX}.sh +bash "$BENCH_SCRIPT" scancel $JOB_ID diff --git a/runners/launch_b200-dgxc-slurm.sh b/runners/launch_b200-dgxc-slurm.sh index c07037ff4..fde9b630c 100644 --- a/runners/launch_b200-dgxc-slurm.sh +++ b/runners/launch_b200-dgxc-slurm.sh @@ -251,8 +251,17 @@ else HF_HUB_CACHE_MOUNT="/scratch/fsw/gharunners/hf-hub-cache" SQUASH_FILE="/home/sa-shared/containers/$(echo "$IMAGE" | sed 's/[\/:@#]/_/g').sqsh" - FRAMEWORK_SUFFIX=$([[ "$FRAMEWORK" == "trt" ]] && printf '_trt' || printf '') SPEC_SUFFIX=$([[ "$SPEC_DECODING" == "mtp" ]] && printf '_mtp' || printf '') + # Prefer a framework-tagged script (e.g. dsv4_fp4_b200_vllm.sh) so models + # with multiple inference engines can coexist; fall back to the historical + # name without an engine suffix (`_trt` for trt, bare for everyone else) + # for scripts that haven't been retagged yet. + BENCH_BASE="benchmarks/single_node/${EXP_NAME%%_*}_${PRECISION}_b200" + BENCH_SCRIPT="${BENCH_BASE}_${FRAMEWORK}${SPEC_SUFFIX}.sh" + if [[ ! -f "$BENCH_SCRIPT" ]]; then + LEGACY_FW_SUFFIX=$([[ "$FRAMEWORK" == "trt" ]] && printf '_trt' || printf '') + BENCH_SCRIPT="${BENCH_BASE}${LEGACY_FW_SUFFIX}${SPEC_SUFFIX}.sh" + fi LOCK_FILE="${SQUASH_FILE}.lock" # TODO(Cam): lmsysorg/sglang:deepseek-v4-blackwell installs sglang editable at @@ -290,5 +299,5 @@ else --no-container-mount-home \ --container-workdir=$CONTAINER_MOUNT_DIR \ --no-container-entrypoint --export=ALL,PORT=8888 \ - bash benchmarks/single_node/${EXP_NAME%%_*}_${PRECISION}_b200${FRAMEWORK_SUFFIX}${SPEC_SUFFIX}.sh + bash "$BENCH_SCRIPT" fi diff --git a/runners/launch_b200-nb.sh b/runners/launch_b200-nb.sh index 6b411fec2..64edaab95 100644 --- a/runners/launch_b200-nb.sh +++ b/runners/launch_b200-nb.sh @@ -2,9 +2,19 @@ HF_HUB_CACHE_MOUNT="/mnt/data/gharunners/hf-hub-cache/" PARTITION="main" -FRAMEWORK_SUFFIX=$([[ "$FRAMEWORK" == "trt" ]] && printf '_trt' || printf '') SPEC_SUFFIX=$([[ "$SPEC_DECODING" == "mtp" ]] && printf '_mtp' || printf '') +# Prefer a framework-tagged script (e.g. dsv4_fp4_b200_vllm.sh) so models +# with multiple inference engines can coexist; fall back to the historical +# name without an engine suffix (`_trt` for trt, bare for everyone else) +# for scripts that haven't been retagged yet. +BENCH_BASE="benchmarks/single_node/${EXP_NAME%%_*}_${PRECISION}_b200" +BENCH_SCRIPT="${BENCH_BASE}_${FRAMEWORK}${SPEC_SUFFIX}.sh" +if [[ ! -f "$BENCH_SCRIPT" ]]; then + LEGACY_FW_SUFFIX=$([[ "$FRAMEWORK" == "trt" ]] && printf '_trt' || printf '') + BENCH_SCRIPT="${BENCH_BASE}${LEGACY_FW_SUFFIX}${SPEC_SUFFIX}.sh" +fi + UCX_NET_DEVICES=eth0 # TODO(Cam): lmsysorg/sglang:deepseek-v4-blackwell installs sglang editable at @@ -27,4 +37,4 @@ srun --partition=$PARTITION --gres=gpu:$TP --exclusive --job-name="$RUNNER_NAME" --container-writable \ --container-workdir=$CONTAINER_MOUNT_DIR \ --no-container-entrypoint --export=ALL,PORT=8888,UCX_NET_DEVICES=$UCX_NET_DEVICES \ -bash benchmarks/single_node/${EXP_NAME%%_*}_${PRECISION}_b200${FRAMEWORK_SUFFIX}${SPEC_SUFFIX}.sh \ No newline at end of file +bash "$BENCH_SCRIPT" \ No newline at end of file