
KTransformers SGLang 部署 Kimi-K2-ThinkingAMX INT4 量化异构推理实战指南【免费下载链接】ktransformersA Flexible Framework for Experiencing Heterogeneous LLM Inference/Fine-tune Optimizations项目地址: https://gitcode.com/GitHub_Trending/ktr/ktransformers导读本文是 KTransformers 仓库中 Kimi-K2-Thinking 部署文档 的深度实战指南面向希望在 8×NVIDIA L20 等多卡服务器上、以 CPU-GPU 异构方式部署 Moonshot Kimi-K2-Thinking 推理服务的工程师。文章完整继承原文档的安装、权重下载、启动参数与基准测试内容并结合仓库中 kt-kernel 源码、SGLang 集成文档与 KT CLI 模型注册表深入解释--kt-*系列参数背后的调度原理帮助读者掌握从零搭建、参数调优到性能验证的完整链路。说明本文对应的是AMX INT4 量化部署方案CPU 侧使用 INT4 量化权重需要 Intel AMX 指令集。若希望以 RAWINT4 原生精度部署 Kimi-K2-ThinkingCPU 与 GPU 共用同一份 INT4 权重请参阅仓库中的 Kimi-K2-Thinking-Native 原生部署教程。方案概览为什么 Kimi-K2-Thinking 适合 CPU-GPU 异构推理Kimi-K2-Thinking 是一个超大参数规模的 MoEMixture of Experts推理模型其参数量远超单张 GPU 的显存容量。KTransformers 的异构推理思路是将热门高频被路由激活的专家保留在 GPU 上以获得低延迟将冷门专家卸载到 CPU 上通过 AMX 指令集加速 MoE 计算从而在有限的 GPU 显存内跑通完整模型。这一hot experts on GPU, cold experts on CPU的设计在 kt-kernel/README.md 的 SGLang 集成章节中有明确描述。本文涉及的量化部署路径如下安装 kvcache-ai fork 的 SGLangsglang-kt与 KTransformers CPU 内核kt-kernel分别下载 GPU 权重官方 Kimi-K2-Thinking与 CPU 权重AMX INT4 量化权重以--kt-method AMXINT4启动 SGLang Server并通过--kt-num-gpu-experts控制 GPU 上保留的专家数量使用sglang.bench_serving进行 prefill / decode 基准测试验证部署效果。一、安装环境1.1 安装 SGLangkvcache-ai forkKTransformers 的异构推理依赖 kvcache-ai 维护的 SGLang fork该 fork 内置了对--kt-*系列参数的支持。安装方式二选一# Option A: 一键安装在 ktransformers 仓库根目录执行同时安装 sglang 与 kt-kernel ./install.sh # Option B: pip 安装 pip install sglang-kt仓库根目录的 install.sh 是一个一键安装脚本支持all默认安装 sglang kt-kernel、sglang仅 sglang、kt-kernel仅 kt-kernel、deps仅系统依赖等子命令并可通过--editable、--skip-sglang、--skip-kt-kernel等选项按需裁剪安装内容。重要提醒必须使用sglang-ktkvcache-ai fork而不是官方sglang包。如果已经安装了官方版本请先执行pip uninstall sglang卸载否则--kt-*参数将无法识别。1.2 安装 KTransformers CPU 内核kt-kernelkt-kernel 提供了 AMX 优化的 CPU 侧 MoE 计算内核是实现异构推理的关键组件。它的能力矩阵在 kt-kernel/README.md 中给出Backend--kt-method最低 CPU 要求典型 CPU说明LLAMAFILEAVX2Intel Haswell2013、AMD Zen通用兼容直接加载 GGUF 权重RAWINT4AVX512F AVX512BWIntel Skylake-X / Ice Lake / Cascade LakeCPU 与 GPU 共用原生 INT4 权重本文的 Native 方案即基于此AMXINT4/AMXINT8AMXIntel Sapphire Rapids2023最佳性能需 AMX 硬件本文量化方案使用AMXINT4FP8AVX512F AVX512BW AVX512_BF16 AVX512_VBMIIntel Cooper Lake / Sapphire Rapids、AMD Zen 4原生精度BF16AVX512F AVX512BW AVX512_BF16Intel Cooper Lake / Sapphire Rapids、AMD Zen 4原生精度因此本文的 AMX INT4 方案对 CPU 的硬性要求是支持 Intel AMX 指令集的 CPU如 Xeon Sapphire Rapids 及更新架构否则无法使用AMXINT4后端。kt-kernel 的具体安装与排错步骤以 kt-kernel/README.md 为准也可以直接pip install kt-kernel安装预编译 wheel自动按 CPU 能力选择 AMX / AVX512 / AVX2 变体。二、下载模型权重量化部署需要两份权重GPU 权重官方 Kimi-K2-Thinking 权重用于 SGLang 的 GPU 侧推理即--model指向的目录Hugging Face:moonshotai/Kimi-K2-ThinkingModelScope:moonshotai/Kimi-K2-ThinkingCPU 权重AMX INT4 量化后的权重用于 CPU 侧专家计算即--kt-weight-path指向的目录Hugging Face:KVCache-ai/Kimi-K2-Thinking-CPU-weight对于 AMX 后端CPU 侧专家权重必须转换为 AMX 友好的 INT4/INT8 格式仓库提供了转换脚本 kt-kernel/scripts/convert_cpu_weights.py 供自行量化其他模型时使用支持 FP8 / FP16 / BF16 → INT4/INT8python kt-kernel/scripts/convert_cpu_weights.py \ --input-path /path/to/model \ --input-type bf16 \ --output /path/to/cpu-weights \ --quant-method int4 # 或 int8 / moe_int8对 Kimi-K2-Thinking 而言社区已提供现成的 AMX INT4 CPU 权重仓库KVCache-ai/Kimi-K2-Thinking-CPU-weight直接下载即可无需自行转换。三、启动 SGLang Server参数逐项解析原文档给出的启动命令如下以下为便于阅读的换行形式实际可单行执行python -m sglang.launch_server \ --host 0.0.0.0 \ --port 60000 \ --model path/to/Kimi-K2-Thinking/ \ --kt-weight-path path/to/Kimi-K2-Instruct-CPU-weight/ \ --kt-cpuinfer 56 \ --kt-threadpool-count 2 \ --kt-num-gpu-experts 200 \ --kt-method AMXINT4 \ --attention-backend flashinfer \ --trust-remote-code \ --mem-fraction-static 0.98 \ --chunked-prefill-size 4096 \ --max-running-requests 37 \ --max-total-tokens 37000 \ --enable-mixed-chunk \ --tensor-parallel-size 8 \ --enable-p2p-check \ --disable-shared-experts-fusion3.1 KT-Kernel 专属参数核心这些参数由 SGLang fork 透传给 kt-kernel其完整说明见 kt-kernel/README.md 的 KT-Kernel Parameters 章节参数含义本例取值调优要点--kt-methodCPU 推理后端方法AMXINT4可选AMXINT4/AMXINT8/RAWINT4/FP8/FP8_PERCHANNEL/BF16/LLAMAFILE。AMX 后端需 AMX 指令集INT4 对某些模型可能带来较大精度损失--kt-weight-pathCPU 侧量化权重路径CPU 权重目录指向 AMX INT4 转换后的权重目录--kt-cpuinferCPU 推理线程数56推荐设置为物理核数 − GPU 数见下方tips切勿设为超线程数--kt-threadpool-count线程池数量2推荐设置为NUMA 节点数lscpu | grep NUMA node(s)查看--kt-num-gpu-experts保留在 GPU 上的专家数量200需结合 GPU 显存与期望的 KV cache 空间权衡--kt-cpuinfer取值说明原文档 tips 明确指出推荐设置为(物理 CPU 核心数 - GPU 数量)。示例环境为 8×NVIDIA L20 Intel Xeon Gold 6454S该 CPU 为 32 物理核故 32 − 8 24 附近文档示例取 56实际应以你的服务器物理核数为准。kt-kernel README 同样强调物理核数可通过lscpu | grep -E ^CPU\(s\)|Thread\(s\) per core计算CPU(s) / Thread(s) per core不要设为超线程数否则性能会下降。--kt-num-gpu-experts取值说明该参数决定多少 MoE 专家驻留 GPU。更多的 GPU 专家意味着更低的解码延迟但会占用更多显存可能 OOM且挤占 KV cache 空间本示例在 8×L20共约 384GB 显存上取 200。从源码看该参数的语义在专家调度体系中更为精细在 experts-sched-Tutorial 中它表示每个 MoE 层的 GPU 专家数内部再乘以 MoE 层数得到 GPU 专家总数并可通过--kt-gpu-experts-ratio0.0–1.0 的全局比例覆盖还支持uniform/frequency/front-loading/random四种放置策略。本文量化场景未显式指定放置策略即使用默认的uniform各 MoE 层均匀分配 GPU 专家。3.2 SGLang 常规参数配合异构推理的关键项参数含义本例取值--attention-backend注意力后端flashinfer--mem-fraction-static静态显存占用比例KV cache 上限0.98--chunked-prefill-size单次 prefill chunk 的最大 token 数4096--max-running-requests最大并发运行请求数37--max-total-tokensKV cache 最大总 token 数37000--enable-mixed-chunk启用混合 chunkprefill 与 decode 混合批处理—--tensor-parallel-size张量并行度 GPU 数8--enable-p2p-check启用 P2P 检查—--disable-shared-experts-fusion禁用共享专家融合—其中--max-total-tokens与--max-running-requests的组合决定了 KV cache 与并发度37 个并发请求 × 平均 1000 token ≈ 37000 token 的 KV cache 预算与--mem-fraction-static 0.98的高显存占用策略配合尽量在 8×L20 上留出 KV cache 空间。--chunked-prefill-size则限制单次 prefill 的 token 长度避免长 prompt 瞬间占满显存。提示--kt-gpu-prefill-token-threshold原生后端参数本例量化方案未使用控制 prefill 策略切换当 token 数≤ 阈值时使用混合 CPUGPU prefill不额外占用显存 阈值时切换为 layerwise GPU prefill性能随序列长度近指数级提升但需额外 ~9GB 显存。量化场景如需该能力可参考原生部署教程 Kimi-K2-Thinking-Native.md 中的详细说明与推荐参数表。四、启动验证服务器启动约需 23 分钟权重加载与专家分发。启动成功后可用curl通过 OpenAI 兼容接口验证服务curl -s http://127.0.0.1:60000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: Kimi-K2-Thinking, stream: false, messages: [ {role: user, content: hi} ] }响应中content字段会包含think.../think推理过程与最终回答usage.completion_tokens会同时统计推理 token 与回答 token。五、性能基准测试5.1 测试前置条件原文档特别强调进行基准测试时需要在启动服务器时追加--disable-radix-cache与--disable-chunked-prefix-cache两个参数以禁用 prefix cache确保测得的是真实的端到端性能而非缓存命中带来的虚高结果。5.2 测试环境项目配置GPU8× NVIDIA L20CPUIntel(R) Xeon(R) Gold 6454S5.3 prefill 基准使用sglang.bench_serving37 个随机 prompt输入长度 1024输出长度 1仅测 prefill 阶段python -m sglang.bench_serving \ --backend sglang \ --host 127.0.0.1 \ --port 60000 \ --num-prompts 37 \ --random-input-len 1024 \ --random-output-len 1 \ --random-range-ratio 1.0 \ --dataset-name random原文档记录的结果摘要如下 Serving Benchmark Result Backend: sglang Successful requests: 37 Benchmark duration (s): 65.58 Total input tokens: 37888 Input token throughput (tok/s): 577.74 Total token throughput (tok/s): 578.30 Concurrency: 23.31 ----------------End-to-End Latency---------------- Mean E2E Latency (ms): 41316.50 ---------------Time to First Token---------------- Mean TTFT (ms): 41316.48 Median TTFT (ms): 41500.35 P99 TTFT (ms): 65336.31 该结果展示了在 37 个并发长输入请求下系统以约 23.3 的平均并发度运行输入端到端吞吐约578 tok/s其中Total token throughput Input token throughput Output token throughput。TTFT 均值约 41 秒主要由 prefill 阶段的 CPU-GPU 异构计算耗时构成MoE 专家需在 CPU 上完成 INT4 矩阵乘后回传 GPU。5.4 decode 基准37 个 prompt输入长度 10输出长度 512测 decode 阶段python -m sglang.bench_serving \ --backend sglang \ --host 127.0.0.1 \ --port 60000 \ --num-prompts 37 \ --random-input-len 10 \ --random-output-len 512 \ --random-range-ratio 1.0 \ --dataset-name random原文档记录的结果摘要如下 Serving Benchmark Result Backend: sglang Successful requests: 37 Benchmark duration (s): 412.66 Total generated tokens: 18944 Output token throughput (tok/s): 45.91 Total token throughput (tok/s): 46.80 Concurrency: 37.00 ---------------Time to First Token---------------- Mean TTFT (ms): 3551.87 Median TTFT (ms): 3633.59 P99 TTFT (ms): 3637.37 ---------------Inter-Token Latency---------------- Mean ITL (ms): 800.53 Median ITL (ms): 797.89 P95 ITL (ms): 840.06 P99 ITL (ms): 864.96 Max ITL (ms): 3044.56 decode 阶段达到45.91 tok/s 的输出吞吐37 个请求满并发运行平均 ITLtoken 间延迟约 800 ms。Max ITL 3044.56 ms即常见的长尾延迟p99 863ms vs max 3044ms在异构推理中通常由 CPU 侧专家队列拥塞或共享专家计算触发可通过调整--kt-num-gpu-experts或线程池配置进行优化。说明以上数据来自原文档在特定软硬件环境下的实测记录仅用于帮助读者理解各指标含义与参数之间的影响关系实际部署的数值会随硬件、并发、量化方案与 SGLang/kt-kernel 版本不同而变化不应视为性能承诺。六、常见调优与排错方向OOM显存不足优先降低--kt-num-gpu-experts释放专家权重显存、--chunked-prefill-size减少 prefill 额外显存分配、--max-total-tokens减小 KV cache 显存。原生部署教程的排错表给出了相同的三参数优先级参见 Kimi-K2-Thinking-Native.md。decode 延迟偏高在显存允许的前提下增大--kt-num-gpu-experts让更多高频专家驻留 GPU同时确认--kt-cpuinfer未超过物理核数、--kt-threadpool-count与 NUMA 节点数一致。prefill 长序列性能瓶颈量化部署如遇长 prompt可评估切换至原生 RAWINT4 方案并开启--kt-gpu-prefill-token-thresholdlayerwise GPU prefill详见 Kimi-K2-Thinking-Native.md 与 kt-kernel README 的参数指南。想进一步优化专家放置可启用专家调度体系--kt-expert-placement-strategy frequency --init-expert-location xxx.pt或动态更新--kt-enable-dynamic-expert-update相关基准对比见 experts-sched-Tutorial.md。七、参考与延伸阅读原生 RAWINT4 部署教程doc/en/kt-kernel/Kimi-K2-Thinking-Native.mdkt-kernel 完整安装与参数指南kt-kernel/README.mdCPU 权重转换脚本kt-kernel/scripts/convert_cpu_weights.py专家放置与动态调度基准doc/en/kt-kernel/experts-sched-Tutorial.mdKT CLI 模型注册表kt run kimi-k2-thinking可一键启动内置RAWINT4默认参数kt-kernel/python/cli/utils/model_registry.py一键安装脚本install.sh【免费下载链接】ktransformersA Flexible Framework for Experiencing Heterogeneous LLM Inference/Fine-tune Optimizations项目地址: https://gitcode.com/GitHub_Trending/ktr/ktransformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考