Xformersについて
追加ライブラリの一つ。
生成AI分野でしばしば使われる。画像生成だけでなく、言語生成などにも。
https://github.com/facebookresearch/xformers
Xformersによる高速化について
Xformersを有効化すると、次の効果を得ることができます。
- 画像生成速度の大幅な向上
- 使用するVRAM量の大幅削減
恩恵が大きいので、基本的に導入したほうがよいでしょう。
「cuda out of memory」エラーが発生したときに、お世話になるオプションです。
PyTorch2系の高速化について
どこに書こうか迷いましたがとりあえずここに書きます。
PyTorch2系にアップデートすると"--opt-sdp-attention --opt-sdp-no-mem-attention"のパラメータ
を--xformersの代わりにCOMMANDLINE_ARGSに設定することで高速化が図れると紹介するサイトも
ありますが、VRAM消費量はxformersのほうが少ないので注意しましょう。
GTX1070 8GBで生成時に上記の最適化を利用したら768x768の生成がVRAM不足で動かなくなりました。
導入方法
導入要件
- NVIDIA系のGPUであること。
必須要件を満たせない場合は、Xformersは導入出来ません。
※この場合、DirectMLを使用することになります。
GTX 9xx等の非常に古いグラボを使用している場合
Xformersは標準では GTX 10xx 以降のグラボ*1にしか対応していません。
とはいえその 10xx でも発売が6年前と結構前なのであまり気にする必要もないでしょう。
ただ、もしかすると「昔のPCをAI用マシンにしたい」とかでそれより前のグラボを使う事があるかもしれません。
そういった時はこのページの内容は無視して以下のページの指示に従ってください。
ただし自前でコンパイルする必要があったりでハードルは高めです。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Xformers
インストール
1.webui-user.bat を開く
webui-user.bat をテキストエディタで開きます(※)。
ダブルクリックじゃないよ。編集するために開くんだよ。※右クリック→「編集」、またはメモ帳で開く。
stable diffusionのフォルダ
└webui
├ webui-user.bat ←これ。
└ webui.bat ←こっちじゃない。
注意: 編集するのはwebui-user.bat の方だよ
webui.bat の方じゃないよ
としあきがwebui.batを編集するのは厳禁だよ
なぜならwebui.batは1111の開発メンバーによってアプデされることがあるからだよ
もしもとしあきが手元のwebui.batを編集してしまうと、後日git pullとかで1111を最新版に更新する際に、編集履歴同士が衝突して面倒くさいことになるよ
だからとしあきが編集していいのはwebui-user.batの方だけだよ
ゆめゆめ忘るることなかれ
(そう囁くと老婆は煙のように姿を消した…)
2.webui-user.bat を編集&保存
set COMMANDLINE_ARGS= の後ろに --xformers という引数を書き加えてください。
以下のようになっていればOK.
よくわからなければ下記をそのまままるっとコピペすれば動きます。
編集後に保存します。
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--xformers
call webui.bat
- 引数の記入ルールはこちら↓
誘導→ 「webui-user.bat」を編集する
3.WebUIを起動
すると、インストールが自動で実行されて導入完了です。
なお、上記の「--xformers」コマンドは削除不要です。
4.Xformersを使用したくない時
「--xformers」コマンドを削除しましょう。
すでにxformersが導入していて、かつ1111を更新及び再起動したときに
notice(注記)として、そのxformersのバージョンでは未検証(サポート外みたいなもの)と表示されることがあります。
そんなときは、コマンド「--reinstall-xformers」を追記しましょう。(追記するのは更新時の1回のみ)
set COMMANDLINE_ARGS=--reinstall-xformers
PyTorchのアップグレード(必要な場合のみ)
XformersにはPyTorchが必要です。
PyTorchそのものは既にインストール済みだと思います(web-UI導入時)。
通常作業は不要ですが、もし旧バージョンと指摘された場合はアップグレードしてください。
webui-user.batを開き、下記コマンドを追加
--reinstall-torch
インストール実行後は、コマンドを外す。
指摘・更新するべき箇所や助言など
(Tips)
導入がうまく行かない場合
→ XformersがなくてもStable diffusionは動作します。
導入できない理由は、個々のPC環境に依存するので、エラー文を眺めるほかありません。
質問による解決は難しいです。
どうやっても使えないケースもあります。
自己解決できないなら、いさぎよく導入を諦めましょう。
/usr/local/lib/python3.9/dist-packages/torchvision/io/image.py:13: UserWarning: Failed to load image Python extension: libtorch_cuda_cu.so: cannot open shared object file: No such file or directory -- 2023-07-16 (日) 21:42:13
自動ウィンドウ機能の--autolaunchは一番最後の順番にすること。
autolaunchを--xformersより先に記述すると
--xformersを無視してしまうので順番には気をつけてください
この記事 https://wikiwiki.jp/sd_toshiaki/%E3%80%8Cwebui-user.bat%E3%80%8D%E3%82%92%E7%B7%A8%E9%9B%86%E3%81%99%E3%82%8B は間違ってます。
正しくはset COMMANDLINE_ARGS=--xformers --autolaunch
-- 注意? 2023-07-26 (水) 19:27:58
Python 3.10.10 [MSC v.1929 64 bit (AMD64)]Version: v1.5.0Commit hash: a3ddf464a2ed24c999f67ddfef7969f8291567beInstalling requirements for Seed TravelLaunching Web UI with arguments: --autolaunch --xformers#
あるいは何か記入ルールを間違えると、起動する場合とそうでない場合があるとか・・・?謎です。 -- 2023-07-26 (水) 20:20:52