xFormers以外で、Stable Diffusionの生成速度を高速化
Stable Diffusionでの画像生成については、ハードウェア環境やソフトウェアの構成で大きく速度が異なります。ハードウェア環境については物理的な部分が大きいのでなかなか変えることができませんが、ソフトウェアの構成や設定で、生成速度を高速化できる可能性があります。
速さ=生産性となり、速度が増せばその分様々なトライ&エラーができるため、速度はかなり重要な要素といえます。今回はPytorch2.0がインストールされている前提の高速化となります。その他の対策を試したいという方は「Stable Diffusionのパフォーマンスを向上させるための15のTips」や「Stable Diffusionのメモリ不足対策・解決策まとめ」をご覧ください。
SPADを利用して高速化
SPDAとはscaled dot product attentionの略称で、Pytorch 2.0が正式にリリースされたことでStable DiffusionでSPDAが利用可能になりました。環境にも依存する可能性がありますが、「高速化適応無し < xFormers < SPDA」の順に高速化されるとも言われています。
SPDAを利用して高速化するためには、ある程度高速かつVRAMを積んだGPUで無いと効果は薄いようですが、試してみる価値はありそうです。
SPDA利用のためにPytorchの環境を確認
Stable Diffusionの画面が一番わかりやすく、画面下部に現状の環境が表示されています。
2.0.0系+cu118にアップデートされていればSPDAを利用した高速化に対応させることができます。
もしPytorchのバージョンが低いという方は、インストールしたフォルダの「webui\venv\Scripts」の場所からコマンドプロンプトを起動し、以下のコマンドでアップデート可能です。
pip install torch==2.0.0 torchvision --extra-index-url https://download.pytorch.org/whl/cu118
特定のバージョンに変更したい方は公式サイトをご確認ください。
–opt-sdp-attentionで高速化
高速化の方法は、webui-user.batに「-opt-sdp-attention」を書き加えるだけです。
AnimateDiffなど、現状、xFormersが適用されず、その恩恵が受けられないという状況にあるプログラムを多く使う方にとっては非常に効果がある手法だと思います。また、併せて「opt-sdp-no-mem-attention」というオプションもあり、こちらも同様にPytorch2.0系の環境で高速化されますが一部環境ではエラーになるという報告もあるため併用するかどうかは環境次第で判断となります。
Pytorch2.0系の環境ではxformersよりも高速化できるという報告も上がっています。注意点としてxFormersと併用はできないためご注意ください。
set COMMANDLINE_ARGS=--opt-sdp-attention --opt-sdp-no-mem-attention
エラーが出る場合は
set COMMANDLINE_ARGS=--opt-sdp-attention
環境によっては有効な手法
環境によってはxformersのほうが早かったという報告もあるため、各環境で見極めが必要なため、実際のどちらが適しているかは一度試してみて速度計測してみるのが良いと考えます。数秒の差でも積み重なると、大きな時間となるため、可能な限り高速化できるにこしたことはありません。ハードと違い手軽に試せるため、ぜひお試しください。
その他の高速化の手段やメモリ不足についての対象方法は「Stable Diffusionのメモリ不足対策・解決策まとめ」をご覧ください。