Skip to content

Commit 884cc79

Browse files
seungrokjclaudecquil11chunfangamd
authored
[AMD][MI355X] DSv4 SGLang agentic: v0.5.14 image, router, HiCache (#2146)
* [AMD][MI355X] Update DSv4 SGLang agentic launcher to v0.5.14 image with router and HiCache support Align the agentic launcher with the fixed-seq-len sibling: dsv4 attention backend, fp8_e4m3 KV cache, disable-radix-cache, DP-attention env exports (SGLANG_SHARED_EXPERT_TP1, DP_USE_GATHERV, etc.), and two-batch-overlap. Add SGLang router for DP-attention configs and HiCache KV offloading. Sweep conc=48 across TP8 +/- DPA +/- HiCache. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] Add dram-utilization 0.80 to DSv4 SGLang agentic sweep config Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update perf-changelog with PR link for DSv4 SGLang agentic entry Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] Remove --context-length and comment out extra sweep configs for initial validation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang agentic: use compressed attention, 2x max-running-requests, re-enable all sweep configs - Fix attention-backend typo (compresseed -> compressed) - Remove duplicate CUDA_GRAPH_MAX_BS block - Set MAX_RUNNING_REQUESTS to 2*CONC for subagent fan-out headroom - Use MEM_FRACTION_STATIC=0.90 and swa-full-tokens-ratio=0.10 - Add METRICS_ARGS array, guard capture_cache_metrics on metrics enabled - Remove duplicate SGLANG_ENABLE_UNIFIED_RADIX_TREE export from hicache block - Uncomment all 4 sweep configs (TP8 +/- DPA +/- HiCache) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] Fix cudaHostRegister OOM: lower hicache-ratio to 4, adjust sweep concurrency hicache-ratio=8 tried to pin ~495 GB via cudaHostRegister, exceeding ROCm's per-process pinnable memory limit. Lower to ratio=4 and sweep graduated concurrency levels across configs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang agentic: focus sweep on DPA configs, scale concurrency to 96 Device KV utilization peaked at only 27% even at conc=48, and non-DPA configs underperformed DPA in both throughput and completed requests. Drop non-DPA sweep entries and extend DPA concurrency range to [16..96] (none) and [48..96] (hicache) to find the saturation point. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang agentic: add non-DPA baseline config (tp=8, conc 1-8) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] exclude mia1-p01-g12 from agentic salloc Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: narrow DPA sweep ranges, add disagg agentic hicache recipe Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: refactor launcher, rename config key, bump image - Clean up hicache case block indentation and comments - Add SGLANG_ROUTER_CMD array pattern matching b300 launcher - Rename config key dsv4-fp4-mi355x-sglang-agentic → agentic-hicache - Bump image to v0.5.15-rocm700-mi35x-20260713 - Raise CUDA_GRAPH_MAX_BS cap to 128, tune mem/prefill defaults - Add SPEC_ARGS placeholder for future speculative decoding Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: fix kv-offload-backend to map syntax, add mori p2p, revert image - Use { name: ... } map syntax for kv-offload-backend (hicache, native) - Revert image to v0.5.14-rocm720-mi35x-20260710 - Add kv-p2p-transfer: mori to disagg agentic hicache recipe - Update perf-changelog config keys for renamed entries Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: remove disagg agentic hicache recipe Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: add vllm-router and mooncake backend to agentic sweep - Add router: { name: vllm-router, version: "0.1.14" } to DPA configs - Switch kv-offload-backend from native to mooncake 0.3.11.post1 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: bump agentic-hicache image to v0.5.15 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: update perf-changelog for image bump and drop disagg entry Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: move PARALLEL_ARGS init before DPA block Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: revert agentic-hicache image to v0.5.14 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: revert mem-fraction-static to 0.90 and chunked-prefill to 8192 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore(ci): trigger full sweep * fix(changelog): append PR entry after main * fix(changelog): omit null optional metadata * fix(agentx): require explicit benchmark environment * chore(agentx): remove cache metric snapshots Remove the manual metrics scrape and EXIT trap while retaining the metrics endpoint used by the replay client. 中文:移除手动指标抓取与 EXIT trap,同时保留回放客户端使用的 metrics endpoint。 * fix(agentx): set DeepSeek reasoning effort high * fix(runner): remove MI355X node exclusions * [AMD][MI355X] DSv4 SGLang: move unified-radix-tree exports after HiCache block and add TCP user timeout Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: lower TCP user timeout to 1000000ms Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: cap cuda-graph-max-bs at 64 and narrow HiCache sweep to c96 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: revert cuda-graph-max-bs cap to 128 and set HiCache sweep to c64 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: use cuda-graph-max-bs-decode flag and restore full sweep entries Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: add c72 to DPA and HiCache sweep entries Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: drop c72 from HiCache sweep Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: fix perf-changelog image version to v0.5.14 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * [AMD][MI355X] DSv4 SGLang: drop c72 from DPA no-offload sweep Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Cam Quilici <cjquilici@gmail.com> Co-authored-by: Chun Fang <chun.fang@amd.com>
1 parent 55e4ce8 commit 884cc79

