LoRA_Easy_Training_Scripts(2023-05-22以降のGUI版)の使い方
LoRA Easy Training ScriptsについてWindowsで利用する方法に絞った覚書(2023-06-04時点で加筆修正中)
OSごとの細かい利用方法の違いは、LoRA Easy Training Scriptsのgithubページを参照
以前のバージョンについては今後更新しないと作者さんが言ってるので、GUI版のみの説明
ここは間違ったこと書いてる可能性もあるので、基本的にはsd-scriptsのドキュメントを参照しながら使いましょう
◆前提条件
Python 3.10がインストールされていること
gitがインストールされていること
コマンドライン操作ができること
◆インストール
以前のバージョンを使用している人は新たにインストールしなおすのが無難
アップデートで動かないとかはご自分で解決してください
1.コマンドラインを起動
2.インストールしたいフォルダまで移動
3.次のコマンドを入力
$ git clone https://github.com/derrian-distro/LoRA_Easy_Training_Scripts
4.クローン出来たら次のバッチを起動
$ install.bat
インストールが始まるので待つ
何個か質問出てくるので内容読んで 「y」 なり「 2」 なり打ち込んで進める
・質問内容はtorchのバージョンどうする?とかそんなんです
・基本は「y」で良いよ
・GPUが30X0、40X0系以外の人は一部の質問で「n」選んでね(見れば分かる)
◆起動方法
インストール完了後に下記のバッチを起動
$ run.bat
◆操作方法
・画面の見方
画面左側が基本的な設定値を設定する部分
https://scrapbox.io/files/647c79d3aee469001bf4883a.png
画面右側が教師画像、正則化画像のデータセットを指定する部分
https://scrapbox.io/files/647c79f8c8c9e3001c742471.png
◆設定内容の保存・読み込み
https://scrapbox.io/files/647d48b49956a7001c84f45e.png
左上の「File」から設定内容の保存・読み込みが出来る
Save Toml
設定内容をToml形式で保存
Ctrl + S のキーボードショートカットあり
Load Toml
Toml形式で保存された設定内容を読み込み
Ctrl + O のキーボードショートカットあり
◆画面左側の説明 
LoRA_Easy_Training_Scripts(左画面の説明)
◆画面右側の説明
LoRA_Easy_Training_Scripts(右画面の説明)
◆Tomlファイルの直接編集について
作成中
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以下の文章はLoRA_Easy_Training_Scripts(左画面の説明)に移動します
◆設定項目の詳細
▽GENERAL ARGS
https://scrapbox.io/files/647c7a7b6616e3001c47dbb7.png
・MODEL
学習に用いるベースモデルの各種設定
・BaseModel
使用するベースモデルのパスを設定する
右の「…」ボタンをクリックしてファイル選択するか、エクスプローラーからファイルをD&D
・SD2.X Based
SD2.X系のモデルを使用する場合はチェックを入れる
・Uses V Parameterization
V Param ベースの SD2.x モデルを使用する場合チェックを入れる
・詳細は知らない
・RESOLUTION
学習時の画像サイズ設定
SD1.5X系であれば基本的には512x512で良いので変更不要
・GRADIENT
ここの設定はイマイチ不明なため、参考程度にしてください
チェックを入れるとsd-scriptsに渡す引数の一部が変わる?
チェック後のプルダウンで「Checkpointing」と「Accumulation」のどちらかを選択
Checkpointingを選択した場合 --gradient_checkpointing が引数として渡される?
少ないVRAMだけど沢山のバッチ数で回したい場合にチェック…で良いはず
Accumulationを選択した場合がイマイチ不明
旧版のgradient_acc_stepsに当たる物っぽい…説明もよくわからないため効果不明
・Seed
シード値
特に変更する必要ないと思います
・Batch Size
バッチサイズ
一回に処理するサイズ(2なら2画像分まとめて一回で処理)だったはず
大きくすると消費VRAM増大
・Clip Skip
CLIPの解析結果のうち、どの層の結果を参照するか…だったはず
普段使ってる値を指定すれば良いと思います
・Max Token Length
学習時のトークン最大サイズ
sd-scriptsの推奨は75(SD標準のトークンサイズ)
分からなければデフォルトのままで良いと思います
・Prior Loss Weight
分からないのでデフォルトのままで良いと思う
LoRA Easy Training Scriptsの説明でも分からない、ってなってるので分かるわけがない
・Training Precision
学習時のデータ精度
基本的にfp16で良いと思います
・Max Training Time
学習量の設定
「Epochs」か「Steps」を選択
1 Epoch=各データセットの画像数 x各データセットの ループ数を合算した物
好きな方を選んで設定
・Xformers
初期状態でチェック入ってます
Radeonとかの場合はチェック外す必要あるかも?
・CacheLatents
VAEの出力をメインメモリにキャッシュする設定
チェック入れるとVRAMの使用量削減と全体の学習速度が若干早くなるかも
To Diskにチェック入れるとディスクにキャッシュを書き出す
・次回起動時にディスクのキャッシュ使うのでちょい早くなる…かも?
▽NETWORK ARGS
https://scrapbox.io/files/647cdd466fb9f4001bb125c2.png
・MAIN ARGS
作成する種類を下記から選択する
・LoRA ・LoCon ・LoHA ・IA3 ・Lokr ・DyLoRA
なんか、IA3とかLokrはsd-scripts内の独自名称とずれてる?詳細不明
・Network Dimension
ネットワーク次元数
いわゆる解説サイトとかでDimと言ってるもの
画像は極端な値になってますが基本的に8~128の間で調整推奨
実際のところ次元数なのかランク値なのかよく分からん
・Network Alpha
アルファ値
いわゆる解説サイトでAlphaと言ってるもの
基本的にDimの半分(0.5倍)が推奨値らしいけど眉唾
アンダーフローを防ぎ、安定して学習するための値らしい
・Train on
学習方法の指定
U-NetだけとかText Encoderだけといった指定が可能
分からなければBothを選んでおく
・Conv Dimension
・Conv Alpha
LoRA以外を選択した場合に設定
詳細はsd-scriptsのドキュメント参照
ドキュメント(その他の学習方法)
・DyLoRA Unit
DyLoRAを選択した場合に設定
詳細はsd-scriptsのドキュメント参照
ドキュメント(DyLoRA)
・BLOCK WEIGHTS
階層別学習率の設定をする場合の各種設定項目
沼なので説明割愛
詳細はsd-scriptsのドキュメント参照
ドキュメント(階層別学習率)
▽OPTIMIZER ARGS
https://scrapbox.io/files/647cec8443618a001b8aac86.png
・1つ目のプルダウン
オプティマイザを以下から選択
・AdamW ・AdamW8bit
・Lion
・SGDNesterov ・SGDNesterov8bit
・DAdaptAdam ・DAdaptAdaGrad ・DAdaptAdan ・DAdaptSGD
・AdaFactor
オプティマイザごとの違いは自分で調べて
よく使われるのはAdamWなので迷ったらこれ選ぶ
・2つ目のプルダウン
スケジューラーを以下から選択
・cosine ・cosine with restarts
・linear
・constant ・constant with warmup
・adafactor
・polynomial
スケジューラーごとの違いは以下略
cosine with restarts か constant with warmupがよく使われてそう
この辺はsd-scriptsのドキュメント参照
オプティマイザ関係
この辺の設定はどんな風に学習するかの設定になるため色々試すか検索して調べて設定してください
・Learning Rate
学習率の設定
1e-4(0.0001)がデフォルト値
・Unet Learning Rate
Unetの学習率設定
設定しない場合はLearning Rateに設定した値が使用される
・TE Learning Rate
Text Encoderの学習率設定
設定しない場合はLearning Rateに設定した値が使用される
・Warmup Ratio
Warmupステップの割合
*指定するのはステップ数ではなく割合なので注意*
5%(0.05)ぐらいが推奨らしいです
・Num Restarts
cosine with restartsの場合に設定するリスタート回数
学習全体を通しての再起動回数を設定
エポック数と同じにすれば1エポックごとに学習率がリセットされる…はず(自信なし)
・Polynominal Power
多項式の方程式のべき乗で0に近いほど攻撃的になる(と思う) 翻訳文まま
大きくすればするほど急激に学習率が0に収束する
・Minimum SNR Gamma
推奨値は5
細部を学習させたい場合は不向きなようなので、その場合はチェックを外す
▽SAVING ARGS
https://scrapbox.io/files/647cfb22bf4771001dd8244e.png
・Output Folder
学習結果の出力先「…」ボタンでフォルダ選択可能
・Output Name
保存時のベースファイル名
6/4現在、設定しないとエラーになるっぽいので設定しましょう
・Save Precision
保存するファイルの精度
特に拘りなければfp16で
・Save As
保存するファイルの種類
特に拘りなければsafetensorsで
・Save Frequency
学習結果を保存する頻度
一定エポックごと、一定ステップごとに結果を保存したい場合に設定
・Save Ratio
学習結果を保存する割合
全体に対して学習結果の保存を割合で設定したい場合に設定
・Save Only Last
ステップまたはエポックを使用して、最後の x モデルのみを保存します
保存頻度を指定すれば機能すると思います
以上、翻訳文まま
最後の方の学習結果だけ欲しい場合に使う物
・Save State
これは、後で再開するためにトレーニング中のモデルの状態を保存する方法です
デフォルトでは、エポックを保存するたびに 1 つ保存されます
以上、翻訳文まま
追加学習をしたい場合に使う物
・Resume State
トレーニングを再開できるようにする前の状態へのフォルダーパス
以上、翻訳文まま
追加学習時に保存してあった学習中ファイルへのパスを指定します
・Save Tag Occurance File
トレーニングの開始時に提供されるすべてのサブセット内のすべてのタグの
書式設定されたリストである txt ファイルを保存します
以上、翻訳文まま
サブセット内のタグの出現頻度などを記録したテキストファイルを一緒に出力する設定
・Save Toml File on Train
学習開始時に設定内容をTomlファイルに保存します
▽BUCKET ARGS
https://scrapbox.io/files/647d0002df41a2001b7be135.png
教師画像のアスペクト比に応じた分類設定
学習時に使用する解像度に関わる設定…?(よく分かってない)
使用する場合は教師画像に応じた設定にした方が良いと思います
詳細はsd-scriptsのドキュメント参照
latentsの事前取得
▽NOISE OFFSET ARGS
https://scrapbox.io/files/647d0249b0cfe6001c4dfc52.png
この記事の実装らしいです
暗くしたり明るくしたり出来る…?
詳細はsd-scriptsのドキュメント参照
学習に関する設定
▽SAMPLE ARGS
https://scrapbox.io/files/647d03f38cdbdb001b045d07.png
サンプル出力に関する設定
見たまんまなので説明は割愛
▽LOGGING ARGS
https://scrapbox.io/files/647d04718cdbdb001b045f98.png
ログ出力に関する設定
ログを見ながら設定詰めるような玄人向けなので説明は割愛
キューイング
https://scrapbox.io/files/647d05369096c7001b68e0ea.png
キューを使って学習を連続で行えます
「ADD TO QUEUE」で現在の設定・データセットをキューに追加
「REMOVE FROM QUEUE」で選択しているキューを削除します
右矢印(>)、左矢印(<)でキューの順番変更が出来ます
使い方としては
・複数のLoRAを一気に作る
・ちょっとずつ設定を変えた内容で学習結果を出力する
など
基本的に単一LoRAを作る場合は使う必要ないです