画像生成AIの情報を纏めるWikiです。

×

明記しない限り1111の高速化について書き記す。

reForgeなどの他のUIを使う

1111のWebUIを速くする方法でこれを書くのは本末転倒だが、ほかのUIを使ったほうがいい。
AUTOMATIC1111のWebUIは最適化不足で遅い。しかも1111氏の失踪により開発が長期間停止しているので今後の改善もないだろう。
いっそのこと、一部の互換性のないExtensionのために1111WebUIを残しておいて、メインのWebUIは比較的新しいreForge、または最新かつ最適化されたComfyUIに乗り換えるべき。

収束の高速化

いわゆる「蒸留」で少ないステップ数で収束させ、Guidance Scaleとアンコンディショニングの計算を不要にすることで高速化する。
それと引き換えに品質が低下し画風が変化する。
DMD2(Distribution Matching Distillation)
TDD(Target-Driven Distillation)

GPU使用率

画像生成速度には、GPU使用率が大きく影響する。
アスカベンチで同じグラボの他人の結果より明らかに遅い場合、なんらかの原因でGPUがフルに使われていない可能性もある。
(これを確認する場合、Win11なら、GPUスケジューリングをオフにしてタスクマネージャーで確認するのが簡単。古いWinバージョンでは3D描写の負荷を示すのでグラフをCudaに切り替える)
このページにある対策を行ってもアスカベンチで期待したパフォーマンスが出ない、という場合でも、高解像度やHires fixした場合は低解像度の生成よりもGPUがフルに使われやすい傾向があるので、
もしそっちでGPU使用率が100%近くなってて、そういう生成方法がメインだという場合は、アスカベンチで劣っていても気にしなくていい可能性もある。

ちなみに、速度に比例してCPUのシングルスレッド性能の影響が大きくなる。旧世代CPUを使っているなら最新世代のCPUに買い替えるのもあり。

Attentionの最適化による高速化

SDP(Scaled dot product attention)

PyTorchのアテンション最適化機能。
高速化とVRAM消費減少効果がある。
有効にするには、Settings->Optimizations->Cross attention optimizationでsdpを選ぶ。ComfyUIならコマンドライン引数に--use-pytoch-cross-attentionをつける。reForgeなら--disable-xformersと--attention-pytorchをつける。
xformersと併用、共存はできない。
速度もメモリ消費もxformersと同じで基本的にはこちらを使えばいい。

xformers

spdaと差はないのでわざわざ入れる必要はない。
Meta Researchが開発した最適化ライブラリ。高速化とVRAM消費減少効果がある。
インストールは1111の標準機能で簡単にできる。
対応GPU
  • NVIDIA
    • GeForce GTX 10(Pascal)、RTX 20(Turing)シリーズ以降
  • AMD(Linux限定)
    • ついにAMDグラボも対応した。Torch 2.4.1+ROCm6.1対応のv0.0.28がリリースされた。
    • RDNA2以降のグラボが必要?
導入方法
初めて導入する場合(NVIDIA)
set COMMANDLINE_ARGS= --xformers

古い環境から更新する場合(NVIDIA)
set COMMANDLINE_ARGS= --reinstall-torch --reinstall-xformers
venvを削除してからWebUIを起動する手もあり

Torchバージョンが1111のデフォルトではない場合/Radeonの場合
ここで対応するTorchバージョンを確認してから、「pip install xformers==x.x.x」でインストールする。

Sage Attention(1111非対応)

1111は古いため非対応。ComfyUIやForge Classicなどが対応。
量子化ベースの技術のため品質が低下する?
Attentionの使用量が多いDiTモデルで効果的。
RTX30以降が必要。

EasyCache(ComfyUI専用)

ComfyUI専用。
変化が小さい部分をキャッシュして使い回す。わずかに品質が低下する。
SDEソルバーでは毎回ノイズを付与し変化し続けるため機能しない。

--opt-channelslast


これはつけるだけ。
--xformers や --opt-sdp-no-mem-attention と併用できる。
環境によっては効果が無かったり逆に遅くなったりするらしいので比較検討しましょう。

設定のOptimizationの項目

Negative Guidance minimum sigma

変化が少なくなる生成の後半にNegative Promptの計算を省略することで高速化する。

Token merging

トークンをマージして高速化する。
解像度が大きいほど効果が大きくなる。
数値が大きいほど効果が大きいが品質も低下する。
fp8では動作しない。

Pad prompt/negative prompt

パフォーマンスが改善すると書いてあるが、誤差程度の変化しかない。
76トークン以上で不具合が発生することがあるので、オフ推奨

ハードウェアアクセラレータによるGPUスケジューリング を無効にする

VRAM消費を減らす効果がある。速度も向上するかも。
オフにするには、 Windows 11の設定でシステム>ディスプレイ>グラフィックの中にあるグラフィックスの詳細設定の中に「ハードウェア アクセラレータによるGPUスケジューリング」があるのでこれをオフにしてPCを再起動する。
副作用としてゲームでフレーム生成が使えなくなる。

Extensionsの退避や削除

