ubuntu22.02使用ktransformers建設deepseek

字號+ 編輯: 国内TP粉 修訂: 种花家 來源: ktransformers 2025-03-26 我要說兩句(0)

根據官方給出的文档根據實際架設經驗, 做個簡單記錄。

首先在这里下载英伟达官网驱动, 我的是3090, 使用了Geforce版驱动。

https://www.nvidia.cn/drivers/

接下来,下载cuda和miniconda准备好

wget https://developer.download.nvidia.cn/compute/cuda/12.8.1/local_installers/cuda_12.8.1_570.124.06_linux.run
wget https://mirrors-i.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py312_24.4.0-0-Linux-x86_64.sh

(此步可以跳过)因为架设AI环境的本地硬盘很小, 不方便存大的模型文件, 正好有NAS, 连接了NAS共享, 用于拉取之前存储的671b模型

sudo apt install cifs-utils
sudo mount -t cifs //服务器地址/共享目录名称 /usr/local/smb/public_assets -o username=用户名,password=密码,uid=$(id -u),gid=$(id -g),file_mode=0777,dir_mode=0777

用apt安装依赖包

sudo apt update && sudo apt install build-essential cmake ninja-build
sudo apt install gcc-12 pkg-config libglvnd-dev

开始安装N卡驱动

sudo bash NVIDIA-Linux-x86_64-570.133.07.run

安装驱动的过程中, 有个小插曲, 需要把nouveau驱动屏蔽掉, 传送门 https://www.wkwkk.com/articles/9141fecaa3abf65b.html

安装完毕之后, 检查驱动是否正确

nvidia-smi

如果显示有显卡, 驱动就安装成功, 故障了就需要麻烦查查了

安装cuda, 注意: 安装时需要把Driver选项的勾给去掉, 要不然之前的驱动白装了。

sudo bash cuda_12.8.1_570.124.06_linux.run

把cuda加入到PATH

文档地址 https://kvcache-ai.github.io/ktransformers/en/install.html

接下来使用nano或者vi来把PATH变量写到系统里。

sudo nano ~/.bashrc

内容如下:

# Adding CUDA to PATH
if [ -d "/usr/local/cuda/bin" ]; then
    export PATH=$PATH:/usr/local/cuda/bin
fi
if [ -d "/usr/local/cuda/lib64" ]; then
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
    # Or you can add it to /etc/ld.so.conf and run ldconfig as root:
    # echo "/usr/local/cuda-12.x/lib64" | sudo tee -a /etc/ld.so.conf
    # sudo ldconfig
fi
if [ -d "/usr/local/cuda" ]; then
    export CUDA_PATH=/usr/local/cuda
fi

编辑完之后,重进终端,(你也可以source ~/.bashrc读配置)

验证CUDA_PATH是否存在

echo $CUDA_PATH

验证nvcc到底安装成功没

nvcc -V

执行miniconda安装, 你可以自行决定安装位置, 安装器中途会问你是否初始化conda? 如果选yes, 相当于执行了conda init

bash Miniconda3-py312_24.4.0-0-Linux-x86_64.sh

重进终端, 如果命令提示符左侧出现(base)则代表miniconda正确安装

设定pip包安装源地址

pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

启动虚拟环境, 这里我把kt专用的虚拟环境取名为ktrans

conda create --name ktrans python=3.12
conda activate ktrans

安装kt虚拟环境依赖库

conda install -c conda-forge libstdcxx-ng

测试libstdcxx是否正确安装, 假设: conda被安装到了~/conda这个路径下

strings ~/conda/envs/ktrans/lib/libstdc++.so.6 | grep GLIBCXX

安装torch和其他关联依赖库

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
pip3 install packaging ninja cpufeature numpy openai
sudo apt install git

kt源代码, 可能需要梯子, 我是在用户主目录~当中克隆的

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

上述的git submodule update命令如果因为网络原因翻车了, 就手动到github克隆ktransformers子目录thirdparty里面列出的库

接下来, 安装flash attention

pip3 install flash_attn --verbose

这个时候, 你就可以开始编译kt了

bash install.sh

这个时候终端应该在编译kt, 为了节省时间, 你再另开个modelscope终端, 用于下载模型。当然你有条件用huggingface也没毛病。

先从modelscope国内站里起另外一个conda环境, 我随便命名的, 就叫modelscope, 开始启动下载

conda create -n modelscope python=3.12
pip install modelscope

可以从NAS存储里下载, 本地没有的话从modelscope下载

假设: 模型文件存放目录为/usr/local/models/DeepSeek-R1-GGUF/ miniconda被安装到了~/conda/下面

cd /usr/local/models/
sudo ~/conda/envs/modelscope/bin/modelscope download --model unsloth/DeepSeek-R1-GGUF --include DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M* --local_dir ./

下载模型配置文件

cd /usr/local/models/DeepSeek-R1-GGUF/config
sudo ~/conda/envs/modelscope/bin/modelscope download --model deepseek-ai/DeepSeek-R1 --exclude *.safetensors --local_dir ./

回头看看kt编译完没? 如果编译完成了, 可以切换回ktransformers的虚拟环境的终端测试一下, 运行本地聊天

(当然, 你如果心急直接想运行接口服务器, 可以跳过此步。)

怕嫌乱,这里提供一下切换conda虚拟环境的万用命令(我设定的kt专用虚拟环境名称是ktrans):

conda deactivate && conda activate ktrans
python -m ktransformers.local_chat --model_path /usr/local/models/DeepSeek-R1-GGUF/config/ --gguf_path /usr/local/models/DeepSeek-R1-GGUF/ --cpu_infer 14

启动openai标准的服务, 我是16个物理内核, 按照官方文档所说,cpu_infer参数就写了16-2=14。

cd ~/ktransformers && ktransformers --model_path /usr/local/models/DeepSeek-R1-GGUF/config/ --gguf_path /usr/local/models/DeepSeek-R1-GGUF/ --port 10002 --cache_lens=32000 --max_new_tokens=2000 --cpu_infer 14

等待服务加载完成, 一切就绪了, 开命令行测试看看:

curl -X POST http://服务器地址:10002/v1/chat/completions -H "Content-Type: application/json" \
    -d '{"model": "deepseek-R1", "messages": [{"role": "user", "content": "你是谁"}], "temperature": 0.6, "stream": true}'

完结收工~

閲完此文,您的感想如何?
  • 有用

    24

  • 沒用

    0

  • 開心

    1

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • 通過i參數使用國内鏡像給pip安裝提速

  • Conda刪除不用的虛擬環境

  • flask框架知識點總結

  • linux - centos 7.x安裝python3.10教程

我要說說
網上賓友點評