見出し画像

SDXLでDoRAを使ってみた

※この記事はrentryから移植したものです。今後はnoteに記録し、rentryは更新しません。

2024年2月にarxivにてWeight-Decomposed Low-Rank Adaptation(DoRA)と呼ばれるファインチューニング手法が発表されました。
これは、従来のLoRAがmagnitudeをファインチューンしていたのに対して、DoRAはdirectionをファインチューンすることで精度と安定性を改善するというものです。

論文発表後しばらくしてsd-scriptsの拡張スクリプト?のLyCORISにDoRAが実装されました。ということでLoRAとDoRAで軽く比較検証しました。
--network_moduleを"lycoris.kohyaに変更し、--network_argsに"dora_wd=True"を追加すると有効になります。
推論時は通常のLoRAと同じように使用できます。AUTOMATIC1111 WebUIは1.9.0以降、ComfyUIは3月26日以降のコミットで対応しています。Forgeは確か非対応で各自DoRA対応のPull Requestをマージする必要があったはず。

LoRA vs DoRA

いずれのLoRA/DoRAもLionで約4000ステップ学習しました。

v7がLoRA(dim16)でv8がDoRA(dim8)

赤みがかる現象が解消。目の描写が改善?

v2がLoRA(dim4)でv4がDoRA(dim8)

赤みがかる現象が解消。精度は変化なし

v4がLoRA(dim16)でv5がDoRA(dim8)

ヘイローの精度が改善したように見える。

loraがLoRA(dim8)でdoraがDoRA(dim8)

赤みがかってもやがかかる現象が解消。
線が太くなってコントラストが上がる。batch1相当で4224steps回したが過学習気味?

まとめ

精度改善は微妙ですが、変色などが無くなり学習の安定性が向上しました。しかし、コントラストが上がってしまった(魔人3.1の癖?)。まあLBWでどうにかなるとは思いますが。
収束の速度は変化しません。
欠点は計算(it/s)が遅いことがあげられます。

使用スクリプトなど:


いいなと思ったら応援しよう!