Kohya's GUIでLoRAの学習をする
参考
Windowsでインストール
依存関係
$ git clone https://github.com/bmaltais/kohya_ss.git
$ cd kohya_ss
フォルダ内の setup.bat
をダブルクリック
いくつか質問されるので選択する(選択肢は数字キー(0, 1, 2...)で選べるよ)
This machine
No distributed training
NO
>torch dynamoでスクリプトを最適化しますか?
NO
NO
>このマシンでのトレーニングに使用するGPU(idによる)をカンマ区切りでご記入ください。
グラボが1個しかなければ all

の場合RTX3070はBF16に対応しているので
BF16
を選択
(オプション)CUDNN 8.6のダウンロードとインストール
NVIDIA 30X0/40X0を持っていれば使える
からcuDNN v8.6.0をダウンロード
解凍して cudnn_windows
にリネーム
kohya_ssフォルダに置く
ターミナルでkohya_ssフォルダに移動して以下を実行
$ .\venv\Scripts\activate
$ python .\tools\cudann_1.8_install.py
ここあんまり自信ない

アップグレード
upgrade.bat
をダブルクリック
実行する
gui-user.bat
をダブルクリック
今はgui.batしかない

表示されたURLをブラウザで開く
素材の準備
画像を用意する
少なくとも512×512以上、できる限り高画質
Topaz Gigapixel等で解像度を上げる方法もある
縦横比は気にしなくて良い
いらない部分はトリミング
画像の枚数は8の倍数が良い
そうなんだ

ステップ数がバッチ数で綺麗に割り切れる数であれば良いのかな

ステップ数 = 画像数 × リピート × epochs
👍ステップ数 % バッチ数 = 0
キャプションをつける
Kohya's GUIの Utilities
にBLIP等を使った自動キャプション生成機能がある
BLIPの性能がイマイチなので実写でもWD14-taggerを使ってもいいかもしれない
Basic Captioning
に移動してテキストファイルの先頭に quoria-san,
をつける
画像の横にキャプションが書かれたtxtファイルが生成されている
画像と比較しながら、妥当かどうか調べ、必要があれば編集する
とても面倒くさい


トレーニング設定
Dreambooth LoRA欄に移動

がkohyaでやったときにはNAIの手法の方でやったのでこの辺りから違いそう
📁Source model
ベースに使うモデルを選択
フォーマットを選択
🟩v2 / 🟩v_parameterization はSD 2.X系を選んだときに必要
📁Folders
Image folder
さっき作った学習用素材を指定する
が、ちょっとややこしい
ディレクトリ構造📁適当なフォルダ
└ 📁img
└ 📁100_quoria-san
└ 🖼️📄作った画像とtxtファイル達
🚨imgフォルダのパスを指定する
$ C:/AI/SD 追加学習素材/LoRA/img
100_quoria-san
の100は繰り返しの回数
学習画像が15枚以上なら100
それ以下なら1500/画像の枚数を入れる
これもとのスクリプトでもそうなんですかね?指定した記憶がない…

Kohya's GUIでいう 100 × 画像枚数 × バッチ数が
がmax_train_stepsなのかな
🚨更新
100回回したモデルを一つ作るよりも、10回刻みで回したモデルを10個作る方が都合が良い
今は
15_フォルダ名
にして下のEpoch数を15に、つまり
15×15=225
回してます

Regularisation folder
(
正則化画像)
🤔

ディレクトリ構成📁適当なフォルダ
└ 📁classification
└ 📁1_car
└ 🖼️画像
上のimgと同じでclassificationのパスを指定する
Output folder
どこでも良いが、Stable Diffusion web UIのLoRAフォルダーにしておくと楽
$ ~~\stable-diffusion-webui\models\Lora
Logging folder
学習ログを置くフォルダ
これもどこでも良いけれど、imgフォルダの横に置くといいかも?
Model output name
好きなモデル名
📁Training parameters
LoRA type
LoRA / LoCoN / LoHAの指定ができる
Train batch size
処理を並行して行う
2なら、ステップ数が半分になる
増やせば早くトレーニングが終わるが、損失が増え(て失敗す)るため、元画像が膨大でないなら1or2で良い
Epoch
何回学習を回すか?
1回学習ごとにLoRAモデルが作られる
10にすると10個モデルができるため、XYプロットで過学習の判別ができる
15回くらいにしておく
>Kohya_ss LoRAは途中で中断して再開という機能がない
Max train epoch
Max train steps
Save every N epochs
Caption Extension
キャプションファイルはテキスト形式で作ったので .txt
を入れる
Mixed precision
Save precision
bf16が使える人も互換性のために
fp16にしたほうが良い?
Cache latents
Cache latents to disk
Optimizer
LR scheduler extra arguments
Optimizer extra arguments
LR number of cycles
LR power
Seed
(デフォルト 1234)
再現性のために1234のままにしておくのが良い
以下鬼門
よく分からないのでとりあえずコピペ

Learning rate
0.0001
LR Scheduler
cosine_with_restarts
Text Encoder learning rate
3e-5
Network Rank(Dimension)
/ Network Alpha
128
Max resolution
(デフォルト 512,512)
512,512
Enable buckets
(デフォルト ✅)
✅が入っていると、アスペクト比がバラバラでも学習できる
🔻Advanced Configuration
Clip skip
リアル系なら1 アニメ系なら2 が良い?
Use 8bit adam
(デフォルト ✅)
使わないほうが良いらしい
なくなった?

Bucket resolution steps
(デフォルト 64)
32
さっぱり意味がわからなかった

解像度を何の倍数にするか決める。VAEが8分の1にするので最低でも8の倍数にした方が良い。
minとmax指定になってる,さっぱりわからない

Random crop instead of center crop
(デフォルト 🟩)
✅
学習をする度にクロップする位置をちょっとずつ変える?
といいことがあるらしい???
Noise offset(0-1)
おそらく0.1で良い
Rate of caption dropout
(デフォルト 0)
0.1
学習する度に10%の確率でキャプションが弾かれる
といいことがあるらしい???
Max num workers for DataLoader
0
処理が早くなるらしい
一番上に戻ってConfiguration file(設定ファイル)
しっかり保存しておきましょう
.jsonを忘れずにつけて Save💾
トレーニング開始
Train model
ボタンを押してトレーニングを開始する
ターミナルの表示を確認してちゃんと開始されたかを確認
学習時間 : バッチサイズ1 3200ステップで45分
すごい短い?

バッチサイズ2 10000ステップで6-7時間かかった
CUDNN入れないとダメなのかなぁ
バッチサイズ2で10000ステップは多いですね…

バッチサイズ2の4800ステップで2時間半強だったので、それくらいかかるかも
なるほど

ステップの間の待ち時間?が結構長いのがやっていて気になりました
GPUがしばかれてない時間が半分ぐらいある
ログを見る
Train modelの下にある Start tensorboard
を押すと、ログファイルをもとにしたグラフを表示できる
使ってみる
左のprompt
ACertainModelqualia-san, 1girl,Highly Detailed,looking at viewer,upper body,from front,bangs,wide view ,chibi, full body, wearing kimono <lora:qualia-san_v1.0:0.7>
すごい

2023/4/16
各所修正

Kohya's GUIはLoRA以外もできるのでタイトルを変更