新オプティマイザ「Prodigy」を使ってLORAを作ってみた。
検証・研究記事ではありません。
雑感。ファーストインプレッション。
「SD SCRIPT」が、「Prodigy」という新たなオプティマイザに対応したので早速ためしてみました。
特徴は
-----------------------------------------------
DAtapt系列で「学習率を自動調整する」
学習効率が高い(低STEPでいける)。
-----------------------------------------------
ということらしいです。
ちょっと前に対応した「DAdaptLion」を試したときは、学習率調整自体は便利なんだけど、出てくる物がAdafactorと比べて、とくに優れているって印象は受けませんでした。
で、まぁ使い慣れてるAdafactorでいいかな…って感じでDAdapt系には乗り換えなかったんですが、今回はどんな感じでしょうか…。
再現率がスゴかったです
著作権があるので、出力画像を貼れないのですが、Adafactorでdim/alphaをシコシコ弄りながら作ったLORAよりも、圧倒的に再現性が高かったです。
耳と髪型に特徴があるキャラで、旧自作LORAだと再現率が五分五分程度だったのですが、Prodigy版だとほぼ再現します。
あと構図LORAも試したところ、Adafactor版とは大幅に画風が変化しました。こちらは再現率がそれほど大きな問題にならないので、「Adafactor版よりよくなった!」というわけではないのですが、同じ素材で別の出力ができるようになるのは便利でした。
設定
--lr_scheduler="cosine" --optimizer_type="prodigy" --optimizer_args "betas=0.9,0.999" "weight_decay=0"
irは1(推薦値)~0.5。UNETとTEの設定はいりません。
(してもいいけど、学習率はひとつしか設定できないので、2つめ以降は無視される模様)
weight_decayは0が初期値。以前のDAdapt系使ってた人は、いったん0にしてから試した方がいいかもしれません。
スケジューラーはcosineにしました。「cosine with restart」でも動きましたが、仕組み的にcosineの方がよさげ?
注意点
学習が速く再現率が高い代償なのか、わりと過学習になりやすい印象。
あと、過学習までいかなくても、固定力が強いせいか、応用が効かないことが多かったです。
PROMPTで指定した服装になってくれないとか、そもそも脱いでくれない。他のLORAと併用しても、妙に効きが悪い/出力がガビりやすい等々。
Adafactorなどの代替というよりも、併用して使い分けるのがいいかなぁと感じました。
この記事が気に入ったらサポートをしてみませんか?