Releases: kohya-ss/sd-scripts
Version 0.8.7
Apr 7, 2024 / 2024-04-07: v0.8.7
-
The default value of
huber_schedule
in Scheduled Huber Loss is changed fromexponential
tosnr
, which is expected to give better results. -
Scheduled Huber Loss の
huber_schedule
のデフォルト値をexponential
から、より良い結果が期待できるsnr
に変更しました。
Version 0.8.6
Apr 7, 2024 / 2024-04-07: v0.8.6
Highlights
- The dependent libraries are updated. Please see Upgrade and update the libraries.
- Especially
imagesize
is newly added, so if you cannot update the libraries immediately, please install withpip install imagesize==1.4.1
separately. bitsandbytes==0.43.0
,prodigyopt==1.0
,lion-pytorch==0.0.6
are included in the requirements.txt.bitsandbytes
no longer requires complex procedures as it now officially supports Windows.
- Also, the PyTorch version is updated to 2.1.2 (PyTorch does not need to be updated immediately). In the upgrade procedure, PyTorch is not updated, so please manually install or update torch, torchvision, xformers if necessary (see Upgrade PyTorch).
- Especially
- When logging to wandb is enabled, the entire command line is exposed. Therefore, it is recommended to write wandb API key and HuggingFace token in the configuration file (
.toml
). Thanks to bghira for raising the issue.- A warning is displayed at the start of training if such information is included in the command line.
- Also, if there is an absolute path, the path may be exposed, so it is recommended to specify a relative path or write it in the configuration file. In such cases, an INFO log is displayed.
- See #1123 and PR #1240 for details.
- Colab seems to stop with log output. Try specifying
--console_log_simple
option in the training script to disable rich logging. - Other improvements include the addition of masked loss, scheduled Huber Loss, DeepSpeed support, dataset settings improvements, and image tagging improvements. See below for details.
Training scripts
train_network.py
andsdxl_train_network.py
are modified to record some dataset settings in the metadata of the trained model (caption_prefix
,caption_suffix
,keep_tokens_separator
,secondary_separator
,enable_wildcard
).- Fixed a bug that U-Net and Text Encoders are included in the state in
train_network.py
andsdxl_train_network.py
. The saving and loading of the state are faster, the file size is smaller, and the memory usage when loading is reduced. - DeepSpeed is supported. PR #1101 and #1139 Thanks to BootsofLagrangian! See PR #1101 for details.
- The masked loss is supported in each training script. PR #1207 See Masked loss for details.
- Scheduled Huber Loss has been introduced to each training scripts. PR #1228 Thanks to kabachuha for the PR and cheald, drhead, and others for the discussion! See the PR and Scheduled Huber Loss for details.
- The options
--noise_offset_random_strength
and--ip_noise_gamma_random_strength
are added to each training script. These options can be used to vary the noise offset and ip noise gamma in the range of 0 to the specified value. PR #1177 Thanks to KohakuBlueleaf! - The options
--save_state_on_train_end
are added to each training script. PR #1168 Thanks to gesen2egee! - The options
--sample_every_n_epochs
and--sample_every_n_steps
in each training script now display a warning and ignore them when a number less than or equal to0
is specified. Thanks to S-Del for raising the issue.
Dataset settings
- The English version of the dataset settings documentation is added. PR #1175 Thanks to darkstorm2150!
- The
.toml
file for the dataset config is now read in UTF-8 encoding. PR #1167 Thanks to Horizon1704! - Fixed a bug that the last subset settings are applied to all images when multiple subsets of regularization images are specified in the dataset settings. The settings for each subset are correctly applied to each image. PR #1205 Thanks to feffy380!
- Some features are added to the dataset subset settings.
secondary_separator
is added to specify the tag separator that is not the target of shuffling or dropping.- Specify
secondary_separator=";;;"
. When you specifysecondary_separator
, the part is not shuffled or dropped.
- Specify
enable_wildcard
is added. When set totrue
, the wildcard notation{aaa|bbb|ccc}
can be used. The multi-line caption is also enabled.keep_tokens_separator
is updated to be used twice in the caption. When you specifykeep_tokens_separator="|||"
, the part divided by the second|||
is not shuffled or dropped and remains at the end.- The existing features
caption_prefix
andcaption_suffix
can be used together.caption_prefix
andcaption_suffix
are processed first, and thenenable_wildcard
,keep_tokens_separator
, shuffling and dropping, andsecondary_separator
are processed in order. - See Dataset config for details.
- The dataset with DreamBooth method supports caching image information (size, caption). PR #1178 and #1206 Thanks to KohakuBlueleaf! See DreamBooth method specific options for details.
Image tagging
- The support for v3 repositories is added to
tag_image_by_wd14_tagger.py
(--onnx
option only). PR #1192 Thanks to sdbds!- Onnx may need to be updated. Onnx is not installed by default, so please install or update it with
pip install onnx==1.15.0 onnxruntime-gpu==1.17.1
etc. Please also check the comments inrequirements.txt
.
- Onnx may need to be updated. Onnx is not installed by default, so please install or update it with
- The model is now saved in the subdirectory as
--repo_id
intag_image_by_wd14_tagger.py
. This caches multiple repo_id models. Please delete unnecessary files under--model_dir
. - Some options are added to
tag_image_by_wd14_tagger.py
.- Some are added in PR #1216 Thanks to Disty0!
- Output rating tags
--use_rating_tags
and--use_rating_tags_as_last_tag
- Output character tags first
--character_tags_first
- Expand character tags and series
--character_tag_expand
- Specify tags to output first
--always_first_tags
- Replace tags
--tag_replacement
- See Tagging documentation for details.
- Fixed an error when specifying
--beam_search
and a value of 2 or more for--num_beams
inmake_captions.py
.
About Masked loss
The masked loss is supported in each training script. To enable the masked loss, specify the --masked_loss
option.
The feature is not fully tested, so there may be bugs. If you find any issues, please open an Issue.
ControlNet dataset is used to specify the mask. The mask images should be the RGB images. The pixel value 255 in R channel is treated as the mask (the loss is calculated only for the pixels with the mask), and 0 is treated as the non-mask. The pixel values 0-255 are converted to 0-1 (i.e., the pixel value 128 is treated as the half weight of the loss). See details for the dataset specification in the LLLite documentation.
About Scheduled Huber Loss
Scheduled Huber Loss has been introduced to each training scripts. This is a method to improve robustness against outliers or anomalies (data corruption) in the training data.
With the traditional MSE (L2) loss function, the impact of outliers could be significant, potentially leading to a degradation in the quality of generated images. On the other hand, while the Huber loss function can suppress the influence of outliers, it tends to compromise the reproduction of fine details in images.
To address this, the proposed method employs a clever application of the Huber loss function. By scheduling the use of Huber loss in the early stages of training (when noise is high) and MSE in the later stages, it strikes a balance between outlier robustness and fine detail reproduction.
Experimental results have confirmed that this method achieves higher accuracy on data containing outliers compared to pure Huber loss or MSE. The increase in computational cost is minimal.
The newly added arguments loss_type, huber_schedule, and huber_c allow for the selection of the loss function type (Huber, smooth L1, MSE), scheduling method (exponential, constant, SNR), and Huber's parameter. This enables optimization based on the characteristics of the dataset.
See PR #1228 for details.
loss_type
: Specify the loss function type. Choosehuber
for Huber loss,smooth_l1
for smooth L1 loss, andl2
for MSE loss. The default isl2
, which is the same as before.huber_schedule
: Specify the scheduling method. Chooseexponential
,constant
, orSNR
. The default isexponential
.huber_c
: Specify the Huber's parameter. The default is0.1
.
主要な変更点
- 依存ライブラリが更新されました。アップグレード を参照しライブラリを更新してください。
- 特に
imagesize
が新しく追加されていますので、すぐにライブラリの更新ができない場合はpip install imagesize==1.4.1
で個別にインストールしてください。 bitsandbytes==0.43.0
、prodigyopt==1.0
、lion-pytorch==0.0.6
が requirements.txt に含まれるようになりました。bitsandbytes
が公式に Windows をサポートしたため複雑な手順が不要になりました。
- また PyTorch のバージョンを 2.1.2 に更新しました。PyTorch はすぐに更新する必要はありません。更新時は、アップグレードの手順では PyTorch が更新されませんので、torch、torchvision、xformers を手動でインストールしてください。
- 特に
- wandb ...
Version 0.8.5
Mar 15, 2024 / 2024/3/15: v0.8.5
-
Fixed a bug that the value of timestep embedding during SDXL training was incorrect.
- Please update for SDXL training.
- The inference with the generation script is also fixed.
- This fix appears to resolve an issue where unintended artifacts occurred in trained models under certain conditions.
We would like to express our deep gratitude to Mark Saint (cacoe) from leonardo.ai, for reporting the issue and cooperating with the verification, and to gcem156 for the advice provided in identifying the part of the code that needed to be fixed.
-
SDXL 学習時の timestep embedding の値が誤っていたのを修正しました。
- SDXL の学習時にはアップデートをお願いいたします。
- 生成スクリプトでの推論時についてもあわせて修正しました。
- この修正により、特定の条件下で学習されたモデルに意図しないアーティファクトが発生する問題が解消されるようです。問題を報告いただき、また検証にご協力いただいた leonardo.ai の Mark Saint (cacoe) 氏、および修正点の特定に関するアドバイスをいただいた gcem156 氏に深く感謝いたします。
Version 0.8.4
Feb 24, 2024 / 2024/2/24: v0.8.4
-
The log output has been improved. PR #905 Thanks to shirayu!
- The log is formatted by default. The
rich
library is required. Please see Upgrade and update the library. - If
rich
is not installed, the log output will be the same as before. - The following options are available in each training script:
--console_log_simple
option can be used to switch to the previous log output.--console_log_level
option can be used to specify the log level. The default isINFO
.--console_log_file
option can be used to output the log to a file. The default isNone
(output to the console).
- The log is formatted by default. The
-
The sample image generation during multi-GPU training is now done with multiple GPUs. PR #1061 Thanks to DKnight54!
-
The support for mps devices is improved. PR #1054 Thanks to akx! If mps device exists instead of CUDA, the mps device is used automatically.
-
The
--new_conv_rank
option to specify the new rank of Conv2d is added tonetworks/resize_lora.py
. PR #1102 Thanks to mgz-dev! -
An option
--highvram
to disable the optimization for environments with little VRAM is added to the training scripts. If you specify it when there is enough VRAM, the operation will be faster.- Currently, only the cache part of latents is optimized.
-
The IPEX support is improved. PR #1086 Thanks to Disty0!
-
Fixed a bug that
svd_merge_lora.py
crashes in some cases. PR #1087 Thanks to mgz-dev! -
DyLoRA is fixed to work with SDXL. PR #1126 Thanks to tamlog06!
-
The common image generation script
gen_img.py
for SD 1/2 and SDXL is added. The basic functions are the same as the scripts for SD 1/2 and SDXL, but some new features are added.- External scripts to generate prompts can be supported. It can be called with
--from_module
option. (The documentation will be added later) - The normalization method after prompt weighting can be specified with
--emb_normalize_mode
option.original
is the original method,abs
is the normalization with the average of the absolute values,none
is no normalization.
- External scripts to generate prompts can be supported. It can be called with
-
Gradual Latent Hires fix is added to each generation script. See here for details.
-
ログ出力が改善されました。 PR #905 shirayu 氏に感謝します。
- デフォルトでログが成形されます。
rich
ライブラリが必要なため、Upgrade を参照し更新をお願いします。 rich
がインストールされていない場合は、従来のログ出力になります。- 各学習スクリプトでは以下のオプションが有効です。
--console_log_simple
オプションで従来のログ出力に切り替えられます。--console_log_level
でログレベルを指定できます。デフォルトはINFO
です。--console_log_file
でログファイルを出力できます。デフォルトはNone
(コンソールに出力) です。
- デフォルトでログが成形されます。
-
複数 GPU 学習時に学習中のサンプル画像生成を複数 GPU で行うようになりました。 PR #1061 DKnight54 氏に感謝します。
-
mps デバイスのサポートが改善されました。 PR #1054 akx 氏に感謝します。CUDA ではなく mps が存在する場合には自動的に mps デバイスを使用します。
-
networks/resize_lora.py
に Conv2d の新しいランクを指定するオプション--new_conv_rank
が追加されました。 PR #1102 mgz-dev 氏に感謝します。 -
学習スクリプトに VRAMが少ない環境向け最適化を無効にするオプション
--highvram
を追加しました。VRAM に余裕がある場合に指定すると動作が高速化されます。- 現在は latents のキャッシュ部分のみ高速化されます。
-
IPEX サポートが改善されました。 PR #1086 Disty0 氏に感謝します。
-
svd_merge_lora.py
が場合によってエラーになる不具合が修正されました。 PR #1087 mgz-dev 氏に感謝します。 -
DyLoRA が SDXL で動くよう修正されました。PR #1126 tamlog06 氏に感謝します。
-
SD 1/2 および SDXL 共通の生成スクリプト
gen_img.py
を追加しました。基本的な機能は SD 1/2、SDXL 向けスクリプトと同じですが、いくつかの新機能が追加されています。- プロンプトを動的に生成する外部スクリプトをサポートしました。
--from_module
で呼び出せます。(ドキュメントはのちほど追加します) - プロンプト重みづけ後の正規化方法を
--emb_normalize_mode
で指定できます。original
は元の方法、abs
は絶対値の平均値で正規化、none
は正規化を行いません。
- プロンプトを動的に生成する外部スクリプトをサポートしました。
-
Gradual Latent Hires fix を各生成スクリプトに追加しました。詳細は こちら。
Version 0.8.3
Jan 27, 2024 / 2024/1/27: v0.8.3
-
Fixed a bug that the training crashes when
--fp8_base
is specified with--save_state
. PR #1079 Thanks to feffy380!safetensors
is updated. Please see Upgrade and update the library.
-
Fixed a bug that the training crashes when
network_multiplier
is specified with multi-GPU training. PR #1084 Thanks to fireicewolf! -
Fixed a bug that the training crashes when training ControlNet-LLLite.
-
--fp8_base
指定時に--save_state
での保存がエラーになる不具合が修正されました。 PR #1079 feffy380 氏に感謝します。safetensors
がバージョンアップされていますので、Upgrade を参照し更新をお願いします。
-
複数 GPU での学習時に
network_multiplier
を指定するとクラッシュする不具合が修正されました。 PR #1084 fireicewolf 氏に感謝します。 -
ControlNet-LLLite の学習がエラーになる不具合を修正しました。
Version 0.8.2
Jan 23, 2024 / 2024/1/23: v0.8.2
-
[Experimental] The
--fp8_base
option is added to the training scripts for LoRA etc. The base model (U-Net, and Text Encoder when training modules for Text Encoder) can be trained with fp8. PR #1057 Thanks to KohakuBlueleaf!- Please specify
--fp8_base
intrain_network.py
orsdxl_train_network.py
. - PyTorch 2.1 or later is required.
- If you use xformers with PyTorch 2.1, please see xformers repository and install the appropriate version according to your CUDA version.
- The sample image generation during training consumes a lot of memory. It is recommended to turn it off.
- Please specify
-
[Experimental] The network multiplier can be specified for each dataset in the training scripts for LoRA etc.
- This is an experimental option and may be removed or changed in the future.
- For example, if you train with state A as
1.0
and state B as-1.0
, you may be able to generate by switching between state A and B depending on the LoRA application rate. - Also, if you prepare five states and train them as
0.2
,0.4
,0.6
,0.8
, and1.0
, you may be able to generate by switching the states smoothly depending on the application rate. - Please specify
network_multiplier
in[[datasets]]
in.toml
file.
-
Some options are added to
networks/extract_lora_from_models.py
to reduce the memory usage.--load_precision
option can be used to specify the precision when loading the model. If the model is saved in fp16, you can reduce the memory usage by specifying--load_precision fp16
without losing precision.--load_original_model_to
option can be used to specify the device to load the original model.--load_tuned_model_to
option can be used to specify the device to load the derived model. The default iscpu
for both options, but you can specifycuda
etc. You can reduce the memory usage by loading one of them to GPU. This option is available only for SDXL.
-
The gradient synchronization in LoRA training with multi-GPU is improved. PR #1064 Thanks to KohakuBlueleaf!
-
The code for Intel IPEX support is improved. PR #1060 Thanks to akx!
-
Fixed a bug in multi-GPU Textual Inversion training.
-
(実験的) LoRA等の学習スクリプトで、ベースモデル(U-Net、および Text Encoder のモジュール学習時は Text Encoder も)の重みを fp8 にして学習するオプションが追加されました。 PR #1057 KohakuBlueleaf 氏に感謝します。
train_network.py
またはsdxl_train_network.py
で--fp8_base
を指定してください。- PyTorch 2.1 以降が必要です。
- PyTorch 2.1 で xformers を使用する場合は、xformers のリポジトリ を参照し、CUDA バージョンに応じて適切なバージョンをインストールしてください。
- 学習中のサンプル画像生成はメモリを大量に消費するため、オフにすることをお勧めします。
-
(実験的) LoRA 等の学習で、データセットごとに異なるネットワーク適用率を指定できるようになりました。
- 実験的オプションのため、将来的に削除または仕様変更される可能性があります。
- たとえば状態 A を
1.0
、状態 B を-1.0
として学習すると、LoRA の適用率に応じて状態 A と B を切り替えつつ生成できるかもしれません。 - また、五段階の状態を用意し、それぞれ
0.2
、0.4
、0.6
、0.8
、1.0
として学習すると、適用率でなめらかに状態を切り替えて生成できるかもしれません。 .toml
ファイルで[[datasets]]
にnetwork_multiplier
を指定してください。
-
networks/extract_lora_from_models.py
に使用メモリ量を削減するいくつかのオプションを追加しました。--load_precision
で読み込み時の精度を指定できます。モデルが fp16 で保存されている場合は--load_precision fp16
を指定して精度を変えずにメモリ量を削減できます。--load_original_model_to
で元モデルを読み込むデバイスを、--load_tuned_model_to
で派生モデルを読み込むデバイスを指定できます。デフォルトは両方ともcpu
ですがそれぞれcuda
等を指定できます。片方を GPU に読み込むことでメモリ量を削減できます。SDXL の場合のみ有効です。
-
マルチ GPU での LoRA 等の学習時に勾配の同期が改善されました。 PR #1064 KohakuBlueleaf 氏に感謝します。
-
Intel IPEX サポートのコードが改善されました。PR #1060 akx 氏に感謝します。
-
マルチ GPU での Textual Inversion 学習の不具合を修正しました。
-
.toml
example for network multiplier / ネットワーク適用率の.toml
の記述例
[general]
[[datasets]]
resolution = 512
batch_size = 8
network_multiplier = 1.0
... subset settings ...
[[datasets]]
resolution = 512
batch_size = 8
network_multiplier = -1.0
... subset settings ...
Version 0.8.1
Jan 17, 2024 / 2024/1/17: v0.8.1
-
Fixed a bug that the VRAM usage without Text Encoder training is larger than before in training scripts for LoRA etc (
train_network.py
,sdxl_train_network.py
).- Text Encoders were not moved to CPU.
-
Fixed typos. Thanks to akx! PR #1053
-
LoRA 等の学習スクリプト(
train_network.py
、sdxl_train_network.py
)で、Text Encoder を学習しない場合の VRAM 使用量が以前に比べて大きくなっていた不具合を修正しました。- Text Encoder が GPU に保持されたままになっていました。
-
誤字が修正されました。 PR #1053 akx 氏に感謝します。
Version 0.8.0
Jan 15, 2024 / 2024/1/15: v0.8.0
-
Diffusers, Accelerate, Transformers and other related libraries have been updated. Please update the libraries with Upgrade.
- Some model files (Text Encoder without position_id) based on the latest Transformers can be loaded.
-
torch.compile
is supported (experimental). PR #1024 Thanks to p1atdev!- This feature works only on Linux or WSL.
- Please specify
--torch_compile
option in each training script. - You can select the backend with
--dynamo_backend
option. The default is"inductor"
.inductor
oreager
seems to work. - Please use
--spda
option instead of--xformers
option. - PyTorch 2.1 or later is recommended.
- Please see PR for details.
-
The session name for wandb can be specified with
--wandb_run_name
option. PR #1032 Thanks to hopl1t! -
IPEX library is updated. PR #1030 Thanks to Disty0!
-
Fixed a bug that Diffusers format model cannot be saved.
-
Diffusers、Accelerate、Transformers 等の関連ライブラリを更新しました。Upgrade を参照し更新をお願いします。
- 最新の Transformers を前提とした一部のモデルファイル(Text Encoder が position_id を持たないもの)が読み込めるようになりました。
-
torch.compile
がサポートされしました(実験的)。 PR #1024 p1atdev 氏に感謝します。- Linux または WSL でのみ動作します。
- 各学習スクリプトで
--torch_compile
オプションを指定してください。 --dynamo_backend
オプションで使用される backend を選択できます。デフォルトは"inductor"
です。inductor
またはeager
が動作するようです。--xformers
オプションとは互換性がありません。 代わりに--spda
オプションを使用してください。- PyTorch 2.1以降を推奨します。
- 詳細は PR をご覧ください。
-
wandb 保存時のセッション名が各学習スクリプトの
--wandb_run_name
オプションで指定できるようになりました。 PR #1032 hopl1t 氏に感謝します。 -
IPEX ライブラリが更新されました。PR #1030 Disty0 氏に感謝します。
-
Diffusers 形式でのモデル保存ができなくなっていた不具合を修正しました。
Version 0.7.1
Dec 24, 2023 / 2023/12/24
-
Fixed to work
tools/convert_diffusers20_original_sd.py
. Thanks to Disty0! PR #1016 -
tools/convert_diffusers20_original_sd.py
が動かなくなっていたのが修正されました。Disty0 氏に感謝します。 PR #1016
Dec 21, 2023 / 2023/12/21
-
The issues in multi-GPU training are fixed. Thanks to Isotr0py! PR #989 and #1000
--ddp_gradient_as_bucket_view
and--ddp_static_graph
options are added tosdxl_train.py
. Please specify these options for multi-GPU training.
-
IPEX support is updated. Thanks to Disty0!
-
Fixed the bug that the size of the bucket becomes less than
min_bucket_reso
. Thanks to Cauldrath! PR #1008 -
--sample_at_first
option is added to each training script. This option is useful to generate images at the first step, before training. Thanks to shirayu! PR #907 -
--ss
option is added to the sampling prompt in training. You can specify the scheduler for the sampling like--ss euler_a
. Thanks to shirayu! PR #906 -
keep_tokens_separator
is added to the dataset config. This option is useful to keep (prevent from shuffling) the tokens in the captions. See #975 for details. Thanks to Linaqruf!- You can specify the separator with an option like
--keep_tokens_separator "|||"
or withkeep_tokens_separator: "|||"
in.toml
. The tokens before|||
are not shuffled.
- You can specify the separator with an option like
-
Attention processor hook is added. See #961 for details. Thanks to rockerBOO!
-
The optimizer
PagedAdamW
is added. Thanks to xzuyn! PR #955 -
NaN replacement in SDXL VAE is sped up. Thanks to liubo0902! PR #1009
-
Fixed the path error in
finetune/make_captions.py
. Thanks to CjangCjengh! PR #986 -
マルチGPUでの学習の不具合を修正しました。Isotr0py 氏に感謝します。 PR #989 および #1000
sdxl_train.py
に--ddp_gradient_as_bucket_view
と--ddp_bucket_view
オプションが追加されました。マルチGPUでの学習時にはこれらのオプションを指定してください。
-
IPEX サポートが更新されました。Disty0 氏に感謝します。
-
Aspect Ratio Bucketing で bucket のサイズが
min_bucket_reso
未満になる不具合を修正しました。Cauldrath 氏に感謝します。 PR #1008 -
各学習スクリプトに
--sample_at_first
オプションが追加されました。学習前に画像を生成することで、学習結果が比較しやすくなります。shirayu 氏に感謝します。 PR #907 -
学習時のプロンプトに
--ss
オプションが追加されました。--ss euler_a
のようにスケジューラを指定できます。shirayu 氏に感謝します。 PR #906 -
データセット設定に
keep_tokens_separator
が追加されました。キャプション内のトークンをどの位置までシャッフルしないかを指定できます。詳細は #975 を参照してください。Linaqruf 氏に感謝します。- オプションで
--keep_tokens_separator "|||"
のように指定するか、.toml
でkeep_tokens_separator: "|||"
のように指定します。|||
の前のトークンはシャッフルされません。
- オプションで
-
Attention processor hook が追加されました。詳細は #961 を参照してください。rockerBOO 氏に感謝します。
-
オプティマイザ
PagedAdamW
が追加されました。xzuyn 氏に感謝します。 PR #955 -
学習時、SDXL VAE で NaN が発生した時の置き換えが高速化されました。liubo0902 氏に感謝します。 PR #1009
-
finetune/make_captions.py
で相対パス指定時のエラーが修正されました。CjangCjengh 氏に感謝します。 PR #986
Dec 3, 2023 / 2023/12/3
-
finetune\tag_images_by_wd14_tagger.py
now supports the separator other than,
with--caption_separator
option. Thanks to KohakuBlueleaf! PR #913 -
Min SNR Gamma with V-predicition (SD 2.1) is fixed. Thanks to feffy380! PR#934
- See #673 for details.
-
--min_diff
and--clamp_quantile
options are added tonetworks/extract_lora_from_models.py
. Thanks to wkpark! PR #936- The default values are same as the previous version.
-
Deep Shrink hires fix is supported in
sdxl_gen_img.py
andgen_img_diffusers.py
.--ds_timesteps_1
and--ds_timesteps_2
options denote the timesteps of the Deep Shrink for the first and second stages.--ds_depth_1
and--ds_depth_2
options denote the depth (block index) of the Deep Shrink for the first and second stages.--ds_ratio
option denotes the ratio of the Deep Shrink.0.5
means the half of the original latent size for the Deep Shrink.--dst1
,--dst2
,--dsd1
,--dsd2
and--dsr
prompt options are also available.
-
finetune\tag_images_by_wd14_tagger.py
で--caption_separator
オプションでカンマ以外の区切り文字を指定できるようになりました。KohakuBlueleaf 氏に感謝します。 PR #913 -
V-predicition (SD 2.1) での Min SNR Gamma が修正されました。feffy380 氏に感謝します。 PR#934
- 詳細は #673 を参照してください。
-
networks/extract_lora_from_models.py
に--min_diff
と--clamp_quantile
オプションが追加されました。wkpark 氏に感謝します。 PR #936- デフォルト値は前のバージョンと同じです。
-
sdxl_gen_img.py
とgen_img_diffusers.py
で Deep Shrink hires fix をサポートしました。--ds_timesteps_1
と--ds_timesteps_2
オプションは Deep Shrink の第一段階と第二段階の timesteps を指定します。--ds_depth_1
と--ds_depth_2
オプションは Deep Shrink の第一段階と第二段階の深さ(ブロックの index)を指定します。--ds_ratio
オプションは Deep Shrink の比率を指定します。0.5
を指定すると Deep Shrink 適用時の latent は元のサイズの半分になります。--dst1
、--dst2
、--dsd1
、--dsd2
、--dsr
プロンプトオプションも使用できます。
Nov 5, 2023 / 2023/11/5
-
sdxl_train.py
now supports different learning rates for each Text Encoder.- Example:
--learning_rate 1e-6
: train U-Net only--train_text_encoder --learning_rate 1e-6
: train U-Net and two Text Encoders with the same learning rate (same as the previous version)--train_text_encoder --learning_rate 1e-6 --learning_rate_te1 1e-6 --learning_rate_te2 1e-6
: train U-Net and two Text Encoders with the different learning rates--train_text_encoder --learning_rate 0 --learning_rate_te1 1e-6 --learning_rate_te2 1e-6
: train two Text Encoders only--train_text_encoder --learning_rate 1e-6 --learning_rate_te1 1e-6 --learning_rate_te2 0
: train U-Net and one Text Encoder only--train_text_encoder --learning_rate 0 --learning_rate_te1 0 --learning_rate_te2 1e-6
: train one Text Encoder only
- Example:
-
train_db.py
andfine_tune.py
now support different learning rates for Text Encoder. Specify with--learning_rate_te
option.- To train Text Encoder with
fine_tune.py
, specify--train_text_encoder
option too.train_db.py
trains Text Encoder by default.
- To train Text Encoder with
-
Fixed the bug that Text Encoder is not trained when block lr is specified in
sdxl_train.py
. -
Debiased Estimation loss is added to each training script. Thanks to sdbds!
- Specify
--debiased_estimation_loss
option to enable it. See PR #889 for details.
- Specify
-
Training of Text Encoder is improved in
train_network.py
andsdxl_train_network.py
. Thanks to KohakuBlueleaf! PR #895 -
The moving average of the loss is now displayed in the progress bar in each training script. Thanks to shirayu! PR #899
-
PagedAdamW32bit optimizer is supported. Specify
--optimizer_type=PagedAdamW32bit
. Thanks to xzuyn! PR #900 -
Other bug fixes and improvements.
-
sdxl_train.py
で、二つのText Encoderそれぞれに独立した学習率が指定できるようになりました。サンプルは上の英語版を参照してください。 -
train_db.py
およびfine_tune.py
で Text Encoder に別の学習率を指定できるようになりました。--learning_rate_te
オプションで指定してください。fine_tune.py
で Text Encoder を学習するには--train_text_encoder
オプションをあわせて指定してください。train_db.py
はデフォルトで学習します。
-
sdxl_train.py
で block lr を指定すると Text Encoder が学習されない不具合を修正しました。 -
Debiased Estimation loss が各学習スクリプトに追加されました。sdbsd 氏に感謝します。
--debiased_estimation_loss
を指定すると有効になります。詳細は PR #889 を参照してください。
-
train_network.py
とsdxl_train_network.py
でText Encoderの学習が改善されました。KohakuBlueleaf 氏に感謝します。 PR #895 -
各学習スクリプトで移動平均のlossがプログレスバーに表示されるようになりました。shirayu 氏に感謝します。 PR #899
-
PagedAdamW32bit オプティマイザがサポートされました。
--optimizer_type=PagedAdamW32bit
と指定してください。xzuyn 氏に感謝します。 PR #900 -
その他のバグ修正と改善。
Version 0.7.0
SDXL training is now available.
Oct 11, 2023 / 2023/10/11
-
Fix to work
make_captions_by_git.py
with the latest version of transformers. -
Improve
gen_img_diffusers.py
andsdxl_gen_img.py
. Both scripts now support the following options:--network_merge_n_models
option can be used to merge some of the models. The remaining models aren't merged, so the multiplier can be changed, and the regional LoRA also works.--network_regional_mask_max_color_codes
is added. Now you can use up to 7 regions.- When this option is specified, the mask of the regional LoRA is the color code based instead of the channel based. The value is the maximum number of the color codes (up to 7).
- You can specify the mask for each LoRA by colors: 0x0000ff, 0x00ff00, 0x00ffff, 0xff0000, 0xff00ff, 0xffff00, 0xffffff.
-
make_captions_by_git.py
が最新の transformers で動作するように修正しました。 -
gen_img_diffusers.py
とsdxl_gen_img.py
を更新し、以下のオプションを追加しました。--network_merge_n_models
オプションで一部のモデルのみマージできます。残りのモデルはマージされないため、重みを変更したり、領域別LoRAを使用したりできます。--network_regional_mask_max_color_codes
を追加しました。最大7つの領域を使用できます。- このオプションを指定すると、領域別LoRAのマスクはチャンネルベースではなくカラーコードベースになります。値はカラーコードの最大数(最大7)です。
- 各LoRAに対してマスクをカラーで指定できます:0x0000ff、0x00ff00、0x00ffff、0xff0000、0xff00ff、0xffff00、0xffffff。
Oct 9. 2023 / 2023/10/9
-
tag_images_by_wd_14_tagger.py
now supports Onnx. If you use Onnx, TensorFlow is not required anymore. #864 Thanks to Isotr0py!--onnx
option is added. If you use Onnx, specify--onnx
option.- Please install Onnx and other required packages.
- Uninstall TensorFlow.
pip install tensorboard==2.14.1
This is required for the specified version of protobuf.pip install protobuf==3.20.3
This is required for Onnx.pip install onnx==1.14.1
pip install onnxruntime-gpu==1.16.0
orpip install onnxruntime==1.16.0
-
--append_tags
option is added totag_images_by_wd_14_tagger.py
. This option appends the tags to the existing tags, instead of replacing them. #858 Thanks to a-l-e-x-d-s-9! -
OFT is now supported.
- You can use
networks.oft
for the network module insdxl_train_network.py
. The usage is the same asnetworks.lora
. Some options are not supported. sdxl_gen_img.py
also supports OFT as--network_module
.- OFT only supports SDXL currently. Because current OFT tweaks Q/K/V and O in the transformer, and SD1/2 have extremely fewer transformers than SDXL.
- The implementation is heavily based on laksjdjf's OFT implementation. Thanks to laksjdjf!
- You can use
-
Other bug fixes and improvements.
-
tag_images_by_wd_14_tagger.py
が Onnx をサポートしました。Onnx を使用する場合は TensorFlow は不要です。#864 Isotr0py氏に感謝します。- Onnxを使用する場合は、
--onnx
オプションを指定してください。 - Onnx とその他の必要なパッケージをインストールしてください。
- TensorFlow をアンインストールしてください。
pip install tensorboard==2.14.1
protobufの指定バージョンにこれが必要。pip install protobuf==3.20.3
Onnxのために必要。pip install onnx==1.14.1
pip install onnxruntime-gpu==1.16.0
またはpip install onnxruntime==1.16.0
- Onnxを使用する場合は、
-
tag_images_by_wd_14_tagger.py
に--append_tags
オプションが追加されました。このオプションを指定すると、既存のタグに上書きするのではなく、新しいタグのみが既存のタグに追加されます。 #858 a-l-e-x-d-s-9氏に感謝します。 -
OFT をサポートしました。
sdxl_train_network.py
の--network_module
にnetworks.oft
を指定してください。使用方法はnetworks.lora
と同様ですが一部のオプションは未サポートです。sdxl_gen_img.py
でも同様に OFT を指定できます。- OFT は現在 SDXL のみサポートしています。OFT は現在 transformer の Q/K/V と O を変更しますが、SD1/2 は transformer の数が SDXL よりも極端に少ないためです。
- 実装は laksjdjf 氏の OFT実装 を多くの部分で参考にしています。laksjdjf 氏に感謝します。
-
その他のバグ修正と改善。
Oct 1. 2023 / 2023/10/1
-
SDXL training is now available in the main branch. The sdxl branch is merged into the main branch.
-
SAI Model Spec metadata is now supported partially.
hash_sha256
is not supported yet.- The main items are set automatically.
- You can set title, author, description, license and tags with
--metadata_xxx
options in each training script. - Merging scripts also support minimum SAI Model Spec metadata. See the help message for the usage.
- Metadata editor will be available soon.
-
bitsandbytes
is now optional. Please install it if you want to use it. The insructions are in the later section. -
albumentations
is not required anymore. -
--v_pred_like_loss ratio
option is added. This option adds the loss like v-prediction loss in SDXL training.0.1
means that the loss is added 10% of the v-prediction loss. The default value is None (disabled).- In v-prediction, the loss is higher in the early timesteps (near the noise). This option can be used to increase the loss in the early timesteps.
-
Arbitrary options can be used for Diffusers' schedulers. For example
--lr_scheduler_args "lr_end=1e-8"
. -
LoRA-FA is added experimentally. Specify
--network_module networks.lora_fa
option instead of--network_module networks.lora
. The trained model can be used as a normal LoRA model. -
JPEG XL is supported. #786
-
Input perturbation noise is added. See #798 for details.
-
Dataset subset now has
caption_prefix
andcaption_suffix
options. The strings are added to the beginning and the end of the captions before shuffling. You can specify the options in.toml
. -
Intel ARC support with IPEX is added. #825
-
Other bug fixes and improvements.