AI个人学习
和实操指南
豆包Marscode

仅需要 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 是不二之选。
CDN
未经允许不得转载:首席AI分享圈 » 仅需要 14GB 显存本地运行 DeepSeek-Coder V3/R1 (Q4_K_M 量化)

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文