Releases: kohya-ss/sd-scripts
Version 0.3.1
Updates at 19 Jan. 2023, 2023/1/19
-
Fix a part of LoRA modules are not trained when
gradient_checkpointing
is enabled. -
Add
--save_last_n_epochs_state
option. You can specify how many state folders to keep, apart from how many models to keep. Thanks to shirayu! -
Fix Text Encoder training stops at
max_train_steps
even ifmax_train_epochs
is set in `train_db.py``. -
Added script to check LoRA weights. You can check weights by
python networks\check_lora_weights.py <model file>
. If some modules are not trained, the value is0.0
like following.lora_te_text_model_encoder_layers_11_*
is not trained withclip_skip=2
, so0.0
is okay for these modules.
-
一部のLoRAモジュールが
gradient_checkpointing
を有効にすると学習されない不具合を修正しました。ご不便をおかけしました。 -
--save_last_n_epochs_state
オプションを追加しました。モデルの保存数とは別に、stateフォルダの保存数を指定できます。shirayu氏に感謝します。 -
train_db.py
で、max_train_epochs
を指定していても、max_train_steps
のステップでText Encoderの学習が停止してしまう不具合を修正しました。 -
LoRAの重みをチェックするスクリプトを追加してあります。
python networks\check_lora_weights.py <model file>
のように実行してください。学習していない重みがあると、値が 下のように0.0
になります。lora_te_text_model_encoder_layers_11_
で始まる部分はclip_skip=2
の場合は学習されないため、0.0
で正常です。
-
example result of
check_lora_weights.py
, Text Encoder and a part of U-Net are not trained:
number of LoRA-up modules: 264
lora_te_text_model_encoder_layers_0_mlp_fc1.lora_up.weight,0.0
lora_te_text_model_encoder_layers_0_mlp_fc2.lora_up.weight,0.0
lora_te_text_model_encoder_layers_0_self_attn_k_proj.lora_up.weight,0.0
:
lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_ff_net_0_proj.lora_up.weight,0.0
lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_ff_net_2.lora_up.weight,0.0
lora_unet_mid_block_attentions_0_proj_in.lora_up.weight,0.003503334941342473
lora_unet_mid_block_attentions_0_proj_out.lora_up.weight,0.004308608360588551
:
- all modules are trained:
number of LoRA-up modules: 264
lora_te_text_model_encoder_layers_0_mlp_fc1.lora_up.weight,0.0028684409335255623
lora_te_text_model_encoder_layers_0_mlp_fc2.lora_up.weight,0.0029794853180646896
lora_te_text_model_encoder_layers_0_self_attn_k_proj.lora_up.weight,0.002507600700482726
lora_te_text_model_encoder_layers_0_self_attn_out_proj.lora_up.weight,0.002639499492943287
:
Updates at 15 Jan. 2023, 2023/1/15
- Added
--max_train_epochs
and--max_data_loader_n_workers
option for each training script. - If you specify the number of training epochs with
--max_train_epochs
, the number of steps is calculated from the number of epochs automatically. - You can set the number of workers for DataLoader with
--max_data_loader_n_workers
, default is 8. The lower number may reduce the main memory usage and the time between epochs, but may cause slower dataloading (training). --max_train_epochs
と--max_data_loader_n_workers
のオプションが学習スクリプトに追加されました。--max_train_epochs
で学習したいエポック数を指定すると、必要なステップ数が自動的に計算され設定されます。--max_data_loader_n_workers
で DataLoader の worker 数が指定できます(デフォルトは8)。値を小さくするとメインメモリの使用量が減り、エポック間の待ち時間も短くなるようです。ただしデータ読み込み(学習時間)は長くなる可能性があります。
Version 0.3.0
Updates at January 14, 2023, 2023/1/14
- Fix loading some VAE or .safetensors as VAE is failed for
--vae
option. Thanks to Fannovel16! - Add negative prompt scaling for
gen_img_diffusers.py
You can set another conditioning scale to the negative prompt with--negative_scale
option, and--nl
option for the prompt. Thanks to laksjdjf! --vae
オプションに一部のVAEや .safetensors 形式のモデルを指定するとエラーになる不具合を修正しました。Fannovel16氏に感謝します。gen_img_diffusers.py
に、ネガティブプロンプトに異なる guidance scale を設定できる--negative_scale
オプションを追加しました。プロンプトからは--nl
で指定できます。laksjdjf氏に感謝します。
Updates at January 12, 2023, 2023/1/12
- Metadata is saved on the model (.safetensors only) (model name, VAE name, training steps, learning rate etc.) The metadata will be able to inspect by sd-webui-additional-networks extension in near future. If you do not want to save it, specify
no_metadata
option. - メタデータが保存されるようになりました( .safetensors 形式の場合のみ)(モデル名、VAE 名、ステップ数、学習率など)。近日中に拡張から確認できるようになる予定です。メタデータを保存したくない場合は
no_metadata
オプションをしてしてください。
Updates at Jan 9. 2023
All training scripts are updated.
Breaking Changes
- The
fine_tuning
option intrain_db.py
is removed. Please use DreamBooth with captions orfine_tune.py
. - The Hypernet feature in
fine_tune.py
is removed, will be implemented intrain_network.py
in future.
Features, Improvements and Bug Fixes
for all script: train_db.py, fine_tune.py and train_network.py
- Added
output_name
option. The name of output file can be specified.- With
--output_name style1
, the output file is likestyle1_000001.ckpt
(or.safetensors
) for each epoch andstyle1.ckpt
for last. - If ommitted (default), same to previous.
epoch-000001.ckpt
andlast.ckpt
.
- With
- Added
save_last_n_epochs
option. Keep only latest n files for the checkpoints and the states. Older files are removed. (Thanks to shirayu!)- If the options are
--save_every_n_epochs=2 --save_last_n_epochs=3
, in the end of epoch 8,epoch-000008.ckpt
is created andepoch-000002.ckpt
is removed.
- If the options are
train_db.py
- Added
max_token_length
option. Captions can have more than 75 tokens.
fine_tune.py
- The script now works without .npz files. If .npz is not found, the scripts get the latents with VAE.
- You can omit
prepare_buckets_latents.py
in preprocessing. However, it is recommended if you train more than 1 or 2 epochs. --resolution
option is required to specify the training resolution.
- You can omit
- Added
cache_latents
andcolor_aug
options.
train_network.py
- Now
--gradient_checkpointing
is effective for U-Net and Text Encoder.- The memory usage is reduced. The larger batch size is avilable, but the training speed will be slow.
- The training might be possible with 6GB VRAM for dimension=4 with batch size=1.
Documents are not updated now, I will update one by one.
更新情報 (2023/1/9)
学習スクリプトを更新しました。
削除された機能
train_db.py
のfine_tuning
は削除されました。キャプション付きの DreamBooth またはfine_tune.py
を使ってください。fine_tune.py
の Hypernet学習の機能は削除されました。将来的にtrain_network.py
に追加される予定です。
その他の機能追加、バグ修正など
学習スクリプトに共通: train_db.py, fine_tune.py and train_network.py
output_name
オプションを追加しました。保存されるモデルファイルの名前を指定できます。--output_name style1
と指定すると、エポックごとに保存されるファイル名はstyle1_000001.ckpt
(または.safetensors
) に、最後に保存されるファイル名はstyle1.ckpt
になります。- 省略時は今までと同じです(
epoch-000001.ckpt
およびlast.ckpt
)。
save_last_n_epochs
オプションを追加しました。最新の n ファイル、stateだけ保存し、古いものは削除します。(shirayu氏に感謝します。)- たとえば
--save_every_n_epochs=2 --save_last_n_epochs=3
と指定した時、8エポック目の終了時には、epoch-000008.ckpt
が保存されepoch-000002.ckpt
が削除されます。
- たとえば
train_db.py
max_token_length
オプションを追加しました。75文字を超えるキャプションが使えるようになります。
fine_tune.py
- .npzファイルがなくても動作するようになりました。.npzファイルがない場合、VAEからlatentsを取得して動作します。
prepare_buckets_latents.py
を前処理で実行しなくても良くなります。ただし事前取得をしておいたほうが、2エポック以上学習する場合にはトータルで高速です。- この場合、解像度を指定するために
--resolution
オプションが必要です。
cache_latents
とcolor_aug
オプションを追加しました。
train_network.py
--gradient_checkpointing
がU-NetとText Encoderにも有効になりました。- メモリ消費が減ります。バッチサイズを大きくできますが、トータルでの学習時間は長くなるかもしれません。
- dimension=4のLoRAはバッチサイズ1で6GB VRAMで学習できるかもしれません。
ドキュメントは未更新ですが少しずつ更新の予定です。
Version 0.2.0
Features
- Add LoRA support: trained LoRA models can be used with the extension for 1111's web UI.
- Make BLIP captioning not to require extra downloading.
- Fix bugs.
What's Changed
- Proposed file structure rework and required file changes by @bmaltais in #1
- Make BLIP working without extra downloading. etc. by @kohya-ss in #2
- Merge requirements by @bmaltais in #3
- Fix relative path to train dir is not working. etc. by @kohya-ss in #7
- Fix text encoder training is not stopped #4 by @kohya-ss in #8
- Fix conversion error for v1 Diffusers->ckpt. #10 by @kohya-ss in #11
- Fix npz file name for images with dots #12 by @kohya-ss in #13
- Add LoRA training/generating. by @kohya-ss in #16
- set default dataset_repeats to 1, resolution check by @kohya-ss in #22
- Fix typos by @shirayu in #25
- rename another position_ids key (supports wd v1.4) by @kohya-ss in #29
New Contributors
Full Changelog: v0.1.0...v0.2.0
First release.
Same as:
train_db_fixed: v18
diffusers_fine_tunining: v9
gen_img_diffusers: v9