xformersを使ってStable Diffusionを高速化しよう! | romptn Magazine

xformersを導入してStable Diffusionを高速化しよう!

Stable Diffusion

AI画像を生成する上で多くの人が使っているStable Diffusionですが、画像を生成する際にこんな事を思ったことはありませんか?

もっとスムーズに画像を生成したい

待っている時間が勿体無い

待ち時間を減らして生成枚数を増やしたい

今回は、xformersの導入方法や使い方を分かりやすくご紹介します。

最後まで読んでいただくと、画像の生成時間を短縮し、効率よく生成できるようになります

※Stable Diffusionの使い方から詳しく学びたい!という方は、以下の記事を参考にしてください。

スポンサーリンク

xformersとは?

そもそもStable Diffusionでよく使われている「xformers(エックスフォーマーズ)って何?」と思う方も多いと思います。

「xformers」は画像生成の過程を最適化し、生成速度をできるだけ速めつつVRAMの使用量も抑えられる便利な機能です。

つまり『xformers』とは、簡単に説明すると、画像生成にかかる時間を高速化してくれる機能のことです。

※参考:https://github.com/facebookresearch/xformers

Stable Diffusionの画像生成を最速で学びたいあなたへ!
  • Stable Diffusionの基礎を2時間でマスター!
  • 高スペックPCがない方向けに徹底解説。
  • ControlNetなど、必須級の拡張機能も網羅。
  • 今話題のSDXL、AI動画生成も。
  • 特典として、大人気「おすすめ拡張機能・モデル解説」「プロンプト大全」つき!
\このボタン限定!70%オフキャンペーン実施中!/
70%オフキャンペーン実施中!/

xformersを有効化するメリット・デメリット

では、xformersを有効化するメリット・デメリットについてみていきましょう。

xformersを有効化するメリット

xformersを有効化にすることで、主に2つの効果を得ることが出来ます。

  • 画像の生成速度をアップしてくれる
  • VRAM の使用量を抑えられる

Stable Diffusionでは、ランダムに画像が生成されるため自分の納得する画像にたどり着くまでに何度か生成することがあると思います。

しかし、xformersを使用することで画像生成にかかる時間を加速してくれるだけでなく、作業の効率化につながります。

Stable Diffusionを提供している会社Stablitiy AI社も、xformersの有効化を推奨しています(参考:下記引用)ので、是非有効化してみましょう。

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

訳:GPUの効率と速度を向上させるには、xformersライブラリをインストールすることを強くお勧めします。

Stability AI

xformersを有効化するデメリット

ただ、xformersを使用する上で

  • 画像の一貫性が保たれない
  • グラボによっては「xformers」が使えないこともある
  • グラボの性能による差が出やすい

といったデメリットなどもあります。使用する際は、デメリットもしっかりと理解しておくことが大切です。

そして、注意が必要なのがxformersを導入できるローカル環境は「NVDIA製のGPUのみとなっています。2023年12月現在では、AMD製のGPUをお使いの方はサポートされていませんので、ご注意ください。

プロンプトジェネレーターで画像生成プロンプトの参考に!
  • Stable Diffusionのプロンプトの見本が知りたい
  • 画像生成が思ったようにできない
  • 色々なプロンプトを探したい
など、画像生成AIのプロンプトに関する疑問が解決するかもしれません。

xformersのインストール・有効化する方法

xformersは、Stable Diffusionにもとから備わっているものですが、初期状態では無効になっているので、このxformersを有効化する必要があります。

なぜ無効になっているかというと、すべてのGPUに対して絶対的な互換性があるわけでなく、高解像度・高画質の画像を生成すると逆にVRAM(メモリ)の使用量が大幅に増えてしまう可能性もあるからです。

それでは、xformersのインストール・有効化する方法を解説していきます。

【準備①】torchのバージョンを確認する

Stable Diffusionで「xformers」を有効化する前に、torchのバージョンを確認する必要があります。

torchとは、機械学習ライブラリ・科学計算フレームワークのことで、GPUを利用する機械学習のために幅広いアルゴリズムを提供するものです。

torvhのバージョンに対応するxformersのバージョンは以下の通りです。

  • torchが「1.x」系バージョン:xformersは「~0.0.16」
  • torchが「2.x」系バージョン:xformersは「0.0.17~」

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

バージョンの確認方法は、下記画像の箇所で確認することができます。

torchとxformersのバージョンが対応していない場合は、torchをアップデートしましょう。

torchのアップデート方法

①「Stable-Diffusion-webui」フォルダ内の下から2つ目にある「webui-user」ファイルを右クリックして、編集を押します。

②メモ量が出てきますので、「set COMMANDLINE_ARGS=」のあとに

reinstall-torch

と入力し、さらに続けて

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

③「ファイル」→「上書き保存」をクリックして、ファイルを開くとtorchがアップデートされます。

※xformersのアップデート方法は、後ほどご紹介します。

【準備②】バックアップをとる

xformersをインストールする前に、バックアップを取りましょう。

環境によってはエラーが起きたり、今後のアップデートで何か問題が発生してしまう可能性もあるからです。

バックアップの取り方を説明していきます!

「stable-diffusion-webui」フォルダの下から2つ目にある「webui-user」ファイルをコピーして、ファイル右側など空白の部分にペーストします。

するとコピーしたファイルの上に「webui-user-コピー」というファイルが作成されますので、お好きな名前(分かりやすいもの)に変更します。

こちらでバックアップは完了です!

xformersのインストール方法

ここからは、xformersの導入方法について解説していきます。

1.webui-user.bat を開く

2.xformersをインストール&保存

3.webui-user.batを起動して確認

stable-diffusion-webuiから

webui-user.bar』を右クリック →(Windowsの方は その他のオプション)→「編集」を選択する。

