当最开始知道 Stable Diffusion 时就想尝试本地部署的,但是我长期使用的是 AMD 的显卡所以就没有尝试。
最近我发现 AMD 的 ROCm 支持 NVIDIA CUDA,而且 PyTorch 也可以配合 ROCm 使用。
所以我又打起了 Stable Diffusion Webui 本地部署的主意。
我毕竟不是相关行业的开发人员,所以我就是一边看教程一边理解。
我发现如果不理解整体的脉络,以及各个工具、框架之间的关系,在安装过程中遇到问题都不知道怎么解决。
在我的安装过程中我有使用到的工具、框架主要有:Ubuntu、Python3.10、pip3、PyTorch、ROCm(CUDA)、Stable Diffusion Webui。
他们的关系其实很简单,一张图让你理解它。重点理解:PyTorch、ROCm(CUDA)、Stable Diffusion Webui。(结构不一定正确,只是为了方便理解)
pip3 是一个包管理工具,后面很多依赖都需要它来安装。
在 Ubuntu 环境下直接使用命令安装。
sudo apt install python3-pip
pip3 也可以指定相关的镜像源以加快访问速度,我这里就不赘述了。
PyTorch 是一个 开源的 Python 机器学习库。后面项目的运行是需要依赖于它的。
进入 Pytorch 官网 可以查看相关的版本依赖和安装教程。
图中的版本等信息就是我所使用的。
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/rocm5.2
验证 PyTorch 是否安装成功。
################## 终端 ##################
# 在终端输入 python3 进入 Python 的命令行。
python3
################## 终端 ##################
################# Python #################
>>> import torch
>>> print(torch.rand(5, 3))
tensor([[0.3380, 0.3845, 0.3217],
[0.8337, 0.9050, 0.2650],
[0.2979, 0.7141, 0.9069],
[0.1449, 0.1132, 0.1375],
[0.4675, 0.3947, 0.1426]])
# 输出类似的信息,表示 Pytorch 安装成功了。
################# Python #################
ROCm 是 AMD GPU 计算平台,相关的安装教程可查看 AMD 官网。
虽然 PyTorch 教程中依赖的 ROCm 版本是 5.2,实际上我安装 5.4 也是可以使用的。
先添加安装器。
sudo apt-get update
wget https://repo.radeon.com/amdgpu-install/5.4/ubuntu/jammy/amdgpu-install_5.4.50400-1_all.deb
sudo apt-get install ./amdgpu-install_5.4.50400-1_all.deb
执行 ROCm 安装,--no-dkms
参数表示不安装显卡驱动,视个人情况使用。
sudo amdgpu-install --usecase=hiplibsdk,rocm --no-dkms
还需要添加用户组,否则会出现调用不到资源的问题。
sudo usermod -a -G video $LOGNAME
sudo usermod -a -G render $LOGNAME
可以使用 sudo rocminfo
或 rocm-smi
命令查看相关资源信息。能正常查看就表示安装成功。
完成了 PyTorch、ROCm 的安装就可以进行一轮验证了,这个验证在 Pytorch 官网 是有的。
################## 终端 ##################
# 在终端输入 python3 进入 Python 的命令行。
python3
################## 终端 ##################
################# Python #################
>>> import torch
>>> torch.cuda.is_available()
True
# 返回的 true 表示已经访问到 GPU 资源了。
################# Python #################
如果遇到报错信息:hipErrorNoBinaryForGpu: Unable to find code object for all current devices!
。
需要向 Linux 环境变量写入一个参数。
# 通过命令临时指定参数(其他指定方式不赘述)。
export HSA_OVERRIDE_GFX_VERSION=10.3.0
从 GitHub 克隆项目 Stable Diffusion Webui 运行。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
# 有些教程中通过 python3-venv 创建了虚拟环境,但是我通过虚拟环境就访问不到 GPU 资源。
# python -m venv venv 创建虚拟环境
# source ./venv/bin/activate 进入虚拟环境
# python -m pip install --upgrade pip wheel 执行一些安装
python launch.py --precision full --no-half
运行的时候会自动安装很多依赖,如果出现安装失败可以手动安装后重新运行项目。也会从 GitHub 克隆一些其他的依赖项目,所以网络环境很重要如果下载失败可以查看错误日志然后手动下载。
依赖的缺失可以根据提示逐个安装。
# 一些常见的依赖缺失
sudo apt install rocm-libs miopen-hip rccl libtinfo5 libopenmpi3 libopenblas-dev
pip install gfpgan==1.3.8
pip install clip
pip install open_clip_torch
作为开源项目在不断更新新功能,肯定也意味着会有新的问题产生,所以遇到搜索引擎搜不到的问题可以到 Stable Diffusion Webui Issues 搜索一下或者提出问题。
到这里 Stable Diffusion Webui 的项目依赖安装完成后,理论上就可以运行了,但是会因为模型的缺失启动失败。
这里有一个 xformers
缺失的提醒,自己手动处理一下,如果不使用 xformers
可以先不管。
安装模型
完成了项目的配置后,现在我们需要进行模型的安装。
模型可以到 Hugging Face 下载,下载下来后放置到项目的 models/Stable-diffusion
下。