blog-articles/article/tech/sd-webui-in-amd_arch.md
2024-09-06 23:41:49 +09:00

4.5 KiB
Raw Blame History

title released_at updated_at tags image publish
SD-WebuiをArchLinux+Radeon環境で動かす 2024-06-23T00:00:00+09:00 null
Linux
Arch
AI
Stable-Diffusion
Stable-Diffusion-WebUI
/uploads/error.png public

Stable Diffusion WebuiをRadeonGPUのArch Linuxに導入する備忘録 基本は公式のwikiに従いますが、ここではエラーの発生原因と回避策の解説も合わせて書きます。 公式の最新の方法をまずはチェックしてみてください。 install-on-amd-and-arch-linux

今回検証に使った環境は以下のとおりです。 dist: ArchLinux desktop: Wayland(hyprland) cpu: Ryzen 7900X3D gpu: Radeon 7900GRE

依存関係

yayで入れます。

yay -S wget git python python-pip pyenv

導入準備:Python

2024-06-03時点で、Python3.10が推奨のようです。 最も新しいマイナーバージョンである3.10.14で動かしますが、パッケージマネージャーで入るpythonは最新を保ちたいので、pyenvを用いてバージョンを下げて実行できるようにします。

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しましょう。

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.0

ちなみに、rocm6.1もありますが安定版ではありません。 コマンドはpytorch.orgで教えてくれるやつです。

Stable Diffusion WebUI ダウンロード

gitからクローンするだけです。任意のディレクトリで、クローンし、その中に移動します。

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui

venvセットアップ

venvを作成・環境に入り、依存パッケージを導入します。 前の項でインストールしたtorchは、venv外に入っていますが、--system-site-packagesでアクセスできるようになるみたいです。

python -m venv venv --system-site-packages
source venv/bin/activate
pip install -r requirements.txt

WebUI起動

pyenvに入りvenvをactivateします。

pyenv local 3.10.14
source venv/bin/activate

その後、webui.shを実行します。 AMDGPUでは、--precision full --no-half又は--upcast-samplingをつけるとパフォーマンスが向上するとか。

./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が導入できるみたいですが、