Stable Diffusionを高速化するSDPAを紹介します

タートルネックを着た黒髪女性のAI写真

はじめに

Stable Diffusionの高速化では定番となるxFormersがありますが、
さらなる高速化が可能となるSDPAの使い方を紹介します。

導入の仕方から、生成時間の比較結果も載せているので最後まで見ていってね。

この記事で理解できること
  • Pytorch2.0 SDPAのインストール方法
  • Pytorch2.0 SDPAの使い方
  • SDPAを使用した場合の画像生成時間
目次

Stable Diffusionを高速化できるSDPAとは

沢山の黒いクエスチョンマークの中に赤色のクエスチョンマークが2つある

SDPAはscaled dot product attentionの略で、Pytorch2.0で実装されています。

従来のxformersと比較すると、さらに画像生成時間を短縮することが可能です。

xformersはVRAM使用量を減らすほうが得意だよね。
高速化目的なら今回紹介する「SDPA」がおすすめ!

SDPAをインストールする

SDPAを使用するにはPytorch2.0にアップデートする必要があります。

Pytorch2.0にアップデートする手順については、以下の記事で解説しています。

あわせて読みたい
Stable DiffusionでPyTorch 2.0にアップデートする方法 はじめに PyTorch 2.0へアップデートすることで、画像生成速度の向上や新しい機能の利用など、さまざまなメリットを得られます。 しかし、初心者にとって、アップデート...

Stable DiffusionでSDPAを有効化し高速化する方法

「webuiフォルダ」の中にある「webui-user.bat」を編集モードで開きます。

COMMANDLINE_ARGSに以下コマンドを追加します。

--opt-sdp-attention
--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で生成したサンプル画像
白ジャケットを着た白髪女性のAIイラスト
opt-sdp-attentionサンプル画像1
白ジャケットを着た白髪女性のAIイラスト
opt-sdp-attentionサンプル画像2
–opt-sdp-no-mem-attentionで生成したサンプル画像
白ジャケットを着た白髪女性のAIイラスト
opt-sdp-no-mem-attentionサンプル画像1
白ジャケットを着た白髪女性のAIイラスト
opt-sdp-no-mem-attentionサンプル画像2

テストは解像度512×512、ステップ数20、バッチ回数10で実施しました。
測定結果は以下の通りです。

コマンドライン引数使用VRAM量生成速度速度比較
無し5.4GB7.21it/s基準
–opt-sdp-attention4.4GB11.06it/s65%
–opt-sdp-no-mem-attention5GB10.95it/s66%
–xformers4.5GB8.71it/s83%
画像生成速度比較表

高速化目的なら、「–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であれば細かい設定なしで、画像生成が高速です。

あわせて読みたい
Stable Diffusion WebUI Forgeのインストール方法を紹介! はじめに 今回紹介するStable Diffusion WebUI Forgeは、Stable Diffusion webUI(AUTOMATIC1111)と比べると、大幅な高速化を実現したクライアントツールです。 本記事で...

今回の手順についてはYouTube動画を投稿しています。合わせてご参考ください。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

IT技術者でありDTMer
EDMの作曲を始めたところ楽しさに気づき、ロック以上にハマっています。
楽器はギターを弾いており、バンドではギタリストとしても活動しています。

コメント

コメントする

目次