30%高速化!!!モデルファイルをckptからsafetensorsに変換し生成速度を向上させる方法と効果

モデルファイルをckptからsafetensorsに変換して生成速度を向上させる方法と効果 ソフトウェア

Stable Diffusion Webui(AUTOMATIC1111)の拡張機能「Merge Block Weighte」でckptのモデルファイルをsafetensorsに変換する方法を解説します。

また、safetensors化によりどのくらい生成速度が短縮されるか調査しました。

結論から言うと、変換するだけでRTX3060TiをRTX3080に買い替えたとき以上の速度短縮効果がありました!!!

チェック!!
さくいん! 本サイトのAI関連記事まとめ どれから見れば良いのか?!


数十記事ある本サイトのAI関連記事を体系的にまとめました。

目的別にどれから見れば良いのかわかります!!

AI記事索引ページはコチラ

1,ckptをsafetensorsに変換する

拡張機能をインストール

拡張機能追加方法を参考にして、「Merge Block Weighted 」という拡張機能を追加しましょう。

インストール済みのタブを見て、このように名前があればOKです。

「適用してUIを再起動」ボタンを押して拡張機能を有効化してください。

ckptからsafetensorsに変換する方法

まず、「Save as safetensors」にチェックを入れます。

そして、「Model A」と「Model B」に同じモデルを指定します。

最後に中央下部の「M00」に値を0にしてください。

あとは「Model B」の横にあるOutput Model Name」に適当な名前を入れて、オレンジボタン「Run Marge」をクリックして実行しましょう。

モデルフォルダ内に新しいモデルが保存されているはずです。

モデルを変換しても同じ画像になるのか?

生成差異はないように見受けられます。

少なくとも目視の範囲内では、ckptをsafetensorsに変換しても同じ画像が出力されることが確認できました。

なお、Safetensors形式が具体的にどんなものかはこちらで解説しています

方法2,生成速度がどのくらい高速化するか

検証条件

アスカベンチマークを使用します。

アスカベンチのスコアについてはこの記事で解説しています。

簡単にいえば、パラメータなどを同一に設定して行う画像生成速度のベンチマークテストです。

ある512×512サイズの画像を10枚(batch count10,batch size1)生成する際に掛かった時間Time taken値を比較するものです。

ここではそれぞれ3回計測してその平均値を比べました

なおxformersは有効で、ライブプレビュー機能をオフ、グリッド画像作成はオンにしています。

VAEファイルとモデルファイルのキャッシュはしていない状態です。

検証結果と考察

ckpt時のスコアは、パワーリミット9段階別の生成速度検証の電力制限なし(PL100%)時点のものを流用しています。

1回目2回目3回目平均値ckpt時を1とした場合
ckpt19.1518.4419.0018.861.0000
safetensors13.1613.2513.2113.210.7001

はっっっっやい!3090なのに不調な4090くらい出ちゃう!嬉しい!変換凄い!!

30%高速化!!

ちょっと信じられない結果ですね!!!!

でもフェイクじゃないですよ!?

グラボで言うなら、RTX3080がRTX3060Tiより28%高速なので、ckpt→safetensors変換だけで数万円以上の投資に匹敵する効果があるといえます。

マージの瞬間に2つのモデルの合計と同じくらいRAMを消費するので、10GBはあけておきましょう。

もし16GB程度しかRAMを搭載していない方は、16GB1本を追加して、合計で32GB程度になるように増設することを検討してください。

5000円程度てRTX3060Ti→RTX3080レベルの速度アップを体感できます。

created by Rinker
キングストンテクノロジー

今回の方法と併用可能で、RAMさえあればそこそこ高速化できるこちらも合わせてお試しください。

4,その他検証関連記事

チェック!!
さくいん! 本サイトのAI関連記事まとめ どれから見れば良いのか?!


数十記事ある本サイトのAI関連記事を体系的にまとめました。

目的別にどれから見れば良いのかわかります!!

AI記事索引ページはコチラ

タイトルとURLをコピーしました