概要
前回 kohya_ss webui を使って sd-scripts が実行できる環境を用意しました
今回は kohya_ss webui を使って LoRA 学習してみたいと思います
環境
- macOS 14.5
- kohya_ss (24.1.4 5ed5623)
- Python 3.10.13
画像の準備
今回は 512x512 画像を 4 枚用意しました
枚数は多ければ多いほど良いですが画像が多いとそれだけ学習時間もかかります
また M2 mac mini のスペックにも影響しており画像が多いとメモリを多大に消費するため可能な限り少なく効率の良い画像を学習させるのが良いかなと思います
作成した画像は今回は ~/Downloads/data/5_hawksnowlog
というディレクトリ配下に配置します
ポイントはディレクトリ名で 学習回数_識別名
という感じで指定しないと sd-scripts が画像を発見できません
学習回数は学習させる枚数をかけた分影響するので学習回数が多いと学習にかかる時間も線形的に増えるので注意しましょう
タグ情報の準備
なくても OK ですがあったほうがいいと思います
こちらを参考に抽出/付与しましょう
また何か独自のタグをいれるとより LoRA で学習させたモデルを強調することができます
パラメータの設定
まずは LoRA タブに移動します
そして各種パラメータを設定していきます
WebUI 上でも OK です
M2 上で動作させるには以下の設定が必須です
- Image folder (containing training images subfolders) -> ~/Downloads/data
- Trained Model output name -> 5_hawksnowlog
- Output directory for trained model -> model
- Mixed precision -> no
- Optimizer -> AdamW
- CrossAttention -> none
- Save precision -> float
- Max train steps -> 200 (ここも学習時間に影響するので適宜変更
デフォルトでは見えない設定もあるのですべての項目を一度開いて設定項目名で研削すれば見つかるはずです
sd-scripts の実行には設定ファイルが必要ですが kohya_ss は webui で設定した値から自動で toml 設定ファイルを作成してくれます
最終的には実行後に以下の設定ファイルが model 配下にあれば OK です
bucket_no_upscale = true
bucket_reso_steps = 64
cache_latents = true
caption_extension = ".txt"
clip_skip = 1
dynamo_backend = "no"
enable_bucket = true
epoch = 1
gradient_accumulation_steps = 1
huber_c = 0.1
huber_schedule = "snr"
learning_rate = 0.0001
logging_dir = "log"
loss_type = "l2"
lr_scheduler = "cosine"
lr_scheduler_args = []
lr_scheduler_num_cycles = 1
lr_scheduler_power = 1
lr_warmup_steps = 160
max_bucket_reso = 2048
max_data_loader_n_workers = 0
max_grad_norm = 1
max_timestep = 1000
max_token_length = 75
max_train_steps = 200
min_bucket_reso = 256
mixed_precision = "no"
multires_noise_discount = 0.3
network_alpha = 1
network_args = []
network_dim = 8
network_module = "networks.lora"
noise_offset_type = "Original"
optimizer_args = []
optimizer_type = "AdamW"
output_dir = "model"
output_name = "5_hawksnowlog"
pretrained_model_name_or_path = "runwayml/stable-diffusion-v1-5"
prior_loss_weight = 1
resolution = "512,512"
sample_prompts = "model/prompt.txt"
sample_sampler = "euler_a"
save_every_n_epochs = 1
save_model_as = "safetensors"
save_precision = "float"
text_encoder_lr = 0.0001
train_batch_size = 1
train_data_dir = "/Users/hawksnowlog/Downloads/data"
unet_lr = 0.0001
xformers = false
実行
WebUI で実行する場合は「Start training」で OK です
安定しない場合はコマンドでも OK です
toml ファイルは webui が生成したもので大丈夫ですが値が間違っている場合は手動で toml ファイルを変更して学習を開始しましょう
- cd kohya_ss
-
/Users/username/Documents/work/kohya_ss_3_10_13/venv/bin/python /Users/username/Documents/work/kohya_ss_3_10_13/sd-scripts/train_network.py --config_file model/config_lora-20240530-131543.toml
動作確認
4 ファイルで 5 回の学習回数でステップ数 200 にしてだいたい 30 分ほどで完了しました
かなり少なめで学習させたのでもう少し画像を増やしたり学習回数を増やしてもいいかもしれません
学習が完了すると model/5_hawksnowlog.safetensors
ができています
最後に
M2 mac mini 上で Stable Diffusion のモデルを LoRA で Fine-Tuning してみました
内部的には sd-scripts という学習ツールを webui で叩いているだけなので直接 sd-scripts を触ってしまっても OK です
次回は作成した LoRA を使って sd-webui 上で LoRA の動作確認をしてみたいと思います
トラブルシューティング
libc++abi: terminating due to uncaught exception of type NSException
なぜか webui から学習が開始できなくなってしまう状況が発生しました
バックグラウンドで何か動いてしまっているのでマシンを再起動してあげれば解消しました
output_name で指定したモデルがすでにあると発生するようです、名前を変更してあげましょう
AttributeError: module 'torch' has no attribute 'compiler'
なぜか xformers ディレクトリが作成されており参照してしまっているので削除しましょう
-
rm -rf ./venv/lib/python3.10/site-packages/xformers*
0 件のコメント:
コメントを投稿