[ZIT] Lora 訓練摘要

先講在前面,這篇不是什麼最強 preset 整理,也不是你照抄之後就一定會出現神蹟的保證書。

Z Image Turbo(下面簡稱 ZIT)本身是蒸餾模型,訓練手感跟一般底模不太一樣。

我的目的很單純:把 Z Image Turbo LoRA 訓練比較穩的起手式 整理成一篇可直接動手的筆記。可以先照這個方向跑,再慢慢微調成自己的做法。

主要會講五件事:

  1. 資料集準備
  2. 訓練器的選擇
  3. 超參數設定
  4. 驗證結果
  5. 資料集提詞的影響

如果你只是想先要一個結論版,先講白一點:

  • ZIT 可以練 但不要把它當成以前 SDXL 那樣隨便塞資料就會乖乖長。
  • AI-Toolkit 是目前比較適合大多數人的保姆級工具
  • Batch size 基本上先當作只能 1 分~~(除非你有一張 A6000 Pro 就當我沒說)~~
  • 步數通常不要太保守,5000 步以上比較保險(取決於資料集)
  • 驗證不要只看像不像,還要看改不改得動
  • Caption 不只是描述圖片,它會直接決定模型把特徵歸到哪裡

好,前情提要差不多,我們就開始吧。


1. 資料集準備

先講結論,各種訓練裡面最容易被低估的東西不是 優化器(Optimizer),也不是 Dim(rank),而是資料集本身。

因為蒸餾模型學得快,很多你以為只是小毛病的東西,最後都會被它學得很認真。對,就是那種你不想讓它學的東西,它也可能學得超好。

1.1 先定義你到底在練什麼

整理圖之前,先回答下面幾個問題:

  • 你在練的是 角色身份服裝材質畫風,還是 局部特徵
  • 你想要的是 高相似度的特徵鎖定,還是 可泛化、可替換
  • 你打算單概念訓練,還是多概念一起塞?

這一步不做,後面會很痛苦。

換句話說,如果你的目標是「練一套甲冑」,那你就不要一邊把角色臉、髮型、構圖、背景、光影全部一起塞進來,然後期待模型幫你自動理解「其實我只想要甲冑」。模型不會讀心。真的不會。

1.2 圖片品質比數量重要

常見錯誤是以為圖片越多越安心。不是。垃圾資料 500 張還是垃圾資料 500 張。

實務上我會建議:

  • 優先保留 高細節、主體清楚、沒有嚴重壓縮痕跡 的圖
  • 盡量避免 糊圖、爆光、嚴重後製、扭曲過頭 的圖(除非這是你的訓練目標)
  • 若原圖夠大,讓它縮到訓練解析度附近,通常比一開始就拿小圖硬練穩
  • 對 ZIT 來說,若時間與資源允許,直接以 1024 為主要訓練解析度 通常比較省事

AI-Toolkit 雖然預設常會看到 512 / 768 / 1024 這種解析度選項,但如果你本來就是要對 ZIT 練 LoRA,很多時候直接集中在 1024 會更有效率。原因很單純:你少了中間尺寸的訓練時間,也比較符合你最終常用的輸出尺度。

1.3 單概念就把干擾砍掉

如果你只練一個概念,最有效的方式通常不是把整張圖都留下,而是:

  • 裁出你真正要學的區域
  • 或至少把會跟主概念競爭的特徵壓低

例如:

  • 只想學臉,就不要讓複雜背景一直搶權重
  • 只想學服裝,就不要讓大量姿勢與鏡位描述蓋掉主題
  • 只想學特定材質,就不要混入太多完全不同的光影風格

你可以先把這件事想成備料。你今天要煮排骨湯,結果你把麻辣鍋底、椰奶、咖哩塊、味噌全部一起丟進去,然後問我最後味道為什麼怪怪的。嗯,答案其實蠻明顯的。

1.4 多概念要拆資料夾,不要全塞一包

如果你打算練:

  • 角色
  • 服裝
  • 飾品
  • 構圖特徵

那就不要偷懶全部放同一包。

比較穩的作法是:

  • 用不同 subset / 資料夾拆開概念
  • 各自做清楚的 caption 策略
  • 平衡每一組的總訓練步數

真正該看的不是圖片數,而是:

圖片數 × repeats = 總訓練步數

比如說:

  • A 概念 20 張圖,repeats = 10,總訓練步數 = 200
  • B 概念 40 張圖,repeats = 5,總訓練步數 = 200

