「xformers」で「Stable diffusion」を高速化する方法をわかりやすく解説ーアップデート方法と「ToMe」「opt-sdp-attention」を使わない理由も

2023年7月8日Stable diffusionAI

title mozi

今回は「Stable diffusion」で「xformers」を使って、画像生成を高速化するやり方です。「xformers」のアップデートについても述べていきます。

グラボが弱いと画像生成は時間がかかるのニャ。ちょっとでも速くなると嬉しいのニャ。

他にも「opt-sdp-attention」「ToMe」といった高速化の方法がありますが、実際にやってみたところ、現状あまりおすすめできません。そのことについても解説していきます。

 

「xformers」での高速化

最初に述べておくと、高速化というのはノーペナルティでおこなわれているわけではありません

高速化とひきかえに画質が落ちたり、詳細が描かれなかったりなど、かならずなにかしらの犠牲を払っています。

その犠牲の中でも「xformers」は比較的軽微、もしくわからないレベルでの高速化を実現しています。

「xformers」の導入

そもそも「xformers」は最初から入っているので、インストールは必要ありません。起動時に「xformers」を呼び出すコマンドを付け加えるだけです。

bat2

まず「Stable diffusion」をインストールしたフォルダの「stable-diffusion-webui」の中にある「webui-user.bat」(いつも「Stable diffusion」を起動させるときにクリックしているやつ)を右クリックし、「編集」を選択するとメモ帳で内容を開いてくれます。

memo

以上のようになっているので、「set COMMANDLINE_ARGS=」のあとに

—xformers

をコピペして貼り付けてください(ブラウザによって「-」が一つになってしまう場合(ハイフンとしてつなげてしまう)があるようですが、「-」は2つです。上の画像を見てください)。

あとは「ファイル」から「上書き保存」してください。

ちなみに画像のように「–autolaunch」(「-」は2つ)を入れておくと、起動時にブラウザを自動で開いてくれます。必要であればついでに入れておけばいいでしょう。「ブラウザは自分のタイミングで起動させたい」という方は入れなくてもいいです。

あとはいつものように「Stable diffusion」を起動させるだけです。お疲れさまでした。

簡単ニャ。

 

「xformers」のアップデート

ここからは趣味の世界になってきますが、「xformers」を最新のものにしたい方はアップデート作業をおこなう必要があります。

ただ正直なところアップデートしてもそこまで変わらないので、いま「Stable diffusion」が健全に動いているのならそこまでしなくてもいいかなという感じはあります。しばらく「xformers」を使ってみて、気持ちもうちょっと速くしたいという方向けです。

さらにいうと、アップデート作業に失敗すると「Stable diffusion」が起動しなくなるので、バックアップはかならずとっておいてください。

そこまでのリスクを冒す必要性があるのかよく考えたほうがいいのニャ。

けっこうリスク大きいので、リスクとリターンが合っていないため、筆者としてはあまりおすすめしません

それと「Stable Diffusion」のバージョンの違いでも動かなくなるので、「xformers」だけをアップデートするより「Stable Diffusion」自体をアップデートしたほうがいいとは思います。

そのあとで「stable-diffusion-webui」の中にある「venv」フォルダを丸ごと削除してから起動すれば、最新の「xformers」がインストールされるでしょう。「Stable Diffusion」自体のアップデートについては以下の記事を参照してください。

それでも「xformers」だけをアップデートしたい人は以下の手順に従ってください。

ここまで注意しているのにまだやるのなら先に進むのニャ。

手順ですが、まずやるべきは「Pip」のアップデート、次に「Pytorch」のアップデート、そのあとに「xformers」のアップデートです。

「Pip」のアップデート

コマンドプロンプトを開きます。「stable diffusion」をインストールしたフォルダの

「stable-diffusion-webui」>「venv」>「Scripts」フォルダ

へ移動してください。

folder

そして上のアドレス部分の右側の空白の部分をクリックすると文字が青くなるので、そのまま消して「cmd」と打ち込みます。

コマンドプロンプト(黒い画面のウインドウ)が出てきますので、以下の

python.exe -m pip install –upgrade

を貼り付けるか手で打つかして、Enterキーを押してください。しばらく待てば終了ですが、コマンドプロンプトは閉じないでください。まだ使います

「Pytorch」のアップデート

version

まず「stable diffusion」を起動して、一番下のバージョンの部分を見ます。

ここで「torch: 2.0.0+cu118」と2.0.0以上であれば「Pytorch」のアップデートは必要ありません。たぶん最近「stable diffusion」をインストールした人は2.0.0以上になっているとは思います。飛ばして「xformers」のアップデートの項目に行ってください。

2.0.0以下の方は、さきほどのコマンドプロンプトを開きます。

コマンドプロンプト(黒い画面のウインドウ)が出てきますので、まず

activate

と打ち込んでEnterキーを押してください。

そののちに、

pip install torch==2.0.0 torchvision –extra-index-url https://download.pytorch.org/whl/cu118

を貼り付けるか手で打つかして、Enterキーを押してください。他のバージョンにしたければ公式サイトを見てください。

しばらく待てばインストール終了です。

「xformers」のアップデート

つづけてコマンドプロンプトに、

pip install -U xformers

を貼り付けるか打ち込むかしてEnterキーを押します。

これでしばらく待つと「xformers」が最新バージョンにアップデートされます。

あとは「Stable Diffusion」を起動するだけです。お疲れさまでした。

この労力に見合うだけ速くなるのかニャ?

体感的にはほぼ変わらないかなといった感じですね。

失敗して「xformers」が使えなくなったばあい

「stable-diffusion-webui」の中にある「venv」フォルダを丸ごと削除してください。

そののちに起動してみてください。自動的に「venv」が再ダウンロードされます。

「opt-sdp-attention」「ToMe」での高速化について

「xformers」以外に、「opt-sdp-attention」「ToMe」という高速化の方法があります。

どちらもやってみたのですが、「xformers」と比べて微妙かなというのが感想でした。

「opt-sdp-attention」の導入

まず「opt-sdp-attention」のほうなのですが、グラボのRTX30xxシリーズやRTX40xxシリーズで高速化が望めるとのことです。

導入は簡単で、「xformers」を導入したときのように「webui-user.bat」をメモ帳などで開いて、「set COMMANDLINE_ARGS=」のあとに

–opt-sdp-attention

を付け加えるだけです(「-」は2つ)。

「xformers」と同時につかえないので注意してください。こちらを導入する場合は、–xformers」のほうは消してください。

ただ正直スピードは「xformers」とそんなに変わらないかなという感じです。偏差レベルですね。

「ToMe」について

もうひとつの高速化である「ToMe(a1111-sd-webui-tome)」ですが、こちらは拡張機能なので導入が必要になります。

高画質化など処理に時間のかかるものに対してはちょっとは速くなりますが、そのぶん画質や書き込みを犠牲にします。

正直、ちょっと速くなるだけだったら、ちゃんと描いてもらったほうがいいので、微妙なところかなとは思います。

 

まとめ

基本的には「xformers」をつかっていれば十分かなとは思います。

速くなればなるほど、画質などいろいろなものが犠牲になっていきますしね。

なんにしろ一番の速度アップはやはりグラボの買い替えとは思います。