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

开源 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-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

基本用法

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

相关推荐
vibecoding774 小时前
一文搞懂企业级 API 网关选型:12 个维度、4 类企业、7 步落地
人工智能·大模型·ai编程
Rocktech_ruixun4 小时前
机器人本地跑LLM大模型对主板硬件有什么要求?瑞迅科技RK3588/3568方案选型解析
人工智能·科技·嵌入式硬件·机器人·边缘计算
yxlalm4 小时前
Spring AI+RAG 01-项目背景与技术选型
java·人工智能·spring
tedcloud1234 小时前
Wand-Enhancer 怎么搭建?开源 Wand 客户端增强与远程控制工具介绍
大数据·服务器·人工智能·开源·音视频
科技苑5 小时前
如何用Python编程实现一个简单的Web爬虫?
人工智能·python
迅利科技5 小时前
新能源汽车零部件研发,SIMULIA一站式仿真解决方案如何缩短研发周期
人工智能·汽车
嘉琪coder5 小时前
我做了一个 Chrome 扩展,把 YouTube 播放列表批量变成 AI 可读的本地 Markdown
chrome·开源·浏览器
Databuff5 小时前
AI SSH工具,集齐SSH、SFTP、知识库RAG、AI助手
网络·人工智能·ssh
Blockchina6 小时前
从一篇文章到一条完整视频:用 Codex 搭建可复用的 AI 视频生产线
人工智能
Proaiapi6 小时前
一张图介绍gpt-image-2.5
人工智能·gpt