4 files changed

Lines changed: 156 additions & 116 deletions

File tree

Lines changed: 136 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,31 @@
11
#!/usr/bin/env bash
2-
set -euo pipefail
2+
set -eo pipefail
33
set -x
44

55
# Agentic trace replay benchmark for DeepSeek-V4-Pro FP4 on MI355X using SGLang.
6-
# Adapted from benchmarks/single_node/dsv4_fp4_mi355x_sglang.sh (fixed-seq-len
7-
# sibling) with the agentic harness (build_replay_cmd / write_agentic_result_json
8-
# / analyze_benchmark_distributions) swapped in for run_benchmark_serving.
96
#
10-
# This launcher only supports on-device KV cache.
7+
# KV_OFFLOADING=dram requires KV_OFFLOAD_BACKEND=hicache.
118
#
129
# Required env vars:
1310
# MODEL, TP, CONC, KV_OFFLOADING, TOTAL_CPU_DRAM_GB, RESULT_DIR
11+
#
12+
# KV_OFFLOADING=dram requires one of these.
13+
# KV_OFFLOAD_BACKEND=hicache.
1414

1515
source "$(dirname "$0")/../../benchmark_lib.sh"
1616

1717
check_env_vars MODEL TP CONC KV_OFFLOADING TOTAL_CPU_DRAM_GB RESULT_DIR DURATION EP_SIZE DP_ATTENTION
1818

19-
if [[ -n "${SLURM_JOB_ID:-}" ]]; then
20-
echo "JOB $SLURM_JOB_ID running on ${SLURMD_NODENAME:-unknown}"
19+
if [[ -n "$SLURM_JOB_ID" ]]; then
20+
echo "JOB $SLURM_JOB_ID running on $SLURMD_NODENAME"
2121
fi
2222

2323
# ROCR/HIP visibility under slurm cgroups.
24-
if [ -n "${ROCR_VISIBLE_DEVICES:-}" ]; then
24+
if [ -n "$ROCR_VISIBLE_DEVICES" ]; then
2525
export HIP_VISIBLE_DEVICES="$ROCR_VISIBLE_DEVICES"
2626
fi
2727

28-
# `hf download` creates the target dir if missing and is itself idempotent.
29-
# When MODEL_PATH is unset (stand-alone runs), fall back to the HF_HUB_CACHE
30-
# Either way, MODEL_PATH is what the server is launched with.
31-
if [[ -n "${MODEL_PATH:-}" ]]; then
28+
if [[ -n "$MODEL_PATH" ]]; then
3229
if [[ ! -d "$MODEL_PATH" || -z "$(ls -A "$MODEL_PATH" 2>/dev/null)" ]]; then
3330
hf download "$MODEL" --local-dir "$MODEL_PATH"
3431
fi
@@ -43,115 +40,153 @@ amd-smi || true
4340
resolve_trace_source
4441
install_agentic_deps
4542

