moonshotai/Kimi-K3
Pre-release 2.8T-parameter native multimodal MoE with Kimi Delta Attention, Gated MLA, Attention Residuals, and a 1M-token context window
Pre-release TP8, TEP16, and disaggregated P/D profiles for the 2.8T MXFP4 checkpoint
Guide
Overview
Kimi K3 is a 2.8-trillion-parameter Mixture-of-Experts model (16 of 896 experts active per token) built on the Kimi Delta Attention (KDA) and Attention Residuals (AttnRes), with a 1M-token context window and native vision.
Prerequisites
- vLLM: Use the vllm/vllm-openai:kimi-k3 docker
- Hardware: At least 8x GB300. Multi-node for real production traffic.
- ROCm: Use vllm/vllm-openai_rocm:kimi-k3 docker and at least 8x MI355X/MI350X hardware.
Client Usage
Once the vLLM server is running, consume it via the OpenAI-compatible API:
import time
from openai import OpenAI
client = OpenAI(
api_key="EMPTY",
base_url="http://localhost:8000/v1",
timeout=3600
)
messages = [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://ofasys-multimodal-wlcb-3-toshanghai.oss-accelerate.aliyuncs.com/wpf272043/keepme/image/receipt.png"
}
},
{
"type": "text",
"text": "Read all the text in the image."
}
]
}
]
start = time.time()
response = client.chat.completions.create(
model="moonshotai/Kimi-K3",
messages=messages,
max_tokens=2048
)
print(f"Response costs: {time.time() - start:.2f}s")
print(f"Generated text: {response.choices[0].message.content}")
Notes
- Cross node communitcation: Use
--all2all-backend deepep_v2for RDMA and--all2all-backend flashinfer_nvlink_one_sidedfor NVLink. - MoE backend: Recommend to use deep_gemm_mega_moe for any DEP environment and flashinfer_trtllm for TP>1.
- Model Runner v2 and Rust Frontend:
VLLM_USE_V2_MODEL_RUNNER=1andVLLM_USE_RUST_FRONTEND=1: Model Runner v2 and Rust Frontend fully supports this model and can be enabled if needed. - Tool calling: K3 occasionally emit a tool-call format its own parser doesn't expect. Suggest to run do schema validation and retry.
- AMD (MI355X / MI350X, CDNA4 gfx950): set AITER_SITUV2_A8W4 to 0 along with AITER master flag to use aiter a16w4 MoE path. Set it to 1 to use aiter a8w4 MoE path.
- max-model-len: Adjust max-model-len for different benchmark scenarios for best performance.
- RDMA: If RDMA is enabled, set
UCX_TLS="rc,cuda_copy"to make sure KV Cache transfer goes through RDMA. - FP8 KV: If FP8 KV cache is needed, please also add
--attention-config '{"use_prefill_query_quantization":true}'when serving vLLM.