Extensionにはinstall.pyが同梱されていて毎回起動するので、
不要なExtensionが沢山入ってるなら消すだけでだいぶ速くなるはず。

UIからオフにするだけではダメ
フォルダごと別の場所に退避させとくとか、いっそバッサリ消すとか

LyCORIS Extensionを削除する

1111がLyCORISに標準で対応したためこのExtensionは不要。
このExtensionは今となっては生成を遅くするだけ。

Stepsを減らす

出来るだけ少ないStepsでも期待通りの絵が出る方法を模索する。
末尾にa(ancestral)またはSDEがつかないサンプラーで再現できないか試す。
DPM++ 2Mは15Stepsでもそれなりに映えるのでおすすめ。
SchedulerにSimpleを使うとさらに良くなる。
LCM、TurboやHyper-SDなどはさらに速い。出力を大きく変化させたり相性の良し悪しがあったりする代わりに10steps未満でまともな絵がでる。

高速なストレージに入れる

シーケンシャル3GB/s以上のSSDに配置することで読み込みを高速化する。大容量モデルで効果的。

メインメモリを使う


モデルのロード時間を短縮するために、あらかじめRAMに読みこんでおくことが出来る。

Settings->Stable Diffusion
  • Maximum number of checkpoints loaded at the same time
一度に読み込んでおけるcheckpointの数を設定できる。値が1でも読み込んだことのあるcheckpointは読み込み時間が短縮される。

SuperMergeでもモデル3つのトリプルマージまでRamで高速化できるようになった。
詳しくは ローカルのExtensions の SuperMerger を参照。

新しい機能などのために RamDisk が使いたくなったら ImDisk Toolkit が使いやすい。
https://sourceforge.net/projects/imdisk-toolkit/

1111 全部 RamDisk に突っ込んで高速化するのは、必要RAMのわりに恩恵がほとんど無いからおすすめしない。

WSL2で使う


以前はLinuxにするだけで1〜2割速くなると言われていたが、ドライバやTorchの最適化が進んで速度やメモリ消費の差が小さくなった。
どっちが速いか比較検討してみるのが良さそう。

Linuxに入れる(上級者向け)

Windows上の仮想化ではなく実際にインストールする。
Ubuntu24.04 LTS、Python 3.11.9、Torch2.3.1での環境では、推論(it/s)は2〜4%、学習は10%高速化した。VRAM消費は特筆すべき変化はなかった。
また、メモリ消費が減少し、medvram有効時の生成開始と終了のもたつきが軽減して結構速くなった。IOが速いのか全体的にレスポンスが良い。
Linux上のreForgeとなればVRAMのオフロードを感じさせないほど速い。
ただしメモリ不足になるとWindowsは頑張って耐えるもののLinuxは素直にフリーズしてから落ちる

Windowsが入っていない空っぽのSSDに入れるか、サブ機とかお古になったら検討してもいいかも
なお各種ライブラリ等のインストールは原則コマンド打ってやるし、途中でUbuntuのGUI(gdm3)が壊れてリカバリーモードでgdm3を再インストールしたりとかなり面倒

TensorRTを使う(非推奨)

https://github.com/NVIDIA/Stable-Diffusion-WebUI-T...
CUDAに加えてTensorコアを使用するためにモデルをコンパイルする。最大2倍速くなるらしい。NVIDIA専用。
1111のExtensionから導入できる。

けど以下の重大な欠点があるのでベンチ以外で使い道はないかな
  • あらかじめ設定した解像度のみ使用可能
  • TensorRTモデル変換に時間がかかるしVRAM消費が激しい(しかもOOMになるとWebUI本体がフリーズ)
  • LoRAはTensorRT変換で埋め込んで使えるが1つしか使えない
  • ControlNetのようなU-netに干渉するものは一切使えない
  • Extensionのインストールが不安定で失敗しやすい

venvをいったん消して作り直す

Windows再インストール並みの最終手段。
最新の1111に必要なものしか入らなくなるので軽くなる、かも。
Extension試しまくってると肥大化するので月イチくらいでやるといいかも。

GPUを買い替える

ソフトウェア側であれこれ必死にやっても劇的に速くならないのが現実。結局ハードウェアの強化が一番。
場合によっては他のパーツの買い替えも必要になるが、最も効果的。
(give me money:3000.0)

このページへのコメント

TensorRTは拡張機能で運用が楽になったのでおすすめ
アスカベンチ基準で1.6倍程度早くなる

0
Posted by 名無し(ID:UkNtPSqMXA) 2023年10月25日(水) 00:51:33 返信

--opt-channelslastで使う
5u34v576.7zだけど
人によっては使わない方が良いかもしれない

ここのところ何回か環境構築してるけど
うちで3060でだと、入れないで
オプションにxformersとopt-channelslastと言う形で
Hello Asuka Benchmarkで40.03sと言う数字が出た

5u34v576.7zの中身を入れると43s台後半という酷い数字に

5
Posted by 名無し(ID:sfrkRBi+dw) 2023年01月09日(月) 20:42:06 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

table拡張js

どなたでも編集できます

広告募集中

メンバー募集!