--- title: SD-WebuiをArchLinux+Radeon環境で動かす released: 2024-06-23T00:00:00+09:00 updated: null tags: - Linux - Arch - AI - Stable-Diffusion - Stable-Diffusion-WebUI image: /uploads/error.png publish: public --- [Stable Diffusion Webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui)をRadeonGPUのArch Linuxに導入する備忘録 基本は公式のwikiに従いますが、ここではエラーの発生原因と回避策の解説も合わせて書きます。 公式の最新の方法をまずはチェックしてみてください。 [install-on-amd-and-arch-linux](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs#install-on-amd-and-arch-linux) 今回検証に使った環境は以下のとおりです。 dist: ArchLinux desktop: Wayland(hyprland) cpu: Ryzen 7900X3D gpu: Radeon 7900GRE # 依存関係 yayで入れます。 ```shell yay -S wget git python python-pip pyenv ``` # 導入準備:Python 2024-06-03時点で、Python3.10が推奨のようです。 最も新しいマイナーバージョンである3.10.14で動かしますが、パッケージマネージャーで入るpythonは最新を保ちたいので、pyenvを用いてバージョンを下げて実行できるようにします。 ```shell pyenv install 3.10.14 pyenv local 3.10.14 ``` インストールされるパッケージも、3.10.14用のものが既存の環境とは別にインストールされます。 WebUIのドキュメントでは、バージョンは合ってる前提でvenvだけを利用していますが、venvはパッケージが独立した環境を作るものなので、同時に利用することになります。 # pytorch&torchvision これらはpipのパッケージとしてインストールできるようです。 Arch Linuxの通常のPython環境では、`pip install`を使わずにyay等からpython-xxxで導入することが推奨されますが、pyenv環境なのでpipで導入して問題なさそうです。 ちゃんとパッケージの所在を切り分けたい場合は、venv環境に入ってからinstallしましょう。 ```shell pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.0 ``` ちなみに、rocm6.1もありますが安定版ではありません。 コマンドは[pytorch.org](https://pytorch.org/get-started/locally/)で教えてくれるやつです。 # Stable Diffusion WebUI ダウンロード gitからクローンするだけです。任意のディレクトリで、クローンし、その中に移動します。 ```shell git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui ``` # venvセットアップ venvを作成・環境に入り、依存パッケージを導入します。 前の項でインストールしたtorchは、venv外に入っていますが、`--system-site-packages`でアクセスできるようになるみたいです。 ```shell python -m venv venv --system-site-packages source venv/bin/activate pip install -r requirements.txt ``` # WebUI起動 pyenvに入りvenvをactivateします。 ```shell pyenv local 3.10.14 source venv/bin/activate ``` その後、webui.shを実行します。 AMDGPUでは、`--precision full --no-half`又は`--upcast-sampling`をつけるとパフォーマンスが向上するとか。 ```shell ./webui.sh --upcast-sampling ``` ちなみに、他の設定諸々と合わせて`webui-user.sh`に書いておくと楽です。 # おわりに 利用方法の解説は他所に任せます。 ここに至るまで、torchvisionを自分でビルドしたり、いろいろ迷走しましたが、その過程もちょっとおいておきます。 ## torchの最適化が使えない yayで`python-pytorch-opt-rocm`を入れたいわけですが、opt付きのパッケージはパフォーマンス最適化が入ってますが、arch向けの調整(?)なのでpipでは利用できず… ## torchvision自分でビルドしなくていいんですか 公式は自分でビルドするか、バイナリをarcheduから入れろと言ってますが、pip経由で入りますよね… ## CUDAが見つからないらしい WebUI起動時、CUDAが見つかんねえよと言われました。これはそもそもrocm用torch(vision)が入ってなかったことが原因で、pacmanを使ってパッケージを入れてたのが原因です。pyenvに入ったら元のバージョンのパッケージを扱えないのは当たり前かもしれない… python310というパッケージで3.10が導入できるみたいですが、