From 49e702b03d02115bbcb5882e48c202a5e2556808 Mon Sep 17 00:00:00 2001 From: honglie Date: Tue, 6 Oct 2026 23:21:05 +0800 Subject: [PATCH 1/5] perf(amd): MiniMax-M3 ATOM AgentX on nightly_202610061452 with mono decode at every TP4 point Co-Authored-By: Claude Opus 5.5 (1M context) --- .../atom/mi355x-fp4-mtp/agentic.yaml | 22 ++++++++++++------- inferencex-e2e/configs/amd-master.yaml | 8 +++---- .../docs/configuration-procedures.md | 18 +++++++++++---- .../docs/configuration-procedures_zh.md | 15 +++++++++---- inferencex-e2e/perf-changelog.yaml | 13 +++++++++++ 5 files changed, 56 insertions(+), 20 deletions(-) diff --git a/inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml b/inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml index ac3fc41258..1ad33e626e 100644 --- a/inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml +++ b/inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml @@ -7,7 +7,7 @@ base: name: minimaxm3-fp4-mi355x-atom-agentic model: path: hf:amd/MiniMax-M3-MXFP4 - container: rocm/atom-dev:nightly_202609281543 + container: rocm/atom-dev:nightly_202610061452 precision: fp4 resources: gpu_type: mi355x @@ -60,9 +60,9 @@ base: # One variant per point. Admission is 2x CONC. TP4 shards the indexer across # ranks at the measured points (15, 20, 24, 28, and the DRAM points 40, 48). -# The GPU-resident indexer-CP points turn off ATOM's default MiniMax-M3 mono -# decode (ATOM_MONO_ENABLE=0): with it on they hung in an NCCL broadcast -# mid-replay (run 36493321464). The LMCache points already run without mono. +# ATOM's MiniMax-M3 mono decode is on by default at every TP4 point and +# serves decode steps of up to 16 tokens (four requests with EAGLE3 K3); +# ATOM builds it for TP4 only, so TP2 runs the unfused path. override_tp4_c1: roles: agg: @@ -141,7 +141,6 @@ override_tp4_c15: max-num-seqs: 30 env: ATOM_M3_INDEXER_CP: '1' - ATOM_MONO_ENABLE: '0' benchmark: env: CONC: '15' @@ -154,7 +153,6 @@ override_tp4_c20: max-num-seqs: 40 env: ATOM_M3_INDEXER_CP: '1' - ATOM_MONO_ENABLE: '0' benchmark: env: CONC: '20' @@ -167,7 +165,6 @@ override_tp4_c24: max-num-seqs: 48 env: ATOM_M3_INDEXER_CP: '1' - ATOM_MONO_ENABLE: '0' benchmark: env: CONC: '24' @@ -180,7 +177,6 @@ override_tp4_c28: max-num-seqs: 56 env: ATOM_M3_INDEXER_CP: '1' - ATOM_MONO_ENABLE: '0' benchmark: env: CONC: '28' @@ -205,6 +201,16 @@ override_tp2_c2: env: CONC: '2' +override_tp2_c4: + roles: + agg: + gpus: 2 + args: + max-num-seqs: 8 + benchmark: + env: + CONC: '4' + # DRAM variants: LMCache's in-process CPU tier with ATOM's segmented LRU and # all-rank lookup, sized at TOTAL_CPU_DRAM_GB / TP (257 GB) per rank. # PYTHONHASHSEED keeps every rank's chunk keys identical; without it the diff --git a/inferencex-e2e/configs/amd-master.yaml b/inferencex-e2e/configs/amd-master.yaml index d7b1025e5e..9e22d3ae21 100644 --- a/inferencex-e2e/configs/amd-master.yaml +++ b/inferencex-e2e/configs/amd-master.yaml @@ -738,7 +738,7 @@ kimik3-fp4-mi355x-vllm-agentic-mtp: - { tp: 8, ep: 1, dcp-size: 8, kv-offloading: dram, kv-offload-backend: { name: vllm-simple }, conc-list: [44, 48, 70], spec-decoding: mtp, srt-recipe: benchmarks/single_node/srt-slurm-recipes/kimik3/vllm/mi355x-fp4-mtp/agentic.yaml } minimaxm3-fp4-mi355x-atom-agentic-mtp: - image: rocm/atom-dev:nightly_202609281543 + image: rocm/atom-dev:nightly_202610061452 model: amd/MiniMax-M3-MXFP4 model-prefix: minimaxm3 runner: cluster:mi355x-amds @@ -752,9 +752,9 @@ minimaxm3-fp4-mi355x-atom-agentic-mtp: - dram-utilization: 0.687 search-space: - { tp: 4, kv-offloading: none, conc-list: [1, 2, 4, 5, 8, 10, 12, 15, 20, 24, 28], spec-decoding: mtp, srt-recipe: benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml } - - { tp: 2, kv-offloading: none, conc-list: [1, 2], spec-decoding: mtp, srt-recipe: benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml } - - { tp: 2, kv-offloading: dram, kv-offload-backend: { name: lmcache, version: "0.5.6.dev98+g05fc77a0" }, conc-list: [20, 25, 30], spec-decoding: mtp, srt-recipe: benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml } - - { tp: 4, kv-offloading: dram, kv-offload-backend: { name: lmcache, version: "0.5.6.dev98+g05fc77a0" }, conc-list: [40, 48], spec-decoding: mtp, srt-recipe: benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml } + - { tp: 2, kv-offloading: none, conc-list: [1, 2, 4], spec-decoding: mtp, srt-recipe: benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml } + - { tp: 2, kv-offloading: dram, kv-offload-backend: { name: lmcache, version: "0.5.6.dev139+gf22dec28" }, conc-list: [20, 25, 30], spec-decoding: mtp, srt-recipe: benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml } + - { tp: 4, kv-offloading: dram, kv-offload-backend: { name: lmcache, version: "0.5.6.dev139+gf22dec28" }, conc-list: [40, 48], spec-decoding: mtp, srt-recipe: benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml } dsr1-fp4-mi355x-sglang-disagg: image: lmsysorg/sglang-rocm:v0.5.17-rocm720-mi35x-20260809 diff --git a/inferencex-e2e/docs/configuration-procedures.md b/inferencex-e2e/docs/configuration-procedures.md index f594426d43..cd4cb064b1 100644 --- a/inferencex-e2e/docs/configuration-procedures.md +++ b/inferencex-e2e/docs/configuration-procedures.md @@ -289,10 +289,10 @@ the powers-of-two scales are represented exactly. The recipe does not patch AITER source at runtime; TP communication fusion, DSpark K6 and graph capture use the implementation shipped in the image. -### MiniMax-M3 ATOM FlyDSL paged decode and LMCache DRAM tier +### MiniMax-M3 ATOM FlyDSL paged decode, mono decode and LMCache DRAM tier `minimaxm3-fp4-mi355x-atom-agentic-mtp` uses -`rocm/atom-dev:nightly_202609281543` with `ATOM_PA_FLYDSL=1` and +`rocm/atom-dev:nightly_202610061452` with `ATOM_PA_FLYDSL=1` and `ATOM_PA_FLYDSL_PLAN=1`, following [ROCm/ATOM#2366](https://github.com/ROCm/ATOM/pull/2366) and the [upstream recipe](https://github.com/ROCm/ATOM/blob/1423fceb08fbe88b2e35c77b320b3073b310a63f/recipes/MiniMax-M3-Agentic-InferenceX.md). FlyDSL handles supported paged-decode shapes; its work planner balances dense @@ -321,8 +321,18 @@ a `KV_OFFLOADING=dram` job so these pages are free. Without it, pinning reclaims page cache, ranks finish minutes apart and ATOM's 300 s startup barrier times out ([run 36454319395](https://github.com/SemiAnalysisAI/InferenceX/actions/runs/36454319395)). -TP4 C32 is dropped; the GPU-resident TP4 C1-C28 and TP2 C1-C2 points, -EAGLE3 K3, golden AL 2.78 and indexer CP are unchanged. +ATOM's MiniMax-M3 mono decode ([ROCm/ATOM#2419](https://github.com/ROCm/ATOM/pull/2419), +moved onto the shared mono framework in [ROCm/ATOM#2479](https://github.com/ROCm/ATOM/pull/2479)) +is on by default at every TP4 point, including the indexer-CP points C15-C28, +which no longer set `ATOM_MONO_ENABLE=0`, and the LMCache points C40/C48. It serves +decode steps of up to 16 tokens, which is four requests with EAGLE3 K3, so it +covers all of C1, C2 and C4 and the small-batch steps at higher concurrency. +ATOM builds mono for TP4 only and logs `MiniMax-M3 mono decode off` at TP2; the +TP2 points run the unfused path. +Verify the mono route in `server.log`. + +The GPU-resident points are TP4 C1-C28 and TP2 C1, C2 and C4. EAGLE3 K3, +golden AL 2.78 and indexer CP are unchanged. ### DeepSeek-V4.1-Flash DSpark diff --git a/inferencex-e2e/docs/configuration-procedures_zh.md b/inferencex-e2e/docs/configuration-procedures_zh.md index 4ce5ab04f7..94952e69c6 100644 --- a/inferencex-e2e/docs/configuration-procedures_zh.md +++ b/inferencex-e2e/docs/configuration-procedures_zh.md @@ -266,12 +266,12 @@ ROCm 7.2.4),已包含已合入的 配方不再在运行时修改 AITER 源码;TP 通信融合、DSpark K6 和 graph capture 直接使用镜像内实现。 -### MiniMax-M3 ATOM FlyDSL paged decode 与 LMCache DRAM 层 +### MiniMax-M3 ATOM FlyDSL paged decode、mono decode 与 LMCache DRAM 层 `minimaxm3-fp4-mi355x-atom-agentic-mtp` 按照 [ROCm/ATOM#2366](https://github.com/ROCm/ATOM/pull/2366) 和 [上游配方](https://github.com/ROCm/ATOM/blob/1423fceb08fbe88b2e35c77b320b3073b310a63f/recipes/MiniMax-M3-Agentic-InferenceX.md), -使用 `rocm/atom-dev:nightly_202609281543`,启用 `ATOM_PA_FLYDSL=1` 和 +使用 `rocm/atom-dev:nightly_202610061452`,启用 `ATOM_PA_FLYDSL=1` 和 `ATOM_PA_FLYDSL_PLAN=1`。FlyDSL 处理支持的 paged-decode shape,work planner 按实际上下文长度均衡 dense decode 工作量;不支持的 shape 仍回退至 Gluon。 从 `server.log` 核对实际路由,以及 work plan 是否在图捕获时创建。 @@ -295,8 +295,15 @@ TP4 约 1.23 TB)全部来自节点 0 的 1.5 TB 内存。`runners/srt-slurm/ho 内存时需要回收 page cache,各 rank 完成时间相差数分钟,ATOM 启动时 300 秒的屏障会超时 ([run 36454319395](https://github.com/SemiAnalysisAI/InferenceX/actions/runs/36454319395))。 -移除 TP4 C32;GPU 常驻 KV 的 TP4 C1-C28、TP2 C1-C2 点位、EAGLE3 K3、golden AL 2.78 -和 indexer CP 保持不变。 +ATOM 的 MiniMax-M3 mono decode([ROCm/ATOM#2419](https://github.com/ROCm/ATOM/pull/2419), +[ROCm/ATOM#2479](https://github.com/ROCm/ATOM/pull/2479) 迁移到共用 mono 框架)默认开启,覆盖所有 +TP4 点位,包括不再设置 `ATOM_MONO_ENABLE=0` 的 indexer CP 点位 C15-C28,以及 LMCache +点位 C40/C48。mono 每步最多处理 16 个 token,即 EAGLE3 K3 下的 4 个请求,因此覆盖 +C1、C2、C4 的全部 decode,以及更高并发下的小 batch decode 步。ATOM 只为 TP4 构建 mono, +TP2 会在日志中打印 `MiniMax-M3 mono decode off`,TP2 点位走非融合路径。在 `server.log` 中核对 mono 路由。 + +GPU 常驻 KV 的点位为 TP4 C1-C28 和 TP2 C1、C2、C4;EAGLE3 K3、golden AL 2.78 和 indexer CP +保持不变。 ### DeepSeek-V4.1-Flash DSpark diff --git a/inferencex-e2e/perf-changelog.yaml b/inferencex-e2e/perf-changelog.yaml index 5031b626c3..0a087eadd2 100644 --- a/inferencex-e2e/perf-changelog.yaml +++ b/inferencex-e2e/perf-changelog.yaml @@ -9327,3 +9327,16 @@ description: - "Enable SGLANG_OPT_USE_TOPK_V2 (false -> true) so the DSA indexer uses the top-k v2 kernel." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/3724 + +- config-keys: + - minimaxm3-fp4-mi355x-atom-agentic-mtp + scenario-type: + - agentic-coding + description: + - "Update the image from rocm/atom-dev:nightly_202609281543 (ATOM 0.1.7.dev43+gaa0c5c3a1) to nightly_202610061452 (digest sha256:b0ebacc3929a8cdcfe1be8ca51be83e48a1445fb0ff72202645561847b2cdc05; ATOM 0.1.7.dev58+g08735170a, ROCm 7.2.4). ROCm/ATOM#2479 moves MiniMax-M3 mono decode onto the shared mono framework, publishes every mono mailbox flag only after the stores it announces have drained, and rewrites the sparse selection as exact top-k by counting; ROCm/ATOM#2422 fixes the mono long-context decision. The upstream recipes/MiniMax-M3-Agentic-InferenceX.md is unchanged." + - "Enable MiniMax-M3 mono decode at every TP4 point by removing ATOM_MONO_ENABLE=0 from the indexer-CP points C15, C20, C24 and C28. Mono serves decode steps of up to 16 tokens (four requests with EAGLE3 K3), covering all of TP4 C1, C2 and C4. ATOM builds mono for TP4 only, so TP2 runs the unfused path." + - "Add TP2 concurrency 4 (max-num-seqs 8); the GPU-resident TP2 points are now C1, C2 and C4." + - "Record LMCache 0.5.6.dev139+gf22dec28, the wheel in the new image, for both DRAM-offload arms; the offload settings are unchanged." + - "No data-type or precision change to the EAGLE3 draft model (Inferact/MiniMax-M3-EAGLE3-GQA): online_quant_config (ptpc_fp8), kv_cache_dtype fp8 and index-cache-dtype fp8 are unchanged; mono decode changes the target model's decode kernels, not draft precision." + - "更新镜像至 rocm/atom-dev:nightly_202610061452(ATOM 0.1.7.dev58+g08735170a);去掉 TP4 C15/C20/C24/C28 的 ATOM_MONO_ENABLE=0,所有 TP4 点位启用 MiniMax-M3 mono decode(每步最多 16 个 token,即 EAGLE3 K3 下 4 个请求,覆盖 C1/C2/C4);ATOM 只为 TP4 构建 mono,TP2 走非融合路径。新增 TP2 C4,LMCache 版本记录为 0.5.6.dev139+gf22dec28。" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX From 26d7e83274aeb11a8318faffac2034c74c53ae4d Mon Sep 17 00:00:00 2001 From: honglie Date: Tue, 6 Oct 2026 23:24:27 +0800 Subject: [PATCH 2/5] docs: point MiniMax-M3 ATOM extra-kv-connectors at srt-slurm #507 instead of the dropped patch Co-Authored-By: Claude Opus 5.5 (1M context) --- .../minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml | 2 +- inferencex-e2e/docs/configuration-procedures.md | 2 +- inferencex-e2e/docs/configuration-procedures_zh.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml b/inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml index 1ad33e626e..b635284b4d 100644 --- a/inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml +++ b/inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml @@ -1,7 +1,7 @@ # MiniMax-M3 MXFP4 AgentX on MI355X with ATOM EAGLE3 (GQA draft, three tokens) # at TP2 and TP4, with GPU-resident KV or an in-process LMCache DRAM tier. # The DRAM variants add ATOM's lmcache_offload connector through -# extra-kv-connectors (runners/srt-slurm/patches/507-lmcache-server-atom-sglang.patch). +# srtctl's extra-kv-connectors (NVIDIA/srt-slurm#507, in srt-slurm since v2.36.0). base: schema: 2 name: minimaxm3-fp4-mi355x-atom-agentic diff --git a/inferencex-e2e/docs/configuration-procedures.md b/inferencex-e2e/docs/configuration-procedures.md index cd4cb064b1..36dbaf584f 100644 --- a/inferencex-e2e/docs/configuration-procedures.md +++ b/inferencex-e2e/docs/configuration-procedures.md @@ -305,7 +305,7 @@ The `*_lmcache` variants in list `{kv_connector: lmcache_offload, kv_role: offload}` under `extra-kv-connectors`, which srtctl renders as `--kv-transfer-config '{"kv_connector":"lmcache_offload","kv_role":"offload"}'` -(`runners/srt-slurm/patches/507-lmcache-server-atom-sglang.patch`). The +([NVIDIA/srt-slurm#507](https://github.com/NVIDIA/srt-slurm/pull/507), in srt-slurm since v2.36.0). The `LMCACHE_*` environment variables configure the tier. Each variant declares `KV_OFFLOADING: dram` and the matrix `TOTAL_CPU_DRAM_GB`, and sizes `LMCACHE_MAX_LOCAL_CPU_SIZE` at `TOTAL_CPU_DRAM_GB / TP` (257 GB per rank). diff --git a/inferencex-e2e/docs/configuration-procedures_zh.md b/inferencex-e2e/docs/configuration-procedures_zh.md index 94952e69c6..bdebfbdfde 100644 --- a/inferencex-e2e/docs/configuration-procedures_zh.md +++ b/inferencex-e2e/docs/configuration-procedures_zh.md @@ -281,7 +281,7 @@ TP2 C20/C25/C30 与 TP4 C40/C48 点位启用 LMCache 进程内 CPU 层。 中的 `*_lmcache` 变体在 `extra-kv-connectors` 下列出 `{kv_connector: lmcache_offload, kv_role: offload}`,srtctl 将其渲染为 `--kv-transfer-config '{"kv_connector":"lmcache_offload","kv_role":"offload"}'` -(`runners/srt-slurm/patches/507-lmcache-server-atom-sglang.patch`),CPU 层由 +([NVIDIA/srt-slurm#507](https://github.com/NVIDIA/srt-slurm/pull/507),srt-slurm v2.36.0 起内置),CPU 层由 `LMCACHE_*` 环境变量配置。每个变体声明 `KV_OFFLOADING: dram` 和矩阵的 `TOTAL_CPU_DRAM_GB`,并将 `LMCACHE_MAX_LOCAL_CPU_SIZE` 设为 `TOTAL_CPU_DRAM_GB / TP`(每 rank 257 GB)。`PYTHONHASHSEED=0` 必须设置:否则各 From e95ce8c3aa08958197c14df4fe5321352dd8dae6 Mon Sep 17 00:00:00 2001 From: honglie Date: Tue, 6 Oct 2026 23:48:12 +0800 Subject: [PATCH 3/5] chore: set MiniMax-M3 ATOM changelog pr-link to #3750 Co-Authored-By: Claude Opus 5.5 (1M context) --- inferencex-e2e/perf-changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inferencex-e2e/perf-changelog.yaml b/inferencex-e2e/perf-changelog.yaml index 0a087eadd2..701cefff36 100644 --- a/inferencex-e2e/perf-changelog.yaml +++ b/inferencex-e2e/perf-changelog.yaml @@ -9339,4 +9339,4 @@ - "Record LMCache 0.5.6.dev139+gf22dec28, the wheel in the new image, for both DRAM-offload arms; the offload settings are unchanged." - "No data-type or precision change to the EAGLE3 draft model (Inferact/MiniMax-M3-EAGLE3-GQA): online_quant_config (ptpc_fp8), kv_cache_dtype fp8 and index-cache-dtype fp8 are unchanged; mono decode changes the target model's decode kernels, not draft precision." - "更新镜像至 rocm/atom-dev:nightly_202610061452(ATOM 0.1.7.dev58+g08735170a);去掉 TP4 C15/C20/C24/C28 的 ATOM_MONO_ENABLE=0,所有 TP4 点位启用 MiniMax-M3 mono decode(每步最多 16 个 token,即 EAGLE3 K3 下 4 个请求,覆盖 C1/C2/C4);ATOM 只为 TP4 构建 mono,TP2 走非融合路径。新增 TP2 C4,LMCache 版本记录为 0.5.6.dev139+gf22dec28。" - pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/3750 From c7ab2888da1e40d4e413871e55dfa57522ee8d53 Mon Sep 17 00:00:00 2001 From: honglie Date: Wed, 7 Oct 2026 13:18:19 +0800 Subject: [PATCH 4/5] perf(amd): move MiniMax-M3 ATOM AgentX to nightly_202610070333 (ATOM #2483 mono step-fence fix) Co-Authored-By: Claude Opus 5.5 (1M context) --- .../minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml | 2 +- inferencex-e2e/configs/amd-master.yaml | 2 +- inferencex-e2e/docs/configuration-procedures.md | 5 +++-- inferencex-e2e/docs/configuration-procedures_zh.md | 5 +++-- inferencex-e2e/perf-changelog.yaml | 4 ++-- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml b/inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml index b635284b4d..60520959b6 100644 --- a/inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml +++ b/inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/minimaxm3/atom/mi355x-fp4-mtp/agentic.yaml @@ -7,7 +7,7 @@ base: name: minimaxm3-fp4-mi355x-atom-agentic model: path: hf:amd/MiniMax-M3-MXFP4 - container: rocm/atom-dev:nightly_202610061452 + container: rocm/atom-dev:nightly_202610070333 precision: fp4 resources: gpu_type: mi355x diff --git a/inferencex-e2e/configs/amd-master.yaml b/inferencex-e2e/configs/amd-master.yaml index 9e22d3ae21..18b424214a 100644 --- a/inferencex-e2e/configs/amd-master.yaml +++ b/inferencex-e2e/configs/amd-master.yaml @@ -738,7 +738,7 @@ kimik3-fp4-mi355x-vllm-agentic-mtp: - { tp: 8, ep: 1, dcp-size: 8, kv-offloading: dram, kv-offload-backend: { name: vllm-simple }, conc-list: [44, 48, 70], spec-decoding: mtp, srt-recipe: benchmarks/single_node/srt-slurm-recipes/kimik3/vllm/mi355x-fp4-mtp/agentic.yaml } minimaxm3-fp4-mi355x-atom-agentic-mtp: - image: rocm/atom-dev:nightly_202610061452 + image: rocm/atom-dev:nightly_202610070333 model: amd/MiniMax-M3-MXFP4 model-prefix: minimaxm3 runner: cluster:mi355x-amds diff --git a/inferencex-e2e/docs/configuration-procedures.md b/inferencex-e2e/docs/configuration-procedures.md index 36dbaf584f..e21384f40e 100644 --- a/inferencex-e2e/docs/configuration-procedures.md +++ b/inferencex-e2e/docs/configuration-procedures.md @@ -292,7 +292,7 @@ fusion, DSpark K6 and graph capture use the implementation shipped in the image. ### MiniMax-M3 ATOM FlyDSL paged decode, mono decode and LMCache DRAM tier `minimaxm3-fp4-mi355x-atom-agentic-mtp` uses -`rocm/atom-dev:nightly_202610061452` with `ATOM_PA_FLYDSL=1` and +`rocm/atom-dev:nightly_202610070333` with `ATOM_PA_FLYDSL=1` and `ATOM_PA_FLYDSL_PLAN=1`, following [ROCm/ATOM#2366](https://github.com/ROCm/ATOM/pull/2366) and the [upstream recipe](https://github.com/ROCm/ATOM/blob/1423fceb08fbe88b2e35c77b320b3073b310a63f/recipes/MiniMax-M3-Agentic-InferenceX.md). FlyDSL handles supported paged-decode shapes; its work planner balances dense @@ -322,7 +322,8 @@ page cache, ranks finish minutes apart and ATOM's 300 s startup barrier times ou ([run 36454319395](https://github.com/SemiAnalysisAI/InferenceX/actions/runs/36454319395)). ATOM's MiniMax-M3 mono decode ([ROCm/ATOM#2419](https://github.com/ROCm/ATOM/pull/2419), -moved onto the shared mono framework in [ROCm/ATOM#2479](https://github.com/ROCm/ATOM/pull/2479)) +moved onto the shared mono framework in [ROCm/ATOM#2479](https://github.com/ROCm/ATOM/pull/2479), +with the step fence rebuilt in FlyDSL by [ROCm/ATOM#2483](https://github.com/ROCm/ATOM/pull/2483)) is on by default at every TP4 point, including the indexer-CP points C15-C28, which no longer set `ATOM_MONO_ENABLE=0`, and the LMCache points C40/C48. It serves decode steps of up to 16 tokens, which is four requests with EAGLE3 K3, so it diff --git a/inferencex-e2e/docs/configuration-procedures_zh.md b/inferencex-e2e/docs/configuration-procedures_zh.md index bdebfbdfde..5806bcf723 100644 --- a/inferencex-e2e/docs/configuration-procedures_zh.md +++ b/inferencex-e2e/docs/configuration-procedures_zh.md @@ -271,7 +271,7 @@ ROCm 7.2.4),已包含已合入的 `minimaxm3-fp4-mi355x-atom-agentic-mtp` 按照 [ROCm/ATOM#2366](https://github.com/ROCm/ATOM/pull/2366) 和 [上游配方](https://github.com/ROCm/ATOM/blob/1423fceb08fbe88b2e35c77b320b3073b310a63f/recipes/MiniMax-M3-Agentic-InferenceX.md), -使用 `rocm/atom-dev:nightly_202610061452`,启用 `ATOM_PA_FLYDSL=1` 和 +使用 `rocm/atom-dev:nightly_202610070333`,启用 `ATOM_PA_FLYDSL=1` 和 `ATOM_PA_FLYDSL_PLAN=1`。FlyDSL 处理支持的 paged-decode shape,work planner 按实际上下文长度均衡 dense decode 工作量;不支持的 shape 仍回退至 Gluon。 从 `server.log` 核对实际路由,以及 work plan 是否在图捕获时创建。 @@ -296,7 +296,8 @@ TP4 约 1.23 TB)全部来自节点 0 的 1.5 TB 内存。`runners/srt-slurm/ho ([run 36454319395](https://github.com/SemiAnalysisAI/InferenceX/actions/runs/36454319395))。 ATOM 的 MiniMax-M3 mono decode([ROCm/ATOM#2419](https://github.com/ROCm/ATOM/pull/2419), -[ROCm/ATOM#2479](https://github.com/ROCm/ATOM/pull/2479) 迁移到共用 mono 框架)默认开启,覆盖所有 +[ROCm/ATOM#2479](https://github.com/ROCm/ATOM/pull/2479) 迁移到共用 mono 框架, +[ROCm/ATOM#2483](https://github.com/ROCm/ATOM/pull/2483) 以 FlyDSL 重写 step fence)默认开启,覆盖所有 TP4 点位,包括不再设置 `ATOM_MONO_ENABLE=0` 的 indexer CP 点位 C15-C28,以及 LMCache 点位 C40/C48。mono 每步最多处理 16 个 token,即 EAGLE3 K3 下的 4 个请求,因此覆盖 C1、C2、C4 的全部 decode,以及更高并发下的小 batch decode 步。ATOM 只为 TP4 构建 mono, diff --git a/inferencex-e2e/perf-changelog.yaml b/inferencex-e2e/perf-changelog.yaml index 701cefff36..bf87987ebf 100644 --- a/inferencex-e2e/perf-changelog.yaml +++ b/inferencex-e2e/perf-changelog.yaml @@ -9333,10 +9333,10 @@ scenario-type: - agentic-coding description: - - "Update the image from rocm/atom-dev:nightly_202609281543 (ATOM 0.1.7.dev43+gaa0c5c3a1) to nightly_202610061452 (digest sha256:b0ebacc3929a8cdcfe1be8ca51be83e48a1445fb0ff72202645561847b2cdc05; ATOM 0.1.7.dev58+g08735170a, ROCm 7.2.4). ROCm/ATOM#2479 moves MiniMax-M3 mono decode onto the shared mono framework, publishes every mono mailbox flag only after the stores it announces have drained, and rewrites the sparse selection as exact top-k by counting; ROCm/ATOM#2422 fixes the mono long-context decision. The upstream recipes/MiniMax-M3-Agentic-InferenceX.md is unchanged." + - "Update the image from rocm/atom-dev:nightly_202609281543 (ATOM 0.1.7.dev43+gaa0c5c3a1) to nightly_202610070333 (digest sha256:2f605a3e8b459a0385f784edb0335c11892277fee650fe42044e4af39e36dd01; ATOM 0.1.7.dev60+g7fc0926c6, ROCm 7.2.4). ROCm/ATOM#2479 moves MiniMax-M3 mono decode onto the shared mono framework, publishes every mono mailbox flag only after the stores it announces have drained, and rewrites the sparse selection as exact top-k by counting; ROCm/ATOM#2483 rebuilds the per-step mailbox clear and cross-rank fence as one FlyDSL launch, replacing a Triton fence that Triton 3.7 on gfx950 compiled into a loop that could spin for ever; ROCm/ATOM#2422 fixes the mono long-context decision. The upstream recipes/MiniMax-M3-Agentic-InferenceX.md is unchanged." - "Enable MiniMax-M3 mono decode at every TP4 point by removing ATOM_MONO_ENABLE=0 from the indexer-CP points C15, C20, C24 and C28. Mono serves decode steps of up to 16 tokens (four requests with EAGLE3 K3), covering all of TP4 C1, C2 and C4. ATOM builds mono for TP4 only, so TP2 runs the unfused path." - "Add TP2 concurrency 4 (max-num-seqs 8); the GPU-resident TP2 points are now C1, C2 and C4." - "Record LMCache 0.5.6.dev139+gf22dec28, the wheel in the new image, for both DRAM-offload arms; the offload settings are unchanged." - "No data-type or precision change to the EAGLE3 draft model (Inferact/MiniMax-M3-EAGLE3-GQA): online_quant_config (ptpc_fp8), kv_cache_dtype fp8 and index-cache-dtype fp8 are unchanged; mono decode changes the target model's decode kernels, not draft precision." - - "更新镜像至 rocm/atom-dev:nightly_202610061452(ATOM 0.1.7.dev58+g08735170a);去掉 TP4 C15/C20/C24/C28 的 ATOM_MONO_ENABLE=0,所有 TP4 点位启用 MiniMax-M3 mono decode(每步最多 16 个 token,即 EAGLE3 K3 下 4 个请求,覆盖 C1/C2/C4);ATOM 只为 TP4 构建 mono,TP2 走非融合路径。新增 TP2 C4,LMCache 版本记录为 0.5.6.dev139+gf22dec28。" + - "更新镜像至 rocm/atom-dev:nightly_202610070333(ATOM 0.1.7.dev60+g7fc0926c6,含 ROCm/ATOM#2483 的 mono step fence 修复);去掉 TP4 C15/C20/C24/C28 的 ATOM_MONO_ENABLE=0,所有 TP4 点位启用 MiniMax-M3 mono decode(每步最多 16 个 token,即 EAGLE3 K3 下 4 个请求,覆盖 C1/C2/C4);ATOM 只为 TP4 构建 mono,TP2 走非融合路径。新增 TP2 C4,LMCache 版本记录为 0.5.6.dev139+gf22dec28。" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/3750 From 6acaeab387acd9635a89cc3fd51ea54de7ce0601 Mon Sep 17 00:00:00 2001 From: seungrokj Date: Wed, 7 Oct 2026 19:10:30 -0700 Subject: [PATCH 5/5] perf(amd): MiniMax-M3 ATOM AgentX on 1007 nightly with mono decode at every TP4 point minimaxm3-fp4-mi355x-atom-agentic-mtp: - Image rocm/atom-dev:nightly_202609281543 (ATOM 0.1.7.dev43+gaa0c5c3a1) -> nightly_202610070333 (sha256:2f605a3e8b459a0385f784edb0335c11892277fee650fe42044e4af39e36dd01; ATOM 0.1.7.dev60+g7fc0926c6, ROCm 7.2.4). ROCm/ATOM#2479 moves M3 mono decode onto the shared mono framework (mailbox flags published only after their stores drain; exact top-k sparse selection); ROCm/ATOM#2483 rebuilds the per-step mailbox clear and cross-rank fence as one FlyDSL launch, replacing a Triton fence that could spin forever on gfx950; ROCm/ATOM#2422 fixes the mono long-context decision. Upstream recipes/MiniMax-M3-Agentic-InferenceX.md is unchanged. - Mono decode on at every TP4 point: drop ATOM_MONO_ENABLE=0 from the indexer-CP points C15/C20/C24/C28. Mono serves decode steps of up to 16 tokens (four requests with EAGLE3 K3), covering all of TP4 C1/C2/C4. ATOM builds mono for TP4 only, so TP2 runs the unfused path. - Add TP2 C4 (max-num-seqs 8); GPU-resident TP2 points are C1/C2/C4. - Record LMCache 0.5.6.dev139+gf22dec28 (the wheel in the new image) for both DRAM-offload arms; offload settings unchanged. - Recipe cites NVIDIA/srt-slurm#507 (in srt-slurm since v2.36.0) for extra-kv-connectors instead of the dropped 507 patch. - No data-type or precision change to the EAGLE3 draft (Inferact/MiniMax-M3-EAGLE3-GQA). Risk: ROCm/ATOM#2452 (CUDA-graph pad rows in the wide MoE path, 5+ tokens) is not in this image; every batch size 1-18 is captured, so steps of up to four requests are never padded. Co-Authored-By: Claude Opus 5.5