Repository navigation
Has patches, which is not first class user experience and not allowed in inferenceX #2674
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
da13aa6
8e77c39
e9ad188
3e34a17
7ab516b
32089cf
39adc30
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,50 +2,12 @@ | |
| set -euo pipefail | ||
| set -x | ||
|
|
||
| # Agentic trace replay benchmark for Kimi-K3 MXFP4 on MI355X / MI350X (gfx950) | ||
| # using vLLM. | ||
| # | ||
| # The server command is the AMD reference `vllm serve` for this model, i.e. the | ||
| # upstream vLLM recipe's amd block (vllm-project/recipes, | ||
| # https://recipes.vllm.ai/moonshotai/Kimi-K3) as run in practice: | ||
| # | ||
| # --trust-remote-code --moe-backend auto --tensor-parallel-size 8 | ||
| # --load-format auto --gpu-memory-utilization 0.95 --mm-encoder-tp-mode data | ||
| # --max-num-seqs 128 --max-num-batched-tokens 4096 --enable-auto-tool-choice | ||
| # --tool-call-parser kimi_k3 --reasoning-parser kimi_k3 | ||
| # | ||
| # with env VLLM_ROCM_USE_AITER=1 SAFETENSORS_FAST_GPU=1 AITER_SITUV2_A8W4=1 | ||
| # AITER_BF16_FP8_MOE_BOUND=0 VLLM_USE_BREAKABLE_CUDAGRAPH=0. | ||
| # | ||
| # K3 is a 2.8T-parameter natively-multimodal MoE (896 routed experts, 16/token | ||
| # plus shared) on Kimi Delta Attention, gated MLA and Attention Residuals, with | ||
| # a 1M-token native context. | ||
| # | ||
| # TP=8 ONLY. The MXFP4 checkpoint is 1.561 TB decimal (1.420 TiB, 96 | ||
| # safetensors), ~195 GB/GPU across 8 GPUs of the 288 GB part; TP=4 would need | ||
| # ~390 GB/GPU and cannot load. Upstream strategy_min_gpus agrees (single_node_tp | ||
| # and multi_node_tep both 8, DEP 16+), which is why there is no DP-attention arm. | ||
| # | ||
| # Required env vars: | ||
| # MODEL, TP, CONC, KV_OFFLOADING, TOTAL_CPU_DRAM_GB, RESULT_DIR, DURATION, | ||
| # EP_SIZE | ||
| # | ||
| # Perf-search knobs. Each defaults to the reference command's value, so an | ||
| # otherwise-unset run reproduces the reference exactly: | ||
| # GPU_MEM_UTIL 0.95 (reference) | ||
| # MAX_NUM_BATCHED_TOKENS 8192 (default) | ||
| # AITER_A8W4 1 (reference; 0 = aiter a16w4 MoE path) | ||
| # LANGUAGE_MODEL_ONLY true | ||
| # KV_CACHE_DTYPE fp8 (default for every arm; =auto for a bf16 A/B) | ||
| # KV_BLOCK_SIZE unset (unset -> vLLM sizes the page; 128 under fp8) | ||
| # MAX_MODEL_LEN 1M | ||
| # SPEC_DECODE true (this is the _mtp DSpark recipe; =false for a no-spec A/B) | ||
| # SPEC_NUM_TOKENS 2 (DSpark draft length; validated by the _mtp config) | ||
|
|
||
| source "$(dirname "$0")/../../benchmark_lib.sh" | ||
|
|
||
| wait_for_amd_gpu_clean | ||
|
|
||
| du -h /dev/shm | ||
|
Check warning on line 9 in benchmarks/single_node/agentic/kimik3_fp4_mi355x_mtp.sh
|
||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟡 Line 9 adds a bare Extended reasoning...This PR replaces the script's old documentation header with a bare The rest of the script is careful about diagnostics that aren't load-bearing: Concretely, the code path is: script starts with There's also a latent robustness gap: because the line has no To fix: either delete the line entirely (simplest, since nothing consumes its output), or if the intent is to keep an /dev/shm capacity check for debugging DRAM KV-offload sizing, add a comment explaining why and guard it the same way as the other diagnostics, e.g. Step-by-step proof: (1) checkout the script, (2) run it (or just |
||
|
|
||
| check_env_vars MODEL TP CONC KV_OFFLOADING TOTAL_CPU_DRAM_GB RESULT_DIR DURATION EP_SIZE | ||
|
|
||
| if [[ -n "${SLURM_JOB_ID:-}" ]]; then | ||
|
|
@@ -81,7 +43,12 @@ | |
| resolve_trace_source | ||
| install_agentic_deps | ||
|
|
||
|
|
||
| # ---- Reference env block ---------------------------------------------------- | ||
| # Keep ALL of these. Commenting them out does not avoid the AITER FMHA crash: | ||
| # that crash is gated on VLLM_ROCM_USE_AITER alone (AiterFlashAttnPrefillBackend | ||
| # .is_available() consults only rocm_aiter_ops.is_enabled()), so disabling the | ||
| # others just loses the MoE kernels while keeping the failure. | ||
| export VLLM_ROCM_AITER_MLA_ASM_PADDING=asm | ||
| export VLLM_ROCM_USE_AITER=1 | ||
| export SAFETENSORS_FAST_GPU=1 | ||
|
|
@@ -146,9 +113,6 @@ | |
| esac | ||
| fi | ||
|
|
||
| # ---- LLM server ------------------------------------------------------------ | ||
| bash "$(dirname "$0")/apply_k3_container_patches.sh" | ||
|
|
||
| # ---- Parallelism ------------------------------------------------------------ | ||
| EP_ARGS=() | ||
| if [ "$EP_SIZE" -gt 1 ]; then | ||
|
|
@@ -171,9 +135,23 @@ | |
| ) | ||
| fi | ||
|
|
||
| ASYNC_SCHED_ARGS=() | ||
| if [ "${ASYNC_SCHEDULING:-0}" != "1" ]; then | ||
| ASYNC_SCHED_ARGS=(--no-async-scheduling) | ||
| fi | ||
|
|
||
| MLA_PREFILL_BACKEND="${MLA_PREFILL_BACKEND:-ROCM_AITER_FA}" | ||
| MLA_PREFILL_ARGS=() | ||
| if [ -n "$MLA_PREFILL_BACKEND" ]; then | ||
| MLA_PREFILL_ARGS=( | ||
| --attention-config | ||
| "{\"mla_prefill_backend\":\"$MLA_PREFILL_BACKEND\"}" | ||
| ) | ||
| fi | ||
|
|
||
| # ---- HIP graph ------------------------------------------------------------ | ||
| MAX_NUM_SEQS=20 | ||
| MAX_CUDAGRAPH_CAPTURE_SIZE=60 | ||
| MAX_NUM_SEQS="${MAX_NUM_SEQS:-$(( CONC * 2 ))}" | ||
| MAX_CUDAGRAPH_CAPTURE_SIZE="${MAX_CUDAGRAPH_CAPTURE_SIZE:-$(( MAX_NUM_SEQS * 3 ))}" | ||
| CUDAGRAPH_CAPTURE_SIZES="$(seq -s, 1 "$MAX_CUDAGRAPH_CAPTURE_SIZE")" | ||
| COMPILATION_CONFIG_ARGS=(--compilation-config "{\"mode\":3,\"cudagraph_mode\":\"FULL_AND_PIECEWISE\",\"max_cudagraph_capture_size\":$MAX_CUDAGRAPH_CAPTURE_SIZE,\"custom_ops\":[\"+fused_rms_norm_gated\"],\"cudagraph_capture_sizes\":[$CUDAGRAPH_CAPTURE_SIZES]}") | ||
|
|
||
|
|
@@ -202,6 +180,13 @@ | |
| --max-model-len 1048576 | ||
| --enable-prefix-caching | ||
| --kv-cache-dtype "fp8" | ||
| --max-num-batched-tokens 8192 | ||
| --decode-context-parallel-size 8 | ||
| --dcp-comm-backend a2a | ||
| --attention-backend ROCM_AITER_MLA | ||
| --cp-kv-cache-interleave-size 1 | ||
| "${ASYNC_SCHED_ARGS[@]}" | ||
| "${MLA_PREFILL_ARGS[@]}" | ||
| "${COMPILATION_CONFIG_ARGS[@]}" | ||
| "${SPEC_ARGS[@]}" | ||
| "${OFFLOAD_ARGS[@]}" | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -623,7 +623,7 @@ | |
| - "DECODE_MTP_SIZE=2" | ||
|
|
||
| kimik3-fp4-mi355x-vllm-agentic-mtp: | ||
| image: vllm/vllm-openai-rocm:nightly-cb8104839c141609d99f1254459ef3a4f1bd4263 | ||
| image: vllm/vllm-openai-rocm:nightly | ||
| model: moonshotai/Kimi-K3 | ||
| model-prefix: kimik3 | ||
| runner: cluster:mi355x-amds | ||
|
|
@@ -631,14 +631,13 @@ | |
| framework: vllm | ||
| multinode: false | ||
| scenarios: | ||
| agentic-coding: | ||
| - dram-utilization: 0.50 | ||
| search-space: | ||
| - { tp: 8, kv-offloading: none, conc-list: [1, 4, 8] , spec-decoding: mtp} | ||
| - { tp: 8, ep: 1, kv-offloading: dram, kv-offload-backend: { name: vllm-simple }, conc-list: [10], spec-decoding: mtp } | ||
| - { tp: 8, ep: 1, kv-offloading: dram, kv-offload-backend: { name: vllm-simple }, conc-list: [1, 4, 8, 10, 12, 16, 20, 24, 28, 32], spec-decoding: mtp } | ||
|
|
||
| dsr1-fp4-mi355x-sglang-disagg: | ||
| image: lmsysorg/sglang-rocm:v0.5.12-rocm720-mi35x-20260519 | ||
|
Check failure on line 640 in configs/amd-master.yaml
|
||
|
Comment on lines
634
to
669
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔴 AGENTS.md's non-negotiable invariants require a new perf-changelog.yaml entry (appended at the tail) for every recipe addition or modification that can affect benchmark performance. This PR rewrites the kimik3_fp4_mi355x_mtp.sh launch script (new DCP/MLA-prefill-backend flags, new MAX_NUM_SEQS/cudagraph formula, image bump to floating :nightly) and expands the conc-list in configs/amd-master.yaml, but perf-changelog.yaml is untouched. Please append an entry documenting these changes before merging. Extended reasoning...AGENTS.md:21 states as a non-negotiable benchmark invariant: "Every change that can affect benchmark performance and every recipe addition or modification requires a new The PR's diff touches exactly two files — Nothing in the current tooling would silently let this slip through if the changelog gate runs: the repo carries To fix: append a new entry at the tail of Step-by-step proof: (1) AGENTS.md:21 requires a changelog entry for "every recipe addition or modification" affecting perf. (2) |
||
| model: amd/DeepSeek-R1-0528-MXFP4-v2 | ||
| model-prefix: dsr1 | ||
| runner: mi355x-disagg | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unset
EVAL_ONLYunderset -uMedium Severity
Removing the
EVAL_ONLY="${EVAL_ONLY:-false}"default leaves[ "${EVAL_ONLY}" = "true" ]underset -u. WhenEVAL_ONLYis unset (common outside the GHA template), the script aborts with an unbound-variable error before replay or eval can run.Additional Locations (1)
benchmarks/single_node/agentic/kimik3_fp4_mi355x_mtp.sh#L160-L161Reviewed by Cursor Bugbot for commit 39adc30. Configure here.