次に『set COMMANDLINE_ARGS=』の後に『‐‐xformers』と入力してください。

入力したらファイルから保存をし、webui-user.bat を起動する。

Launching Web UI with arguments:–xformers 」となっていればインストール完了です。

xformarsを使用しない時は、先ほど入力した『‐‐xformars』を削除して保存してください。

NVIDIA系のGPUを搭載してあることが重要です。このGPUを搭載していない場合(MacBook 等)は、xformersを利用することが出来ないことがあります。

xformersのアップデート方法

1.Pytorchとxformersのバージョンを確認する

WebUIを起動して一番下までスクロールする。

2.Phytorchのアップデート

torch:2.0.1+cu1182.0.0以上の場合はアップデートが必要ありません。

それ以下の人は、次の手順を行ってください。

「WebUI」→「venv」→「Scripts」を開き、下記の部分に「cmd」と入れて、Enterを押す。

コマンドプロンプトに「activate」→ Enterキー

次に、「pip install torch==2.0.0 torchvision –extra-index-url https://download,pytorch.org/whl/cu118」→ Enterキー

3.xformersのアップデート

先ほどと同様に、コマンドを開き「pip install -U xformers 」→ Enter

以上で、最新のxformersへのアップデートは終了です。

アップデートが終了したらコマンドで確認してみてください。最新版になっていればformersの更新は完了です。

xformersでエラーが出たときの対処法

「xformarsをインストールするのに失敗して、エラーが出てしまう…。」という方向けに、エラーが出た際の対処方法を解説します。

1.「stable-diffusion-webui」の中にある「venv」フォルダを削除

2.WebUIを起動する

3.自動的に「venv」が再ダウンロードされ、xformersもインストールされます。

以上の方法でエラーに対処することができますので、エラーが出た際は試してみてください。

xformersを有効化するとどのくらい高速化されるのか?

使用モデル:Beautiful Realistic Asians
Sampling method:DPM++ SDE Karras
Sampling steps:25
Width:512
Height:800
Batch count:1
Batch size:1
CFG Scale:7
Script:None

上記の画像を生成した場合に、xformersありとなしでどのくらい生成速度が違うかを比較していきます。

xformersが無効の場合にかかった時間:1分5秒

xformersが有効の場合にかかった時間:35秒

xformersを使用すること30秒短縮され、約2倍も生成速度が速くなりました。

この結果からすると、『xformers』は有効化するべきということが言えます!

xformersを利用する際の注意点

Stable Diffusionで画像生成速度を大幅に向上させてくれる「xformers」ですが、注意すべき点が以下のように3つあります。

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

②グラボによっては「xformers」が導入できない場合もある

③生成結果が同じにならない

では、それぞれ詳しくみていきましょう。

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

「xformers」を有効化すると画像生成を高速化できますが、膨大な効果があるわけではなく、もちろん限界があります。

グラボの性能が画像生成速度に最も影響するのですが、そのグラボの性能が低いと「xformersを有効化する」より、グラボの性能を良いものに変えたほうが画像生成速度をより速めることができる場合もあります

②グラボによっては「xformers」が導入できない場合もある

Stable Diffusionの公式ページにも記載がありますが(参考:下記引用)、利用しているグラボが「NVDIA以外の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

ですので、MacBookやAMD製のRadeonシリーズでは「xformers」機能が利用できませんので注意が必要です!

③生成結果が同じにならない

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を有効化しない」方がイメージに合った画像が生成できるということになります。

「opt-sdp-attention」「ToMe」でも高速化は可能!

「xformers」以外に、「opt-sdp-attention」「ToMe」で高速化するという方法がありますが、実はあまりオススメできません。

どちらも「xfoermers」の方がより速く画像を生成することができるからです。

試してみたい!という方もいらっしゃると思うので、それぞれインストール方法を紹介しておきます。

「opt-sdp-attention」のインストール方法

こちらは、グラボの「RTX30xxシリーズ」や「RTX40xxシリーズ」で高速化ができるものです。

インストール方法はとても簡単で、

webui-user.bat」をメモ帳で開き、「set COMMANDLINE_ARGS=」のあとに下記のコードを入力してください。

--opt-sdp-attention

xfoemersと同時に使うことはできませんので、どちらかを無効にして使うようにしてください!

「ToMe」のインストール方法

こちらは、拡張機能になりますのでStable Diffusionから導入する必要があります。

「ToMe」はある程度高速化できますが、その分画質が落ちたり呪文(プロンプト)に沿っていない画像が生成されたりするのがネックです。

しかし、「ToMe」は「xformers」との併用も可能であることが「Github」の公式サイトに記載されています。特にアップスケーラーを用いて高画質化を図る際に効果を発揮しますよ!

ToMeのインストール方法は、以下の記事で詳しく解説していますので参考にしながらインストールしてみてください!

まとめ

いかがでしたでしょうか?

xformarsを使ってStable Diffusionを高速化する方法についてご紹介してきました。

今回のポイントをまとめると、以下のようになります。

  • xformersで画像生成を高速化できる
  • 初期状態では、無効になっているxformarsを有効化する
  • xformarsは定期的にアップデートされる
  • xformarsのインストールでエラーが発生する可能性も!
  • 画像生成が2倍近く速度アップする
  • グラボによってはxformersが使えない場合もある

画像の生成時間を短縮したい、効率よく画像を生成したいと思っている方は、ぜひ試してみてください。

プロンプトジェネレーターで画像生成プロンプトの参考に!
  • Stable Diffusionのプロンプトの見本が知りたい
  • 画像生成が思ったようにできない
  • 色々なプロンプトを探したい
など、画像生成AIのプロンプトに関する疑問が解決するかもしれません。