DeepSeek-R1:使用KTransformers部署(保姆级教程)
1. 引言
KTransformers作为一个开源框架,专门为优化大规模语言模型的推理过程而设计。它支持GPU/CPU异构计算,并针对MoE架构的稀疏性进行了特别优化,可以有效降低硬件要求,允许用户在有限的资源下运行像DeepSeek-R1这样庞大的模型。KTransformers实现了强大的CPU+DDR5+24GB显存环境下本地运行DeepSeek-R1满血版的能力,大大降低了部署成本和技术门槛。
2. 实践环境描述
- 硬件配置:
- CPU: 使用的是Intel Xeon Silver 4310 CPU @ 2.10GHz,拥有24个物理核心(每个插槽12个核心),支持超线程技术,总共有48个逻辑处理器。
- 内存: 系统配备了1T的DDR4内存,频率为3200MHz。
- GPU: NVIDIA GeForce RTX 3090,显存为24GB。
- 软件环境:
- 操作系统版本:Ubuntu 22.04
- CUDA版本:12.1
- 软件框架: KTransformers v0.2.1,支持DeepSeek-R1模型的本地推理。
- 模型参数:DeepSeek-R1-Q4_K_M
2. 环境准备与资源下载
-
KTransformers:
- ktransformers:https://github.com/kvcache-ai/ktransformers
- ktransformers安装指南:https://kvcache-ai.github.io/ktransformers/en/install.html
-
模型文件:
- huggingface:https://huggingface.co/unsloth/DeepSeek-R1-GGUF
- modelscope(国内推荐):https://modelscope.cn/models/unsloth/DeepSeek-R1-GGUF
3. 实践过程
- 步骤一:环境搭建
-
CUDA 12.1及以上版本
- 如果您还没有安装CUDA,可以从这里下载并安装。
- 添加CUDA到PATH环境变量:
export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH export CUDA_PATH=/usr/local/cuda
-
Linux-x86_64 系统,带有 gcc, g++ 和 cmake
- 更新包列表并安装必要的工具:
sudo apt-get update sudo apt-get install gcc g++ cmake ninja-build
- 更新包列表并安装必要的工具:
-
使用 Conda 创建虚拟环境
- 我们建议使用Conda来创建一个Python=3.11的虚拟环境来运行程序:
conda create --name ktransformers python=3.11 conda activate ktransformers # 您可能需要先运行 `conda init` 并重新打开shell
- 确保安装了 PyTorch、packaging、ninja 等依赖项:
pip install torch packaging ninja cpufeature numpy
- 或者直接拉取已经构建好的docker镜像(推荐):
docker pull approachingai/ktransformers:0.2.1
- 我们建议使用Conda来创建一个Python=3.11的虚拟环境来运行程序:
-
下载源代码并编译
-
初始化源代码:
git clone https://github.com/kvcache-ai/ktransformers.git cd ktransformers git submodule init git submodule update
- 博主提供已经git submodule update后的文件下载的ktransformers包(更新时间:20250218):
链接: https://pan.baidu.com/s/1WvPK_lcLY9MdKxCWxoqonQ?pwd=mcbd 提取码: mcbd
- 博主提供已经git submodule update后的文件下载的ktransformers包(更新时间:20250218):
-
安装(Linux):
bash install.sh
-
- 步骤二:模型加载
- 下载Deepseek原模型配置文件
- modelscope:https://modelscope.cn/models/deepseek-ai/DeepSeek-R1
- huggingface:https://huggingface.co/deepseek-ai/DeepSeek-R1
- 博主分享的配置文件:
链接: https://pan.baidu.com/s/1XKdP2L0QmX7YPGkqi7ujgg?pwd=6p7v 提取码: 6p7v
- 检查一下配置文件是否完整
- 本地聊天测试命令
- 下载Deepseek原模型配置文件
本地聊天测试命令如下:
numactl -N 1 -m 1 python ./ktransformers/local_chat.py --model_path <your model path> --gguf_path <your gguf path> --cpu_infer 33 --max_new_tokens 1000
参数说明
-
numactl -N 1 -m 1
- 使用
numactl
工具来绑定CPU核心和内存节点。这里的-N 1
表示使用第1号CPU核心,-m 1
表示使用第1号内存节点。这有助于提高多核系统的性能。
- 使用
-
python ./ktransformers/local_chat.py
- 运行KTransformers的本地聊天Python脚本。
-
--model_path <your model path>
- 指定模型路径。可以是本地路径或在线Hugging Face路径(如
deepseek-ai/DeepSeek-V3
)。如果在线连接有问题,可以尝试使用镜像站点(如hf-mirror.com
)。
- 指定模型路径。可以是本地路径或在线Hugging Face路径(如
-
--gguf_path <your gguf path>
- 指定GGUF格式的模型路径。由于GGUF文件较大,建议您下载到本地并根据需要进行量化处理。注意这里是指向包含GGUF文件的目录路径。
-
--cpu_infer 33
- 设置用于推理的CPU线程数。这里设置为33,可以根据您的硬件配置调整这个数值。
-
--max_new_tokens 1000
- 设置最大输出token长度。默认值为1000,如果您发现生成的答案被截断了,可以增加这个数值以生成更长的回答。但请注意,增加这个数值可能会导致内存不足(OOM),并且会降低生成速度。
示例
(以博主目录结构假设)模型路径为/root/DeepSeek-R1-GGUF
,GGUF路径为/root/DeepSeek-R1-GGUF/DeepSeek-R1-Q4_K_M
,那么完整的命令应如下所示:
numactl -N 1 -m 1 python ./ktransformers/local_chat.py --model_path /root/DeepSeek-R1-GGUF --gguf_path /root/DeepSeek-R1-GGUF/DeepSeek-R1-Q4_K_M --cpu_infer 33 --max_new_tokens 1000
- 部分加载日志
- 首次加载时间较长
- 步骤三:推理与测试
4. 实践结果
在复现KTransformers部署满血版DeepSeek-R1的过程中,我们遇到了一些性能上的差异。尽管已经按照官方指南进行了配置和优化,但最终的推理速度和效率并未达到预期水平。以下是具体的实践结果及分析。
测试结果
经过多次测试,我们得到了5.2 tokens/s的生成速度。
这些数据显示,在我们的实验环境中,模型的推理速度显著低于官方宣称14 tokens/s的生成速度。
分析原因
通过对比实验配置与官方推荐的最佳实践,我们发现以下几个关键因素可能导致了性能差异:
-
CPU性能:
- 我们的测试平台使用的是Intel Xeon Silver 4310 CPU,而官方文档中提到的理想配置包括第四代至强可扩展处理器,这类处理器集成了高级矩阵扩展指令集(AMX),能够大幅提升计算密集型任务的执行效率。相比之下,Silver系列的处理器在处理能力上存在差距,特别是在需要大量矩阵运算的任务中表现不佳。
-
内存类型:
- 在内存方面,我们使用的DDR4内存虽然提供了足够的带宽和容量,但是与最新的DDR5内存相比,在读写速度上有明显的劣势。根据相关测试,DDR5内存的读写速度比DDR4内存高出约2000MB/s,提升幅度在35%~41%之间。这种速度上的差异可能影响到数据加载和处理的速度,进而影响整体的推理效率。
-
GPU型号:
- 虽然NVIDIA GeForce RTX 3090是一款高性能显卡,但在处理极其庞大的模型时,其24GB的显存限制可能成为瓶颈。相比之下,RTX 4090采用了更先进的架构,能够在相同条件下提供更高的计算能力和更好的能效比。这可能是导致我们在实际测试中未能达到理想推理速率的一个重要原因。
结论与建议
综上所述,为了进一步提升DeepSeek-R1模型在本地部署时的推理性能,建议考虑升级硬件配置,特别是选择支持AMX指令集的CPU、采用DDR5内存以及选用更高性能的GPU。