46-
require_agentic_kv_offload_none
47-
48-
# Transformers in the container doesn't recognize the `deepseek_v4` model_type.
49-
# PR #23608's fallback in hf_transformers_utils.get_config tries to handle this
50-
# by writing a patched config to /tmp, but in practice isn't catching the error
51-
# in this image. Patch the cached config.json directly instead: set model_type
52-
# to `deepseek_v3` so AutoConfig.from_pretrained succeeds, and keep
53-
# architectures=['DeepseekV4ForCausalLM'] so SGLang dispatches to its native
54-
# DSv4 model class (python/sglang/srt/models/deepseek_v4.py).
55-
python3 << PYEOF
56-
import json
57-
from huggingface_hub import hf_hub_download
58-
path = hf_hub_download(repo_id="$MODEL", filename="config.json")
59-
with open(path) as f:
60-
config = json.load(f)
61-
if config.get("model_type") == "deepseek_v4":
62-
config["model_type"] = "deepseek_v3"
63-
with open(path, "w") as f:
64-
json.dump(config, f, indent=2)
65-
print(f"Patched {path}: model_type deepseek_v4 -> deepseek_v3")
66-
else:
67-
print(f"No patch needed: model_type is {config.get('model_type')!r}")
68-
PYEOF
69-
70-
# DSv4 FP4-experts path. Mirrors the env block in the fixed-seq-len sibling
71-
# (benchmarks/single_node/dsv4_fp4_mi355x_sglang.sh), which tracks the active
72-
# block in python/run_dsv4.sh on the amd/deepseek_v4 branch:
73-
# SGLANG_DSV4_FP4_EXPERTS=True -> route experts through FP4 kernels
74-
# SGLANG_FORCE_TRITON_MOE_FP8=0 -> dispatch MoE through aiter and apply
75-
# the swiglu_limit clamp in the triton
76-
# MoE fallback path.
77-
export SGLANG_REASONING_EFFORT=max
78-
export SGLANG_OPT_USE_FUSED_COMPRESS=true
79-
export SGLANG_OPT_USE_OLD_COMPRESSOR=true
80-
export SGLANG_OPT_USE_TILELANG_SWA_PREPARE=false
81-
export SGLANG_OPT_USE_JIT_KERNEL_FUSED_TOPK=false
82-
export SGLANG_OPT_USE_FUSED_HASH_TOPK=false
83-
export SGLANG_OPT_DEEPGEMM_HC_PRENORM=false
84-
export SGLANG_OPT_USE_TILELANG_MHC_PRE=false
85-
export SGLANG_OPT_USE_TILELANG_MHC_POST=false
86-
export SGLANG_OPT_USE_AITER_MHC_PRE=true
87-
export SGLANG_OPT_USE_AITER_MHC_POST=true
88-
export SGLANG_ENABLE_THINKING=1
89-
export SGLANG_USE_AITER=1
90-
export SGLANG_USE_ROCM700A=1
91-
export SGLANG_TOPK_TRANSFORM_512_TORCH=0
92-
export SGLANG_FP8_PAGED_MQA_LOGITS_TORCH=1
93-
export SGLANG_DSV4_FP4_EXPERTS=True
94-
export SGLANG_OPT_DPSK_V4_RADIX=0
95-
export SGLANG_OPT_USE_OVERLAP_STORE_CACHE=false
96-
export SGLANG_OPT_USE_FUSED_STORE_CACHE=false
97-
export SGLANG_FORCE_TRITON_MOE_FP8=0
98-
export SGLANG_HACK_FLASHMLA_BACKEND=tilelang
99-
export SGLANG_OPT_USE_TILELANG_INDEXER=true
100-
export SGLANG_OPT_USE_TRITON_SWA_PREPARE=true
101-
10243
# ---- Server config ----------------------------------------------------------
10344
SERVER_LOG="$RESULT_DIR/server.log"
10445
mkdir -p "$RESULT_DIR"
10546

