"モデルマージ"の利点と気をつける点について。
当記事は 生成AI Advent Calendar 2024 の参加記事です。
◆そもそもモデルマージとは
モデルマージとは「料理」に近いと思います。
白米→うまいけどそんなに食えない。単体じゃ限界がある。
牛肉→単体でも食えるが他のものをあわせてより美味しく…
牛丼→上2つが融合することで進化!
つまりうまいところをいいとこ取りしようという手法です。
カレーなんかが近いかも。
例えば、「絵柄が好みだけど背景が微妙なモデル」があるとします。
そこに「背景は綺麗だけど他は微妙」なモデルを混ぜると、
「背景も絵柄も綺麗なモデル」ができます。
上記のような考え方でマージをしていきます。
◆マージのメリットとは
「オリジナルモデル」を作ることができる
というのが大きなメリットです。
好きな絵柄のLoRAでモデルごと生成したい。
絵柄を統一させたい。
LoRAの適用がめんどくさい。
こういった項目を一気に解決することができます。
また、他の人が使ってないモデルの場合はそれだけでオリジナリティがでます。
◆でどれぐらい変わるの?
単純な比較ですが、結構変わってるのがわかるかと思います。
マージの調整次第で安定も不安定もコントロールできます。
◆モデルマージの手法
モデルマージにはいくつかの方法があります。
加重平均
差を加える
階層マージ
■加重平均
加重平均とは、最も一般的なモデルマージの方法です。
$${A∗(1−M)+B∗MA∗(1−M)+B∗M}$$
A: ベースモデル
B: 混ぜるモデル
M: Multiplier(M)。数値が大きくなるほどBに寄ります。
M=0 : [A=100%]
M=0.3 : [A:30%,B=70%]
M=1 : [B=100%]
Multiplierの数値を変更してどれだけモデルAの要素を入れるかで決めます。
簡単に言うと単に混ぜてるだけです。
■差を加える
差を加えるとは、一部の要素を引いて加えるマージです。
$${A+(B−C)∗MA+(B−C)∗M}$$
A: ベースモデル
B: ベースモデル2
C: Bからなくしたい要素が入ったモデル
M: Multiplier(M)。数値が大きくなるほど(B-C)に寄ります。
BからCの要素を引いてAに混ぜ込むマージ方法です。
NSFW要素をなくしたり逆に入れたりぶっこ抜いたりするときに使います。
■階層マージ
U-Netの階層ごとにマージする方法です。
このように各階層ごとに要素を割り振っていきます。
かなりややこしいですが、特定の要素や部分をマージすることができます。
◆マージの利点と欠点
モデルマージには利点と欠点があります。
■利点
単体のモデルでは出しにくい絵柄が出せる。
モデルを自分の好みな絵柄で作ることができる。
オリジナリティが簡単に出しやすい。
■欠点
ライセンスの理解が必須。
モデルを公開する場合はリスクを負う。
試行錯誤が必要。
LoRA等の学習も併用が必要。
利点としてはやはり「個性が簡単に出せる」という点。
モデルを混ぜることによって簡単に絵柄を変えることができます。
LoRAと違い、絵柄がブレない(固定される)ので非常に便利です。
欠点としては、モデルを公開する際にリスクを負うという点。
商用不可モデルが稀にあるので注意。
Civitai等のライセンスも無茶苦茶なので、見極める力も必要です。
◆マージで気をつける点
■ライセンスについて
[■ライセンスの確認]
これ一番大事です。
現在主流のライセンスは下記のものです。
『Fair AI Public License 1.0-SD』
一部制約があるライセンスモデルもありますが、モデルのライセンスが上記のものでしたら表記のみのものになります。
civitaiあるあるですが、ライセンスが無茶苦茶なものが結構多いです。
基本的にはライセンスのほうが正しいです。
クリックで詳細が出るのでそこ見てもらうといい感じです。
『モデルは売らないで』『画像生成サービスでこのモデル使って商用利用しないでね』ってのはほぼデフォです。
■ライセンスの変更について
sd1.5の『Basil mix』のように途中でライセンスが変更される場合があります。
基本的には、変更前のモデルは影響ありませんが…
ただ"入っている"という事実は消えないのでなんとも言えないところ。
あんまりないですが、変更された場合は影響が出ます。
使ったモデルのライセンスや情報は追うようにしましょう。
◆混ぜるモデルを知る
■モデルを集めよう
まず「モデル集め」をします。
https://huggingface.co/models?pipeline_tag=text-to-image&sort=trending
基本的には「huggingface」か「civitai」で探すのがおすすめです。
個人的にはcivitaiがおすすめ。
モデルが決まったらDLします。
この時、マージ目的なら「fp16」の軽量モデルで大丈夫です。
(ファインチューニング等するならfp32等)
■モデルの"癖"を見つける
マージするにしても"ベースモデル"が必要です。
ベースモデルに適しているモデルは
Animagine系
noob系
等のそこそこなんでもできるモデルがおすすめです。
マージ済みのモデルでも大丈夫ですが、
結構じゃじゃ馬になりがちです。
ここから混ぜるとすると、モデルの"癖"を知らないと混ぜにくいです。
階層マージなら尚更!!
anime系…絵柄が強いが他は弱め
リアル系モデル…指や背景が強い。
このように簡単でいいので、モデルの癖がわかるとマージしやすくなります。
◆需要や流行を考慮する
■需要について
配布しても「誰も使ってない…」みたいな状況だと悲しいです。
(あんまり気にしなくてもいいですけどね)
できるだけ「自分に求められてるモデル」を作るのをおすすめします。
(例) 〇〇モデルを改良したモデルを作る 等
■流行について
とにかくマージメインで活動してる方を追うのがおすすめです。
それかDiscord等ではやってる絵柄やモデルを参考にするのがおすすめ。
◆まとめ
Q.結局マージって何をすればいいですか?
A. 好みと癖
というわけでこのへんで。