這樣兩組概念被模型看到的頻率才比較平衡。當然,這裡還會有 ARB 的干擾,所以抓個大概就可以了。

ARB, Aspect Ratio Bucket,可以回去看看我以前的文章。
如果想避開這件事情的干擾,把訓練圖片全部統一成一個尺寸就行。

1.5 人像資料的基本配置

如果你練的是角色、人像或半寫實人物,底下這樣的分配通常比較穩:

  • 臉部近景
  • 半身
  • 全身

比例不一定要死守,但可以往 5:3:2 這種方向配。

原因很簡單:

  • 臉部圖負責身份穩定
  • 半身圖負責服裝與上半身關聯
  • 全身圖負責身形、比例、姿態與整體感

另外幾個常見誤解也順手講掉:

  • 不用迷信透明去背。 很多時候簡單背景反而比透明背景穩。
  • 不要留嚴重變形圖。 特殊鏡頭不是不能有,是不要比例失控。
  • 臉部圖不要切太碎。 頭、頸、肩還是要有基本結構,不要只剩眼睛鼻子嘴巴在飄。

1.6 AI 圖資料能不能用?可以,但很容易學歪

可以用。不是不行。

但問題是 AI 圖很容易帶著一些模型自己的味道,例如:

  • 奇怪的髮絲
  • 過度銳化的輪廓
  • 假細節
  • 某種很固定的皮膚紋理
  • 某種一看就很像某平台出的後製味

ZIT 這類模型如果吃到整包都長同一種味道的 AI 圖,很可能很快就把那個副作用學滿。

所以如果你真的要用 AI 圖訓練,至少做幾件事:

  • 不要讓全部圖片都長得像同一個 workflow 生出來的
  • 保留適度的構圖差異
  • 可以接受的前提下,讓畫面有一點點不完全一致
  • 去掉錯誤的細節

2. 訓練器的選擇

先講結論:如果你是現在要開始練 ZIT LoRA,我會先建議從 AI-Toolkit 開始。 因為它現在對大多數人來說,最容易起步、最不容易卡在奇怪設定、也最接近懶人可用。

2.1 為什麼是 AI-Toolkit

目前常見幾條路大概是:

  • AI-Toolkit
  • Kohya / Musubi-Tuner 相關路線
  • 一些特化的 Z Image Turbo Trainer

ZIT 這種模型因為在 AI-Toolkit 有專門 adapter 支援,所以 AI-Toolkit 這條路的友善度會高很多。你不用一開始就去跟一堆奇怪設定硬碰硬,至少能先把第一個可用 LoRA 跑出來。

換句話說,它的價值不是「參數最多」,而是「你比較容易先得到結果」。這很重要。因為沒有第一個可驗證結果,後面所有超參數討論都只是聊天而已。

2.2 那 Kohya 能不能練?

可以,你如果很習慣 CLI 的話。

但如果你的目標是「先把 ZIT 跑通」,AI-Toolkit 通常比較省時間。

Kohya 的優勢比較像:

  • 你已經很熟 LoRA 訓練流程
  • 你很在意更多客製化控制
  • 你想把某些 caption 與 dataset workflow 做得更細

問題是,你如果一開始把自己丟進最複雜的工具鏈,最後很可能不是模型有問題,是人先崩潰。

2.3 特化 Trainer 的位置

有些專門做 ZIT 的 trainer 會用比較特化的方法,理論上有它的優勢。

但代價通常也很明顯:

  • 吃 VRAM
  • 設定更硬
  • 出錯比較不好查
  • 配置上更挑環境

所以我的建議很單純:

  • 第一輪:AI-Toolkit
  • 跑出穩定 baseline 之後:再去碰更特化的工具

這樣你至少知道你在比較的是「工具差異」,不是「我其實整包都還沒跑通」。


3. 超參數設定

這一段是最多人想直接抄的部分,所以我先打預防針。

超參數沒有萬用答案。真的沒有。

同樣一組設定:

  • 換資料集
  • 換 caption 結構
  • 換 optimizer
  • 換 rank / alpha
  • 換驗證方式

結果都可能差很多。

所以這裡給的是 ZIT in AI-Toolkit 比較穩,不是神諭。

3.1 先給一組能跑的設定

如果你要先跑第一輪,我會建議先從這組開始:

  • Trainer:AI-Toolkit
  • LoRA only
  • Batch size = 1
  • Resolution = 1024
  • Steps = 5000 起跳
  • Cache Text Embeddings = Enabled
  • Cache Latents = Enabled
  • Differential Guidance = Enabled
  • Differential Guidance Scale = 3
  • Simple prompts 數量可以精簡

