Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 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
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
2 changes: 1 addition & 1 deletion .github/workflows/benchmark-multinode-tmpl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ jobs:
if: ${{ always() && (env.RUN_EVAL == 'true' || inputs.eval-only) }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: eval_${{ env.EXP_NAME }}_${{ env.RESULT_FILENAME }}
name: eval_${{ env.RESULT_FILENAME }}
path: |
meta_env.json
results*.json
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: "kimik3-vllm-agg-b200-tp8dp2-latency-dspark-agentic"

# Two-node DEP profile: TP8 stays within each NVSwitch node, DP2 replicates
# attention/dense across nodes, and EP16 shards the 896 experts across all GPUs.
# This keeps FlashInfer fused collectives node-local while using shipped vLLM.
# 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"
precision: "fp4"

identity:
model:
repo: "moonshotai/Kimi-K3"
container:
image: "vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21"

dynamo:
install: false

slurm:
time_limit: "8:00:00"

health_check:
interval_seconds: 10
max_attempts: 720

resources:
gpu_type: "b200"
gpus_per_node: 8
agg_nodes: 2
agg_workers: 1
gpus_per_agg: 16

infra:
etcd_nats_dedicated_node: false
nats_max_payload_mb: 32

frontend:
type: vllm
enable_multiple_frontends: false

backend:
type: vllm
connector: null
aggregated_environment:
# TP8 collectives stay within each B200 NVSwitch domain.
VLLM_ENABLE_K3_LATENT_MOE_TAIL_FUSION: "1"
VLLM_ALLREDUCE_USE_FLASHINFER: "1"
VLLM_ENGINE_READY_TIMEOUT_S: "3600"
VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS: "1800"
VLLM_USE_V2_MODEL_RUNNER: "1"
VLLM_USE_RUST_FRONTEND: "1"
VLLM_SERVER_DEV_MODE: "1"
VLLM_LOG_STATS_INTERVAL: "1"
NCCL_CUMEM_ENABLE: "1"
TILELANG_CLEANUP_TEMP_FILES: "1"
UCX_MEMTYPE_CACHE: "n"
UCX_MEMTYPE_REG_WHOLE: "n"
UCX_NET_DEVICES: "mlx5_0:1,mlx5_1:1,mlx5_2:1,mlx5_3:1,mlx5_4:1,mlx5_5:1,mlx5_10:1,mlx5_11:1"
HF_HUB_CACHE: "/hf_hub_cache"
HUGGINGFACE_HUB_CACHE: "/hf_hub_cache"
vllm_config:
aggregated:
served-model-name: "moonshotai/Kimi-K3"
tensor-parallel-size: 8
data-parallel-size: 2
enable-expert-parallel: true
trust-remote-code: true
load-format: fastsafetensors
moe-backend: auto
# Keep headroom for the first FlashInfer MXFP4 MoE workspace.
gpu-memory-utilization: 0.90
no-enable-flashinfer-autotune: true
max-model-len: 1048576
kv-cache-dtype: fp8
attention-config: '{"use_prefill_query_quantization":true,"mla_prefill_backend":"flashinfer"}'
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
# 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}'

sbatch_directives:
segment: "1"

srun_options:
container-remap-root: ""

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_REQUIRED_SERVER_METRIC_PREFIX: "vllm:"
RESULT_DIR: "/logs/agentic"
PORT: "8000"
IS_MULTINODE: "true"
AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: "0"
AIPERF_DATASET_MMAP_CACHE_DIR: "/aiperf_mmap_cache"
HF_HUB_CACHE: "/hf_hub_cache"
WEKA_LOADER_OVERRIDE: "semianalysis_cc_traces_weka_062126"
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
name: "kimik3-vllm-agg-b200-tp8dp2-latency-dspark-eval-agentic"

# Real-verification eval counterpart to the B200 DEP throughput recipe.
# It keeps TP8/DP2/EP16 and target settings unchanged; only DSpark acceptance
# changes from synthetic golden AL to target-verified block.
model:
path: "kimik3"
container: "vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21"
precision: "fp4"

identity:
model:
repo: "moonshotai/Kimi-K3"
container:
image: "vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21"

dynamo:
install: false

slurm:
time_limit: "8:00:00"

health_check:
interval_seconds: 10
max_attempts: 720

resources:
gpu_type: "b200"
gpus_per_node: 8
agg_nodes: 2
agg_workers: 1
gpus_per_agg: 16

infra:
etcd_nats_dedicated_node: false
nats_max_payload_mb: 32

frontend:
type: vllm
enable_multiple_frontends: false

backend:
type: vllm
connector: null
aggregated_environment:
# TP8 collectives stay within each B200 NVSwitch domain.
VLLM_ENABLE_K3_LATENT_MOE_TAIL_FUSION: "1"
VLLM_ALLREDUCE_USE_FLASHINFER: "1"
VLLM_ENGINE_READY_TIMEOUT_S: "3600"
VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS: "1800"
VLLM_USE_V2_MODEL_RUNNER: "1"
VLLM_USE_RUST_FRONTEND: "1"
VLLM_SERVER_DEV_MODE: "1"
VLLM_LOG_STATS_INTERVAL: "1"
NCCL_CUMEM_ENABLE: "1"
TILELANG_CLEANUP_TEMP_FILES: "1"
UCX_MEMTYPE_CACHE: "n"
UCX_MEMTYPE_REG_WHOLE: "n"
UCX_NET_DEVICES: "mlx5_0:1,mlx5_1:1,mlx5_2:1,mlx5_3:1,mlx5_4:1,mlx5_5:1,mlx5_10:1,mlx5_11:1"
HF_HUB_CACHE: "/hf_hub_cache"
HUGGINGFACE_HUB_CACHE: "/hf_hub_cache"
vllm_config:
aggregated:
served-model-name: "moonshotai/Kimi-K3"
tensor-parallel-size: 8
data-parallel-size: 2
enable-expert-parallel: true
trust-remote-code: true
load-format: fastsafetensors
moe-backend: auto
# Keep headroom for the first FlashInfer MXFP4 MoE workspace.
gpu-memory-utilization: 0.90
no-enable-flashinfer-autotune: true
max-model-len: 1048576
kv-cache-dtype: fp8
attention-config: '{"use_prefill_query_quantization":true,"mla_prefill_backend":"flashinfer"}'
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
# 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"}'

sbatch_directives:
segment: "1"

srun_options:
container-remap-root: ""

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_REQUIRED_SERVER_METRIC_PREFIX: "vllm:"
RESULT_DIR: "/logs/agentic"
PORT: "8000"
IS_MULTINODE: "true"
AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: "0"
AIPERF_DATASET_MMAP_CACHE_DIR: "/aiperf_mmap_cache"
HF_HUB_CACHE: "/hf_hub_cache"
WEKA_LOADER_OVERRIDE: "semianalysis_cc_traces_weka_062126"
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
name: "kimik3-vllm-agg-b200-tp8dp2-simple-offload-dspark-agentic"

# Two-node DEP profile: TP8 stays within each NVSwitch node, DP2 replicates
# attention/dense across nodes, and EP16 shards the 896 experts across all GPUs.
# This keeps FlashInfer fused collectives node-local while using shipped vLLM.
# 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"
precision: "fp4"

identity:
model:
repo: "moonshotai/Kimi-K3"
container:
image: "vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21"

dynamo:
install: false

slurm:
time_limit: "8:00:00"

health_check:
interval_seconds: 10
max_attempts: 720

resources:
gpu_type: "b200"
gpus_per_node: 8
agg_nodes: 2
agg_workers: 1
gpus_per_agg: 16

infra:
etcd_nats_dedicated_node: false
nats_max_payload_mb: 32

frontend:
type: vllm
enable_multiple_frontends: false

backend:
type: vllm
connector: null
aggregated_environment:
# TP8 collectives stay within each B200 NVSwitch domain.
VLLM_ENABLE_K3_LATENT_MOE_TAIL_FUSION: "1"
VLLM_ALLREDUCE_USE_FLASHINFER: "1"
VLLM_ENGINE_READY_TIMEOUT_S: "3600"
VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS: "1800"
VLLM_USE_V2_MODEL_RUNNER: "1"
VLLM_USE_RUST_FRONTEND: "1"
VLLM_SERVER_DEV_MODE: "1"
VLLM_LOG_STATS_INTERVAL: "1"
NCCL_CUMEM_ENABLE: "1"
TILELANG_CLEANUP_TEMP_FILES: "1"
UCX_MEMTYPE_CACHE: "n"
UCX_MEMTYPE_REG_WHOLE: "n"
UCX_NET_DEVICES: "mlx5_0:1,mlx5_1:1,mlx5_2:1,mlx5_3:1,mlx5_4:1,mlx5_5:1,mlx5_10:1,mlx5_11:1"
HF_HUB_CACHE: "/hf_hub_cache"
HUGGINGFACE_HUB_CACHE: "/hf_hub_cache"
vllm_config:
aggregated:
served-model-name: "moonshotai/Kimi-K3"
tensor-parallel-size: 8
data-parallel-size: 2
enable-expert-parallel: true
trust-remote-code: true
load-format: fastsafetensors
moe-backend: auto
# Keep headroom for the first FlashInfer MXFP4 MoE workspace.
gpu-memory-utilization: 0.90
no-enable-flashinfer-autotune: true
max-model-len: 1048576
kv-cache-dtype: fp8
attention-config: '{"use_prefill_query_quantization":true,"mla_prefill_backend":"flashinfer"}'
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
# 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}'
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:
segment: "1"

srun_options:
container-remap-root: ""

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_REQUIRED_SERVER_METRIC_PREFIX: "vllm:"
RESULT_DIR: "/logs/agentic"
PORT: "8000"
IS_MULTINODE: "true"
AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: "0"
AIPERF_DATASET_MMAP_CACHE_DIR: "/aiperf_mmap_cache"
HF_HUB_CACHE: "/hf_hub_cache"
WEKA_LOADER_OVERRIDE: "semianalysis_cc_traces_weka_062126"
Loading
Loading