Kimi-K3

Serve Kimi-K3 with Dynamo on H200, GB200, or GB300.

View as Markdown

Each target below is a Dynamo + vLLM or SGLang deployment of Moonshot AI’s Kimi-K3, a multimodal MoE model serving up to 1M-token context, on H200, GB200, or GB300. Pick your framework, GPU architecture, and serving topology; every command on this page updates to match.

Choose your deployment target

Framework
GPU
Topology
Checkpoint moonshotai/Kimi-K3Precision MXFP4 experts, BF16 KVGPUs 32x H200 (1 replica)Parallelism TP8, PP4Routing KV-awareSpeculative decoding None
Status No recipe available for this combination
Checkpoint moonshotai/Kimi-K3Precision MXFP4 experts, FP8 KVGPUs 16x GB200 (1 replica)Parallelism TP16Routing KV-awareSpeculative decoding None
Status No recipe available for this combination
Checkpoint moonshotai/Kimi-K3Precision MXFP4 experts, FP8 KVGPUs 16x GB300 (1 replica)Parallelism DCP16 attention, TEP16 MoERouting KV-awareSpeculative decoding DSPARK
Checkpoint moonshotai/Kimi-K3Precision MXFP4 experts, FP8 KVGPUs 16x GB300 (1P1D)Parallelism TP8 per roleRouting KV-awareSpeculative decoding DSPARK
Checkpoint moonshotai/Kimi-K3Precision MXFP4 experts, FP8 KVGPUs 24x GB300 (3 replicas)Parallelism DCP8 attention, TP8/EP1 MoERouting Load-awareSpeculative decoding DSPARK
Checkpoint moonshotai/Kimi-K3Precision MXFP4 experts, FP8 KVGPUs 32x GB200 (2 replicas)Parallelism DCP16 attention, TEP16 MoERouting Load-awareSpeculative decoding DSPARK
Checkpoint moonshotai/Kimi-K3Precision MXFP4 experts, FP8 KVGPUs 48x GB200 (2P1D)Parallelism Prefill TEP16; decode DCP16 attention, TEP16 MoERouting Load-awareSpeculative decoding DSPARK
Status No recipe available for this combination
Status No recipe available for this combination
Checkpoint moonshotai/Kimi-K3Precision MXFP4 experts, FP8 KVGPUs 16x GB300 (1P1D)Parallelism Prefill TEP8; decode DCP8 attention, TEP8 MoERouting Load-awareSpeculative decoding DSPARK

Prerequisites

  • A Kubernetes cluster with the Dynamo platform installed and 32 H200 GPUs available. See the Kubernetes Deployment Guide.
  • A Hugging Face token with access to the checkpoint moonshotai/Kimi-K3.
  • A Kubernetes cluster with the Dynamo platform installed and 16 GB200 GPUs available. See the Kubernetes Deployment Guide.
  • The NVIDIA DRA driver with ComputeDomain support installed (required for multi-node NVLink).
  • A Hugging Face token with access to the checkpoint moonshotai/Kimi-K3.
  • A Kubernetes cluster with the Dynamo platform installed and 16 GB300 GPUs available. See the Kubernetes Deployment Guide.
  • The NVIDIA DRA driver with ComputeDomain support installed (required for multi-node NVLink).
  • A Hugging Face token with access to the checkpoint moonshotai/Kimi-K3 and draft model Inferact/Kimi-K3-DSpark.
  • A Kubernetes cluster with the Dynamo platform installed and 16 GB300 GPUs available. See the Kubernetes Deployment Guide.
  • The NVIDIA DRA driver with ComputeDomain support installed (required for multi-node NVLink).
  • A Hugging Face token with access to the checkpoint moonshotai/Kimi-K3 and draft model Inferact/Kimi-K3-DSpark.
  • A Kubernetes cluster with the Dynamo platform installed and 32 GB200 GPUs available. See the Kubernetes Deployment Guide.
  • The NVIDIA DRA driver with ComputeDomain support installed (required for multi-node NVLink).
  • A Hugging Face token with access to the checkpoint moonshotai/Kimi-K3 and draft model RadixArk/Kimi-K3-DSpark.
  • A Kubernetes cluster with the Dynamo platform installed and 48 GB200 GPUs available. See the Kubernetes Deployment Guide.
  • The NVIDIA DRA driver with ComputeDomain support installed (required for multi-node NVLink).
  • A Hugging Face token with access to the checkpoint moonshotai/Kimi-K3 and draft model RadixArk/Kimi-K3-DSpark.
  • A Kubernetes cluster with the Dynamo platform installed and 24 GB300 GPUs available. See the Kubernetes Deployment Guide.
  • The NVIDIA DRA driver with ComputeDomain support installed (required for multi-node NVLink).
  • A Hugging Face token with access to the checkpoint moonshotai/Kimi-K3 and draft model RadixArk/Kimi-K3-DSpark.
  • A Kubernetes cluster with the Dynamo platform installed and 16 GB300 GPUs available. See the Kubernetes Deployment Guide.
  • The NVIDIA DRA driver with ComputeDomain support installed (required for multi-node NVLink).
  • A Hugging Face token with access to the checkpoint moonshotai/Kimi-K3 and draft model RadixArk/Kimi-K3-DSpark.