106-
# Parallelism: pure TP, TP+EP, or DEP (DP-attn + EP). Matches the dsv4 b200
107-
# vllm agentic launcher so the agentic sweep can probe both interactivity and
108-
# throughput regimes.
47+
CACHE_ARGS=()
48+
if agentic_kv_offload_enabled; then
49+
# HiCache config — https://lmsysorg.mintlify.app/cookbook/autoregressive/DeepSeek/DeepSeek-V4
50+
case "$KV_OFFLOAD_BACKEND" in
51+
hicache)
52+
HICACHE_RATIO=4
53+
HICACHE_WRITE_POLICY="write_through"
54+
HICACHE_IO_BACKEND="direct"
55+
HICACHE_MEM_LAYOUT="page_first_direct"
56+
CACHE_ARGS=(
57+
--enable-hierarchical-cache
58+
--hicache-ratio "$HICACHE_RATIO"
59+
--hicache-write-policy "$HICACHE_WRITE_POLICY"
60+
--hicache-io-backend "$HICACHE_IO_BACKEND"
61+
--hicache-mem-layout "$HICACHE_MEM_LAYOUT"
62+
)
63+
echo "HiCache DSv4 CPU tier: ratio=$HICACHE_RATIO, write_policy=$HICACHE_WRITE_POLICY, io_backend=$HICACHE_IO_BACKEND, mem_layout=$HICACHE_MEM_LAYOUT"
64+
;;
65+
*)
66+
echo "Error: unsupported KV_OFFLOAD_BACKEND '$KV_OFFLOAD_BACKEND' (expected: hicache)" >&2
67+
exit 1
68+
;;
69+
esac
70+
fi
71+
# ---- Client config ----------------------------------------------------------
72+
export AIPERF_HTTP_TCP_USER_TIMEOUT=1000000
73+
74+
# ---- LLM server config ----------------------------------------------------------
75+
USE_SGLANG_ROUTER=false
76+
SGLANG_BACKEND_PORT="$PORT"
77+
ROUTER_LOG="$RESULT_DIR/router.log"
78+
MEM_FRACTION_STATIC=0.90
79+
CHUNKED_PREFILL_SIZE=8192
10980
PARALLEL_ARGS=(--tensor-parallel-size "$TP")
11081
if [ "$DP_ATTENTION" = "true" ]; then
82+
USE_SGLANG_ROUTER=true
83+
export AIPERF_HTTP_X_SMG_ROUTING_KEY_FROM_CORRELATION_ID=true
84+
SGLANG_BACKEND_PORT=$((PORT + 1))
85+
SGLANG_ROUTER_METRICS_PORT=$((PORT + 10000))
86+
SGLANG_ROUTER_CMD=(python3 -m sglang_router.launch_router)
87+
88+
export SGLANG_SHARED_EXPERT_TP1=1
89+
export SGLANG_DP_SHARED_EXPERT_LOCAL=1
90+
export SGLANG_DP_USE_GATHERV=1
91+
export SGLANG_DP_USE_REDUCE_SCATTER=1
92+
export GPU_MAX_HW_QUEUES=5
93+
94+
CHUNKED_PREFILL_SIZE=$((8192 * TP))
11195
PARALLEL_ARGS+=(
11296
--dp "$TP"
11397
--enable-dp-attention
11498
--enable-prefill-delayer
99+
--enable-two-batch-overlap
115100
)
116101
fi
117-
if [ "${EP_SIZE:-1}" -gt 1 ]; then
118-
PARALLEL_ARGS+=(--ep-size "$EP_SIZE")
119-
fi
120102

121-
# --max-running-requests is per-engine. With DP-attn each DP engine handles
122-
# only CONC/$TP sequences in steady state (the agentic harness load-balances
123-
# users across DP ranks), so size the per-engine cap to that.
124-
# Pure TP is a single engine and sees all CONC sequences itself.
125-
if [ "$DP_ATTENTION" = "true" ]; then
126-
PER_ENGINE_MAX_RUNNING=$(( CONC / TP ))
127-
[ "$PER_ENGINE_MAX_RUNNING" -lt 1 ] && PER_ENGINE_MAX_RUNNING=1
128-
else
129-
PER_ENGINE_MAX_RUNNING=$CONC
103+
if [ "$EP_SIZE" -gt 1 ]; then
104+
PARALLEL_ARGS+=(--ep-size "$EP_SIZE")
130105
fi
131106

