Skip to content

Commit b3fd322

Browse files
YukioZzzcquil11billishyahao
authored
feat(agentx): add native Kimi-K3 PD recipes / feat(agentx): 新增原生 Kimi-K3 PD 配置 (#3582)
* feat(launch): support read-only Kimi-K3 assets 为 Kimi-K3 PD 声明模型资源与只读 draft/provider 挂载;保留现有可写缓存目录的创建行为,不改共享镜像准备和任务生命周期。 * feat(config): add native Kimi-K3 PD recipes Add topology-named native variants with a digest-pinned official worker image, role-owned serving settings and default evaluation selection. Preserve upstream request-ID randomization and keep benchmark and cluster configuration separate. 新增按拓扑命名的原生配置变体,使用 digest 固定的官方 worker 镜像、按角色管理的 serving 参数及默认精度评测;遵循上游 request-ID 随机化,将 benchmark 和集群配置分层。 * fix(srt-slurm): backport discovery connector template binding Carry NVIDIA/srt-slurm #508 through the existing patches directory at the shared submodule API. Exercise real job-local patch application and conflict handling, then run the upstream P/D command-rendering regressions in an isolated checkout. Remove the patch once the shared dependency includes it. 沿用既有 patches 目录回补 NVIDIA/srt-slurm #508,与共享 submodule API 保持一致。验证任务私有 checkout 的补丁应用和冲突退出,再在隔离进程中执行上游 P/D 命令渲染回归;共享依赖包含该修复后删除补丁。 * refactor: use native asset mounts for Kimi-K3 recipes Declare draft checkpoint and Ionic provider mounts through existing recipe and cluster configuration. Keep shared launch code unchanged, carry only the #508 runtime backend fix, and record recipe details in YAML and the changelog. 中文:通过现有 recipe 和集群配置声明 draft checkpoint 与 Ionic provider 挂载。共享 launch 代码保持不变,仅携带 #508 的运行时 backend 修复,将 recipe 信息统一记录在 YAML 和 changelog。 * perf(config): tune and simplify Kimi-K3 PD recipe settings Enable INT4 QuickReduce with a 256 MiB limit and FlyDSL stage-2 FP8 on both roles. Use default nonblocking waits and breakable-graph settings. Scope draft and Ionic mount paths to the recipe. Configure 1P1D c48/c56, 1P2D c24/c48 and 1P3D c12/c24 with prefill-only CPU offload and point-specific decode graph coverage. Update the existing performance changelog entry. 中文:在 P/D 两侧启用 INT4 QuickReduce、256 MiB 大小上限和 FlyDSL stage-2 FP8,使用默认非阻塞等待与 breakable graph 设置。将 draft 和 Ionic 挂载路径收束到 recipe。配置 1P1D c48/c56、1P2D c24/c48 和 1P3D c12/c24,使用仅 prefill 侧 CPU offload 与各点对应的 decode graph 覆盖,并更新当前 PR 的性能变更记录。 * fix(config): use default AgentX failure threshold for Kimi-K3 PD Remove the recipe's live failure threshold override so all Kimi-K3 PD variants use the pinned AgentX scenario's 10% default. Keep the final result threshold, both roles' stream interval, and optional server-metrics validation unchanged. 移除 Kimi-K3 PD 配方的运行中错误率覆盖,所有变体沿用固定版本 AgentX 场景的默认 10% 门槛。最终结果校验门槛、P/D 流式输出间隔及可选 server-metrics 校验保持不变。 * fix(srt): clarify discovery patch scope 说明 #508 仅修复 srt-slurm 启动器的 discovery 配置渲染,不修改推理引擎、kernel、模型计算或镜像。补丁应用后的代码保持不变。 * fix(kimik3): migrate PD recipe to srt-recipe selection and AgentX fragments Main now selects srt-slurm variants with srt-recipe-dir/srt-recipe and binds model, image, precision, client env and concurrencies from the master row, so the recipe drops those keys and the shared agentic.yaml supplies the client command. --------- Co-authored-by: Cam Quilici <cjquilici@gmail.com> Co-authored-by: billishyahao <bill.he@amd.com>
1 parent ec36f1b commit b3fd322

4 files changed

Lines changed: 331 additions & 0 deletions

File tree

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
# Kimi-K3 AgentX with TP8 workers, MoRIIO READ and prefill-only CPU offload.
2+
base:
3+
schema: 2
4+
name: kimik3-fp4-mi355x-vllm-disagg-agentic
5+
slurm:
6+
time_limit: '08:00:00'
7+
sbatch_directives:
8+
mem: '0'
9+
srun_options:
10+
container-remap-root: ''
11+
container-writable: ''
12+
mem: '0'
13+
container_mounts:
14+
/dev/infiniband: /dev/infiniband
15+
extra_mount:
16+
- /it-share/data/Inferact-Kimi-K3-DSpark:/models/Inferact-Kimi-K3-DSpark
17+
# Match the host's Ionic provider without replacing the image's verbs core.
18+
- /usr/lib/x86_64-linux-gnu/libibverbs/libionic-rdmav34.so:/usr/lib/x86_64-linux-gnu/libibverbs/libionic-rdmav34.so:ro
19+
resources:
20+
gpu_type: mi355x
21+
gpus_per_node: 8
22+
frontend:
23+
type: vllm-router
24+
enable_multiple_frontends: false
25+
placement:
26+
node: head
27+
# Native Pyxis/Enroot digest reference; imported in the frontend's job step.
28+
container_image: registry-1.docker.io#vllm/vllm-router:sha256:1fbf06701abce8c8cd459414e472d63999c05b201baffc62e00727c10583f5ea
29+
args:
30+
policy: consistent_hash
31+
prefill-policy: consistent_hash
32+
decode-policy: consistent_hash
33+
log-level: info
34+
observability:
35+
enabled: false
36+
tachometer:
37+
enabled: false
38+
health_check:
39+
interval_seconds: 10
40+
# Match the engine's 7200-second weight-loading budget.
41+
max_attempts: 720
42+
engine:
43+
type: vllm
44+
connector: moriio
45+
roles:
46+
prefill:
47+
nodes: 1
48+
workers: 1
49+
gpus: 8
50+
args: &common_args
51+
served-model-name: moonshotai/Kimi-K3
52+
trust-remote-code: true
53+
tensor-parallel-size: 8
54+
decode-context-parallel-size: 1
55+
cp-kv-cache-interleave-size: 1
56+
dcp-comm-backend: a2a
57+
moe-backend: auto
58+
load-format: fastsafetensors
59+
gpu-memory-utilization: 0.90
60+
language-model-only: true
61+
enable-auto-tool-choice: true
62+
tool-call-parser: kimi_k3
63+
reasoning-parser: kimi_k3
64+
max-model-len: 1048576
65+
stream-interval: 10
66+
enable-prefix-caching: true
67+
prefix-match-unit: 128
68+
kv-cache-dtype: fp8
69+
mamba-ssm-cache-dtype: float32
70+
block-size: 128
71+
attention-backend: ROCM_AITER_MLA
72+
attention-config: '{"mla_prefill_backend":"ROCM_AITER_FA","use_prefill_query_quantization":true}'
73+
# The native srt driver supplies the measured AL for the selected DSpark
74+
# draft length in throughput runs and keeps real block rejection for eval.
75+
speculative-config: '{"model":"/models/Inferact-Kimi-K3-DSpark","method":"dspark","num_speculative_tokens":4,"attention_backend":"ROCM_AITER_MLA","kv_cache_dtype":"fp8","draft_sample_method":"probabilistic","rejection_sample_method":"block"}'
76+
kv-transfer-config: '{"kv_connector":"MultiConnector","kv_role":"kv_both","kv_load_failure_policy":"fail","kv_connector_extra_config":{"connectors":[{"kv_connector":"MoRIIOConnector","kv_role":"kv_producer","kv_load_failure_policy":"fail","kv_connector_extra_config":{"backend":"rdma"}},{"kv_connector":"SimpleCPUOffloadConnector","kv_role":"kv_both","kv_connector_extra_config":{"cpu_bytes_to_use":1799000000000,"lazy_offload":false}}]}}'
77+
env: &common_env
78+
NCCL_IB_HCA: rdma0,rdma1,rdma2,rdma3,rdma4,rdma5,rdma6,rdma7
79+
NCCL_SOCKET_IFNAME: eno0
80+
GLOO_SOCKET_IFNAME: eno0
81+
# Use the nightly's default SiTUv2 activation selection.
82+
VLLM_ROCM_USE_AITER: '1'
83+
AITER_BF16_FP8_MOE_BOUND: '0'
84+
AITER_FLYDSL_STAGE2_FP8: '1'
85+
VLLM_ROCM_AITER_MLA_ASM_PADDING: asm
86+
VLLM_ROCM_AITER_MLA_DCP_VERIFY: asm
87+
VLLM_ROCM_QUICK_REDUCE_QUANTIZATION: INT4
88+
VLLM_ROCM_QUICK_REDUCE_MAX_SIZE_BYTES_MB: '256'
89+
SAFETENSORS_FAST_GPU: '1'
90+
VLLM_SSM_CONV_STATE_LAYOUT: DS
91+
VLLM_KV_CACHE_LAYOUT: HND
92+
NCCL_DMABUF_ENABLE: '0'
93+
HSA_ENABLE_IPC_MODE_LEGACY: '1'
94+
HIP_FORCE_DEV_KERNARG: '1'
95+
PYTHONHASHSEED: '42'
96+
# Keep DCP collectives on the graph-compatible RCCL path.
97+
VLLM_USE_DIRECT_DCP_A2A: '0'
98+
VLLM_USE_DIRECT_DCP_Q_GATHER: '0'
99+
VLLM_USE_DIRECT_DCP_KV_GATHER: '0'
100+
VLLM_ENGINE_READY_TIMEOUT_S: '7200'
101+
VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS: '1200'
102+
PYTHONNOUSERSITE: '1'
103+
VLLM_SERVER_DEV_MODE: '0'
104+
# Bound RDMA queue resources and the wait for available send slots.
105+
MORI_IO_SQ_BACKOFF_TIMEOUT_US: '50000'
106+
MORI_IO_QP_MAX_SEND_WR: '16384'
107+
MORI_IO_QP_MAX_CQE: '32768'
108+
MORI_IO_QP_MAX_SGE: '2'
109+
MORI_IO_TC_DISABLE: '0'
110+
decode:
111+
nodes: 1
112+
workers: 1
113+
gpus: 8
114+
args:
115+
<<: *common_args
116+
kv-transfer-config: '{"kv_connector":"MoRIIOConnector","kv_role":"kv_consumer","kv_load_failure_policy":"fail","kv_connector_extra_config":{"backend":"rdma"}}'
117+
env: *common_env
118+
benchmark:
119+
placement:
120+
node: head
121+
122+
override_1p3d_c12:
123+
roles:
124+
prefill:
125+
args:
126+
max-num-seqs: 24
127+
max-num-batched-tokens: 8192
128+
compilation-config: '{"mode":3,"cudagraph_mode":"NONE","max_cudagraph_capture_size":0,"custom_ops":["+fused_rms_norm_gated","+quant_fp8","+grouped_topk","+sparse_attn_indexer","none"]}'
129+
env:
130+
HSA_NO_SCRATCH_RECLAIM: '0'
131+
decode:
132+
nodes: 3
133+
workers: 3
134+
args:
135+
max-num-seqs: 8
136+
max-num-batched-tokens: 512
137+
compilation-config: '{"mode":3,"cudagraph_mode":"FULL_DECODE_ONLY","max_cudagraph_capture_size":40,"cudagraph_capture_sizes":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"custom_ops":["+fused_rms_norm_gated","+quant_fp8","+grouped_topk","+sparse_attn_indexer","none"]}'
138+
139+
override_1p2d_c24: &tp8_c24
140+
roles: &tp8_c24_roles
141+
prefill:
142+
args:
143+
decode-context-parallel-size: 8
144+
max-num-seqs: 48
145+
max-num-batched-tokens: 8192
146+
compilation-config: '{"mode":3,"cudagraph_mode":"NONE","max_cudagraph_capture_size":0,"custom_ops":["+fused_rms_norm_gated","+quant_fp8","+grouped_topk","+sparse_attn_indexer","none"]}'
147+
decode: &tp8_c24_decode
148+
nodes: 2
149+
workers: 2
150+
args: &tp8_c24_decode_args
151+
decode-context-parallel-size: 8
152+
max-num-seqs: 24
153+
max-num-batched-tokens: 512
154+
compilation-config: '{"mode":3,"cudagraph_mode":"FULL_DECODE_ONLY","max_cudagraph_capture_size":120,"cudagraph_capture_sizes":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,70,80,90,100,110,120],"custom_ops":["+fused_rms_norm_gated","+quant_fp8","+grouped_topk","+sparse_attn_indexer","none"]}'
155+
156+
# Keep the c24 serving policy; scale only the decoder replicas and per-D limit.
157+
override_1p3d_c24:
158+
<<: *tp8_c24
159+
roles:
160+
<<: *tp8_c24_roles
161+
decode:
162+
<<: *tp8_c24_decode
163+
nodes: 3
164+
workers: 3
165+
args:
166+
<<: *tp8_c24_decode_args
167+
max-num-seqs: 16
168+
169+
override_1p1d_c48: &tp8_c48
170+
roles: &tp8_c48_roles
171+
prefill: &tp8_c48_prefill
172+
args: &tp8_c48_prefill_args
173+
decode-context-parallel-size: 8
174+
max-num-seqs: 96
175+
max-num-batched-tokens: 8192
176+
compilation-config: '{"mode":3,"cudagraph_mode":"NONE","max_cudagraph_capture_size":0,"custom_ops":["+fused_rms_norm_gated","+quant_fp8","+grouped_topk","+sparse_attn_indexer","none"]}'
177+
env:
178+
# Short-tail segmented MLA can require ~4.1 GB of non-reclaimable scratch.
179+
HSA_NO_SCRATCH_RECLAIM: '0'
180+
decode: &tp8_c48_decode
181+
args: &tp8_c48_decode_args
182+
decode-context-parallel-size: 8
183+
max-num-seqs: 96
184+
max-num-batched-tokens: 512
185+
compilation-config: '{"mode":3,"cudagraph_mode":"FULL_DECODE_ONLY","max_cudagraph_capture_size":240,"cudagraph_capture_sizes":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,140,150,160,170,180,190,200,210,220,230,240],"custom_ops":["+fused_rms_norm_gated","+quant_fp8","+grouped_topk","+sparse_attn_indexer","none"]}'
186+
187+
override_1p1d_c56:
188+
<<: *tp8_c48
189+
roles:
190+
<<: *tp8_c48_roles
191+
prefill:
192+
<<: *tp8_c48_prefill
193+
args:
194+
<<: *tp8_c48_prefill_args
195+
max-num-seqs: 112
196+
decode:
197+
<<: *tp8_c48_decode
198+
args:
199+
<<: *tp8_c48_decode_args
200+
max-num-seqs: 112
201+
compilation-config: '{"mode":3,"cudagraph_mode":"FULL_DECODE_ONLY","max_cudagraph_capture_size":280,"cudagraph_capture_sizes":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280],"custom_ops":["+fused_rms_norm_gated","+quant_fp8","+grouped_topk","+sparse_attn_indexer","none"]}'
202+
203+
override_1p2d_c48:
204+
<<: *tp8_c48
205+
roles:
206+
<<: *tp8_c48_roles
207+
decode:
208+
<<: *tp8_c48_decode
209+
nodes: 2
210+
workers: 2
211+
args:
212+
<<: *tp8_c48_decode_args
213+
max-num-seqs: 48

‎inferencex-e2e/configs/amd-master.yaml‎

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1601,3 +1601,107 @@ dsv41flash-fp4-mi355x-sglang-agentic-dspark:
16011601
- { tp: 2, ep: 1, dp-attn: false, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 2, 4, 8, 16], srt-recipe: agentic.yaml }
16021602
- { tp: 4, ep: 1, dp-attn: false, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 2, 4, 8, 16], srt-recipe: agentic.yaml }
16031603
- { tp: 2, ep: 1, dp-attn: true, kv-offloading: none, spec-decoding: mtp, conc-list: [32, 64], srt-recipe: agentic.yaml }
1604+
1605+
# Native Kimi-K3 PD with TP8 workers and MoRIIO READ.
1606+
kimik3-fp4-mi355x-vllm-disagg-agentic:
1607+
image: vllm/vllm-openai-rocm:nightly-81198e97ba7eee2a22540caaa756b7fdddcb4d93@sha256:a401e4f46872dcde77e07ae3d7fa2d3a71b7f2773714316116532e2b39deb179
1608+
model: moonshotai/Kimi-K3
1609+
model-prefix: kimik3
1610+
runner: cluster:mi355x-amds
1611+
precision: fp4
1612+
framework: vllm-disagg
1613+
router: { name: vllm-router, version: nightly-20260913-83944c4 }
1614+
kv-p2p-transfer: moriio
1615+
multinode: true
1616+
disagg: true
1617+
srt-recipe-dir: kimik3/vllm/mi355x-fp4/agentx
1618+
scenarios:
1619+
agentic-coding:
1620+
- dram-utilization: 0.6
1621+
search-space:
1622+
- spec-decoding: mtp
1623+
conc-list: [12]
1624+
kv-offloading: dram
1625+
kv-offload-backend: { name: vllm-simple }
1626+
srt-recipe: disagg-variants.yaml:override_1p3d_c12
1627+
prefill:
1628+
num-worker: 1
1629+
tp: 8
1630+
dcp-size: 1
1631+
ep: 1
1632+
dp-attn: false
1633+
additional-settings:
1634+
- TOTAL_CPU_DRAM_GB=1799
1635+
decode: { num-worker: 3, tp: 8, dcp-size: 1, ep: 1, dp-attn: false }
1636+
- spec-decoding: mtp
1637+
conc-list: [24]
1638+
kv-offloading: dram
1639+
kv-offload-backend: { name: vllm-simple }
1640+
srt-recipe: disagg-variants.yaml:override_1p3d_c24
1641+
prefill:
1642+
num-worker: 1
1643+
tp: 8
1644+
dcp-size: 8
1645+
ep: 1
1646+
dp-attn: false
1647+
additional-settings:
1648+
- TOTAL_CPU_DRAM_GB=1799
1649+
decode: { num-worker: 3, tp: 8, dcp-size: 8, ep: 1, dp-attn: false }
1650+
- spec-decoding: mtp
1651+
conc-list: [24]
1652+
kv-offloading: dram
1653+
kv-offload-backend: { name: vllm-simple }
1654+
srt-recipe: disagg-variants.yaml:override_1p2d_c24
1655+
prefill:
1656+
num-worker: 1
1657+
tp: 8
1658+
dcp-size: 8
1659+
ep: 1
1660+
dp-attn: false
1661+
additional-settings:
1662+
- TOTAL_CPU_DRAM_GB=1799
1663+
decode: { num-worker: 2, tp: 8, dcp-size: 8, ep: 1, dp-attn: false }
1664+
- spec-decoding: mtp
1665+
conc-list: [48]
1666+
kv-offloading: dram
1667+
kv-offload-backend: { name: vllm-simple }
1668+
srt-recipe: disagg-variants.yaml:override_1p1d_c48
1669+
prefill:
1670+
num-worker: 1
1671+
tp: 8
1672+
dcp-size: 8
1673+
ep: 1
1674+
dp-attn: false
1675+
additional-settings:
1676+
# Recipe enables P-only scratch reclaim; D and GMU0.90 are unchanged.
1677+
- TOTAL_CPU_DRAM_GB=1799
1678+
decode: { num-worker: 1, tp: 8, dcp-size: 8, ep: 1, dp-attn: false }
1679+
- spec-decoding: mtp
1680+
conc-list: [56]
1681+
kv-offloading: dram
1682+
kv-offload-backend: { name: vllm-simple }
1683+
srt-recipe: disagg-variants.yaml:override_1p1d_c56
1684+
prefill:
1685+
num-worker: 1
1686+
tp: 8
1687+
dcp-size: 8
1688+
ep: 1
1689+
dp-attn: false
1690+
additional-settings:
1691+
- TOTAL_CPU_DRAM_GB=1799
1692+
decode: { num-worker: 1, tp: 8, dcp-size: 8, ep: 1, dp-attn: false }
1693+
- spec-decoding: mtp
1694+
conc-list: [48]
1695+
kv-offloading: dram
1696+
kv-offload-backend: { name: vllm-simple }
1697+
srt-recipe: disagg-variants.yaml:override_1p2d_c48
1698+
prefill:
1699+
num-worker: 1
1700+
tp: 8
1701+
dcp-size: 8
1702+
ep: 1
1703+
dp-attn: false
1704+
additional-settings:
1705+
# Inherits the same P-only scratch-reclaim setting as 1P1D c48.
1706+
- TOTAL_CPU_DRAM_GB=1799
1707+
decode: { num-worker: 2, tp: 8, dcp-size: 8, ep: 1, dp-attn: false }

