如何使用 ROCm 在 AMD 显卡上运行 AI 计算?(以 AI 绘图为例,安装 PyTorch、TensorFlow)

  • 教程安装环境:
  • Intel Core i5-12600KF 处理器 + AMD Radeon RX6800XT (GFX1030)显卡
  • ROCm仅支持部分AMD GPU,请参考官方支持文档获取支持。
  • 已知使用与 W6800 系列同核心的其他显卡(i.e. RX6900XT/6800XT/6800)可以运行 ROCm 5.5。
  • 本教程不适用于 NVIDIA 显卡。
  • 请确保自身有稳定的网络环境。

参考资料:

  1. ubuntu20.04安装rocm教程,AMD深度学习,6800xt配置pytorch、CUDA 链接
  2. docker学习(一)ubuntu上安装docker 链接

0. 简介

对本教程的简单介绍:众所周知,CUDA 是目前最流行的通用计算框架,绝大多数的 AI 项目,包括 Stable-Diffusion、VITS 等都使用了 PyTorch、TensorFlow 等深度学习框架来进行开发。但 CUDA 仅限 NVIDIA 自己的显卡运行,有什么办法能让 AMD 显卡也能运行的了 AI 深度学习框架呢?答案就是ROCm。

注:ROCm 目前(5.5版本)并没有支持 Windows。官方支持文档 因此本教程在 Ubuntu 20.04.6 LTS上进行。本教程将不会详细介绍操作系统的安装方式。

1. 安装 Ubuntu 20.04.6 LTS

ROCm 对系统软件版本有一定要求,目前较好的系统版本选择是 20.04.6 LTS,Ubuntu 22.04 也是可行的,但有部分用户出现了少量运行 BUG。

这里推荐使用 Rufus 软件在 Windows 下制作启动盘,Rufus 是开源、免费的优秀软件。

系统分区大小建议不低于 100GB。

2. 在 Ubuntu 系统内安装 AMD 显卡驱动程序和 ROCm

打开终端,进入任意文件夹(推荐为主目录),执行下列代码。

sudo apt update && sudo apt dist-upgrade
sudo apt-get install wget gnupg2 
sudo usermod -a -G video $LOGNAME
echo 'ADD_EXTRA_GROUPS=1' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=video' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=render' | sudo tee -a /etc/adduser.conf
sudo wget https://repo.radeon.com/amdgpu-install/22.10/ubuntu/focal/amdgpu-install_22.10.50100-1_all.deb
sudo apt-get install ./amdgpu-install_22.10.50100-1_all.deb 
sudo amdgpu-install --usecase=dkms
amdgpu-install -y --usecase=rocm

注:显卡驱动版本可能会随着时间而更新,如果想要安装更新版本的驱动程序,可以访问这里来查看是否有更新的版本号,然后替换掉上述代码中的下面两行代码。

