見出し画像

【AIイラスト】モデルデータサイズの削減【Stable Diffusion】

まっしろ(DeepWhite)です!
前回投稿した記事(上のリンク)でSSDについて触れましたが、4TBあったはずの自分の環境で容量が足りなくなってきてしまったのでモデルデータの削減をすることにしました。
今回はその手順と検証結果について共有します。

基本的に2GBまでしか削減できません!
すでに2GBのモデルを利用している場合は効果がない可能性が高いです。


やり方

説明

この拡張機能を用いてモデルのデータサイズを削減します。
ふんわりしか理解してないですが、大まかに以下の機能があります。

  1. 学習用のパラメータを削除する

  2. 未使用のパラメータを削除する

  3. fp16で保存する

  4. 壊れたパラメータを修正する

簡単にですが説明します。
まず1ですが、AIイラストを生成するだけであれば「推論」のパラメータさえあれば構わないので、これをすることでデータ量を削減できます。

次に2ですが、何らかの理由で学習用のパラメータ以外にも推論時に使われないパラメータが含まれていた場合、これを削除します。

3つ目ですが、Stable Diffusionのモデルパラメータは通常、32bit浮動小数点数(IT用語、実数のこと)で保存されています。これがfp32です。32bitは4byteを意味するので、これを16bit(fp16)で保存するだけでデータ量を半減できます

そんなことをしたらモデルの性能も半減しないの?という疑問があると思いますが、ほぼ変わらないというのが経験的な答えのようです。

また、Stable Diffusion WEB UI ではデフォルトでfp16で読み込まれるようになっていますので、WEB UI を特に設定を変更せずに利用している場合には今まで通りに使用できます。

最後の4つ目ですが、モデルのマージなどによって偶にパラメータが破損することがある(らしい)です。そうしたパラメータがあるかチェックし、必要であれば修正してくれます。

説明は以上です。

実践

ここからは実際に拡張機能を使用します。
githubのリンクからインストール後、まず設定を変更します。

破損したパラメータを修正可能にする

WEB UI を再起動したら、Toolkitタブを選択します。
パラメータを削減したいモデルを選択し、Loadをクリックします。

モデルのパラメータに関する情報が表示されます。
fp16を選択し、Saveをクリックするとパラメータを削減したモデルが保存されます。
もとのモデルは上書きされないため、新規に2GB程度のモデルが保存されることになります。
ディスクの空き容量に注意してください。

モデルは以下のように数字が追加された名称で保存されます。

AOM3_orangemixs-2042-2151-0129.safetensors

Civitai Helper などを用いてサムネ画像を設定している場合、サムネを反映させるためにはもとのモデルと同じ名称に変更する必要があります。

検証

手元のモデルを一通り調べたところ、何個か破損したモデルが存在しました。

破損ケース1

破損修正ケース1

修正後(左) 修正前(右)

修正後(左) 修正前(右)

破損ケース2

破損修正ケース2

修正後(左) 修正前(右)

修正後(左) 修正前(右)

破損したモデルを修正した場合はもとのモデルとの違いがはっきり分かる結果になりました。

破損なし

単にデータを削減した場合、結果はほとんど変わりません。

5つのモデルの削減後(左)削減前(右)

Inpaint用モデル

inpaintの例
削減前(左) 削減後(右)

inpaint用モデルについても結果は変わりませんでした。

結論

破損パラメータの修正をしない場合には、モデルのデータ量を削減しても生成結果はほとんど変化しませんでした。

モデルの学習やマージをがっつりやる訳でなければデータは削減して良さそうです。

おまけ

その他のモデルの比較結果の一部です。
(画像サイズが大きいのでzip形式)
生成結果がほとんど変わらないことが分かります。

この記事が気に入ったらサポートをしてみませんか?