Repository navigation
[KimiK3][AgentX]: GB200 KimiK3 Day 0 support #2354
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
Closed
Closed
Changes from 4 commits
Commits
Show all changes
27 commits
Select commit
Hold shift + click to select a range
245dcda
feat(agentx): add Kimi K3 GB200 day-0 support
cquil11 3e2b960
chore: link GB200 Kimi K3 changelog
cquil11 4aa6b8e
Merge origin/main into GB200 Kimi K3 AgentX
cquil11 18b1af1
fix(agentx): align Kimi K3 DEP metadata
cquil11 acfd9f3
perf(gb200): load Kimi K3 from local NVMe
cquil11 fd088cd
chore: simplify Kimi K3 performance config
cquil11 6c335b5
perf(gb200): size Kimi K3 AgentX sweep from HBM
cquil11 dc90e33
fix(gb200): drop unsupported Kimi K3 worker parsers
cquil11 d3b3f05
fix(gb200): let srt-slurm select collective interfaces
cquil11 f513599
fix(gb200): launch Kimi K3 TP2 DP8 per node
cquil11 bc21aac
fix(gb200): rebalance Kimi K3 EP16 for HBM
cquil11 819af41
fix(gb200): use native srt-slurm TPDP support
cquil11 458d6f6
docs(perf): correct Kimi K3 throughput topology
cquil11 6d10fbc
fix(gb200): use official Kimi K3 Dynamo runtime
cquil11 4158041
fix(gb200): align Kimi K3 runtime metadata
cquil11 a32ee0b
fix(gb200): reserve Kimi K3 prefill workspace
cquil11 86f4e70
fix(config): report Kimi K3 TP16 as EP16
cquil11 ed0f177
merge: sync main into Kimi K3 GB200 support
cquil11 1f052d2
fix(gb200): stage srt AgentX aggregates
cquil11 64de559
fix(agentx): burst Kimi K3 saturation starts
cquil11 ff5fb06
refactor(kimik3): depend on shared phase starts
cquil11 2ddb6d5
merge: sync main into Kimi K3 GB200 support
cquil11 fc99700
Merge origin/main into agent/kimik3-gb200-agentx
cquil11 235aa5e
fix(agentx): extend Kimi K3 DEP warmup drain
cquil11 26e6697
merge: sync main into Kimi K3 GB200 support
cquil11 403e0c1
merge: sync latest main into Kimi K3 GB200 support
cquil11 1187a30
chore(runners): register fourth GB200 worker
cquil11 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
122 changes: 122 additions & 0 deletions
122
...multi_node/srt-slurm-recipes/vllm/kimi-k3/agentic/agg-gb200-dep16-throughput-agentic.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,122 @@ | ||
| name: "kimi-k3-vllm-agg-gb200-dep16-throughput-agentic" | ||
|
|
||
| # Day-0 GB200 translation of the official throughput-oriented multi_node_dep | ||
| # profile. The 16-way data/expert-parallel worker spans four four-GPU GB200 | ||
| # nodes, with four local DP ranks on each node. | ||
| # https://recipes.vllm.ai/moonshotai/Kimi-K3?hardware=gb200&nodes=4&strategy=multi_node_dep | ||
|
|
||
| model: | ||
| path: "kimi-k3" | ||
| container: "vllm/vllm-openai:kimi-k3" | ||
| precision: "fp4" | ||
|
|
||
| identity: | ||
| model: | ||
| repo: "moonshotai/Kimi-K3" | ||
| container: | ||
| image: "vllm/vllm-openai:kimi-k3" | ||
| frameworks: | ||
| dynamo: "1.3.0.dev20260618" | ||
|
|
||
| dynamo: | ||
| install: true | ||
| wheel: "1.3.0.dev20260618" | ||
|
|
||
| environment: | ||
| DYNAMO_WHEEL_DIRS: "/srtctl-wheels" | ||
| ETCD_LEASE_TTL: "7200" | ||
|
|
||
| setup_script: vllm-container-deps.sh | ||
|
|
||
| slurm: | ||
| time_limit: "8:00:00" | ||
|
|
||
| health_check: | ||
| max_attempts: 2160 | ||
| interval_seconds: 10 | ||
|
|
||
| resources: | ||
| gpu_type: "gb200" | ||
| gpus_per_node: 4 | ||
| agg_nodes: 4 | ||
| agg_workers: 1 | ||
| gpus_per_agg: 16 | ||
|
|
||
| infra: | ||
| etcd_nats_dedicated_node: false | ||
| nats_max_payload_mb: 32 | ||
|
|
||
| frontend: | ||
| type: dynamo | ||
| enable_multiple_frontends: false | ||
| args: | ||
| router-mode: "kv" | ||
| router-reset-states: true | ||
|
|
||
| backend: | ||
| type: vllm | ||
| connector: null | ||
| aggregated_environment: | ||
| HF_HUB_CACHE: "/hf_hub_cache" | ||
| HUGGINGFACE_HUB_CACHE: "/hf_hub_cache" | ||
| TRANSFORMERS_CACHE: "/hf_hub_cache" | ||
| GLOO_SOCKET_IFNAME: "$IFACE_NAME" | ||
| NCCL_SOCKET_IFNAME: "$IFACE_NAME" | ||
| VLLM_ENGINE_READY_TIMEOUT_S: "7200" | ||
| VLLM_RPC_TIMEOUT: "600000" | ||
| VLLM_LOG_STATS_INTERVAL: "1" | ||
| VLLM_USE_V2_MODEL_RUNNER: "1" | ||
| VLLM_USE_RUST_FRONTEND: "1" | ||
| VLLM_ENABLE_K3_LATENT_MOE_TAIL_FUSION: "1" | ||
| NCCL_CUMEM_ENABLE: "1" | ||
| NCCL_MNNVL_ENABLE: "1" | ||
| NCCL_NVLS_ENABLE: "1" | ||
| UCX_MEMTYPE_CACHE: "n" | ||
| UCX_NET_DEVICES: "mlx5_0:1,mlx5_1:1,mlx5_2:1,mlx5_3:1" | ||
| UCX_TLS: "rc,cuda_copy" | ||
| NCCL_IB_HCA: "mlx5_0,mlx5_1,mlx5_2,mlx5_3" | ||
| NCCL_P2P_LEVEL: "NVL" | ||
| DG_JIT_CACHE_DIR: "/tmp/dg-cache-kimi-k3-gb200-dep16-{job_id}" | ||
| vllm_config: | ||
| aggregated: | ||
| served-model-name: "moonshotai/Kimi-K3" | ||
| tensor-parallel-size: 1 | ||
| pipeline-parallel-size: 1 | ||
| data-parallel-size: 16 | ||
| data-parallel-rpc-port: 13345 | ||
| enable-expert-parallel: true | ||
| trust-remote-code: true | ||
| load-format: "fastsafetensors" | ||
| moe-backend: "deep_gemm_mega_moe" | ||
| all2all-backend: "flashinfer_nvlink_one_sided" | ||
| gpu-memory-utilization: 0.95 | ||
| max-model-len: 1048576 | ||
| max-num-seqs: 128 | ||
| max-num-batched-tokens: 16384 | ||
| language-model-only: true | ||
| enable-auto-tool-choice: true | ||
| tool-call-parser: "kimi_k3" | ||
| reasoning-parser: "kimi_k3" | ||
| no-enable-flashinfer-autotune: true | ||
|
|
||
| sbatch_directives: | ||
| cpus-per-task: "144" | ||
| mem: "0" | ||
|
|
||
| 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" | ||
| RESULT_DIR: "/logs/agentic" | ||
| PORT: "8000" | ||
| IS_MULTINODE: "true" | ||
| AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: "0" | ||
| AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: "14400" | ||
| AIPERF_DATASET_MMAP_CACHE_DIR: "/aiperf_mmap_cache" | ||
| HF_HUB_CACHE: "/hf_hub_cache" | ||
| WEKA_LOADER_OVERRIDE: "semianalysis_cc_traces_weka_062126" | ||
121 changes: 121 additions & 0 deletions
121
...ks/multi_node/srt-slurm-recipes/vllm/kimi-k3/agentic/agg-gb200-tep8-balanced-agentic.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,121 @@ | ||
| name: "kimi-k3-vllm-agg-gb200-tep8-balanced-agentic" | ||
|
|
||
| # Day-0 GB200 translation of the official balanced multi_node_tep profile. | ||
| # Dense layers use TP8 while the MoE experts are sharded across the same eight | ||
| # GPUs on two four-GPU GB200 nodes. | ||
| # https://recipes.vllm.ai/moonshotai/Kimi-K3?hardware=gb200&nodes=2&strategy=multi_node_tep | ||
|
|
||
| model: | ||
| path: "kimi-k3" | ||
| container: "vllm/vllm-openai:kimi-k3" | ||
| precision: "fp4" | ||
|
|
||
| identity: | ||
| model: | ||
| repo: "moonshotai/Kimi-K3" | ||
| container: | ||
| image: "vllm/vllm-openai:kimi-k3" | ||
| frameworks: | ||
| dynamo: "1.3.0.dev20260618" | ||
|
|
||
| dynamo: | ||
| install: true | ||
| wheel: "1.3.0.dev20260618" | ||
|
|
||
| environment: | ||
| DYNAMO_WHEEL_DIRS: "/srtctl-wheels" | ||
| ETCD_LEASE_TTL: "7200" | ||
|
|
||
| setup_script: vllm-container-deps.sh | ||
|
|
||
| slurm: | ||
| time_limit: "8:00:00" | ||
|
|
||
| health_check: | ||
| max_attempts: 2160 | ||
| interval_seconds: 10 | ||
|
|
||
| resources: | ||
| gpu_type: "gb200" | ||
| gpus_per_node: 4 | ||
| agg_nodes: 2 | ||
| agg_workers: 1 | ||
| gpus_per_agg: 8 | ||
|
|
||
| infra: | ||
| etcd_nats_dedicated_node: false | ||
| nats_max_payload_mb: 32 | ||
|
|
||
| frontend: | ||
| type: dynamo | ||
| enable_multiple_frontends: false | ||
| args: | ||
| router-mode: "kv" | ||
| router-reset-states: true | ||
|
|
||
| backend: | ||
| type: vllm | ||
| connector: null | ||
| aggregated_environment: | ||
| HF_HUB_CACHE: "/hf_hub_cache" | ||
| HUGGINGFACE_HUB_CACHE: "/hf_hub_cache" | ||
| TRANSFORMERS_CACHE: "/hf_hub_cache" | ||
| GLOO_SOCKET_IFNAME: "$IFACE_NAME" | ||
| NCCL_SOCKET_IFNAME: "$IFACE_NAME" | ||
| VLLM_ENGINE_READY_TIMEOUT_S: "7200" | ||
| VLLM_RPC_TIMEOUT: "600000" | ||
| VLLM_LOG_STATS_INTERVAL: "1" | ||
| VLLM_USE_V2_MODEL_RUNNER: "1" | ||
| VLLM_USE_RUST_FRONTEND: "1" | ||
| VLLM_ENABLE_K3_LATENT_MOE_TAIL_FUSION: "1" | ||
| NCCL_CUMEM_ENABLE: "1" | ||
| NCCL_MNNVL_ENABLE: "1" | ||
| NCCL_NVLS_ENABLE: "1" | ||
| UCX_MEMTYPE_CACHE: "n" | ||
| UCX_NET_DEVICES: "mlx5_0:1,mlx5_1:1,mlx5_2:1,mlx5_3:1" | ||
| UCX_TLS: "rc,cuda_copy" | ||
| NCCL_IB_HCA: "mlx5_0,mlx5_1,mlx5_2,mlx5_3" | ||
| NCCL_P2P_LEVEL: "NVL" | ||
| DG_JIT_CACHE_DIR: "/tmp/dg-cache-kimi-k3-gb200-tep8-{job_id}" | ||
| vllm_config: | ||
| aggregated: | ||
| served-model-name: "moonshotai/Kimi-K3" | ||
| tensor-parallel-size: 8 | ||
| pipeline-parallel-size: 1 | ||
| enable-expert-parallel: true | ||
| trust-remote-code: true | ||
| load-format: "fastsafetensors" | ||
| moe-backend: "flashinfer_trtllm" | ||
| all2all-backend: "flashinfer_nvlink_one_sided" | ||
| gpu-memory-utilization: 0.95 | ||
| max-model-len: 1048576 | ||
| max-num-seqs: 32 | ||
| max-num-batched-tokens: 8192 | ||
| language-model-only: true | ||
| enable-auto-tool-choice: true | ||
| tool-call-parser: "kimi_k3" | ||
| reasoning-parser: "kimi_k3" | ||
| no-enable-flashinfer-autotune: true | ||
| compilation-config: '{"pass_config":{"fuse_allreduce_rms":false}}' | ||
|
|
||
| sbatch_directives: | ||
| cpus-per-task: "144" | ||
| mem: "0" | ||
|
|
||
| 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" | ||
| RESULT_DIR: "/logs/agentic" | ||
| PORT: "8000" | ||
| IS_MULTINODE: "true" | ||
| AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: "0" | ||
| AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: "14400" | ||
| AIPERF_DATASET_MMAP_CACHE_DIR: "/aiperf_mmap_cache" | ||
| HF_HUB_CACHE: "/hf_hub_cache" | ||
| WEKA_LOADER_OVERRIDE: "semianalysis_cc_traces_weka_062126" |
119 changes: 119 additions & 0 deletions
119
...arks/multi_node/srt-slurm-recipes/vllm/kimi-k3/agentic/agg-gb200-tp8-latency-agentic.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,119 @@ | ||
| name: "kimi-k3-vllm-agg-gb200-tp8-latency-agentic" | ||
|
|
||
| # Day-0 GB200 translation of the official latency-oriented multi_node_tp | ||
| # profile. Kimi K3 requires at least eight GPUs for TP, so this aggregate | ||
| # worker spans two four-GPU GB200 nodes. | ||
| # https://recipes.vllm.ai/moonshotai/Kimi-K3?hardware=gb200&nodes=2&strategy=multi_node_tp | ||
|
|
||
| model: | ||
| path: "kimi-k3" | ||
| container: "vllm/vllm-openai:kimi-k3" | ||
| precision: "fp4" | ||
|
|
||
| identity: | ||
| model: | ||
| repo: "moonshotai/Kimi-K3" | ||
| container: | ||
| image: "vllm/vllm-openai:kimi-k3" | ||
| frameworks: | ||
| dynamo: "1.3.0.dev20260618" | ||
|
|
||
| dynamo: | ||
| install: true | ||
| wheel: "1.3.0.dev20260618" | ||
|
|
||
| environment: | ||
| DYNAMO_WHEEL_DIRS: "/srtctl-wheels" | ||
| ETCD_LEASE_TTL: "7200" | ||
|
|
||
| setup_script: vllm-container-deps.sh | ||
|
|
||
| slurm: | ||
| time_limit: "8:00:00" | ||
|
|
||
| health_check: | ||
| max_attempts: 2160 | ||
| interval_seconds: 10 | ||
|
|
||
| resources: | ||
| gpu_type: "gb200" | ||
| gpus_per_node: 4 | ||
| agg_nodes: 2 | ||
| agg_workers: 1 | ||
| gpus_per_agg: 8 | ||
|
|
||
| infra: | ||
| etcd_nats_dedicated_node: false | ||
| nats_max_payload_mb: 32 | ||
|
|
||
| frontend: | ||
| type: dynamo | ||
| enable_multiple_frontends: false | ||
| args: | ||
| router-mode: "kv" | ||
| router-reset-states: true | ||
|
|
||
| backend: | ||
| type: vllm | ||
| connector: null | ||
| aggregated_environment: | ||
| HF_HUB_CACHE: "/hf_hub_cache" | ||
| HUGGINGFACE_HUB_CACHE: "/hf_hub_cache" | ||
| TRANSFORMERS_CACHE: "/hf_hub_cache" | ||
| GLOO_SOCKET_IFNAME: "$IFACE_NAME" | ||
| NCCL_SOCKET_IFNAME: "$IFACE_NAME" | ||
| VLLM_ENGINE_READY_TIMEOUT_S: "7200" | ||
| VLLM_RPC_TIMEOUT: "600000" | ||
| VLLM_LOG_STATS_INTERVAL: "1" | ||
| VLLM_USE_V2_MODEL_RUNNER: "1" | ||
| VLLM_USE_RUST_FRONTEND: "1" | ||
| VLLM_ENABLE_K3_LATENT_MOE_TAIL_FUSION: "1" | ||
| NCCL_CUMEM_ENABLE: "1" | ||
| NCCL_MNNVL_ENABLE: "1" | ||
| NCCL_NVLS_ENABLE: "1" | ||
| UCX_MEMTYPE_CACHE: "n" | ||
| UCX_NET_DEVICES: "mlx5_0:1,mlx5_1:1,mlx5_2:1,mlx5_3:1" | ||
| UCX_TLS: "rc,cuda_copy" | ||
| NCCL_IB_HCA: "mlx5_0,mlx5_1,mlx5_2,mlx5_3" | ||
| NCCL_P2P_LEVEL: "NVL" | ||
| DG_JIT_CACHE_DIR: "/tmp/dg-cache-kimi-k3-gb200-tp8-{job_id}" | ||
| vllm_config: | ||
| aggregated: | ||
| served-model-name: "moonshotai/Kimi-K3" | ||
| tensor-parallel-size: 8 | ||
| pipeline-parallel-size: 1 | ||
| trust-remote-code: true | ||
| load-format: "fastsafetensors" | ||
| moe-backend: "flashinfer_trtllm" | ||
| gpu-memory-utilization: 0.95 | ||
| max-model-len: 1048576 | ||
| max-num-seqs: 8 | ||
| max-num-batched-tokens: 8192 | ||
| language-model-only: true | ||
| enable-auto-tool-choice: true | ||
| tool-call-parser: "kimi_k3" | ||
| reasoning-parser: "kimi_k3" | ||
| no-enable-flashinfer-autotune: true | ||
| compilation-config: '{"pass_config":{"fuse_allreduce_rms":false}}' | ||
|
|
||
| sbatch_directives: | ||
| cpus-per-task: "144" | ||
| mem: "0" | ||
|
|
||
| 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" | ||
| RESULT_DIR: "/logs/agentic" | ||
| PORT: "8000" | ||
| IS_MULTINODE: "true" | ||
| AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: "0" | ||
| AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: "14400" | ||
| AIPERF_DATASET_MMAP_CACHE_DIR: "/aiperf_mmap_cache" | ||
| HF_HUB_CACHE: "/hf_hub_cache" | ||
| WEKA_LOADER_OVERRIDE: "semianalysis_cc_traces_weka_062126" |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.