最強LoRA設定を考える

LoRAを作るとき、設定の正解ってよくわからないですよね。自分もずっと手探りでした。色々回してみて「これで大体うまくいく」という設定が固まってきたので、考え方ごとまとめておきます。

LoRA設定サンプルダウンロード

ぶん回してこそ激似になる

 

この設定の核心は バッチサイズ6・3000ステップ という、過剰とも言える学習量にあります。正直これだけやれば大体似ます。ただ、もっと低いステップ数でも十分似てくれるので、「完全再現したい」のか「そこそこ似ていればいい」のかで判断すればよいと思います。

 

あと正直なところ、バッチサイズが大きいほど似るとか低いほど似るとか、定石とは逆の結果になることもあって、この辺は一概には言えないです。

 

Rank・Alphaの考え方

 

この設定では Rank(dim)= 32、Alpha = 4 を使っています。Alpha / Rank = 0.125 と小さめにすることで学習が安定します。

 

品質は過剰なくらい高く出ますが、LoRAを後から他のLoRAと混ぜて使う予定があるなら Rank 16・Alpha 2 のような低めの設定のほうが扱いやすくなります。「激似にしたいか」「混ぜて使いたいか」で使い分けるイメージです。

 

バッチサイズ6はVRAMが厳しい

 

バッチサイズ6はVRAMをかなり使います。厳しい場合は以下の対処が現実的です。

 

  • fp8オプションを有効にする:VRAMを大きく削減できる
  • 学習解像度を下げる1024,1024から768,768に落とすだけでもかなり違う

バッチサイズを下げたほうが似る、とよく聞きますがこの設定でも問題ないです。バッチサイズ下げるとstepsも上げなきゃ無いので滅茶苦茶時間がかかります。3000ステップ・バッチ6は現実的な妥協点です。

 

解像度は768×768で十分

 

学習解像度は 768,768、Maximum bucket resolution は 1600 に設定しています。NoobAI XLはこの解像度でもきれいに学習してくれます。モデル自体の学習サイズに依存するところが大きいのだと思いますが、少なくともこれで困ったことはないです。

 

ベースモデルはNoobAI XL epsilon pred v0.5

 

自分が試した中では noobaiXLNAIXL_epsilonPred05Version が一番オリジナルに忠実な出来になります。キャラクターの特徴をちゃんと拾ってくれる印象です。

 

ただ利用規約が厳しめなので、商用利用したい場合は別のモデルを選ぶべきです。個人利用の範囲であれば問題ないと思いますが、念のため規約は確認してください。

 

生成するときは epsilonPred05Versionに illustriousXL10_v10 を7:3で混ぜたもの が個人的に好みです。要するに、キャラを似せて高解像度にも対応させる、という意図です。

 

Prodigyは回せば回すほど似てくる

 

オプティマイザーは Prodigy を使っています。学習率を自動で調整してくれるので、自分で数値を決めなくていいのが楽です。そして回せば回すほど似てくる感覚があって、ステップ数を増やすことへの踏ん切りがつきやすいのが気に入っています。

 

追加の引数はこれを使っています。

 

--optimizer_args "weight_decay=0.01" "d_coef=1.0" "use_bias_correction=True" "safeguard_warmup=True" "betas=0.9,0.99" "d0=1e-06"

 

この数値はAIに相談しながら決めました。理屈通りに動いているかどうかは正直わからないのですが、結果は良好です。

 

まとめ

 

設定の考え方をざっくりまとめると、こんな感じです。

 

  • 激似にしたいなら 3000steps・バッチ6・Rank32・Alpha4 で全力でぶん回す
  • 混ぜて使うLoRAなら Rank16・Alpha2 くらいに抑えておく
  • VRAMが足りなければ fp8オプション解像度を下げる で対処
  • ベースは NoobAI XL epsilon pred v0.5(商用利用はNG)
  • 生成時は epsilonPred05Version + illustriousXL10を7:3 で混ぜると個人的に好み
  • Prodigyの引数はAIに聞いた値。理屈は未検証だが結果は良好

 

「絶対にこれが正解」という話ではないですが、迷ったときの出発点として参考にしてもらえればうれしいです。

 

コメント

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