最終更新:ID:PToevIFG3g 2023年12月11日(月) 21:18:34履歴
torch2化、torch.compile改造ともにVRAMの消費量が増えます。
高解像度生成などでVRAMがカツカツな人は取捨選択が必要かも。
何倍も速くなるわけではない。xformersよりは良いかなってくらい。
torch.compile()でさらに高速化するが、以下の欠点があるのでお勧めしない。
高解像度生成などでVRAMがカツカツな人は取捨選択が必要かも。
何倍も速くなるわけではない。xformersよりは良いかなってくらい。
torch.compile()でさらに高速化するが、以下の欠点があるのでお勧めしない。
- コンパイルそのものに時間がかかる
- モデル、解像度、Batch size変更の度にコンパイルされる
キャッシュされるので毎回コンパイルされるわけではない - WebUIにとって想定外の処理のため不安定。
- Linuxのみ対応
画像生成速度には、CUDA使用率が大きく影響する。
アスカベンチで同じグラボの他人の結果より明らかに遅い場合、なんらかの原因でCUDAがフルに使われていない可能性もある。
(これを確認する場合、Win11なら、GPUスケジューリングをオフにしてタスクマネージャーで項目をクリックしてCudaに切り替えるのが簡単)
このページにある対策を行ってもアスカベンチで期待したパフォーマンスが出ない、という場合でも、高解像度やHires fixした場合は512x512単体生成よりもCUDAがフルに使われやすい傾向があるので、
もしそっちでCUDA使用率が100%近くなってて、そういう生成方法がメインだという場合は、アスカベンチで劣っていても気にしなくていい可能性もある。
ちなみに、速度が速いほどCPUのシングル性能の影響が大きくなる。旧世代CPUを使っているなら最新世代のCPUに買い替えるのもあり。
アスカベンチで同じグラボの他人の結果より明らかに遅い場合、なんらかの原因でCUDAがフルに使われていない可能性もある。
(これを確認する場合、Win11なら、GPUスケジューリングをオフにしてタスクマネージャーで項目をクリックしてCudaに切り替えるのが簡単)
このページにある対策を行ってもアスカベンチで期待したパフォーマンスが出ない、という場合でも、高解像度やHires fixした場合は512x512単体生成よりもCUDAがフルに使われやすい傾向があるので、
もしそっちでCUDA使用率が100%近くなってて、そういう生成方法がメインだという場合は、アスカベンチで劣っていても気にしなくていい可能性もある。
ちなみに、速度が速いほどCPUのシングル性能の影響が大きくなる。旧世代CPUを使っているなら最新世代のCPUに買い替えるのもあり。
2023-03-19現在、たぶんこの順で速い。
1. torch2 cu118 --opt-sdp-no-mem-attention torch.compile(不安定)(Linux限定)
2. torch2 cu118 --opt-sdp-no-mem-attention
3. torch1 cu117 xformers cudnnのバージョンアップ
あらかじめ古いバージョンをアンインストールしてから、venv内で以下のコマンドを実行する。
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu118
Meta Researchが開発した最適化ライブラリ。高速化とVRAM消費減少効果がある。
インストールは1111の標準機能で簡単にできる。
このオプションをつけるとわずかに出力内容が変化し、常に同じ結果にならない。
とはいえ体感できるか難しいほど小さい変化のため気にする必要はない。
変化の検証ページ作ったので記録はこちらへ
→「xformersの検証」
インストールは1111の標準機能で簡単にできる。
このオプションをつけるとわずかに出力内容が変化し、常に同じ結果にならない。
とはいえ体感できるか難しいほど小さい変化のため気にする必要はない。
変化の検証ページ作ったので記録はこちらへ
→「xformersの検証」
初めて導入する場合
古い環境から更新する場合
set COMMANDLINE_ARGS= --xformers
古い環境から更新する場合
set COMMANDLINE_ARGS= --reinstall-torch --reinstall-xformersvenvを削除してからWebUIを起動する手もあり
pip install --pre -U xformersでコンパイル無しで導入できるようになったらしい。
なお、対応するTorchバージョンが入っている必要がある。
アスカテストのtime taken --xformers --opt-sdp-attention 18.50 --xformers 20.30 --opt-sdp-attention 18.47 --opt-sdp-no-mem-attention 18.40 --xformers --opt-sdp-no-mem-attention 18.60 両方指定の場合はsdpが有効になってる雰囲気です
これはつけるだけ。
--xformers や --opt-sdp-no-mem-attention と併用できる。環境によっては効果が無かったり逆に遅くなったりするらしいので比較検討しましょう。
- ckptとvae.ptをsafetensorsに変換する
- 最近はckptよりsafetensorsで配布するほうが主流になった。
- vae.ptはWindows Defenderが誤検出を起こすので回避のためにも変換するのが良さそう
- 変換すると場合によって容量が約半分になる(NAIはそうだった)
- pruneする
- VRAMの節約になるかも?
- fp16化する
fp16化の副作用として、modules.devices.NansException が発生する。
特にNovelAI系のVAEで発生しやすい(NovelAI,ClearVAE1.0,Nenhanceなどが該当)。
対策としては、fp32で計算するように強制する。(高速化としては本末転倒だけど)
--no-half や--no-half-vae を追加する。速度は落ちる。
たまに真っ黒画像が出てもいいから高速化したいのであれば、
disable-nan-checkを追加する手もある。
それと、黒画像は大体VAEが原因なのでNovelAI系VAEを使わない手もある。
しばらく使わないときは Dreambooth Extension を削除する(もう使ってない?)
起動時間が劇的に変わる
Extensionにはinstall.pyが同梱されていて毎回起動するので、
不要なExtensionが沢山入ってるなら消すだけでだいぶ速くなるはず。
UIからオフにするだけではダメ
フォルダごと別の場所に退避させとくとか、いっそバッサリ消すとか
起動時間が劇的に変わる
Extensionにはinstall.pyが同梱されていて毎回起動するので、
不要なExtensionが沢山入ってるなら消すだけでだいぶ速くなるはず。
UIからオフにするだけではダメ
フォルダごと別の場所に退避させとくとか、いっそバッサリ消すとか
出来るだけ少ないStepsでも期待通りの絵が出る方法を模索する。
Euler a以外(収束するサンプラー)で再現できないか試す。
DPM++ 2M Karrasは15Stepsでもそれなりに映えるのでおすすめ。
UniPCはもっと良い感じ。
LCMやTurboはさらに速い。10steps未満でまともな絵がでる。
Euler a以外(収束するサンプラー)で再現できないか試す。
DPM++ 2M Karrasは15Stepsでもそれなりに映えるのでおすすめ。
UniPCはもっと良い感じ。
LCMやTurboはさらに速い。10steps未満でまともな絵がでる。
モデルのロード時間を短縮するために、あらかじめRAMに読みこんでおくことが出来る。
Settings - Stable Diffusion
- Checkpoints to cache in RAM
- VAE Checkpoints to cache in RAM
SuperMergeでもモデル3つのトリプルマージまでRamで高速化できるようになった。
詳しくは ローカルのExtensions の SuperMerger を参照。
新しい機能などのために RamDisk が使いたくなったら ImDisk Toolkit が使いやすい。
https://sourceforge.net/projects/imdisk-toolkit/
1111 全部 RamDisk に突っ込んで高速化するのは、必要RAMのわりに恩恵がほとんど無いからおすすめしない。
以前はLinuxにするだけで1〜2割速くなると言われていたが、ドライバやTorchの最適化が進んで速度やメモリ消費の差が小さくなった。
どっちが速いか比較検討してみるのが良さそう。
仮想化ではなく生で挿入れる
Windowsと比べて多少高速化するらしい・・・?
虎の子のゲーミングPCでは厳しいやね
サブ機とかお古になったら検討してもいいかも
なおインストールが簡単かは謎
Windowsと比べて多少高速化するらしい・・・?
虎の子のゲーミングPCでは厳しいやね
サブ機とかお古になったら検討してもいいかも
なおインストールが簡単かは謎
https://github.com/NVIDIA/Stable-Diffusion-WebUI-T...
最適化で大幅に高速化するもので最大2倍速くなるらしい。NVIDIA専用。
1111のExtensionから導入できる。
けど以下の重大な欠点があるのでベンチ以外で使い道はないかな
最適化で大幅に高速化するもので最大2倍速くなるらしい。NVIDIA専用。
1111のExtensionから導入できる。
けど以下の重大な欠点があるのでベンチ以外で使い道はないかな
- あらかじめ設定した解像度のみ使用可能
- TensorRTモデル変換に時間がかかるしVRAM消費が激しい
- LoRAはTensorRT変換で埋め込んで使えるが1つしか使えない
- ControlNetのようなU-netに干渉するものは一切使えない
- Extensionのインストールが不安定で失敗しやすい
Windows再インストール並みの最終手段。
最新の1111に必要なものしか入らなくなるので軽くなる、かも。
Extension試しまくってると肥大化するので月イチくらいでやるといいかも。
最新の1111に必要なものしか入らなくなるので軽くなる、かも。
Extension試しまくってると肥大化するので月イチくらいでやるといいかも。
タグ
このページへのコメント
TensorRTは拡張機能で運用が楽になったのでおすすめ
アスカベンチ基準で1.6倍程度早くなる
--opt-channelslastで使う
5u34v576.7zだけど
人によっては使わない方が良いかもしれない
ここのところ何回か環境構築してるけど
うちで3060でだと、入れないで
オプションにxformersとopt-channelslastと言う形で
Hello Asuka Benchmarkで40.03sと言う数字が出た
5u34v576.7zの中身を入れると43s台後半という酷い数字に