如果你用 Ostris AI Toolkit 訓練了一個 LoRA,在 Training Samples(訓練採樣圖) 看到很棒的結果,但到了 ComfyUI 或 Diffusers 推理卻變得很不一樣,你大概會很困惑:為什麼訓練時明明很好,一推理就「跑掉」?你可能搜尋過像這些問題:
- 「AI Toolkit 採樣圖很好但 ComfyUI 很差」
- 「AI Toolkit LoRA 在 ComfyUI 沒作用」
- 「同樣 prompt/seed,但 Diffusers 跟 AI Toolkit 預覽不一致」
- 「為什麼我訓練完 LoRA 後效果變了?」
先給你一個直白(通常也很讓人鬆一口氣)的結論:
約 99% 的情況下,你的 LoRA 沒問題。問題在於你的推理設定,和訓練預覽用的不是同一套。
AI Toolkit 的 Samples 不是「隨便跑一遍 Diffusers」。它們是由一組非常特定的組合產生的,包括:
- 完全一致的 base model 變體/版本
- LoRA 注入方式(adapter 動態載入 vs merge/fuse 融合)
- 步數/排程器/引導(CFG)語義
- 解析度處理(對齊倍數、裁切/縮放規則)
- seed / RNG(隨機數)行為
-(有時)額外的條件輸入(編輯/控制/I2V 的連線方式)
只要其中任何一項不同,輸出就會漂移。
下面這個對照正是你正在經歷的:AI Toolkit 訓練採樣圖 vs 你目前的推理工具鏈(ComfyUI/Diffusers 等)。
| AI Toolkit training sample | Your inference toolchain |
|---|---|
![]() |
![]() |
你將從這篇指南獲得什麼
如果你只想讓推理結果匹配 AI Toolkit 的訓練採樣圖(從這裡開始)
- 推薦(對齊流程): AI Toolkit LoRA Training‑Inference Parity
- 想自審/自架(Diffusers 參考實作): Open-source AI Toolkit inference code
60 秒快速自檢:鎖死這 6 個欄位(先別動訓練)
挑一張你想復現的 AI Toolkit Training Sample(最好選 Sample #1)。把下面這些欄位原樣複製或匯出,確保完全一致:
1) Base model(精確到具體變體/修訂版本 —— 不是只寫「FLUX」這種泛稱)
2) Prompt(包含觸發詞,且位置一致)
3) Negative prompt(如果訓練時沒用,就保持為空)
4) Width/height
5) Seed
6) Steps + guidance(以及所有取樣器/排程器相關設定)
如果這 6 項都一致,但結果仍然差很多,那你很可能踩到下面的一致性問題之一。
10 分鐘一致性清單:7 個常見「預覽 ≠ 推理」原因(按優先級排序)
經驗法則:一次只改一個變數。如果你一次改五個東西,你永遠不知道到底是哪個修好它。
1) Base model 不一致(最常見、破壞性最大)
2) 解析度處理不一致(對齊倍數 / 隱式 resize)
3) 步數、排程器、引導語義不同(少步數模型極其敏感)
4) Seed/RNG 語義不同(CPU vs GPU generator、全域種子)
5) LoRA 應用方式不同(adapter vs fuse/merge;用錯 loader)
6) Prompt/negative/觸發詞不完全一致(一個 token 就能破壞一致性)
7) 管線家族不匹配 / 缺少條件輸入(編輯/控制/I2V)
下面說明每一項怎麼快速定位。
1) Base model 不一致:「看起來差不多」根本不夠
症狀
- 整體風格漂移:臉、材質、質感、細節品質全部變。
- 看起來像 LoRA「完全沒生效」。
原因
LoRA 對 base model 極度敏感。在某個精確的 base model 變體上訓練,卻在另一個變體上推理(即使「同一系列」),也常常導致明顯漂移。
快速測試
- 打開你的 AI Toolkit 訓練設定(config / YAML)。
- 找到精確的 base model 識別字/路徑。
- 確認 ComfyUI/Diffusers 載入的是同一個 base model(不是名字很像的另一個)。
常見坑
- 混用 FLUX 變體(例如 dev vs schnell,1 vs 2)
- 混用 Qwen Image generation vs Qwen Image Edit 變體
- 混用 Z‑Image Turbo vs DeTurbo
- 用錯 WAN 2.2 的任務家族(T2V vs I2V)
修復
把訓練設定當作唯一真相:用訓練的 config(YAML)來選 base model,不要靠記憶或猜測。
2) 解析度處理不一致:你以為是 1024,但其實不是
症狀
- 構圖偏移、銳度變化、細節糊掉。
- 在少步數/加速(turbo)模型上漂移更明顯。
原因
很多推理實作會把 width/height 調整到某個除數(常見是 32)的倍數。如果 AI Toolkit 預覽會向下對齊但你的推理堆疊不會(或反過來),那你實際上並沒有在同樣的尺寸上運行。
示例模式:
width = (width // divisor) * divisor
height = (height // divisor) * divisor
快速測試
- 強制你的推理使用 32 的整倍數解析度(例如 1024×1024、1216×832)。
- 在 ComfyUI 檢查是否有隱藏的 resize/crop/latent scaling 節點。
修復
為了對齊,鎖定 width/height 為訓練預覽實際使用的值(包含對齊規則)。
3) 步數/排程器/引導語義不同:少步數模型會「懲罰 SDXL 習慣」
症狀
- 結果變得模糊/髒,失去「訓練預覽的清晰度」。
- 或者過度烤糊,出現強烈偽影。
原因
蒸餾/加速/少步數模型往往需要低步數和低引導(有時 guidance ≈ 1.0)。如果你套用 SD/SDXL 的預設值(steps 20–30、CFG 5–8),很容易把模型推到不適合的區域。
快速測試
- 強制 steps 和 guidance 與 Training Sample 完全一致。
- 排查一致性時先別換 scheduler。
修復
先把 Training Sample 的設定當作地面真相。能復現之後,再去調你想要的風格。
4) Seed/RNG 語義不同:同一個 seed ≠ 不同工具裡同一條噪聲流
症狀
- 同 prompt + 同 seed,但輸出差異非常大。
原因
不同工具對 seed 的實作可能不同:
- 全域播種 vs 節點級播種
- CPU generator vs GPU generator
- 額外的 RNG 消耗(隨機裁切、抖動等)
快速測試
- 先確保你在同一套工具裡可以穩定復現(跑 3 次輸出一致)。
- 再做跨工具對比。
修復
盡可能對齊 seed 的處理方式(全域 seed + 明確 generator 語義)。
5) LoRA 應用方式不同:adapter vs fuse/merge(以及「用錯 loader」)
症狀
- LoRA 效果比預覽更弱/更強。
- 或者看起來像 LoRA 沒應用。
原因
兩類常見差異:
- Adapter 應用:推理時動態載入 LoRA,並用 scale 調節強度。
- Fuse/Merge 應用:把 LoRA 權重融合進模型,再卸載 adapters。
這兩種方式可能表現不同。另一個常見坑是:使用不匹配該模型家族的 LoRA loader/pipeline,可能會悄悄「什麼都沒應用」。
快速測試
- 把 LoRA scale 調到與 Training Sample 一致。
- 確認你使用的 loader 對該模型家族是正確的(不要跨家族亂用 pipeline)。
修復
先用一個已知支援該模型家族 AI Toolkit LoRA 的參考實作復現 Training Sample,再把同樣的方法移植到你偏好的工具堆疊裡。
6) Prompt / negative / 觸發詞不一致:一個 token 就能破壞一致性
症狀
- 風格看起來接近,但「標誌性細節」不見了。
- 或表現得像普通 base model。
高頻坑
- 訓練時 negative prompt 為空,但你的推理 UI 自動注入了預設 negative prompt。
- 觸發詞缺失、拼錯、位置變了。
- 不同工具對 prompt 權重語法/解析不同。
快速測試
- 把 negative prompt 設為空(對齊訓練)。
- 從 Training Sample 直接複製貼上完全一致的 prompt 文本。
修復
做一致性測試時,移除所有隱藏預設值。先跑「乾淨版」。
7) 管線家族不匹配 / 缺少條件輸入(編輯/控制/I2V)
症狀
- 輸出邏輯完全不對。
- 或推理直接報錯。
原因
某些模型家族需要額外輸入(控制圖、編輯輸入、I2V 條件)。訓練預覽可能用到了這套連線,但你的推理可能只走 prompt-only。
快速測試
- 這個模型是否需要 control image 或 edit input?
- 你是否使用了該任務正確的 pipeline family?
修復
切到正確的 pipeline,並提供必要的條件輸入。
不想自己排查?在 RunComfy 直接獲得推理一致性
不想自己追 ComfyUI/Diffusers 的漂移原因?RunComfy 已經為 AI Toolkit 的各個模型家族提供了訓練與推理一致性(parity)管線,你不需要手動重建訓練預覽用的那條採樣管線。
你只需要:
- 你的 LoRA
- 這次 AI Toolkit 訓練的 Training config(YAML)
把它們匯入 Trainer → LoRA Assets,然後點擊 Run(Run LoRA)即可開始推理。RunComfy 會用與訓練預覽一致的關鍵行為與正確的 base-model pipeline 來跑,因此結果能匹配訓練採樣圖。
完整流程見: AI Toolkit LoRA Training‑Inference Parity。
實際效果(AI Toolkit Training Sample vs 套用訓練 config 的 RunComfy 推理)如下:
| AI Toolkit training sample | RunComfy inference (Playground/API) |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
想更深入?
- Open-source AI Toolkit inference code(可審計的 Diffusers pipelines、adapters、schedulers)
FAQ
「我的 AI Toolkit LoRA 在訓練 Samples 很正常,但在 ComfyUI 完全沒效果。」
先從 base model 不一致和 LoRA loader 不匹配開始。大多數「完全沒效果」的回報,基本是下面之一:
- 用錯 base model 變體
- 用錯 LoRA 注入方式/loader
- 有隱藏的 negative prompt/預設值
「為什麼 AI Toolkit 的 Samples 比我的 Diffusers 輸出更銳、更清晰?」
通常是下面之一:
- 步數/引導範圍不一致(少步數模型尤其敏感)
- 解析度對齊規則不同
- scheduler / timestep 不一致
「怎樣才能穩定地讓推理匹配訓練預覽?」
把訓練 config 當作地面真相,並鎖死:
- base model
- width/height(包含對齊規則)
- steps/guidance/scheduler 家族
- LoRA 注入方式與 scale
- seed 語義
如果你希望把它做成可重複的 Run LoRA 工作流(Playground/API),就圍繞這份 config 去構建推理流程。
準備好開始訓練了嗎?







