Skip to content
Open
Show file tree
Hide file tree
Changes from 40 commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
f94cabe
perf(agentx): add B200 Kimi K3 DSpark refresh
cquil11 Aug 3, 2026
256df24
chore: link B200 DSpark refresh PR
cquil11 Aug 3, 2026
9515848
feat: add b200 kimi k3 agentx profiles
adibarra Aug 3, 2026
c5fa8da
fix: bypass unsupported b200 custom collectives
adibarra Aug 3, 2026
88d3bb7
fix: correct b200 dep launch accounting
adibarra Aug 3, 2026
3cb4971
fix: force pynccl for cross-node tp
adibarra Aug 3, 2026
94d677a
fix: disable cross-node latent tail fusion
adibarra Aug 3, 2026
349ddfd
fix: disable cross-node allreduce fusion
adibarra Aug 3, 2026
48dffa1
fix: use viable b200 tp8pp2 profiles
adibarra Aug 3, 2026
4508808
fix: keep dspark on pp-free tp16
adibarra Aug 3, 2026
f862b86
chore: merge main into B200 branch
adibarra Aug 10, 2026
3bf7616
fix: test B200 with modern Kimi nightly
adibarra Aug 10, 2026
ef1ffac
fix: disable fused Kimi latent tail
adibarra Aug 10, 2026
eac9a89
fix: force portable Kimi collectives
adibarra Aug 10, 2026
08ca238
fix: install Kimi compatibility setup
adibarra Aug 10, 2026
48ea8e6
fix: bypass unsupported Kimi workspaces
adibarra Aug 10, 2026
6c86aff
fix: force PyNCCL for Kimi
adibarra Aug 10, 2026
0d8d71b
fix: terminate Kimi changelog entry
adibarra Aug 10, 2026
cdcd4a7
refactor: remove obsolete DEP accounting changes
adibarra Aug 10, 2026
c4f8ad5
fix: reserve sufficient Kimi offload memory
adibarra Aug 10, 2026
b37142c
chore: remove stale DEP launcher comment
adibarra Aug 10, 2026
5167128
fix: cap offload at stable concurrency
adibarra Aug 10, 2026
629d447
fix: retain accepted offload capacity endpoint
adibarra Aug 10, 2026
4107dc6
chore: merge main and resolve conflicts
adibarra Aug 11, 2026
72b321e
fix: preserve changelog newline after merge
adibarra Aug 11, 2026
0a2c7eb
chore: merge main and resolve conflicts [skip-sweep]
adibarra Aug 11, 2026
977edcc
fix: use upstream kimi k3 b200 path
adibarra Aug 11, 2026
3be29f2
fix: run b200 tep in eager mode
adibarra Aug 11, 2026
7abf1db
fix: keep b200 tensor parallel node local
adibarra Aug 11, 2026
02bed65
chore: merge main and preserve changelog
adibarra Aug 11, 2026
a476441
ci: shorten multi-node eval artifact names
adibarra Aug 11, 2026
db438d5
fix: enforce Kimi K3 metrics collection
cquil11 Aug 11, 2026
2bb6eea
perf: probe Kimi K3 offload crossover
cquil11 Aug 11, 2026
5c1e3de
Merge origin/main into Kimi K3 B200 tuning
cquil11 Aug 12, 2026
0c06e9b
fix: pass Kimi K3 metrics through supported env
cquil11 Aug 12, 2026
22ae693
Merge current main for Kimi K3 metrics fix
cquil11 Aug 12, 2026
258c6e4
chore: document Kimi K3 metrics fix
cquil11 Aug 12, 2026
5b132ba
perf: retain measured Kimi K3 B200 frontier
cquil11 Aug 12, 2026
f37d9aa
Kimi-K3 B200: DCP8, TokenspeedMLA, banded DSpark, B300 image
xinli-sw Aug 15, 2026
b9c4098
Fill the changelog pr-link
xinli-sw Aug 15, 2026
aebabb2
Merge origin/main into kimik3-b200-dcp8-refresh
xinli-sw Aug 15, 2026
133c850
B200: serve on the Python frontend
xinli-sw Aug 15, 2026
6df9b8f
B200: disable decode context parallelism
xinli-sw Aug 15, 2026
6814766
B200: restore decode context parallelism, drop the CuMem allocator
xinli-sw Aug 15, 2026
29c3259
Merge remote-tracking branch 'origin/main' into kimik3-b200-dcp8-refresh
xinli-sw Aug 15, 2026
3cbd5c6
B200: run DCP over NCCL all-to-all instead of direct symmetric memory
xinli-sw Aug 15, 2026
8b4be13
B200: switch the direct symmetric-memory DCP path off explicitly
xinli-sw Aug 15, 2026
44ed42b
B200: fill DCP local sequence lengths on dummy batches
xinli-sw Aug 15, 2026
812b568
B200: apply the DCP dummy-batch patch via the recipe setup script
xinli-sw Aug 15, 2026
54ace62
Sync the DCP dummy-batch patch with the upstream branch
xinli-sw Aug 15, 2026
f211f88
B200: apply the DCP dummy-batch edit without git or patch
xinli-sw Aug 15, 2026
0d27ed3
B200: lower gpu-memory-utilization on the offload arm
xinli-sw Aug 15, 2026
b28fe24
B200: coarsen the offload arm capture list
xinli-sw Aug 15, 2026
9e9522f
B200: stream every decode step
xinli-sw Aug 16, 2026
3577934
B200: expandable segments and a smaller prefill budget
xinli-sw Aug 16, 2026
99a56ca
B200: drop expandable segments
xinli-sw Aug 16, 2026
b19331c
B200: lower gpu-memory-utilization to 0.86 on the offload arm
xinli-sw Aug 16, 2026
de0f40c
B200: Mooncake offload, new concurrency ladder, lower gpu-memory-util…
xinli-sw Aug 16, 2026
070957a
B200: use a 200 GB Mooncake segment per rank
xinli-sw Aug 16, 2026
4277cea
B200: cap running sequences at 8 resident and 16 offloaded
xinli-sw Aug 16, 2026
a2a96ee
B200: offload every point to Mooncake, split the ladder by draft depth
xinli-sw Aug 16, 2026
6f6f4ee
B200: rename the recipes after their KV tier and draft depth
xinli-sw Aug 16, 2026
a91e78e
B200: add an unspeculated band at the top of the ladder
xinli-sw Aug 16, 2026
da394de
B200: route sessions with the Dynamo router
xinli-sw Aug 16, 2026
41a7068
Merge remote-tracking branch 'origin/main' into kimik3-b200-dcp8-refresh
xinli-sw Aug 16, 2026
020e693
B200: use the Dynamo parser flags the vLLM worker accepts
xinli-sw Aug 16, 2026
4c5c78c
B200: pin the Dynamo build that has the Kimi K3 parsers
xinli-sw Aug 16, 2026
e8a19ac
B200: drop the router flag this Dynamo build does not have
xinli-sw Aug 16, 2026
86760ea
B200: give the Dynamo runtime a long etcd lease
xinli-sw Aug 16, 2026
f6f1854
Merge remote-tracking branch 'origin/main' into kimik3-b200-dcp8-refresh
xinli-sw Aug 16, 2026
600920f
B200: revert to the vLLM frontend
xinli-sw Aug 16, 2026
ad23511
Merge remote-tracking branch 'origin/main' into kimik3-b200-dcp8-refresh
xinli-sw Aug 16, 2026
475fd9d
B200: run the Kimi K3 sweep on the b200-new cluster
xinli-sw Aug 18, 2026
2ec30ad
Merge remote-tracking branch 'origin/main' into kimik3-b200-dcp8-refresh
xinli-sw Aug 18, 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
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ name: "kimik3-vllm-agg-b200-tp8dp2-latency-dspark-agentic"
# https://recipes.vllm.ai/moonshotai/Kimi-K3?hardware=b200&nodes=2&strategy=multi_node_dep
model:
path: "kimik3"
container: "vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21"
container: "vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-5894fdf"
precision: "fp4"

