[DNM][AMD] agentx-v0.4 rebased from commit chore/agentx-v0.4 commit 823189e#1709
[DNM][AMD] agentx-v0.4 rebased from commit chore/agentx-v0.4 commit 823189e#1709seungrokj wants to merge 39 commits into
Conversation
…r mi355x models Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Thanks for the contribution! For vLLM & SGLang, please ensure that your recipes is similar to the official vLLM recipes and/or the SGLang cookbook If it is not, please create a PR first before we can merge your single node PR into the master branch. Let's ensure that the documentation is first class such that the entire ML community can benefit from your hard work! Thank you PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. If re-running failed jobs is attempted, PR authors are responsible for ensuring it passes. See GitHub's docs on re-running failed jobs: https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow As a rule of thumb, generally, PR authors should request a review & get a PR approval from the respective companies' CODEOWNERS before requesting a review from core maintainers. If additional help is needed, PR authors can reach out to core maintainers over Slack. |
1 similar comment
|
Thanks for the contribution! For vLLM & SGLang, please ensure that your recipes is similar to the official vLLM recipes and/or the SGLang cookbook If it is not, please create a PR first before we can merge your single node PR into the master branch. Let's ensure that the documentation is first class such that the entire ML community can benefit from your hard work! Thank you PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. If re-running failed jobs is attempted, PR authors are responsible for ensuring it passes. See GitHub's docs on re-running failed jobs: https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow As a rule of thumb, generally, PR authors should request a review & get a PR approval from the respective companies' CODEOWNERS before requesting a review from core maintainers. If additional help is needed, PR authors can reach out to core maintainers over Slack. |
| $ASYNC_SCHEDULING_ARGS | ||
| "${PREFIX_CACHE_ARGS[@]}" | ||
| "${OFFLOAD_ARGS[@]}" | ||
| ) |
There was a problem hiding this comment.
vLLM uses wrong model
High Severity
The vLLM command serves "$MODEL" and omits --served-model-name, while the script downloads weights into MODEL_PATH and build_replay_cmd sends --model $MODEL to aiperf. That breaks the usual MODEL_PATH + served-name pairing used by sibling agentic scripts and can fail when MODEL is a Hub id but weights live under MODEL_PATH.
Reviewed by Cursor Bugbot for commit 01cc2af. Configure here.
| --mem-fraction-static 0.8 \ | ||
| --context-length $MAX_MODEL_LEN \ | ||
| "${CACHE_ARGS[@]}" \ | ||
| "${WARMUP_ARGS[@]}" \ |
There was a problem hiding this comment.
SGLang ignores MODEL_PATH
Medium Severity
SGLang is started with --model-path $MODEL and no --served-model-name, after the script may download into MODEL_PATH. Matrix jobs that set a local MODEL_PATH can still point the server at the Hub id, and the OpenAI model name may not match MODEL used by aiperf.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 01cc2af. Configure here.
| cd LMCache | ||
| pip install -r requirements/build.txt | ||
| CXX=hipcc BUILD_WITH_HIP=1 pip install -e . --no-build-isolation | ||
| cd .. |
There was a problem hiding this comment.
LMCache clone not idempotent
Medium Severity
The lmcache path runs git clone https://github.com/LMCache/LMCache.git unconditionally. With set -e, a second run in the same working directory exits when LMCache already exists, so lmcache agentic jobs fail on retry or reuse of the job cwd.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 01cc2af. Configure here.
Signed-off-by: ajith-sirra-amd <ajith.sirra@amd.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…onfig Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
||
| python3 -m sglang.launch_server \ | ||
| --attention-backend aiter \ | ||
| --model-path $MODEL \ |
There was a problem hiding this comment.
Server ignores MODEL_PATH
Medium Severity
Weights are downloaded into MODEL_PATH when the workflow sets that directory, but SGLang is started with --model-path $MODEL (Hub id) instead of MODEL_PATH. The server may load a different cache path than the one prepared for the job.
Reviewed by Cursor Bugbot for commit 32f5007. Configure here.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
||
| # ---- Resolve traces and install deps ---------------------------------------- | ||
| # https://huggingface.co/datasets/semianalysisai/cc-traces-weka-with-subagents-060826 | ||
| export WEKA_LOADER_OVERRIDE=semianalysis_cc_traces_weka_with_subagents_060826 |
There was a problem hiding this comment.
DSv4 atom uncapped traces
Medium Severity
This new DSv4 ATOM agentic script sets WEKA_LOADER_OVERRIDE to the uncapped 060826 trace set, while peer MI355X agentic scripts in the same PR use 060226_256k to avoid ~1M-token traces that are rejected and skew sweeps.
Reviewed by Cursor Bugbot for commit 351e729. Configure here.
Signed-off-by: ajith-sirra-amd <ajith.sirra@amd.com>
…nalysisAI/InferenceX into amd/agentx-v0.4_rebase0611
| $ASYNC_SCHEDULING_ARGS | ||
| "${PREFIX_CACHE_ARGS[@]}" | ||
| "${OFFLOAD_ARGS[@]}" | ||
| ) |
There was a problem hiding this comment.
MiniMax FP8 launcher regressed
High Severity
The MI355X MiniMax FP8 agentic launcher was replaced with a Kimi-style vLLM recipe. Existing minimaxm2.5-fp8-mi355x-vllm-agentic jobs (TP4/EP4, offloading=cpu) lose the prior --max-model-len, ROCM_AITER_UNIFIED_ATTN backend, MODEL_PATH-based serve, and SimpleCPU offload wiring they depended on.
Reviewed by Cursor Bugbot for commit faba18f. Configure here.
Signed-off-by: ajith-sirra-amd <ajith.sirra@amd.com>
… config Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…cripts and master yaml Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| --cuda-graph-max-bs "$PER_ENGINE_MAX_RUNNING" \ | ||
| --disable-radix-cache \ | ||
| --attention-backend dsv4 \ | ||
| --max-running-requests ${CONC} \ |
There was a problem hiding this comment.
DP max-running requests wrong
Medium Severity
When DP_ATTENTION=true, the script computes PER_ENGINE_MAX_RUNNING as CONC/TP for per-engine limits, but the server is started with --max-running-requests ${CONC}. Each DP engine may accept too many sequences versus the harness load-balancing assumption.
Reviewed by Cursor Bugbot for commit 76d90e0. Configure here.
…ript Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| python3 -m sglang.launch_server \ | ||
| --model-path "$MODEL_PATH" --served-model-name "$MODEL" \ | ||
| sglang serve \ | ||
| --model-path $MODEL \ |
There was a problem hiding this comment.
Wrong model path for serve
Medium Severity
The script downloads weights into MODEL_PATH when set, but sglang serve uses --model-path $MODEL (Hub id) instead of "$MODEL_PATH". Runs that pre-stage a local directory can ignore the prepared path and rely on a different cache location.
Reviewed by Cursor Bugbot for commit 4ebc4e2. Configure here.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…c script Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| decode_dp_ranks=$DECODE_TP_SIZE | ||
| MORI_MAX_DISPATCH_TOKENS_DECODE=$((BENCH_MAX_CONC_VALUE / decode_dp_ranks)) | ||
| MORI_MOE_MAX_INPUT_TOKENS_DECODE=$((MORI_MAX_DISPATCH_TOKENS_DECODE * decode_dp_ranks * 7 / 10)) | ||
| # MORI_MOE_MAX_INPUT_TOKENS_DECODE=$((MORI_MAX_DISPATCH_TOKENS_DECODE * decode_dp_ranks * 7 / 10)) |
There was a problem hiding this comment.
Disagg MoE token overrides removed
Medium Severity
This change comments out assignments that set MORI_MOE_MAX_INPUT_TOKENS_PREFILL and MORI_MOE_MAX_INPUT_TOKENS_DECODE for DP+EP and MTP decode paths, while launch commands still conditionally export those variables. Disagg sweeps that relied on the computed caps may run with unset MoE input limits.
Reviewed by Cursor Bugbot for commit c21ad06. Configure here.
| fi | ||
| set +x | ||
| PREFILL_CMD="SGLANG_MORI_COMBINE_DTYPE=${MORI_COMBINE_DTYPE_PREFILL} ${PREFILL_SDMA_ENV} ${PREFILL_MORI_MOE_ENV} SGLANG_MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK=${MORI_MAX_DISPATCH_TOKENS_PREFILL} python3 -m sglang.launch_server \ | ||
| PREFILL_CMD="SGLANG_MORI_COMBINE_DTYPE=${MORI_COMBINE_DTYPE_PREFILL} ${PREFILL_SDMA_ENV} ${PREFILL_MORI_MOE_ENV} SGLANG_MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK=${MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK_PREFILL:-${MORI_MAX_DISPATCH_TOKENS_PREFILL}} MORI_IO_SQ_BACKOFF_TIMEOUT_US=${MORI_IO_SQ_BACKOFF_TIMEOUT_US} MORI_IO_QP_MAX_SEND_WR=${MORI_IO_QP_MAX_SEND_WR} ${LAUNCH_PREFIX:-} python3 -m sglang.launch_server \ |
There was a problem hiding this comment.
Server ignores resolved MODEL_PATH
Medium Severity
job.slurm now resolves and exports a canonical MODEL_PATH (caller path, hf_dir, or MODEL_DIR/MODEL_NAME), but server_sglang.sh still launches with --model-path $MODEL_DIR/$MODEL_NAME. When the resolved path differs from that join, prefill/decode can fail to load weights or load from the wrong directory.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit c7f269e. Configure here.
Signed-off-by: Theresa Shan <theresa.shan@amd.com>
c7f269e to
e37fbc2
Compare
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| fi | ||
| set +x | ||
| DECODE_CMD="SGLANG_MORI_COMBINE_DTYPE=${MORI_COMBINE_DTYPE_DECODE} ${DECODE_MORI_MOE_ENV} SGLANG_MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK=${MORI_MAX_DISPATCH_TOKENS_DECODE} python3 -m sglang.launch_server \ | ||
| DECODE_CMD="SGLANG_MORI_COMBINE_DTYPE=${MORI_COMBINE_DTYPE_DECODE} ${DECODE_MORI_MOE_ENV} SGLANG_MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK=${MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK_DECODE:-${MORI_MAX_DISPATCH_TOKENS_DECODE}} MORI_IO_SQ_BACKOFF_TIMEOUT_US=${MORI_IO_SQ_BACKOFF_TIMEOUT_US} MORI_IO_QP_MAX_SEND_WR=${MORI_IO_QP_MAX_SEND_WR} ${LAUNCH_PREFIX:-} python3 -m sglang.launch_server \ |
There was a problem hiding this comment.
Custom all-reduce flag unused
Medium Severity
DISABLE_CUSTOM_ALL_REDUCE is threaded into the container from job.slurm, and the DSR1 disagg agentic recipe defaults it to 1 for an Aiter fault workaround, but prefill/decode launch commands never append --disable-custom-all-reduce.
Reviewed by Cursor Bugbot for commit b5626fb. Configure here.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Theresa Shan <theresa.shan@amd.com>
| multinode: false | ||
| framework: sglang-disagg | ||
| multinode: true | ||
| disagg: true |
There was a problem hiding this comment.
Multinode agentic scripts not selected
High Severity
New disaggregated agentic YAML entries and benchmarks/multi_node/agentic/* wrappers are added, but launch_mi355x-amds.sh still invokes benchmarks/multi_node/${SCRIPT_NAME} and never agentic/ or IS_AGENTIC. Those jobs run the fixed-seq disagg script without trace replay, HiCache env, or DURATION/OFFLOADING wiring.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit f10f456. Configure here.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Theresa Shan <theresa.shan@amd.com>
Signed-off-by: Theresa Shan <theresa.shan@amd.com>
Signed-off-by: Theresa Shan <theresa.shan@amd.com>
Signed-off-by: Theresa Shan <theresa.shan@amd.com>
| # LMCache backend. | ||
| TOTAL_CPU_DRAM_GB=2500 | ||
| #TODO: fix | ||
| TOTAL_CPU_DRAM_GB=3000 |
There was a problem hiding this comment.
Ignores TOTAL_CPU_DRAM_GB env
Medium Severity
The scripts require TOTAL_CPU_DRAM_GB via check_env_vars, then hardcode TOTAL_CPU_DRAM_GB=3000 inside the cpu and lmcache branches. Workflow-supplied offload memory sizing is discarded and partition math uses the fixed constant instead.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 73756ab. Configure here.
…ker for agentic disagg Reconstructs three fixes for DeepSeek-V4-Pro 1M-context agentic disaggregated runs: - server_sglang.sh: patch disaggregation/prefill.py resolve_waiting_queue_bootstrap() to narrow the all_reduce candidate set to pending_bootstrap requests, eliminating the TP-rank collective desync deadlock. - models.yaml: cap chunked_prefill_size at 65280 (dsv4 compressor kernel uint16 token limit, 255*256) to avoid the c_plan.cuh:508 runtime crash at 131072; set context_length/max_total_tokens to 1048576; drop verbose --decode-log-interval 1 / --log-level info so default logging is used. - server_sglang.sh: add router resilience flags (disable circuit breaker, relax health checks) so a busy single prefill worker is not ejected, which previously made the aiperf profiling burst fail 100% with "No available prefill workers". Overridable via ROUTER_RESILIENCE_FLAGS. Co-authored-by: Cursor <cursoragent@cursor.com>
…HiCache Relocate the disagg prefill bootstrap-desync fix and the memory_pool_host assert softening from inline blocks in server_sglang.sh into dedicated, idempotent patch functions in setup_deps.sh. Also set MORI_IO_QP_MAX_SGE=1 and default HICACHE_TIER=L2. Co-authored-by: Cursor <cursoragent@cursor.com>
…061526
Register the new semianalysis_cc_traces_weka_061326{,_256k} and
061526{,_256k} loader keys in resolve_trace_source, and point the dsv4
default + trace_replay override at the 061526 corpus.
Co-authored-by: Cursor <cursoragent@cursor.com>
| mkdir -p "$RESULT_DIR" | ||
|
|
||
| export WEKA_LOADER_OVERRIDE=semianalysis_cc_traces_weka_061526 | ||
| resolve_trace_source |
There was a problem hiding this comment.
Disagg trace corpus not 256k capped
Medium Severity
Multinode agentic replay hardcodes WEKA_LOADER_OVERRIDE=semianalysis_cc_traces_weka_061526 (full corpus). Single-node agentic scripts use _256k variants for non-DSv4 models, while benchmark_lib.sh now defaults non-dsv4 recipes to 061526_256k. Disagg agentic jobs can load traces that exceed max_model_len and fail or skew results.
Reviewed by Cursor Bugbot for commit 219bcc9. Configure here.
Signed-off-by: Theresa Shan <theresa.shan@amd.com>
|
|
||
| if [ "$ANY_FAILED" -ne 0 ]; then | ||
| echo "WARNING: at least one conc had a non-zero exit; per-conc result files were still written when possible." >&2 | ||
| fi |
There was a problem hiding this comment.
Replay failures do not fail job
Medium Severity
When any concurrency sweep in trace_replay.sh fails, the script only prints a warning and exits 0, so SLURM and CI can treat a broken agentic disagg run as success without a valid aggregate result.
Reviewed by Cursor Bugbot for commit 7c2bcbc. Configure here.
| --gpu-memory-utilization 0.85 \ | ||
| "${PREFIX_CACHE_ARGS[@]}" | ||
| "${OFFLOAD_ARGS[@]}" | ||
| ) |
There was a problem hiding this comment.
DSv4 atom script is Kimi
High Severity
The added dsv4_fp4_mi355x_atom.sh is a Kimi-K2.5 ATOM/vLLM offload recipe (comments, LMCache clone, --kv_offloading_backend, atom.entrypoints.openai_server) and does not implement DeepSeek-V4-Pro ATOM serving despite the filename and PR intent.
Reviewed by Cursor Bugbot for commit 7c2bcbc. Configure here.
| -e DISABLE_CUSTOM_ALL_REDUCE=\${DISABLE_CUSTOM_ALL_REDUCE:-0} | ||
| -e MAX_MODEL_LEN=\${MAX_MODEL_LEN:-} | ||
| -e DURATION=\${DURATION:-1800} | ||
| -e IS_AGENTIC=\${IS_AGENTIC:-0} |
There was a problem hiding this comment.
Agentic zero max model len
High Severity
job.slurm now forwards MAX_MODEL_LEN from the workflow into containers while multinode agentic sweeps pass max-model-len: '0', and the SLURM entry script still used for disagg does not apply the 163840/1M defaults that the new multi_node/agentic/* recipes define.
Reviewed by Cursor Bugbot for commit 7c2bcbc. Configure here.
…ache Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 22 total unresolved issues (including 21 from previous reviews).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 4f8123d. Configure here.
| # HiCache-offload configuration is ported from local_test_dsr1_agentic_offload.sh | ||
| # and is fully env-overridable so a YAML config can tune it. | ||
|
|
||
| source "$(dirname "$0")/../benchmark_lib.sh" |
There was a problem hiding this comment.
Wrong benchmark_lib source path
High Severity
These recipes live under benchmarks/multi_node/agentic/ but source ../benchmark_lib.sh, which resolves to benchmarks/multi_node/benchmark_lib.sh. The library actually lives at benchmarks/benchmark_lib.sh, so the scripts fail on the first source line.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 4f8123d. Configure here.


Summary
qwen3.5-fp4-mi355x-sglang-agentic-hicacheconfig: SGLang agentic-coding sweep with and without hicache offloading (TP2, EP1)minimaxm2.5-fp4-mi355x-vllm-agentic-lmcacheconfig: vLLM agentic-coding sweep with lmcacheminimaxm2.5_fp4_mi355x.sh,qwen3.5_fp4_mi355x.shglm5.1_fp4_mi355x.sh,kimik2.5_fp4_mi355x.sh,minimaxm2.5_fp8_mi355x.sh,qwen3.5_fp8_mi355x.shlaunch_mi355x-amds.shTest plan
🤖 Generated with Claude Code
Note
Medium Risk
Changes are confined to benchmark CI and launch scripts but touch multi-node SLURM, container image pins, and KV offload paths where misconfiguration could waste cluster time or skew agentic results; no application auth or user-data handling.
Overview
AMD master sweep config (
amd-master.yaml) bumps SGLang/vLLM/Atom images and retunes several fixed-seq search spaces (e.g. Qwen3.5 FP8 TP4 sweeps, FP4 MTP conc caps). Agentic workloads are split into-agenticsibling entries (often on older or nightly images withcpu/noneoffload grids) so existing main recipes stay aligned withorigin/main. New or expanded coverage includes DSv4 (single-node image bump, newdsv4-fp4-mi355x-sglang-disagg8k/1k PD topologies, vLLM agentic grids), HiCache agentic configs (Qwen3.5, DSv4 single- and disagg-node), and MiniMax-M3 vLLM agentic; Kimi/MiniMax int4–fp8 vLLM images move to v0.21.0 or ROCm nightlies for offload-capable agentic runs.CI passes
offloadingfrom the matrix into multi-node agentic sweeps (run-sweep.yml). Default agentic trace loaders switch tosemianalysis_cc_traces_weka_061526(+ 256k variant) inbenchmark_lib.sh.Multi-node SGLang disagg (
amd_utils) gains end-to-end agentic support:trace_replay.sh,IS_AGENTICrouting,OFFLOADING=hicachewith Mooncake/L2 flags via a bind-mountedhicache_mc.env, EP vs DP flag decoupling inmodels.yaml, aDeepSeek-V4-ProPD recipe block, DSv4 bench--dsv4framing, router circuit-breaker disables for long prefills, and startup patches (prefill bootstrap desync, optional host KV assert). New entry scriptsdsr1_fp4/dsv4_fp4disagg agentic wire YAML to SLURM submit.Single-node agentic scripts are updated or added for DSv4 (SGLang/Atom), GLM5.1 (HiCache on MI355X, new MI300X FP8), and Kimi FP4 (simplified LMCache install path, trace override, vLLM FP8 KV).
Reviewed by Cursor Bugbot for commit 4f8123d. Bugbot is set up for automated code reviews on this repo. Configure here.