AI个人学习
和实操指南
讯飞绘镜

仅需要 14GB 显存本地运行 DeepSeek-Coder V3/R1 (Q4_K_M 量化)

摘要

2025 年 2 月 10 日: 在单 GPU (24GB 显存) / 多 GPU 和 382GB 内存上支持 DeepseekR1 和 V3,速度提升高达 3~28 倍。

大家好,KTransformers 团队 (前身为 CPU/GPU 混合推理开源项目团队,以 DeepSeek-V2 而闻名) 向大家问好。

KTransformers 团队收到了大家对 DeepSeek-R1/V3 支持的请求,并且非常激动地宣布终于交付了!
对于此次等待深感抱歉,但 KTransformers 团队一直在酝酿一些真正令人惊叹的东西!


今天,KTransformers 团队自豪地宣布,不仅支持 DeepSeek-R1/V3,正如以下视频所示:

https://github.com/user-attachments/assets/ebd70bfa-b2c1-4abb-ae3b-296ed38aa285

 

  • [最新!!!] 本地 671B DeepSeek-Coder-V3/R1: 仅使用 14GB 显存和 382GB 内存运行其 Q4_K_M 版本。
    • Prefill 速度 (tokens/s):
      • KTransfermor: 54.21 (32 核) → 74.362 (双路,2×32 核) → 255.26 (优化的基于 AMX 的 MoE 内核,仅 V0.3) → 286.55 (选择性使用 6 个专家,仅 V0.3)
      • llama.cpp 在 2×32 核下的 10.31 tokens/s 相比,实现了高达 27.79 倍的加速
    • Decode 速度 (tokens/s):
      • KTransfermor: 8.73 (32 核) → 11.26 (双路,2×32 核) → 13.69 (选择性使用 6 个专家,仅 V0.3)
      • 与 llama.cpp 在 2×32 核下的 4.51 tokens/s 相比,实现了高达 3.03 倍的加速

KTransformers 团队还给出了即将到来的优化预览,包括 Intel AMX 加速内核和选择性专家激活方法,这将显著提高性能。借助 V0.3-preview,预填充 (prefill) 速度高达 286 tokens/s,比本地推理的 llama.cpp 快 28 倍
二进制发行版现已发布,源代码将尽快发布!在此处查看 wheel 包

 

准备条件

KTransformers 团队在以下配置上运行了最佳性能测试 (V0.2):

CPU: Intel (R) Xeon (R) Gold 6454S 1T 内存 (2 个 NUMA 节点)

GPU: 4090D 24G 显存

内存: 标准 DDR5-4800 服务器内存 (1 TB)

 

基准测试结果

V0.2

设置

  • 模型: DeepseekV3-q4km (int4)
  • CPU: cpu_model_name: Intel (R) Xeon (R) Gold 6454S, 每路 32 核,2 路,2 个 numa 节点
  • GPU: 4090D 24G 显存
  • KTransformers 团队在充分预热后进行测试

内存消耗:

  • 单路: 382G 内存,至少 14GB 显存
  • 双路: 1T 内存,至少 14GB 显存

基准测试结果

“6 experts” 情况是 V0.3 预览版的一部分

| Prompt

(500 tokens) 双路 Ktrans (6 experts) 双路 Ktrans (8 experts) 单路 Ktrans (6 experts) 单路 Ktrans (8 experts) llama.cpp (8 experts)
Prefill token/s 97.32 82.94 65.14 54.21 10.31
Decode token/s 13.69 12.208 10.303 8.73 4.51

解码速度最高提升 3.03 倍,预填充速度最高提升 9.44 倍 看起来 KTransformers 在解码加速方面提升不如预填充明显,解码的优化空间仍然很大。

V0.3-Preview

设置

  • 模型: DeepseekV3-BF16 (在线量化为 int8 用于 CPU,int4 用于 GPU)
  • CPU: cpu_model_name: Intel (R) Xeon (R) Gold 6454S, 每路 32 核,2 路,2 个 numa 节点
  • GPU: (1~4)x 4090D 24GVRAM (更长的 prompt 需要更多显存)

内存消耗:

  • 644GB 内存,至少 14GB 显存

基准测试结果

Prompt length 1K 2K 4K 8K
KTrans (8 experts) Prefill token/s 185.96 255.26 252.58 195.62
KTrans (6 experts) Prefill token/s 203.70 286.55 271.08 207.20

KTrans V0.3 的预填充速度比 KTrans V0.2 快 3.45 倍,比 llama.cpp 快 27.79 倍 这个预填充速度的提升确实非常惊人,看起来 KTransformers 在预填充优化方面下了很大功夫。
解码速度与 KTrans V0.2 (6 experts 版本) 相同,因此省略 看来 V0.3 版本主要关注在预填充速度上的提升。

主要的加速来自

  • Intel AMX 指令集和 KTransformers 团队专门设计的缓存友好型内存布局
  • 基于领域外数据的离线 profile 结果选择较少专家的专家选择策略

