「xformers」で「Stable diffusion」を高速化する方法をわかりやすく解説ーアップデート方法と「ToMe」「opt-sdp-attention」を使わない理由も
今回は「Stable diffusion」で「xformers」を使って、画像生成を高速化するやり方です。「xformers」のアップデートについても述べていきます。
他にも「opt-sdp-attention」「ToMe」といった高速化の方法がありますが、実際にやってみたところ、現状あまりおすすめできません。そのことについても解説していきます。
「xformers」での高速化
最初に述べておくと、高速化というのはノーペナルティでおこなわれているわけではありません。
高速化とひきかえに画質が落ちたり、詳細が描かれなかったりなど、かならずなにかしらの犠牲を払っています。
その犠牲の中でも「xformers」は比較的軽微、もしくわからないレベルでの高速化を実現しています。
「xformers」の導入
そもそも「xformers」は最初から入っているので、インストールは必要ありません。起動時に「xformers」を呼び出すコマンドを付け加えるだけです。
まず「Stable diffusion」をインストールしたフォルダの「stable-diffusion-webui」の中にある「webui-user.bat」(いつも「Stable diffusion」を起動させるときにクリックしているやつ)を右クリックし、「編集」を選択するとメモ帳で内容を開いてくれます。
以上のようになっているので、「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」フォルダ
へ移動してください。
そして上のアドレス部分の右側の空白の部分をクリックすると文字が青くなるので、そのまま消して「cmd」と打ち込みます。
コマンドプロンプト(黒い画面のウインドウ)が出てきますので、以下の
python.exe -m pip install –upgrade
を貼り付けるか手で打つかして、Enterキーを押してください。しばらく待てば終了ですが、コマンドプロンプトは閉じないでください。まだ使います。
「Pytorch」のアップデート
まず「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」をつかっていれば十分かなとは思います。
速くなればなるほど、画質などいろいろなものが犠牲になっていきますしね。
なんにしろ一番の速度アップはやはりグラボの買い替えとは思います。