132-
echo "Starting sglang server..."
133-
python3 -m sglang.launch_server \
134-
--model-path "$MODEL_PATH" --served-model-name "$MODEL" \
135-
--host=0.0.0.0 \
136-
--port "$PORT" \
137-
"${PARALLEL_ARGS[@]}" \
138-
--trust-remote-code \
139-
--attention-backend compressed \
140-
--max-running-requests "$PER_ENGINE_MAX_RUNNING" \
141-
--cuda-graph-max-bs "$PER_ENGINE_MAX_RUNNING" \
142-
--page-size 256 \
143-
--chunked-prefill-size 8192 \
144-
--disable-shared-experts-fusion \
145-
--tool-call-parser deepseekv4 \
146-
--reasoning-parser deepseek-v4 \
147-
--chat-template "$(dirname "$0")/../chat_templates/deepseek_v4_thinking.jinja" \
148-
--watchdog-timeout 1800 > "$SERVER_LOG" 2>&1 &
107+
# AgentX concurrency counts live session trees, not individual requests.
108+
# Allow subagent fan-out to exceed CONC without clipping request bursts.
109+
MAX_RUNNING_REQUESTS=$((2 * CONC))
110+
CUDA_GRAPH_MAX_BS=$CONC
111+
[ "$CUDA_GRAPH_MAX_BS" -gt 128 ] && CUDA_GRAPH_MAX_BS=128
112+
113+
export SGLANG_DEFAULT_THINKING=1
114+
export SGLANG_DSV4_REASONING_EFFORT=high
115+
export SGLANG_USE_ROCM700A=0
116+
export SGLANG_HACK_FLASHMLA_BACKEND=unified_kv_triton
117+
export AITER_BF16_FP8_MOE_BOUND=0
118+
119+
# sglang kv cache
120+
export SGLANG_ENABLE_UNIFIED_RADIX_TREE=1
121+
export SGLANG_OPT_UNIFIED_CACHE_FREE_OUT_OF_WINDOW_SLOTS=1
122+
123+
METRICS_ARGS=(--enable-metrics)
124+
SPEC_ARGS=()
125+
126+
SGLANG_CMD=(
127+
python3 -m sglang.launch_server
128+
--model-path "$MODEL_PATH"
129+
--served-model-name "$MODEL"
130+
--host 0.0.0.0
131+
--port "$SGLANG_BACKEND_PORT"
132+
--trust-remote-code
133+
"${PARALLEL_ARGS[@]}"
134+
--attention-backend compressed
135+
--cuda-graph-max-bs-decode "$CUDA_GRAPH_MAX_BS"
136+
--max-running-requests "$MAX_RUNNING_REQUESTS"
137+
--mem-fraction-static "$MEM_FRACTION_STATIC"
138+
--swa-full-tokens-ratio 0.10
139+
--page-size 256
140+
--kv-cache-dtype fp8_e4m3
141+
--chunked-prefill-size "$CHUNKED_PREFILL_SIZE"
142+
--disable-shared-experts-fusion
143+
--tool-call-parser deepseekv4
144+
--reasoning-parser deepseek-v4
145+
--chat-template "$(dirname "$0")/../chat_templates/deepseek_v4_thinking.jinja"
146+
--watchdog-timeout 1800
147+
"${METRICS_ARGS[@]}"
148+
"${SPEC_ARGS[@]}"
149+
"${CACHE_ARGS[@]}"
150+
)
151+
152+
printf '%q ' "${SGLANG_CMD[@]}" | tee "$RESULT_DIR/sglang_command.txt"
153+
printf '\n' | tee -a "$RESULT_DIR/sglang_command.txt"
154+
155+
{
156+
echo "=== SGLANG_* env vars at launch ==="
157+
env | grep -E '^SGLANG_' | sort
158+
echo "==================================="
159+
} | tee "$SERVER_LOG"
160+
161+
echo "Starting SGLang server for MI355X..."
162+
"${SGLANG_CMD[@]}" >> "$SERVER_LOG" 2>&1 &
149163
SERVER_PID=$!
150164
echo "Server PID: $SERVER_PID"
151165

152-
wait_for_server_ready --port "$PORT" --server-log "$SERVER_LOG" --server-pid "$SERVER_PID"
166+
wait_for_server_ready --port "$SGLANG_BACKEND_PORT" --server-log "$SERVER_LOG" --server-pid "$SERVER_PID"
167+
168+
if [ "$USE_SGLANG_ROUTER" = "true" ]; then
169+
echo "Starting SGLang router on port $PORT for $TP DP ranks..."
170+
"${SGLANG_ROUTER_CMD[@]}" \
171+
--worker-urls "http://localhost:$SGLANG_BACKEND_PORT" \
172+
--policy consistent_hashing \
173+
--request-id-headers x-correlation-id \
174+
--dp-aware \
175+
--host 0.0.0.0 \
176+
--port "$PORT" \
177+
--prometheus-host 127.0.0.1 \
178+
--prometheus-port "$SGLANG_ROUTER_METRICS_PORT" \
179+
--connect-timeout-secs 900 \
180+
--request-timeout-secs 14400 \
181+
--disable-health-check \
182+
--disable-retries > "$ROUTER_LOG" 2>&1 &
183+
ROUTER_PID=$!
184+
echo "Router PID: $ROUTER_PID"
185+
wait_for_server_ready --port "$PORT" --server-log "$ROUTER_LOG" --server-pid "$ROUTER_PID"
186+
fi
153187

154188
# ---- Run benchmark ----------------------------------------------------------
155189
build_replay_cmd "$RESULT_DIR"
190+
REPLAY_CMD+=" --server-metrics http://localhost:$SGLANG_BACKEND_PORT/metrics"
156191

