LyCORISとは?

LyCORISとは、sd-scriptsで利用可能な追加プログラムを提供するプロジェクトです。
Loraの仕様を拡張した様々な学習用のアルゴリズムの集まりで、KohakuBlueleaf氏(琥珀青葉氏)によって開発されました。

LyCORISの特徴は、パラメータ効率に優れた各種アルゴリズムを提供することです。

このプロジェクトにより、従来のLoRAアルゴリズムより、表現力が高いLoCon、LoHa等の様々な特徴的なアルゴリズムが考案・実装されました。

比較表

プロジェクトの各アルゴリズムと従来のフルファインチューニングおよびLoRAとの大まかな比較です。

fullLoRALoHaLoKr低factorLoKr高factor
忠実度
柔軟性
多様性
ファイルサイズ
線形層の訓練速度
畳み込み層の訓練速度

★ > ◉ > ● > ▲ [>はより良いことを意味し、サイズはより小さい方が良い]

  • 柔軟性とは、訓練セットにあるものと類似性の低い画像の生成や、一緒に訓練されたかどうかにかかわらず、複数のコンセプトの組み合わせに関連するすべてのことを意味します。
  • 高factorのLokrはベースモデルを切り替えたり、複数のコンセプトを組み合わせたりすることがより困難になる可能性があります。

簡略な説明

  1. 「最良の」モデルを探しているなら、ネイティブ訓練に固執し、データセットを厳選すべきです。LyCORISでは、network_argsでalgo=fullを設定することでネイティブ訓練を実行できます。これにより、フルモデルをLoRAとして使用できます。
  2. 品質よりもストレージ容量効率が重視される場合は、おそらくLoRAを使用したいでしょう。この場合、モデルが「十分に学習していない」(例えば、複雑なディテールが正しく捉えられていない)と感じる場合は、低factor(4〜8など)と完全なdim(dimensionを100000などの任意に大きな数に設定)を組み合わせたLoKrを試すことが推奨されます。
  3. 逆に、モデルが「学習しすぎている」(例えば、訓練画像から不要なスタイルが漏れている、またはポーズを変更することが難しくなる)と感じる場合は、LoHa、高factor設定のLoKr、より低いdim、IA3などを使用するのが良いでしょう。

やや詳しい説明

課題を明確にしましょう。すべてはデータセットとハイパーパラメータに依存します。比較可能なのはLoRA、LoHa、LoKrがほぼ同じサイズで、他のハイパーパラメータが同じで訓練されたケースのみです。異なる方法によって生成される重みは同じスケールを持たないため(例えば、我々の実験ではLoRAはLoHaとLoKrよりもはるかに小さい重みを持つ傾向があります)、scaled_weight_normなどの他の要素を調整すると、状況が劇的に変わる可能性もあります。

LoHaの減衰効果は、これまでコミュニティで行われたいくつかの観察に新しい説明を提供します:

  • LoHaは、特に単一のスタイルの画像で訓練されたキャラクターのスタイル変更に優れています:これはLoHaがキャラクターのスタイルをそれほど学習しないためです。
  • LyCORISは、例えば https://rentry.org/59xed3 によって指摘されているように、複雑なキャラクターには劣ります:これは特にLoHaと「高factor設定のLoKr」を指します。これは、より良い汎用性と引き換えに忠実度が犠牲にされるために発生します。もちろん、dimとfactorを調整することでこれに対処することもできます。
  • LoHaは複数のコンセプトの学習に優れています:他のコンセプトからの汚染は「学習しすぎた」時により観察されるため、減衰のおかげでLoHaではそれほど発生しません。

第3のポイントについてもう少し深く掘り下げてみましょう。より適合性の低いモデルが汎用性に優れているとは限らないのでしょうか?例えばSVDiffに示されているように(より詳細には、複数のSVDiffを組み合わせるとLoRAを組み合わせるよりも悪いことを示しています)、これは必ずしも当てはまらないかもしれません。さらに、モデルのフルファインチューニングは適切に調整されていれば忠実度とその一般化能力の両方に優れているようですが、適合性の低い超小型のLoKrはベースモデルを切り替えると良好に機能しないため、汎用性に優れているとは言えないようです。

これにより、次のことを推測します:

まず、およそパラメータ数で測定されるモデル容量を固定する必要があります。次に、コンセプトをより良く学習すること(忠実性)と学習されたコンセプトのより良い組み合わせ(汎用性)の間には本質的なトレードオフがありますが、モデルサイズ(dimやfactorなど)を増やすことで両方を改善できる可能性があります(ここに第三のトレードオフが生じます)。

キャプションの効果を考慮すると、事態はより複雑になります。LoHaがキャプションに表示される異なる単語に学習されたコンセプトをより均一に帰属させるケースがあるのでしょうか?これはさらなる調査が必要です。

また、alphaの効果にも注意してください。dimを増やす際に、alphaを1に固定することと、alphaをdimの半分に固定することは同じではありません。後者ではコンセプトがより良く学習されたと感じるかもしれませんが、前者ではむしろ逆になる可能性があります。

畳み込み層の訓練に関しては、「ディテール」や「テクスチャ」を体系的に評価する方法がないため、違いを見分けるのははるかに難しいです。また、Stable Diffusionは潜在拡散モデルであるため、VAEが潜在空間の変化にどのように反応するかを理解せずにディテールについて本当に議論するのは困難です。個人的には、ほとんどの場合preset=attn-mlpに固執することをお勧めします。

また、バッチサイズを増やすと結果が悪化すると不満を述べている人がいます。バッチサイズを増やす際には、同様の結果を達成するために、それに応じて学習率/訓練エポックも増やすべきであることを覚えておくことが重要です。

TIPS

  1. 高Factor Lokrはキャラとスタイルの両方を学習できるため、原作品にかなり忠実なモデルを作ることができますが、硬直性が高く、プロンプトを無視しやすい傾向があります。またキャラやスタイルの再現度ほど衣装の再現度に優れておらず、衣装の細部まで覚えきらずにアレンジする傾向があります。複数衣装の習得には向かないので、データセットはなるべく同じ衣装やコンセプトで統一するのがよいです。画質と原作忠実度において高水準のモデルを作れる可能性がありますが、学習にピーキーな傾向があるため、optimizerと学習率の設定をかなり絞り込む必要があります。このアルゴリズムは初心者向きでなく、ふつうのLoRA(LierLa)のほうが高品質かつ使いやすいものを作れると思う人も多いかもしれません。
  2. LoHAは過学習しにくく、複数概念をよく覚えるため、複数衣装を覚え、使い分けられるだけでなく、複数のスタイルや複数のキャラを一つのLoraに含めることができます。ただし計算速度が遅いうえに、ほかのアルゴリズムよりステップ数が多くなる傾向があります。
  3. 低Factor Lokrはファイルサイズが小さい以外、ほとんど考慮する必要はありません。

さらに詳しい情報はこちら

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