【Stable Diffusion】opt-sdp-attentionオプションを使ってAIイラストの生成速度を高速化する方法を紹介!

こんにちは!悠です!

 

またまた非常に有益なRedditのスレッドを見つけてしまいました。それがこちらです。

Installing cuDNN to boost Stable Diffusion performance on RTX 30x and 40x graphics cards
by u/AESIRu in StableDiffusion

 

「Stable Diffusion」でAIイラストの生成速度を高速化する手法として有名なのはxformersですが、Pytorch2.0系を導入している方はopt-sdp-attentionを使うことでも同様の結果を得られるようなんですね。

RTX30xxやRTX40xx等のハイスペックGPUでは、xformersと比べて10%~15%程度の高速化が望めるそうです。

 

そこで今回は、opt-sdp-attentionのオプションを使ってAIイラストの生成速度を高速化するやり方をご紹介していきます。

現状はローカル版でおすすめのオプションです。

 

アイキャッチ画像は「animelike2d」で生成しています!
スポンサーリンク
スポンサーリンク

Pytorch2.0のインストール

Pytorchとは、Pythonのオープンソース機械学習ライブラリであり、「Stable Diffusion」を動かすのに必須なプログラムのことです。

「え?そんなのダウンロードしたことないけど?」と思われるかもしれませんが、ローカル版WebUIをPCにインストールする際に自動的に導入されているんですね。

 

ローカル版導入時は多くの方が1.13.1+cu117のPytorchを使用していると思うので、これを2.0.0+cu118にアップデートする必要があります。

Pytorchのバージョンはコマンドプロンプトでも確認できますが、WebUIを起動して一番下に表示されるバージョンをチェックするだけでもOKです。

 

Pytorchのアップデートのやり方に関しては、下記の記事でまとめていますので参考にしてください。

【Stable Diffusion】xformersを最新版にアップデートして、WebUIでのイラストの生成速度を高速化する方法!
「Stable Diffusion WebUI」に最初からインストールされているxformersを最新版にアップデートして、AIイラストの生成速度を向上させる方法について紹介した記事です。

 

なお上で紹介したRedditの記事では、webui-user.batをメモ帳で開いて下記のように入力して起動することでもPytorchを2.0.0+cu118にアップデートできると紹介されていました。

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set TORCH_COMMAND=pip install torch==2.0.0 torchvision --extra-index-url https://download.pytorch.org/whl/cu118
set COMMANDLINE_ARGS=--reinstall-torch

call webui.bat

 

WebUIを起動してAIイラストを生成する際は、set TORCH_COMMANDの欄を全て削除して、set COMMANDLINE_ARGSをいつも使うオプションに変更してください。

Redditのやり方でもTorchをアップデートできるとコメント欄で教えていただきました!ただxformersはアップデートされずにエラーが出るそうなので、私がまとめたこちらの方法がおすすめです!

 

opt-sdp-attentionの使い方

opt-sdp-attentionの使い方は、webui-user.batを起動してset COMMANDLINE_ARGSの中に下記のオプションを追加するだけです。

なおxformersと同時に使うことはできないので注意してください。

--opt-sdp-attention

 

 

AUTOMATIC1111のOptimizationsのページによると(下記)、Pytorch2.0系の環境ではxformersよりも高速化できるそうです。

Optimizations
Stable Diffusion web UI. Contribute to AUTOMATIC1111/stable-diffusion-webui development by creating an account on GitHub.

 

ちなみに同じページ内にopt-sdp-no-mem-attentionというオプションもあり、こちらも同様にPytorch2.0系の環境で高速化ができるようですが、私のGTX1660Tiで試すとCUDA out of memoryになってAIイラストが生成できなくなってしまいました。

高速化はできるけれど、VRAMの消費量は増えるのかもしれないです!

 

xformersとopt-sdp-attentionの簡単な比較

実際にGTX1660Tiを使ったローカル版WebUIで、イラストの生成速度を簡単に比較してきました。

あくまで「簡単に」です。厳密な比較ではありません。参考程度にしてください。

 

生成速度の比較は、768×512の画像をtxt2imgで1枚生成した後、出力欄に表示されるTime takenで行いました。

WebUIを起動して1回目のイラスト生成はデータの読み込み等で時間がかかるので、2回目以降の値で比較しています。

 

結果は次の通りです。

  • 高速化オプションなし:29.75s
  • xformers(ver0.0.18):23.47s
  • opt-sdp-attention:23.61s

 

僅差ですが、私の環境化ではxformersの方が高速化できていました。

GTX10xx等の古いGPUでは、opt-sdp-attentionよりもxformersの方が優れているという記事もあったので、やはりハイエンドGPU向けのオプションのようですね。

 

Google Colaboratory版で使いたい場合

「エラーなくWebUIを起動してAIイラストを生成できる」環境を構築できている場合、どこでもいいのでセルを追加して下記のコマンドを入力し実行します。

#PyTrochのバージョンを確認
import torch

print(torch.__version__)

 

もしこの結果が2.0.0+cu118なら、!COMMANDLINE_ARGSの中にopt-sdp-attentionを追加するだけでOKです。

ただ、それ以外のバージョンが出力された場合は、xformersを使うことをおすすめします。



まとめ

以上がPytorch2.0系の「Stable Diffusion」で、AIイラストの生成速度の高速化を行うことができるopt-sdp-attentionオプションの使い方でした。

ハイエンドGPUを使っている方には特に効果があるオプションなので、ぜひ皆さんも試してみてくださいね!

では、ここまで読んでいただきありがとうございました。

コメント

  1. 匿名 より:

    上記インストール方法で実施すると、Torchはバージョンアップしますがxformersは既存のままになるので起動時に警告が出ます
    torch: 2.0.0+cu118  •  xformers: 0.0.16rc425

    ワーニングを回避するには手動でxformersをバージョンアップする必要があります

    \webui\venv\Scripts\activate.bat
    pip install -U xformers
    python -m xformers.info

    これでエラーが出なくなります
    torch: 2.0.0+cu118  •  xformers: 0.0.19

    • 悠 より:

      コメント&ご報告ありがとうございます!
      Redditのやり方でもTorchをアップデートできることがわかってよかったです!

      とはいえxformersもアップデートしないとエラーが消えないのなら、下の記事で私がまとめた方法でもよさそうですね~
      https://yuuyuublog.org/xformers_update/