這組東西的邏輯不是「肯定煉的超好」,而是「先讓你得到一個像樣的 baseline」。

3.2 為什麼 Batch size 先當作只能 1

在 ZIT + AI-Toolkit 這條路上,Batch size 基本上先當作只能 1

不是因為我喜歡折磨人,是因為更高的 batch 很容易直接出問題。如果你看到有人說他可以開更大,先不要急著羨慕。請先確認:

  • 工具版本是不是一樣
  • adapter 是不是一樣
  • 顯卡跟 VRAM 是不是一樣
  • 訓練配置是不是同一套
  • 人家家裡是不是有礦
  • 對方是不是社群人均 H100

不然你照著開,最後最穩定的結果可能就是什麼都跑不了。

3.3 Steps 為什麼不要太省

就目前經驗來看,ZIT 的 LoRA 步數通常不要太小氣,5000 步以上比較像樣。

但這裡要補一個很重要的前提:

我這裡說的 5000 步,是建立在資料量與資料品質夠支撐的前提下。

如果你的資料本身很小、很乾淨、概念很集中,那未必一定要硬跑更多。

反過來說,如果你的資料集規模很大,5000 步也不一定就夠。

所以步數判斷要搭配下面幾件事一起看:

  • 資料集規模
  • 圖片品質
  • 概念是不是集中
  • rank / alpha
  • sample 圖變化
  • 權重掃描結果

對了,AI-Toolkit 本身是 PEFT Format,所以 alpha 本身是沒有作用的,望週知。

3.4 Resolution 的選擇

如果你的目標就是練 ZIT,我會傾向把主要訓練解析度集中在 1024

預設雖然可能會看到多種解析度可選,但很多時候:

  • 全用 1024 更省整理成本
  • 驗證尺度比較一致
  • 你比較容易觀察 LoRA 真正學到什麼

當然,如果你本來就是多解析度、多構圖策略派,那是另外一條路。但如果你現在只是要先跑出一個穩的 ZIT LoRA,不用一開始就把事情複雜化。

3.5 Differential Guidance 這顆先打開

在 AI-Toolkit 的 Advanced 裡面,Do Differential Guidance 建議打開,然後 Scale 官方建議 3 開始

這個設定的實際感受是,模型會學得快很多。

但請注意,學得快不一定等於學得好,所以:

  • 驗證週期要縮短
  • 不要等全部跑完才第一次看 sample
  • 如果你看到結果開始鎖死,就不要再硬跑

3.6 Optimizer 優化器怎麼選

如果你今天只是要先跑穩一個,不要一開始就追求花活。

比較保守的思路是:

  • 先選穩定常見 Optimizer
  • 固定資料集
  • 固定驗證方式
  • 再去比較 Optimizer 差異

一般來說:

  • AdamW / AdamW8bit 類:最老牌的優化器。
  • Lion / Lion8bit:可以試,但對 batch 比較敏感。
  • Prodigy:學很快,但也很容易快到翻車,而且 VRAM 需求比較高。
  • Automagic:可用,AI-Toolkit 作者自行開發的優化器。

如果你還在第一輪,真的不用一開始就把全部魔法一起打開。你不是在打配裝模擬器。

附帶一提,Adam8bit 在社群上被證實有問題,有興趣的人可以去這邊看看 【全网首发】王炸!Z-Image 炼丹翻车之谜终于解开:你烧的算力可能都毁在了这个“远古Bug”上 - 哔哩哔哩

解決辦法就是,先用 Automagic 試試看。

3.7 LR、Rank、Alpha 不要拆開看

這三個東西是綁在一起的。

換句話說:

  • Rank / Alpha / LR 是一組,不是三個獨立按鈕。

比較保守的起手邏輯是:

  • 不要一開始就用超大 rank
  • alpha 先保守
  • learning rate 不要開到像在比誰先爆

如果你的目標是穩定可用,而不是一拳超人型 LoRA,那通常:

  • 小一點的 rank
  • 保守一點的 alpha
  • 足夠的步數

會比你直接把容量灌大來得穩。另外,在社群上的相關訓練測試中,ZIT 的 rank 在 128 以上會開始崩壞。

3.8 Advanced YAML 可以改,但改了就不要回頭亂按 GUI

AI-Toolkit 有個很重要的實務提醒:

  • 進到 Show Advanced 之後,你可以調更多 YAML 參數
  • 但如果你改完又回 GUI 繼續亂動,最後很容易把設定搞壞

