シンギュラリティ実験ノート

購入した1000ドルPCで何がどこまでできるのか実験した記録です。

Windows+DirectML+iGPUでStableDiffusionが動いた

UM790 ProのiGPU(Radeon 780M)でStableDiffusionを動かすことができた。今回導入した環境はWindows+DirectMLである。かなり苦労したので導入手順についてここにまとめておきたい。またUbuntuROCm環境との性能比、Windows+CPU動作時の性能比もメモしておく。

記念すべき1枚目の猫画像

導入手順

参考にしたサイトは以下である。

github.com

導入手順は以下の3ステップだ。

Step1 Python3.10の環境を作成する

この指示には素直に従うべきだ。私はインストールしてあった3.12やその他のバージョンで行い、ことごとく失敗した。

指定バージョンのPythonの環境を作成する方法はanacondaを導入してanacondaの画面から作成する方法をお勧めする。他にも方法はあるが、コマンドがとても複雑だからだ。

anaconda navigatorを立ち上げ、Environmentの画面で新しい環境(画面では環境名StableDiffusionとした)を追加する。このときpythonのバージョンも選択できるので3.10を選ぶ。

python仮想環境を追加

Python3.10.13をインストール

Home画面に戻りPowershellをインストールする。

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タブに進む。

webui画面

ここでONNXRuntimeを選び、私は以下のように設定した。設定したらApply settingsボタンを押す。

ONNXRuntimeの設定


tx2imgタブに戻り実行する前に、onnxruntime.dllとDirectML.dllをインストールしたディレクトリにコピーする。手順には書かれていないが多分これも必要だと思う。私はdlshogiに同梱されていたdllを使用した。

プロンプトに「cat wearing sunglasses」と入力して実行する。表示された画像がこちらである。

GPUで作成した画像

確かにGPUで動作していることを確認できた。

GPU動作状況

速度比較

512*512の画像を3通りの環境で実行した結果は以下の通りであった。

OS ドライバ CPU/GPU 処理時間(sec)
Windows DirectML GPU 31.5
Windows DirectML CPU 100.0
Ubuntu ROC 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でのインストールをお勧めできるかというと微妙である。ただ、私のようにインストール自体を楽しめる方には結構お勧めかもしれない。