WindowsでWebUI(1111版)を使用して画像生成する際、従来のxformersの代わりにPytorch2.0で実装されたSPDAを用いることで、画像生成速度を向上させることが出来ます。
現環境を壊さずにPytorch2.0とCUDA11.8をインストールして、SPDAを導入する方法を画像付きで丁寧に解説します。
また、アスカベンチを行い、どのくらい生成速度が向上するか検証したところ、なんと14%程度も早くなりました!!
1. Pytorch2.0などを仮想環境にインストール
まず、従来のvenvフォルダ名をvenv-oldなどに変更します。


こうすることで従来の環境を壊すことなくSPDAを使うようにしていきます。
次に「stable-diffusion-webui」フォルダ内で右クリック→「ターミナルで開く」を選択。

以下のコマンドで新たなPythonの仮想環境を作成します。
python -m venv venv
そして仮想環境を有効化します。
venv\Scripts\Activate.ps1
そして、Pytorch2.0とCUDA11.8をインストールします。

通常以下のコマンドでインストールできます。
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
2. SDPAを有効化をするようbatファイル編集
「webui-user.bat」をメモ帳などで開き、以下のように編集します。
--xformers
を削除--opt-sdp-attention
を追加
なお、「--opt-channelslast
」は付けたままで問題ありません。

後はいつもどおり「webui-user.bat」をクリックしてWebUIを起動します。
初回起動時は色々インストールするので時間がかかりますが、特に操作は不要です。
なお、以下のように表示されますが当然正常です。
No module ‘xformers’. Proceeding without it.

URLが表示されたら成功!!
アスカベンチで比較してみました。
3. 実際の速度差をアスカベンチしてみた
なお、由緒正しくsafetensors変換前の、ckptファイルのnaiを使いました。
各種高速化設定などは全て同じにして、xformersかSDPAかのみ変化させました。

SPDAを試す 10枚を3回 | 1回目 | 2回目 | 3回目 | 平均 | 割合 |
–xformersの場合 | 19.98 | 19.97 | 19.70 | 19.88 | 1 |
SDPAの場合 | 17.10 | 17.12 | 17.08 | 17.10 | 0.86 |
というわけで、14%の高速化に成功しました!!!
おまけ 従来のxformers環境に戻したい時は?
SDPAを使用できるようにPytorch2.0をインストールした環境が今venvフォルダに入っているハズです。
そのため、xformersを使用するには、現在のvenvフォルダ名を「venv-sdpa」などに変更します。
その後、最初に「venv-old」とリネームしておいたxformers用の仮想環境が入ったフォルダを再度「venv」に変えます。

最後に起動時オプションを下のようにして元に戻します。
--xformers
を追加--opt-sdp-attention
を削除
4. まとめ SDPAを使い画像生成速度を向上させる方法
- 従来のvenvを適当な名前に変えておく
- 新たにvenv作成し、Pytorch2.0とCUDA11.8をインストール
- webui-user.bat編集(起動時のオプションを変更)
- いざ起動!!
たった数回コマンドを打つだけで14%も生成速度が向上しました。
技術の進歩はソフトウェア方面でも目覚ましいですね!!
合わせて以下のような高速化を行うと、より素早く画像を生成できるのでぜひお試しください。