kohya-ss/sd-scripts has 7,258 GitHub stars and 1,228 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-06 11:28 UTC. Last push 2026-11-02.
This repository contains training, generation and utility scripts for Stable Diffusion and other image generation models.
できること
- Fine-tuning (native training, DreamBooth): except for HunyuanImage-2.1
- Textual Inversion training: SD/SDXL
- Inpainting model training: SD1.5 and SDXL
- Image generation
計測したスター増加
- 24時間
- +1
- 7日間
- 更新が遅れています
- 15日間
- 更新が遅れています
- 1か月
- 更新が遅れています
期間ごとの純増数です。期間は重複しており、日別の値ではありません。未計測の値は空欄です。スター数は注目度の指標であり、品質の保証ではありません。
README-ja.md
オリジナルsd-scripts
目次
クリックすると展開します
はじめに
Stable Diffusion等の画像生成モデルの学習、モデルによる画像生成、その他のスクリプトを入れたリポジトリです。
スポンサー
このプロジェクトを支援してくださる企業・団体の皆様に深く感謝いたします。
スポンサー募集のお知らせ
このプロジェクトがお役に立ったなら、ご支援いただけると嬉しく思います。 GitHub Sponsorsで受け付けています。
更新履歴
Version 0.12.3 (2026-10-26):
- FLUX.1、Anima、HunyuanImage-2.1、MOSS-Image の学習に
--timestep_sampling truncated_logit_normalを追加しました。離散的な学習グリッド上の logit-normal 分布(--logit_mean/--logit_std)を--timestep_cutoff(デフォルト 0.95)で切り詰めてリスケールし、--timestep_uniform_ratio(デフォルト 0.01)の割合で一様サンプルを混ぜます。--logit_mean -1.09 --logit_std 0.95 --discrete_flow_shift 1.0と組み合わせると、MOSS-Image の事前学習のタイムステップスケジュールを正確に再現します(これまでは切り詰めと一様サンプルは再現していませんでした)。PR #2471- サブセットごとの
timestep_sampling.offsetがtruncated_logit_normalと、--weighting_scheme logit_normalのsigmaにも適用されるようになりました(他のモードと同様に、正のオフセットはノイズが多い側に偏らせます)。詳細はドキュメントをご覧ください。
- サブセットごとの
- MOSS-Image で、ConvRot INT8 の Linear 層も
--compileの対象になりました。融合 Triton カーネルをtorch.libraryのカスタム op として登録したため、コンパイルされたブロックが量子化済みの Linear 層ごとに分断されなくなり、--convrot_int8の学習でも--compileで高速化されます。PR #2473
- FLUX.1、Anima、HunyuanImage-2.1、MOSS-Image の学習に
Version 0.12.2 (2026-10-20):
- LoRA 学習向けに、H2D-only block swap(
--block_swap_h2d_only)を追加しました(Musubi Tuner からの移植)。凍結されたベースモデルの重みを CPU に置いたまま Host→Device 方向にのみコピーすることで、従来の block swap にあった Device→Host の転送が不要になり、学習速度が向上します。FLUX.1 / Chroma、Lumina Image 2.0、HunyuanImage-2.1、Anima、MOSS-Image で使用できます(SD3 は対象外)。--gradient_checkpointingが必須です。詳細はドキュメントをご覧ください。PR #2467--block_swap_ring_size(デフォルト 2)でストリーミングするブロック用の GPU バッファ数を指定できます。--use_pinned_memory_for_block_swapを指定すると CPU 側のコピーを pinned メモリに置き、転送が高速になります。- 開発者向け: 各モデルの
enable_block_swapはデバイスの代わりにBlockSwapConfigを受け取るようになりました。また offloader のsubmit_move_blocksは Musubi Tuner と同じsubmit_move_blocks_forwardに改名されています。
- MOSS-Image で、複数のキャプション候補(
enable_multiline_captionと区切り行)を持つ画像でも Text Encoder の出力をキャッシュできるようになりました。全候補をエンコードして一つのキャッシュファイルに保存し、ステップごとにランダムに一つを選びます。PR #2466- 処理済みのキャプション文字列もキャッシュファイルに保存されるため、キャプション(や
caption_prefix/caption_suffix)を変更すると自動的にキャッシュが作り直されます。バージョン 0.12.1 で作成したキャッシュファイルは、候補が一つの画像ではそのまま使えます。 - キャッシュのサイズとキャッシュ時間は候補数倍になります。他のモデルでは、複数候補を持つ画像があると引き続き Text Encoder 出力をキャッシュできません。
tools/cache_text_encoder_outputs.pyは、複数候補に対応していないモデルで複数候補があるとエラーで停止するようになりました(以前は先頭の候補だけを黙ってキャッシュしていました)。
- 処理済みのキャプション文字列もキャッシュファイルに保存されるため、キャプション(や
- LoRA 学習向けに、H2D-only block swap(
Version 0.12.1 (2026-10-18):
- MOSS-Image(OpenMOSS。Qwen3.5-9B テキストエンコーダーと FLUX.2 VAE を使う 5B の DiT)の LoRA 学習に対応しました。PR #2458、PR #2459、PR #2460、PR #2461
moss_image_train_network.pyで DiT の LoRA(LoHa / LoKr も可)と、オプションでテキストエンコーダーの LoRA を学習できます。公式の diffusers 形式の分割ファイルと、ComfyUI 向けの単一ファイルのチェックポイントを読み込めます。詳細はドキュメントをご覧ください。- fp8 の代わりに、ベース重みの ConvRot INT8 量子化(DiT は
--convrot_int8、テキストエンコーダーは--convrot_int8_text_encoder。Musubi Tuner からの移植)が使えます。ComfyUI の事前量子化済み*_int8_convrot.safetensorsは自動判別されます。融合 int8 カーネルにはtriton(Windows ではtriton-windows)が必要です。 - DiT の LoRA は変換なしで ComfyUI で使用できます。LoRA を適用した推論用に
moss_image_minimal_inference.pyも用意しています。 tools/cache_latents.pyとtools/cache_text_encoder_outputs.pyは--moss_imageで MOSS-Image に対応しています。- LoRA モジュールは新規の汎用モジュール
networks.lora_genericです(正規表現によるモジュール選択、network_reg_dims/network_reg_lrsなどnetworks.lora_animaと同じ)。今後、他のアーキテクチャの基盤にする予定です。
- 改行を含むキャプションをそのまま使うためのサブセットオプション
enable_multiline_caption(--enable_multiline_caption)を追加しました。Anima、Lumina、HunyuanImage など LLM ベースの Text Encoder を持つモデル向けです。multiline_caption_separator(デフォルト---===---)で始まる行で、一つの画像に対する複数のキャプション候補を区切ることができ、ステップごとにランダムに一つが選ばれます。fine tuning 方式のメタデータファイルではcaptionに文字列のリストも指定できます。詳細はデータセット設定のドキュメントをご覧ください。.txtのサンプルプロンプトファイルで、\n(バックスラッシュ + n)が改行に変換されるようになりました。- 複数行キャプションで
caption_prefix/caption_suffixが 1 行目 / 最終行にしか付かなかった問題を修正しました(enable_wildcard有効時は prefix が 1 行目、suffix が最終行にのみ付き、無効時は suffix が消えていました)。
- Text Encoder の出力をキャッシュする場合(
--cache_text_encoder_outputs)に、caption_prefix/caption_suffix、secondary_separator、複数行キャプションの 1 行目への切り詰めが適用されず、キャプションがそのままエンコードされていた問題を修正しました。Issue #2453- これらのオプションを
--cache_text_encoder_outputs_to_diskと併用している場合は、既存のキャッシュファイル(*_te.npzなど)を削除し、処理後のキャプションで作り直してください。 enable_wildcardはキャッシュされた出力には適用できません(キャプションはそのままエンコードされます)。この場合に警告を表示するようになりました。- 独自のキャッシュ戦略を実装している場合:
TextEncoderOutputsCachingStrategy.cache_batch_outputsに、処理後のキャプションを渡すcaptions引数が追加されています。
- これらのオプションを
--lr_scheduler_typeでカスタムの学習率スケジューラを指定した場合に、sd-scripts が計算した総学習ステップ数と warmup ステップ数を、num_training_stepsとnum_warmup_stepsとしてスケジューラに渡すようにしました。Issue #2444- スケジューラのコンストラクタがこの名前の引数を持つ場合のみ渡されます。
--lr_scheduler_argsで明示的に指定した値が優先されます。異なる名前の引数(total_stepsなど)を使うスケジューラには影響しませんので、従来通り--lr_scheduler_argsで指定してください。 num_training_stepsを持つカスタムスケジューラを--lr_scheduler_argsで指定せずに使っていた場合、これまではスケジューラのデフォルト値で動作していましたが、今後は実際の学習ステップ数が使われますのでご注意ください。同様に、num_warmup_stepsを持つスケジューラには--lr_warmup_stepsが渡されるようになります(従来はエラーになっていました)。
- スケジューラのコンストラクタがこの名前の引数を持つ場合のみ渡されます。
- MOSS-Image(OpenMOSS。Qwen3.5-9B テキストエンコーダーと FLUX.2 VAE を使う 5B の DiT)の LoRA 学習に対応しました。PR #2458、PR #2459、PR #2460、PR #2461
Version 0.12.0 (2026-09-24):
- Windows on ARM64(NVIDIA RTX Spark PC など)に対応しました。PR #2430、PR #2431、PR #2433
opencv-pythonがオプションになり(未インストール時は Pillow/NumPy による代替実装を使用)、requirements.txtが Windows ARM64 用 wheel のあるパッケージを自動的に選択するようになりました。詳細はOpenCVなしでのインストール/Windows on ARM64についてをご覧ください。requirements.txtのtransformers、schedulefree、safetensorsを Windows ARM64 用 wheel が提供されているバージョンに更新しました。
requirements.txtの依存関係を更新しました:transformers4.57.6 → 5.5.4、diffusers0.32.1 → 0.40.0、accelerate1.6.0 → 1.15.0、huggingface-hub0.34.3 → 1.32.0。PR #2436- 主にセキュリティ上の保守のための更新です(
transformers4.x 系とdiffusers0.38 未満には修正が提供されなくなっています)。以前のバージョンのライブラリでもこのリリースは動作しますので、すぐに更新する必要はありませんが、なるべく早めにpip install --upgrade -r requirements.txtを実行することをお勧めします。 diffusers0.40 は PyTorch 2.6 以降を必要とします(sd-scripts はすでに PyTorch 2.6.0 以降を必要としています)。CI は PyTorch 2.6.0 と 2.8.0 でテストするようになりました。transformers5.x のCLIPTokenizerは、オリジナルの CLIP トークナイザが行っていたftfyによるテキスト正規化(曲がった引用符の直線化、全角文字の半角化など)を行わなくなりました。sd-scripts 側で同じ正規化を行うようにしたため、トークナイズ結果は従来と変わりません。tests/localのローカル回帰テストにより、Text Encoder の出力、VAE の出力、ノイズスケジューラが従来のバージョンと同一であることを確認しています。diffusers0.40 は.to(dtype)のたびに "There are modules in AutoencoderKL that should be kept in float32: [] ..." という誤った警告を出します(リストが空でも警告する diffusers 側のバグ)。sd-scripts ではリストが空の場合にこの警告を抑制しています。
- 主にセキュリティ上の保守のための更新です(
transformers5.6 以降に対応し、requirements.txtのtransformersを 5.17.0 に更新しました。PR #2437transformers5.6 でCLIPTextModelの内部構造が変わりました(text_modelサブモジュールが無くなりました)。sd-scripts ではモデルをラップすることで、チェックポイントのキー、Text Encoder の LoRA の重み名(lora_te_text_model_...)、text_encoder.text_model.*によるアクセスが従来と変わらないようにしています。transformers5.6 未満ではラップは行われず、何も変わりません。- また
transformers5.6 では T5(FLUX.1 / SD3 の T5-XXL、HunyuanImage の byT5)の attention の実装が SDPA に切り替わり、高速化・省メモリ化が期待できます。T5 の bf16/fp16 出力は従来のバージョンからごくわずかに変わります(T5-XXL でコサイン類似度 ≈ 0.998、fp32 に対する精度は同等)。生成画像や学習結果の細部が変わる可能性がありますが、以前のバージョンでキャッシュした Text Encoder 出力もそのまま使えます。他の Text Encoder の出力は同一です。 - 上記と同様に、以前のバージョンの
transformersでも動作しますが、pip install --upgrade -r requirements.txtでの更新をお勧めします。
- SD1.x / SD2.x / SDXL の学習向けに、OFTv2 と BOFT のネットワークモジュール(
networks.oft_v2、networks.boft)を追加しました。PR #2357- PEFT の実装に準拠した直交変換系のアダプタです。PEFT 形式の重みも読み込めます。umisetokikaze 氏に感謝します。
- これらのモジュールでは
--network_dimはブロックサイズを意味します。詳細はドキュメントをご覧ください。
- FLUX.1 および Anima の LoRA 学習で、サブセットごとの timestep sampling offset(
custom_attributes.timestep_sampling.offset)を追加しました。PR #2401 okdsf 氏に感謝します。- データセットのサブセットごとに、timestep のサンプリング分布を低ノイズ側または高ノイズ側へ偏らせることができます。詳細はドキュメントをご覧ください。
--show_timesteps使用時に offset を適用した timestep の分布を確認できる--show_timesteps_offsetを追加しました。PR #2410shift/flux_shiftの timestep sampling における offset の挙動もドキュメントに記載しました。
- SD1.x / SD2.x 用の古い画像生成スクリプト
gen_img_diffusers.pyを削除しました。しばらく前から動作しておらず(リファクタリングで削除された関数に依存していました)、実験的な CLIP / VGG16 guidance を除くすべての機能はgen_img.pyでサポートされています。代わりにgen_img.pyをお使いください(gen_img_README-ja.md をご覧ください)。ファイルは以前のリリースから取得できます。PR #2439 - 学習中のサンプル画像生成の
--sample_sampler、およびgen_img.py/sdxl_gen_img.pyの--samplerで、dpmsolverとdpmsingleを指定すると最近のバージョンのdiffusersでエラーになる問題を修正しました。PR #2438lms/k_lmsサンプラーにはrequirements.txtに含まれないscipyパッケージが必要です。scipyが未インストールの場合、(最初のサンプル生成時ではなく)起動時に分かりやすいエラーを表示するようにしました。使用する場合はpip install scipyを実行してください。
- Windows on ARM64(NVIDIA RTX Spark PC など)に対応しました。PR #2430、PR #2431、PR #2433
サポートモデル
- Stable Diffusion 1.x/2.x
- SDXL
- SD3/SD3.5
- FLUX.1
- LUMINA
- HunyuanImage-2.1
- Anima
- MOSS-Image
機能
- LoRA学習
- fine-tuning(DreamBooth):HunyuanImage-2.1以外のモデル
- Textual Inversion学習:SD/SDXL
- インペインティングモデル学習:SD1.5およびSDXL
- 画像生成
- その他、モデル変換やタグ付け、LoRAマージなどのユーティリティ
ドキュメント
学習ドキュメント(英語および日本語)
日本語は折りたたまれているか、別のドキュメントにあります。
- LoRA学習の概要
- データセット設定 / 英語版
- 高度な学習オプション
- OFTv2 / BOFT学習
- SDXL学習
- SD3学習
- FLUX.1学習
- LUMINA学習
- HunyuanImage-2.1学習
- Anima学習
- MOSS-Image学習
- Fine-tuning
- Textual Inversion学習
- ControlNet-LLLite学習 / 英語版
- Anima向けControlNet-LLLite学習ガイド
- Validation
- マスク損失学習 / 英語版
- インペインティング学習
その他のドキュメント
旧ドキュメント(日本語)
- 学習について、共通編 : データ整備やオプションなど
- DreamBoothの学習について
AIコーディングエージェントを使う開発者の方へ
This repository provides recommended instructions to help AI agents like Claude and Gemini understand our project context and coding standards.
To use them, you need to opt-in by creating your own configuration file in the project root.
Quick Setup:
Create a
CLAUDE.mdand/orGEMINI.mdfile in the project root.Add the following line to your
CLAUDE.mdto import the repository's recommended prompt:@./.ai/claude.prompt.mdor for Gemini:
@./.ai/gemini.prompt.mdYou can now add your own personal instructions below the import line (e.g.,
Always respond in Japanese.).
This approach ensures that you have full control over the instructions given to your agent while benefiting from the shared project context. Your CLAUDE.md and GEMINI.md are already listed in .gitignore, so they won't be committed to the repository.
このリポジトリでは、AIコーディングエージェント(例:Claude、Geminiなど)がプロジェクトのコンテキストやコーディング標準を理解できるようにするための推奨プロンプトを提供しています。
それらを使用するには、プロジェクトディレクトリに設定ファイルを作成して明示的に有効にする必要があります。
簡単なセットアップ手順:
プロジェクトルートに
CLAUDE.mdやGEMINI.mdファイルを作成します。CLAUDE.mdに以下の行を追加して、リポジトリの推奨プロンプトをインポートします。@./.ai/claude.prompt.mdまたはGeminiの場合:
@./.ai/gemini.prompt.mdインポート行の下に、独自の指示を追加できます(例:
常に日本語で応答してください。)。
この方法により、エージェントに与える指示を各開発者が管理しつつ、リポジトリの推奨コンテキストを活用できます。CLAUDE.md および GEMINI.md は .gitignore に登録されているため、リポジトリにコミットされることはありません。
Windows環境でのインストール
Windowsでの動作に必要なプログラム
Python 3.10.xおよびGitが必要です。
- Python 3.10.x: https://www.python.org/downloads/windows/ からWindows installer (64-bit)をダウンロード
- git: https://git-scm.com/download/win から最新版をダウンロード
Python 3.11.x、3.12.xでも恐らく動作します(未テスト)。
PowerShellを使う場合、venvを使えるようにするためには以下の手順でセキュリティ設定を変更してください。 (venvに限らずスクリプトの実行が可能になりますので注意してください。)
- PowerShellを管理者として開きます。
- 「Set-ExecutionPolicy Unrestricted」と入力し、Yと答えます。
- 管理者のPowerShellを閉じます。
インストール手順
PowerShellを使う場合、通常の(管理者ではない)PowerShellを開き以下を順に実行します。
git clone https://github.com/kohya-ss/sd-scripts.git
cd sd-scripts
python -m venv venv
.\venv\Scripts\activate
pip install torch==2.6.0 torchvision==0.21.0 --index-url https://download.pytorch.org/whl/cu124
pip install --upgrade -r requirements.txt
accelerate config
コマンドプロンプトでも同一です。
(なお、python -m venv~の行で「python」とだけ表示された場合、py -m venv~のようにpythonをpyに変更してください。)
注:bitsandbytes、prodigyopt、lion-pytorch は requirements.txt に含まれています。
この例ではCUDA 12.4版をインストールします。異なるバージョンのCUDAを使用する場合は、適切なバージョンのPyTorchをインストールしてください。たとえばCUDA 12.1版の場合は pip install torch==2.6.0 torchvision==0.21.0 --index-url https://download.pytorch.org/whl/cu121 としてください。
accelerate configの質問には以下のように答えてください。(bf16で学習する場合、最後の質問にはbf16と答えてください。)
- This machine
- No distributed training
- NO
- NO
- NO
- all
- fp16
※場合によって ValueError: fp16 mixed precision requires a GPU というエラーが出ることがあるようです。この場合、6番目の質問(
What GPU(s) (by id) should be used for training on this machine as a comma-separated list? [all]:)に「0」と答えてください。(id 0のGPUが使われます。)
requirements.txtとPyTorchについて
PyTorchは環境によってバージョンが異なるため、requirements.txtには含まれていません。前述のインストール手順を参考に、環境に合わせてPyTorchをインストールしてください。
スクリプトはPyTorch 2.6.0でテストしています。PyTorch 2.6.0以降が必要です。
RTX 50シリーズGPUの場合、PyTorch 2.8.0とCUDA 12.8/12.9を使用してください。requirements.txtはこのバージョンでも動作します。
OpenCVなしでのインストール/Windows on ARM64について
opencv-python は requirements.txt に含まれていますが、学習・データセット処理パイプラインが利用している OpenCV 機能は限定的です(主に cv2.resize、cv2.cvtColor、およびデバッグ用の cv2.imshow)。opencv-python がインストールされていない場合、Pillow と NumPy による軽量な代替実装(library/_cv2_stub)が自動的に cv2 として登録されるため、既存のスクリプトはそのまま動作します。OpenCV の大きなインストールを避けたい場合は、requirements のインストール後にアンインストールしてください:
pip uninstall opencv-python
Windows on ARM64(たとえば NVIDIA RTX Spark PC など)では opencv-python のビルド済み wheel が提供されていないため、requirements.txt の環境マーカーにより自動的にスキップされます。通常どおり pip install --upgrade -r requirements.txt でインストールできます。同じ理由で、このプラットフォームでは tensorboard の代わりに tensorboardX がインストールされます(TensorBoard 2.x が依存する grpcio に Windows ARM64 用 wheel がないため)。--log_with tensorboard でのログ出力は tensorboardX 経由でそのまま動作します。ログの閲覧は別のマシンの TensorBoard で行ってください。
以下に注意してください:
- OpenCV を含むデフォルトのインストールが推奨される経路です。代替実装は、データセット処理がデフォルトで使う
INTER_AREAとINTER_LINEARのリサイズを NumPy で OpenCV と同じ計算で再現しているため、学習結果は丸め誤差の範囲で一致しますが、OpenCV より低速です(2400 万画素の画像 1 枚あたり 0.1 秒程度)。INTER_CUBIC/INTER_LANCZOS4は Pillow を経由するため、わずかに結果が異なります。 - 次のツールは実際の
opencv-pythonを必要とし、未インストール時は明確なメッセージで終了します:tools/canny.py、tools/detect_face_rotate.py、およびgen_img.py/sdxl_gen_img.pyの ControlNetcannyプリプロセッサ。 - データセット確認時の
cv2.imshowは、OpenCV が無い場合 Pillow 標準のビューア(PIL.Image.show)で表示され、cv2.waitKeyはターミナルでのinput()待ちに置き換わります(1枚ずつ確認できます)。
xformersのインストール(オプション)
xformersをインストールするには、仮想環境を有効にした状態で以下のコマンドを実行してください。
pip install xformers --index-url https://download.pytorch.org/whl/cu124
必要に応じてCUDAバージョンを変更してください。一部のGPUアーキテクチャではxformersが利用できない場合があります。
Linux/WSL2環境でのインストール
LinuxまたはWSL2環境でのインストール手順はWindows環境とほぼ同じです。venv\Scripts\activate の部分を source venv/bin/activate に変更してください。
※NVIDIAドライバやCUDAツールキットなどは事前にインストールしておいてください。
DeepSpeedのインストール(実験的、LinuxまたはWSL2のみ)
DeepSpeedをインストールするには、仮想環境を有効にした状態で以下のコマンドを実行してください。
pip install deepspeed==0.16.7
アップグレード
新しいリリースがあった場合、以下のコマンドで更新できます。
cd sd-scripts
git pull
.\venv\Scripts\activate
pip install --use-pep517 --upgrade -r requirements.txt
コマンドが成功すれば新しいバージョンが使用できます。
PyTorchのアップグレード
PyTorchをアップグレードする場合は、Windows環境でのインストールのセクションのpip installコマンドを参考にしてください。
謝意
LoRAの実装はcloneofsimo氏のリポジトリを基にしたものです。感謝申し上げます。
Conv2d 3x3への拡大は cloneofsimo氏 が最初にリリースし、KohakuBlueleaf氏が LoCon でその有効性を明らかにしたものです。KohakuBlueleaf氏に深く感謝します。
ライセンス
スクリプトのライセンスはASL 2.0ですが(Diffusersおよびcloneofsimo氏のリポジトリ由来のものも同様)、一部他のライセンスのコードを含みます。
Memory Efficient Attention Pytorch: MIT
bitsandbytes: MIT
BLIP: BSD-3-Clause