sudo wget 替换成新版本的驱动链接(选择子目录为 版本号 /ubuntu/focal/*.deb 的文件)
sudo apt-get install 替换成新版本的驱动名称

接下来是配置 ROCm 的环境和权限。

sudo usermod -a -G video $LOGNAME
sudo usermod -a -G render $LOGNAME
echo 'ADD_EXTRA_GROUPS=1' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=video' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=render' | sudo tee -a /etc/adduser.conf
echo 'export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin' | sudo tee -a /etc/profile.d/rocm.sh

配置好后,在终端输入

rocm-smi

如果显示类似下方图片的提示,则代表ROCm环境已经配置成功,可以进行接下来的操作。

如果在安装驱动或者 ROCm 的过程中出现了问题,那么请到结尾处的「问题处理」部分查看解决方式。

3. 下载并安装 Docker

Docker 是一个非常常见的虚拟开发环境,拥有比硬件虚拟机更好的性能和更灵活的调度方式,在Ubuntu上,使用下列命令即可安装。

curl -fsSL https://test.docker.com -o test-docker.sh
sudo sh test-docker.sh

如果系统中没有 curl,请执行:

sudo apt install curl

验证 Docker 是否被正确安装:

docker --version

或者使用官方的 Hello World 镜像验证:

sudo docker run hello-world

Docker 在检测到并未下载镜像时会自动尝试搜索并下载镜像,使用后一种方式验证可以更好地检验网络环境是否可以保证下载稳定。

4. 下载 ROCm Docker 镜像

既然使用了 Docker,就没必要手动安装系统镜像再安装 PyTorch 抑或是 TensorFlow 了,直接使用下方的两个命令下载原生的 ROCm/PyTorch 和 ROCm/TensorFlow 镜像即可。

sudo docker pull rocm/pytorch:latest
sudo docker pull rocm/tensorflow:latest

对于 Stable-Diffusion WebUI 或者 VITS 来说,下载第一个 PyTorch 的镜像即可。

由于镜像环境文件体积还是比较大的(大约30-40GB),因此这一步可能要花费很长时间。

下载好之后,可以使用下面的命令查看当前的镜像文件。

docker images

接下来,通过下面的命令可以从镜像创建一个使用 ROCm GPU 的容器。

# 如果是使用 PyTorch,使用如下命令
sudo docker run -it -v $HOME:/data --privileged --network=host --device=/dev/kfd --device=/dev/dri --group-add video --name pytorchroc rocm/pytorch:latest
# 如果是使用 TensorFlow,使用如下命令
sudo docker run -it -v $HOME:/data --privileged --network=host --device=/dev/kfd --device=/dev/dri --group-add video --name tensorflowroc rocm/tensorflow:latest

同样地,如果只是以 Stable-Diffusion WebUI 或者 VITS 为目标,仅安装第一项命令即可。

该命令中 --name 后面的指令代表新建容器的名称,可以自由更改,容器名称不可重复。

该命令中 --network=host 代表容器与宿主机的网络互通,免于进行端口映射。

创建好之后默认会直接进入容器内,如果以后想要再次进入容器,使用下面的命令:

docker start pytorchroc
# start 后面填写自己容器的名称
docker attach pytorchroc
# 同样地,attach 后面填写自己容器的名称

如果不清楚容器名称的话,使用下面的命令查询:

docker ps -a

如果想退出容器,请使用下面的命令:

exit

5. 安装和启动 Stable-Diffusion WebUI

Stable-Diffusion WebUI 本质上是一个网页式控制界面,使用下面命令将 WebUI 代码克隆到本地。

# 进入容器内操作
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 

克隆好之后,进入文件目录,开始安装依赖。

cd ./stable-diffusion-webui
pip install -r requirements_versions.txt
# 既然有 requirements_versions.txt 文件,更推荐安装此文件的依赖

此步骤要花费较长时间安装,如果在安装过程中出现错误,大概率是网络错误,可以重试几次或者到结尾处的「问题处理」部分查看解决方式。

安装好所有依赖之后,便可以下载模型后再尝试启动 WebUI 了。

python launch.py

6. 下载模型并导入到 Docker 容器

这里推荐几个模型下载网站(请确保自身网络环境稳定)

  1. Hugging Face
  2. Civitai(C站)
  3. 炼丹阁(国内可访问)
  4. Stable Diffusion Models(多为原版模型)
  5. rentrysdmodels

下载好模型后,我们需要把模型导入进 Docker 容器中:

docker cp 模型文件路径 容器名称:容器内路径

其中,对于本教程演示的 rocm/pytorch:latest 镜像,根目录下的 stable-diffusion 地址为:

/var/lib/jenkins/stable-diffusion-webui

如果想要安装 .ckpt 模型,或者 .safetensors 后缀的 ckpt 模型,请放在下面目录:

~/models/Stable-diffusion

如果想要安装 lora 模型,请放在下面目录(需要插件支持,参见下文):

~/extensions/sd-webui-additional-networks/models/lora

如果想要安装 VAE 模型,请放在下面目录(需要设置启用,参见下文):

~/models/VAE

复制好任意 ckpt 模型到指定位置之后,便可以尝试启动 webui 了。

# 进入 stable-diffusion-webui 目录下
python launch.py
# 推荐使用 --opt-split-attention 参数来提高运行效率
python launch.py --opt-split-attention
# 其他参数请参考其他教程设置,例如低显存模式等

成功启动后,会提示「127.0.0.1:7860」的字样,使用浏览器访问即可进入 WebUI 控制台。

7. 对于 WebUI 的后续设置

首先是安装插件,对于 Stable-Diffusion WebUI 来说,安装插件可以让图片生成效果好很多。点击右上角「Extension」字样,进入插件设置界面,点击下方「Availible」,再点击「Load from」就可以获取到插件列表了。

注:如果获取不到插件列表,多为网络问题。

下面是我推荐的几个插件:

sd-webui-additional-networks # 用于启用 LoRA 模型,在下载导入模型之前建议提前安装
sd-dynamic-thresholding # 提高画面质量
multidiffusion-upscaler-for-automatic1111 # 提高画面质量

对于 VAE 的设置,需要进入「Settings」一栏,点击左侧「User Interface」,在右侧菜单中找到「Quicksettings list」,添加 ,sd_vae 即可(参见下图)。

至此,对于 Stable-Diffusion WebUI 的配置就已经基本结束了,享受你的 AI 作图体验吧!

8. 问题处理

如果你需要查看这一内容,代表你一定遇到了某些错误,先不要着急,按照下面的步骤进行排查。

首先,检查网络环境,如果你使用了代理网络,请确认你的代理能够代理到 git 或者 pip。

如果你在安装依赖时出现了问题,可以尝试使用下面的代码安装依赖,这种方式使得 pip 从清华镜像源下载包,速度更快。

pip install -r requirements_versions.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

如果并非网络问题,并且无法安装 ROCm,那么请注意你的硬件是否符合要求,ROCm 5.5 版本不再支持 AMD Radeon RX500 系列 GPU,如果你使用的是 RX580/RX570/RX480/RX470 等 GPU,请手动指定安装 ROCm 5.3版本。

参考安装教程(可能已失效)

如果并非上述任何问题,那么请检查是否出现配置错误,并且重新安装 docker、ROCm 等。

有其他问题,可以联系我的邮箱

全文完。

Avatar photo

Tyuwwe_ZL

你好啊,我是本站站长。闲下来的时候,随便写点啥。

文章: 8

留下评论

欢迎来到 Mazer Studio 网站!
本站点最近迁移了服务器,因此进行了一段时间的维护,目前网站状态已经正常,欢迎大家访问!

X