‎inferencex-e2e/configs/runners.yaml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -874,6 +874,7 @@ clusters:
874874
MORI_RDMA_TC: '@fabric.rdma-tc'
875875
models:
876876
entries:
877+
Kimi-K3: {root: it-share-data, dir: Kimi-K3}
877878
DeepSeek-R1-0528-MXFP4-v2: {root: it-share-data, dir: DeepSeek-R1-0528-MXFP4-v2}
878879
DeepSeek-V4-Pro-0813: {root: it-share-data, dir: DeepSeek-V4-Pro-0813}
879880
GLM-5.3: {root: it-share-data, dir: GLM-5.3}

‎inferencex-e2e/perf-changelog.yaml‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9705,3 +9705,16 @@
97059705
- Pin minimaxm3 B300 FP4 vllm mtp AgentX to the 2026-10-13 image vllm/vllm-openai:nightly-5555a2d8f7116b2b4877f66516f4128176cf722a@sha256:e5c9e6bb82f645e8fca04e4d395743ee5ed473a62b98942d65f83c35d0c69301.
97069706
- Preserve deployment topology, speculative mode, concurrency points, KV-offload settings and evaluation coverage.
97079707
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/4000
9708+
9709+
- config-keys:
9710+
- kimik3-fp4-mi355x-vllm-disagg-agentic
9711+
scenario-type:
9712+
- agentic-coding
9713+
description:
9714+
- "Add native Kimi-K3 PD with FP8 KV and GMU 0.90 on official ROCm nightly 81198e97ba7eee2a22540caaa756b7fdddcb4d93, pinned by digest in master and recipe."
9715+
- "Use TP8 per worker: 1P1D c48/c56, 1P2D c24/c48 and 1P3D c12/c24, with automatic golden acceptance, default request-ID randomization and default evaluation selection."
9716+
- "Use the AgentX scenario's default 10% live failure threshold, retaining a stream interval of 10 on both roles and optional server-metrics validation."
9717+
- "Set the prefill sequence limit to twice the global concurrency and divide that capacity across decode workers; 1P1D c56 uses 112 sequences per role with a decode graph capture limit of 280."
9718+
- "Enable INT4 QuickReduce with a 256 MiB size limit and FlyDSL stage-2 FP8 on prefill and decode workers."
9719+
- "Configure MoRIIO READ and prefill-only SimpleCPUOffloadConnector through native role arguments. Use recipe-scoped draft checkpoint and RDMA device/provider mounts. Use the upstream discovery-template fix from srt-slurm #508 through the shared v2.51.1 dependency."
9720+
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/3582

0 commit comments

Comments
 (0)