MOSS-ImageのLoRA学習|KohakuMoss・AI Toolkitなど4ツールの手順
KohakuMossTrainer、AI Toolkit、sd-scripts、Fizgigを比較。コミュニティの学習記録と、導入・設定・VRAM・ComfyUIでの確認手順を解説。
MOSS-ImageのLoRAを初めて作るなら、Baseを起点にQwen3.5-9Bを凍結し、継続して管理しやすい学習環境を選びましょう。KohakuMossTrainerは設定生成と細かなオフロード、AI Toolkitはジョブ管理とYAML、sd-scriptsは明示的なコマンド操作、Fizgigは学習後のエポック比較に強みがあります。
4ツールともMOSS-Imageの公開学習例がありますが、ファイルが書き出せたことと、人物がよく似ることは別です。学習後はComfyUIで、データにない角度や背景、プロンプトも試す必要があります。学習中に8GB未満でも、テキストのキャッシュ作成やプレビューまで収まるとは限りません。
目次
目的と実例から選ぶ
| ツール | 向いている使い方 | 注意点 |
|---|---|---|
| KohakuMossTrainer | MOSS専用CLI、GPU別設定、LyCORIS、ComfyUI形式の出力 | RAM・キャッシュ・トークン数も確認 |
| AI Toolkit | データセットとジョブのUI管理、YAML、LoRA/LoKrの比較 | ローカルとクラウドを区別。LoKrの結果は通常LoRAの指標ではない |
| sd-scripts | 設定を読みやすいTOMLで残し、CLIで再現する | テキストキャッシュのピークがあるため8GBを一律推奨できない |
| Fizgig | 手順に沿った画面操作、プレビュー、エポック比較 | MOSS対応は実験的。プレビュー条件が見た目を左右する |
確認日:2026年11月3日。公式コード・資料、公開学習ログ、モデルカードを分析した手順レビューです。AirMoreでは学習やGPUベンチマークを実行していません。パスと試行用設定は環境に合わせて変更してください。構文や引数の確認は画質の実証ではありません。調査・執筆・翻訳にAIを使用し、表紙は編集用イラストです。
画像・キャプション・モデルを準備する
最初は小規模で変化のあるデータで試します。人物や物体なら角度・距離・表情・配置を変え、画風なら被写体を分散させて、特定の顔や物体と画風を結び付けないようにします。評価用の画像やプロンプトも残し、利用許諾のある素材を使いましょう。
001.pngと001.txtのように、同じ名前の画像とUTF-8キャプションを並べます。目に見える内容、構図、変化する要素を説明し、画像内の文字は正確に記録します。OpenMOSSは詳しい自然文を推奨していますが、long/medium/shortのJSONは説明文を生成するための形式であり、どの学習ツールにもそのまま渡せる設定ではありません。次は説明用の例で、実際の学習結果ではありません。
mossbird, a small teal ceramic bird in a three-quarter view on a wooden table. Its beak points left. Soft daylight enters from the right, with a plain cream wall behind it. 英語の例は共通の出発点として使うもので、画像内の日本語や中国語、アクセント付き文字を翻訳する指示ではありません。自動説明に見えない情報を足さず、人物ではトリガーと説明の範囲を統一します。髪型・服・背景を毎回同じ書き方で強調すると、不要な結び付きが残る場合があります。
Comfy-OrgのMOSS-Image配布にはdiffusion_models、text_encoders、vaeがあります。省メモリCLI例ではmoss_image_base_int8_convrot.safetensors、qwen3.5_9b_int8_convrot.safetensors、対応するFLUX.2 VAEを使います。Kohakuの例はflux2-vae_small.safetensors、下のsd-scripts例はflux2-vae.safetensorsです。ComfyUIとは別のPython環境を用意してください。
KohakuMossTrainer:設定生成から書き出しまで

