开源 AI 模型实际部署以及后端搭建(一)--环境配置

发愤图强想做全栈的小陈 2024-09-12 09:01:02 阅读 60

开源 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:我们需要在英伟达官网找到对应卡支持的版本!!! )

<code>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

+---------------------------------------------------------------------------------------+code>

| 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"code>

保存文件后,运行:

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/cu121code>

接着

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-clihf_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

基本用法

huggingface-cli download --resume-download FlagAlpha/Llama3-Chinese-8B-Instruct --local-dir FlagAlpha/Llama3-Chinese-8B-Instruct

下载数据集

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下载模型

# !pip install -U "huggingface_hub[cli]"

huggingface-cli download KwaiVGI/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"

最后到项目根目录下

# 源输入是图像

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。