identity:
model:
repo: "moonshotai/Kimi-K3"
container:
image: "vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21"
image: "vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-5894fdf"

dynamo:
install: false
Expand Down Expand Up @@ -50,6 +50,9 @@ backend:
VLLM_ENGINE_READY_TIMEOUT_S: "3600"
VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS: "1800"
VLLM_USE_V2_MODEL_RUNNER: "1"
VLLM_USE_DIRECT_DCP_A2A: "1"
VLLM_USE_DIRECT_DCP_Q_GATHER: "1"
VLLM_USE_DIRECT_DCP_KV_GATHER: "1"
VLLM_USE_RUST_FRONTEND: "1"
VLLM_SERVER_DEV_MODE: "1"
VLLM_LOG_STATS_INTERVAL: "1"
Expand All @@ -65,6 +68,8 @@ backend:
served-model-name: "moonshotai/Kimi-K3"
tensor-parallel-size: 8
data-parallel-size: 2
decode-context-parallel-size: 8
dcp-comm-backend: a2a
enable-expert-parallel: true
trust-remote-code: true
load-format: fastsafetensors
Expand All @@ -74,18 +79,23 @@ backend:
no-enable-flashinfer-autotune: true
max-model-len: 1048576
kv-cache-dtype: fp8
attention-config: '{"use_prefill_query_quantization":true,"mla_prefill_backend":"flashinfer"}'
attention-backend: TOKENSPEED_MLA
attention-config: '{"mla_prefill_backend":"TRTLLM_RAGGED","use_prefill_query_quantization":true}'
enable-prefix-caching: true
enable-prompt-tokens-details: true
enable-auto-tool-choice: true
tool-call-parser: kimi_k3
reasoning-parser: kimi_k3
language-model-only: true
max-num-seqs: 8
max-num-batched-tokens: 8192
max-num-seqs: 16
max-num-batched-tokens: 16384
prefix-match-unit: 128
stream-interval: 10
enable-cumem-allocator: true
compilation-config: '{"cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,256,512,1024,2048,4096,8192]}'
# Throughput runs use the committed K7 golden synthetic AL 3.84. Eval
# selects the paired real-verification recipe instead.
speculative-config: '{"model":"Inferact/Kimi-K3-DSpark","num_speculative_tokens":7,"method":"dspark","attention_backend":"FLASHINFER_MLA","draft_sample_method":"probabilistic","rejection_sample_method":"synthetic","synthetic_acceptance_length":3.84}'
speculative-config: '{"model":"Inferact/Kimi-K3-DSpark","num_speculative_tokens":7,"method":"dspark","attention_backend":"TOKENSPEED_MLA","draft_sample_method":"probabilistic","rejection_sample_method":"synthetic","synthetic_acceptance_length":3.84}'

