From d18fd7d172373b5baca4c6efd6b814d72d7b7c18 Mon Sep 17 00:00:00 2001 From: seungrokj Date: Tue, 14 Jul 2026 18:01:32 +0900 Subject: [PATCH 01/29] [AMD][MI355X] DSv4 SGLang: add agentic MTP+HiCache recipe, exclude g12 - Add dsv4_fp4_mi355x_sglang_mtp.sh agentic launcher with EAGLE spec decoding - Add dsv4-fp4-mi355x-sglang-agentic-hicache-mtp config in amd-master.yaml - Sweep TP8 +/- DPA +/- HiCache with MTP (conc 1-96) - Exclude mia1-p01-g12 from agentic salloc - Update perf-changelog Co-Authored-By: Claude Opus 4.6 --- .../agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 209 ++++++++++++++++++ configs/amd-master.yaml | 18 +- perf-changelog.yaml | 9 + runners/launch_mi355x-amds.sh | 2 +- 4 files changed, 235 insertions(+), 3 deletions(-) create mode 100755 benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh new file mode 100755 index 0000000000..de891dd71c --- /dev/null +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -0,0 +1,209 @@ +#!/usr/bin/env bash +set -euo pipefail +set -x + +# Agentic trace replay benchmark for DeepSeek-V4-Pro FP4 on MI355X using SGLang. +# +# KV_OFFLOADING=dram requires KV_OFFLOAD_BACKEND=hicache. +# +# Required env vars: +# MODEL, TP, CONC, KV_OFFLOADING, TOTAL_CPU_DRAM_GB, RESULT_DIR +# +# KV_OFFLOADING=dram requires one of these. +# KV_OFFLOAD_BACKEND=hicache. + +source "$(dirname "$0")/../../benchmark_lib.sh" + +check_env_vars MODEL TP CONC KV_OFFLOADING TOTAL_CPU_DRAM_GB RESULT_DIR DURATION EP_SIZE DP_ATTENTION + +if [[ -n "${SLURM_JOB_ID:-}" ]]; then + echo "JOB $SLURM_JOB_ID running on ${SLURMD_NODENAME:-unknown}" +fi + +# ROCR/HIP visibility under slurm cgroups. +if [ -n "${ROCR_VISIBLE_DEVICES:-}" ]; then + export HIP_VISIBLE_DEVICES="$ROCR_VISIBLE_DEVICES" +fi + +if [[ -n "${MODEL_PATH:-}" ]]; then + if [[ ! -d "$MODEL_PATH" || -z "$(ls -A "$MODEL_PATH" 2>/dev/null)" ]]; then + hf download "$MODEL" --local-dir "$MODEL_PATH" + fi +else + hf download "$MODEL" + export MODEL_PATH="$MODEL" +fi +rocm-smi || true +amd-smi || true + +# ---- Resolve traces and install deps ---------------------------------------- +resolve_trace_source +install_agentic_deps + +# ---- Server config ---------------------------------------------------------- +SERVER_LOG="$RESULT_DIR/server.log" +mkdir -p "$RESULT_DIR" + +export SGLANG_ENABLE_UNIFIED_RADIX_TREE=1 +export SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1 + +CACHE_ARGS=() +if agentic_kv_offload_enabled; then + # HiCache config — https://lmsysorg.mintlify.app/cookbook/autoregressive/DeepSeek/DeepSeek-V4 + case "${KV_OFFLOAD_BACKEND:-}" in + hicache) + HICACHE_RATIO=4 + HICACHE_WRITE_POLICY="write_through" + HICACHE_IO_BACKEND="direct" + HICACHE_MEM_LAYOUT="page_first_direct" + CACHE_ARGS=( + --enable-hierarchical-cache + --hicache-ratio "$HICACHE_RATIO" + --hicache-write-policy "$HICACHE_WRITE_POLICY" + --hicache-io-backend "$HICACHE_IO_BACKEND" + --hicache-mem-layout "$HICACHE_MEM_LAYOUT" + ) + echo "HiCache DSv4 CPU tier: ratio=$HICACHE_RATIO, write_policy=$HICACHE_WRITE_POLICY, io_backend=$HICACHE_IO_BACKEND, mem_layout=$HICACHE_MEM_LAYOUT" + ;; + *) + echo "Error: unsupported KV_OFFLOAD_BACKEND '${KV_OFFLOAD_BACKEND:-}' (expected: hicache)" >&2 + exit 1 + ;; + esac +fi + +# ---- LLM server config ---------------------------------------------------------- +USE_SGLANG_ROUTER=false +SGLANG_BACKEND_PORT="$PORT" +ROUTER_LOG="$RESULT_DIR/router.log" +MEM_FRACTION_STATIC=0.95 +CHUNKED_PREFILL_SIZE=16384 +if [ "$DP_ATTENTION" = "true" ]; then + USE_SGLANG_ROUTER=true + export AIPERF_HTTP_X_SMG_ROUTING_KEY_FROM_CORRELATION_ID=true + SGLANG_BACKEND_PORT=$((PORT + 1)) + SGLANG_ROUTER_METRICS_PORT=$((PORT + 10000)) + SGLANG_ROUTER_CMD=(python3 -m sglang_router.launch_router) + + export SGLANG_SHARED_EXPERT_TP1=1 + export SGLANG_DP_SHARED_EXPERT_LOCAL=1 + export SGLANG_DP_USE_GATHERV=1 + export SGLANG_DP_USE_REDUCE_SCATTER=1 + export GPU_MAX_HW_QUEUES=5 + + CHUNKED_PREFILL_SIZE=$((8192 * TP)) + PARALLEL_ARGS+=( + --dp "$TP" + --enable-dp-attention + --enable-prefill-delayer + --enable-two-batch-overlap + ) +fi + +if [ "${EP_SIZE:-1}" -gt 1 ]; then + PARALLEL_ARGS+=(--ep-size "$EP_SIZE") +fi + +# AgentX concurrency counts live session trees, not individual requests. +# Allow subagent fan-out to exceed CONC without clipping request bursts. +MAX_RUNNING_REQUESTS=$((2 * CONC)) +CUDA_GRAPH_MAX_BS=$CONC +[ "$CUDA_GRAPH_MAX_BS" -gt 128 ] && CUDA_GRAPH_MAX_BS=128 + +export SGLANG_DEFAULT_THINKING=1 +export SGLANG_DSV4_REASONING_EFFORT=max +export SGLANG_USE_ROCM700A=0 +export SGLANG_HACK_FLASHMLA_BACKEND=unified_kv_triton +export AITER_BF16_FP8_MOE_BOUND=0 + +PARALLEL_ARGS=(--tensor-parallel-size "$TP") +METRICS_ARGS=(--enable-metrics) +SPEC_ARGS=( + --speculative-algorithm EAGLE + --speculative-num-steps 3 + --speculative-eagle-topk 1 + --speculative-num-draft-tokens 4 +) + +SGLANG_CMD=( + python3 -m sglang.launch_server + --model-path "$MODEL_PATH" + --served-model-name "$MODEL" + --host 0.0.0.0 + --port "$SGLANG_BACKEND_PORT" + --trust-remote-code + "${PARALLEL_ARGS[@]}" + --attention-backend compressed + --cuda-graph-max-bs "$CUDA_GRAPH_MAX_BS" + --max-running-requests "$MAX_RUNNING_REQUESTS" + --mem-fraction-static "$MEM_FRACTION_STATIC" + --swa-full-tokens-ratio 0.10 + --page-size 256 + --kv-cache-dtype fp8_e4m3 + --chunked-prefill-size "$CHUNKED_PREFILL_SIZE" + --disable-shared-experts-fusion + --tool-call-parser deepseekv4 + --reasoning-parser deepseek-v4 + --chat-template "$(dirname "$0")/../chat_templates/deepseek_v4_thinking.jinja" + --watchdog-timeout 1800 + "${METRICS_ARGS[@]}" + "${SPEC_ARGS[@]}" + "${CACHE_ARGS[@]}" +) + +printf '%q ' "${SGLANG_CMD[@]}" | tee "$RESULT_DIR/sglang_command.txt" +printf '\n' | tee -a "$RESULT_DIR/sglang_command.txt" + +{ + echo "=== SGLANG_* env vars at launch ===" + env | grep -E '^SGLANG_' | sort + echo "===================================" +} | tee "$SERVER_LOG" + +echo "Starting SGLang server for MI355X..." +"${SGLANG_CMD[@]}" >> "$SERVER_LOG" 2>&1 & +SERVER_PID=$! +echo "Server PID: $SERVER_PID" + +capture_cache_metrics() { + { + echo "=== SGLang cache metrics snapshot $(date --iso-8601=seconds) ===" + curl -fsS "http://localhost:$SGLANG_BACKEND_PORT/metrics" 2>/dev/null \ + | grep -E '^(sglang:(cache_hit_rate|cached_tokens_total|prompt_tokens_total|hicache_host_used_tokens|hicache_host_total_tokens|token_usage|num_requests_running|num_requests_waiting))' \ + || true + echo "============================================================" + } >> "$SERVER_LOG" +} + +wait_for_server_ready --port "$SGLANG_BACKEND_PORT" --server-log "$SERVER_LOG" --server-pid "$SERVER_PID" + +if [ "$USE_SGLANG_ROUTER" = "true" ]; then + echo "Starting SGLang router on port $PORT for $TP DP ranks..." + "${SGLANG_ROUTER_CMD[@]}" \ + --worker-urls "http://localhost:$SGLANG_BACKEND_PORT" \ + --policy consistent_hashing \ + --request-id-headers x-correlation-id \ + --dp-aware \ + --host 0.0.0.0 \ + --port "$PORT" \ + --prometheus-host 127.0.0.1 \ + --prometheus-port "$SGLANG_ROUTER_METRICS_PORT" \ + --connect-timeout-secs 900 \ + --request-timeout-secs 14400 \ + --disable-health-check \ + --disable-retries > "$ROUTER_LOG" 2>&1 & + ROUTER_PID=$! + echo "Router PID: $ROUTER_PID" + wait_for_server_ready --port "$PORT" --server-log "$ROUTER_LOG" --server-pid "$ROUTER_PID" +fi + +if [ "${#METRICS_ARGS[@]}" -gt 0 ]; then + capture_cache_metrics + trap capture_cache_metrics EXIT +fi + +# ---- Run benchmark ---------------------------------------------------------- +build_replay_cmd "$RESULT_DIR" +REPLAY_CMD+=" --server-metrics http://localhost:$SGLANG_BACKEND_PORT/metrics" + +run_agentic_replay_and_write_outputs "$RESULT_DIR" diff --git a/configs/amd-master.yaml b/configs/amd-master.yaml index 4b1ea4aed3..2781c48485 100644 --- a/configs/amd-master.yaml +++ b/configs/amd-master.yaml @@ -2351,8 +2351,6 @@ dsv4-fp4-mi355x-sglang-agentic: model: deepseek-ai/DeepSeek-V4-Pro model-prefix: dsv4 runner: cluster:mi355x-amds - precision: fp4 - framework: sglang multinode: false scenarios: agentic-coding: @@ -2360,6 +2358,22 @@ dsv4-fp4-mi355x-sglang-agentic: - { tp: 8, kv-offloading: none, conc-list: [16, 32, 64] } - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [64, 128, 256] } +dsv4-fp4-mi355x-sglang-agentic-hicache-mtp: + image: lmsysorg/sglang-rocm:v0.5.15-rocm700-mi35x-20260713 + model: deepseek-ai/DeepSeek-V4-Pro + model-prefix: dsv4 + runner: cluster:mi355x-amds + precision: fp4 + framework: sglang + multinode: false + scenarios: + agentic-coding: + - dram-utilization: 0.80 + search-space: + - { tp: 8, kv-offloading: none, conc-list: [1, 2, 4, 8], spec-decoding: mtp } + - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48, 64], spec-decoding: mtp } + - { tp: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [80, 96], spec-decoding: mtp } + # MiniMax-M3 MXFP8 MI355X recipe: # https://github.com/vllm-project/recipes/commit/2a3728ed9892debfd767a72a58ebc90b33f186e5 # MXFP8 runs from TP=4 on gfx950; block size 128 is mandatory for MSA. diff --git a/perf-changelog.yaml b/perf-changelog.yaml index e05c2ca1c4..9e82f7533a 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4765,3 +4765,12 @@ - "Bump image to lmsysorg/sglang-rocm:v0.5.14-rocm720-mi35x-20260708" - "Clean the export envs" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2198 + +- config-keys: + - dsv4-fp4-mi355x-sglang-agentic-hicache-mtp + description: + - "Add DSv4 FP4 MI355X SGLang agentic MTP recipe with HiCache support" + - "Image: lmsysorg/sglang-rocm:v0.5.15-rocm700-mi35x-20260713" + - "EAGLE speculative decoding: 3 steps, topk 1, 4 draft tokens" + - "Sweep TP8 +/- DPA +/- HiCache with MTP across conc 1-96" + - "Exclude mia1-p01-g12 from agentic salloc" diff --git a/runners/launch_mi355x-amds.sh b/runners/launch_mi355x-amds.sh index 8cb92b7a16..ec99d1698d 100644 --- a/runners/launch_mi355x-amds.sh +++ b/runners/launch_mi355x-amds.sh @@ -212,7 +212,7 @@ else # mia1-p01-g09: pyxis broken (persistently fails to create container filesystem) # mia1-p01-g11: docker.sock permissions denied (cluster-cleanup step fails) # Both have been root-caused via #1431/#1432/#1440/#1441/#1443 sweep failures. - salloc --partition=$PARTITION --exclude=mia1-p01-g09,mia1-p01-g11 --gres=gpu:$GPU_COUNT --exclusive --cpus-per-task=128 --time=500 --no-shell --job-name="$RUNNER_NAME" + salloc --partition=$PARTITION --exclude=mia1-p01-g09,mia1-p01-g11,mia1-p01-g12 --gres=gpu:$GPU_COUNT --exclusive --cpus-per-task=128 --time=500 --no-shell --job-name="$RUNNER_NAME" JOB_ID=$(squeue --name="$RUNNER_NAME" -h -o %A | head -n1) srun --jobid=$JOB_ID bash -c "docker stop \$(docker ps -a -q)" From d8bf2b3d3545cda9d292e08c871e2576d032145f Mon Sep 17 00:00:00 2001 From: seungrokj Date: Tue, 14 Jul 2026 18:04:37 +0900 Subject: [PATCH 02/29] [AMD][MI355X] DSv4 SGLang: restore precision and framework fields to agentic config Co-Authored-By: Claude Opus 4.6 --- configs/amd-master.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/configs/amd-master.yaml b/configs/amd-master.yaml index 2781c48485..56a761d332 100644 --- a/configs/amd-master.yaml +++ b/configs/amd-master.yaml @@ -2351,6 +2351,8 @@ dsv4-fp4-mi355x-sglang-agentic: model: deepseek-ai/DeepSeek-V4-Pro model-prefix: dsv4 runner: cluster:mi355x-amds + precision: fp4 + framework: sglang multinode: false scenarios: agentic-coding: From 0b0cc49c7ca9707162e043cf10b9c02ecf7c895b Mon Sep 17 00:00:00 2001 From: seungrokj Date: Tue, 14 Jul 2026 18:11:37 +0900 Subject: [PATCH 03/29] [AMD][MI355X] DSv4 SGLang: add PR link to perf-changelog MTP entry Co-Authored-By: Claude Opus 4.6 --- perf-changelog.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 9e82f7533a..77485ea470 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4774,3 +4774,4 @@ - "EAGLE speculative decoding: 3 steps, topk 1, 4 draft tokens" - "Sweep TP8 +/- DPA +/- HiCache with MTP across conc 1-96" - "Exclude mia1-p01-g12 from agentic salloc" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2200 From a0f7911f0a15d2fbf136afa12743f4a2dbcd6df5 Mon Sep 17 00:00:00 2001 From: seungrokj Date: Tue, 14 Jul 2026 18:12:57 +0900 Subject: [PATCH 04/29] [AMD][MI355X] DSv4 SGLang MTP: move PARALLEL_ARGS init before DPA block Co-Authored-By: Claude Opus 4.6 --- benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index de891dd71c..923253c7cb 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -78,6 +78,7 @@ SGLANG_BACKEND_PORT="$PORT" ROUTER_LOG="$RESULT_DIR/router.log" MEM_FRACTION_STATIC=0.95 CHUNKED_PREFILL_SIZE=16384 +PARALLEL_ARGS=(--tensor-parallel-size "$TP") if [ "$DP_ATTENTION" = "true" ]; then USE_SGLANG_ROUTER=true export AIPERF_HTTP_X_SMG_ROUTING_KEY_FROM_CORRELATION_ID=true @@ -116,7 +117,6 @@ export SGLANG_USE_ROCM700A=0 export SGLANG_HACK_FLASHMLA_BACKEND=unified_kv_triton export AITER_BF16_FP8_MOE_BOUND=0 -PARALLEL_ARGS=(--tensor-parallel-size "$TP") METRICS_ARGS=(--enable-metrics) SPEC_ARGS=( --speculative-algorithm EAGLE From f773bb0ca7f057591b03097cb1bdc0b1f8360859 Mon Sep 17 00:00:00 2001 From: seungrokj Date: Tue, 14 Jul 2026 21:41:00 +0900 Subject: [PATCH 05/29] [AMD][MI355X] DSv4 SGLang: revert agentic-hicache-mtp image to v0.5.14 Co-Authored-By: Claude Opus 4.6 --- configs/amd-master.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amd-master.yaml b/configs/amd-master.yaml index 56a761d332..eb0970787b 100644 --- a/configs/amd-master.yaml +++ b/configs/amd-master.yaml @@ -2361,7 +2361,7 @@ dsv4-fp4-mi355x-sglang-agentic: - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [64, 128, 256] } dsv4-fp4-mi355x-sglang-agentic-hicache-mtp: - image: lmsysorg/sglang-rocm:v0.5.15-rocm700-mi35x-20260713 + image: lmsysorg/sglang-rocm:v0.5.14-rocm720-mi35x-20260710 model: deepseek-ai/DeepSeek-V4-Pro model-prefix: dsv4 runner: cluster:mi355x-amds From 36b1f54c96a7d556887187b2dd8de3dbf640e7e2 Mon Sep 17 00:00:00 2001 From: seungrokj Date: Tue, 14 Jul 2026 22:11:37 +0900 Subject: [PATCH 06/29] [AMD][MI355X] DSv4 SGLang MTP: revert mem-fraction-static to 0.90 and chunked-prefill to 8192 Co-Authored-By: Claude Opus 4.6 --- benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index 923253c7cb..ec2ab7b935 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -76,8 +76,8 @@ fi USE_SGLANG_ROUTER=false SGLANG_BACKEND_PORT="$PORT" ROUTER_LOG="$RESULT_DIR/router.log" -MEM_FRACTION_STATIC=0.95 -CHUNKED_PREFILL_SIZE=16384 +MEM_FRACTION_STATIC=0.90 +CHUNKED_PREFILL_SIZE=8192 PARALLEL_ARGS=(--tensor-parallel-size "$TP") if [ "$DP_ATTENTION" = "true" ]; then USE_SGLANG_ROUTER=true From 53c2c7738dc14fb0c20e6e593c41def0573bbaa5 Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Tue, 14 Jul 2026 15:28:55 -0500 Subject: [PATCH 07/29] fix(agentx): require explicit benchmark environment --- .../agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index ec2ab7b935..9b73977ea0 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -set -euo pipefail +set -eo pipefail set -x # Agentic trace replay benchmark for DeepSeek-V4-Pro FP4 on MI355X using SGLang. @@ -16,16 +16,16 @@ source "$(dirname "$0")/../../benchmark_lib.sh" check_env_vars MODEL TP CONC KV_OFFLOADING TOTAL_CPU_DRAM_GB RESULT_DIR DURATION EP_SIZE DP_ATTENTION -if [[ -n "${SLURM_JOB_ID:-}" ]]; then - echo "JOB $SLURM_JOB_ID running on ${SLURMD_NODENAME:-unknown}" +if [[ -n "$SLURM_JOB_ID" ]]; then + echo "JOB $SLURM_JOB_ID running on $SLURMD_NODENAME" fi # ROCR/HIP visibility under slurm cgroups. -if [ -n "${ROCR_VISIBLE_DEVICES:-}" ]; then +if [ -n "$ROCR_VISIBLE_DEVICES" ]; then export HIP_VISIBLE_DEVICES="$ROCR_VISIBLE_DEVICES" fi -if [[ -n "${MODEL_PATH:-}" ]]; then +if [[ -n "$MODEL_PATH" ]]; then if [[ ! -d "$MODEL_PATH" || -z "$(ls -A "$MODEL_PATH" 2>/dev/null)" ]]; then hf download "$MODEL" --local-dir "$MODEL_PATH" fi @@ -50,7 +50,7 @@ export SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1 CACHE_ARGS=() if agentic_kv_offload_enabled; then # HiCache config — https://lmsysorg.mintlify.app/cookbook/autoregressive/DeepSeek/DeepSeek-V4 - case "${KV_OFFLOAD_BACKEND:-}" in + case "$KV_OFFLOAD_BACKEND" in hicache) HICACHE_RATIO=4 HICACHE_WRITE_POLICY="write_through" @@ -66,7 +66,7 @@ if agentic_kv_offload_enabled; then echo "HiCache DSv4 CPU tier: ratio=$HICACHE_RATIO, write_policy=$HICACHE_WRITE_POLICY, io_backend=$HICACHE_IO_BACKEND, mem_layout=$HICACHE_MEM_LAYOUT" ;; *) - echo "Error: unsupported KV_OFFLOAD_BACKEND '${KV_OFFLOAD_BACKEND:-}' (expected: hicache)" >&2 + echo "Error: unsupported KV_OFFLOAD_BACKEND '$KV_OFFLOAD_BACKEND' (expected: hicache)" >&2 exit 1 ;; esac @@ -101,7 +101,7 @@ if [ "$DP_ATTENTION" = "true" ]; then ) fi -if [ "${EP_SIZE:-1}" -gt 1 ]; then +if [ "$EP_SIZE" -gt 1 ]; then PARALLEL_ARGS+=(--ep-size "$EP_SIZE") fi From 8850665b706497bfa1a270115d65482200c68d03 Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Tue, 14 Jul 2026 15:34:01 -0500 Subject: [PATCH 08/29] fix(agentx): use golden MTP acceptance length --- benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index 9b73977ea0..284a12f62c 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -113,6 +113,10 @@ CUDA_GRAPH_MAX_BS=$CONC export SGLANG_DEFAULT_THINKING=1 export SGLANG_DSV4_REASONING_EFFORT=max +# DeepSeek-V4-Pro thinking-on golden AL for three speculative tokens. +export SGLANG_SIMULATE_ACC_LEN=2.49 +export SGLANG_SIMULATE_ACC_METHOD=match-expected +export SGLANG_SIMULATE_ACC_TOKEN_MODE=real-draft-token export SGLANG_USE_ROCM700A=0 export SGLANG_HACK_FLASHMLA_BACKEND=unified_kv_triton export AITER_BF16_FP8_MOE_BOUND=0 From 25f137d27f275451e51d960f4c74383f14a129a1 Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Tue, 14 Jul 2026 15:44:00 -0500 Subject: [PATCH 09/29] fix(agentx): match golden AL reasoning effort --- benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index 284a12f62c..a09a929d98 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -112,7 +112,7 @@ CUDA_GRAPH_MAX_BS=$CONC [ "$CUDA_GRAPH_MAX_BS" -gt 128 ] && CUDA_GRAPH_MAX_BS=128 export SGLANG_DEFAULT_THINKING=1 -export SGLANG_DSV4_REASONING_EFFORT=max +export SGLANG_DSV4_REASONING_EFFORT=high # DeepSeek-V4-Pro thinking-on golden AL for three speculative tokens. export SGLANG_SIMULATE_ACC_LEN=2.49 export SGLANG_SIMULATE_ACC_METHOD=match-expected From 9139777f25b697939c5d0b0d8fc18cd91cab1e8d Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Tue, 14 Jul 2026 15:50:38 -0500 Subject: [PATCH 10/29] style(agentx): group simulated AL settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Place the thinking and simulated acceptance-length environment variables in a dedicated, clearly labeled block. 中文:将思考模式与模拟接受长度(AL)环境变量整理到独立且标注清晰的配置块中。 --- benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index a09a929d98..723ea4f731 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -111,12 +111,13 @@ MAX_RUNNING_REQUESTS=$((2 * CONC)) CUDA_GRAPH_MAX_BS=$CONC [ "$CUDA_GRAPH_MAX_BS" -gt 128 ] && CUDA_GRAPH_MAX_BS=128 +# Simulated acceptance-length (AL) settings. export SGLANG_DEFAULT_THINKING=1 export SGLANG_DSV4_REASONING_EFFORT=high -# DeepSeek-V4-Pro thinking-on golden AL for three speculative tokens. export SGLANG_SIMULATE_ACC_LEN=2.49 export SGLANG_SIMULATE_ACC_METHOD=match-expected export SGLANG_SIMULATE_ACC_TOKEN_MODE=real-draft-token + export SGLANG_USE_ROCM700A=0 export SGLANG_HACK_FLASHMLA_BACKEND=unified_kv_triton export AITER_BF16_FP8_MOE_BOUND=0 From 369e49b829049d7456f657ba2a3019f6389bb5ad Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Tue, 14 Jul 2026 15:58:59 -0500 Subject: [PATCH 11/29] chore(agentx): remove cache metric snapshots MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove the manual metrics scrape and EXIT trap while retaining the metrics endpoint used by the replay client. 中文:移除手动指标抓取与 EXIT trap,同时保留回放客户端使用的 metrics endpoint。 --- .../agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index 723ea4f731..a601daa15f 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -170,16 +170,6 @@ echo "Starting SGLang server for MI355X..." SERVER_PID=$! echo "Server PID: $SERVER_PID" -capture_cache_metrics() { - { - echo "=== SGLang cache metrics snapshot $(date --iso-8601=seconds) ===" - curl -fsS "http://localhost:$SGLANG_BACKEND_PORT/metrics" 2>/dev/null \ - | grep -E '^(sglang:(cache_hit_rate|cached_tokens_total|prompt_tokens_total|hicache_host_used_tokens|hicache_host_total_tokens|token_usage|num_requests_running|num_requests_waiting))' \ - || true - echo "============================================================" - } >> "$SERVER_LOG" -} - wait_for_server_ready --port "$SGLANG_BACKEND_PORT" --server-log "$SERVER_LOG" --server-pid "$SERVER_PID" if [ "$USE_SGLANG_ROUTER" = "true" ]; then @@ -202,11 +192,6 @@ if [ "$USE_SGLANG_ROUTER" = "true" ]; then wait_for_server_ready --port "$PORT" --server-log "$ROUTER_LOG" --server-pid "$ROUTER_PID" fi -if [ "${#METRICS_ARGS[@]}" -gt 0 ]; then - capture_cache_metrics - trap capture_cache_metrics EXIT -fi - # ---- Run benchmark ---------------------------------------------------------- build_replay_cmd "$RESULT_DIR" REPLAY_CMD+=" --server-metrics http://localhost:$SGLANG_BACKEND_PORT/metrics" From a016c0eb858ab3e2871aedb46f5a25daed9c66f0 Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Tue, 14 Jul 2026 16:31:35 -0500 Subject: [PATCH 12/29] fix(runner): remove MI355X node exclusions --- perf-changelog.yaml | 1 - runners/launch_mi355x-amds.sh | 6 +----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 77485ea470..602dee8aec 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4773,5 +4773,4 @@ - "Image: lmsysorg/sglang-rocm:v0.5.15-rocm700-mi35x-20260713" - "EAGLE speculative decoding: 3 steps, topk 1, 4 draft tokens" - "Sweep TP8 +/- DPA +/- HiCache with MTP across conc 1-96" - - "Exclude mia1-p01-g12 from agentic salloc" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2200 diff --git a/runners/launch_mi355x-amds.sh b/runners/launch_mi355x-amds.sh index ec99d1698d..d7007aaf09 100644 --- a/runners/launch_mi355x-amds.sh +++ b/runners/launch_mi355x-amds.sh @@ -208,11 +208,7 @@ else export GPU_COUNT="${GPU_COUNT:-${TP:?TP must be set}}" set -x - # Exclude known-bad mi355x compute nodes (KLAUD_DEBUG §5.1 / §5.2): - # mia1-p01-g09: pyxis broken (persistently fails to create container filesystem) - # mia1-p01-g11: docker.sock permissions denied (cluster-cleanup step fails) - # Both have been root-caused via #1431/#1432/#1440/#1441/#1443 sweep failures. - salloc --partition=$PARTITION --exclude=mia1-p01-g09,mia1-p01-g11,mia1-p01-g12 --gres=gpu:$GPU_COUNT --exclusive --cpus-per-task=128 --time=500 --no-shell --job-name="$RUNNER_NAME" + salloc --partition=$PARTITION --gres=gpu:$GPU_COUNT --exclusive --cpus-per-task=128 --time=500 --no-shell --job-name="$RUNNER_NAME" JOB_ID=$(squeue --name="$RUNNER_NAME" -h -o %A | head -n1) srun --jobid=$JOB_ID bash -c "docker stop \$(docker ps -a -q)" From 024a184d0cb8c87784134ae8d5384ca673cba479 Mon Sep 17 00:00:00 2001 From: seungrokj Date: Wed, 15 Jul 2026 11:53:57 +0900 Subject: [PATCH 13/29] [AMD][MI355X] DSv4 SGLang MTP: drop two-batch-overlap, add TCP user timeout, clean up var defaults Co-Authored-By: Claude Opus 4.6 --- benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index a601daa15f..bbfd40c242 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -71,6 +71,8 @@ if agentic_kv_offload_enabled; then ;; esac fi +# ---- Client config ---------------------------------------------------------- +export AIPERF_HTTP_TCP_USER_TIMEOUT=1000000 # ---- LLM server config ---------------------------------------------------------- USE_SGLANG_ROUTER=false @@ -97,7 +99,6 @@ if [ "$DP_ATTENTION" = "true" ]; then --dp "$TP" --enable-dp-attention --enable-prefill-delayer - --enable-two-batch-overlap ) fi From 75584f7dd2e3713fdeadba019bde2f7ff2d49818 Mon Sep 17 00:00:00 2001 From: seungrokj Date: Wed, 15 Jul 2026 15:41:15 +0900 Subject: [PATCH 14/29] [AMD][MI355X] DSv4 SGLang MTP: cap cuda-graph-max-bs at 64, set reasoning-effort to max, narrow HiCache sweep to c96 Co-Authored-By: Claude Opus 4.6 --- .../single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 4 ++-- configs/amd-master.yaml | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index bbfd40c242..3d68fc8b15 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -110,11 +110,11 @@ fi # Allow subagent fan-out to exceed CONC without clipping request bursts. MAX_RUNNING_REQUESTS=$((2 * CONC)) CUDA_GRAPH_MAX_BS=$CONC -[ "$CUDA_GRAPH_MAX_BS" -gt 128 ] && CUDA_GRAPH_MAX_BS=128 +[ "$CUDA_GRAPH_MAX_BS" -gt 64 ] && CUDA_GRAPH_MAX_BS=64 # Simulated acceptance-length (AL) settings. export SGLANG_DEFAULT_THINKING=1 -export SGLANG_DSV4_REASONING_EFFORT=high +export SGLANG_DSV4_REASONING_EFFORT=max export SGLANG_SIMULATE_ACC_LEN=2.49 export SGLANG_SIMULATE_ACC_METHOD=match-expected export SGLANG_SIMULATE_ACC_TOKEN_MODE=real-draft-token diff --git a/configs/amd-master.yaml b/configs/amd-master.yaml index eb0970787b..b6530f0063 100644 --- a/configs/amd-master.yaml +++ b/configs/amd-master.yaml @@ -2372,9 +2372,10 @@ dsv4-fp4-mi355x-sglang-agentic-hicache-mtp: agentic-coding: - dram-utilization: 0.80 search-space: - - { tp: 8, kv-offloading: none, conc-list: [1, 2, 4, 8], spec-decoding: mtp } - - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48, 64], spec-decoding: mtp } - - { tp: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [80, 96], spec-decoding: mtp } + #- { tp: 8, kv-offloading: none, conc-list: [1, 2, 4, 8], spec-decoding: mtp } + #- { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48, 64], spec-decoding: mtp } + #- { tp: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [80, 96], spec-decoding: mtp } + - { tp: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [96], spec-decoding: mtp } # MiniMax-M3 MXFP8 MI355X recipe: # https://github.com/vllm-project/recipes/commit/2a3728ed9892debfd767a72a58ebc90b33f186e5 From 6ba055961d548246e81edf9d97326fd8cb1de14e Mon Sep 17 00:00:00 2001 From: seungrokj Date: Wed, 15 Jul 2026 17:38:17 +0900 Subject: [PATCH 15/29] [AMD][MI355X] DSv4 SGLang MTP: revert cuda-graph-max-bs cap and reasoning-effort, lower HiCache sweep to c64 Co-Authored-By: Claude Opus 4.6 --- benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 4 ++-- configs/amd-master.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index 3d68fc8b15..bbfd40c242 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -110,11 +110,11 @@ fi # Allow subagent fan-out to exceed CONC without clipping request bursts. MAX_RUNNING_REQUESTS=$((2 * CONC)) CUDA_GRAPH_MAX_BS=$CONC -[ "$CUDA_GRAPH_MAX_BS" -gt 64 ] && CUDA_GRAPH_MAX_BS=64 +[ "$CUDA_GRAPH_MAX_BS" -gt 128 ] && CUDA_GRAPH_MAX_BS=128 # Simulated acceptance-length (AL) settings. export SGLANG_DEFAULT_THINKING=1 -export SGLANG_DSV4_REASONING_EFFORT=max +export SGLANG_DSV4_REASONING_EFFORT=high export SGLANG_SIMULATE_ACC_LEN=2.49 export SGLANG_SIMULATE_ACC_METHOD=match-expected export SGLANG_SIMULATE_ACC_TOKEN_MODE=real-draft-token diff --git a/configs/amd-master.yaml b/configs/amd-master.yaml index b6530f0063..ad1542ebb1 100644 --- a/configs/amd-master.yaml +++ b/configs/amd-master.yaml @@ -2375,7 +2375,7 @@ dsv4-fp4-mi355x-sglang-agentic-hicache-mtp: #- { tp: 8, kv-offloading: none, conc-list: [1, 2, 4, 8], spec-decoding: mtp } #- { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48, 64], spec-decoding: mtp } #- { tp: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [80, 96], spec-decoding: mtp } - - { tp: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [96], spec-decoding: mtp } + - { tp: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [64], spec-decoding: mtp } # MiniMax-M3 MXFP8 MI355X recipe: # https://github.com/vllm-project/recipes/commit/2a3728ed9892debfd767a72a58ebc90b33f186e5 From 1c7e030face82c4e0cc57968d357a5eb566e552f Mon Sep 17 00:00:00 2001 From: seungrokj Date: Wed, 15 Jul 2026 18:31:02 +0900 Subject: [PATCH 16/29] [AMD][MI355X] DSv4 SGLang MTP: switch HiCache c64 to no KV offloading Co-Authored-By: Claude Opus 4.6 --- configs/amd-master.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amd-master.yaml b/configs/amd-master.yaml index ad1542ebb1..69177a2092 100644 --- a/configs/amd-master.yaml +++ b/configs/amd-master.yaml @@ -2375,7 +2375,7 @@ dsv4-fp4-mi355x-sglang-agentic-hicache-mtp: #- { tp: 8, kv-offloading: none, conc-list: [1, 2, 4, 8], spec-decoding: mtp } #- { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48, 64], spec-decoding: mtp } #- { tp: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [80, 96], spec-decoding: mtp } - - { tp: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [64], spec-decoding: mtp } + - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [64], spec-decoding: mtp } # MiniMax-M3 MXFP8 MI355X recipe: # https://github.com/vllm-project/recipes/commit/2a3728ed9892debfd767a72a58ebc90b33f186e5 From 82039f0514a5e40581288d3c34d9c31667035698 Mon Sep 17 00:00:00 2001 From: seungrokj Date: Wed, 15 Jul 2026 20:32:06 +0900 Subject: [PATCH 17/29] [AMD][MI355X] DSv4 SGLang MTP: use cuda-graph-max-bs-decode flag and restore full sweep to c72 Co-Authored-By: Claude Opus 4.6 --- .../single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 2 +- configs/amd-master.yaml | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index bbfd40c242..9c84e55249 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -140,7 +140,7 @@ SGLANG_CMD=( --trust-remote-code "${PARALLEL_ARGS[@]}" --attention-backend compressed - --cuda-graph-max-bs "$CUDA_GRAPH_MAX_BS" + --cuda-graph-max-bs-decode "$CUDA_GRAPH_MAX_BS" --max-running-requests "$MAX_RUNNING_REQUESTS" --mem-fraction-static "$MEM_FRACTION_STATIC" --swa-full-tokens-ratio 0.10 diff --git a/configs/amd-master.yaml b/configs/amd-master.yaml index 69177a2092..27fce274dc 100644 --- a/configs/amd-master.yaml +++ b/configs/amd-master.yaml @@ -2372,10 +2372,8 @@ dsv4-fp4-mi355x-sglang-agentic-hicache-mtp: agentic-coding: - dram-utilization: 0.80 search-space: - #- { tp: 8, kv-offloading: none, conc-list: [1, 2, 4, 8], spec-decoding: mtp } - #- { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48, 64], spec-decoding: mtp } - #- { tp: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [80, 96], spec-decoding: mtp } - - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [64], spec-decoding: mtp } + - { tp: 8, kv-offloading: none, conc-list: [1, 2, 4, 8], spec-decoding: mtp } + - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48, 64, 72], spec-decoding: mtp } # MiniMax-M3 MXFP8 MI355X recipe: # https://github.com/vllm-project/recipes/commit/2a3728ed9892debfd767a72a58ebc90b33f186e5 From 3e52d17293f422c4f7227c12bcd2868faa67ef57 Mon Sep 17 00:00:00 2001 From: seungrokj Date: Wed, 15 Jul 2026 21:04:58 +0900 Subject: [PATCH 18/29] [AMD][MI355X] DSv4 SGLang MTP: drop c72 from DPA no-offload sweep Co-Authored-By: Claude Opus 4.6 --- configs/amd-master.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amd-master.yaml b/configs/amd-master.yaml index 27fce274dc..e8e801a23d 100644 --- a/configs/amd-master.yaml +++ b/configs/amd-master.yaml @@ -2373,7 +2373,7 @@ dsv4-fp4-mi355x-sglang-agentic-hicache-mtp: - dram-utilization: 0.80 search-space: - { tp: 8, kv-offloading: none, conc-list: [1, 2, 4, 8], spec-decoding: mtp } - - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48, 64, 72], spec-decoding: mtp } + - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48, 64], spec-decoding: mtp } # MiniMax-M3 MXFP8 MI355X recipe: # https://github.com/vllm-project/recipes/commit/2a3728ed9892debfd767a72a58ebc90b33f186e5 From fe0c5b598f6af8eac3888b7469d4224524fca6cc Mon Sep 17 00:00:00 2001 From: seungrokj Date: Thu, 16 Jul 2026 00:11:29 +0900 Subject: [PATCH 19/29] [AMD][MI355X] DSv4 SGLang MTP: disable unified-radix-tree per sgl-project/sglang#30339, drop GPU_MAX_HW_QUEUES, set max-running-requests to CUDA_GRAPH_MAX_BS Co-Authored-By: Claude Opus 4.6 --- .../agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index 9c84e55249..965ff843a0 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -44,9 +44,6 @@ install_agentic_deps SERVER_LOG="$RESULT_DIR/server.log" mkdir -p "$RESULT_DIR" -export SGLANG_ENABLE_UNIFIED_RADIX_TREE=1 -export SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1 - CACHE_ARGS=() if agentic_kv_offload_enabled; then # HiCache config — https://lmsysorg.mintlify.app/cookbook/autoregressive/DeepSeek/DeepSeek-V4 @@ -92,7 +89,6 @@ if [ "$DP_ATTENTION" = "true" ]; then export SGLANG_DP_SHARED_EXPERT_LOCAL=1 export SGLANG_DP_USE_GATHERV=1 export SGLANG_DP_USE_REDUCE_SCATTER=1 - export GPU_MAX_HW_QUEUES=5 CHUNKED_PREFILL_SIZE=$((8192 * TP)) PARALLEL_ARGS+=( @@ -108,7 +104,6 @@ fi # AgentX concurrency counts live session trees, not individual requests. # Allow subagent fan-out to exceed CONC without clipping request bursts. -MAX_RUNNING_REQUESTS=$((2 * CONC)) CUDA_GRAPH_MAX_BS=$CONC [ "$CUDA_GRAPH_MAX_BS" -gt 128 ] && CUDA_GRAPH_MAX_BS=128 @@ -123,6 +118,11 @@ export SGLANG_USE_ROCM700A=0 export SGLANG_HACK_FLASHMLA_BACKEND=unified_kv_triton export AITER_BF16_FP8_MOE_BOUND=0 +# sglang kv cache +# https://github.com/sgl-project/sglang/pull/30339 +#export SGLANG_ENABLE_UNIFIED_RADIX_TREE=1 +export SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1 + METRICS_ARGS=(--enable-metrics) SPEC_ARGS=( --speculative-algorithm EAGLE @@ -141,7 +141,7 @@ SGLANG_CMD=( "${PARALLEL_ARGS[@]}" --attention-backend compressed --cuda-graph-max-bs-decode "$CUDA_GRAPH_MAX_BS" - --max-running-requests "$MAX_RUNNING_REQUESTS" + --max-running-requests "$CUDA_GRAPH_MAX_BS" --mem-fraction-static "$MEM_FRACTION_STATIC" --swa-full-tokens-ratio 0.10 --page-size 256 From df554692f37452eda80fd6887a85e271b67d73bd Mon Sep 17 00:00:00 2001 From: seungrokj Date: Thu, 16 Jul 2026 01:37:45 +0900 Subject: [PATCH 20/29] [AMD][MI355X] DSv4 SGLang MTP: also disable unified-cache-free-out-of-window-slots when hicache off Co-Authored-By: Claude Opus 4.6 --- benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index 965ff843a0..41656ec95b 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -118,10 +118,10 @@ export SGLANG_USE_ROCM700A=0 export SGLANG_HACK_FLASHMLA_BACKEND=unified_kv_triton export AITER_BF16_FP8_MOE_BOUND=0 -# sglang kv cache +# sglang kv cache, when hicache is disabled # https://github.com/sgl-project/sglang/pull/30339 #export SGLANG_ENABLE_UNIFIED_RADIX_TREE=1 -export SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1 +#export SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1 METRICS_ARGS=(--enable-metrics) SPEC_ARGS=( From 57aa3c6ff81267875e64c96f8d4ea4d7daad0ad7 Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Wed, 15 Jul 2026 12:51:42 -0500 Subject: [PATCH 21/29] fix(mi355x): bump agentic MTP SGLang image --- configs/amd-master.yaml | 2 +- perf-changelog.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/amd-master.yaml b/configs/amd-master.yaml index e8e801a23d..683d64ebb0 100644 --- a/configs/amd-master.yaml +++ b/configs/amd-master.yaml @@ -2361,7 +2361,7 @@ dsv4-fp4-mi355x-sglang-agentic: - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [64, 128, 256] } dsv4-fp4-mi355x-sglang-agentic-hicache-mtp: - image: lmsysorg/sglang-rocm:v0.5.14-rocm720-mi35x-20260710 + image: lmsysorg/sglang-rocm:v0.5.15.post1-rocm720-mi35x-20260714 model: deepseek-ai/DeepSeek-V4-Pro model-prefix: dsv4 runner: cluster:mi355x-amds diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 271e20d7c2..8c7c3784e8 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4786,7 +4786,7 @@ - dsv4-fp4-mi355x-sglang-agentic-hicache-mtp description: - "Add DSv4 FP4 MI355X SGLang agentic MTP recipe with HiCache support" - - "Image: lmsysorg/sglang-rocm:v0.5.15-rocm700-mi35x-20260713" + - "Image: lmsysorg/sglang-rocm:v0.5.15.post1-rocm720-mi35x-20260714" - "EAGLE speculative decoding: 3 steps, topk 1, 4 draft tokens" - "Sweep TP8 +/- DPA +/- HiCache with MTP across conc 1-96" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2200 From 48b08c6f03a4cd6a1b83e66724e5c3f0730e353f Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Wed, 15 Jul 2026 12:54:12 -0500 Subject: [PATCH 22/29] fix(changelog): append MTP image bump --- perf-changelog.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 8c7c3784e8..08c501fac3 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4786,7 +4786,7 @@ - dsv4-fp4-mi355x-sglang-agentic-hicache-mtp description: - "Add DSv4 FP4 MI355X SGLang agentic MTP recipe with HiCache support" - - "Image: lmsysorg/sglang-rocm:v0.5.15.post1-rocm720-mi35x-20260714" + - "Image: lmsysorg/sglang-rocm:v0.5.15-rocm700-mi35x-20260713" - "EAGLE speculative decoding: 3 steps, topk 1, 4 draft tokens" - "Sweep TP8 +/- DPA +/- HiCache with MTP across conc 1-96" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2200 @@ -4804,3 +4804,10 @@ - "Add EAGLE3 speculative-decoding arm for the Kimi K2.6 NVFP4 B300 AgentX recipe (draft lightseekorg/kimi-k2.6-eagle3-mla, TOKENSPEED_MLA attention backend with TRT-LLM ragged MLA kernel)." - "TP8/TP4 GPU-only KV points plus a TP4 native CPU-offload ladder via SimpleCPUOffloadConnector with lazy_offload off; TP4/DCP4 high-concurrency points (conc 32/64) using num_speculative_tokens=3 and synthetic_acceptance_length=2.88." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2222 + +- config-keys: + - dsv4-fp4-mi355x-sglang-agentic-hicache-mtp + description: + - "Bump image to lmsysorg/sglang-rocm:v0.5.15.post1-rocm720-mi35x-20260714" + - "Fix HSA out-of-resources crashes during DPA agentic MTP warmup" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2200 From 8aeac8a7351745c511a1083705d4a828760a0afb Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Wed, 15 Jul 2026 13:38:55 -0500 Subject: [PATCH 23/29] fix(mi355x): scale MTP DPA limits per engine --- .../agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 13 ++++++++++--- perf-changelog.yaml | 7 +++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index 41656ec95b..a4d6045c50 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -102,9 +102,16 @@ if [ "$EP_SIZE" -gt 1 ]; then PARALLEL_ARGS+=(--ep-size "$EP_SIZE") fi -# AgentX concurrency counts live session trees, not individual requests. -# Allow subagent fan-out to exceed CONC without clipping request bursts. +# AgentX concurrency counts live session trees, not individual requests, so +# retain 2x aggregate request headroom for subagent fan-out. SGLang applies +# both limits per engine; with DP attention, divide the aggregate limits over +# the DP ranks instead of granting the full global limit to every rank. +MAX_RUNNING_REQUESTS=$((2 * CONC)) CUDA_GRAPH_MAX_BS=$CONC +if [ "$DP_ATTENTION" = "true" ]; then + MAX_RUNNING_REQUESTS=$(( (MAX_RUNNING_REQUESTS + TP - 1) / TP )) + CUDA_GRAPH_MAX_BS=$(( (CUDA_GRAPH_MAX_BS + TP - 1) / TP )) +fi [ "$CUDA_GRAPH_MAX_BS" -gt 128 ] && CUDA_GRAPH_MAX_BS=128 # Simulated acceptance-length (AL) settings. @@ -141,7 +148,7 @@ SGLANG_CMD=( "${PARALLEL_ARGS[@]}" --attention-backend compressed --cuda-graph-max-bs-decode "$CUDA_GRAPH_MAX_BS" - --max-running-requests "$CUDA_GRAPH_MAX_BS" + --max-running-requests "$MAX_RUNNING_REQUESTS" --mem-fraction-static "$MEM_FRACTION_STATIC" --swa-full-tokens-ratio 0.10 --page-size 256 diff --git a/perf-changelog.yaml b/perf-changelog.yaml index b96383e9a2..c7469793ce 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4804,3 +4804,10 @@ - "Bump image to lmsysorg/sglang-rocm:v0.5.15.post1-rocm720-mi35x-20260714" - "Fix HSA out-of-resources crashes during DPA agentic MTP warmup" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2200 + +- config-keys: + - dsv4-fp4-mi355x-sglang-agentic-hicache-mtp + description: + - "Scale SGLang request and CUDA-graph limits per DP-attention engine while preserving aggregate AgentX fan-out headroom" + - "Prevent per-rank HSA out-of-resources crashes during accelerated warmup" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2200 From ea8caa92c9539899eec5dd9d0c847e5b1ffcd99d Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Wed, 15 Jul 2026 14:04:23 -0500 Subject: [PATCH 24/29] fix(mi355x): reserve DPA MTP runtime headroom --- .../agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 13 +++++++------ perf-changelog.yaml | 7 +++++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index a4d6045c50..d102b32049 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -80,6 +80,9 @@ CHUNKED_PREFILL_SIZE=8192 PARALLEL_ARGS=(--tensor-parallel-size "$TP") if [ "$DP_ATTENTION" = "true" ]; then USE_SGLANG_ROUTER=true + # DPA + MTP needs additional runtime headroom for speculative decode and + # communication buffers beyond SGLang's static KV pool. + MEM_FRACTION_STATIC=0.80 export AIPERF_HTTP_X_SMG_ROUTING_KEY_FROM_CORRELATION_ID=true SGLANG_BACKEND_PORT=$((PORT + 1)) SGLANG_ROUTER_METRICS_PORT=$((PORT + 10000)) @@ -102,14 +105,12 @@ if [ "$EP_SIZE" -gt 1 ]; then PARALLEL_ARGS+=(--ep-size "$EP_SIZE") fi -# AgentX concurrency counts live session trees, not individual requests, so -# retain 2x aggregate request headroom for subagent fan-out. SGLang applies -# both limits per engine; with DP attention, divide the aggregate limits over -# the DP ranks instead of granting the full global limit to every rank. -MAX_RUNNING_REQUESTS=$((2 * CONC)) +# SGLang treats max-running-requests as a global DPA limit and partitions it +# internally. CUDA graph capture is per scheduler, so only its batch size is +# divided across DP ranks. +MAX_RUNNING_REQUESTS=$CONC CUDA_GRAPH_MAX_BS=$CONC if [ "$DP_ATTENTION" = "true" ]; then - MAX_RUNNING_REQUESTS=$(( (MAX_RUNNING_REQUESTS + TP - 1) / TP )) CUDA_GRAPH_MAX_BS=$(( (CUDA_GRAPH_MAX_BS + TP - 1) / TP )) fi [ "$CUDA_GRAPH_MAX_BS" -gt 128 ] && CUDA_GRAPH_MAX_BS=128 diff --git a/perf-changelog.yaml b/perf-changelog.yaml index c7469793ce..6543010f64 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4811,3 +4811,10 @@ - "Scale SGLang request and CUDA-graph limits per DP-attention engine while preserving aggregate AgentX fan-out headroom" - "Prevent per-rank HSA out-of-resources crashes during accelerated warmup" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2200 + +- config-keys: + - dsv4-fp4-mi355x-sglang-agentic-hicache-mtp + description: + - "Keep max-running-requests global for SGLang DP attention and scale only per-scheduler CUDA graph capture" + - "Reserve DPA MTP runtime headroom with mem-fraction-static 0.80" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2200 From 53fb3a58c63a09b595cd30c669e8358fe8858c79 Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Wed, 15 Jul 2026 14:43:02 -0500 Subject: [PATCH 25/29] fix(mi355x): increase DPA MTP memory headroom --- .../single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 2 +- perf-changelog.yaml | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index d102b32049..4def38ec90 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -82,7 +82,7 @@ if [ "$DP_ATTENTION" = "true" ]; then USE_SGLANG_ROUTER=true # DPA + MTP needs additional runtime headroom for speculative decode and # communication buffers beyond SGLang's static KV pool. - MEM_FRACTION_STATIC=0.80 + MEM_FRACTION_STATIC=0.75 export AIPERF_HTTP_X_SMG_ROUTING_KEY_FROM_CORRELATION_ID=true SGLANG_BACKEND_PORT=$((PORT + 1)) SGLANG_ROUTER_METRICS_PORT=$((PORT + 10000)) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 6543010f64..cd24eb1392 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4818,3 +4818,9 @@ - "Keep max-running-requests global for SGLang DP attention and scale only per-scheduler CUDA graph capture" - "Reserve DPA MTP runtime headroom with mem-fraction-static 0.80" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2200 + +- config-keys: + - dsv4-fp4-mi355x-sglang-agentic-hicache-mtp + description: + - "Increase DPA MTP runtime headroom to mem-fraction-static 0.75 after c64 exhausted VRAM at 0.80 during regular warmup" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2200 From 0360b6c48ad4f8b34b24f90e81024bf7d928cc4b Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Wed, 15 Jul 2026 15:44:11 -0500 Subject: [PATCH 26/29] fix(mi355x): increase DPA agentic prefill chunk --- benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index 4def38ec90..86f4a8f7f9 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -93,7 +93,10 @@ if [ "$DP_ATTENTION" = "true" ]; then export SGLANG_DP_USE_GATHERV=1 export SGLANG_DP_USE_REDUCE_SCATTER=1 - CHUNKED_PREFILL_SIZE=$((8192 * TP)) + # SGLang divides the configured chunk across DP schedulers. Use a 16K + # per-scheduler chunk so long agentic prefill tails drain within the + # standard 600-second warmup grace period. + CHUNKED_PREFILL_SIZE=$((16384 * TP)) PARALLEL_ARGS+=( --dp "$TP" --enable-dp-attention From ff083efe84fcd1841c5db3b14de81fea489c1fbd Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Wed, 15 Jul 2026 15:47:20 -0500 Subject: [PATCH 27/29] style(mi355x): clean MTP launcher whitespace --- benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index 86f4a8f7f9..c52787b9a1 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -9,7 +9,7 @@ set -x # Required env vars: # MODEL, TP, CONC, KV_OFFLOADING, TOTAL_CPU_DRAM_GB, RESULT_DIR # -# KV_OFFLOADING=dram requires one of these. +# KV_OFFLOADING=dram requires one of these. # KV_OFFLOAD_BACKEND=hicache. source "$(dirname "$0")/../../benchmark_lib.sh" @@ -69,7 +69,7 @@ if agentic_kv_offload_enabled; then esac fi # ---- Client config ---------------------------------------------------------- -export AIPERF_HTTP_TCP_USER_TIMEOUT=1000000 +export AIPERF_HTTP_TCP_USER_TIMEOUT=1000000 # ---- LLM server config ---------------------------------------------------------- USE_SGLANG_ROUTER=false From b53fc3a301d026e1bbb96636c23b0cfe1dd1e582 Mon Sep 17 00:00:00 2001 From: seungrokj Date: Thu, 16 Jul 2026 10:48:20 +0900 Subject: [PATCH 28/29] [AMD][MI355X] DSv4 SGLang MTP: re-enable unified-cache-free-out-of-window-slots, drop conc=64 from hicache MTP Co-Authored-By: Claude Opus 4.6 --- benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 2 +- configs/amd-master.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index c52787b9a1..95945c409d 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -132,7 +132,7 @@ export AITER_BF16_FP8_MOE_BOUND=0 # sglang kv cache, when hicache is disabled # https://github.com/sgl-project/sglang/pull/30339 #export SGLANG_ENABLE_UNIFIED_RADIX_TREE=1 -#export SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1 +export SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1 METRICS_ARGS=(--enable-metrics) SPEC_ARGS=( diff --git a/configs/amd-master.yaml b/configs/amd-master.yaml index 683d64ebb0..d1b1d69029 100644 --- a/configs/amd-master.yaml +++ b/configs/amd-master.yaml @@ -2373,7 +2373,7 @@ dsv4-fp4-mi355x-sglang-agentic-hicache-mtp: - dram-utilization: 0.80 search-space: - { tp: 8, kv-offloading: none, conc-list: [1, 2, 4, 8], spec-decoding: mtp } - - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48, 64], spec-decoding: mtp } + - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48], spec-decoding: mtp } # MiniMax-M3 MXFP8 MI355X recipe: # https://github.com/vllm-project/recipes/commit/2a3728ed9892debfd767a72a58ebc90b33f186e5 From bd4f4e1a12fafd9d794b9df55af2b78291c48462 Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Wed, 15 Jul 2026 22:21:11 -0500 Subject: [PATCH 29/29] fix(mi355x): disable DPA prefill delayer --- .../single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh | 1 - configs/amd-master.yaml | 2 +- perf-changelog.yaml | 7 +++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh index 95945c409d..ce3c2ad882 100755 --- a/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv4_fp4_mi355x_sglang_mtp.sh @@ -100,7 +100,6 @@ if [ "$DP_ATTENTION" = "true" ]; then PARALLEL_ARGS+=( --dp "$TP" --enable-dp-attention - --enable-prefill-delayer ) fi diff --git a/configs/amd-master.yaml b/configs/amd-master.yaml index 0c787be1d7..24c4e0e7b3 100644 --- a/configs/amd-master.yaml +++ b/configs/amd-master.yaml @@ -2428,7 +2428,7 @@ dsv4-fp4-mi355x-sglang-agentic-hicache-mtp: - dram-utilization: 0.80 search-space: - { tp: 8, kv-offloading: none, conc-list: [1, 2, 4, 8], spec-decoding: mtp } - - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48], spec-decoding: mtp } + - { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48, 64], spec-decoding: mtp } # MiniMax-M3 MXFP8 MI355X recipe: # https://github.com/vllm-project/recipes/commit/2a3728ed9892debfd767a72a58ebc90b33f186e5 diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 42ea007d07..a6059e1589 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4876,3 +4876,10 @@ - "Image: lmsysorg/sglang:v0.5.13.post1-cu130" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2123 +- config-keys: + - dsv4-fp4-mi355x-sglang-agentic-hicache-mtp + description: + - "Disable the SGLang prefill delayer so DP-attention MTP c64 warmup drains within the standard 600-second grace period" + - "Restore DP-attention concurrency 64 to the full sweep" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2200 +