概要
前回解説したsd-scriptsのテンプレートで使いまわせる.windosで使えるBatファイルの作り方です。
Batファイルはコマンドプロンプトのコマンド(命令)をファイルに保存しておいて、実行することで毎回コマンドを書かなくて済むテンプレートを作ることができます。
今回はsdxlのlora学習設定です。
前回のインストールしたフォルダを開きます。
テキストファイルを新規作成します。
テキストファイルの名前を拡張子(.txt)を含めてlora.batに変更します。
lora.batファイルをメモ帳で開きます。
rem sd-scriptsのパス 自身の環境に合わせて変更してください
set venv_path="I:\demo\sd-scripts"を入力
set image_path="I:\demo\dataset"
set output_path="I:\demo\output"
set input_reg_data_dir=" "
上から学習フォルダ・出力したlroaの保存フォルダ,正規化フォルダ、正則化(使うときはフォルダ名を指定)の設定です。
set file_prefix="flog"
set ckpt_file="I:\demo\StableDiffusion\anyillustriousXLWith_10.safetensors"
学習したファイルの名前の設定と、lora学習に使うベースモデルの設定。
cd /d %venv_path%
call .venv\Scripts\activate.bat
仮想環境のあるフォルダに移動して仮想環境に入ります。
set train_batch_size=3
set num_epochs=8
set save_every_n_epochs=1
set learning_rate=6.5e-3
上から順番に
バッチ処理(同時に何個処理するか)
エポック設定(同じ設定を何セットするか)
Learning rate(どれだけの強さで学習するか)
call :main
pause
exit
main処理を呼び出して実行していったん止めてコマンドプロンプトの処理を終える
:main
accelerate launch --num_cpu_threads_per_process 4 sdxl_train_network.py ^
--network_module networks.lora^
--pretrained_model_name_or_path=%ckpt_file% ^
--train_data_dir=%image_path% ^
--reg_data_dir=%input_reg_data_dir%^
--output_dir=%output_path% ^
--caption_extension=".txt" ^
--resolution=1024,1024 ^
--min_bucket_reso=64 ^
--max_bucket_reso=3580 ^
--min_snr_gamma 5^
--network_dropout 0.1^
--noise_offset 0.03^
--prior_loss_weight 1^
--train_batch_size=%train_batch_size% ^
--unet_lr=%learning_rate% ^
--text_encoder_lr=%learning_rate% ^
--learning_rate=0.0 ^
--max_train_epochs=%num_epochs% ^
--save_every_n_epochs=%save_every_n_epochs% ^
--mixed_precision="bf16" ^
--shuffle_caption ^
--save_precision="bf16" ^
--huber_c=0.1^
--loss_type l2^
--max_grad_norm 1^
--max_token_length 225^
--max_train_steps 1500^
--lr_scheduler="cosine_with_restarts"^
--sdpa ^
--max_data_loader_n_workers=10 ^
★--sdpa ^は--xformersと同じような高速化する処理です。置換して使うことも可能です。★
--save_model_as=safetensors ^
--output_name=%file_prefix% ^
--seed=42 ^
--network_dim=16 ^
--lr_warmup_steps=280 ^
--huber_schedule "snr"^
--network_alpha=4^
--optimizer_type="AdamW8bit"^
--optimizer_args "weight_decay=0.12" "betas=0.9,0.99" ^
--keep_tokens=2^
--gradient_checkpointing ^
--cache_latents ^
--fp8_base^
--persistent_data_loader_workers ^
--enable_bucket ^
--sample_every_n_steps=10 ^
--sample_prompts="I:\demo\sample.txt"^
--sample_sampler="k_euler_a"
★--persistent_data_loader_workers ^ から --sample_sampler="k_euler_a" までは学習途中の画像を生成する設定です。
もし必要がなければその範囲を削除すればサンプル処理分時短できます。★
--exit /b
:main から 始まる処理の終わりの処理です。
control + sまたは保存で.batファイルの構築完了です。お疲れさまでした。
おまけ漫画