sbatch_directives:
segment: "1"
Expand All @@ -95,12 +105,12 @@ srun_options:

benchmark:
type: custom
aiperf_server_metrics: true
command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh
env:
INFMAX_CONTAINER_WORKSPACE: "/infmax-workspace"
AIPERF_TRACE_IDLE_GAP_CAP_SECONDS: "300"
AIPERF_LIVE_FAILED_REQUEST_THRESHOLD: "0.25"
AIPERF_SERVER_METRICS_URLS: "http://localhost:8000/metrics"
AIPERF_REQUIRED_SERVER_METRIC_PREFIX: "vllm:"
RESULT_DIR: "/logs/agentic"
PORT: "8000"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ name: "kimik3-vllm-agg-b200-tp8dp2-latency-dspark-eval-agentic"
# changes from synthetic golden AL to target-verified block.
model:
path: "kimik3"
container: "vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21"
container: "vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-5894fdf"
precision: "fp4"

identity:
model:
repo: "moonshotai/Kimi-K3"
container:
image: "vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21"
image: "vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-5894fdf"

dynamo:
install: false
Expand Down Expand Up @@ -49,6 +49,9 @@ backend:
VLLM_ENGINE_READY_TIMEOUT_S: "3600"
VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS: "1800"
VLLM_USE_V2_MODEL_RUNNER: "1"
VLLM_USE_DIRECT_DCP_A2A: "1"
VLLM_USE_DIRECT_DCP_Q_GATHER: "1"
VLLM_USE_DIRECT_DCP_KV_GATHER: "1"
VLLM_USE_RUST_FRONTEND: "1"
VLLM_SERVER_DEV_MODE: "1"
VLLM_LOG_STATS_INTERVAL: "1"
Expand All @@ -64,6 +67,8 @@ backend:
served-model-name: "moonshotai/Kimi-K3"
tensor-parallel-size: 8
data-parallel-size: 2
decode-context-parallel-size: 8
dcp-comm-backend: a2a
enable-expert-parallel: true
trust-remote-code: true
load-format: fastsafetensors
Expand All @@ -73,17 +78,22 @@ backend:
no-enable-flashinfer-autotune: true
max-model-len: 1048576
kv-cache-dtype: fp8
attention-config: '{"use_prefill_query_quantization":true,"mla_prefill_backend":"flashinfer"}'
attention-backend: TOKENSPEED_MLA
attention-config: '{"mla_prefill_backend":"TRTLLM_RAGGED","use_prefill_query_quantization":true}'
enable-prefix-caching: true
enable-prompt-tokens-details: true
enable-auto-tool-choice: true
tool-call-parser: kimi_k3
reasoning-parser: kimi_k3
language-model-only: true
max-num-seqs: 8
max-num-batched-tokens: 8192
max-num-seqs: 16
max-num-batched-tokens: 16384
prefix-match-unit: 128
stream-interval: 10
enable-cumem-allocator: true
compilation-config: '{"cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,256,512,1024,2048,4096,8192]}'
# Eval must verify every draft against real target logits.
speculative-config: '{"model":"Inferact/Kimi-K3-DSpark","num_speculative_tokens":7,"method":"dspark","attention_backend":"FLASHINFER_MLA","draft_sample_method":"probabilistic","rejection_sample_method":"block"}'
speculative-config: '{"model":"Inferact/Kimi-K3-DSpark","num_speculative_tokens":7,"method":"dspark","attention_backend":"TOKENSPEED_MLA","draft_sample_method":"probabilistic","rejection_sample_method":"block"}'

