v0.4.3
版本发布时间: 2023-02-22 20:11:58
kohya-ss/sd-scripts最新发布版本:v0.8.7(2024-04-07 20:09:15)
Updates at 19 Feb. 2023, 2023/2/19:
-
Add
--use_lion_optimizer
to each training script to use Lion optimizer.- Please install Lion optimizer with
pip install lion-pytorch
(it is not inrequirements.txt
currently.)
- Please install Lion optimizer with
-
Add
--lowram
option totrain_network.py
. Load models to VRAM instead of VRAM (for machines which have bigger VRAM than RAM such as Colab and Kaggle). Thanks to Isotr0py!- Default behavior (without lowram) has reverted to the same as before 14 Feb.
-
Fixed git commit hash to be set correctly regardless of the working directory. Thanks to vladmandic!
-
--use_lion_optimizer
オプションを各学習スクリプトに追加しました。 Lion optimizer を使用できます。- あらかじめ
pip install lion-pytorch
でインストールしてください(現在はrequirements.txt
に含まれていません)。
- あらかじめ
-
--lowram
オプションをtrain_network.py
に追加しました。モデルをRAMではなくVRAMに読み込みます(ColabやKaggleなど、VRAMがRAMに比べて多い環境で有効です)。 Isotr0py 氏に感謝します。- lowram オプションなしのデフォルト動作は2/14より前と同じに戻しました。
-
git commit hash を現在のフォルダ位置に関わらず正しく取得するように修正しました。vladmandic 氏に感謝します。
Updates at 16 Feb. 2023, 2023/2/16:
- Noise offset is recorded to the metadata. Thanks to space-nuko!
- Show the moving average loss to prevent loss jumping in
train_network.py
andtrain_db.py
. Thanks to shirayu! - Noise offsetがメタデータに記録されるようになりました。space-nuko氏に感謝します。
-
train_network.py
とtrain_db.py
で学習中に表示されるlossの値が移動平均になりました。epochの先頭で表示されるlossが大きく変動する事象を解決します。shirayu氏に感謝します。 - 14 Feb. 2023, 2023/2/14:
- Add support with multi-gpu trainining for
train_network.py
. Thanks to Isotr0py! - Add
--verbose
option forresize_lora.py
. For details, see this PR. Thanks to mgz-dev! - Git commit hash is added to the metadata for LoRA. Thanks to space-nuko!
- Add
--noise_offset
option for each training scripts.- Implementation of https://www.crosslabs.org//blog/diffusion-with-offset-noise
- This option may improve ability to generate darker/lighter images. May work with LoRA.
-
train_network.py
でマルチGPU学習をサポートしました。Isotr0py氏に感謝します。 -
--verbose
オプションをresize_lora.py
に追加しました。表示される情報の詳細は こちらのPR をご参照ください。mgz-dev氏に感謝します。 - LoRAのメタデータにgitのcommit hashを追加しました。space-nuko氏に感謝します。
-
--noise_offset
オプションを各学習スクリプトに追加しました。- こちらの記事の実装になります: https://www.crosslabs.org//blog/diffusion-with-offset-noise
- 全体的に暗い、明るい画像の生成結果が良くなる可能性があるようです。LoRA学習でも有効なようです。
- Add support with multi-gpu trainining for
Updates at 11 Feb. 2023, 2023/2/11:
-
lora_interrogator.py
is added innetworks
folder. Seepython networks\lora_interrogator.py -h
for usage.- For LoRAs where the activation word is unknown, this script compares the output of Text Encoder after applying LoRA to that of unapplied to find out which token is affected by LoRA. Hopefully you can figure out the activation word. LoRA trained with captions does not seem to be able to interrogate.
- Batch size can be large (like 64 or 128).
-
train_textual_inversion.py
now supports multiple init words. -
Following feature is reverted to be the same as before. Sorry for confusion:
Now the number of data in each batch is limited to the number of actual images (not duplicated). Because a certain bucket may contain smaller number of actual images, so the batch may contain same (duplicated) images.
-
lora_interrogator.py
をnetwork
フォルダに追加しました。使用法はpython networks\lora_interrogator.py -h
でご確認ください。- このスクリプトは、起動promptがわからないLoRAについて、LoRA適用前後のText Encoderの出力を比較することで、どのtokenの出力が変化しているかを調べます。運が良ければ起動用の単語が分かります。キャプション付きで学習されたLoRAは影響が広範囲に及ぶため、調査は難しいようです。
- バッチサイズはわりと大きくできます(64や128など)。
-
train_textual_inversion.py
で複数のinit_word指定が可能になりました。 -
次の機能を削除し元に戻しました。混乱を招き申し訳ありません。
これらのオプションによりbucketが細分化され、ひとつのバッチ内に同一画像が重複して存在することが増えたため、バッチサイズを
そのbucketの画像種類数
までに制限する機能を追加しました。
Updates at 10 Feb. 2023, 2023/2/10:
- Updated
requirements.txt
to prevent upgrading with pip taking a long time or failure to upgrade. -
resize_lora.py
keeps the metadata of the model.dimension is resized from ...
is added to the top ofss_training_comment
. -
merge_lora.py
supports models with differentalpha
s. If there is a problem, old version ismerge_lora_old.py
. -
svd_merge_lora.py
is added. This script merges LoRA models with any rank (dim) and alpha, and approximate a new LoRA with svd for a specified rank (dim). - Note: merging scripts erase the metadata currently.
-
resize_images_to_resolution.py
supports multibyte characters in filenames. - pipでの更新が長時間掛かったり、更新に失敗したりするのを防ぐため、
requirements.txt
を更新しました。 -
resize_lora.py
がメタデータを保持するようになりました。dimension is resized from ...
という文字列がss_training_comment
の先頭に追加されます。 -
merge_lora.py
がalphaが異なるモデルをサポートしました。 何か問題がありましたら旧バージョンmerge_lora_old.py
をお使いください。 -
svd_merge_lora.py
を追加しました。 複数の任意のdim (rank)、alphaのLoRAモデルをマージし、svdで任意dim(rank)のLoRAで近似します。 - 注:マージ系のスクリプトは現時点ではメタデータを消去しますのでご注意ください。
-
resize_images_to_resolution.py
が日本語ファイル名をサポートしました。
Updates at 9 Feb. 2023, 2023/2/9:
- Caption dropout is supported in
train_db.py
,fine_tune.py
andtrain_network.py
. Thanks to forestsource!-
--caption_dropout_rate
option specifies the dropout rate for captions (0~1.0, 0.1 means 10% chance for dropout). If dropout occurs, the image is trained with the empty caption. Default is 0 (no dropout). -
--caption_dropout_every_n_epochs
option specifies how many epochs to drop captions. If3
is specified, in epoch 3, 6, 9 ..., images are trained with all captions empty. Default is None (no dropout). -
--caption_tag_dropout_rate
option specified the dropout rate for tags (comma separated tokens) (0~1.0, 0.1 means 10% chance for dropout). If dropout occurs, the tag is removed from the caption. If--keep_tokens
option is set, these tokens (tags) are not dropped. Default is 0 (no droupout). - The bulk image downsampling script is added. Documentation is here (in Jpanaese). Thanks to bmaltais!
- Typo check is added. Thanks to shirayu!
-
- キャプションのドロップアウトを
train_db.py
、fine_tune.py
、train_network.py
の各スクリプトに追加しました。forestsource氏に感謝します。-
--caption_dropout_rate
オプションでキャプションのドロップアウト率を指定します(0~1.0、 0.1を指定すると10%の確率でドロップアウト)。ドロップアウトされた場合、画像は空のキャプションで学習されます。デフォルトは 0 (ドロップアウトなし)です。 -
--caption_dropout_every_n_epochs
オプションで何エポックごとにキャプションを完全にドロップアウトするか指定します。たとえば3
を指定すると、エポック3、6、9……で、すべての画像がキャプションなしで学習されます。デフォルトは None (ドロップアウトなし)です。 -
--caption_tag_dropout_rate
オプションで各タグ(カンマ区切りの各部分)のドロップアウト率を指定します(0~1.0、 0.1を指定すると10%の確率でドロップアウト)。ドロップアウトが起きるとそのタグはそのときだけキャプションから取り除かれて学習されます。--keep_tokens
オプションを指定していると、シャッフルされない部分のタグはドロップアウトされません。デフォルトは 0 (ドロップアウトなし)です。 - 画像の一括縮小スクリプトを追加しました。ドキュメントは こちら です。bmaltais氏に感謝します。
- 誤字チェッカが追加されました。shirayu氏に感謝します。
-
Updates at 6 Feb. 2023, 2023/2/6:
-
--bucket_reso_steps
and--bucket_no_upscale
options are added to training scripts (fine tuning, DreamBooth, LoRA and Textual Inversion) andprepare_buckets_latents.py
. -
--bucket_reso_steps
takes the steps for buckets in aspect ratio bucketing. Default is 64, same as before.- Any value greater than or equal to 1 can be specified; 64 is highly recommended and a value divisible by 8 is recommended.
- If less than 64 is specified, padding will occur within U-Net. The result is unknown.
- If you specify a value that is not divisible by 8, it will be truncated to divisible by 8 inside VAE, because the size of the latent is 1/8 of the image size.
-
If
--bucket_no_upscale
option is specified, images smaller than the bucket size will be processed without upscaling.- Internally, a bucket smaller than the image size is created (for example, if the image is 300x300 and
bucket_reso_steps=64
, the bucket is 256x256). The image will be trimmed. - Implementation of #130.
- Images with an area larger than the maximum size specified by
--resolution
are downsampled to the max bucket size.
- Internally, a bucket smaller than the image size is created (for example, if the image is 300x300 and
-
Now the number of data in each batch is limited to the number of actual images (not duplicated). Because a certain bucket may contain smaller number of actual images, so the batch may contain same (duplicated) images.
-
--random_crop
now also works with buckets enabled.- Instead of always cropping the center of the image, the image is shifted left, right, up, and down to be used as the training data. This is expected to train to the edges of the image.
- Implementation of discussion #34.
-
--bucket_reso_steps
および--bucket_no_upscale
オプションを、学習スクリプトおよびprepare_buckets_latents.py
に追加しました。 -
--bucket_reso_steps
オプションでは、bucketの解像度の単位を指定できます。デフォルトは64で、今までと同じ動作です。- 1以上の任意の値を指定できます。基本的には64を推奨します。64以外の値では、8で割り切れる値を推奨します。
- 64未満を指定するとU-Netの内部でpaddingが発生します。どのような結果になるかは未知数です。
- 8で割り切れない値を指定すると余りはVAE内部で切り捨てられます。
-
--bucket_no_upscale
オプションを指定すると、bucketサイズよりも小さい画像は拡大せずそのまま処理します。- 内部的には画像サイズ以下のサイズのbucketを作成します(たとえば画像が300x300で
bucket_reso_steps=64
の場合、256x256のbucket)。余りは都度trimmingされます。 - #130 を実装したものです。
-
--resolution
で指定した最大サイズよりも面積が大きい画像は、最大サイズと同じ面積になるようアスペクト比を維持したまま縮小され、そのサイズを元にbucketが作られます。
- 内部的には画像サイズ以下のサイズのbucketを作成します(たとえば画像が300x300で
-
これらのオプションによりbucketが細分化され、ひとつのバッチ内に同一画像が重複して存在することが増えたため、バッチサイズを
そのbucketの画像種類数
までに制限する機能を追加しました。- たとえば繰り返し回数10で、あるbucketに1枚しか画像がなく、バッチサイズが10以上のとき、今まではepoch内で、同一画像を10枚含むバッチが1回だけ使用されていました。
- 機能追加後はepoch内にサイズ1のバッチが10回、使用されます。
-
--random_crop
がbucketを有効にした場合にも機能するようになりました。- 常に画像の中央を切り取るのではなく、左右、上下にずらして教師データにします。これにより画像端まで学習されることが期待されます。
- discussionの#34を実装したものです。