环境准备

硬件环境

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 GLIBCXX pip3 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左右

一步一步教你部署ktransformers,大内存单显卡用上Deepseek-R1的更多相关文章

  1. 通过Dapr实现一个简单的基于.net的微服务电商系统(四)——一步一步教你如何撸Dapr之订阅发布

    之前的章节我们介绍了如何通过dapr发起一个服务调用,相信看过前几章的小伙伴已经对dapr有一个基本的了解了,今天我们来聊一聊dapr的另外一个功能--订阅发布 目录:一.通过Dapr实现一个简单的基 ...

  2. 通过Dapr实现一个简单的基于.net的微服务电商系统(三)——一步一步教你如何撸Dapr

    目录:一.通过Dapr实现一个简单的基于.net的微服务电商系统 二.通过Dapr实现一个简单的基于.net的微服务电商系统(二)--通讯框架讲解 三.通过Dapr实现一个简单的基于.net的微服务电 ...

  3. 通过Dapr实现一个简单的基于.net的微服务电商系统(六)——一步一步教你如何撸Dapr之Actor服务

    我个人认为Actor应该是Dapr里比较重头的部分也是Dapr一直在讲的所谓"stateful applications"真正具体的一个实现(个人认为),上一章讲到有状态服务可能很 ...

  4. 通过Dapr实现一个简单的基于.net的微服务电商系统(八)——一步一步教你如何撸Dapr之链路追踪

    Dapr提供了一些开箱即用的分布式链路追踪解决方案,今天我们来讲一讲如何通过dapr的configuration来实现非侵入式链路追踪的 目录:一.通过Dapr实现一个简单的基于.net的微服务电商系 ...

  5. 通过Dapr实现一个简单的基于.net的微服务电商系统(十一)——一步一步教你如何撸Dapr之自动扩/缩容

    上一篇我们讲到了dapr提供的bindings,通过绑定可以让我们的程序轻装上阵,在极端情况下几乎不需要集成任何sdk,仅需要通过httpclient+text.json即可完成对外部组件的调用,这样 ...

  6. 一步一步教你如何在linux下配置apache+tomcat(转)

    一步一步教你如何在linux下配置apache+tomcat   一.安装前准备. 1.   所有组件都安装到/usr/local/e789目录下 2.   解压缩命令:tar —vxzf 文件名(. ...

  7. 一步一步教你将普通的wifi路由器变为智能广告路由器

    一步一步教你将普通的wifi路由器变为智能广告路由器 相信大家对WiFi智能广告路由器已经不再陌生了,现在很多公共WiFi上网,都需要登录并且验证,这也就是WiFi广告路由器的最重要的功能.大致就是下 ...

  8. 一步一步教你使用Git

    一步一步教你使用Git 互联网给我们带来方便的同时,也时常让我们感到困惑.随便搜搜就出一大堆结果,然而总是有大量的重复和错误.小妖发出的内容,都是自己实测过的,有问题请留言. 现在,你已经安装了Git ...

  9. 使用WPF教你一步一步实现连连看

    使用WPF教你一步一步实现连连看(一) 第一步: 问题,怎样动态的建立一个10*10的grid(布局) for (int i = 0; i < 10; i++){ RowDefinition r ...

  10. 一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app

    一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app 转载 作者:jrainlau 链接:https://segmentfault.com/a/1190000005844155 ...

随机推荐

  1. 《jQueryEasyUI从零开始学》-施尧2018一书的配套源代码和学习资源

    <jQueryEasyUI从零开始学>-施尧2018一书的配套源代码和学习资源:下载地址 提取码:uuly

  2. 即时通讯框架MobileIMSDK的H5端开发快速入门

    ► 相关链接: ① MobileIMSDK-H5端的详细介绍 ② MobileIMSDK-H5端的开发手册new(* 精编PDF版) 一.技术准备 您是否已对Web端即时通讯技术有所了解? 1)新手入 ...

  3. milvus基础

    nlist和nprobe nlist 是调用 create_index 时设置的参数,nprobe 则是调用 search 时设置的参数. IVFLAT 和 SQ8 索引都是通过聚类算法把大量的向量划 ...

  4. Discord技术架构调研(IM即时通讯技术架构分析)

    一.目标 调研 discord 的整体架构,发掘可为所用的设计思想 二.调研背景 Discord作为目前比较火的一个在线聊天和语音通信平台且具有丰富的功能.另外其 "超级"群 概念 ...

  5. 1011. 在 D 天内送达包裹的能力

    在 D 天内送达包裹的能力 传送带上的包裹必须在 days 天内从一个港口运送到另一个港口. 传送带上的第 i 个包裹的重量为 weights[i].每一天,我们都会按给出重量(weights)的顺序 ...

  6. WPF BitmapSource /BitmapImage 获取像素点颜色

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能

    大家好,我是编程乐趣. 我们都知道,要实现对结构化的数据(文本)搜索是比较容易的,但是对于非结构化的数据,比如图片,视频就没那么简单了. 但是现在有了AI模型,实现图片分类.搜索等功能,就变得容易很多 ...

  8. java重载-构造方法也存在重载-数据类型的提升

    重载 1.一个类中不能声明多个相同的方法,属性. 2.上面的相同指的是方法名,参数列表相同.和返回值类型无关. 3.如果方法名相同,但是参数列表(个数,顺序,类型)不相同,会认为是不同的方法,在jav ...

  9. DeepSeek模型量化

    技术背景 大语言模型(Large Language Model,LLM),可以通过量化(Quantization)操作来节约内存/显存的使用,并且降低了通讯开销,进而达到加速模型推理的效果.常见的就是 ...

  10. C++ 创建进程的方法

    1. C++中创建进程的代码示例: // ProcessDemo.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include<windo ...