sbatch_directives:
segment: "1"
Expand All @@ -93,12 +103,12 @@ srun_options:

benchmark:
type: custom
aiperf_server_metrics: true
command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh
env:
INFMAX_CONTAINER_WORKSPACE: "/infmax-workspace"
AIPERF_TRACE_IDLE_GAP_CAP_SECONDS: "300"
AIPERF_LIVE_FAILED_REQUEST_THRESHOLD: "0.25"
AIPERF_SERVER_METRICS_URLS: "http://localhost:8000/metrics"
AIPERF_REQUIRED_SERVER_METRIC_PREFIX: "vllm:"
RESULT_DIR: "/logs/agentic"
PORT: "8000"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ name: "kimik3-vllm-agg-b200-tp8dp2-simple-offload-dspark-agentic"
# https://recipes.vllm.ai/moonshotai/Kimi-K3?hardware=b200&nodes=2&strategy=multi_node_dep
model:
path: "kimik3"
container: "vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21"
container: "vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-5894fdf"
precision: "fp4"

identity:
model:
repo: "moonshotai/Kimi-K3"
container:
image: "vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21"
image: "vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-5894fdf"

dynamo:
install: false
Expand Down Expand Up @@ -50,6 +50,9 @@ backend:
VLLM_ENGINE_READY_TIMEOUT_S: "3600"
VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS: "1800"
VLLM_USE_V2_MODEL_RUNNER: "1"
VLLM_USE_DIRECT_DCP_A2A: "1"
VLLM_USE_DIRECT_DCP_Q_GATHER: "1"
VLLM_USE_DIRECT_DCP_KV_GATHER: "1"
VLLM_USE_RUST_FRONTEND: "1"
VLLM_SERVER_DEV_MODE: "1"
VLLM_LOG_STATS_INTERVAL: "1"
Expand All @@ -65,6 +68,8 @@ backend:
served-model-name: "moonshotai/Kimi-K3"
tensor-parallel-size: 8
data-parallel-size: 2
decode-context-parallel-size: 8
dcp-comm-backend: a2a
enable-expert-parallel: true
trust-remote-code: true
load-format: fastsafetensors
Expand All @@ -74,18 +79,23 @@ backend:
no-enable-flashinfer-autotune: true
max-model-len: 1048576
kv-cache-dtype: fp8
attention-config: '{"use_prefill_query_quantization":true,"mla_prefill_backend":"flashinfer"}'
attention-backend: TOKENSPEED_MLA
attention-config: '{"mla_prefill_backend":"TRTLLM_RAGGED","use_prefill_query_quantization":true}'
enable-prefix-caching: true
enable-prompt-tokens-details: true
enable-auto-tool-choice: true
tool-call-parser: kimi_k3
reasoning-parser: kimi_k3
language-model-only: true
max-num-seqs: 8
max-num-batched-tokens: 8192
max-num-seqs: 96
max-num-batched-tokens: 16384
prefix-match-unit: 128
stream-interval: 10
enable-cumem-allocator: true
compilation-config: '{"cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,312,316,320,324,328,332,336,340,344,348,352,356,360,364,368,372,376,380,384,512,1024,2048,4096,8192]}'
# Throughput runs use the committed K7 golden synthetic AL 3.84. Eval
# selects the paired real-verification recipe instead.
speculative-config: '{"model":"Inferact/Kimi-K3-DSpark","num_speculative_tokens":7,"method":"dspark","attention_backend":"FLASHINFER_MLA","draft_sample_method":"probabilistic","rejection_sample_method":"synthetic","synthetic_acceptance_length":3.84}'
speculative-config: '{"model":"Inferact/Kimi-K3-DSpark","num_speculative_tokens":3,"method":"dspark","attention_backend":"TOKENSPEED_MLA","draft_sample_method":"probabilistic","rejection_sample_method":"synthetic","synthetic_acceptance_length":3.0}'
kv-transfer-config: '{"kv_connector":"SimpleCPUOffloadConnector","kv_role":"kv_both","kv_connector_extra_config":{"cpu_bytes_to_use_per_rank":236223201280,"lazy_offload":false}}'

