AI Toolkit LoRAトレーニングガイド

AI Toolkit LoRA:Training Samples は良いのに ComfyUI/Diffusers 推論が違う?

AI Toolkit で LoRA を学習した後の「preview/samples と推論のズレ」を潰すための実践ガイド。

Ostris AI Toolkitで拡散モデルをトレーニング

Ostris AI Toolkit で LoRA を学習し、Training Samples ではすごく良かったのに、ComfyUIDiffusers で推論すると全然違う結果になってしまう——これはかなり混乱します。たとえば、こんな検索をしたかもしれません:

  • 「AI Toolkit の samples は良いのに ComfyUI は微妙」
  • 「AI Toolkit LoRA が ComfyUI で効かない」
  • 「同じ prompt/seed なのに Diffusers が AI Toolkit preview と一致しない」
  • 「LoRA を学習した後で見た目が変わるのはなぜ?」

結論は(だいたい安心できる)これです:

約 99% のケースでは LoRA は正常です。問題は、推論設定が学習プレビューと同一ではないことです。


AI Toolkit の Samples は「適当に Diffusers を回した結果」ではありません。次の要素の組み合わせで生成されています:

  • 完全に同一の base model 変種
  • LoRA の注入方法(adapter 適用 vs merged/fused)
  • steps/scheduler/guidance のセマンティクス
  • 解像度の扱い(スナップ/クロップ規則)
  • seed/RNG の挙動

-(場合により)追加の条件入力(edit/control/I2V の配線)

どれか 1 つでも違えば、出力はドリフトします。

以下は、まさに起きていることの比較です:AI Toolkit Training Sample vs あなたの現在の推論ツールチェーン(ComfyUI/Diffusers 等)。

AI Toolkit training sample Your inference toolchain
AI Toolkit training sample — set 1
推論結果 — set 1

このガイドで得られること


とにかく推論を AI Toolkit の training samples に合わせたい場合(ここから)


60 秒サニティチェック:この 6 項目を固定(まずは学習を触らない)

再現したい AI Toolkit Training Sample を 1 つ選びます(Sample #1 が理想)。次の 6 項目を完全に同一にコピー/エクスポートしてください:

1) Base model(正確な variant/revision。単に「FLUX」では不十分)

2) Prompt(トリガーワード含む。位置も同じ)

3) Negative prompt(学習で使っていないなら空)

4) Width/height

5) Seed

6) Steps + guidance(sampler/scheduler 関連も含む)

この 6 項目を合わせても大きくズレるなら、以下のパリティ問題のどれかです。


10 分パリティチェック:よくある「preview ≠ inference」原因 7 つ(優先順)

目安:一度に 1 変数だけ変える。5 個同時に変えると、何が効いたのか分かりません。

1) Base model の不一致(最頻・最破壊的)

2) 解像度処理の不一致(倍数スナップ / 隠れ resize)

3) steps/scheduler/guidance セマンティクスの違い(few‑step は超敏感)

4) seed/RNG セマンティクスの違い(CPU vs GPU generator、グローバル seed)

5) LoRA 適用方法の違い(adapter vs fuse/merge;ローダー違い)

6) prompt/negative/trigger が完全一致していない(1 トークンで崩れる)

7) パイプライン系統違い / 条件入力不足(edit/control/I2V)

以下、各項目の切り分け。


1) Base model 不一致:「近いからOK」は通用しない

症状

  • 顔・質感・スタイル・細部品質が全体的にドリフト。
  • LoRA が「効いてない」ように見えることも。

原因

LoRA は base model 依存が非常に強いです。学習した厳密な variant と違うモデルで推論すると(同じ“系列”でも)大きくズレます。

速攻テスト

  • AI Toolkit の学習 config/YAML を開く
  • base model の識別子/パスを確認
  • ComfyUI/Diffusers が同じ base model をロードしているか確認(似た名前に注意)

ありがちな罠

  • FLUX 変種の混在(dev vs schnell、1 vs 2)
  • Qwen Image generation と Qwen Image Edit の混在
  • Z‑Image Turbo と DeTurbo の混在
  • WAN 2.2 のタスク系統違い(T2V vs I2V)

対処

学習 config を真実として扱い、YAML から base model を選ぶ(記憶で選ばない)。


2) 解像度処理の不一致:1024 のつもりが 1024 じゃない

症状

  • 構図がズレる、シャープさが変わる、細部が潰れる。
  • few‑step/turbo で特に顕著。

原因

多くの実装は width/height を divisor(たとえば 32)の倍数に丸めます。AI Toolkit preview がスナップしていて推論側がしない(または逆)と、入力サイズが一致していません。

例:

width  = (width  // divisor) * divisor
height = (height // divisor) * divisor

速攻テスト

  • 32 の倍数に固定(例:1024×1024、1216×832)
  • ComfyUI の hidden resize/crop/latent scaling ノードを確認

対処

パリティのために、preview が実質的に使った width/height(スナップ込み)を固定。


3) steps/scheduler/guidance の違い:few‑step は「SDXL クセ」を許さない

症状

  • ぼやける/汚れる、preview のキレが消える。
  • 逆に過加熱で破綻する。

原因

distilled/turbo/few‑step は 低 steps低 guidance(guidance ≈ 1.0 のことも)前提のことが多いです。SD/SDXL 的なデフォルト(steps 20–30、CFG 5–8)を入れるとズレます。

速攻テスト

  • Training Sample と同じ steps/guidance に固定
  • パリティ検証中は scheduler を変えない

対処

まずは Training Sample を ground truth に再現 → その後に調整。


4) seed/RNG の違い:同じ seed でもスタックが違うと同じノイズにならない

症状

  • 同 prompt + 同 seed でも全然違う。

原因

stack により seeding 実装が異なります:

  • グローバル seed vs ノード単位 seed
  • CPU generator vs GPU generator
  • 追加 RNG 消費(ランダム crop、jitter 等)

速攻テスト

  • まず同一スタック内で再現性を確認(3 回同じ)
  • 次にスタック間で比較

対処

seed の扱いをできるだけ揃える(グローバル seed + 明示的 generator セマンティクス)。


5) LoRA 適用方法の違い:adapter vs fuse/merge(+ローダー間違い)

症状

  • 効きが強い/弱い、または効いてないように見える。

原因

主に 2 パターン:

  • Adapter:推論時に LoRA を動的適用(scale あり)
  • Fuse/Merge:LoRA をモデルに融合して adapter を外す

挙動が異なることがあります。さらに、モデル系統に合わない LoRA loader/pipeline を使うと「何も適用されない」ことも。

速攻テスト

  • Training Sample と同じ LoRA scale
  • ローダーがモデル系統に合っているか確認(系統跨ぎは避ける)

対処

参照実装で再現 → 同じ方法を自分のスタックへ移植。


6) prompt / negative / trigger の不一致:1 トークンで崩れる

症状

  • 近いが「決め手」が出ない、またはベースモデルっぽい。

よくある落とし穴

  • 学習は negative 空なのに、UI がデフォルト negative を注入
  • trigger の欠落/誤字/位置移動
  • ツール間の prompt 解析/重み付け構文の差

速攻テスト

  • negative prompt を にする
  • Training Sample から prompt を完全コピペ

対処

パリティ検証は hidden defaults を排除して「クリーン」に。


7) パイプライン系統違い / 条件入力不足(edit/control/I2V)

症状

  • 出力ロジックが完全に違う、またはエラー。

原因

モデル系統によっては control image / edit input / I2V conditioning が必要です。preview はそれを使っているのに、推論は prompt‑only だと合いません。

速攻テスト

  • control image / edit input が必要なモデルか?
  • 正しい pipeline family を使っているか?

対処

正しい pipeline に切り替え、必要入力を渡す。


自分で追いたくない?RunComfy で推論パリティを取る

ComfyUI/Diffusers のドリフトを自力で追うのが面倒なら、RunComfy は AI Toolkit の各モデル系統向けに training & inference parity pipelines を提供しています。preview のサンプリングを手で再構築する必要はありません。

必要なのは LoRA と、AI Toolkit の Training config(YAML) だけ。Trainer → LoRA Assets にインポートして Run(Run LoRA)を押せばすぐ推論できます。RunComfy は正しい base‑model pipeline とパリティ重要挙動で実行し、training samples に一致する結果を得やすくします。

手順: AI Toolkit LoRA Training‑Inference Parity

実例(AI Toolkit Training Sample vs config 適用済み RunComfy 推論):

AI Toolkit training sample RunComfy inference (Playground/API)
AI Toolkit training sample — set 1
Run LoRA inference result — set 1
AI Toolkit training sample — set 2
Run LoRA inference result — set 2
AI Toolkit training sample — set 3
Run LoRA inference result — set 3

さらに深掘りするなら:


FAQ

「AI Toolkit では samples が良いのに、ComfyUI だと LoRA が効かない」

まず base model mismatch と LoRA loader mismatch を疑ってください。「効かない」報告の多くは以下です:

  • base model 変種が違う
  • LoRA 注入方法/ローダーが違う
  • hidden negative prompt/defaults が入っている

「AI Toolkit の samples のほうが Diffusers よりシャープなのはなぜ?」

だいたい以下のどれか:

  • steps/guidance レンジの不一致(few‑step で顕著)
  • 解像度スナップ差
  • scheduler/timestep 差

「どうすれば推論を学習プレビューに安定して合わせられる?」

Training config を ground truth として、以下を固定:

  • base model
  • width/height(スナップ規則込み)
  • steps/guidance/scheduler family
  • LoRA 注入方法と scale
  • seed セマンティクス

Run LoRA(Playground/API)として再現可能にしたいなら、この config を中心に推論を組み立ててください。

トレーニングを開始する準備はできましたか?