157192
run_agentic_replay_and_write_outputs "$RESULT_DIR"

configs/amd-master.yaml

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2449,13 +2449,8 @@ dsr1-fp4-mi355x-sglang-disagg-mtp:
24492449
- "DECODE_NODES=1"
24502450
- "DECODE_MTP_SIZE=1"
24512451

2452-
# DSv4-Pro FP4 on MI355X via SGLang. Uses a rocm720 mi35x image built off the
2453-
# amd/deepseek_v4 branch in sgl-project/sglang; the SHA is encoded in the
2454-
# image tag, so bumping sglang is just an image tag bump here. Sweeps
2455-
# DP-attention on/off and EP=8.
2456-
2457-
dsv4-fp4-mi355x-sglang-agentic:
2458-
image: rocm/sgl-dev:rocm720-mi35x-0363e6c-20260509-DSv4
2452+
dsv4-fp4-mi355x-sglang-agentic-hicache:
2453+
image: lmsysorg/sglang-rocm:v0.5.14-rocm720-mi35x-20260710
24592454
model: deepseek-ai/DeepSeek-V4-Pro
24602455
model-prefix: dsv4
24612456
runner: cluster:mi355x-amds
@@ -2464,9 +2459,11 @@ dsv4-fp4-mi355x-sglang-agentic:
24642459
multinode: false
24652460
scenarios:
24662461
agentic-coding:
2467-
- search-space:
2468-
- { tp: 8, kv-offloading: none, conc-list: [16, 32, 64] }
2469-
- { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [64, 128, 256] }
2462+
- dram-utilization: 0.80
2463+
search-space:
2464+
- { tp: 8, kv-offloading: none, conc-list: [1, 2, 4, 8] }
2465+
- { tp: 8, dp-attn: true, kv-offloading: none, conc-list: [16, 32, 48, 64] }
2466+
- { tp: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: hicache }, conc-list: [64] }
24702467

24712468
# MiniMax-M3 MXFP8 MI355X recipe:
24722469
# https://github.com/vllm-project/recipes/commit/2a3728ed9892debfd767a72a58ebc90b33f186e5

perf-changelog.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4790,6 +4790,18 @@
47904790
- "Clean the export envs"
47914791
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2198
47924792

4793+
- config-keys:
4794+
- dsv4-fp4-mi355x-sglang-agentic-hicache
4795+
description:
4796+
- "Bump image to lmsysorg/sglang-rocm:v0.5.14-rocm720-mi35x-20260710"
4797+
- "Align launcher env vars and server args with fixed-seq-len sibling (dsv4 attention backend, fp8_e4m3 kv-cache, disable-radix-cache, cuda-graph-max-bs, DP-attention exports, two-batch-overlap)"
4798+
- "Add SGLang router for DP-attention configs (consistent-hashing, dp-aware, correlation-id routing)"
4799+
- "Add HiCache KV offloading support"
4800+
- "Add SGLANG_CMD array pattern with command logging and env-var dump"
4801+
- "Add capture_cache_metrics for pre/post-benchmark cache stats"
4802+
- "Sweep conc=48 across TP8 +/- DPA +/- HiCache"
4803+
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2146
4804+
47934805
- config-keys:
47944806
- dsv4-fp8-mi300x-vllm
47954807
description:

runners/launch_mi355x-amds.sh

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -208,11 +208,7 @@ else
208208
export GPU_COUNT="${GPU_COUNT:-${TP:?TP must be set}}"
209209

210210
set -x
211-
# Exclude known-bad mi355x compute nodes (KLAUD_DEBUG §5.1 / §5.2):
212-
# mia1-p01-g09: pyxis broken (persistently fails to create container filesystem)
213-
# mia1-p01-g11: docker.sock permissions denied (cluster-cleanup step fails)
214-
# Both have been root-caused via #1431/#1432/#1440/#1441/#1443 sweep failures.
215-
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"
211+
salloc --partition=$PARTITION --gres=gpu:$GPU_COUNT --exclusive --cpus-per-task=128 --time=500 --no-shell --job-name="$RUNNER_NAME"
216212
JOB_ID=$(squeue --name="$RUNNER_NAME" -h -o %A | head -n1)
217213

218214
srun --jobid=$JOB_ID bash -c "docker stop \$(docker ps -a -q)"

0 commit comments

Comments
 (0)