はじめに
Stable Diffusionの高速化では定番となるxFormersがありますが、
さらなる高速化が可能となるSDPAの使い方を紹介します。
導入の仕方から、生成時間の比較結果も載せているので最後まで見ていってね。
- Pytorch2.0 SDPAのインストール方法
- Pytorch2.0 SDPAの使い方
- SDPAを使用した場合の画像生成時間
Stable Diffusionを高速化できるSDPAとは
SDPAはscaled dot product attentionの略で、Pytorch2.0で実装されています。
従来のxformersと比較すると、さらに画像生成時間を短縮することが可能です。
xformersはVRAM使用量を減らすほうが得意だよね。
高速化目的なら今回紹介する「SDPA」がおすすめ!
SDPAをインストールする
SDPAを使用するにはPytorch2.0にアップデートする必要があります。
Pytorch2.0にアップデートする手順については、以下の記事で解説しています。
Stable DiffusionでSDPAを有効化し高速化する方法
「webuiフォルダ」の中にある「webui-user.bat」を編集モードで開きます。
COMMANDLINE_ARGSに以下コマンドを追加します。
--opt-sdp-attention
後は普段通りにwebui-user.batをダブルクリックして、Stable Diffusion WebUIを起動します。
SDPAでどの程度Stable Diffusionが高速化されるのか計測してみた
SDPAを使用した場合に、どの程度Stable Diffusionでの画像生成が高速化されるのか画像生成時間を比較しました。
xformersの有無、–opt-sdp-attention、–opt-sdp-no-mem-attentionで生成時間を測定しています。
–opt-sdp-attentionは低VRAMで使用できますが、生成する度に画像が変化します。
–opt-sdp-no-mem-attentionは生成速度が低下する傾向で、VRAMをたくさん使いますが、設定が同じであれば同じ画像が生成されます。
–opt-sdp-attentionで生成したサンプル画像
–opt-sdp-no-mem-attentionで生成したサンプル画像
テストは解像度512×512、ステップ数20、バッチ回数10で実施しました。
測定結果は以下の通りです。
コマンドライン引数 | 使用VRAM量 | 生成速度 | 速度比較 |
---|---|---|---|
無し | 5.4GB | 7.21it/s | 基準 |
–opt-sdp-attention | 4.4GB | 11.06it/s | 65% |
–opt-sdp-no-mem-attention | 5GB | 10.95it/s | 66% |
–xformers | 4.5GB | 8.71it/s | 83% |
高速化目的なら、「–opt-sdp-attention」の効果が一番高いことがわかりました。
SDPAの効果は抜群ですね!
環境により結果は異なるので、効果は各自確認してみてください。
テストに使用したGPUはRTX4070 tiだよ。
SDPAを使用してトラブルが発生した場合
もしもトラブルが発生した場合には、Pytorch2.0をインストールしたvenvフォルダを適当な名前にリネームして、バックアップした旧venvフォルダ名を「venv」に戻せば元通りになります。
「webui-user.bat」に記述したPytorch2.0用のコマンドライン引数「–opt-sdp-attention」などは、忘れずに削除してください。
あとは普段通りに起動すれば、旧環境で起動します。
まとめ|Stable Diffusionを高速化するSDPAについて
今回は、Stable Diffusionを高速化するSDPAの使い方を紹介しました。
環境によりますが50%以上の高速化も可能となるので、ぜひチャレンジしてみましょう!
デメリットもほとんど無いので、SDPAおすすめです!
AUTOMATIC1111の進化系のような、新しいクライアントツール「WebUI Forge」が公開されています。
Forgeであれば細かい設定なしで、画像生成が高速です。
今回の手順についてはYouTube動画を投稿しています。合わせてご参考ください。
コメント