
使用 SGLang 与 KT-Kernel 以原生精度运行 MiniMax-M2.1CPU-GPU 异构推理部署实战指南【免费下载链接】ktransformersA Flexible Framework for Experiencing Heterogeneous LLM Inference/Fine-tune Optimizations项目地址: https://gitcode.com/GitHub_Trending/ktr/ktransformers本教程基于 KTransformers 仓库的 KT-Kernel 与ktCLI完整演示如何以原生 FP8 精度部署 MiniMax-M2.1MoE 大模型推理服务。MiniMax-M2.1 官方发布的是原生 FP8 权重配合 KT-Kernel 的 CPU-GPU 异构推理方案可以在降低显存占用的同时保持高精度。读完本文你将掌握从硬件评估、权重下载到kt run m2.1一键启动、参数调优、kt chat交互与 OpenAI 兼容 API 调用以及 OOM 排查和将模型接入 Claude Code 作为本地后端的完整流程。背景为什么选择原生 FP8 异构推理MiniMax-M2.1 属于大规模 MoEMixture of Experts模型激活参数远小于总参数因此存在大量冷专家可以被卸载到 CPU 侧计算而高频访问的热专家留在 GPU 上这正是 KT-Kernel 异构推理的核心思路GPU 负责 attention 与高频专家CPU 以原生精度运行低频专家二者通过 PCIe 协同工作以较低显存成本获得接近全 GPU 部署的吞吐与精度。KT-Kernel 对 MiniMax-M2.1 使用的是FP8 原生精度后端--kt-method FP8CPU 侧与 GPU 侧共享同一份未量化unquantized的原生 FP8 权重无需额外量化转换因此不需要运行convert_cpu_weights.py转换脚本。这一点与 AMXINT4/AMXINT8 等需要预量化权重的后端有本质区别详见 kt-kernel/README.md 的Integration with SGLang章节。硬件要求最低配置GPUNVIDIA RTX 5090 32 GB或至少 32GB 可用显存的同级显卡CPU支持 AVX512 的 x86 CPU如 Intel Sapphire Rapids、AMD EPYCRAM至少 256GB 系统内存存储模型权重需大于 220GBGPU 与 CPU 共用同一权重目录测试参考配置GPU1/2 x NVIDIA GeForce RTX 509032 GBCPU2 x AMD EPYC 9355 32-Core Processor128 线程RAM1TB DDR5 5600MT/s ECCOSLinux推荐 Ubuntu 20.04关于 CPU 指令集的硬性前提kt-kernel/README.md 的 CPU Requirements 表格明确指出FP8 后端要求AVX512F AVX512BW AVX512_BF16 AVX512_VBMI典型如 Intel Cooper Lake / Sapphire Rapids以及 AMD Zen 4例如测试环境中的 EPYC 9355。在部署前建议先用kt doctor检查环境兼容性。前置条件在开始之前确保完成以下四步1. 安装 SGLangkvcache-ai 分支必须使用 kvcache-ai 维护的 SGLang 分支sglang-kt官方版 SGLang 不包含 KT-Kernel 支持# 方式 A一键安装在 ktransformers 仓库根目录执行会同时安装 sglang 与 kt-kernel ./install.sh # 方式 Bpip 安装 pip install sglang-kt重要如果你已经安装了官方版sglang请先卸载pip uninstall sglang -y。从源码看kt-kernel/python/cli/utils/sglang_checker.py 会在启动前检测 SGLang 是否支持 KT-Kernel检查--kt-gpu-prefill-token-threshold参数是否存在不支持时kt run会直接报错退出。2. 安装 KT-KernelKT-Kernel 的完整安装说明见 kt-kernel/README.md推荐方式pip install kt-kernel从 PyPI 安装的 wheel 包含 6 个 CPU 优化变体AMX / AVX512BF16 / AVX512VBMI / AVX512VNNI / AVX512 Base / AVX2运行时按 CPU 能力自动选择CUDA 支持 SM 80/86/89/90A100、RTX 30/40 系、H100静态链接 CUDA 运行时无需单独安装 CUDA toolkit。安装完成后验证 CLI 可用kt version3. CUDA Toolkit推荐 CUDA 12.0FP8 支持需要较新的 CUDA 能力。4. Hugging Face CLI用于下载权重pip install -U huggingface-hub第一步下载模型权重下载 MiniMax-M2.1 官方权重Hugging Face 仓库MiniMaxAI/MiniMax-M2.1hf download MiniMaxAI/MiniMax-M2.1 --local-dir /path/to/minimax-m2.1磁盘空间需大于 220GB且该目录将同时作为 GPU 与 CPU 侧权重目录--kt-weight-path指向同一目录。第二步使用 KT CLI 启动服务器最简单的方式是用ktCLI 一条命令启动kt run m2.1CLI 会自动检测你的硬件配置GPU 数量与显存、CPU 核数与 NUMA 拓扑、内存大小并应用针对该机器的最优参数。一键启动背后的自动调优原理从源码 kt-kernel/python/cli/commands/run.py 可以看到kt run m2.1的流程是解析模型别名m2.1在 kt-kernel/python/cli/utils/model_registry.py 的注册表中找到MiniMax-M2.1别名minimax-m2.1、m2.1对应 Hugging Face 仓库MiniMaxAI/MiniMax-M2.1通过detect_gpus()/detect_cpu_info()/detect_ram_gb()检测本机硬件以CLI 参数 注册表模型默认参数 硬件自动检测值的优先级链resolve()函数确定最终参数调用_build_sglang_command()拼装python -m sglang.launch_server ...命令并执行。注册表中 MiniMax-M2.1 的内置默认参数如下来源kt-kernel/python/cli/utils/model_registry.py默认参数值说明kt-methodFP8使用原生 FP8 精度后端kt-gpu-prefill-token-threshold4096超过该 token 数启用 layerwise 预填充attention-backendflashinfer注意力后端fp8-gemm-backendtritonFP8 GEMM 后端自动追加--fp8-gemm-backend tritonmax-total-tokens100000KV cache 最大总 token 数max-running-requests16最大并发请求数chunked-prefill-size32768每批预填充最大 token 数mem-fraction-static0.80静态显存占用比例watchdog-timeout3000SGLang watchdog 超时秒served-model-nameMiniMax-M2.1对外暴露的模型名disable-shared-experts-fusionTrue禁用共享专家融合会追加--disable-shared-experts-fusiontool-call-parserminimax-m2工具调用解析器reasoning-parserminimax-append-think推理内容解析器max_tensor_parallel_size4M2.1 最多支持 4 路张量并行此外kt run会自动计算--kt-num-gpu-experts注册表中compute_minimax_m2_gpu_experts(tensor_parallel_size, vram_per_gpu_gb)kt-kernel/python/cli/utils/model_registry.py以每张卡预留 16GB 非专家开销其余显存每 1GB 放 1 个专家为预算模型计算可驻留 GPU 的专家数显存不足 16GB 时返回 0全部专家走 CPU。高级选项需要自定义配置时可以叠加以下参数# 指定 GPU 数量张量并行 kt run m2.1 --tensor-parallel-size 2 # 自定义 CPU 线程数与 NUMA 配置 kt run m2.1 --cpu-threads 64 --numa-nodes 2run.py中完整支持的 CLI 选项还包括--gpu-experts、--model-path、--weights-path、--kt-method、--kt-gpu-prefill-threshold、--attention-backend、--max-total-tokens、--max-running-requests、--chunked-prefill-size、--mem-fraction-static、--watchdog-timeout、--served-model-name、--enable/disable-shared-experts-fusion、-q/--quantize等。由于run命令开启了ignore_unknown_options任何未识别的参数会被透传给 SGLang因此你也可以直接追加 SGLang 参数例如kt run m2.1 --fp8-gemm-backend triton、--tool-call-parser ...、--dp-size ...完整列表见python -m sglang.launch_server --help。Dry Run预演只打印最终将执行的命令而不真正启动kt run m2.1 --dry-run--dry-run会输出完整的sglang.launch_server命令与参数汇总Model、GPU Experts、CPU Threads、NUMA Nodes、Tensor Parallel、Method、Attention、Server 地址等非常适合在正式启动前核对自动调优结果或排查参数拼接是否符合预期。参数调优的完整指南参见 kt-kernel/README.mdKT-Kernel Parameters 章节。关键参数说明参数说明建议--kt-method FP8为 MiniMax-M2.1 的原生 FP8 权重启用 FP8 推理模式M2.1 固定使用 FP8_build_sglang_command会在检测到 FP8 时自动追加--fp8-gemm-backend triton--kt-cpuinferCPU 推理线程数设为物理核心数非超线程数例如 128 线程的机器设 64可用lscpu \| grep -E ^CPU\(s\)\|Thread\(s\) per core计算物理核数--kt-threadpool-count线程池数量设为NUMA 节点数用lscpu \| grep NUMA node(s)或numactl --hardware查看双路服务器通常为 2--kt-num-gpu-experts解码阶段驻留 GPU 的专家数量显存充足则多放过少会增加 CPU 侧延迟过多可能 OOM--chunked-prefill-size每批预填充的最大 token 数M2.1 默认 32768--max-total-tokensKV cache 允许的最大总 token 数M2.1 默认 100000--kt-gpu-prefill-token-thresholdlayerwise 预填充策略的 token 阈值M2.1 默认 4096仅对 FP8 / RAWINT4 生效关于--kt-cpuinfer与--kt-threadpool-count的取值依据kt-kernel/README.md 有更详细的指导kt-cpuinfer必须等于物理核心数而非超线程数否则性能反而下降kt-threadpool-count对应 NUMA 内存域数量典型值 1-2 单路、2-4 双路可充分利用跨 NUMA 域的内存带宽。第三步发送推理请求服务器启动后默认监听http://localhost:30000默认 host0.0.0.0、port30000见 kt-kernel/python/cli/config/settings.py 的server配置段可以通过以下两种方式与模型交互。方式 A使用 KT CLI 交互式聊天kt chat该命令会打开一个终端交互式聊天会话输入消息回车发送CtrlC退出。从 kt-kernel/python/cli/commands/chat.py 的实现看kt chat基于 OpenAI SDK 连接http://host:port/v1API key 使用占位符EMPTYSGLang 不校验 key并支持以下常用选项kt chat --host 127.0.0.1 -p 8080 # 连接指定服务器 kt chat -t 0.9 --max-tokens 4096 # 调整采样温度与最大输出 token kt chat -s 你是编程助手 # 设置 system prompt kt chat --no-save-history # 关闭历史记录保存 kt chat --no-stream # 关闭流式输出会话内还支持/help、/clear、/history、/retry、/info、/quit等斜杠命令流式输出时会实时显示 TTFT、TPOT、输入/输出 token 数等性能指标kt-kernel/python/cli/commands/chat.py。方式 BOpenAI 兼容 API服务器在http://localhost:30000/v1暴露 OpenAI 兼容接口可直接用curl或任意 OpenAI SDK 客户端调用。curl 示例流式curl http://localhost:30000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: MiniMax-M2.1, messages: [{role: user, content: Hello!}], stream: true }注意请求体中的model字段需要与--served-model-name默认为MiniMax-M2.1一致或用GET /v1/models查询实际暴露的模型名。M2.1 还支持reasoning_content字段思考过程流式返回kt chat中会以暗色样式单独展示。性能吞吐量tokens/s以下基准数据在单并发条件下测得格式Prefill tps / Decode tpsGPUCPUPCIe2048 tokens8192 tokens32768 tokens1 x RTX 4090 (48 GB)2 x Intel Xeon Platinum 8488CPCIe 4.0129 / 21.8669 / 20.91385 / 18.52 x RTX 4090 (48 GB)2 x Intel Xeon Platinum 8488CPCIe 4.0139 / 23.61013 / 23.32269 / 21.61 x RTX 5090 (32 GB)2 x AMD EPYC 9355PCIe 5.0408 / 32.11196 / 31.42540 / 27.62 x RTX 5090 (32 GB)2 x AMD EPYC 9355PCIe 5.0414 / 35.91847 / 35.54007 / 33.1观察规律预填充吞吐随输入长度增长而显著上升长输入下并行度更高解码吞吐则基本稳定在 18-36 TPS 区间对输入长度不敏感PCIe 5.0 平台配合 RTX 5090 可显著拉开与 PCIe 4.0 RTX 4090 的差距。与 llama.cpp 的对比官方将 KT-Kernel SGLang 与 llama.cpp 在同一硬件上做了基准对比以说明 CPU-GPU 异构推理路线的性能优势权重格式差异KT-Kernel 使用 MiniMax-M2 原生未量化的 FP8 权重llama.cpp 仅支持量化权重因此 llama.cpp 侧使用 Q8_0 量化。测试环境2 x RTX 509032 GB AMD EPYC 9355输入 32768 tokens、输出 512 tokens。对比中尽量优化了 llama.cpp 的配置但单一命令难以同时达到最优 prefill 与 decode因此对两个阶段分别使用了不同配置测量。在相同硬件上KT-Kernel 相比 llama.cpp 实现了最高 4.5 倍以上的预填充吞吐和约 30% 更快的解码。上述性能数据为仓库官方文档与基准测试结果实际表现会随硬件配置、并发度与输入分布而变建议以本机实测为准。故障排查OOM显存不足Layerwise 预填充需要额外显存约 3.6GB 随预填充长度递增的成本一旦发生 OOM可按下表调整启动参数参数显存影响--kt-num-gpu-experts减少驻留 GPU 的专家权重显存--chunked-prefill-size减小预填充额外显存分配--max-total-tokens减小 KV cache 显存占用技巧用一个输入长度等于chunked-prefill-size的请求做冒烟测试可以提前验证当前配置在预填充阶段是否会 OOM。另外--kt-gpu-prefill-token-threshold决定何时切换到 layerwise 预填充低于阈值时使用混合 CPUGPU 预填充无额外显存开销超过阈值时使用 layerwise GPU 预填充性能随长序列扩展更好但需要一层 MoE 的额外显存M2.1 约 3.6GB——详见 kt-kernel/README.md 中kt-gpu-prefill-token-threshold的说明。高级用例将 MiniMax-M2.1 接入 Claude Code 作为本地后端借助工具调用与推理解析器可以把本地 MiniMax-M2.1 服务作为 Claude Code 的后端kt run m2.1 --tool-call-parser minimax-m2 --reasoning-parser minimax-append-think上述命令会启用minimax-m2工具调用解析器与minimax-append-think推理解析器这两个值也正是 MiniMax-M2.1 在模型注册表中的内置默认参数。之后即可通过 claude-code-router 这类路由工具将 MiniMax-M2.1 连接为 Claude Code 的本地后端。由于kt run支持透传任意 SGLang 参数你还可以在此命令基础上继续叠加--enable-ma多轮 agent 支持、--dp-size等 SGLang 侧参数来适配 agent 工作负载。更多资源KT-Kernel 完整文档KT-Kernel 参数参考KT-CLI 使用指南Native Precision 教程AVX512/AMX 原生精度Kimi-K2-Thinking 原生精度教程RAWINT4 参考实现专家调度教程专家放置策略与动态更新【免费下载链接】ktransformersA Flexible Framework for Experiencing Heterogeneous LLM Inference/Fine-tune Optimizations项目地址: https://gitcode.com/GitHub_Trending/ktr/ktransformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考