Create the namespace and token secret:

$export NAMESPACE=your-namespace
$kubectl create namespace ${NAMESPACE}
$kubectl create secret generic hf-token-secret \
> --from-literal=HF_TOKEN="your-token" \
> -n ${NAMESPACE}

The recipes require the shared-model-cache PVC. Edit storageClassName in model-cache/model-cache.yaml to a ReadWriteMany storage class on your cluster (kubectl get storageclass) before applying it. Review namespace, image tags, and resource claims in the manifests as well.

Deploy

Create the shared-model-cache PVC and download the Kimi-K3 checkpoint and both DSPARK draft models. The download can take several hours on a cold cache:

$# Edit storageClassName in model-cache/model-cache.yaml first.
$kubectl apply -f recipes/kimi-k3/model-cache/model-cache.yaml -n ${NAMESPACE}
$kubectl apply -f recipes/kimi-k3/model-cache/model-download.yaml -n ${NAMESPACE}
$kubectl wait --for=condition=Complete job/model-download -n ${NAMESPACE} --timeout=14400s

The workers mount the PVC at /shared-model-cache and resolve the checkpoint and any configured DSPARK draft model from the local Hugging Face cache with HF_HUB_OFFLINE=1.

Deploy the selected DynamoGraphDeployment (DGD):

$export DGD=kimi-k3-vllm-h200-agg-agentic
$kubectl apply -f recipes/kimi-k3/vllm/agg-h200-agentic/deploy.yaml -n ${NAMESPACE}
$export DGD=kimi-k3-vllm-gb200-agg-agentic
$kubectl apply -f recipes/kimi-k3/vllm/agg-gb200-agentic/deploy.yaml -n ${NAMESPACE}
$export DGD=kimi-k3-vllm-gb300-agg-agentic
$kubectl apply -f recipes/kimi-k3/vllm/agg-gb300-agentic/deploy.yaml -n ${NAMESPACE}
$export DGD=kimi-k3-vllm-gb300-disagg-agentic
$kubectl apply -f recipes/kimi-k3/vllm/disagg-gb300-agentic/deploy.yaml -n ${NAMESPACE}
$export DGD=kimi-k3-sglang-gb200-agg-agentic
$kubectl apply -f recipes/kimi-k3/sglang/agg-gb200-agentic/deploy.yaml -n ${NAMESPACE}
$export DGD=kimi-k3-sglang-gb200-disagg-agentic
$kubectl apply -f recipes/kimi-k3/sglang/disagg-gb200-agentic/deploy.yaml -n ${NAMESPACE}
$export DGD=kimi-k3-sglang-gb300-agg-agentic
$kubectl apply -f recipes/kimi-k3/sglang/agg-gb300-agentic/deploy.yaml -n ${NAMESPACE}
$export DGD=kimi-k3-sglang-gb300-disagg-agentic
$kubectl apply -f recipes/kimi-k3/sglang/disagg-gb300-agentic/deploy.yaml -n ${NAMESPACE}

