
Ubuntu 20.04.2 LTS + ROCm 5.4.2 + StableDiffusion WebUI環境のセットアップメモ
はじめに
現状WindowsではROCmを利用出来ないためDirectML版のStable Diffusionを使っていますが、最近Windows自体が不安定なのもあり空きHDDにUbuntuを入れて環境を作ってみました。
下のはWindowsでも利用可能なDirectML版。
環境(参考)
Ryzen 3700X
Radeon RX6800 (16GB)
RX7000系はRDNA3との事で少し事情が違うかもしれません。
Ubuntuのセットアップ
公式からISOをダウンロードしてRufusでUSBに書き込み、そちらからブートしてインストールします。インストール先を間違えないようにしましょう。
セットアップは基本機能の方で良いと思います。
セットアップが終わったら一応アップデートを掛けておきます。
Radeonドライバの導入
端末を開いて5.4.2のドライバを入れます。
実行結果は沢山出るので省略。
$ sudo apt-get update
$ wget https://repo.radeon.com/amdgpu-install/5.4.2/ubuntu/jammy/amdgpu-install_5.4.50402-1_all.deb
$ dpkg -i amdgpu-install_5.4.50402-1_all.deb
$ sudo amdgpu-install --usecase=hiplibsdk,hip,rocm,dkms
インストールが無事終わったらディスプレイドライバとROCmのプロセスの状態が確認出来ます。
$ sudo dkms status
$ sudo rocminfo
実行中のユーザに権限を追加します。
$ sudo usermod -a -G render ${USER}
$ sudo usermod -a -G video ${USER}
ここまで終わったら再起動します。
パッケージの追加
後々の実行時に不足でエラーの出るパッケージを含めて追加します。
$ sudo apt-get install python-is-python3 git python3-venv pip libstdc++-12-dev
Stable Diffusion Web UIの導入
GitでWeb UIをダウンロードして仮想環境を作成して入ります。
$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
$ cd stable-diffusion-webui
$ python -m venv venv
$ source venv/bin/activate
venv環境で先にtorch関連のPythonモジュールを入れてしまいます。
ROCm5.4.2用のPyTorchを指定しています。
(venv) $ pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.4.2
ここまで来ればあとは実行するだけです。
足りないモジュールやSD1.5のモデルなど基本のファイルは勝手にダウンロードされますのでしばらく時間が掛かります。お茶でも飲んで待ちましょう。
(venv) $ TORCH_COMMAND='pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.4.2' python launch.py --listen
「Running on local URL: http://127.0.0.1:7860」のような表示が出たらhttp://127.0.0.1:7860
にアクセスしてみましょう。どうでしょう動きましたか?
起動オプションの「--listen」はextensionを動かすときに問題になったりするので外しても良いです。
よく使う起動オプションをメモしておきます。
--disable-nan-check 黒画像検出を止めてエラーを出さなくする
--no-half モデルを16ビットフロートに切り替えない
--medvram 使用メモリが少なくなる
--theme dark ダークモード
ROCmで動かした感想
速い!DirectMLより速い!倍ちょっとくらい速い!(と思う)
素の設定なら512x512なら7,8秒くらいで出ます。
DirectML版とCUDA(ROCm)版では同じモデルや設定でも出て来る絵が違うようで、DirectML版の雰囲気に慣れてしまった身体では違和感があります。
GeForceのCUDAとROCmのなんちゃってCUDAで絵が違うのかに関しても各種AIサイトのmeta情報を見ながら比較していますがこれも何か違う気がします。使用しているVAEが違う可能性もありますがそれにしてもだいぶ違うような…。
私自身もROCmで動かして数日なので色々遊んでみます。