sbatch_directives:
Expand All @@ -96,12 +106,12 @@ srun_options:

benchmark:
type: custom
aiperf_server_metrics: true
command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh
env:
INFMAX_CONTAINER_WORKSPACE: "/infmax-workspace"
AIPERF_TRACE_IDLE_GAP_CAP_SECONDS: "300"
AIPERF_LIVE_FAILED_REQUEST_THRESHOLD: "0.25"
AIPERF_SERVER_METRICS_URLS: "http://localhost:8000/metrics"
AIPERF_REQUIRED_SERVER_METRIC_PREFIX: "vllm:"
RESULT_DIR: "/logs/agentic"
PORT: "8000"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ name: "kimik3-vllm-agg-b200-tp8dp2-simple-offload-dspark-eval-agentic"
# acceptance changes from synthetic golden AL to target-verified block.
model:
path: "kimik3"
container: "vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21"
container: "vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-5894fdf"
precision: "fp4"

identity:
model:
repo: "moonshotai/Kimi-K3"
container:
image: "vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21"
image: "vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-5894fdf"

dynamo:
install: false
Expand Down Expand Up @@ -49,6 +49,9 @@ backend:
VLLM_ENGINE_READY_TIMEOUT_S: "3600"
VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS: "1800"
VLLM_USE_V2_MODEL_RUNNER: "1"
VLLM_USE_DIRECT_DCP_A2A: "1"
VLLM_USE_DIRECT_DCP_Q_GATHER: "1"
VLLM_USE_DIRECT_DCP_KV_GATHER: "1"
VLLM_USE_RUST_FRONTEND: "1"
VLLM_SERVER_DEV_MODE: "1"
VLLM_LOG_STATS_INTERVAL: "1"
Expand All @@ -64,6 +67,8 @@ backend:
served-model-name: "moonshotai/Kimi-K3"
tensor-parallel-size: 8
data-parallel-size: 2
decode-context-parallel-size: 8
dcp-comm-backend: a2a
enable-expert-parallel: true
trust-remote-code: true
load-format: fastsafetensors
Expand All @@ -73,17 +78,22 @@ backend:
no-enable-flashinfer-autotune: true
max-model-len: 1048576
kv-cache-dtype: fp8
attention-config: '{"use_prefill_query_quantization":true,"mla_prefill_backend":"flashinfer"}'
attention-backend: TOKENSPEED_MLA
attention-config: '{"mla_prefill_backend":"TRTLLM_RAGGED","use_prefill_query_quantization":true}'
enable-prefix-caching: true
enable-prompt-tokens-details: true
enable-auto-tool-choice: true
tool-call-parser: kimi_k3
reasoning-parser: kimi_k3
language-model-only: true
max-num-seqs: 8
max-num-batched-tokens: 8192
max-num-seqs: 96
max-num-batched-tokens: 16384
prefix-match-unit: 128
stream-interval: 10
enable-cumem-allocator: true
compilation-config: '{"cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,312,316,320,324,328,332,336,340,344,348,352,356,360,364,368,372,376,380,384,512,1024,2048,4096,8192]}'
# Eval must verify every draft against real target logits.
speculative-config: '{"model":"Inferact/Kimi-K3-DSpark","num_speculative_tokens":7,"method":"dspark","attention_backend":"FLASHINFER_MLA","draft_sample_method":"probabilistic","rejection_sample_method":"block"}'
speculative-config: '{"model":"Inferact/Kimi-K3-DSpark","num_speculative_tokens":3,"method":"dspark","attention_backend":"TOKENSPEED_MLA","draft_sample_method":"probabilistic","rejection_sample_method":"block"}'
kv-transfer-config: '{"kv_connector":"SimpleCPUOffloadConnector","kv_role":"kv_both","kv_connector_extra_config":{"cpu_bytes_to_use_per_rank":236223201280,"lazy_offload":false}}'