The first worker launch loads weights and captures CUDA graphs, which can take tens of minutes.

Smoke Test

Send a test request to verify the selected deployment serves traffic. The deploy command sets DGD to its resource name. Forward the frontend port:

$kubectl port-forward svc/${DGD}-frontend 8000:8000 -n ${NAMESPACE}

All Kimi-K3 recipes serve under the same model name, moonshotai/Kimi-K3:

$curl http://localhost:8000/v1/chat/completions \
> -H 'Content-Type: application/json' \
> -d '{"model":"moonshotai/Kimi-K3","messages":[{"role":"user","content":"Write a one-sentence readiness check."}],"max_tokens":64}'

Kimi-K3 reasons before answering, and tool calling is supported — the deployment uses the kimi_k3 reasoning and tool-call parsers at the frontend.

Benchmark

See perf/README.md for the full benchmark workflow: staging the trace on the PVC, running the AIPerf trace-replay Job, running a concurrency sweep, and fetching artifacts.

Optimization Targets

Recipes are optimized for the following agentic workload and target user interactivity:

WorkloadMedian ISLMedian OSLKV cache hit rateUser output tok/sTTFT P50
Agentic64k40090%50≤ 5 s

The benchmark replays the Mooncake-format agentic trace described in perf/README.md.

Performance Results

Benchmarking uses a synthetic acceptance length with the SpeedBench coding AL.

WorkloadFrameworkRecipeSKUConcurrencySystem output tok/s/GPUUser output tok/s (P50)TTFT P50 (ms)
Agentic (15% subset)SGLangAggregated (2 workers)GB2002832.956.1828
Agentic (15% subset)SGLangDisaggregated (2P1D)GB2002429.377.93,090
Agentic (15% subset)SGLangAggregated (3 workers)GB3005484.451.3573
Agentic (15% subset)SGLangDisaggregated (1P1D)GB3001861.075.94,809
Agentic (15% subset)vLLMAggregated (1 worker)H20043.5439.953660
Agentic (15% subset)vLLMAggregated (1 worker)GB200720.156.1638
Agentic (15% subset)vLLMAggregated (1 worker)GB3002462.257.8879
Agentic (15% subset)vLLMDisaggregated (1P1D)GB3001650.390.06,357

Compare All Targets

FrameworkSKURecipePrecisionRoutingSpeculative decodingContext length
vLLMGB300Aggregated (1 worker)MXFP4 experts, FP8 KVKV-awareDSPARK1M
vLLMGB300Disaggregated (1P1D)MXFP4 experts, FP8 KVKV-awareDSPARK1M
vLLMGB200Aggregated (1 worker)MXFP4 experts, FP8 KVKV-awareNone1M
vLLMH200Aggregated (1 worker)MXFP4 experts, BF16 KVKV-awareNone1M
SGLangGB300Aggregated (3 workers)MXFP4 experts, FP8 KVLoad-awareDSPARK1M
SGLangGB300Disaggregated (1P1D)MXFP4 experts, FP8 KVLoad-awareDSPARK1M
SGLangGB200Aggregated (2 workers)MXFP4 experts, FP8 KVLoad-awareDSPARK1M
SGLangGB200Disaggregated (2P1D)MXFP4 experts, FP8 KVLoad-awareDSPARK1M

Limitations

  • With JSON structured decoding, output for non-object top-level items can appear in reasoning_content instead of content.
  • Requests containing logprobs or stop_token_ids are not supported and may cause disaggregated recipes to crash or enter a bad state

Source