KohakuMossTrainerはMOSS専用の独立した学習環境で、ComfyUIのカスタムノードではありません。GPU別のメモリ設定、データ形式、LyCORISの方式を組み合わせてPython設定を生成できる点が特徴です。OpenMOSSも関連プロジェクトとして掲載し、Base/SFTとComfyUI形式の出力に対応しています。LoRA、LoKr、フル学習は別モードです。
機能紹介だけでなく、yoru氏による13枚・50ステップの画風学習例があり、ログとComfyUI/LyCORIS両形式の出力が公開されています。ただし、効果を出すには強度を上げる必要があったとの報告です。学習と出力の動作例であり、50ステップで画風が完成する証拠ではありません。そこで使われた個人製GUIは配布されていません。
公開された学習記録: yoru
1. 専用環境へ導入する
確認したリビジョンを取得します。Windowsでは指定のC++ Build Toolsも必要です。ヘルパーはGPUとドライバーを判定して依存関係を導入します。下のWindows用コマンドか、Linuxのbash scripts/install/install.shを実行後、cmdなら.venv\Scripts\activate.bat、Linuxならsource .venv/bin/activateで有効化します。システム全体のスクリプト実行ポリシーを変更する必要はありません。
git clone https://github.com/KohakuBlueleaf/KohakuMossTrainer.git
cd KohakuMossTrainer
git checkout b06ac60e54321955c24e818add5d32b2fad23ed6 Windows
powershell -ExecutionPolicy Bypass -File scripts\install\install.ps1 Linux
bash scripts/install/install.sh 2. 環境確認とモデル取得
kohakumoss-doctorで不足項目を確認します。下の1行コマンドは必要なフォルダー構造を保って取得します。既存の対応ComfyUIモデルフォルダーも利用できます。初回のダウンロードとキャッシュには、LoRA出力とは別に保存容量が必要です。
hf download Comfy-Org/MOSS-Image diffusion_models/moss_image_base_int8_convrot.safetensors text_encoders/qwen3.5_9b_int8_convrot.safetensors vae/flux2-vae_small.safetensors --local-dir ComfyUI/models 3. データ計画とキャッシュを作る
絶対パスを置き換えます。–source folder_nlは自然文キャプション付き画像フォルダーを明示する指定です。計画の内容を確認してから、テキストと潜在表現をキャッシュします。リポジトリ直下で、専用環境を有効にして実行してください。
kohakumoss-doctor
kohakumoss-config new train --weights ComfyUI/models --data /absolute/path/to/moss-data --source folder_nl --name moss_subject
kogine run scripts/data/inspect_data.py --config configs/user/moss_subject_data.py
kogine run scripts/data/cache_text.py --config configs/user/moss_subject_data.py
kogine run scripts/data/cache_latents.py --config configs/user/moss_subject_data.py 4. 試行用の設定を決める
生成されたuse_configの行を残し、configs/user/moss_subject.pyの下記項目を調整します。最適値の保証ではありません。何枚・何トークンでバッチになるかを確認し、1更新=1画像と考えないこと。長いキャプションが小容量GPUの予算を超えるなら、キャッシュ前に画像面積を下げます。
STEPS = 1200
DIM = 16
ALPHA = 16.0
LR = 0.0001
SAVE_EVERY = 200
SAMPLE_EVERY = 0 5. 短い動作確認から本学習へ
100ステップの確認は別名の実行にします。非有限値が出ていないか、実際に出力されたかをログで見てから本学習へ進みます。短時間の成功は似顔や画風の完成を意味しません。初回はカーネル調整に時間がかかります。RESUME=latestは状態を再開し、INIT_FROMは重みから新しい最適化状態で始めます。
kogine run scripts/train/moss.py --config configs/user/moss_subject.py --set RUN_NAME=moss_smoke --set STEPS=100 --set SAMPLE_EVERY=0 kogine run scripts/train/moss.py --config configs/user/moss_subject.py 6. ComfyUI用ファイルを選ぶ
runs/moss/moss_subject/export/と各チェックポイントのexportを確認し、ComfyUIでは-comfy.safetensorsを使います。LyCORIS形式やマージ済み本体とは別ファイルです。config.json、ログ、元モデルの版も残しておきましょう。
AI Toolkit:UIとYAMLでジョブを作る

