- 画像生成が遅くてイライラしている
- 大きい画像を生成するとメモリ不足になる
こんにちは、タカムネ(@takamune_ai)です。
この記事では、Stable Diffusionを使っていて、上記のような悩みを解決する『xformers』のインストール方法・使い方についてご紹介します。
xformersを使うと、VRAMの使用効率を改善してくれて、画像の生成速度もアップします。
少し注意点がありますが、それが許容できれば、トップクラスに導入したほうが良い拡張機能です。
xformersとは?
xformersを配布しているページには、以下の説明があります。
Xformers library is an optional way to speedup your image generation.
This optimization is only available for nvidia gpus, it speeds up image generation and lowers vram usage at the cost of producing non-deterministic results.
Note: Both Windows and linux should no longer need to build. On 1/23/23 webui shifted from a user-built wheel to an official wheel along with other package upgrades, shown in this PR
If you use a Pascal, Turing, Ampere, Lovelace or Hopper card with Python 3.10, launch the repo with
Xformers--xformersand a compatible wheel will be installed.
ポイントをかいつまんでいうとこんな感じでしょうか。
- Xformersは、画像生成を高速化する
- Xformersは、NVIDIAのグラボでしか動かない
- Xformersを使うと、同じパラメーターでも異なる画像が生成される
メリットしかないと思いきや、一番最後が注意点です。
これがどのくらいの影響があるかを次項でご説明するので、まずそちらを確認いただければと思います。
xformerの注意点
Stable Diffusionは、基本的に使用したモデルやパラメーターを全部同じにすれば、毎回全く同じ画像が生成されます。
しかし、xformerを導入すると、モデルやパラメーターを同じにしても、毎回違う画像が生成されます。
どのくらい違うのかは、画像によって異なるのですが、以下に実例をご紹介します。






この2例ともに、基本的な構図は変わっていませんが、よく見ると、服の陰影や背景の細かい部分が変わっています。画像によっては、印象が大きく変わる場合もあるかもしれません。
xformersはすぐ外すことができるので、まず、ご自身の環境でテストして、この変化を許容できるか確認することをおすすめします。
タカムネ1度だけ人物のポーズが結構変わったことがあるので、画像によって変化の度合いは違うと思います。
なお、そもそも同じ画像を再生成する必要がない場合は、まったく問題ありませんね。
私の場合、同じ画像を再生成することはたまにあるのですが、xformersなしだと遅くてかったるいので、導入することにしています。
xformersの導入方法
xformersは、最初からStable Diffusion Web UIに含まれているので、有効化するだけで動作します。(2023年4月現在)
「stable-diffusion-webui」フォルダ内にある「webui-user.bat」をテキストエディタで開いて、以下の赤文字を追記して保存してください。
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--xformers
call webui.bat
これで、通常通り、webui-user.batをダブルクリックして起動すればOKです。
xformersをやめたい場合は、追記した文字列を消せばOKです。
xformersの効果テスト
筆者の環境で、xformersをあり・なしで、画像の生成時間を比較しました。
| 画像サイズ | xformersあり | xformersなし |
|---|---|---|
| 600×900 | 12.5秒 | 16.5秒 |
| 700×1100 | 32.5秒 | 56.0秒 |
- グラボは、NVDIA GeFource RTX 3060(VRAM12GB)を使用
大きめの画像サイズのほうが、より時間短縮されました。
根本的な高速化はグラボの性能アップ
xformersを導入すると、確かに画像生成の速度はアップしますが、根本的にはグラボの性能が低いとかなりキツいと思います。
私は、最初、『RTX 1660 Super(VRAM6GB)』を使っていましたが、全体的に遅くて、一部の動作に関しては、メモリ不足でエラーになることがありました。
xformersも一つの選択肢ではありますが、Stable Diffusionを快適に使うなら、グラボの性能アップも検討しましょう。
できれば、『RTX 3060(VRAM12GB)』以上が望ましいですね。








コメント