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

×


収束の高速化

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

GPU使用率

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

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

Cross-attentionの最適化による高速化

xformers

Meta Researchが開発した最適化ライブラリ。高速化とVRAM消費減少効果がある。
インストールは1111の標準機能で簡単にできる。
このオプションをつけるとわずかに出力内容が変化し、常に同じ結果にならない。なお、最近のバージョンはこの動作が修正されている。
とはいえ体感できるか難しいほど小さい変化のため気にする必要はない。

変化の検証ページ作ったので記録はこちらへ
→「xformersの検証
対応GPU
  • NVIDIA
    • GeForce GTX 1000(Pascal)、RTX 2000(Turing)シリーズ以降
    • GeForce 900番台以前でも動くけど逆効果だったという報告あり
  • AMD(Linux/WSL2限定)
    • ついに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」でインストールする。

SDP(Scaled dot product attention)

2023年3月上旬にcommitされたらしい
xformersと特徴は同じ。わずかに絵が変化する代わりに2割程度速くなる。
有効にするには、Settings->Optimizations->Cross attention optimizationでsdpかsdp-no-memを選ぶ。
sdpのほうは出力の揺らぎが大きいかもしれない。
xformersと併用、共存はできない。
xformersよりVRAM使用量が増えるため、学習や高解像度生成時には注意

--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消費を減らす効果がある。速度も向上するかも。
やり方はこちら
公式wikiにも記載がある
redditによれば速度が30%くらいかわることがあるとかないとか
副作用としてDLSS3のフレーム生成が使えなくなる。

モデルを軽量化する

2024年現在、fp16,pruned,safetensorsでの配布(=すでに軽量化された状態)が主流になった。

古い情報

Extensionsの退避や削除

しばらく使わないときは Dreambooth Extension を削除する(もう使ってない?)
起動時間が劇的に変わる

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

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

LyCORIS Extensionを削除する

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

Stepsを減らす

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

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

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

メインメモリを使う


モデルのロード時間を短縮するために、あらかじめ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...
最適化(コンパイル)で大幅に高速化するもので最大2倍速くなるらしい。NVIDIA専用。
1111のExtensionから導入できる。

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

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

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

別のUIを使う

1111のWebUIを速くする方法でこれを書くのは本末転倒だが、ほかのUIを使う手もある。
AUTOMATIC1111のWebUIは最近になって速度が改善されたが、Windows版のメモリ消費(確保)の多さは変わっていない。Forgeのほうが若干省VRAM、ComfyUIは速くて省メモリで省VRAM。

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

どなたでも編集できます

メンバー募集!