sbatch_directives:
Expand All @@ -94,12 +104,12 @@ srun_options:

benchmark:
type: custom
aiperf_server_metrics: true
command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh
env:
INFMAX_CONTAINER_WORKSPACE: "/infmax-workspace"
AIPERF_TRACE_IDLE_GAP_CAP_SECONDS: "300"
AIPERF_LIVE_FAILED_REQUEST_THRESHOLD: "0.25"
AIPERF_SERVER_METRICS_URLS: "http://localhost:8000/metrics"
AIPERF_REQUIRED_SERVER_METRIC_PREFIX: "vllm:"
RESULT_DIR: "/logs/agentic"
PORT: "8000"
Expand Down
44 changes: 6 additions & 38 deletions configs/nvidia-master.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8039,7 +8039,7 @@ kimik3-fp4-b200-dynamo-vllm-agentic:
# Expert parallel spans all 16 ranks, so the 896 experts remain EP16 while
# FlashInfer fused collectives stay inside each B200 NVSwitch domain.
kimik3-fp4-b200-dynamo-vllm-agentic-dspark:
image: vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21
image: vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-5894fdf
model: moonshotai/Kimi-K3
model-prefix: kimik3
runner: cluster:b200-dgxc
Expand All @@ -8051,41 +8051,9 @@ kimik3-fp4-b200-dynamo-vllm-agentic-dspark:
agentic-coding:
- dram-utilization: 0.63
search-space:
# Low-latency and high-interactivity points.
- spec-decoding: mtp
conc-list: [1, 2, 4]
prefill:
num-worker: 1
tp: 8
ep: 16
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/kimi-k3/agentic/agg-b200-tp8dp2-latency-dspark-agentic.yaml"
- "EVAL_CONFIG_FILE=recipes/vllm/kimi-k3/agentic/agg-b200-tp8dp2-latency-dspark-eval-agentic.yaml"
decode:
num-worker: 0
tp: 8
ep: 16
dp-attn: true
# Balanced medium-concurrency points.
# Retained resident latency curve from the completed broad fast sweep.
- spec-decoding: mtp
conc-list: [8, 12, 16]
prefill:
num-worker: 1
tp: 8
ep: 16
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/vllm/kimi-k3/agentic/agg-b200-tp8dp2-latency-dspark-agentic.yaml"
- "EVAL_CONFIG_FILE=recipes/vllm/kimi-k3/agentic/agg-b200-tp8dp2-latency-dspark-eval-agentic.yaml"
decode:
num-worker: 0
tp: 8
ep: 16
dp-attn: true
# GPU-resident throughput points around the prior c16-c32 KV cliff.
- spec-decoding: mtp
conc-list: [20, 24, 28, 32]
conc-list: [1, 2, 4, 8]
prefill:
num-worker: 1
tp: 8
Expand All @@ -8099,12 +8067,12 @@ kimik3-fp4-b200-dynamo-vllm-agentic-dspark:
tp: 8
ep: 16
dp-attn: true
# CPU KV-offload crossover and capacity points. Keep the resident points
# above so the same concurrency can be compared with one variable changed.
# Retain the measured SimpleCPUOffloadConnector knee, immediate boundary,
# and high-capacity controls from the completed broad fast sweep.
- spec-decoding: mtp
kv-offloading: dram
kv-offload-backend: { name: vllm-simple, version: "13c59a3" }
conc-list: [8, 12, 16, 20, 24, 28, 32, 48, 64]
conc-list: [16, 24, 32, 40, 48]
prefill:
num-worker: 1
tp: 8
Expand Down
17 changes: 17 additions & 0 deletions perf-changelog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5818,3 +5818,20 @@
description:
- "Extend the SimpleCPUOffloadConnector grid to c8/c12/c16/c20/c24/c28/c32/c48/c64 to locate its crossover against the resident curve"
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2475

- config-keys:
- kimik3-fp4-b200-dynamo-vllm-agentic-dspark
description:
- "Fix AIPerf server-metrics configuration for the pinned Kimi K3 srt-slurm renderer by passing the aggregate vLLM endpoint through the supported custom-benchmark environment contract"
- "After the complete 19-point AgentX-fast search, retain resident c2/c4/c8/c12 and SimpleCPUOffloadConnector c8/c12/c16/c28/c32/c48 for the full-duration latency curve, knee, cliff boundary, and high-capacity controls"
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2569

- config-keys:
- kimik3-fp4-b200-dynamo-vllm-agentic-dspark
scenario-type:
- agentic-coding
description:
- "Add decode context parallelism 8 within each TP8 replica, with the a2a backend and the direct DCP kernels."
- "Serve on TokenspeedMLA with TRTLLM_RAGGED prefill, a 16384 prefill token budget, prefix-match-unit 128 and an explicit FULL_AND_PIECEWISE capture list sized to each arm."
- "Draft with DSpark level 7 at concurrency 8 and below and level 3 above it, each at its committed golden acceptance length, and move to the image carrying the Kimi K3 DCP, DSpark-under-DCP and Mooncake changes."
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2618