久しぶりのブログ更新になりました。
今回は自分のノートPCであるROG Zephyrus G14 (2022) GA402にLinuxをデュアルブートして、Stable Diffusion WEB UIの実行が確認できたので残して置きたいと思います。
ROG Zephyrus G14 (2022) はノートでは珍しくRadeon RX6700s(VRAM: 8GB)を搭載するPCです。そのためNVIDIAのCUDAではなくAMDのROCm(CUDAに相当するライブラリ)を使用する必要があります。
今回の備忘録はROG Zephyrus G14に限らず、Radeon eGPUを搭載するデスクトップでも同等の手順で再現できるかと思います。
前提として、WSL等のWinodws環境では実行していません。がLinuxの方が対応しているためです。 そのため、実行環境はデュアルブートしたManjaro Linuxとなります。ちなみにOpenSUSE Leap 15.5で試しましたがうまくROCm環境を整えることができませんでした…
「個人PCはUbuntu以外のLinuxを使う」という縛りプレイを自分に課しているため、Ubuntuは試していません。申し訳ございません。
Manjaro Linuxのインストール(デュアルブート)
Manjaroのインストール記事はネット上に多数存在するため、そちらを参考に願います。 もしくは多少古いですが過去記事(Windows 11 と Manjaro をデュアルブートする際のメモ - Harukaのnote)を参照ください。
手順:
- UEFIでSecure bootをdisableに変更
- Windows 11のコントロールパネルから、パーティション設定を呼び出して空き容量を作成(プライマリパーティションの縮小)
- Rufus等でManjaroのLive USBを作成
- Shiftを押しながら再起動 → 回復メニュー → UEFIの起動(起動時のDel長押しでUEFIに入れなかったため)
- F8でboot menuに入りUSBを選択してManjaroのLive USBを起動
- 空けたスペースにManjaroをインストール
ROCmの準備
ROCmのインストール
sudo pacman -Sy && sudo pacman -S rocm-hip-sdk rocm-opencl-sdk rocm-llvm rocm-hip-runtime rocminfo
参考: stable-diffusion-webuiをインストールする (Arch Linux, AMD ROCm)
環境変数の設定
環境変数にHSA_OVERRIDE_GFX_VERSION=10.3.0
を設定します。
HSA_OVERRIDE_GFX_VERSION=10.3.0
はgfx1030を意味し、gfx1030とは異なるコードネームを持つRDNA2 GPU(gfx1031、gfx1032など)を正しくROCmを実行できるようにします。RX6700sはgfx1032に該当します。
sudo vim /etc/environment # 以下を記入 HSA_OVERRIDE_GFX_VERSION=10.3.0
参考: Does ROCm support the RX 6700S (laptop GPU) · Issue #1756 · RadeonOpenCompute/ROCm · GitHub
pyenvの設定
Python venvを使ってもいいですが、自分はpyenvの方が好みのためインストールします。
まず、依存ライブラリをインストールします。
sudo pacman -S git readline sqlite3 zlib openssl libffi gcc tk cairo pkgconf make cmake
pyenv、pyenv-virtualenv、pyenv-updateを以下の長いコマンドでインストールします。
git clone https://github.com/yyuu/pyenv.git ~/.pyenv && git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv && git clone https://github.com/yyuu/pyenv-update.git ~/.pyenv/plugins/pyenv-update
pathを通します。最新のManjaroはデフォルトシェルがzshになっていたので、.zshrc
を編集します。
sudo vim ~/.zshrc # 以下を追記 # pyenv settings export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
pathを反映させます。
source ~/.zshrc
pyenvのインストールが完了したので、pyenvを使ってpython 3.10をインストールします。
pyenv install -list | grep 3.10 # インストール可能な3.10系一覧を取得 ︙ 3.10.11 3.10.12 3.10.13 ←最新 ︙
python 3.10.13をインストールします。
pyenv install 3.10.13
3.10.13をもとにStable Diffusion用の仮想環境を作成します。
pyenv virtualenv 3.10.13 sd-webui
この手順とその他のpyenvの概要は以下の過去記事にあります。
参考: Linux(OpenSUSE)にPyenvをインストールする - Harukaのnote
Stable Diffusionの実行
Stable Diffusionを落としてきて、ディレクトリを移動します。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui cd stable-diffusion-webui
ここで作った仮想環境(sd-webui
)を使えるようにします。
pyenv local sd-webui
pip等を最新の状態に更新し、pytorchのROCm版をインストールします。
python -m pip install --upgrade pip wheel && pip install torch torchvision --index-url https://download.pytorch.org/whl/rocm5.4.2
WEB UIの起動
以下のコマンドでWEB UIが実行されます。
TORCH_COMMAND='pip install torch torchvision --index-url https://download.pytorch.org/whl/rocm5.4.2' python launch.py --precision full --no-half
http://127.0.0.1:7860
にアクセスすると以下のような画面になります。
以上です。うまく動かせられましたら幸いです。 ノートPC用AMD GPUというニッチな環境下のため、なかなか情報がなく大変でしたがManjaroはデフォルトリポジトリにROCmがあったりとサポートが行き届いている印象です。