モデルについて

Last-modified: 2025-02-16 (日) 10:49:22
新しいモデルの公開ペースが非常に速いため、
このページの更新が追いついていない可能性があります。

モデルってなんですか?

  • モデルとは学習済みのデータのことです。別名、事前学習データ。
  • Stable diffusionにおけるモデルの役割
  • checkpoint」とも呼びます。
    230719_02_SDにおけるモデルの役割.png

モデルといっても、データはさまざま。

  • Stable Diffusionのプリセットモデルでは美麗イラストを生成するのは大変難しいため、追加でモデルのファイルを入手・導入する必要があります。
    モデルによって絵柄や出しやすい構図が異なります。
    生成したい画像に併せて、適宜複数のモデルを入手&切り替えて使います。
  • Webには様々な種類のモデルデータが配布されています。
    好きなモデルを探してみましょう。
    ライセンスや使用上の注意は必ず守ること。
    古いモデルは消えている事もある。気に入ったモデルは保存推奨。

モデル入手時の注意事項

ライセンスや使用制限を必ず確認しよう!

モデルの配布ページには、使用上の注意が書いてある場合があります。

使用上の注意を必ず確認しよう!

注意内容の一例

  • 配布モデルを使用した画像の公開制約(クレジット必須、販売禁止)
  • 配布モデルの改造、許可なく再配布、販売の禁止

事前学習モデルのバージョンはどれがいいの?

  • 各バージョンのモデルに互換性は無いので学習モデルは重要です。
SD1.5SDXL
強み・お手軽。低VRAMでもちゃんと動く
・生成&学習速度が速い
・モデルが軽い(約2GB)
・モデルやLoRAがほぼ完成されている
・SD1.5よりも高解像度・高品質の画像が生成できる
・人気が高く情報も豊富。
弱み・今となっては旧式モデル。今後の進展はもはや絶望的か・要求されるグラボのスペックが高い
・モデルのサイズがでかい(約6.5GB)。

簡単に言えば、SDXLの方が高解像度・高品質の画像が生成できます。
SDXLは公開から時間が経っていたり、高品質のモデルも公開され始めたりしたため、SDXL移行ユーザーも増えていますので、かつてほど手探りということはありません。
ただし、グラボの要求スペックは高いです。グラボのスペックがSDXLに耐えうるかどうかがモデルバージョン選択上の重要な基準となるでしょう。

SD1はモデル容量が軽く計算が早いので、生成や学習の入門編として役立つでしょう。
(モデル構造がチープ過ぎるので、練習し過ぎてもSDXL以降では役に立たないけども)

どちらを選択するにしても、

  • 特に学習を利用する場合は、SD1とSDXLモデルには互換性が一切無いため、それぞれ個別に学習モデルを作り直す必要があります。
  • 作成用ツールと学習用ツールはどちらのモデルでも同じです*1

比較表

