🚀 硬件准备
- 显卡:RTX4090 * 1 (只用到了14GB)
- 内存:384GB
- 存储:NVMe SSD 1TB+
个人技能:
- 熟练掌握conda、pip工具
- 了解各个库的功能
写在前面:DeepSeek R1 671B非常大,本文介绍基于ktransformer的部署方法,把大部分参数加载到内存中去,如果内存不够,无法部署成功。本文不会介绍conda命令和pip等命令的使用,适合有一定基础的开发者。
一、下载模型
模型地址:魔搭社区
安装modelscope:
pip install modelscope
下载modelscope的模型(国内不会断):
from modelscope import snapshot_download
snapshot_download(
repo_id = "unsloth/DeepSeek-R1-GGUF",
local_dir = "DeepSeek-R1-Q4_K_M",
allow_patterns = ["DeepSeek-R1-Q4_K_M*"],
)
运行上述代码以后,会在当前目录下出现这个文件,就算成功了。
二、安装llama.cpp
上一步下载好了模型,这个模型是切分过的,我们先安装llama.cpp给它合并,编译llama.cpp:
apt-get update
apt-get install build-essential cmake curl libcurl4-openssl-dev -y
git clone https://github.com/ggerganov/llama.cpp
cmake llama.cpp -B llama.cpp/build \
-DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-quantize llama-cli llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp
编译成功如下(llama-gguf-split)等下用得着:
运行命令把下载的模型合并(/root/ollama/deepseek/DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf就是上一步下载的模型地址):
./llama-gguf-split --merge /root/ollama/deepseek/DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf DeepSeek-R1-Q4_K_M.gguf
得到这个文件DeepSeek-R1-Q4_K_M.gguf(376GB+):
三、安装并使用ktransformers部署deepseek R1 671B
克隆代码并安装:
git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
git submodule init
git submodule update
export USE_NUMA=1
make dev_install # or sh ./install.sh
实际上在我安装的时候,还会报一些依赖没有,这时候要自己手动安装一下。
开启运行(路径按照自己的来):
python ./ktransformers/local_chat.py --model_path deepseek-ai/DeepSeek-R1 --gguf_path /root/ollama/deepseek/DeepSeek-R1-Q4_K_M --cpu_infer 65 --max_new_tokens 1000
出现chat就是成功了:
对话一下:
查看一下设备占用:
共14GB显存+375GB内存可部署成功。