AI ToolkitはMOSS-Image BaseとSFTを別の構成として扱い、UIと設定ファイルでジョブを管理できます。通常の画像生成LoRAならmoss_image:baseとOpenMOSS-Team/MOSS-Image-Baseを選びます。編集用の条件付けは別の用途です。train_text_encoderはfalseを維持します。
かみもと氏はWindows 11、RTX 4070 12GB、RAM 48GB、アニメ画像30枚、1024pxのバケット、2,000ステップでの学習を報告しています。rank/alpha 16/16、LR 1e-4、AdamW8bit、本体とエンコーダーのConvRot8、Transformer 50%・エンコーダー100%のオフロード、キャッシュ、プレビュー無効という条件です。実写版はA100での実行なので、そちらの時間を4070の結果にしてはいけません。
公開された学習記録: かみもと · u/FitEgg603
1. 導入してUIを開く
リポジトリを取得し、Windowsはrun_windows.bat、Linuxはrun_linux.shを使います。現在の内蔵Managerは実験的で、環境を準備してlocalhost:8675を開きます。下のManager CLIも使えます。起動時に更新されることがあるため、最終的なコミットとジョブ設定を記録します。
git clone https://github.com/ostris/ai-toolkit.git
cd ai-toolkit python3 -m manager install
python3 -m manager doctor
python3 -m manager launch 2. データセットとジョブを作る
キャプション付きフォルダーを指定し、別名のジョブを作ってMOSS-Image Baseを選択します。architectureがmoss_image:baseか確認し、通常LoRAのrank/alpha 16/16から始めます。モデルとエンコーダーの量子化はconvrot8、計算はbf16、エンコーダー学習は無効です。
3. 省メモリの条件を合わせる
batch 1、勾配蓄積1、1024px、LR 1e-4、AdamW8bit、勾配チェックポイント、latent/textキャッシュを設定します。エンコーダーのオフロードは1.0、Transformerは0.5。初回はプレビューを無効にします。コミュニティの出発点であり、すべての12GB環境に収まる保証ではありません。
4. YAMLを保存して起動する
下の完全な例をconfig/moss_subject.yamlへ保存し、フォルダーと保存数を確認します。まず別名へコピーしてsteps: 1の動作確認を行い、その後に本設定を起動します。UIで同じ値を入れ、YAMLを書き出して残す方法でも構いません。
AI ToolkitのYAML例
job: extension
config:
name: moss_subject
process:
- type: diffusion_trainer
training_folder: output
device: cuda
trigger_word: mossbird
network:
type: lora
linear: 16
linear_alpha: 16
save:
dtype: bf16
save_every: 250
max_step_saves_to_keep: 8
save_format: diffusers
push_to_hub: false
datasets:
- folder_path: /absolute/path/to/moss-data
caption_ext: txt
resolution: [1024]
cache_latents_to_disk: true
num_repeats: 1
train:
batch_size: 1
steps: 2000
gradient_accumulation: 1
train_unet: true
train_text_encoder: false
gradient_checkpointing: true
noise_scheduler: flowmatch
optimizer: adamw8bit
lr: 0.0001
timestep_type: shift
dtype: bf16
cache_text_embeddings: true
disable_sampling: true
model:
name_or_path: OpenMOSS-Team/MOSS-Image-Base
arch: moss_image:base
quantize: true
qtype: convrot8
quantize_te: true
qtype_te: convrot8
low_vram: true
layer_offloading: true
layer_offloading_text_encoder_percent: 1.0
layer_offloading_transformer_percent: 0.5
sample:
sampler: flowmatch
sample_every: 250
width: 1024
height: 1024
samples:
- prompt: mossbird, a teal ceramic bird on a windowsill
seed: 42
guidance_scale: 3
sample_steps: 30 python run.py config/moss_subject.yaml 5. 最後だけでなく途中も比較する
例では250更新ごとに保存し、8個を保持します。名前付き出力フォルダーを確認してください。別のLoKr報告にはfactor、6,600ステップ、追加のガイダンスなど異なる条件があり、「90%似ている」は投稿者の目視評価です。通常LoRAの客観指標として転用できません。
sd-scripts:TOMLで学習条件を固定する

