LoRAにはいくつかのモジュールとアルゴリズムが存在する。
どれを使うかによって、パラメータの行列での扱い方が変わり、
学習結果に大きく影響する。
LoRAの種類
メジャー系LoRAの早見表
編集が難しく手を焼いており、旧情報があります。後述のリンク先も参照して下さい。
概要 | 設定パラメータ | ||||
---|---|---|---|---|---|
実装モジュール --network_module=XXX | アルゴリズム名 | 旧式 | 語源大まかな特徴 | --network_args “XXX” “XXX” 指定必須な変数は★ | その他の設定 (公式推奨値) |
networks.lora | LoRA-LierLa 改名前:LoRA | LoRA for Linier Layers, Linear 層およびカーネルサイズ 1x1 の Conv2d 層に適用されるLoRA | - | ||
LoRA-C3Lier | LoConと基本機能は同じ。 LyCORIS版LoConと混合を避けるため改名 | conv_dim=XXX ★ conv_alpha=XXX ★ | |||
locon.locon_kohya | LoCon | 旧 | LoRA for C olutional layers with 3 x3 Kernel and Linear layers | conv_dim=XXX conv_alpha=XXX | |
networks.dylora | DyLoRA-LierLa | LoRA-LierLaのDyLoRA版 | algo=dylora ★ unit ★ down_lr_weight mid_lr_weight up_lr_weight dropout | ||
DyLoRA-C3Lier | LoRA-C3LierのDyLoRA版 | algo=dylora ★ conv_dim ★ conv_alpha ★ unit ★ down_lr_weight mid_lr_weight up_lr_weight dropout | |||
lycoris.kohya | LoCon | algo=loconまたはlora ★ conv_dim=XXX conv_alpha=XXX | |||
LoHa | アダマール積のLoRA | algo=loha ★ conv_dim=XXX conv_alpha=XXX dropout=XXX | dim <= 32, 上限64 alpha <= 1 | ||
LoKr | クロネッカー積のLoRA | algo=lokr ★ conv_dim=XXX conv_alpha=XXX dropout=XXX | |||
(IA)^3 | algo=ia3 ★ conv_dim=XXX conv_alpha=XXX | ||||
DyLoRA | ※不明 | ||||
Native Fine-Tuning | algo=full ★ conv_dim=XXX conv_alpha=XXX |
実装モジュール:これをインストールすれば対応するアルゴリズムを使用できるようになります。
アルゴリズム名:一般的な呼称です。
旧式:完全上位互換の元が登場し、使う必要のなくなった方式
各LoRAの概要
※まともに紹介すると長文になるので、sd-scriptsのURLを優先的に掲載。
sd-scriptsに実装済みでメジャーのもの
LoRA-LierLa,LoRA-C3Lier
- LoRA: Low-Rank Adaptation of Large Language Models(arxiv)、LoRA(github)をStable Diffusionに適用したもの。
DyLoRA系
- sd-scripts内の解説:https://github.com/kohya-ss/sd-scripts/blob/main/docs/train_network_README-ja.md#dylora
- 技術論文:https://arxiv.org/abs/2210.07558
LyCORIS
誘導→ LyCORIS
その他マイナーなもの
LoRA-FA
sd-scriptsに実装済み。軽量なのが特徴
LoRA-FA is added experimentally. Specify --network_module networks.lora_fa option. The trained model can be used as a normal LoRA model.*1
NestedUNet
としあき製のLoRA-C3Lier亜種。
詳細はNestedUNetページを参照