見出し画像

SDXL1.0のLoRA作成メモ (RTX3060 12GB)


SDXL1.0でLoRA作りました

見出しの通り、7/27に公開されたSDXL1.0でLoRAを作成しました。

こんな感じのケモキャラ生成LoRAです。

サンドイッチを食べるチビケモちゃん

私自身はそれほどLoRA作成に手慣れているわけでもなく、経験も少ないですが、とりあえず出来たは出来たということで、設定値等を共有したいと思います。
(細かい部分はあまり分かっていないので聞かれても答えられないと思います。雰囲気でAIをやっている。)

使用したグラフィックボード

RTX3060 12GBで作成しています。

SDXLのLoRA作成はSD1系よりもメモリ容量が必要です。
(これはマージ等も同じ)
ですので、1系で実行出来ていた設定ではメモリが足りず、より低VRAMな設定にする必要がありました。

学習に使用した素材

1系で使用した画像データをそのまま流用しました。
過去に1系/2系でLoRA作成をしたことがある方は設定値を変えるだけで、そのまま試すことが出来ると思います。
ちなみに、1系バージョンのLoRAはこちら。

実行コマンド全文

変に細かく書いても分かりづらいと思うので、
コマンド丸ごとごそっと貼っちゃいます。
実行自体はKohya_ss GUIから行っています。

accelerate launch --num_cpu_threads_per_process=2 "./sdxl_train_network.py" --enable_bucket --min_bucket_reso=256 --max_bucket_reso=2048 --pretrained_model_name_or_path="E:/ComfyUI/models/checkpoints/sd_xl_base_1.0.safetensors" --train_data_dir="E:/kohya_ss/training/ToraFurry/images" --resolution="1024,1024" --output_dir="E:/kohya_ss/training/ToraFurry/output/XL_p1-v1" --logging_dir="E:/kohya_ss/training/ToraFurry/log" --network_alpha="1" --save_model_as=safetensors --network_module=networks.lora --unet_lr=0.0001 --network_train_unet_only --network_dim=32 --output_name="ToraFurry_XL_p1-v1" --lr_scheduler_num_cycles="400" --cache_text_encoder_outputs --no_half_vae --learning_rate="4e-07" --lr_scheduler="constant_with_warmup" --lr_warmup_steps="1200" --train_batch_size="1" --max_train_steps="12000" --save_every_n_epochs="20" --mixed_precision="fp16" --save_precision="fp16" --seed="1234" --caption_extension=".txt" --cache_latents --cache_latents_to_disk --optimizer_type="Adafactor" --optimizer_args scale_parameter=False relative_step=False warmup_init=False --max_data_loader_n_workers="0" --keep_tokens="1" --bucket_reso_steps=64 --gradient_checkpointing --xformers --bucket_no_upscale

慎重を期してtrain_batch_size="1"になっていますが、
後日"4"でもいけました。
所要時間はbatch_size1で8時間程度だったので、
4なら2時間程度で済むはずです。

Tips

ここからはちょっとしたメモです。

SDXL用の推奨設定値

GitHubにSDXLのトレーニングに関するガイドが載っています。
まずはこちらを見ると良いと思います。

GUIを使っている場合、Guidesタブにも同様の記載があります。

GUIでの設定個所

赤ラインはGuidesにあるSDXLでの推奨設定です。
黄ラインは私が手当たり次第に入れた低VRAM設定です。
(合ってるかはともかく動いた)

lr_warmup_stepsは推奨100なんですが10でやっちゃいました・・・。
でもコマンド見ると--lr_warmup_steps="1200"になっている。よく分からない。
Text Encoder learning rateを0にすることで、--train_unet_onlyとなる。
Gradient checkpointing=trueは私環境では低VRAMの決め手でした。Cache text encoder outputs=trueにするとShuffle captionは使えませんでした。他にもいくつかの項目が使えなくなるようです。

最後に

とりあえず勢いで作ったので、これが最適解かは分かりませんが、設定でどうにも詰まっている方のヒント等になれば幸いです。


追記(8/1 11:30)

hugging faceにkohya_ss GUIの学習設定用jsonファイル置きました。
GUIで読み込めば上に書いた実行コマンドを再現できます。

この記事が気に入ったらサポートをしてみませんか?