一步一步教你部署ktransformers,大内存单显卡用上Deepseek-R1

news/2025/3/22 13:57:32/文章来源:https://www.cnblogs.com/hvker/p/18786501

环境准备

硬件环境

CPU:intel四代至强及以上,AMD参考同时期产品
内存:800GB以上,内存性能越强越好,建议DDR5起步
显卡:Nvidia显卡,单卡显存至少24GB(用T4-16GB显卡实测会在加载模型过程中爆显存),nvidia compute capability至少8.0(CUDA GPUs - Compute Capability | NVIDIA Developer)

系统环境

Ubuntu Server 24.04 LTS

CUDA 12.4

屏蔽开源nvidia显卡驱动

# 编辑黑名单配置,屏蔽开源nvidia显卡驱动,以安装官方驱动
sudo vi /etc/modprobe.d/blacklist.conf

在文件的最后添加下面两行

blacklist nouveau
options nouveau modeset=0

输入下面的命令更新并重启

sudo update-initramfs -u
sudo reboot

继续执行命令

lsmod | grep nouveau # 验证是否禁用成功,成功的话这行命令不会有输出
sudo apt-get purge nvidia* # 卸载已有的驱动

安装cuda工具包

将cuda工具包下载好后(不要盲目追求新版,平台会不适配),在驱动所在目录执行(选择安装选项中,默认选中安装显卡驱动)

sudo chmod +x cuda_12.4.0_550.54.14_linux.run
sudo sh cuda_12.4.0_550.54.14_linux.run

设置全局环境变量

sudo vi /etc/profile.d/myenv.sh
export PATH="$PATH:/usr/local/cuda-12.4/bin"
export LD_LIBRARY_PATH="/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH"
export LIBRARY_PATH="/usr/local/cuda-12.4/lib64:$LIBRARY_PATH"
export CUDA_PATH="/usr/local/cuda-12.4"

重启使生效,指令nvcc -V测试

安装cuDNN

将cuDNN下载好后,在所在目录执行

sudo dpkg -i cudnn-local-repo-ubuntu2404-9.7.1_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2404-9.7.1/cudnn-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn-cuda-12

更新cuDNN时,在apt-get update前删除旧版,比如

sudo rm -rf /var/cudnn-local-repo-ubuntu2404-9.6.0
sudo rm cudnn-local-ubuntu2404-9.6.0.list

系统软件包

sudo apt-get update
sudo apt-get install build-essential cmake ninja-build

Miniconda3

Miniconda3安装脚本

conda环境创建

访问pypi困难的小伙伴可以参考换源方法:
https://mirrors.huaweicloud.com/mirrorDetail/5ea14ecab05943f36fb75ee6?mirrorName=python&catalog=tool

conda create --name ktransformers python=3.11
conda activate ktransformers # 首次使用你可能需要执行 ‘conda init’ 并重开终端conda install -c conda-forge libstdcxx-ng # Anaconda provides a package called `libstdcxx-ng` that includes a newer version of `libstdc++`, which can be installed via `conda-forge`.strings ~/miniconda3/envs/ktransformers/lib/libstdc++.so.6 | grep GLIBCXXpip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 pip3 install packaging ninja cpufeature numpy

注:download.pytorch.org不挂代理的话速度很慢。截至2025年3月22日,pytorch不加--index-url参数默认即 whl/cu124,所以可以去掉--index-url参数以事先设置好的全局国内源下载。实时具体情况可在Start Locally | PyTorch查看。

flash-attention

flash-attention下载页
注:打开链接后,点击show more可以查看更多版本,根据以上安装的版本信息下载相应版本,一般cxx11abi为FALSE

安装ktransformers

拉取源码并编译

注:访问不了github的小伙伴可以在网上搜索github换源方法

git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
git submodule init
git submodule update

安装
如果服务器是2CPU+2倍模型大小及以上内存的需要先执行:

 # Make sure your system has dual sockets and double size RAM than the model's size (e.g. 1T RAM for 512G model)
apt install libnuma-dev
export USE_NUMA=1

开始安装

bash install.sh

启用服务

下载模型

模型下载源

  1. unsloth/DeepSeek-R1-Q4_K_M
  2. ollama拉取后,在blob内找到最大的文件,添加后缀.gguf

模型存放

以下按照模型存放于/mnt/data/models/DeepSeek-R1-Q4_K_M_GGUF/为例
将下载好的gguf文件全部放入该文件夹
然后下载
config.json
configuration_deepseek.py
generation_config.json
model.safetensors.index.json
modeling_deepseek.py
tokenizer.json
tokenizer_config.json
存入该文件夹

启用RESTful API服务

ktransformers --model_name DeepSeek-R1-q4_k_m --model_path /mnt/data/models/DeepSeek-R1-Q4_K_M_GGUF --gguf_path /mnt/data/models/DeepSeek-R1-Q4_K_M_GGUF --optimize_config_path ~/ktransformers/ktransformers/optimize/optimize_rules/DeepSeek-V3-Chat.yaml --port 10002 --cpu_infer 65 --max_new_tokens 2048 --force_think

