如何本地部署 Kimi K3:vLLM、SGLang 与硬件现实

2026/07/28

本地部署 Kimi K3 前,先把“本地”这两个字说清楚:这里指的是在自己的 Linux 多卡 GPU 服务器或私有集群上自托管推理,不是把模型放到普通笔记本或单张消费级显卡上运行。

如果你只是想通过 API 使用 Kimi K3,建议先看 Kimi K3 指南中心 和站内的 API 文章。本篇重点回答另一个问题:当团队需要私有化、内网推理、性能调优或评测环境时,如何本地部署 Kimi K3。

先判断是否真的适合本地部署

官方资料显示,Kimi K3 是 2.8T 总参数、104B 激活参数的 MoE 模型,支持 1,048,576 token 上下文,并使用 MXFP4 权重与 MXFP8 激活。这个规格决定了它不是“下载后随手跑”的小模型。

在正式准备机器前,先问三个问题:

  1. 你是否有多卡服务器,且 GPU 显存、互联和存储都足够?
  2. 你是否真的需要本地权重,而不是使用 Kimi 官方 API?
  3. 你是否有人能维护推理引擎、镜像版本、监控和升级?

如果答案不明确,先用官方 API 做能力验证。只有当数据合规、成本、延迟、内网访问或自定义推理栈确实要求自托管时,再进入本地部署。

推荐部署路线

Kimi 官方 README 当前推荐的推理引擎包括 vLLM、SGLang 和 TokenSpeed。实际选择可以按团队目标拆开:

  • vLLM:适合需要 OpenAI-compatible API、批处理、prefix cache 和较成熟生产生态的团队。
  • SGLang:适合需要 agent、工具调用、多轮调度或更细粒度 serving 控制的团队。
  • TokenSpeed:适合已经围绕 TokenSpeed 做高性能推理实验或集群调度的团队。

截至 2026-07-28,最稳妥的做法不是凭记忆手写一长串参数,而是从官方 README 进入对应 recipe,并以 recipe 的镜像、分布式参数和已知限制为准。

准备服务器环境

一台可用的 Kimi K3 本地部署机器,至少要准备这些部分:

  • Linux 服务器或容器化 GPU 集群。
  • NVIDIA 或 AMD GPU 驱动,以及与推理镜像匹配的运行时。
  • 足够的 GPU 显存、主机内存、本地 SSD 或高速共享存储。
  • Hugging Face 或官方权重源访问权限。
  • Docker、NVIDIA Container Toolkit 或等价容器运行时。
  • 内网可访问的服务端口,例如 800030000

建议先准备环境变量:

export HF_TOKEN="YOUR_HUGGING_FACE_TOKEN"
export MODEL_ID="moonshotai/Kimi-K3"
mkdir -p ~/.cache/huggingface

权重体积、下载时间和校验时间都可能很长。生产环境不要把模型缓存放在临时盘,也不要让多个容器同时重复下载同一份权重。

路线一:使用 vLLM 部署 Kimi K3

vLLM 是大多数团队优先评估的路径,因为它可以暴露 OpenAI-compatible /v1/chat/completions 接口,方便接入已有应用、网关和评测脚本。

部署时优先打开官方 vLLM Kimi K3 recipe,使用里面指定的镜像和参数。一个典型启动形状如下:

docker run --gpus all \
  --ipc=host \
  --shm-size=32g \
  -p 8000:8000 \
  -e HF_TOKEN="$HF_TOKEN" \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  <VLLM_KIMI_K3_IMAGE_FROM_OFFICIAL_RECIPE> \
  vllm serve "$MODEL_ID" \
    --host 0.0.0.0 \
    --port 8000 \
    --trust-remote-code \
    --max-model-len 1048576

这里的 <VLLM_KIMI_K3_IMAGE_FROM_OFFICIAL_RECIPE> 不要随便替换成旧版 vLLM 镜像。Kimi K3 依赖的量化、attention、并行和解析支持更新很快,直接使用 recipe 的镜像更安全。

