Stable Diffusionを高速化する「xformers機能」の使い方を解説!

「Stable Diffusionの画像生成に時間がかかってしまう、、、」「Stable Diffusionの画像生成を高速化したい!」

このような悩みをお持ちの方は多いのではないでしょうか?

今回PROMPTYでは、Stable Diffusionを高速化する「xformers機能」とは何か、Stable Diffusionを高速化する「xformers機能」の使い方、「xformers機能」でどのくらい高速化されるのか、Stable Diffusionを高速化する「xformers機能」の注意点について解説します。

Stable Diffusionを高速化する「xformers機能」とは

xformersは、画像生成のプロセスを最適化することで、画像生成速度を大幅に向上させながら、VRAMの消費を抑えられる機能です。

xformersはStable Diffusionにもともと備わっている機能ですが、初期設定では無効の状態になっています。

これは、全てのGPUに対して完全な互換性があるわけではないということや、クオリティの高い画像を生成しようとすると、逆にVRAMの消費量が増大する場合もあるためです。

それでも、その効率性と速度により、公式ではxformers機能を有効にすることが推奨されています。

For more efficiency and speed on GPUs, we highly recommended installing the xformers library.

(訳:GPUでの効率とスピードを上げるために、xformersライブラリのインストールを強くお勧めします。)

引用:Stability-AI / stablediffusion

Stable Diffusionを高速化する「xformers機能」の使い方

Stable Diffusionを高速化する「xformers機能」を使うためには、①torchのバージョンを確認して、②xformers機能を有効にする必要があります。

それぞれのステップを解説していきます。

①torchのバージョンを確認する

xformersを有効にする前にtorchのバージョンを確認する必要があります。

torchのバージョンと対応するxformersのバージョンは下記の通りです。

torchが1.x系の場合・・・xformers=~0.0.16
torchが2.x系の場合・・・xformers=0.0.17~

※23年5月以降にAUTOMATIC1111をインストールした方は、torchのバージョンがデフォルトで2.0.0になっています。

torchとxformersのバージョンがあっていない場合は、アップデートをする必要があります。

torchのアップデート方法

(1)「stable-diffusion-webui」フォルダ内の下から2つ目の「webui-user」ファイルを右クリックして、編集をクリックします。

(2)メモ帳が表示されるので、set COMMANDLINE_ARGS=の後ろに、

reinstall-torch

を入力し、その後に続けて

set TORCH_COMMAND=pip install torch==2.0.0 torchvision --extra-index-url https://download.pytorch.org/whl/cu118

を入力して、下記画像のようになるようにします。

(3)ファイル→上書き保存をして、ファイルを開くとtorchがアップデートされます。

xformersのアップデート方法

(1)Windowsの検索からコマンドプロンプトを開きます。

(2)下記のコマンドを入力し、ディレクトリを変更します。

cd "C:\Users\user\デスクトップ\stable-diffusion-webui\venv\Scripts"

(3)ディレクトリの変更が完了したら、下記のコマンドを実行します。

pip install -U xformers

(4)インストールが終わったら、下記コマンドでアップデートが適切に完了したか確認をします。

python -m xformers.info

2023年5月現在、「xformers 0.0.19」になっていれば適切にアップデートできています。

②xformers機能を有効にする

(1)xformers機能を有効にする前にバックアップを取っておくようにしましょう。

※環境によってはエラーが発生したり、今後のアップデートで想定外の問題が起こることもあるため

バックアップの取り方は、「stable-diffusion-webui」フォルダ内の下から2つ目の「webui-user」ファイルをコピーし、ファイル右側の何もないところで貼り付けをします。

するとコピーしたファイルの上に、「webui-user-コピーというファイルが作成されるので、下記画像のように名前にxformersを入れて分かりやすくすることをおすすめします。

(2)コピーして作成したファイルを右クリックして、編集をクリックすると、下記画像のようにメモ帳の画面が開きます。

(3)「set COMMANDLINE_ARGS=」の横に下記の文章をコピペし、ファイル→上書き保存でメモ帳を閉じます。これでxformers機能の有効化は完了です。

--xformers

