记录最近公司要用到deepseek-r1 671B的模型,希望内网部署,但又显存不足,机缘巧合看到介绍ktransformers的帖子,尝试了搭建,现记录一下。
环境介绍:
在docker中使用nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04 image搭建。CUDA版本12.1
1. 创建一个名为ks的容器(有墙)
docker run --name ks -idt swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04
2. 进入容器
docker exec -it ks /bin/bash
3.安装一些小工具和依赖
apt update
apt install -y vim
apt install -y locales
apt install -y file
apt install -y gdb
apt-get install gcc g++ cmake ninja-build
apt install -y wget
apt install -y sudo
apt install curl
# 生成utf-8
locale-gen en_US.UTF-8
4.安装cuda 12.1
cd /home/
sh cuda_12.1.1_530.30.02_linux.run
chmod +x cuda_12.1.1_530.30.02_linux.run
./cuda_12.1.1_530.30.02_linux.run
然后依照提示安装即可
5.安装miniconda环境
mkdir /home/miniconda
docker cp /mnt/e/Miniconda3-latest-Linux-x86_64.sh ks:/home/miniconda
cd /home/miniconda/
chmod +x Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
输入conda路径是,输入/home/conda
6.添加环境变量 ~/.bashrc
vim ~/.bashrc
export LANG=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export PATH=/home/conda/bin:/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_PATH=/usr/local/cuda
7. init conda env
conda init
退出container,再次进入
docker exec -it ks /bin/bash
8.创建conda ktransformers 环境
conda create --name ktransformers python=3.11
conda activate ktransformers
设置pypi,一个是清华的,一个是官方的,自行选择
# (optinal)配置清华大学pypi
python -m pip install --upgrade pip
pip config set global.index-url Simple Index
# (optinal)配置官方pypi
python -m pip install --upgrade pip
pip config set global.index-url Simple index
9. 安装pytorch和依赖
conda install pytorch pytorch-cuda=12.1 -c pytorch -c nvidia
pip install packaging ninja cpufeature numpy
10. 检查libstdc++.so.6版本
ktransformers要求版本必须大于3.4.30
查看/home/conda/envs/ktransformers/libstdc++.so.6中是否有3.4.30,命令如下:
strings /home/conda/envs/ktransformers/lib/libstdc++.so.6 | grep GLIBCXX
如果没有,通过以下命令更新:
conda install -c conda-forge libstdcxx-ng
11. 安装其他依赖
apt install npm
pip install flash_attn
12.此时检查nodejs是否是>=18.3的版本
node -v
如果不满足,先卸载
apt-get remove --purge nodejs
apt-get autoremove
apt-get install -f
再安装node js
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
apt-get install -y nodejs
node -v
注意:如果包还有冲突,用以下命令删除后,再次执行安装
apt-get remove --purge libnode-dev
13.开始安装ktransformers
cd /home
cd /home/ktransformers/ktransformers/website/
npm install @vue/cli
npm run build
cd /home/ktransformers
pip install .
bash install.sh
到此编译成功,可将本container commit成image
docker commit ks ktransformers:12.1
14.开始使用
先把container创建出来(根据自己的情况挂载磁盘和端口,官方默认端口是10002):
docker run -itd --gpus all -v e:/huggingface:/home/huggingface -p 10005:10005 --name ks-gpu ktransformers:12.1
docker exec -it ks-gpu /bin/bash
进入后,切换conda环境
conda activate ktransformers
ktransformers --model_path /home/huggingface/models/DeepSeek-V2-Lite/ --gguf_path /home/huggingface/models/itlwas_DeepSeek-V2-Lite-Q4_K_M-GGUF/ --port 10005 --web True
看到开始加载
直到出现
代表加载完成,在浏览器中输入http://localhost:10005/web/index.html#/chat
转载请注明出处,谢谢!
知识应是公开的,分享让coder更加强大...