UM790 ProのiGPU(Radeon 780M)でStableDiffusionを動かすことができた。今回導入した環境はWindows+DirectMLである。かなり苦労したので導入手順についてここにまとめておきたい。またUbuntu+ROCm環境との性能比、Windows+CPU動作時の性能比もメモしておく。
導入手順
参考にしたサイトは以下である。
導入手順は以下の3ステップだ。
Step1 Python3.10の環境を作成する
この指示には素直に従うべきだ。私はインストールしてあった3.12やその他のバージョンで行い、ことごとく失敗した。
指定バージョンのPythonの環境を作成する方法はanacondaを導入してanacondaの画面から作成する方法をお勧めする。他にも方法はあるが、コマンドがとても複雑だからだ。
anaconda navigatorを立ち上げ、Environmentの画面で新しい環境(画面では環境名StableDiffusionとした)を追加する。このときpythonのバージョンも選択できるので3.10を選ぶ。
Home画面に戻りPowershellをインストールする。
インストールが終わるとLaunchボタンが表示され、ここからPowershellが起動できる。
Step2 Gitからクローンする
Powershellを立ち上げるとPython3.10の環境が立ち上がるはずだ。念のためpythonのバージョンを確認する。
(StableDiffusion) C:\Users\xxxxx>python -V python 3.10.13
次に下記コマンドを実行する。コマンドは1行になっているが4行に分けて実行してもいい。
(StableDiffusion) C:\Users\xxxxx>git clone https://github.com/lshqqytiger/stable-diffusion-webui-directml && cd stable-diffusion-webui-directml && git submodule init && git submodule update
Step3 webuiインストール実行
問題はここからだ。私も記憶が定かでない部分があるし、試行錯誤しているため、この通り実行すれば動くとも言い切れない。参考として見ていただきたい。
webui-user.batをPwershellから起動する。
(StableDiffusion) C:\Users\xxxxx>cd stable-diffusion-webui-directml (StableDiffusion) C:\Users\xxxxx\stable-diffusion-webui-directml>webui-user.bat
「GPUがない」というエラーが出て止まる。GPUのチェックをスキップするなら--skip-torch-cuda-testというオプションを付けろと言われるので、オプションを付けて再実行する。私はwebui.batで再実行した。
(StableDiffusion) C:\Users\xxxxx\stable-diffusion-webui-directml>webui.bat --skip-torch-cuda-test
インストールが始まり、しばらくすると4GBのモデルのダウンロードが開始される。ここまでくれば順調に進んでいると思っていいだろう。
動作確認
インストールとダウンロードが終わるとブラウザにwebuiの画面が表示される。checkpoint(StableDiffusionが使うモデル)を設定し、Settingsタブに進む。
ここでONNXRuntimeを選び、私は以下のように設定した。設定したらApply settingsボタンを押す。
tx2imgタブに戻り実行する前に、onnxruntime.dllとDirectML.dllをインストールしたディレクトリにコピーする。手順には書かれていないが多分これも必要だと思う。私はdlshogiに同梱されていたdllを使用した。
プロンプトに「cat wearing sunglasses」と入力して実行する。表示された画像がこちらである。
確かにGPUで動作していることを確認できた。
速度比較
512*512の画像を3通りの環境で実行した結果は以下の通りであった。
OS | ドライバ | CPU/GPU | 処理時間(sec) |
Windows | DirectML | GPU | 31.5 |
Windows | DirectML | CPU | 100.0 |
Ubuntu | ROCm | GPU | 11.0 |
将棋AIを動かした感触ではほぼ同じ性能になると思っていたのだが、StableDiffusionでは性能に違いが出た。Windows+DirectML+GPUは、Ubuntu+ROCm+GPUより約3倍遅いという結果だ。
補足
初回起動時にpythonのライブラリtorch_direclmlが見つからないというエラーが出たら下記コマンドでインストールする。
(StableDiffusion) C:\Users\xxxxx\stable-diffusion-webui-directml>pip install torch_directml
CPUで実行する場合は以下のコマンドで起動する。
(StableDiffusion) C:\Users\xxxxx\stable-diffusion-webui-directml>webui.bat --use-cpu USE_CPU --skip-torch-cuda-test
おわりに
MINI PCの内蔵GPUを使い、Windows環境でStableDiffusionを動かせることを確認した。Windows環境はもう少し楽に動かせるかと思ったが、かなり苦労した。性能的にもUbuntu環境の方が早いという結果なので、Windowsでのインストールをお勧めできるかというと微妙である。ただ、私のようにインストール自体を楽しめる方には結構お勧めかもしれない。