ほとんど需要はないだろうがRTX2060(12GB)でStable Diffusionを稼働させた場合の起動パラメータによるお絵描き速度を記録しておく。
具体的にはStable Diffusionの起動バッチの中で
set COMMANDLINE_ARGS=–*****
と書かれている****のパラメーターだ。
まずは512×512で下記のパラメーターでバッチカウント2 x バッチサイズ5 の 10枚描写で比較した。seed値は固定してある。
1girl,(Best quality, 8k, 32k, Masterpiece, UHD:1.2),(intricate details),(dynamic angle), looking for viewer,bright place,
Negative prompt: (Worst Quality:1.5),EasyNegativeV2
Steps: 20, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Seed: 3291122050, Size: 512×512, Model hash: ac68270450, Model: BRAV5finalfp16, Version: v1.3.0
–opt-sdp-attention
Time taken: 26.30sTorch active/reserved: 2804/3452MiB, Sys VRAM:5723/12288MiB (46.57%)
–medvram –no-half –no-half-vae –opt-sdp-attention –opt-split-attention –upcast-sampling –disable-nan-check
Time taken: 1m 27.22sTorch active/reserved: 9893/9976 MiB, Sys VRAM: 12288/12288 MiB (100.0%)
–xformers
Time taken: 26.67sTorch active/reserved: 2806/3450 MiB, Sys VRAM: 5447/12288 MiB (44.33%)
普段使用しているのは –opt-sdp-attention であり –xformers といろいろマシマシのパラメーターと比較してみたが単純にspdaを選ぶかxformersを選んだ方が速かった。
30シリーズや40シリーズだとspdaを使用した方が速いという噂だったが20シリーズのような古いグラボだと差はなさそう。
このサイズが30秒で10枚出力されればRTX2060(12GB)でも戦える。
次は普段使いの512×512を2倍にアップスケールした画像をバッチサイズ5のHires steps: 17で5枚出力した。
1girl,(Best quality, 8k, 32k, Masterpiece, UHD:1.2),(intricate details),(dynamic angle), looking for viewer,bright place,
Negative prompt: (Worst Quality:1.5),EasyNegativeV2
Steps: 20, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Seed: 3291122050, Size: 512×512, Model hash: ac68270450, Model: BRAV5finalfp16, Denoising strength: 0.7, Hires upscale: 2, Hires steps: 17, Hires upscaler: Latent, Version: v1.3.0
–opt-sdp-attention
Time taken: 1m 40.11sTorch active/reserved: 9280/9404 MiB, Sys VRAM: 11779/12288 MiB (95.86%)
–medvram –no-half –no-half-vae –opt-sdp-attention –opt-split-attention –upcast-sampling –disable-nan-check
Time taken: 4m 31.10sTorch active/reserved: 9313/9906 MiB, Sys VRAM: 12288/12288 MiB (100.0%)
–xformers
Time taken: 1m 38.18sTorch active/reserved: 9837/10294 MiB, Sys VRAM: 12288/12288 MiB (100.0%)
–opt-sdp-attention –opt-split-attention
Time taken: 1m 39.15sTorch active/reserved: 9280/9404 MiB, Sys VRAM: 11755/12288 MiB (95.66%)
–opt-sdp-attention –opt-split-attention –no-half –no-half-vae
Time taken: 5m 33.91sTorch active/reserved: 10214/12086 MiB, Sys VRAM: 12288/12288 MiB (100.0%)
一旦512×512を出力したうえで1024×1024にアップスケールして再描写している。
このソフトは512×512を1画面として扱うのでこのサイズで最適な構図になるが実際には64X64で判別して描写しているらしいので少し細かい絵を描かせると途端に絵が破綻する。
しかしこれ以上のサイズで描写させると構図が無茶苦茶で手が4本になったり顔がキングギドラになったり双子になったり三つ子になったりするのでそこそこ時間がかかるが一旦512で描いて1024にアップスケールして描き直させるとまともな構図になりやすい。
プロンプトで描く場合はアップスケールのHires. fixオプションに頼るかアウトペインティングで小さな部位を描いてそこから絵を徐々に大きく広げる他ない。
こちらでもspdaかxformersを選択するのがよさそうだ。
次にキャッシュの効きを確認しておく。
setting → Stable Diffusion の中にモデルとVAEのキャッシュ数を指定する設定がありCPU RAMは64GBと十分あるので両方ともに3を指定してある。
Checkpoints to cache in RAM=3
VAE Checkpoints to cache in RAM=3
起動後の速度と描写したのちに再度描写して速度を測った。
実際には起動したまま複数枚描写させるので2回目以降の速度が通常使う速度になる。
–opt-sdp-attention –opt-split-attention
Time taken: 1m 40.86sTorch active/reserved: 9280/9404 MiB, Sys VRAM: 11850/12288 MiB (96.44%)
Time taken: 1m 20.87sTorch active/reserved: 4840/7372 MiB, Sys VRAM: 9911/12288 MiB (80.66%)
Time taken: 1m 21.15sTorch active/reserved: 4928/7458 MiB, Sys VRAM: 10048/12288 MiB (81.77%)
<lora>追記
Time taken: 1m 22.77sTorch active/reserved: 4899/7434 MiB, Sys VRAM: 9976/12288 MiB (81.18%)
–xformers
Time taken: 1m 38.18sTorch active/reserved: 9837/10294 MiB, Sys VRAM: 12288/12288 MiB (100.0%)
Time taken: 1m 19.81sTorch active/reserved: 4886/7404 MiB, Sys VRAM: 9669/12288 MiB (78.69%)
Time taken: 1m 18.95sTorch active/reserved: 4973/7490 MiB, Sys VRAM: 9755/12288 MiB (79.39%)
<lora>追記
Time taken: 1m 21.47sTorch active/reserved: 4798/7318 MiB, Sys VRAM: 9580/12288 MiB (77.96%)
何もなし( デフォ –opt-sdp-no-mem-attention)
Time taken: 1m 41.74sTorch active/reserved: 9281/9420 MiB, Sys VRAM: 11938/12288 MiB (97.15%)
Time taken: 1m 21.38sTorch active/reserved: 5858/7552 MiB, Sys VRAM: 10078/12288 MiB (82.01%)
spdaもxformersも2回目以降はモデルがRAMに載るお陰で20%程度速度が上がるようだ。
RAMの使用量は増加どころか減っておりVRAMの使用量も減っている。
モデルを変えながら描写させるとRAMの使用量が増加するかもしれないがそこまでは試していない。
計測していて起動オプション何もなしでも大差がないということに気が付いた。。。
環境によって違いはあるかもしれないがRTX2060(12GB)では変に余計なオプションは追記せずそのまま使うかxformersを使うのがよさそうだ。