見出し画像

「DORA」と「LoRA plus」による短時間でのLoRA作成

 「LoRAを短時間で作りたい!」ということで、いろいろ試してみました。

 自分の最近のLoRA作成のメインストリームは「loha-Prodigyの組み合わせで4000~5000STEPぐらい」です。
 うちのGPUは3600Ti-12GB。これでだいたい250STEPで20~30分ぐらいかかるので、4000STEPだと6~8時間、5000STEPだとざっくり7~10時間ぐらいかかります。長い。

 で、ここまで時間がかかると手軽に作るのが難しいので、もう少し楽に作れないか? ということで、最近注目の時短メソッドである「DORA」と「LoRA Plus」を試してみました。

 5/14現在、「LoRA plus」はSD-Scriptのdevブランチで、「DoRA」はLyCORISの最新版で使用可能です。

 どちらもちゃんとした解説ドキュメントが英語で出てるようなのですが、ぶっちゃけ読むのが面倒なので細かい理屈はよくわかっていません。
 基本的には学習の計算を効率化することで、同じ結果を得るのにかかる時間を大幅に短縮しつつ、学習のクオリティそのものを多少向上(数%程度?)させるようです。
 つまり「学習効果を得るための必要STEP数が大幅に少なくなる」ってことですね。
 1STEPにかかる時間が短くなるのではなく、必要STEP数が減るようです。

今回は下記の組み合わせで試しました。

plus :SD-SCRIPTのデフォルトLORA+adamW
DORA :LyCORISのLoRA+Prodigy

 現状では、plusはsd-scriptのデフォLora用で、DoRAはLyCORIS用です。
 さらに、plusはLR自動調整型オプティマイザー(Dadapt系やProdigy)で使えないようです。
 plusはLyCORISのページに実装要望が出ていたので、近いうちに対応するかもしれません。

 作成したのは、サイゲームズ様の『グランブルーファンタジー』よりマキラをLoRA学習してみました。
※サイゲームズ様のガイドラインに沿って製作しています。(https://form.cygames.co.jp/streaming_guidelines/)

 LoRA plusとDORA、あと比較用にノーマルProdigyのLoRAを作ってみました。

 720STEPの2バッチで総STEP数は1440。
 plus の adamWで2時間弱。
 DORAのprodigyで2時間30分ぐらい。
 ついでに作ったノーマルProdigyは2時間ぐらいだったので、DORAは学習時間が長いようです。

 それぞれの生成結果ですが、plusもDoRAも540はさすがに学習不足。
 1080STEPで問題ないレベルで生成。
 1440までSTEP数を上げたところ細部の覚えがよくなりました。
 ただ1080と1440の差は「衣装の細かいパーツの再現度」ぐらいで、キャラの造形は1080と1440だと明らかな優劣は見分けられませんでした。

 それぞれ1440、1080STEPでLORA作成&出力しました。
 比較用のにProdigyオンリーLORAでも生成しました。

ゲーム内のキャラグラフィック。頭の装飾が特徴的。
巫女アレンジな衣装もユニークで学習が難しそう。
学習に使用した画像はゲーム内画像を中心に全身像×7枚と顔画像×2枚。
背景を全部切り抜いたのち、小さい画像は適宜拡大しました。
生成結果。1440がほぼ上位互換だったので1080はなし。
plusは塗りがフラットでアニメ塗りっぽい。
一方で、髪飾りや衣装を見る限り再現度はDORAより下。
DORA。羽髪飾りは再現されているが、袖やお腹部分はかなり違う。
1000STEP程度だと複雑な衣装を高い精度で再現するのは難しそう。

 ざっくりと評価すると、塗りのクリアさと細部の再現度がバランスよく両立しているのがDoRA。
 plusは塗りがクッキリしているのが特徴だが、再現度やDORAと比べると一段落ちる。
 ノーマルProdigyは、再現度はplusを上回る部分もあるけど、塗りや線がザラついてて雑というか重苦しい印象があって、出力のクオリティは一段下がる印象です。

 個人的にはDORAがいちばん良さそうだけど、plusも塗りの鮮やかさやクリアな絵柄という良さが感じられます。 

 正直、好みの範疇かなと思うので、とりあえず両方試して好きな方を使えばいいかなと思います。
 ただ、DORAは「WEBUI Forge」は未対応(パッチを当てると対応可※)なので、forgeユーザーの方は注意が必要です。

※forgeをDORAに対応させるには、powershellで「wget https://github.com/lllyasviel/stable-diffusion-webui-forge/pull/608.patch」してから「git am -3 608.patch」でパッチを当てるとよいようです。ただし自分は適当にやったので動作を保証するものではありません。自分の場合、WGETが動かなかったので、スタンドアロンのWGETを別途入手ました。


使用方法

「LoRA plus」はブランチをdevにして(5/15時点でplusはmainブランチに未実装)、「netowrok args」に””で囲んで「loraplus_lr_ratio=16」を追加。

「DoRA」はLyCORISの最新版をインストール。(どこから対応したからは忘れた。古すぎると未対応だし、実装初期版はバグがあるので、とりあえず最新版を突っ込むの推薦。できれば旧版を消した後に再インストールがおすすめというか、自分の場合はアップデートだとダメでした)
「network_args」に「dora_wd=True」を追加します。

 以下、有料部分で指定サンプルと、簡単な解説を公開しています。
 いつものように、特殊なことはしていません。

 数値はなんとなく設定している部分もありますし、そもそも学習設定を完全に理解しているわけではないので「これが正解!」「最適解はこれ!」というものではないです。
 また、自分は下記設定で成功していますが、学習は各自の環境への依存もあるので、下記の設定での学習は保証できません。
 あくまで参考程度としてご覧ください。
 分からないところがあるときや、うまく動かないときは、コメントを頂ければ可能な限りお答えします。

ここから先は

3,198字
この記事のみ ¥ 300

この記事が気に入ったらサポートをしてみませんか?