尤其是像下面這些東西:

  • num_repeats
  • optimizer 選項
  • lr scheduler
  • scheduler params

你一旦開始用 YAML 微調,建議就老老實實在 YAML 裡完成,不要來回切換模式。那種 UI 壞掉、欄位爆炸、最後才發現只是少打一個符號的劇情,真的不稀奇。


4. 驗證結果

這一段很重要。因為很多人其實不是不會訓練,而是不會驗證。

4.1 驗證不是看一張圖很像就結束

如果你只看一張圖,然後它剛好很像,你很可能得到一個「看起來很強,其實很難用」的 LoRA。

比較標準的驗證流程應該至少固定下面這些東西:

  • 固定 prompt
  • 固定 seed
  • 固定 sampler
  • 固定 CFG
  • 固定步數
  • 固定輸出尺寸
  • 固定一組權重掃描

例如:

  • LoRA weight = 0.3 / 0.5 / 0.7 / 1.0

這樣你比較到的才是模型差異,不是抽卡運氣差異。

4.2 我會看哪幾件事

每次驗證,我至少會看下面五件事:

1. 主體相似度

像不像是基本款。

但不要只看「最像那張」,要看:

  • 穩不穩
  • 換 seed 之後還像不像
  • 換角度之後還能不能維持主特徵

2. 提示詞服從性

這點超重要。

如果你發現:

  • 換髮色改不動
  • 換服裝改不動
  • 換背景改不動
  • 加了別的描述它也不理你

那多半不是它太強,是它 特徵鎖太死, a.k.a 煉過頭

3. 背景合理性

有些 LoRA 初看主體很像,但背景會跟著一起長出奇怪固定元素。

這通常代表:

  • 資料集背景太單一
  • caption 把背景跟主體綁太死
  • 模型把某些畫面關聯整包一起記住

4. 高低權重穩定性

正常的 LoRA 應該在不同權重下有合理變化。

如果你看到:

  • 0.3 幾乎沒效果
  • 0.5 才開始有點像
  • 0.7 最穩
  • 1.0 直接爆

那至少你知道它的可用區間在哪。

反過來說,如果 0.3 就已經把整張圖鎖死(俗稱複印機),那也不是什麼值得高興的事。

5. 能不能改

這句我單獨再講一次。

驗證不要只看像不像,還要看改不改得動。

因為真正要用的 LoRA,不是只能複製訓練集,而是:

  • 你換 prompt 它還聽話
  • 你換構圖它不會瞬間失智
  • 你換風格它還能保留核心特徵

4.3 用什麼驗證比較穩

如果你本來就有固定的 ComfyUI workflow,那其實很適合拿來做驗證。

原因很單純:

  • 節點固定
  • 參數固定
  • prompt 固定
  • 權重掃描容易做

這樣你每次比較的條件才一致。

換句話說,訓練可以在 AI-Toolkit 做,驗證最好有自己固定的一套 workflow。

4.4 什麼叫做結果穩了

我自己會把「可以往下走」的狀態定義成:

  • 低權重就有反應
  • 中權重最穩
  • 高權重不會整張畫面變形
  • 主特徵有留下
  • 背景不會莫名其妙全被綁死
  • 換 prompt 還有基本可控性

如果這幾件事都有,那你後面不管是要 merge、要 block 調整、還是要再做細修,都比較有意義。


5. 資料集提詞的影響

這一段其實常常比超參數還關鍵。

很多人以為提詞(Caption)只是把圖說寫完整。不是,提詞真正的用途是:

告訴模型,哪些特徵應該歸到明確 token,哪些特徵應該被觸發詞吸收。

也就是說,提詞不是作文比賽,它是分配責任。

5.1 標籤不是越多越好

常見策略大概有幾種:

  • 刪除特徵標籤
  • 保留部分特徵標籤
  • 全保留
  • 用觸發詞承接新概念

哪一種最好?沒有永遠最好。

真正要看的問題是:

  • 你要的是更強的特徵鎖定,還是更泛化?
  • 你希望某個特徵由 tag 控制,還是由 trigger word 控制?
  • 你希望模型記住的是「這個詞 = 這個特徵」,還是「這個觸發詞 = 整包新概念」?

5.2 提詞順序真的有差

如果你的題提詞很長,順序就很重要。

比較穩的思路通常是:

  1. 觸發詞(如果有)
  2. 主體
  3. 主體關鍵特徵
  4. 次要細節
  5. 構圖 / 鏡位 / 光影
  6. 背景