如果只是做小流量验证,可以先把 --max-model-len 降低到 32768 或 65536,确认服务能启动、能返回、能记录 token,再逐步提高上下文长度。完整 1M 上下文会显著增加 KV cache 和调度压力。

路线二:使用 SGLang 部署 Kimi K3

SGLang 也是官方 README 推荐的路径之一。它适合更复杂的 serving 场景,尤其是 agent、多轮消息、结构化输出、工具调用和调度策略需要更强控制时。

一个最小服务形状如下:

docker run --gpus all \
  --ipc=host \
  --shm-size=32g \
  -p 30000:30000 \
  -e HF_TOKEN="$HF_TOKEN" \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  lmsysorg/sglang:latest \
  python3 -m sglang.launch_server \
    --model-path "$MODEL_ID" \
    --host 0.0.0.0 \
    --port 30000

生产部署时不要只停留在这个最小形状。你需要根据官方 SGLang cookbook 补齐 tensor parallel、expert parallel、data parallel、memory fraction、max running requests、tool parser 等参数。

路线三:评估 TokenSpeed

TokenSpeed 也是 Kimi 官方 README 列出的 Kimi K3 推理选项。它更偏高性能推理和特定集群调优,适合已经有推理工程团队的组织。

如果你走 TokenSpeed,建议直接从官方 TokenSpeed recipes 开始,不要把 vLLM 或 SGLang 的参数照搬过去。不同引擎的并行、缓存、调度和模型加载策略并不等价。

用 OpenAI-compatible 请求验证

服务启动后,先不要接入真实业务。先从本机或同网段机器发一个最小请求:

curl http://localhost:8000/v1/chat/completions \
  -H "content-type: application/json" \
  -d '{
    "model": "moonshotai/Kimi-K3",
    "messages": [
      {
        "role": "user",
        "content": "用三点说明 Kimi K3 本地部署时最容易忽略什么。"
      }
    ],
    "max_tokens": 512,
    "reasoning_effort": "low"
  }'

如果你用的是 SGLang 的 30000 端口,把 URL 改成对应地址即可。

Kimi 官方 README 提醒,Kimi K3 默认会返回 reasoning_content,并且多轮对话或工具调用时需要把上一轮 assistant message 原样传回,包括 reasoning_contenttool_calls。只保留 content 可能会影响后续轮次。

生产前检查清单

把服务接入用户流量前,至少检查这些点:

  • 权重和镜像版本固定,能复现部署。
  • GPU 显存、KV cache、队列长度和吞吐都有监控。
  • API 层有限流、超时、重试和请求体大小限制。
  • 日志能记录 request ID、输入输出 token、延迟和错误类型。
  • 长上下文请求有配额,不允许所有用户默认打满 1M token。
  • 多轮对话保留完整 assistant message,不丢 reasoning_content
  • OpenAI-compatible 客户端的模型名和 base URL 与服务端一致。

本地部署的价值是控制权,但控制权也意味着维护责任。不要只验证“能返回一段文字”,还要验证高并发、长上下文、失败恢复和升级回滚。

常见问题

普通电脑能不能本地部署 Kimi K3?

不建议。Kimi K3 的规模面向多卡服务器或集群。普通电脑更适合调用官方 API。

可以只用一张 GPU 测试吗?

通常不现实。即使权重是 MXFP4,模型总规模、KV cache 和 serving 开销仍然远超单卡消费级环境。

vLLM 和 SGLang 该选哪个?

已有 OpenAI-compatible 网关、评测脚本和生产 serving 经验时,先试 vLLM。需要更复杂 agent serving 或 SGLang 生态能力时,再试 SGLang。

为什么文中没有给固定镜像名?

因为 Kimi K3 的推理支持仍在快速更新。固定旧镜像名比让读者去官方 recipe 取当前镜像更危险。

参考资料

Kimi K3 Team

如何本地部署 Kimi K3:vLLM、SGLang 与硬件现实 | Kimi K3 博客