sd-scriptsには専用のmoss_image_train_network.pyと日英のガイドがあります。確認した版にはv0.12.3のtruncated_logit_normalとINT8/compile改善が含まれます。これは学習スクリプトの対応であり、古いkohya_ss GUIに同じ項目があることを保証しません。
エマノン氏は生成画像500枚の画風学習を記録し、FFN限定では髪のアクセサリーが増える結果も報告しています。配布LoRAのFFF_MOSS-Alba-styleも、sd-scripts・Base・エンコーダー凍結・dim 16/alpha 1での学習を明記しています。どちらも動作例ですが、特定の層だけを学習すればよいという結論ではありません。
公開された学習記録: エマノン · FFF_MOSS-Alba-style
1. PythonとCUDA版PyTorchを準備する
固定したソースから専用venvを作成します。Windowsのcmdはvenv\Scripts\activate.bat、Linuxはsource venv/bin/activateで有効化し、GPUに合うCUDA版PyTorchを先に導入します。READMEのtorch 2.6/CUDA 12.4例はRTX 50向けではありません。依存関係を導入し、CUDAがTrueになることを確認して、AccelerateをローカルGPU1台・bf16で設定します。
git clone https://github.com/kohya-ss/sd-scripts.git
cd sd-scripts
git checkout cb70b96858477e716a2096292ab8aab433277f38
python -m venv venv python -m pip install --upgrade -r requirements.txt
python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
accelerate config 2. dataset.tomlを作る
image_dirを絶対パスへ変更します。WindowsはC:/…で記述できます。batch 1、1024px、シャッフルなし、repeat 1の例で、バケットの縦横は16の倍数が必要です。キャッシュと両立するか確認せずに、ランダムな説明変更や画像拡張を追加しないでください。
dataset.toml
[general]
caption_extension = ".txt"
shuffle_caption = false
enable_multiline_caption = true
[[datasets]]
resolution = 1024
batch_size = 1
enable_bucket = true
bucket_reso_steps = 64
[[datasets.subsets]]
image_dir = "/absolute/path/to/moss-data"
num_repeats = 1 3. train_moss.tomlを作る
事前量子化済みConvRot INT8の2ファイルとFLUX.2 VAEを指定します。形式を自動判別するため、この例では量子化フラグは不要です。エンコーダーを凍結し、DiTだけを学習します。rank 16・alpha 1は公式例のスケールに合わせたもので、alphaだけ16へ変えると同等の実験にはなりません。
train_moss.toml
pretrained_model_name_or_path = "/absolute/path/to/moss_image_base_int8_convrot.safetensors"
text_encoder = "/absolute/path/to/qwen3.5_9b_int8_convrot.safetensors"
vae = "/absolute/path/to/flux2-vae.safetensors"
dataset_config = "dataset.toml"
output_dir = "/absolute/path/to/moss-output"
output_name = "moss_subject"
save_model_as = "safetensors"
save_precision = "bf16"
network_module = "networks.lora_generic"
network_dim = 16
network_alpha = 1
network_train_unet_only = true
learning_rate = 0.0001
optimizer_type = "AdamW"
lr_scheduler = "constant"
timestep_sampling = "truncated_logit_normal"
logit_mean = -1.09
logit_std = 0.95
discrete_flow_shift = 1.0
max_train_epochs = 10
save_every_n_epochs = 1
gradient_accumulation_steps = 1
mixed_precision = "bf16"
gradient_checkpointing = true
cache_latents = true
cache_latents_to_disk = true
cache_text_encoder_outputs = true
cache_text_encoder_outputs_to_disk = true
blocks_to_swap = 20
max_data_loader_n_workers = 2
persistent_data_loader_workers = true
seed = 42 4. 起動して保存を確認する
1行のAccelerateコマンドで実行します。画像30枚・repeat 1・batch 1・勾配蓄積1・GPU1台なら、10エポックは約300更新です。完成を保証する設定ではなく試行用です。キャッシュとチェックポイントは別の場所に保存されるため、空き容量も確認します。
accelerate launch --num_cpu_threads_per_process 1 moss_image_train_network.py --config_file train_moss.toml 5. メモリ設定を一つずつ変える
例では20ブロックを交換し、36へ増やすとVRAMを節約できますが転送の負担があります。H2D-onlyにも勾配チェックポイントが必要です。ブロックスワップとunsloth/CPUのオフロードチェックポイントは併用できません。この経路ではFP8 baseとW4A8 GPTQエンコーダーは非対応です。Windowsは少数の常駐ワーカーにすると起動の繰り返しを抑えられます。
Fizgig:画面操作とエポック比較

