Stable Diffusion WebUI(Automatic1111)でCheckpointとVAEをRAMにキャッシュする設定を行う方法と、キャッシュによりどの程度生成速度を向上させることができるかを調べました。
結論から言うとグラボをワンランクアップさせるレベルの高速化ができました!
RAMの容量が4,5GBあればモデルを1つはキャッシュできるので、ぜひお試しください。
1,モデルファイルをRAMにキャッシュさせる方法
WebUIの設定タブを開き、「Stable Diffusion」の「RAMにキャッシュするCheckpoint数」を1以上にしましょう。
なお、キャッシュ数はデフォルトでは0。つまり無効になっています。
「VAE Checkpoints to cache in RAM」でVAEファイルもキャッシュできるので、それぞれの速度を計測してみます。
2,生成速度を比較する
検証条件
アスカベンチマークを使用します。
簡単にいえば、パラメータなどを同一に設定して行う画像生成速度のベンチマークテストです。
512×512サイズの画像を10枚(batch count10,batch size1)生成する際に掛かった時間(Time taken値)を比較するものです。
ここではそれぞれ3回計測してその平均値を比べました。
なおxformersは有効です。
なお、ライブプレビュー機能をオフにしています。
結構速度への影響があるので。
RAMの消費量
ファイルサイズ分のRAMが消費されます。
つまりデカいモデルでもRAMを10GB空けておけばOKです。
でもなぜか消費量はすぐ元通りになるんですよねぇ。
ちゃんと効果があるのでキャシュされてはいるんでしょうが謎です。
検証結果を表にする
1回目 | 2回目 | 3回目 | 平均値 | オフ時を1とした場合 | |
キャッシュしない | 19.15 | 18.44 | 19.00 | 18.86 | 1.0000 |
モデルだけキャッシュ | 17.85 | 17.47 | 17.39 | 17.57 | 0.9314 |
VAEだけキャッシュ | 17.50 | 17.52 | 17.58 | 17.53 | 0.9295 |
モデルとVAEをキャッシュ | 17.60 | 17.66 | 17.56 | 17.61 | 0.9334 |
キャシュしていない時のスコアは、パワーリミット9段階別の生成速度検証の電力制限なし(PL100%)時点のものを流用しています。
グラフ化
グラフの右側だけを拡大表示したみたいな形にしました。
詐欺グラフ感もありますが、差が1s程度のため分かりやすさ重視でご勘弁ください。
結果の考察&おすすめ設定
VAEだけキャッシュの時が一番短いという謎の結果ですが、多分これは回数が少なすぎる故のバラツキです。
傾向程度で理解してください。
とりあえずキャシュの効果は明らかということですね。
VAEとモデルファイルをキャッシュすることで約7%の所要速度短縮ができるとわかったので、とりあえず両方キャッシュさせるのがおすすめです。
時間差7%というのはグラボ別のベンチ結果いわくRTX3080とRTX3080Tiの速度差程度のものです。
3080をTiつきにすると2万円くらい値上がりするので、キャッシュだけで2万円分の速度アップと思えばすごく得した気分になれますヨ☆
ちなみに3つ同時にキャッシュさせるようにしたところ、8GB(モデル2つ分程度)のRAM消費でしたので、単純な足し算ではなさそうです。
もし16GB程度しかRAMを搭載していない方は、16GB1本を追加して、合計で32GB程度になるように増設することを検討してください。
5000円程度てRTX3080→RTX3080Tiレベルの速度アップを体感できます。
キャッシュさせる設定項目がない場合は?
webuiのバージョンが古すぎるのが原因のため、以下の手順通りにアップデートをしてください。
合わせてこちらの高速化もお試しください。
3060Ti を3080に買い替えるよりも高速になる画期的方法です。