85 lines
4.5 KiB
Markdown
85 lines
4.5 KiB
Markdown
---
|
||
title: SD-WebuiをArchLinux+Radeon環境で動かす
|
||
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が導入できるみたいですが、 |