根据 KTransformers 团队对 DeepSeekV2、DeepSeekV3 和 DeepSeekR1 的研究,
当稍微减少推理中激活的专家数量时,
输出质量不会改变。但是解码和预填充的速度
会加快,这令人鼓舞。因此 KTransformers 团队的演示利用了这一发现
 看来“专家选择策略”是提速的关键,但如何保证输出质量不下降,还需要更多测试和验证。

 

如何运行

V0.2 演示

单路版本 (32 核)

KTransformers 团队的 local_chat 测试命令是:

git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
numactl -N 1 -m 1 python ./ktransformers/local_chat.py --model_path <your model path> --gguf_path <your gguf path>  --prompt_file <your prompt txt file>  --cpu_infer 33  --cache_lens 1536
<当看到 chat 时,按 Enter 键加载文本 prompt_file>

<your model path> 可以是本地路径,也可以是从在线 hugging face 设置的路径,例如 deepseek-ai/DeepSeek-V3。如果在线遇到连接问题,请尝试使用镜像 (hf-mirror.com)

<your gguf path> 也可以是在线路径,但由于它很大,KTransformers 团队建议您下载它并将模型量化为您想要的格式

命令 numactl -N 1 -m 1 旨在避免 NUMA 节点之间的数据传输

双路版本 (64 核)

在安装之前 (使用 install.sh 或 make dev_install),通过 export USE_NUMA=1 设置环境变量 USE_NUMA=1 (如果已安装,请在设置此环境变量的情况下重新安装)

KTransformers 团队的 local_chat 测试命令是:

git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
export USE_NUMA=1
make dev_install # or sh ./install.sh
python ./ktransformers/local_chat.py --model_path <your model path> --gguf_path <your gguf path>  --prompt_file <your prompt txt file>  --cpu_infer 65  --cache_lens 1536
<当看到 chat 时,按 Enter 键加载文本 prompt_file>

参数的含义相同。但由于 KTransformers 团队使用双路,因此将 cpu_infer 设置为 65

V0.3 演示

双路版本 (64 核)

KTransformers 团队的 local_chat 测试命令是:

wget https://github.com/kvcache-ai/ktransformers/releases/download/v0.1.4/ktransformers-0.3.0rc0+cu126torch26fancy-cp311-cp311-linux_x86_64.whl
pip install ./ktransformers-0.3.0rc0+cu126torch26fancy-cp311-cp311-linux_x86_64.whl
python -m ktransformers.local_chat --model_path <your model path> --gguf_path <your gguf path>  --prompt_file <your prompt txt file>  --cpu_infer 65  --cache_lens 1536
<当看到 chat 时,按 Enter 键加载文本 prompt_file>

参数的含义与 V0.2 相同。但由于 KTransformers 团队使用双路,因此将 cpu_infer 设置为 65

 

一些解释

  1. KTransformers 团队还希望进一步利用 Xeon Gold CPU 上的两个 NUMA 节点。
    为了避免节点之间数据传输的成本,KTransformers 团队在
    两个节点上“复制”关键矩阵,这会消耗更多内存,但会加速预填充和解码过程。
    但是这种方法占用大量内存,并且在加载权重时速度很慢,因此在加载时请耐心等待
    并监控内存使用情况。KTransformers 团队将优化这种巨大的内存开销。敬请关注~ 这种“复制”矩阵的方法虽然能提速,但内存占用确实是个问题,期待 KTransformers 团队后续的优化方案。
  2. 命令参数 --cpu_infer 65 指定要使用的核心数 (超过物理核心数也可以,
    但并非越多越好。将其调整到略低于实际核心数即可)
  3. 为什么采用 CPU/GPU 混合推理?
    DeepSeek 的 MLA 算子是计算密集型的。虽然完全在 CPU 上运行是可能的,但将繁重的计算卸载到 GPU 可以大幅提升性能。CPU 负责专家计算,GPU 负责 MLA/KVCache,这种混合推理的策略看起来很聪明,充分利用了 CPU 和 GPU 的优势。
  4. 速度提升来自哪里?
    • 专家卸载 (Expert Offload): 与传统的基于层或 KVCache 的卸载 (如 llama.cpp 中所见) 不同,KTransformers 团队将专家计算卸载到 CPU,将 MLA/KVCache 卸载到 GPU,与 DeepSeek 的架构完美契合,以实现最佳效率。
    • Intel AMX 优化 – KTransformers 团队基于 AMX 加速的内核经过精心调优,运行速度比现有的 llama.cpp 实现快数倍。KTransformers 团队计划在清理后开源此内核,并正在考虑向上游 llama.cpp 贡献代码。AMX 指令集的加持,看来是 KTransformers 提速的关键因素之一。
  5. 为什么选择 Intel CPU?
    Intel 是目前唯一支持类似 AMX 指令的 CPU 供应商,与仅支持 AVX 的替代方案相比,AMX 指令可提供明显更好的性能。看来目前想体验 KTransformers 的最佳性能,Intel CPU 是不二之选。
未经允许不得转载:首席AI分享圈 » 仅需要 14GB 显存本地运行 DeepSeek-Coder V3/R1 (Q4_K_M 量化)
zh_CN简体中文