Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
0a89453
refactor(amd): centralize MI355X srt-slurm runtime
cquil11 Aug 27, 2026
0674eaa
fix(amd): stream srt-slurm stdout in Actions
cquil11 Aug 27, 2026
6439c63
fix(amd): preserve fixed-seq launch semantics
cquil11 Aug 27, 2026
d0b0f31
fix(amd): reclaim stale hugepages before srt workers
cquil11 Aug 28, 2026
429de0f
fix(ci): reclaim legacy AMD runner files before checkout
cquil11 Aug 28, 2026
190a387
fix(amd): pin lm-eval pip compatibility
cquil11 Aug 29, 2026
74c0c85
fix(amd): pin eval framework runtime
cquil11 Aug 31, 2026
c94d0a4
fix(amd): preserve legacy AgentX fabric semantics
cquil11 Aug 31, 2026
2a10192
fix(amd): pin writable lm-eval cache runtime
cquil11 Aug 31, 2026
847c80f
fix(amd): retain srt lm-eval result artifacts
cquil11 Aug 31, 2026
539f2fa
fix(amd): use srt lm-eval result contract
cquil11 Aug 31, 2026
09f2299
Merge remote-tracking branch 'origin/main' into codex/base-pin-eval
cquil11 Aug 31, 2026
82f3781
fix(amd): propagate srt lm-eval artifact sink
cquil11 Sep 1, 2026
9092e3d
fix(amd): pass eval result sink through srt
cquil11 Sep 1, 2026
3521b76
merge: sync AMD srt integration with main
cquil11 Sep 1, 2026
eac80c2
merge: sync AMD srt integration with latest main
cquil11 Sep 1, 2026
cdb9e5f
fix(amd): forward workflow random workload ratio to srt benchmarks
cquil11 Sep 1, 2026
ac0c6a6
feat(amd): port DSV4 fixed-sequence to srt-slurm
cquil11 Aug 27, 2026
50dc6d5
fix(amd): preserve DSV4 fixed-sequence semantics
cquil11 Aug 27, 2026
dc8d902
fix(amd): preserve DSV4 MoRI dispatch pin
cquil11 Aug 27, 2026
7822374
fix(amd): restore upstream DSV4 fixed-sequence contract
cquil11 Sep 1, 2026
7662a18
fix(amd): preserve explicit DSV4 RDMA device selection
cquil11 Sep 1, 2026
c38fb02
fix(amd): restore legacy DeepSeek V4 benchmark length distribution
cquil11 Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/benchmark-multinode-tmpl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,11 @@ jobs:
# git dir whose HEAD does not resolve to a commit is dropped
# together with its worktree so checkout re-clones it.
repo_dir="${{ github.workspace }}"
legacy_amd_dir="${repo_dir}/benchmarks/multi_node/amd_utils"
if [ -d "${legacy_amd_dir}" ] && [ -n "$(find "${legacy_amd_dir}" -xdev \! -user "$(id -u)" -print -quit)" ]; then
echo "[git-repair] Reclaiming legacy AMD workspace files created by containers"
sudo -n chown -R "$(id -u):$(id -g)" "${legacy_amd_dir}"
fi
if [ -d "${repo_dir}/.git" ]; then
find "${repo_dir}/.git" -name index.lock -type f -delete || true
for gitdir in "${repo_dir}"/.git/modules/* "${repo_dir}"/.git/modules/*/*; do
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/benchmark-tmpl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,11 @@ jobs:
# git dir whose HEAD does not resolve to a commit is dropped
# together with its worktree so checkout re-clones it.
repo_dir="${{ github.workspace }}"
legacy_amd_dir="${repo_dir}/benchmarks/multi_node/amd_utils"
if [ -d "${legacy_amd_dir}" ] && [ -n "$(find "${legacy_amd_dir}" -xdev \! -user "$(id -u)" -print -quit)" ]; then
echo "[git-repair] Reclaiming legacy AMD workspace files created by containers"
sudo -n chown -R "$(id -u):$(id -g)" "${legacy_amd_dir}"
fi
if [ -d "${repo_dir}/.git" ]; then
find "${repo_dir}/.git" -name index.lock -type f -delete || true
for gitdir in "${repo_dir}"/.git/modules/* "${repo_dir}"/.git/modules/*/*; do
Expand Down
6 changes: 5 additions & 1 deletion benchmarks/benchmark_lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2092,7 +2092,11 @@ run_lm_eval() {
export INFERENCEX_LM_EVAL_RUNTIME_READY=true
fi

local openai_server_base="http://0.0.0.0:${port}"
# Most launchers run eval beside the API process and keep the historical
# 0.0.0.0 default. Orchestrators such as srt-slurm can place the benchmark
# client on a different node, so allow them to provide the routed host.
local openai_server_host="${EVAL_SERVER_HOST:-0.0.0.0}"
local openai_server_base="http://${openai_server_host}:${port}"
local openai_chat_base="${openai_server_base}/v1/chat/completions"
export OPENAI_API_KEY=${OPENAI_API_KEY:-EMPTY}
MODEL_NAME=${MODEL_NAME:-$MODEL} # Prefer MODEL_NAME, else MODEL
Expand Down
177 changes: 0 additions & 177 deletions benchmarks/multi_node/agentic/dsv4_fp4_mi355x_sglang-disagg.sh

This file was deleted.

57 changes: 57 additions & 0 deletions benchmarks/multi_node/agentic_srt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,60 @@ if [[ "${EVAL_ONLY:-false}" == "true" ]]; then
_wait_for_openai_chat_route --port "$PORT"
fi

# Preserve the legacy DP-attention replay contract. The SGLang router uses this
# header to keep every request in one AgentX correlation tree on a stable DP
# route, which is important for both session continuity and prefix-cache reuse.
if [[ "${PREFILL_DP_ATTN:-false}" == "true" ]]; then
export AIPERF_HTTP_X_SMG_ROUTING_KEY_FROM_CORRELATION_ID=true
fi

# Reset every advertised SGLang worker before each concurrency point, matching
# the retired amd_utils trace replay. /flush_cache covers GPU radix + host
# HiCache; the storage-backend endpoint is best-effort because L3 is optional.
clear_agentic_worker_caches() {
local timeout_seconds="${FLUSH_DRAIN_TIMEOUT:-120}"
local metrics_csv="${AIPERF_SERVER_METRICS_URLS:-}"
if [[ -z "$metrics_csv" ]]; then
echo "[clear_caches] WARN: AIPERF_SERVER_METRICS_URLS unset; skipping cache flush" >&2
return 0

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cache flush uses metrics URLs

Medium Severity

clear_agentic_worker_caches reads AIPERF_SERVER_METRICS_URLS and returns success when that variable is unset. The retired replay flushed workers via SERVER_FLUSH_URLS_CSV, which was always populated and distinct from optional metrics scrape URLs. Cache isolation between concurrency points is skipped whenever metrics URLs are absent.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 84b6055. Configure here.

fi

local -a metrics_urls
IFS=',' read -r -a metrics_urls <<< "$metrics_csv"
local metrics_url base_url start response code flushed
for metrics_url in "${metrics_urls[@]}"; do
[[ -n "$metrics_url" ]] || continue
base_url="${metrics_url%/metrics}"
start=$(date +%s)
flushed=0
response=""
while :; do
response=$(curl -sf -m 10 -X POST "${base_url}/flush_cache" 2>/dev/null || true)
if grep -qi "Cache flushed" <<< "$response"; then
flushed=1
break
fi
if (( $(date +%s) - start >= timeout_seconds )); then
break
fi
sleep 3
done
if (( flushed )); then
echo "[clear_caches] ${base_url}: L1+L2 flushed"
else
echo "[clear_caches] WARN ${base_url}: L1+L2 flush not confirmed after ${timeout_seconds}s" >&2
fi

code=$(curl -s -m 60 -o /dev/null -w '%{http_code}' \
-X POST "${base_url}/hicache/storage-backend/clear" 2>/dev/null || true)
if [[ "$code" == "200" ]]; then
echo "[clear_caches] ${base_url}: L3 store cleared"
else
echo "[clear_caches] ${base_url}: L3 clear http=${code:-000} (optional backend unavailable)"
fi
done
}

wait_for_agentic_servers_idle() {
local timeout_seconds="${AIPERF_DRAIN_TIMEOUT_SECONDS:-1800}"
local poll_seconds="${AIPERF_DRAIN_POLL_SECONDS:-10}"
Expand Down Expand Up @@ -129,6 +183,9 @@ for index in "${!CONCURRENCIES[@]}"; do
mkdir -p "$RESULT_DIR"

echo "Running agentic concurrency $concurrency of: ${CONCURRENCIES[*]}"
if [[ "${CLEAR_CACHE_BETWEEN_CONC:-1}" == "1" ]]; then
clear_agentic_worker_caches
fi
build_replay_cmd "$RESULT_DIR"
run_agentic_replay_and_write_outputs "$RESULT_DIR"

Expand Down
Loading
Loading