KTransformer + DeepSeek 部署方案
基础
Hugging Face
什么是Hugging Face? -- Hugging Face Transformers 萌新完全指南
模型量化技术概述及 GGUF/GGML 文件格式解析
模型的选择
相关讨论:
What is better ? 7B-Q4_K_M or 13B-Q2_K ?
模型提供方:
软硬件环境
服务器基础软硬件信息
-
OS
-
cat /etc/os-release
NAME="Fedora Linux"
VERSION="41 (Server Edition)" -
uname -a
-
-
CPU
-
lscpu
-
lscpu | grep amx
未有内容输出,本服务器CPU不支持AMX功能
-
-
GPU
nvidia-smi
RTX 4090(24GB) * 2
CUDA Version: 12.4
-
DRAM
df -h
du -h /path/to/see
搭建深度学习环境
目标:PyTorch 2.6 Python 3.12
# 激活conda虚拟python环境
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py312_24.4.0-0-Linux-x86_64.sh
conda create -n pytorch2.6-py3.12 python=3.12
conda activate pytorch2.6-py3.12
# pip 换源 在虚拟python环境pytorch2.6-py3.12下
vim ~/usr/miniconda3/envs/pytorch2.6-py3.12/pip.conf
## 添加如下内容
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
# conda 换源
vim ~/.condarc
## 添加如下内容
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
ssl_verify: true
# 安装PyTorch 2.6
## 访问https://pytorch.org/get-started/locally/
pip3 install torch torchvision torchaudio
## 检测是否安装成功
python
import torch
torch.cuda.is_available()
模型下载
# 基于hf-mirror.com使用hfd进行下载
## 下载hfd
cd ~/tools
wget https://hf-mirror.com/hfd/hfd.sh
chmod a+x hfd.sh
alias hfd="$PWD/hfd.sh"
## 使用镜像
echo 'export HF_ENDPOINT="https://hf-mirror.com"' >> ~/.bashrc
source ~/.bashrc
## 下载模型
hfd bartowski/DeepSeek-V2.5-GGUF --include *Q6_K*.gguf --local-dir /mnt/data/yxlin/deepseek/DeepSeek-V2.5-GGUF/DeepSeek-V2.5-Q6_K
具体教程:
配置文件下载
hfd deepseek-ai/DeepSeek-V2.5 --exclude *.safetensors --local-dir /mnt/data/yxlin/deepseek/DeepSeek-V2.5
# 上述命令下载完后会漏掉model.safetensors.index.json文件,直接wget补一下
wget https://hf-mirror.com/deepseek-ai/DeepSeek-V2.5/blob/main/model.safetensors.index.json
KTransformer下载
因为CPU不支持AMX功能,所以使用KTransformer V2.0
包管理器
Linux 发行版通常会预装特定的包管理器,不同的发行版使用不同的包管理器。以下是一些常见发行版及其对应的包管理器:
- Debian、Ubuntu 及其衍生版:使用 APT(Advanced Package Tool)。命令如
apt-get
、apt
和dpkg
。 - Red Hat、CentOS、Fedora:使用 YUM 或 DNF(Fedora 及较新的版本一般使用 dnf),同时底层使用 RPM(Red Hat Package Manager)。
- openSUSE:使用 Zypper 和 RPM。
- Arch Linux:使用 pacman。
- Gentoo:使用 Portage。
本服务器的OS为Fedora,可通过which yum
这样尝试的方式查看包管理器为谁
本服务器的包管理器为yum
环境准备
# Adding CUDA to PATH
## 查看CUDA按照位置
which nvcc
vim ~/.bashrc
export PATH=$PATH:/usr/local/cuda-12.4/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.4/lib64
export CUDA_PATH=$CUDA_PATH:/usr/local/cuda-12.4
rpm -q gcc # 查询 gcc 是否安装
rpm -q gcc-c++ # 查询 g++ 所在的包,通常名称为 gcc-c++
rpm -q cmake # 查询 cmake 是否安装
rpm -q ninja-build # 查询 ninja-build 是否安装
rpm -q libstdc++ # 查询 libstdc++ 是否安装
pip3 install packaging ninja cpufeature numpy
pip3 install flash-attn==2.7.3 --no-build-isolation
conda install -c conda-forge libstdcxx-ng
# Attention: you should ensure that the version identifier of the GNU C++standard library used by Anaconda includes GLIBCXX-3.4.32
strings /path/to/your/anaconda/env/yourEnvName/lib/libstdc++.so.6 | grep GLIBCXX
安装KTransformer
git clone -b main https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
git submodule init
git submodule update
export USE_NUMA=1
bash install.sh
# 查看当前是否安装为正确版本V0.2
pip show ktransformers
开启简单对话
# 到ktransformers项目的根目录下
cd /mnt/data/yxlin/ktransformers
python -m ktransformers.local_chat --model_path /mnt/data/yxlin/deepseek/DeepSeek-V2.5 --gguf_path /mnt/data/yxlin/deepseek/DeepSeek-V2.5-GGUF/DeepSeek-V2.5-Q6_K --max_new_tokens 1000
python -m ktransformers.local_chat --model_path /mnt/data/yxlin/deepseek/DeepSeek-V2.5 --gguf_path /mnt/data/yxlin/deepseek/DeepSeek-V2.5-GGUF/DeepSeek-V2.5-Q2_K_L --max_new_tokens 1000