【Stable Diffusion】xFormersとは?高速化・VRAM削減の効果と導入方法

こんにちは、タカムネ(@takamune_ai)です。

Stable Diffusion WebUIで画像生成が遅い、VRAM(グラフィックメモリ)が不足する――そんなときに検討できる最適化の一つがxFormers(エックスフォーマーズ)です。

この記事では、AUTOMATIC1111版Stable Diffusion WebUIを対象に、xFormersの仕組み、導入方法、注意点、筆者が2023年に実施した比較テストを紹介します。現在は別の最適化方法もあるため、必ずしもxFormersを導入する必要はありません。

※掲載する速度・画像の比較結果は2023年当時の環境によるものです。現在のWebUIやPyTorch、xFormersで同じ結果になることを保証するものではありません。

目次

xFormersとは?

xFormersは、画像生成で使用するAttention(アテンション)処理を効率化するためのライブラリです。対応するNVIDIA GPU環境では、VRAM使用量を抑えたり、画像生成を高速化したりできる場合があります。

ただし、効果はGPU、モデル、解像度、PyTorch・xFormersのバージョンなどで異なります。導入しただけで必ず速くなるわけではありません。

AUTOMATIC1111の公式Wikiでも、xFormersは任意の最適化方法として案内されています。詳しくは公式Wiki「Optimizations」を参照してください。

xFormersは現在も必要? SDP最適化との違い

現在のAUTOMATIC1111では、xFormersのほかに、PyTorch 2系のScaled Dot Product Attention(SDP)を使った最適化も選べます。環境によってはSDPのほうが速いこともあるため、まず現在の設定で生成速度やVRAM使用量を確認し、必要なら比較するのがおすすめです。

主な選択肢

xFormers:起動オプション --xformers で利用する方法。対応環境やライブラリの互換性に注意が必要です。

SDP:--opt-sdp-attention などで利用するPyTorch 2系の最適化。環境によってはxFormersより高速になる場合があります。

どちらも効果は環境依存です。速度だけでなく、VRAM使用量や生成結果の再現性も比較してください。

xFormers使用時の注意点:生成結果の再現性

古いxFormersでは、同じSeedや設定でも細部が変わる「非決定的な結果」が注意点でした。ただし、公式WikiではxFormers 0.0.19以降で決定的な結果を得られるようになったと説明されています。現在のxFormersで毎回必ず画像が変わる、というわけではありません。

なお、最適化方式やPyTorchなどのバージョンを切り替えると、計算の違いによって生成画像が変わる場合があります。厳密な再現が必要な場合は、Seedだけでなく、モデル・VAE・Sampler・ソフトウェア環境も記録しておきましょう。

以下は、筆者が2023年当時に撮影した比較画像です。現在のxFormersの挙動を示す検証ではなく、過去の実験記録として掲載しています。

ケース1:2023年当時の生成結果
ケース2:2023年当時の生成結果

当時の筆者の環境では、基本的な構図は近い一方で、服の陰影や背景などの細部に違いが見られました。

タカムネ

当時は、人物のポーズが比較的大きく変わったこともありました。ただし、これは過去の環境での体験です。

xFormersの導入方法(AUTOMATIC1111/Windows)

AUTOMATIC1111版WebUIでxFormersを利用する場合は、起動オプション --xformers を指定します。対応するPyTorch・Python・GPU環境であることが前提で、環境によってはインストールや起動時にエラーが発生する場合があります。

WebUIを終了し、インストール先の webui-user.bat をテキストエディターで開いて、COMMANDLINE_ARGS の行を次のように変更します。

@echo off

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

call webui.bat

すでにほかの起動オプションが設定されている場合は、それらを消さずに半角スペースを空けて --xformers を追加してください。

保存後、通常どおり webui-user.bat から起動します。初回は関連パッケージの準備が必要になる場合があります。起動ログにエラーが出ていないか確認してください。

xFormersを無効にする場合は、追加した --xformers を削除してWebUIを再起動します。変更前に webui-user.bat をバックアップしておくと安心です。

※起動できない場合は、無理にPyTorchやxFormersを個別更新せず、まず起動オプションを元に戻してください。ライブラリの互換性はWebUIのバージョンによって異なります。

xFormersの効果を比較:2023年の検証結果

筆者が当時使用していたNVIDIA GeForce RTX 3060(VRAM 12GB)で、xFormersの有無による生成時間を比較した結果です。

画像サイズxFormersありxFormersなし
600×90012.5秒16.5秒
700×110032.5秒56.0秒

このテストでは、600×900で約24%、700×1100で約42%の生成時間短縮が見られました。ただし、測定時のWebUI・PyTorch・xFormersのバージョンなどの詳細条件が残っていないため、参考値としてご覧ください。

現在の環境で導入を判断するなら、同じモデル・解像度・Sampling Steps・Batch sizeで複数回測定し、生成時間とVRAM使用量を比較するとよいでしょう。

VRAM不足や生成速度が気になる場合の考え方

xFormersは最適化の一つですが、すべてのVRAM不足を解消できるわけではありません。モデルの種類、画像サイズ、Batch size、使用する拡張機能なども必要なVRAM量に影響します。

筆者は以前、GTX 1660 SUPER(VRAM 6GB)を使用しており、処理速度やメモリ不足に悩む場面がありました。その後、RTX 3060(VRAM 12GB)を使用して検証しました。

GPUの更新は有効な選択肢ですが、必要なスペックは利用するモデルや用途によって変わります。「RTX 3060以上なら必ず快適」といった一律の基準では判断しないことが大切です。

まとめ

xFormersは、対応環境でVRAM使用量や生成速度を改善できる場合がある最適化ライブラリです。一方で、AUTOMATIC1111にはSDPなどの代替手段もあり、現在は必須の設定ではありません。

まずは標準設定での速度とVRAM使用量を確認し、必要に応じて最適化方法を比較してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次