stable-diffusion-webuiをインストールする (Arch Linux, AMD ROCm)
こんな感じの画面で操作できるようになります。txt2imgはもちろん、img2img, Trainなどもタブから切り替えて使用できます。かなり活発に開発されているので今後も機能が増えていくと思います。
記事執筆時点(2023.1.20)では 20a59ab3b171f398abd09087108c1ed087dbea9b
commitを使用しました。
インストール環境
- OS : Arch Linux
- python 3.10.9 (pyenv)
- Hardware
- Minisforum HX90G
- CPU : AMD Ryzen™ 9 5900HX
- Graphic : AMD Radeon™ RX 6600M (GDDR6 8GB)
- https://store.minisforum.jp/products/minisforum-elitemini-hx90g?variant=43443825672358
- https://news.mynavi.jp/article/20221016-2481405/
- model : stable-diffusion-v-1-4
ROCm
ROCm (Radeon Open Compute) とは、 AMD のオープンソース並列計算アーキテクチャでありフレームワークです。今回はArch Linux向けのリポジトリである arch4edu からインストールします。基本的にはドキュメントの通り進めていくだけです。
- https://github.com/rocm-arch/rocm-arch
- https://github.com/arch4edu/arch4edu/wiki/Add-arch4edu-to-your-Archlinux
- mirrorlistから arch4edu のミラーサイトを選択する
- GPG Keyをインストールする
# pacman-key --recv-keys 7931B6D628C8D3BA
# pacman-key --finger 7931B6D628C8D3BA
# pacman-key --lsign-key 7931B6D628C8D3BA
- 1.で選んだミラーサイトを追加する
[arch4edu]
Server = https://mirrors.tuna.tsinghua.edu.cn/arch4edu/$arch
- データベースを同期してからパッケージをインストールする
# pacman -Sy
# pacman -S pkgstats
# pacman -S rocm-hip-sdk rocm-opencl-sdk
今回必要なのはrocm-hip-sdk
, rocm-opencl-sdk
の2つです。pkgstats
については任意ですが、管理しているパッケージの傾向を知るのに役立つらしいのでとりあえず入れておきます。
最後に環境変数を設定します。使うときだけexportするのでもOKです
HSA_OVERRIDE_GFX_VERSION=10.3.0
値の説明についてはこちらを参照してください
依存関係で入った rocminfo
でハードウェア情報などを確認できます。Stable Diffusionを動かす時は(たぶん)使用しないのでPATHは通ってなくても大丈夫です。
$ /opt/rocm/bin/rocminfo
ROCk module is loaded
=====================
HSA System Attributes
=====================
Runtime Version: 1.1
System Timestamp Freq.: 1000.000000MHz
Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)
Machine Model: LARGE
System Endianness: LITTLE
==========
HSA Agents
==========
*******
Agent 1
*******
Name: AMD Ryzen 9 5900HX with Radeon Graphics
Uuid: CPU-XX
Marketing Name: AMD Ryzen 9 5900HX with Radeon Graphics
Vendor Name: CPU
Feature: None specified
Profile: FULL_PROFILE
Float Round Mode: NEAR
Device Type: CPU
...
*******
Agent 2
*******
Name: gfx1032
Uuid: GPU-XX
Marketing Name: AMD Radeon RX 6600M
Vendor Name: AMD
Feature: KERNEL_DISPATCH
Profile: BASE_PROFILE
Float Round Mode: NEAR
Device Type: GPU
stable-diffusion-webui
基本的にドキュメントの通り進めていきます。AMD GPUの他、NVidiaやApple Siliconのwikiもあります。
- https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki
- https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs
モデルは stable-diffusion-v-1-4 から sd-v1-4.ckpt を使用しました。model/Stable-diffusion
フォルダに複数のファイルを置けばWEB UIから切り替えられるので便利です。stable-diffusion-2-1はなぜかうまく行きませんでした。
$ export HSA_OVERRIDE_GFX_VERSION=10.3.0
$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
$ cd stable-diffusion-webui
### Download model.ckpt and set model/Stable-diffusion/
$ python -m venv venv
$ source venv/bin/activate
$ python -m pip install --upgrade pip wheel
$ TORCH_COMMAND='pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.1.1' python launch.py --precision full --no-half
Python 3.10.9 (main, Jan 20 2023, 12:55:11) [GCC 12.2.1 20230111]
Commit hash: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Installing torch and torchvision
Installing gfpgan
Installing clip
Installing open_clip
...
Running on local URL: http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.
初回起動時は必要なライブラリをインストールしたりと少々時間がかかります。しばらく待ってからブラウザで http://127.0.0.1:7860 を開いてみましょう。
2回目以降はpython -m venv venv
, python -m pip install --upgrade pip wheel
は不要です。
PyTorchでGPUが認識されていることを確認するには下記の通り実行してください。CUDAじゃありませんが気にしてはいけません。
$ cd Git/stable-diffusion-webui
$ export HSA_OVERRIDE_GFX_VERSION=10.3.0
$ source venv/bin/activate
$ python
>>> import torch
>>> torch.cuda.is_available()
True
>>>
/opt/amdgpu/share/libdrm/amdgpu.ids が見つからない
この時、amdgpu.ids ファイルが見つからないというエラーが出ることがあります。起動自体は問題なくできるのですが、気持ち悪いのでなんとかして消したいです。ファイルはlibdrm
パッケージの/usr/share/libdrm/amdgpu.ids
に存在するのでPATHかなにかの問題かと思われます。
$ cd Git/stable-diffusion-webui
$ export HSA_OVERRIDE_GFX_VERSION=10.3.0
$ source venv/bin/activate
$ python
>>> import torch
>>> torch.cuda.is_available()
/opt/amdgpu/share/libdrm/amdgpu.ids: No such file or directory
/opt/amdgpu/share/libdrm/amdgpu.ids: No such file or directory
/opt/amdgpu/share/libdrm/amdgpu.ids: No such file or directory
/opt/amdgpu/share/libdrm/amdgpu.ids: No such file or directory
True
どういう理屈なのかわかりませんが、venv内のtorchからamdgpu.idsファイルが見えていないのが原因のようです。グローバル環境(pyenvは使用してもOK)でtorchをインストールすればvenv内でもちゃんと見れるようになりました。
$ pip3 install torch torchvision torchaudio \
--extra-index-url https://download.pytorch.org/whl/rocm5.2
...
$ cd Git/stable-diffusion-webui/
$ export HSA_OVERRIDE_GFX_VERSION=10.3.0
$ source venv/bin/activate
$ python
>>> import torch
>>> torch.cuda.is_available()
True
>>> torch.__version__
'1.13.1+rocm5.1.1'
>>>
torchのバージョンはvenvに最初から入っている1.13.1+rocm5.1.1
なので、グローバル環境の1.13.1+rocm5.2
を読みに行ってる訳でもなさそうです。よくわかりませんが直ったのでヨシです。
その他参考
Discussion
Thanks a lot!
The automatic installation is not working for me.(cannot find cuda).
Your documentation works for me.:)
ありがとうございます!!
自分もrocm周りの環境構築で挫折してましたが、この記事に助けられました。