換句話說,你最在意的東西不要塞到句尾,然後期待模型自己翻到最後再認真看。沒有這種服務。

5.3 刪標籤會發生什麼事

當你刻意刪掉某些特徵標籤時,那些特徵不會憑空消失。

它比較可能發生的是:

  • 特徵回流到觸發詞
  • 特徵回流到 class token
  • 某些特徵被整包吸收成更高強度概念

這在資料少、概念集中時很有用。

例如你想把某件服裝、某種盔甲、某個局部紋理更集中地綁在觸發詞上,那你可以透過刪標籤來讓模型少一個顯性承接的位置。

但代價是什麼?

代價就是:很容易鎖太死,造成你不管呼叫什麼都會出現一些不該出現的東西。

例如可能會有全世界男人都懂的游泳池之類的。

5.4 全標籤會發生什麼事

全標籤不是錯。

它的優點通常是:

  • 細節吸收穩定
  • 各特徵分工清楚
  • 泛化可能比較好,注意,是可能

但缺點也很明顯:

  • 提詞太長時,主特徵容易被稀釋
  • 使用提詞排序打亂時,重要概念會變弱
  • 不重要的背景細節可能也被學進去

所以如果你要全標籤,至少要做兩件事:

  • 把最重要的 token 放前面
  • 定期人工清錯標與幻覺標籤
  • 如果要打亂標籤,記得加個 trigger word

5.5 自動 caption 工具可以用,但不要全信

自動標籤最大問題不是慢,而是它很會一本正經地亂講。

常見狀況像是:

  • 把道具認錯
  • 把主體性別認錯
  • 把材質講錯
  • 背景多認一堆不存在物件
  • 把本來是甲冑的東西說成奇怪樂器(對,這種事真的會發生)

所以最低限度你要做:

  • 刪錯標
  • 刪幻覺物件
  • 刪跟圖不一致的姿態、主體、人數資訊
  • 刪那些會直接讓模型學歪的垃圾描述

5.6 ZIT 上提詞影響其實很謎

ZIT 因為學得快,再者因為是單流 DiT 的關係,提詞在整個模型訓練跟推理上變得很曖昧(加上官方說的訓練器開天窗了)。

你如果:

  • 提詞全都寫一樣
  • 順序全亂
  • 每張都塞滿背景廢話
  • 主體關鍵 token 放超後面

模型很可能真的就會照那個方式去吸收,至於吸收了那些,我老實說我不知道。

所以我會建議:

  • 主體與核心特徵固定放前面
  • 次要描述往後放
  • 重複性太高的敘述適度整理
  • 若工具支援,可考慮做多版本題提詞結構

5.7 一個比較穩的提詞思路

如果你今天要練的是角色或服裝型概念,一個相對穩的方向會是:

trigger, main subject, key feature block, secondary details, shot / lighting, background

例如你真正該固定的是:

  • 角色名稱 / trigger
  • 服裝主體
  • 材質或辨識性結構

其他像:

  • 鏡位
  • 光影
  • 背景
  • 非關鍵的小道具

就不要讓它比主概念還搶戲。


簡單結論

如果你今天是第一次練 Z Image Turbo LoRA,我會建議你先記住下面這幾件事:

  1. 先把資料集整理乾淨。 不要用超參數幫垃圾資料擦屁股。
  2. 先從 AI-Toolkit 起手。 先求跑通,再講求效果。
  3. Batch size 先當作只能 1。
  4. Steps 不要太省,5000 步以上比較像樣。
  5. Differential Guidance 可以開,Scale 先從 3 起。
  6. 驗證不要只看像不像,還要看改不改得動。
  7. 提詞會直接決定模型把概念歸到哪裡。 這件事真的很重要,只是對 ZIT 來說很魔幻。

再講白一點。

ZIT LoRA 不難玩,但它不是那種你亂塞一包圖、亂打一串 tag、亂抄一組參數,就會自動長成你想要的樣子。

你還是要想清楚:

  • 你在練什麼
  • 你想讓它保留什麼
  • 你想讓它改得動什麼
  • 你不想讓它一起學到什麼

想清楚這幾件事,再去調參數,後面會省很多時間。

不然就會變成那種,圖跑完了,loss 也很漂亮,然後你一測才發現整包都是垃圾。嗯,這就很有既視感了。

以上。先這樣。

Hina Chen
偏執與強迫症的患者,算不上是無可救藥,只是我已經遇上我的良醫了。
Taipei