(4)ファイルを開いてStable Diffusionを起動します。

コマンドプロンプトに「Installing xformers」と表示されれば、xformersの有効化が適切に完了しています。

「xformers機能」でどのくらい高速化される?

今回は下記のスーパーマンのコスプレをした美女を生成するプロンプトで検証してみます。

関連記事

「Stable Diffusionでコスプレをした美女を作成したい!」という方は多いのではないでしょうか? 今回PROMPTYでは、Stable Diffusionで、自由に表情や髪型、コスプレの内容、背景を設定して、高品質なコスプ[…]

使用モデル:Beautiful Realistic Asians
Sampling method:DPM++ 2M Karras
Sampling steps:30
Width:512
Height:512
Batch count:1
Batch size:1
CFG Scale:9
Script:None

xformers機能が無効の場合

生成にかかった時間:13.16秒

生成した画像

xformers機能が有効の場合

生成にかかった時間:12.95秒

生成した画像

ほんの僅かな差ではありますが、xformersが有効にした時の方が短い時間で画像を生成することができました。

環境によっては2倍ほど生成時間を短縮することができる場合もあるようです。

Stable Diffusionを高速化する「xformers機能」の注意点

Stable Diffusionを高速化する「xformers機能」の注意点として主に、

①生成結果が一貫しない
②グラボによっては「xformers機能」が使えない
③グラボの性能による差が大きい

の3つが挙げられます。それぞれ解説していきます。

①生成結果が一貫しない

xformersを有効化すると、同じパラメーターでも、画像を生成した際に出力結果が一貫しない場合があることが、Stable Diffusionの公式ページのレポートで紹介されています。

The new xformers optimization has something that makes it so that when given the same parameters for generation the same image won’t be generated, see examples below.
(訳:新しいxformersの最適化では、生成に同じパラメーターを与えると、同じ画像が生成されないことがあります。)

引用:AUTOMATIC1111/stable-diffusion-webui

他の人のプロンプトを参考にする場合などは、xformersを有効化しない方がお手本通りの画像を出力できる可能性が高いです。

②NVIDIA以外のGPUを搭載している場合は「xformers機能」が使えない

Stable Diffusionの公式ページにも記載されていますが、使用しているグラボがNVIDIA以外のGPUを搭載している場合、xformers機能による高速化をすることができません。

The Xformers library provides an optional method to accelerate image generation. This enhancement is exclusively available for NVIDIA GPUs, optimizing image generation and reducing VRAM usage at the expense of producing non-deterministic results.
(訳:Xformers ライブラリには、画像生成を高速化するオプションの方法があります。この機能拡張はNVIDIA GPU専用で、画像生成を最適化し、非決定論的な結果を生成する代償としてVRAM使用量を削減します。)

引用:AUTOMATIC1111/stable-diffusion-webui

AMD製のRadeonシリーズやMacBookでは、xformers機能による高速化をすることができないということです。

これからGPUの購入を検討している方は、NVIDIA製のGPUを搭載したグラボをおすすめします。

③グラボの性能による差が大きい

xformers機能の有効化による画像生成の高速化といっても、そこまで莫大な効果はありません。

グラボの性能が最も画像生成のスピードに影響します。

性能の低いグラボでxformers機能の有効化するより、性能の良いグラボを使う方が圧倒的に画像生成を高速化することができます。

まとめ

今回PROMPTYでは、Stable Diffusionを高速化する「xformers機能」とは何か、Stable Diffusionを高速化する「xformers機能」の使い方、「xformers機能」でどのくらい高速化されるのか、Stable Diffusionを高速化する「xformers機能」の注意点について解説しました。

「xformers機能」は環境によっては、画像生成にかかる時間をかなり短縮することができますが、グラフィックボードの性能による画像生成速度の向上と比べると微々たるものです。

画像速度を大幅に向上させたい方は、「xformers機能」が使えるNVIDIAのGPUを搭載したグラフィックボードの購入を検討してみてはいかがでしょうか?

~Stable Diffusionで素早く画像生成するには~

Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。

このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。

推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。

2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。

コスパを重視する方は、RTX 3060を選ぶと良いでしょう。

このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。