Skip to content

Releases: kohya-ss/sd-scripts

Version 0.3.1

21 Jan 03:17
cae4272
Compare
Choose a tag to compare

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 if max_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 is 0.0 like following.

    • lora_te_text_model_encoder_layers_11_* is not trained with clip_skip=2, so 0.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

15 Jan 03:49
c2c1261
Compare
Choose a tag to compare

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 in train_db.py is removed. Please use DreamBooth with captions or fine_tune.py.
  • The Hypernet feature in fine_tune.py is removed, will be implemented in train_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 like style1_000001.ckpt (or .safetensors) for each epoch and style1.ckpt for last.
    • If ommitted (default), same to previous. epoch-000001.ckpt and last.ckpt.
  • 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 and epoch-000002.ckpt is removed.

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.
  • Added cache_latents and color_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.pyfine_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_latentscolor_augオプションを追加しました。

train_network.py

  • --gradient_checkpointingがU-NetとText Encoderにも有効になりました。
    • メモリ消費が減ります。バッチサイズを大きくできますが、トータルでの学習時間は長くなるかもしれません。
    • dimension=4のLoRAはバッチサイズ1で6GB VRAMで学習できるかもしれません。

ドキュメントは未更新ですが少しずつ更新の予定です。

Version 0.2.0

02 Jan 09:58
bda0e83
Compare
Choose a tag to compare

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.

18 Dec 06:00
Compare
Choose a tag to compare

Same as:
train_db_fixed: v18
diffusers_fine_tunining: v9
gen_img_diffusers: v9