Stable Diffusionの画像生成を高速化できる、xformersの使い方を紹介します。
- xFormersのインストール方法・有効化手順
- xFormersを導入すると、どの程度高速化されるのか
- xFormersのアップデート方法
Stable Diffusionを簡単に高速化できるxFormersとは
PyTorchのライブラリで、Transformersの研究を加速するために開発されたものです。
xFormersは導入が簡単かつ、恩恵が大きい機能なので、この機会に導入してみましょう。
簡単に使用できるから、イチオシの高速化テクニックだよ
xFormersのメリット、デメリット
Stable Diffusionで使用するxFormersには以下のメリット、デメリットがあります。
大きなデメリットはないので、xFormersの導入はおすすめだね
xFormersはNVIDIA GPU向けの機能です
Xformers ライブラリは、イメージ生成を高速化するためのオプションのメソッドを提供します。この機能強化は NVIDIA GPU でのみ利用可能であり、画像生成を最適化し、VRAM 使用量を削減します。 0.0.20 より前の古いバージョンでは、非決定的な結果が生成されます。
AUTOMATIC1111 xFormers Wikiページ
以上のようにAMD GPUでは使用できないので、AMD製のグラフィックボードを使用している方は、SDPAの使用をおすすめします。
SDPAの使い方については以下記事で解説しています。
Stable DiffusionでxFormersをインストール・有効化する方法
「webuiフォルダ」の中にある「webui-user.bat」を編集モードで開きます。
webui-user.batを右クリックして「編集」をクリックするか、テキストエディタにドラッグ&ドロップすると編集モードで開くことが可能です。
「webui-user.bat」の6行目のCOMMANDLINE_ARGSに以下コードを追加します。
--xformers
コードの追加が完了したら、ファイルを上書き保存します。
その後にwebui-user.batを実行すれば、xformersが有効化されたStable Diffusion WebUIが起動します。
xFormersで、どのくらい高速化されるのか
xFormersを使用した場合に、どの程度高速化されるのか確認してみました。
テストは解像度512×512、ステップ数20、バッチ回数10で実施しました。
測定結果は以下の通りです。
xFormers適用有無 | 生成速度 | 生成時間 | 使用VRAM量 |
---|---|---|---|
非適用 | 9.08it/s | 22.2ssec(100%) | 6.1GB(100%) |
適用 | 11.56it/s | 17.4sec(78%) | 3.5GB(57%) |
デメリットに記載したとおり、xformersを有効化すると少し絵が変化します。
xFormers適用時の生成画像に対する影響を確認する
生成時間については、xFormers非適用時と比較すると約78%になっています。
驚くのはVRAM使用量です。
約57%と大幅に削減されています。
どちらかというと、VRAM使用量を下げる目的の方が合ってるかもね
実はxFormersよりSDPAの方が高速に画像生成できる可能性が高いです。
SDPAについては以下記事をご参考ください。
xFormersのアップデート方法
xFormersはバージョンアップにより、より高速になる可能性があります。
もし、お使いのxFormersのバージョンが古い場合には、以下手順で更新が可能です。
現在のバージョン確認
もしお使いのxFormersのバージョンが古い場合にはアップデートしましょう。
xFormersを有効化しStable Diffusion WebUIを起動すると、最下段にバージョンが表示されています。
xFormersの最新バージョンはGithubのxFormersページから確認できます。
(サポートされているCUDAも確認できます)
xFormersのアップデート
xFormersはPytorchの追加ライブラリのため、PytorchとCUDAのバージョンにより使用できるxFormersのバージョンが異なります。
またPytorchのバージョンによっては、対応したPythonが必要になります。
(Pythonのバージョンアップが必要な場合があります)
Pytorchのアップデートにより不具合が発生する可能性があるので、venv(仮想環境)で作業を実施しましょう。
venv仮想環境で作業するか、Stable Diffusion WebUIの環境を複数用意しても良いです。
Stable Diffusion WebUIを複数インストールしたい場合には、以下記事をご参考ください。
「webuiフォルダ」の中にある、「venv」フォルダのフォルダ名を適当なものに変更しましょう。
私は「venv_old」に変更しました。
過去に実行済みの場合は、この工程は必要ありません。
Windows PowerShellを管理者権限で実行します。
PowerShellはタスクバーの左端にあるWindowsスタートボタンを右クリックすると、ポップアップメニューに起動ボタンが表示されます。
PowerShellが表示されたら以下のコマンドをコピペしてエンターキーを押下します。
PowerShell Set-ExecutionPolicy RemoteSigned
完了したら、PowerShellウィンドウは閉じて構いません。
「webuiフォルダ」の何もないエリアでShift + 右クリックし、表示されたポップアップメニューから「PowerShellウィンドウをここで開く」をクリックします。
※もしくは、cdコマンドでwebuiフォルダに移動します
PowerShellが表示されたら以下のコマンドをコピペしてエンターキーを押下します。
python -m venv venv
これでwebuiフォルダ内に新しい「venv」フォルダが作成されます。
続いて以下のコマンドをコピペしてエンターキーを押下します。
venv\Scripts\Activate.ps1
これで仮想環境を有効化できます。
Pytorchをアップデートしたい場合にだけ実行します。
以下のコマンドをコピペしてエンターキーを押下します。
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
xformersをアップデートしたい場合にだけ実行します。
以下のコマンドをコピペしてエンターキーを押下します。
pip install -U xformers
最後に以下のコマンドをコピペしてエンターキーを押下します。
deactivate
これでアップデート完了です。
お疲れ様でした。
トラブルが発生した場合
もしアップデートによりトラブルが発生した場合は、以下手順でバックアップしたvenvを有効にしましょう。
アップデート作業で新規作成したvenvフォルダを削除する。
バックアップとして保存しておいた、venv_old(仮名)フォルダのフォルダ名を「venv」に戻します。
これで環境がアップデート前に戻ります。
まとめ
今回は、Stable Diffusionを高速化できるxFormersを紹介しました。
手軽に導入できますし、VRAM使用量にも効果が高いのでとりあえず試してみることをおすすめします!
コメント