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

87 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: SD-WebuiをArchLinux+Radeon環境で動かす
released_at: 2024-06-23T00:00:00+09:00
updated_at: null
tags:
- Linux
- Arch
- AI
- Stable-Diffusion
- Stable-Diffusion-WebUI
image: /uploads/error.png
publish: public
---
<script>
</script>
[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で入れます。
```sh
yay -S wget git python python-pip pyenv
```
# 導入準備:Python
2024-06-03時点で、Python3.10が推奨のようです。
最も新しいマイナーバージョンである3.10.14で動かしますが、パッケージマネージャーで入るpythonは最新を保ちたいので、pyenvを用いてバージョンを下げて実行できるようにします。
```sh
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しましょう。
```sh
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からクローンするだけです。任意のディレクトリで、クローンし、その中に移動します。
```sh
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
```
# venvセットアップ
venvを作成・環境に入り、依存パッケージを導入します。
前の項でインストールしたtorchは、venv外に入っていますが、`--system-site-packages`でアクセスできるようになるみたいです。
```sh
python -m venv venv --system-site-packages
source venv/bin/activate
pip install -r requirements.txt
```
# WebUI起動
pyenvに入りvenvをactivateします。
```sh
pyenv local 3.10.14
source venv/bin/activate
```
その後、webui.shを実行します。
AMDGPUでは、`--precision full --no-half`又は`--upcast-sampling`をつけるとパフォーマンスが向上するとか。
```sh
./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が導入できるみたいですが、