今天在 GitHub Trending 上看到一个很有意思的项目:KTransformers(kvcache-ai/ktransformers)。它把"用消费级硬件跑起 DeepSeek-R1/V3 这类几百亿、上万亿参数的 MoE 大模型"从不可能变成了可复现的教程,核心思路是把 CPU 和 GPU 的算力拼接起来用。

一、项目概述

KTransformers 是清华大学 MADSys 实验室主导、Approaching.AI 与 9#AISoft 等共同参与的一个研究型项目,目标是通过 CPU-GPU 异构计算,实现大语言模型的高效推理(Inference)与微调(SFT)

它最初因"单张 24GB 显卡 + 382GB 内存跑起 DeepSeek-R1/V3"而出圈,随后演化为今天以 kt-kernel 为核心的两条能力线:

  • Inference(推理):面向高性能异构服务的 kt-kernel,强调 CPU 端算子优化与 MoE 专家调度。
  • SFT(微调):KTransformers × LLaMA-Factory 集成,让超大 MoE 模型也能在有限显存下微调。

项目当前版本为 0.6.3.post1(见顶层的 version.py),主包 ktransformers 非常轻量,真正的运行时内核都在 kt-kernel 中。

# ktransformers.py —— 顶层入口仅做版本与能力探测
def has_sft_support() -> bool:
    try:
        import kt_kernel.sft  # noqa: F401
    except Exception:
        return False
    return True

其定位不是"又一个推理引擎",而是一套把昂贵显存需求"卸载"到廉价 CPU 内存与磁盘的工程方案,因此特别适合个人开发者、研究者和小团队。

二、技术原理

CPU-GPU 异构与专家调度

MoE(混合专家)模型的显著特点是:每次推理只有少数"专家"被激活。KTransformers 的核心观察是——把访问频繁的"热专家"放在 GPU,访问稀疏的"冷专家"卸载到 CPU/内存,从而用很少的显存撬动超大规模权重。

它通过 CPU-GPU Expert Scheduling(专家调度),结合 NUMA 感知的内存管理,让不同专家按热度分布在异构设备上。这也就是为什么 24GB 显存能跑原本需要数百 GB 显存的模型。

AMX / AVX 加速与量化

CPU 端的算子性能是这套方案成立的前提。KTransformers 充分利用了 Intel 的硬件指令集:

  • AMX-INT8 / AMX-BF16:在支持 AMX 的至强处理器上做 INT8/BF16 矩阵运算。
  • AVX512 / AVX2:对不支持 AMX 的 CPU(甚至仅 AVX2 的型号)也提供后端。

权重侧支持 CPU 端 INT4/INT8 量化、GPU 端 GPTQ,以及 unsloth 的 1.58/2.51-bit 权重与 IQ1_S/FP8 混合权重。再配合 FP8 GPU kernel,DeepSeek-V3/R1 在 24GB 显存下即可获得更长上下文与更高吞吐。

原生精度与三层 Prefix Cache

除了量化,KTransformers 还支持 Native BF16 和 FP8 per-channel 原生精度,并在 v0.6 之前就实现了 3 层(GPU-CPU-Disk)prefix cache 复用——把前缀 KV 缓存按层级在不同存储介质间复用,显著降低重复前缀的推理成本。

SFT:比 ZeRO-Offload 更快的微调

微调侧通过与 LLaMA-Factory 集成,在有限 GPU 内存下完成超大 MoE 的训练。官方基准显示:相比 ZeRO-Offload 有 6-12 倍的训练加速,且 CPU 内存占用约为旧路径的一半。

三、安装与快速开始

推理(kt-kernel)

cd kt-kernel
pip install .

微调(SFT,可选依赖)

pip install "ktransformers[sft]"

或直接通过 setup 的 extras 安装:

# setup.py 定义的可选依赖
# ktransformers[sft]  -> transformers-kt + accelerate-kt
# ktransformers[sglang] -> sglang-kt
pip install "ktransformers[sft]"

pyproject.toml 中要求 Python ≥ 3.11,且仅声明 kt-kernel 为核心依赖,把可选能力都收进 extras,安装非常干净。

四、使用方法与实战

推理:异构专家放置

最典型的使用场景是大 MoE 模型的 CPU-GPU 混合推理,以及接入 SGLang 做生产级服务。官方给出的性能示例:

模型硬件配置总吞吐输出吞吐
DeepSeek-R1-0528 (FP8)8×L20 GPU + Xeon Gold 6454S227.85 tokens/s87.58 tokens/s(8 路并发)

微调:与 LLaMA-Factory 联动

cd /path/to/LLaMA-Factory
pip install -e .
pip install -r requirements/ktransformers.txt
CUDA_VISIBLE_DEVICES=0,1,2,3 accelerate launch \
  --config_file examples/ktransformers/accelerate/fsdp2_kt_int8.yaml \
  src/train.py \
  examples/ktransformers/train_lora/qwen3_5moe_lora_sft_kt.yaml

官方在 4×RTX 4090 上微调 DeepSeek-V3/R1 达到约 3.7 it/s,1×RTX 4090 微调 Qwen3-30B-A3B 达到 8+ it/s。

极速跟进新模型

KTransformers 对新模型支持非常快(“Day0 Support”),已覆盖 MiniMax-M3、GLM-5.2、DeepSeek-V4-Flash、Kimi-K2.5、Qwen3-Next 等,并支持 Ascend NPU、Intel Arc、ROCm(AMD)等多后端。

五、常见问题与解决方案

Q1:没有支持 AMX 的至强 CPU 还能用吗? 可以。项目自 v0.6.1 起支持 AVX2-only CPU 后端,普通桌面 CPU 也能跑 kt-kernel 推理,只是吞吐会低一些。

Q2:显存仍然不够怎么办? 分层卸载是关键:把冷专家与权重进一步卸载到 CPU 内存甚至磁盘。早期版本曾把 DeepSeek-V2 所需显存从 21GB 降到 11GB;24GB 显存即可跑 DeepSeek-V3/R1 并支持更长上下文。

Q3:SFT 提示缺少模块? 需在安装时显式带上 sft extras(pip install "ktransformers[sft]"),否则 kt_kernel.sft 不可导入,has_sft_support() 会返回 False

Q4:想接入生产服务框架? KTransformers 提供了干净的 Python API 以便集成进 SGLang 等框架,并有清晰的多并发(multi-concurrency)与多 GPU 教程。

六、总结

KTransformers 的价值在于把"大模型推理/微调"的硬件门槛大幅拉低:通过 CPU-GPU 异构 + 专家调度 + 量化/原生精度 + 分层缓存 的组合拳,让消费级显卡甚至纯 CPU 也能跑起 DeepSeek-R1/V3 级别的超大 MoE 模型,并配套了与 LLaMA-Factory 联动的微调能力。如果你手头显存有限又想本地体验或微调前沿大模型,这是一个值得收藏并动手试一下的项目。

项目地址:https://github.com/kvcache-ai/ktransformers 相关论文:KTransformers(SOSP 2025,ACM SIGOPS)