Kimi-K3.1-Pro
Serve Kimi-K3.1-Pro with Dynamo using vLLM or SGLang.
Serve moonshotai/Kimi-K3.1-Pro with NVIDIA Dynamo using vLLM or SGLang. Pick your framework, GPU, and serving topology; deployment commands update to match. SGLang targets are experimental, text-only, and functional-only; no performance claims are made.
Choose your deployment target
Prerequisites
- A Kubernetes cluster with the Dynamo platform installed and 8 GB300 GPUs available. See the Kubernetes Deployment Guide.
- A Kubernetes cluster with the Dynamo platform installed and 24 GB300 GPUs available. See the Kubernetes Deployment Guide.
- A Kubernetes cluster with the Dynamo platform installed and 8 GB300 GPUs available. See the Kubernetes Deployment Guide.
- A Kubernetes cluster with the Dynamo platform installed and 16 GB300 GPUs available. See the Kubernetes Deployment Guide.
- A Kubernetes cluster with the Dynamo platform installed and 16 B200 GPUs available. See the Kubernetes Deployment Guide.
- A Kubernetes cluster with the Dynamo platform installed and 16 VR200 GPUs available. See the Kubernetes Deployment Guide.
- A Kubernetes cluster with the Dynamo platform installed and 24 VR200 GPUs available. See the Kubernetes Deployment Guide.
- A Hugging Face token with access to
moonshotai/Kimi-K3.1-Pro. - Access to the runtime images referenced by the selected manifest.
- The NVIDIA DRA driver with ComputeDomain support for multi-node NVLink serving. The hardware overlays include a ComputeDomain and worker channel claims.
Create the namespace and token secret:
Review storage paths, node placement, registry credentials, and resource claims before applying the selected manifest.
Deploy
Create the shared model cache and download the main checkpoint:
Edit storageClassName in recipes/kimi-k3.1-pro/model-cache/model-cache.yaml to a ReadWriteMany class on your cluster before you apply it.
The weights are stored at /shared-model-cache/moonshotai/Kimi-K3.1-Pro on the PVC. The download Job downloads only the main model.
For B200, also stage the Inferact/Kimi-K3-DSpark draft checkpoint at the path in the worker’s SPECULATIVE_CONFIG on the same PVC, or update that setting to your staged checkpoint path.
For VR200, also stage the Inferact/Kimi-K3-DSpark draft checkpoint at /shared-model-cache/Inferact/Kimi-K3-DSpark on the same PVC. Both topologies mount shared-model-cache for the frontend and all workers; no node-local weight staging is required.
Deploy the selected DynamoGraphDeployment (DGD):
For image and video input, apply the multimodal overlay instead:
For image and video input, apply the multimodal overlay instead:
Each target also has a generic Kustomize overlay for customization. It inherits the base model paths and hardware requirements. B200 and VR200 targets enable DSpark; separate *-synthetic-al overlays change draft acceptance for benchmarking.
Smoke Test
The deploy command sets DGD to the selected resource name. Wait for readiness and forward the frontend port:
Send a chat completion with the served model name moonshotai/Kimi-K3.1-Pro:
Benchmark
Use perf.yaml to run AIPerf 0.13.0 against the deployment. It runs aiperf profile with the chat endpoint type and streaming on the AgentX agentic trace (semianalysis_cc_traces_weka_062126), with an agentic warmup and a 1200 s profiling phase. The tokenizer is read from the model path on the shared-model-cache PVC.
The performance results use text-only AgentX traffic. Apply the selected benchmark variant before running AIPerf; normal serving commands above use natural acceptance.
Set these values in the Job env section for your target:
ENDPOINT: the frontend Service of the DynamoGraphDeployment,${DGD}-frontend:8000(substitute the selected deployment name).CONCURRENCY: GB300 uses 32 for vLLM aggregated and 48 for disaggregated. Reported VR200 points use 180 for aggregated and 174 for disaggregated; B200 uses 48.
The benchmark Job uses the same shared-model-cache PVC and tokenizer files as the deployment.
Results are written to /shared-model-cache/perf/<epoch>_<job-name>/. Restart the workers between independent runs to reset KV-cache and routing state.
Optimization Targets
The AgentX benchmark targets use the following interactivity goals:
Performance Results
All results below measure text-only traffic; the selected target is highlighted. B200 and VR200 use synthetic draft acceptance (AL 3.84); GB300 has speculative decoding disabled.
Compare All Targets
GPU counts below describe the checked-in manifests. P counts prefill workers; D counts decode workers.
Notes
- SGLang targets are experimental, text-only, and functional-only. No SGLang performance claims are made. Use the vLLM multimodal overlays for image and video input.
The SGLang frontends run the Dynamo chat processor (
--dyn-chat-processor dynamo,DYN_SGL_FRONTEND_DECODING=true). With the SGLang chat processor, strictjson_schemaoutput with thinking enabled was returned inreasoning_content; if you switch processors, disable thinking forjson_schemarequests ("chat_template_kwargs": {"thinking": false}). - Synthetic draft acceptance is for benchmarking. Use the natural-acceptance variants for normal serving.
- Disaggregated performance depends on your fabric; RDMA tuning is cluster-specific.
Source
-
Deployment assets: Kimi-K3.1-Pro recipes
-
Setup assets: model-cache.yaml and model-download.yaml
-
Benchmark manifest: perf.yaml
-
B200 aggregated: deployment manifest
-
VR200 aggregated: deployment manifest
-
VR200 disaggregated: deployment manifest