注:

  1. --optimize_config_path后面的文件夹位置相应换成你git clone ktransformers时的位置
  2. The command args --cpu_infer 65 specifies how many cores to use (it's ok that it exceeds the physical number, but it's not the more the better. Adjust it slightly lower to your actual number of cores)

API兼容OpenAI和Ollama

测试效果

试验环境

CPU:至强Gold-6454S-2.20GHz@32核心 x2
内存:DDR5-64G x16
显卡:NV L20-48G x4
硬盘:1.92TB SATA SSD x2
RAID卡:1G缓存 带电容
网卡:2个千兆电口+2个万兆光口(含光模块)

效果截图


测试每秒tokens在6-13tokens/s左右

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/903456.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20244119实验一《Python程序设计》实验报告

课程:《Python程序设计》 班级: 2441 姓名: 霍彬斌 学号:20244109 实验教师:王志强 必修/选修: 公选课 一、实验内容 熟悉Pycharm等开发环境; 掌握基本的Python运行和调试技能; 掌握基本的Python编程技能。 二、实验过程及结果 1.熟悉Python开发环境; 本次实验使用pyc…

WebSocket系列 注册 @ServerEndpoint类失败

WebSocket系列—注册 @ServerEndpoint类失败 目录WebSocket系列—注册 @ServerEndpoint类失败一、问题背景二、寻找问题三、解决问题3.1、自己定义的切面3.2、外部框架的切面四、参考博客五、WebSocket系列地址 一、问题背景 博主最近分到后端主动推送报警业务,调研了一圈(轮…

实验1 C语言输入输出和简单程序编写补充

任务二:判断它能否构成三角形 #include <stdio.h> int main(){ double a, b, c; scanf_s("%lf%lf%lf", &a, &b, &c); if ((a + b > c) && (a + c > b) && (b + c > a)) printf("能构成三角…

ASE15N45-ASEMI智能家居专用ASE15N45

ASE15N45-ASEMI智能家居专用ASE15N45编辑:ll ASE15N45-ASEMI智能家居专用ASE15N45 型号:ASE15N45 品牌:ASEMI 封装:TO-220 批号:最新 最大漏源电流:15A 漏源击穿电压:450V RDS(ON)Max:0.38Ω 引脚数量:3 沟道类型:N沟道MOS管、中低压MOS管 漏电流:ua 特性:N沟道M…

什么是RabbitMQ入门

一.什么是RabbitMQ 中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必须要有一个通信中间件,即中间件=平台+…

使用BL0937 IC进行交流电源监控

一个简单的电路来监测交流电源,接线板可以插在任何地方,显示电压,电流和功率。交流电源监控是当今物联网相关应用中的一个惊人功能,例如智能风扇,开关和板。一些优秀的公司董事会在他们的产品中实施了这项技术,并持续监控供应的输出功率。在本地设备层面监控电源有其自身…

20244224 实验一《Python程序设计》实验一报告

课程:《Python程序设计》 班级: 2442 姓名: 旦曾央京 学号:20244224 实验教师:王志强 实验日期:2025年3月18日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能; 3.编写程序,练习变量和类型、字符串、对象、缩进和注释等; 4.编…

【智慧构造题】CF1427E Xum

我们发现这个原数为奇数的条件比较神秘,于是我们考虑每次把这个数字第一位 \(1\) 给干了。 考虑怎么构造。 令 $d=\lfloor \log_2 x \rfloor $ 令 \(x=1abc1\) \(x1=1abc10000\) \(x2=1abc0abc1\) \(x3=x2+x1=1abc01abc1\) \(x4=x ⊕ x3=1abc000000\) \(x5=x1+x1=1abc100000…

DataGrip结果运行在代码区域

DataGrip运行过后发现运行的结果在代码区域解决方式进入设置界面 点击左上角File(文件)->settings(设置) 搜索栏输入results或output and results 找到下面的设置界面 找到Results下的 Show results in editor ,取消勾选

我们接着创建项目中的app

在pycharm中运行以下代码python manage.py startapp teslaapp运行后呢会在目录中在创建一个名字叫teslaapp的包接着我们还需要在项目Tesla包中的setting文件中 添加我们刚创建的app名称

CMU_15445_Project4_BonusTask_Serializable_Verification

Serializable Verification 我们知道 MVCC 并不能解决幻读以及写偏差的问题, 仅通过 MVCC 的事务调度是无法保证数据库引擎的 ACID 原则的, 那么为了保证数据库的 ACID 原则, 即使在调度的过程中无法保证, 可以通过在 Commit 的时候, 通过验证, Abort 可能造成写偏差于幻读的事…

使用低代码平台设计UI

由于自己不是专业的设计师,就自己简单画个UI界面,那么就可以用到下面的低代码平台 http://120.92.142.115:81/vform3/ 里面可以选择体验vue3模板 进入下面图中的设计界面可以自己拖动组件 修改组件展示给用户的标签名称 以及数据传输时发送的字段名称 可以设置是否必填 默认值…