やりたいこと
AMDのGPUを使用して高速な画像生成を動作させてみます。
通常のStableDiffusionで画像生成が遅かったり、試しに画像生成を試してみたいという方向けです。
(すでにStableDiffusionでいろいろやっている方にはモデルも固定され、パラメータ調整もほぼできないため不向きです。)
DirectMLとDirectMLのサンプルコードを使用します。
HWのスペックは以下の通りです。
CPU | AMD Ryzen 7 7735HS |
---|---|
メモリ | 32GB |
ストレージ | 外付けHDD (システムディスクはSSD、容量が大きいため外付けで運用) |
GPU | AMD Radeon 680M (CPU内臓) |
-注意-
使用するモデルのライセンスは、お試しで使う分には問題ありませんが、完全に無料ではありません。運用する前にライセンスを確認してください


環境構築
作業用のフォルダを作成します。
以下のリポジトリをクローンします。
venv環境への移動(任意)
必要であればコマンドプロンプトで以下のコマンドを実行して、Venvの環境を作成してアクティブにします。
python -mvenv venv
venv\scripts\activate.bat
作業フォルダへ移動
以下のコマンドを実行して画像生成(StableDiffusion)のサンプルコードに移動します。(クローンしたリポジトリはDirectMLのサンプルコードの集まりのため個々のサンプルを使用するには作業フォルダに移動します。)
cd PyTorch\diffusion\sd
ライブラリのインストール
以下のコマンドを実行し、ライブラリのインストールを行います。
pip install -r requirements.txt
pip install torch-directml
pip install accelerate
実行
以下のコマンドを実行し起動します、
python app.py
初回起動時はモデルのダウンロードが行われるため時間がかかります。
コマンドプロンプトに以下のように表示されたら表示されているURLをブラウザで表示します。
Running on local URL: http://127.0.0.1:7860
以下のような画面が表示されれば成功です。

画面上部のテキストボックスにプロンプトを入力してRunをクリックすることで画像生成を行うことができます。
SDXL Turboに関して
私の環境だとSD Turboで画像生成した後にSDXL Turboに切りかえようとするとエラーになりました(VRAMが足りない?)
SDXL Turboで画像生成するには起動直後にモデルを切り替える必要があります。
またSDXL Turboでの実行は2回目以降失敗します。
結果
AMDのCPU内臓GPUで高速な画像生成を動作させることができました。
今回使用したサンプルでは必ず2枚同時に作成されます。
モデルがロード済みの2回目の実行ですと、2枚で7秒ほどで画像生成が完了しました。(似た環境で実行している方だとどれだけ早いかわかると思います。)

コメント