見出し画像

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で動かして数日なので色々遊んでみます。

この記事が気に入ったらサポートをしてみませんか?