Fizgig 9.xは、学習画面とエポック比較をまとめたい場合に便利です。MOSS対応は実験的で、Baseで学習し、通常はSFTでLoRAをプレビューします。Fast・Standard・Styleは別設定です。条件をそろえずにBase単体と見比べると、学習失敗のように見える場合があります。
公開評価は一様ではありません。開発者はClean-end share調整で自分のデータの似顔が早く出ると報告する一方、別のユーザーは不満を述べ、3枚の小規模実験で成功したという投稿もあります。データ依存の体験であり、普遍的な似顔スコアや必要枚数ではありません。
公開された学習記録: u/shootthesound · r/StableDiffusion
1. 導入とモデル取得
確認したリビジョンを取得し、Windowsはinstall_fizgig.batの後にLaunch Fizgig.batまたはLaunch Fizgig in browser.batを使います。Linuxはpython install_fizgig.pyの後、./launch_fizgig.shです。TrainingでMOSS-Imageを選び、Preferences → Download models for meへ進みます。保存容量に余裕を持ち、RAMは32GBを目安に準備します。
git clone https://github.com/shootthesound/Fizgig.git
cd Fizgig
git checkout 11ce867242b3cba3f8d72cf4dab6810de8eee14a 2. タブ順にデータを整える
Startでフォルダー、Image Prepで必要な切り出しや縮小、Captionsで説明、Samplesで固定評価プロンプトを設定します。学習画像にないポーズや場面も入れ、暗記を見分けます。自動キャプションは内容を確認してください。
3. 用途に合うプリセットを選ぶ
Fastはrank 16・LR 1e-4・70エポック・0.25MP、Standardはrank 32・LR 1e-4・70エポック・1MP、Styleはrank 16・LR 5e-5・50エポック・1MPです。すべてのデータに70エポックが必要という意味ではありません。通常LoRAとSlider、フル学習を取り違えないようにします。
4. 分布とプレビュー条件を残す
初回は現在のClean-end shareプリセットを使い、その値を記録します。過去の投稿には60、30という経緯がありますが、現行ガイドはSlideです。異なる版の値を混ぜず、画質基準を作る間はTurboプレビューを無効にします。
5. 学習・比較・書き出し
Start Trainingで実行し、Runs & outputsやLoRA Royaleで同じシード・プロンプトのエポックを比較します。出力先はTrainingで変更でき、標準はoutput_lorasです。選んだ.safetensorsをComfyUIへ読み込みます。ArcFaceやDINOv2の値は選別の補助であり、校正された人物再現率ではありません。
VRAMとRAMは工程全体で考える
| 経路・公開条件 | 学習中/開始時 | 読み取り方 |
|---|---|---|
| KohakuMoss 6〜8GB設定 | 重み・状態をオフロード。6GBは事前キャッシュ必須 | RAMは処理中約19GiB、プレビュー付き構築時約32GiBの例。全工程が6GBで済む保証ではない |
| AI Toolkitの4070報告 | VRAM 12GB・RAM 48GB。キャッシュとオフロード、プレビューなし | 個別の構成であり、すべてのジョブの最低条件ではない |
| sd-scripts bf16 | 学習13.2GB/開始15.3GB | 開発者測定:1024²、batch 1、dim 16、AdamW、勾配チェックポイント |
| sd-scripts INT8+swap 20 | 学習6.9GB/開始7.9GB | 単独のテキストキャッシュ作成は約8.3GB。8GBで全工程を保証しない |
| Fizgigの現行MOSSガイド | 開発者は12GBカードでSFTプレビュー込み約10.5GB未満と説明 | 独自のエンコーダー転送方式。AirMoreの測定ではない |
条件も指標も異なるため速度順位には使えません。事前調整、キャッシュ、学習、プレビューの全ピークを確認します。ファイル容量と常駐VRAMは別です。Kohakuのトークン予算には画像と文章が含まれ、小容量設定で極端に長い説明を使うと保持する画像トークンが減る場合があります。
ローカルツールが無料でも、レンタルGPU、保存容量、外部APIでのキャプション作成は別料金です。機密データは必要に応じてローカルに保ち、クラウド学習や外部説明サービスへの送信を区別してください。
ComfyUIでLoRAを読み込み評価する
- ComfyUIを更新して標準のMOSS-Imageワークフローを開き、まず新しいLoRAなしで生成します。MOSS本体、Qwen3.5-9B、FLUX.2 VAEをそろえ、読み込み不良と学習結果を切り分けます。
- ComfyUI形式の.safetensorsをComfyUI/models/lorasへコピーして一覧を更新します。bf16本体にDiT専用LoRAを使うなら、拡散モデルのローダーからサンプラーへ向かうMODEL経路にLoraLoaderModelOnlyを挿入し、テキスト側はそのままにします。
- INT8のSFTでは、FizgigはLoraLoaderBypassModelOnlyによる別経路の適用を推奨しています。表示名にはfor debuggingが付き、実験的ノードです。見つからない場合は更新や登録状況を確認し、量子化本体へのマージと同じ操作だと考えないようにします。
- 同じシード・文章・サイズ・本体・VAE・エンコーダー・サンプラーで、強度0、0.5、1.0を比べ、複数のチェックポイントと未知のプロンプトも試します。強度は評価点であり最適値ではありません。ComfyUIの文章欄に<lora:…>と書くだけではノード接続の代わりになりません。
- Fizgigの記載どおりのプレビューを比較するなら、SFT、res_multistep/simple、30ステップ、CFG 4、shift 5、SkipLayerGuidanceDiTSimpleのlayer 22・start 0/end 0.5です。Base単体の公式基準はEuler・50ステップ以上・CFG 3・shift 5で別物です。エポック評価の途中で黙って切り替えないでください。
- 最初の比較では加速・蒸留アダプターを外します。その後に、BaseまたはSFTに合う加速版を別条件で試します。人物LoRAとDMD加速LoRAは役割が異なり、ステップやCFGも互換とは限りません。
mossbird, a teal ceramic bird on a rainy windowsill, side view, soft watercolor illustration ステップを増やす前に直したい問題
1ステップ目の前にメモリ不足になる
エンコーダーキャッシュ、latent作成、カーネル調整、学習、プレビューのどこで起きるか確認します。解像度を下げてもエンコーダー読み込みは解決しない場合があります。プレビュー停止、予算削減、対応するオフロードを選び、別ツールの引数を混ぜないでください。
キーが読み込まれない・効果が出ない
MOSS対応、出力形式、ComfyUIの版を確認します。Kohakuの再開用状態、LyCORIS、-comfy、マージ済み本体は別ファイルです。再学習の前に強度とノード接続を確認します。
学習画面では似るのにComfyUIで崩れる
Base/SFT、量子化、VAE、SLG、CFG、分布、プレビュー専用アダプターを合わせます。lossだけでは条件の違いを見抜けません。見慣れた顔の切り抜きだけでなく、未知のポーズでも比較します。
lossが揺れる・長く学習するほど悪くなる
拡散学習では異なるノイズ水準を使うため、滑らかな低下は必須ではありません。途中保存を残し、文章追従、人物や画風、暗記の兆候で選びます。説明の長さ・rank・ステップを一度に増やさず、一群ずつ変更します。
最初に選ぶならどの環境か
MOSS専用の設定と明示的なキャッシュ計画から始めるならKohakuMossTrainerです。UIとYAMLのジョブを使い回したいならAI Toolkit、CLIを細かく管理するならsd-scripts、見比べながらエポックを選ぶならFizgigが向きます。いきなり数千更新より、短い動作確認と外部での比較画像を先に作る方が判断しやすくなります。
ライセンスは同じではありません。KohakuMoss License 1.0は派生ソフト・製品・サービス名にKohakuを含める追加条件があり、学習モデル・アダプター・生成画像は対象外としています。AI ToolkitはMIT、FizgigはApache-2.0、sd-scriptsは主にApache-2.0で一部に別条件があります。モデルやデータの権利は別で、商用利用を一括保証するものではありません。