Xformersを導入する

Last-modified: 2023-03-26 (日) 23:57:30

Xformersによる高速化について

Xformersを有効化すると、画像生成速度の大幅な向上と、使用するVRAM量の大幅削減という2つの効果を得ることができます。
副作用として、同一モデル・同一seedでも生成結果が毎回ほんのわずかに変化するようになります。とはいえ人によっては誤差と言っていいレベル。
基本的に恩恵の方が遥かに大きいので、利用者が最も多い、定番の引数になっています。
しかしどんなPC・どんなグラボでも恩恵を受けられるとは限らず、ハードウェアや設定によっては逆に生成速度が低下する場合もあることも心に留めておいてください。

導入方法

まずは webui-user.bat を開きます。
(右クリック→「編集」か、もしくはメモ帳などを開いてそこにドラッグ&ドロップすれば開けます)

注意: 編集するのはwebui-user.bat の方だよ

注意: 編集するのはwebui-user.bat の方だよ
webui.bat の方じゃないよ
としあきがwebui.batを編集するのは厳禁だよ
なぜならwebui.batは1111の開発メンバーによってアプデされることがあるからだよ
もしもとしあきが手元のwebui.batを編集してしまうと、後日git pullとかで1111を最新版に更新する際に、編集履歴同士が衝突して面倒くさいことになるよ
だからとしあきが編集していいのはwebui-user.batの方だけだよ
ゆめゆめ忘るることなかれ
(そう囁くと老婆は煙のように姿を消した…)

開いたら、set COMMANDLINE_ARGS= の後ろに --xformers と書き加えてください。
以下のようになっていればOK

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--xformers

call webui.bat

これを保存すれば導入完了です。
よくわからなければ↑をそのまままるっとコピペすれば動きます。

 

もし既に set COMMANDLINE_ARGS= の後ろに何か書かれていた場合は、以下のように半角スペースで区切って書き加えてください。

set COMMANDLINE_ARGS=--nanika --xformers

GTX 9xx等の非常に古いグラボを使用している場合

Xformersは標準では GTX 10xx 以降のグラボ*1にしか対応していません。
とはいえその 10xx でも発売が6年前と結構前なのであまり気にする必要もないでしょう。

 

ただ、もしかすると「昔のPCをAI用マシンにしたい」とかでそれより前のグラボを使う事があるかもしれません。
そういった時はこのページの内容は無視して以下のページの指示に従ってください。
ただし自前でコンパイルする必要があったりでハードルは高めです。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Xformers

指摘・更新するべき箇所や助言など

  • こちらのwebui-user.batの書き換えではうまくインストールできませんでしたがhttps://www.youtube.com/watch?v=ZVqalCax6MAこちらを参考にしてlaunch.pyのとある個所を--xformersに書き換えたら無事インストールできました -- k? 2022-12-15 (木) 16:17:26
  • 動画の5:50あたりから解説されています -- 2022-12-27 (火) 06:59:32
  • webui.batの方を起動してるせいでそもそも適用されてないってオチではなくて? -- 2022-12-29 (木) 17:43:16
  • きっとそのオチだったかもしれません。webui-user.batを起動してこうしんするのですね!初心者が大変ご迷惑をおかけしました。すみません。 -- k? 2023-01-01 (日) 00:28:45
  • すみません。質問なのですが、これってpaperspaceやcolabなどで使用しているときはどうすれば良いものなのでしょうか…? -- 2023-02-06 (月) 06:32:25
  • No module 'xformers'. Proceeding without it.ってでるんですが、xformersもインストールしてるしよくわかりません。どなたかご存じですか? -- 2023-02-12 (日) 09:54:12
  • xformersのDLに失敗して破損しているのかもしれない。この場合--reinstall-xformers --xformersで解決できる可能性がある。
    あるいは、ここのClashSAN氏のコメントにあるように、xformersに最適化されていない環境や、NvidiaのGPUではないのかもしれないけど…。グラボは何をお使いでしょうか? -- 2023-02-12 (日) 11:00:29
  • 上記のコードを打っても駄目でした。RTX3090使ってます。 -- 2023-02-12 (日) 12:30:14
  • A matching Triton is not available, some optimizations will not be enabled.Error caught was: No module named 'triton'これも関係あるのでしょうか? -- 2023-02-12 (日) 12:43:29
  • そのTriton云々はエラーメッセージというよりは警告や注意である…と言う人もいるので、関係あるかどうか判断しかねるところです。
    venvフォルダやその中に構築されているであろうxformersが怪しいように思います。もしまだ試したことがなければ、一旦venvフォルダを削除してからwebui-user.batを実行してみてください。なおこの時venvを再構築するため多少時間がかかります。 -- 2023-02-12 (日) 12:56:29
  • venv削除しても駄目ですね。webuiを再インストールしても駄目でした。 -- 2023-02-12 (日) 14:16:51
  • XformersはNVIDIA GPUじゃないと使えない。代わりのオプションとして「--opt-sub-quad-attention」というのがある。 -- Radeon+Linuxユーザー? 2023-02-16 (木) 09:06:44
  • Xformersを無効にする方法がどこにも載ってない。設定画面見ても無いし… -- 2023-02-21 (火) 22:58:24
  • batに--xformersを入れたらxformersが有効になるから、--xformersを取ったらxformersが無効になる -- 2023-02-24 (金) 16:06:36
  • 導入時ポップアップでpydから見つかりませんでした、ってエラーの解決方法ってどうすればいいでしょうか? -- 2023-02-25 (土) 13:21:08
  • 多分PyTorchとかのバージョンが古い -- 2023-03-01 (水) 21:44:59
  • 同じくpydから見つからないというエラーが出る。「python exe エントリポイントが見つかりません」と言われて動かないです。Pytorch1.13にしたんだけど…。 -- 2023-03-06 (月) 17:21:46
  • そもそXformersとそれに対応したPyTorch,CUDA,Pythonをインストールしないと、起動コマンドに書き込んだところで意味がないと思います。わたしがそうだったから、それに気づいて上記の一式を全部インストールし直して、起動コマンドに書き込んだら、体感2~3倍の生成速度になりました。それともXformersをPCにインストールしている前提の話なのでしょうか?私みたいな初心者はまずPCにインストールされてないです。 -- 2023-03-14 (火) 08:31:43
  • WebUIのインストーラー版を用いる事で、ワンクリックで導入が出来ました。バージョン違いがだのリポジトリが見つかりませんだのにうんざりしていたのでインストーラー版おすすめ -- 2023-03-15 (水) 14:05:00
  • xformersのアップグレードに失敗して「エントリポイントが ~~ _C.pydから見つかりません」のポップアップが出る場合は、venvフォルダをリネームして再アップグレードすれば解決するっぽい。 -- 2023-03-20 (月) 17:24:10
  • そのエントリポイントエラーでvenvフォルダ消しても治らなかったからローカル版導入ページを参考に1から構築し直したら直った -- 2023-03-26 (日) 23:57:30

*1 正確にはアーキテクチャが Pascal, Turing, Ampere, Lovelace または Hopper のもの