此儲存庫包含穩定擴散的訓練、產生和實用腳本。
更改歷史記錄移至頁面底部。 更新履跡歴はページ導出に移しました。
日本語版READMEはこちら
開發版本位於dev
分支。請檢查 dev 分支以獲取最新變更。
FLUX.1 和 SD3/SD3.5 支援在sd3
分支中完成。如果你想訓練它們,請使用 sd3 分支。
為了更方便地使用(GUI 和 PowerShell 腳本等...),請造訪 bmaltais 維護的儲存庫。感謝@bmaltais!
該存儲庫包含以下腳本:
該檔案不包含 PyTorch 的要求。由於PyTorch的版本取決於環境,因此未包含在文件中。請先依照環境安裝PyTorch。請參閱下面的安裝說明。
這些腳本使用 Pytorch 2.1.2 進行測試。 2.0.1 和 1.12.1 未經測試,但應該可以工作。
大多數文件都是用日文寫的。
darkstorm2150 的英文翻譯在這裡。感謝darkstorm2150!
Python 3.10.6 和 Git:
授予對 powershell 的不受限制的腳本存取權限,以便 venv 可以工作:
Set-ExecutionPolicy Unrestricted
並回答 A開啟常規 Powershell 終端並在其中輸入以下內容:
git clone https: // github.com / kohya - ss / sd - scripts.git
cd sd - scripts
python - m venv venv
.venvScriptsactivate
pip install torch == 2.1 . 2 torchvision == 0.16 . 2 -- index - url https: // download.pytorch.org / whl / cu118
pip install -- upgrade - r requirements.txt
pip install xformers == 0.0 . 23. post1 -- index - url https: // download.pytorch.org / whl / cu118
accelerate config
如果python -m venv
僅顯示python
,請將python
改為py
。
注意:現在, bitsandbytes==0.43.0
、 prodigyopt==1.0
和lion-pytorch==0.0.6
已包含在 requests.txt 中。如果您想使用其他版本,請手動安裝。
此安裝適用於 CUDA 11.8。如果您使用不同版本的 CUDA,請安裝適當版本的 PyTorch 和 xformers。例如,如果您使用 CUDA 12,請安裝pip install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/cu121
和pip install xformers==0.0.23.post1 --index-url https://download.pytorch.org/whl/cu121
。
加速配置的答案:
- This machine
- No distributed training
- NO
- NO
- NO
- all
- fp16
如果您想使用 bf16,請回答bf16
最後一個問題。
注意:在某些使用者報告訓練中出現ValueError: fp16 mixed precision requires a GPU
。在這種情況下,對第六個問題回答0
: What GPU(s) (by id) should be used for training on this machine as a comma-separated list? [all]:
(將使用 id 0
的單一 GPU。)
當新版本發佈時,您可以使用以下命令升級您的儲存庫:
cd sd - scripts
git pull
.venvScriptsactivate
pip install -- use-pep517 -- upgrade - r requirements.txt
命令成功完成後,您應該準備好使用新版本。
如果要升級 PyTorch,可以使用 Windows 安裝部分中的pip install
指令進行升級。升級PyTorch時, xformers
也需要升級。
LoRA 的實作是基於cloneofsimo 的儲存庫。感謝您所做的出色工作!
LoRA 對 Conv2d 3x3 的擴展最初由 cloneofsimo 發布,其有效性由 KohakuBlueleaf 在 LoCon 上得到了證明。非常感謝琥珀藍葉!
大多數腳本均根據 ASL 2.0 獲得許可(包括來自 Diffusers、cloneofsimo's 和 LoCon 的程式碼),但該專案的部分內容可根據單獨的許可條款使用:
內存高效注意力 Pytorch:麻省理工學院
位元和位元組:麻省理工學院
BLIP:BSD-3 條款
svd_merge_lora.py
VRAM 使用量已減少。不過,主記憶體使用量會增加(32GB就夠了)。svd_merge_lora.py
のVRAM使用量を切しました。ただし、メインメモriの使用量は増ぁぁぁめ(32十分修正了svd_merge_lora.py
、 sdxl_merge_lora.py
和resize_lora.py
中的錯誤,當save_precision
與計算中使用的precision
不同時,無法正確計算 LoRA 元資料的雜湊值。有關詳細信息,請參閱問題 #1722。感謝 JujoHotaru 提出這個問題。
它將包含在下一個版本中。
svd_merge_lora.py
、 sdxl_merge_lora.py
、 resize_lora.py
で、保存時の精度が計算時の精度と修正異なる場合、LoRAメタデチえい不具合をしました。詳細は問題#1722 をご覧た。ください。
以上は次回ririsuに含まれます。
sdxl_merge_lora.py
現在支援 OFT。感謝 Maru-mee 的 PR #1580。
svd_merge_lora.py
現在支援 LBW。感謝赤土陶器。有關詳細信息,請參閱 PR #1575。
sdxl_merge_lora.py
也支援 LBW。
有關 LBW 的詳細信息,請參閱 hakoikan 的 LoRA Block Weight。
這些將包含在下一個版本中。
sdxl_merge_lora.py
が OFT をサポートされました。 PR #1580 Maru-mee 氏に感謝します。
svd_merge_lora.py
で LBW がサポートされました。
sdxl_merge_lora.py
でも LBW がサポートされました。
LBW の詳細は hako-ikan 氏の LoRA Block Weight をご覧ください。
以上は次回ririsuに含まれます。
修正了cache_latents.py
和cache_text_encoder_outputs.py
不起作用的問題。 (將包含在下一個版本中。)
cache_latents.py
およびcache_text_encoder_outputs.py
が動作しなくなっていたのを修改しましま。
Scheduled Huber Loss 中huber_schedule
的預設值從exponential
改為snr
,預計會給出更好的結果。
Scheduled Huber Loss のhuber_schedule
のデfuォルト値をexponential
から、より良い結果が期待できるsnrぁ変更い結果が期待できるsnrぁ変更い結果が期待できるsnr
ぁ変更い。
imagesize
是新增的,所以如果無法立即更新庫,請單獨使用pip install imagesize==1.4.1
進行安裝。bitsandbytes==0.43.0
、 prodigyopt==1.0
、 lion-pytorch==0.0.6
包含在 requests.txt 中。bitsandbytes
不再需要複雜的過程,因為它現在正式支援 Windows。.toml
)中寫入 wandb API key 和 HuggingFace token 。感謝 bghira 提出這個問題。--console_log_simple
選項以停用豐富的日誌記錄。train_network.py
和sdxl_train_network.py
被修改為在訓練模型的元資料中記錄一些資料集設定( caption_prefix
、 caption_suffix
、 keep_tokens_separator
、 secondary_separator
、 enable_wildcard
)。train_network.py
和sdxl_train_network.py
狀態中的錯誤。狀態的保存和載入速度更快,檔案大小更小,載入時的記憶體佔用也減少。--noise_offset_random_strength
和--ip_noise_gamma_random_strength
加入到每個訓練腳本中。這些選項可用於在 0 到指定值的範圍內改變雜訊偏移和 ip 雜訊伽瑪。 PR #1177 感謝 KohakuBlueleaf!--save_state_on_train_end
加入到每個訓練腳本中。 PR #1168 感謝 gesen2egee!--sample_every_n_epochs
和--sample_every_n_steps
會顯示警告,並在指定小於或等於0
的數字時忽略它們。感謝 S-Del 提出這個問題。 .toml
檔案現在以 UTF-8 編碼讀取。 PR #1167 感謝 Horizon1704!secondary_separator
以指定不是混洗或丟棄目標的標籤分隔符號。secondary_separator=";;;"
。當您指定secondary_separator
時,該部分不會被打亂或刪除。enable_wildcard
。當設定為true
時,可以使用通配符{aaa|bbb|ccc}
。多行標題也已啟用。keep_tokens_separator
已更新為在標題中使用兩次。當您指定keep_tokens_separator="|||"
時,除以第二個|||
的部分不會被洗牌或丟棄並保留在最後。caption_prefix
和caption_suffix
可以一起使用。先處理caption_prefix
和caption_suffix
,然後依序處理enable_wildcard
、 keep_tokens_separator
、shuffling和drop、以及secondary_separator
。tag_image_by_wd14_tagger.py
新增了對 v3 儲存庫的支援(僅限--onnx
選項)。 PR #1192 感謝 sdbds!pip install onnx==1.15.0 onnxruntime-gpu==1.17.1
requirements.txt
安裝或更新它。--repo_id
保存在tag_image_by_wd14_tagger.py
子目錄中。這會快取多個 repo_id 模型。請刪除--model_dir
下不需要的檔案。tag_image_by_wd14_tagger.py
添加了一些選項。--use_rating_tags
和--use_rating_tags_as_last_tag
--character_tags_first
--character_tag_expand
--always_first_tags
--tag_replacement
make_captions.py
中指定--beam_search
以及為--num_beams
指定 2 或更大值時的錯誤。 每個訓練腳本都支援屏蔽損失。若要啟用屏蔽損失,請指定--masked_loss
選項。
該功能尚未經過全面測試,因此可能存在錯誤。如果您發現任何問題,請開啟問題。
ControlNet 資料集用於指定遮罩。遮罩影像應該是 RGB 影像。 R通道中的像素值255被視為掩模(僅對具有掩模的像素計算損失),0被視為非掩模。將像素值0-255轉換為0-1(即像素值128被視為損失的一半權重)。請參閱 LLLite 文件中資料集規範的詳細資訊。
每個訓練腳本中都引入了 Scheduled Huber Loss。這是一種提高訓練資料中異常值或異常(資料損壞)穩健性的方法。
對於傳統的 MSE (L2) 損失函數,異常值的影響可能很大,可能導致生成影像的品質下降。另一方面,雖然 Huber 損失函數可以抑制異常值的影響,但它往往會損害影像中精細細節的再現。
為了解決這個問題,所提出的方法巧妙地應用了 Huber 損失函數。透過在訓練的早期階段(當噪音較高時)安排使用 Huber 損失並在後期階段使用 MSE,它在離群值魯棒性和精細細節再現之間取得了平衡。
實驗結果證實,與純 Huber 損失或 MSE 相比,該方法對包含異常值的數據具有更高的準確性。計算成本的增加是最小的。
新加入的參數loss_type、huber_schedule和huber_c允許選擇損失函數類型(Huber、smooth L1、MSE)、調度方法(指數、常數、SNR)和Huber參數。這使得能夠根據資料集的特徵進行最佳化。
有關詳細信息,請參閱 PR #1228。
loss_type
:指定損失函數類型。選擇huber
表示 Huber 損失,選擇smooth_l1
表示平滑 L1 損失,選擇l2
表示 MSE 損失。預設為l2
,與之前相同。huber_schedule
:指定調度方法。選擇exponential
、 constant
或snr
。預設值為snr
。huber_c
:指定 Huber 的參數。預設值為0.1
。請閱讀版本以了解最新更新。
imagesize
、すぐにライブラリの更新がでぁpip install imagesize==1.4.1
いださい。bitsandbytes==0.43.0
、 prodigyopt==1.0
、 lion-pytorch==0.0.6
がrequirements.txt に含まれるようになりました。bitsandbytes
が公式に Windows をサポートしたため复雑な手順が不要になりました。.toml
)への記載をお勧めします。--console_log_simple
オねヂョチチチロチロチロチチ試しください。train_network.py
およびsdxl_train_network.py
で、學習したモデルのメタデータにのデータセトタえcaption_prefix
、 caption_suffix
、 keep_tokens_separator
) kens_separator 、 secondary_separator
、 enable_wildcard
)。train_network.py
イズも小さくなり、 sdxl_train_network.py
た読み込み時のメモri使用量も剪されます。--ip_noise_gamma_random_strength
~指定し--noise_offset_random_strength
値の範囲で変動させるオプションKohakuBlueleaf 氏に感謝します。--save_state_on_train_end
オプションが追加されましぁま。--sample_every_n_epochs
および--sample_every_n_steps
オプションに0
以下の數値を指定した時、警告を表示するとともにそれらを無視するよう変更しました。問題提起していただいた S-Del 氏に感謝します。 .toml
ァイルが UTF-8 編碼で読み込まれるようになりました。PR #1167 Horizon1704 氏に感謝します。secondary_separator
を追加しました。とで、そまsecondary_separator
シsecondary_separator=";;;"
affuru、掉落時にまとめて扱われます。true
にするとワイenable_wildcard
ドカード記法{aaa|bbb|ccc}
が使えます。またヂキチヂすす。keep_tokens_separator
をキャプション內に 2 つ使えるようにしましとぁぁとえにkeep_tokens_separator="|||"
。 1girl, hatsune miku, vocaloid ||| stage, mic ||| best quality, rating: general
すると、二番目の|||
で分割された部分はシャチチ、dropされた部分はシャチめ、dropされさ部分はめcaption_prefix
caption_prefix
とcaption_suffix
とあcaption_suffix
せて使えます。 hadfuruおよびkeep_tokens_separator
、 secondary_separator
の順に處理されます。tag_image_by_wd14_tagger.py
で v3 のoriポジトoriがサポートされました( --onnx
指定時のみ有效感謝)。pip install onnx==1.15.0 onnxruntime-gpu==1.17.1
等でインストール、プデートしてrequirements.txt
ださい。tag_image_by_wd14_tagger.py
で、モデルを--repo_id
のサブデっrekutoriに存するよににあトにぁええイルがキャッシュされます。 -- --model_dir
直下の不要なfuァイルは削除願います。tag_image_by_wd14_tagger.py
にいくつかのオプションを追加しました。--use_rating_tags
タグを出力する--use_rating_tags_as_last_tag
--character_tags_first
--character_tag_expand
--always_first_tags
--tag_replacement
make_captions.py
で--beam_search
を指定し--num_beams
に2以上の値を指定した時のエラーを修改しました。 い學習各--masked_loss
でマsukurossuをサポートしました。 マsukurosuを有效にするにぁチめをををすめぁめめ〒めをめめぁぁ〒ぁぁ〒
機能は完全にテsutoされていないため、不具合があるかもしれませめかぁの場合しれませます。
マsukuの指定にはControlNet データセットを使用します。マsuku肖像はRGB 肖像である必要があります。R チャンネルのピクセル値255 がrosu 計算対象、0がロス計算対像外になります。0-255の値は、0-1の範囲に変換されます(つまりピクセル値 128[トの詳細は LLLite ドキュメントをご覧ください。
學習sukuriputoに、學習データ中の異常値や外れ値(資料損壞)への耐性を高め各るための手法、Schedがががががが。
従來のMSE(L2)損失關係數では、異常値の影響を大きく受けてしまい、生成肖像の品質低をく恐めがいめめめめえええぁえええぁえぁええぁええぁえぁええええぁ2られますが、畫像の細部再現が損なわれがちでした。
この手法ではHuber損失關數の適用を工夫し、學習の初階(ノイズが大きい場合)ではHuber損失を、升級グすることで、異常値耐性と細部再現性のバランを取ります。
実験の結果では、この手法が純粋なHuber損失やMSEと比べ、異常値を含むデータでより高を含むデータでよい。
具體的には、新たに追加された引數loss_type、huber_schedule、huber_cで、損失關係數種類(Huber、smooth L1、MSE)とsukeジューringuぞぁ類方法(よりデータセットに応じた最適化が可能になります。
詳細は PR #1228 をご覧ください。
loss_type
l2
huber
關係數l2
smooth_l1
を指定します。huber_schedule
: sukeジューringu方法を指定します。 exponentialで指數關數的、 constant
で一定、 exponential
で訊號対鄒比に基づぁsnr
snr
す。huber_c
: Huber損失のパラメ0.1
タを指定します。 PR 內でいくつかの比較が共同されています。 この機能を試す場合、最初は--loss_type smooth_l1 --huber_schedule snr --huber_c 0.1
よいかもしれません。
最近の更新情報は發布をご覧ください。
train_network.py
支援的 LoRA 已被命名以避免混淆。文檔已更新。以下是此儲存庫中 LoRA 類型的名稱。
LoRA-LierLa : (LoRA用於線性層)
LoRA 用於具有 1x1 核心的線性層和 Conv2d 層
LoRA - C3Lier :(LoRA 用於具有3 x3 內核和線性層的C olutional 層)
除了1.之外,LoRA for Conv2d 層具有 3x3 內核
LoRA-LierLa 是train_network.py
的預設 LoRA 類型(沒有conv_dim
網路參數)。
例如,提示檔案可能如下所示
# prompt 1
masterpiece, best quality, (1girl), in white shirts, upper body, looking at viewer, simple background --n low quality, worst quality, bad anatomy,bad composition, poor, low effort --w 768 --h 768 --d 1 --l 7.5 --s 28
# prompt 2
masterpiece, best quality, 1boy, in business suit, standing at street, looking back --n (low quality, worst quality), bad anatomy,bad composition, poor, low effort --w 576 --h 832 --d 2 --l 5.5 --s 40
以#
開頭的行是註解。您可以在提示後使用--n
等選項為產生的影像指定選項。可以使用以下內容。
--n
否定提示直到下一個選項。--w
指定生成影像的寬度。--h
指定生成影像的高度。--d
指定產生影像的種子。--l
指定生成影像的CFG比例。--s
指定產生的步驟數。 ( )
和[ ]
等提示權重正在發揮作用。