SD1SDXLSD3FLUX.1
Mediumdevschnell
リリース情報リリース時期’22/10月'23/7月'24/6/12'24/8/1
構造モデル構造UNet
TextEncoder
UNet
TextEncoder1
TextEncoder2
UNet
TextEncoder
├ T5XXL
├ CLIP_L
└ CLIP_G
UNet
TextEncoder
├ T5XXL
└ CLIP_L
パラメータ数*2約9億35億*3約20億120億?
推奨解像度*4512x5121024x10241024x1024明示的な解像度なし(柔軟に対応可能)
ポテンシャルテキストの再現*5不可不可
ファイルサイズベースモデル約2GB*6約6.8GB10GB*7*8*9約20GB
VRAM消費量
(参考)
画像生成*104GB~8GB~8GB?12GB以下で動作報告有り(非WebUI)
学習(LoRA基準)6GB8GB未定*1120GB弱('24/8/18時点、開発中)
学習(finetuninig基準*128GB18GB未定*1328GB('24/8/18時点、開発中)
ノウハウの豊富さ◎沢山の資源がある。スレに先輩が多くて安心◎:SD1同等レベルX:'24/7月時点ではモデル・学習環境ともに整備不足X:'24/7月時点ではモデル・学習環境ともに整備不足

FLUX.1はStable Diffusion系列のモデルではないので、参考として掲載。

参考にSDXL、SD3、FLUX.1がcivitaiで比較されているので共有。
SDXLと比較するとどちらもプロンプトがより正確に反映されている事、文字出力にも対応している事が分かる。

 
その他のVer.:v1.4

ほかにもv1.4,v2.0,WDがあります*14
v1.4は、v1.5と互換性有り。それ以外は互換性無し。
v2.0は、ナニとは言わないが、互換性がなく規制が強いらしく普及しなかった。
※この辺、詳しい話は用語集にでも書きましょう

拡張子が色々あるけど、どれを選べば良いの?

  • モデルのファイル形式には、主に下記があります。
    • safetensors
    • ckpt
    • Diffusersフォルダ
  • セキュリティ的な安全性の観点から、
    .safetensors形式の配布モデルをダウンロードするのがオススメです。
    モデルの読み込み速度も.ckpt形式よりわずかに高速になるようです。
  • .ckptは.safetensorsよりも古い形式で、構造上、悪意のあるスクリプトを混入するリスクが存在します。
    (参考) safetensorに関するガイド

NMKDは「.safetensors」形式のモデルからの画像生成に対応していません。
「.ckpt」「Diffusersフォルダ」「Diffusers ONNXフォルダ」のいずれかの形式を利用して画像生成を行うことになります。
安全性を考慮すると、.safetensors形式のモデルをダウンロードし、NMKDの機能を使って自分で.ckptなどの形式へ変換するのが良いでしょう。
 誘導→NMKD版の導入#使用するモデルの設定

同じモデルでも複数(fp16,fp32,pruned)あるけどどれがいいの?

  • 画像生成においてはfp16の2GBモデル一択。
    • ダウンロードが早く終わる
    • 使用モデルを変更する際や、1111起動時のモデル読み込みが早く終わる
    • 生成される画像の品質は変わらない。1111では基本的にfp16で画像生成の計算を行う。従ってfp32のモデルを利用しても得られる結果はfp16と同等になる
  • マージや学習に利用する場合
    • わからん。画像生成と違って検証に時間がかかるため不明
    • 過去としあきによると「fp16が駄目なのは本格的にモデルへ5桁以上枚規模の追加学習をするとき(要は一人でwaifu diffusionを作ろうとする時)くらい」とのこと
  • fp16とそれ以外の差。画像生成における比較検証
    検証用にwebui-user.batの引数は全て削除済
    レイヤーとして重ねて除外差分を取ったらどのピクセルも完全に#000000だった
    anything-v3-full
    (※汚損・破損トークン
    修正を実施)
    anything-v3-fp16
    容量7GB容量2GB
    anything-v3-full_fix(7GB)anything-v3-fp16-pruned(2GB)

それでもなお2GBモデルとそれ以外とで生成画像が一致しない場合

  • xformers(v0.0.19以前)の利用に起因する僅かなぶれ幅。
    速度上昇とVRAM低減の恩恵を受けられる代わりに、同一モデル・同一seedでも僅かなぶれ幅が発生するようになる。
    v0.0.20以降のxformersでは完全一致する
  • Tome(TokenMerging)の利用に起因するぶれ幅。
    画像を生成する際の速度が向上する(画像サイズが大きければ大きいほど、効果も大きくなる)代わりに、同一モデル・同一seedでもぶれ幅が発生するようになる。
    xformersよりもぶれ幅が大きい
  • モデルのトークン汚損・破損に起因する差異

fp32モデルを使うには?

  • --no-halfオプションを利用することでfp32で画像生成の計算が可能になる。
    しかし当然ながらVRAM使用量が増大する。
    またfp16に比べて有意に良好な画像品質を得られるかどうか、またそれが使用VRAM量の増大に見合うだけの価値があるかは別の話。
    なおSDXLのモデルはほぼfp16でプルーニングされている。基本使うならfp16と考えていいだろう。
    • ※余談だがSD1.5の頃はfp32にほとんど意味はなかった。
      何故かというとfp32のメリットは精度にあるが、SD1自体の精度が低かったためである。
    • また、VAEで黒い画像が出る場合の--no-half-vaeなど、fp16を使う事自体がエラーの原因になる場合もあるのでAIでは常にfp16が最適とは限らず、逆にfp16じゃないとエラーが発生する場合もある。

モデルに関するよくある質問

モデルデータをDLしたんだけど、どこに置けばいいの?

(1111の場合)

stable-diffusion-webui\models\Stable-diffusion
人によって親フォルダ名が少し異なります。

(NMKDの場合)

\Data\models

(1111)モデルデータを指定の場所に入れたのにcheckpointリストに表示されない!

としあき!🔃を押せ!

(NMKD)モデルリストに.safetensors形式のモデルが表示されないんだけど?

2023/01/31現在、NMKDは.safetensors形式のモデルを利用しての画像生成には未対応です。しかし!
NMKD自体に.ckpt形式への変換機能が用意されているので安心してください。
🔧(Developper Tools...)を押して、Convert Models。

モデルデータを軽量化する方法

(1111の場合)

  • Checkpoint Mergerタブでモデルのfp16化とsafetensor化が可能です。
  • 加えて拡張機能Model Toolkitを利用することでプルーニング(pruned化)も可能になります。
    下記ページに簡単な使い方も書いておいたので、ぜひ一読してください。
     誘導→Extensions#Model Toolkit

(NMKDの場合)

  • 画面右上の🔧Developer Tools → Prune (Trim) Modelsでfp16化できます。

モデル切替時の読み込み時間の検証

1111起動時のモデルをBloodOrangeMixにし、1111起動後に手動で7.5GBまたは2GBのany v3に切り替えて計測。
環境はM.2 SSD (1TB, PCI-Express Gen4)。

7.5GBWeights loaded in 7.5s (load weights from disk: 0.6s, apply weights to model: 6.5s, move model to device: 0.4s).
2GBWeights loaded in 3.9s (load weights from disk: 0.1s, apply weights to model: 3.4s, move model to device: 0.4s).

1111は起動時に「前回最後に使用したモデル」を自動的に読み込むので、頻繁に利用するモデルはぜひ軽量化しておきましょう。

追加のモデルフォルダを指定する/モデルフォルダだけSSDに置く/シンボリックリンクの作成方法

モデルフォルダが肥大化して、SSDの容量が心配になってきた。そんな時はこんな解決策が考えられるよね。

  • 1111をSSDに置き、利用頻度の低い一部のモデルだけHDDに移す
  • 1111をHDDに置き、モデルフォルダだけSSDに置く

この時、利用できる方法が2つある。

  • --ckpt-dirを利用してモデルディレクトリを追加指定する。
     誘導→「webui-user.bat」を編集する-オプション
  • シンボリックリンクを利用する。
    シンボリックリンクについてもっと詳しく

    今回は「利用頻度の低い一部のモデルをHDDに移動させる」という想定で、シンボリックリンクの作成方法を紹介する。
    マージや学習の時だけしか使わない、ファイルサイズの大きなモデルとかね。
    例えば E:\hogehoge\souko でも作って
    C:\1111\models\Stable-diffusion から移動させよう。
    それが終わったらコマンドプロンプトを管理者権限で起動して

    mklink /D "C:\1111\models\Stable-diffusion\souko" "E:\hogehoge\souko"

    これでシンボリックリンクの出来上がり。
    さもC:にあるかのように見せかけできる。実際はE:のHDDにあるわけだから読み書きは遅いけどね。

    なお1111くんは下位フォルダにあるモデルも読み込んでくれるから整理に便利だよ。
    この「mklink /D」ってのがシンボリックリンク作成のコマンドなわけ。

    mklink /D "幻" "実体"

    この順で記述して使う。
    上記の例ではフォルダ丸ごとやってるけどファイル単体に対して使うことも可能。

    シンボリックリンク作成の操作をもっと楽にするツールも多数出回ってる。
    例えば圧縮解凍ソフトの一つであるExplzhをインスコすると、Windowsの右クリックメニューからシンボリックリンクを作成できるようになるから捗るよ。

モデルファイルのトークン破損チェックと修正方法

トークン破損ってなに?

症状としては、

  • 軽量化モデルで大きい画像作ると結構劣化(背景が雑になる)してる気がする。
  • モデルを2つマージし、生成されたモデルを用いて画像生成すると明らかに生成画像が暗くなる。

再発防止の処置は済んでいるが、古いモデルを使用している場合は注意が必要。

1111が標準で備えている機能の一つに「Checkpoint Merger」タブがある。複数のモデルを指定の割合で足し引きして、新しいモデルを作成する機能だ。
しかし一時期この機能に不具合があり、トークンの一部が破損・汚損したモデルが作成される場合があった。
2023/1/15の1111アプデによりこの不具合は修正された。
…が、それ以前のこの機能を用いて作成されたマージモデルは、破損・汚損している場合がある。

破損率はモデルによってピンキリ。低いモデルでは77トークン中0~1個。一方で20個以上なんてモデルもある。
fp16か32か等にもよるので、正確にはモデルファイルによる。

破損チェックと修正方法

チェックと修正の方法は色々あるが、1111を利用している場合は拡張機能Model Toolkitを導入して利用するのが手軽でオススメ。
下記ページに簡単な使い方も書いておいたので、一読してほしい。
 誘導→Extensions#Model Toolkit

他の方法としては、例えばfix_postion_ids.py等がある。

モデル紹介

下記ページを参照

自分で探したい!

  • 代表的なサイト
    • Civitai
      おそらく一番有名なモデル配布サイト
      Stable diffusion web UIの拡張でもこのサイトをフォローしている物がある。
      英語のサイトだが簡単な英語がわかるなら問題なく使えるはず。
    • Hugging Face
      モデル配布専用のサイトではなく機械学習全般を取り扱うサイト
      そのため検索性は悪い。
  • その他のサイト
    • PixAI.Art
      日本語対応サイト
      どちらかといえば画像生成&生成した画像の投稿がメインだが一部モデルはダウンロードできる。
      ここからダウンロードできないモデルも他のサイトならダウンロードできる場合もある。
      試しに生成したり、他の人が生成した画像を参考にモデルを選ぶならいいかもしれない。
    • SeaArt Ai
      日本語対応のモデル配布サイトその2
    • LibLib AI
      中国語のモデル配布サイト
      他のサイトにはない掘り出し物があるかも……?
  • ここに上げた以外にも配布サイトは無数にあるので頑張って探していいモデルを見つけよう

memo

https://wikiwiki.jp/sd_toshiaki/%E3%83%A2%E3%83%87%E3%83%AB%E8%A9%B3%E7%B4%B0


短縮URL生成

https://wikiwiki.jp/sd_toshiaki/-s/a21ec7f9

*1 主にstable diffusion web-UIとsd-scriptsのこと
*2 潜在的な表現力と同義。参考値
*3 Refinerを含めると35億+66億=90億になるが、実際はほぼ使われていないので35億で安定。以下旧情報
約23億
text encoder 2層
U-Net層がv1.5比で3倍

*4 どのモデルでも学習次第である程度異なる解像度に対応できるようにはなるが、概ねこの解像度で使われているよ、という意味での参考値
*5 プロンプで入力した文字が、画像内の看板等に反映できるか
*6 VAE除いた状態
*7 =sd3_medium_incl_clips_t5xxlfp8
*8 clip L/G
*9 今後の状況次第で変わる。T5XXLを使わないのが主流みたいなケースになればもっと下がるかも。SDXLでrefinerが活用されていないように
*10 目安
*11 sd-scriptsのデータがない
*12 オプション無し
*13 sd-scriptsのデータがない
*14 正確には「あるみたい」です。筆者はどれも触ったことが無いです。