开源 AI 模型实际部署以及后端搭建(一)--环境配置
本文是博主zzzzz想要综合多个开源AI模型分布式部署,以及分布式后端反馈的搭建日记
技术栈
python 与 golang
Gin框架,grpc,Redis等等
基础环境搭建
算力平台 ( cuda , conda )
基本需求显卡支持调用cuda且满足后续所提项目的显存(最好>=12GB)
若搭建在虚拟机上需独占内存
对于一台新开的Linux机子,
一开始不少困扰大家的就是环境搭建,
我看过周围的人搭建环境卡了两天都没搭好(请不要让apt或者pip等工具自己匹配版本下载),
于此,我在这里写详细一些.
接下来,我以本人的Ubuntu Linux 22.04 + NVIDIA RTX 5000 架构:Turing 举例 (T4可以照抄,其他更多型号要留意适配cuda版本)
以我的举例 ( PS:我们需要在英伟达官网找到对应卡支持的版本!!! )
wget https://developer.download.nvidia.com/compute/cuda/12.3.1/local_installers/cuda_12.3.1_545.23.08_linux.run
安装nvidia显卡驱动首先需要禁用nouveau,不然会碰到冲突的问题,导致无法安装nvidia显卡驱动。
编辑文件blacklist.conf
sudo vim /etc/modprobe.d/blacklist.conf
在文件最后部分插入以下两行内容
blacklist nouveau
options nouveau modeset=0
更新系统
sudo update-initramfs -u
之后需要重新启动
sudo reboot
重启之后
我们回到下载cuda的位置
给予安装权限
chmod +x cuda_12.3.1_545.23.08_linux.run
安装前保证之前安装过build-essential
sudo apt install build-essential
即可
sudo ./cuda_12.3.1_545.23.08_linux.run
若出现Xrog报错直接kill
killall Xorg
进入安装程序后我们可以直接全部默认也可选择性安装
最后输入
nvidia-smi
即有
Sat Aug 31 01:43:40 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.08 Driver Version: 545.23.08 CUDA Version: 12.3 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 Quadro RTX 5000 Off | 00000000:0B:00.0 Off | Off |
| 33% 32C P8 4W / 230W | 9MiB / 16384MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 255944 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 256103 G ...libexec/gnome-remote-desktop-daemon 2MiB |
+---------------------------------------------------------------------------------------+
我们的驱动就安装好了
接下来我们安装conda
对于隔离不同python环境此处很重要
以我举例
wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh
下载好后
bash Anaconda3-2023.03-1-Linux-x86_64.sh
安装中途记得填入yes否则他默认no就不会帮你配置默认环境
安装完成后,建议添加 Anaconda 到系统环境变量中。
在终端中运行以下命令:
source ~/.bashrc
或者手动编辑 .bashrc 文件,
在文件末尾添加以下内容:
export PATH="$HOME/anaconda3/bin:$PATH"
保存文件后,运行:
source ~/.bashrc
当出现
(base) zzzzz@zzzzz-10L:~$
即conda安装完毕
后端平台 ( )
Golang
下载好golang并查看版本
https://golang.google.cn/dl/go1.23.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
设置环境变量:
确保你的 PATH
环境变量中包含 Go 的安装路径。你可以在 ~/.bashrc
文件中添加以下行:
export PATH=$PATH:/usr/local/go/bin
然后重新加载配置文件:
source ~/.bashrc
验证安装:
确认你已经成功安装了新的 Go 版本:
go version
Goproxy
打开你的终端并执行
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
然后我们如果是运行下载的项目既可以运行配置环境
go mod tidy
Mysql
mysql准备
sudo apt install -y mysql-server-8.0
如果不加-y
会在安装过程中,
系统将提示你设置MySQL的root密码
启动MySQL服务
安装完成后,MySQL服务会自动启动,未启动则使用以下命令启动MySQL服务:
sudo systemctl start mysql
并将MySQL设置为开机自启动:
sudo systemctl enable mysql
检查MySQL状态
你可以使用以下命令来检查MySQL是否正在运行:
sudo systemctl status mysql
默认安装是没有设置密码的,需要我们自己设置密码。
登录mysql,在默认安装时如果没有让我们设置密码,则直接回车就能登录成功。
sudo mysql
配置8.0版本参考:
注意: 在MySQL8.0以后的版本更改密码要使用Alter的方式, 而且要指定mysql_native_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';
quit;
我这里通过这种方式没有实现所有IP都能访问;我是通过直接修改配置文件才实现的,
MySQL8.0版本把配置文件 my.cnf 拆分成mysql.cnf 和mysqld.cnf,
我们需要修改的是mysqld.cnf文件:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改 bind-address,保存后重启MySQL即可。
bind-address = 0.0.0.0
重启MySQL重新加载一下配置:
sudo systemctl restart mysql
之后重启MySQL以root登录mysql -u root -p
,
密码就是我们刚刚设的
详细后续参考其他mysql教程
AI项目服务器部署
自然语言模型 AI Llama
这个模型有7B,13B,80B...版本
我的可以跑下7B 后续以7B为示例
参考汉化模型 star 比较多的模型 https://github.com/LlamaFamily/Llama-Chinese?tab=readme-ov-file
环境配置
我们先创建一个环境
要求3.10以上
conda create -n Llama python=3.10
conda activate Llama
接着我们对着 cuda 驱动型号下载 pytorch 等必要工具 ,
这里需注意!!!不然跑到 cpu 去了
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
或者使用
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
接着
git clone https://github.com/LlamaFamily/Llama-Chinese.git
国内镜像下载: git clone https://mirror.ghproxy.com/https://github.com/LlamaFamily/Llama-Chinese.git
cd Llama-Chinese
pip install -r requirements.txt
我们就下好本地 Llama 及其依赖项
huggingface工具使用
此网站有很多大模型和训练集, 是找模型和训练模型的好地方
先去下载必要工具
pip install -U huggingface_hub
处于国内则需要镜像
否则无法使用
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli+hf_transfer
huggingface-cli
和 hf_transfer
是 hugging face 官方提供的专门为下载而设计的工具链。
前者是一个命令行工具,后者是下载加速模块。
hf_transfer
依附并兼容 huggingface-cli
,
是 hugging face 官方专门为提高下载速度基于 Rust 开发的一个模块,
开启后在哪怕在拥有糟糕的网络 SZTU 机器上可以跑到最高 180MB/s !!!
pip install -U hf-transfer
export HF_HUB_ENABLE_HF_TRANSFER=1
基本用法
bash
huggingface-cli download --resume-download FlagAlpha/Llama3-Chinese-8B-Instruct --local-dir FlagAlpha/Llama3-Chinese-8B-Instruct
下载数据集
rust
huggingface-cli download --resume-download --repo-type dataset lavita/medical-qa-shared-task-v1-toy
值得注意的是,有个--local-dir-use-symlinks False
参数可选,
因为huggingface的工具链默认会使用符号链接来存储下载的文件,
导致--local-dir
指定的目录中都是一些"链接文件",
真实模型则存储在~/.cache/huggingface
下,
如果不喜欢这个可以用 --local-dir-use-symlinks False
取消这个逻辑。
删除模型要在真实模型处删除,不然自以为删除后,发现还是没有空间
| 0.00/826 [00:00<?, ?B/s]
| 168M/9.87G [00:12<11:58, 13.5MB/s]
| 220M/9.82G [00:13<09:08, 17.5MB/s]
| 31.5M/9.96G [00:30<2:29:19, 1.11MB/s]
| 577M/9.82G [00:36<11:36, 13.3MB/s]
| 409M/9.90G [00:36<08:43, 18.1MB/s]
| 199M/9.87G [00:35<29:42, 5.43MB/s]
| 199M/5.69G [00:35<17:37, 5.19MB/s]
| 189M/9.96G [00:34<31:47, 5.12MB/s]
| 493M/9.87G [00:36<11:01, 14.2MB/s]
像这种70+G的大模型, 通过此工具仅需一顿饭时间即可下好。
介绍完基本用法
我们去到zzzzz@zzzzz-10L:~/project/Llama-Chinese
huggingface-cli download --resume-download FlagAlpha/Llama3-Chinese-8B-Instruct --local-dir FlagAlpha/Llama3-Chinese-8B-Instruct
下载好后
python examples/chat_gradio.py --model_name_or_path FlagAlpha/Atom-7B-Chat
即可以使用webui查看模型部署成功
想了解更多可以访问 https://github.com/LlamaFamily/Llama-Chinese.git
视频生视频 LivePortrait
环境搭建
与前者同理
git clone https://github.com/KwaiVGI/LivePortrait
cd LivePortrait
# 使用conda创建环境
conda create -n LivePortrait python=3.9
conda activate LivePortrait
对于pytorch同理
这里需注意!!!不然跑到 cpu 去了
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
或者使用
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
最后
安装依赖项
pip install -r requirements.txt --no-deps
# 防止自动更新pytorch导致前面环境配置崩溃
同理在huggingface下载模型
bash
# !pip install -U "huggingface_hub[cli]"
huggingface-cli download KwaiVGI/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"
最后到项目根目录下
bash
# 源输入是图像
python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d0.mp4
# 源输入是视频 ✨
python inference.py -s assets/examples/source/s13.mp4 -d assets/examples/driving/d0.mp4
# 更多选项请见
python inference.py -h
若能生成即说明可以使用
想了解更多可以访问 https://github.com/KwaiVGI/LivePortrait