[Lora] Z Image Turbo 與 AI-Toolkit

ZIT with Lora

最近 Z Image Turbo 很紅,加上 AI-Toolkit 目前支援度還算不錯,所以也順手測試了一下。大抵上來說,由於是蒸餾模型,所以訓練起來比一般模型來得奇怪一點。

我就跑了幾個,有興趣的人可以去我的 C 站 看看。


Z Image Turbo 訓練器

AI-ToolkitKohya Musubi-Tuner 比起來算是很懶人的訓練器,加上作者做了相關的 Adapter 可以幫助 Z Image Turbo(後面都簡稱 ZIT) 訓練,所以關於 ZIT 的 Lora 就像雨後春筍般瘋狂的冒出來。

其實還有一套 None Z Image Turbo Trainer 是專門針對 ZIT 開發,其中採用的一些方法也是挺特殊的,不過相對的設定跟 VRAM 的需求比較嚴苛一點,所以對新手來說沒有 AI-Toolkit 那麼友善。

這邊就先針對 AI-Toolkit 的部分來做 Lora 的訓練,也順便說明一下關於訓練的相關設定。

AI-Toolkit 訓練器設定

AI-Toolkit 的 GUI 非常的懶人,所以如果照著作者提供的影片教學,看完應該就能上手訓練 ZIT Lora。

AI-Toolkit - Z Image Turbo Lora

設定的部分有幾點需要注意:

  1. 截至目前為止,他只能訓練 Lora。
  2. Batch Size 只能設定 1,不然會故障。
  3. Steps 設定 5000 或以上效果比較好一點。
  4. Cache Text Embeddings 記得打開。
  5. Use EMA 好像壞了(Issue #524)開了貌似沒作用。
  6. Dataset 訓練集的部分,打開 Cache Latents
  7. 可以只訓練一種解析度就好,預設是三種 512, 768, 1024,你可以只訓練 1024
  8. ADVANCED 打開,把 Do Differential Guidance 打開,Differential Guidance Scale 設定為 3,會學的比較快。
  9. Simple Prompts 可以只留下一個就好(省點時間)。

以上就是比較基本的設定,照這些設定就可以先跑一個 Lora 來看看有沒有你要的結果。


進階設定

AI-Toolkit 除了 GUI 以外,右上角可以打開 Show Advanced 的模式,他是一個 yaml 的結構文件,要注意一件事情,當你在 Show Advanced 修改過後,如果切回 Show Simple 但是畫面壞了,那就表示你把設定改壞了。

在你確定你知道自己在做什麼事情的情況下,Show Advanced 可以修改一些在 GUI 裡面沒有的東西。

  1. Datasets 可以設定重複次數(num_repeats),就是 Kohya 的資料夾名稱前面的那個 數字
  2. optimizer 可以換成 lion, lion8bit, prodigy, prodigy8bit, adam, adamw, adam8, adamw8, ademamix8bit, adagrad, automagic
  3. lr_scheduler 預設是 constant,可以改為 cosine, cosine_with_restart, constant_with_warmup, linear, step
  4. constant_with_warmup 需要搭配 num_warmup_steps 預設 1000
  5. cosine_with_restarts 需要在 lr_scheduler_params 當中設定 total_itersmax_iterations,其中 max_iterations 設定與總步數相同,total_iters 設定為多少 Steps 後要重新啟動餘弦退火。
  6. optimizer_params 可以根據不同的 Optimizer 去設定不同的超參數。

其餘的設定基本上在 GUI 都有,當然,你設定完上述的功能後,就不要再切回 GUI 去改動到相關設定,不然你就得重來。


訓練結果驗證

訓練完成之後就使用 ComfyUI 基本的工作流就能驗證效果。

Z Image Turbo with Lora

有了訓練結果之後,我就可以來做其他的事情了,例如,融合。


融合 ZIT Lora

根據 AI-Toolkit 所訓練出來的 Lora 結構,我把他攤開來看,大概長這樣:

diffusion_model.layers.0.attention.to_out.0.lora_A.weight
diffusion_model.layers.0.attention.to_k.lora_B.weight
diffusion_model.layers.0.attention.to_out.0.lora_B.weight
diffusion_model.layers.0.adaLN_modulation.0.lora_B.weight
diffusion_model.layers.0.feed_forward.w1.lora_B.weight
diffusion_model.layers.0.attention.to_v.lora_B.weight
diffusion_model.layers.0.adaLN_modulation.0.lora_A.weight
diffusion_model.layers.0.feed_forward.w1.lora_A.weight
diffusion_model.layers.0.feed_forward.w2.lora_A.weight
diffusion_model.layers.0.attention.to_q.lora_B.weight
diffusion_model.layers.0.feed_forward.w2.lora_B.weight
diffusion_model.layers.0.attention.to_q.lora_A.weight
diffusion_model.layers.0.attention.to_k.lora_A.weight
diffusion_model.layers.0.attention.to_v.lora_A.weight
diffusion_model.layers.0.feed_forward.w3.lora_A.weight
diffusion_model.layers.0.feed_forward.w3.lora_B.weight

總共有 30 個 layers,所以我們可以針對這 30 個 layers 來做權重的增減,接著把 Lora 給拼起來。根據 AI 給我的解釋(以下無法保證對錯,請自行斟酌參考):

名稱 主要影響層面 說明
adaLN_modulation (自適應層歸一化調製) 全局氛圍、光影、色彩基調、整體對比度 這是模型的「指揮中心」,負責接收 時間步(Timestep)和提示詞(Prompt) 的全局嵌入。它決定了圖像的「畫風」和「光效」。如果你發現 LoRA 生成的圖片顏色偏灰或光影不對,通常與這一層的權重有關。它將提示詞中的全局資訊(如:「懷舊感」、「電影感」)分配到後續的處理中。
Attention (注意力機制) - 這是模型的「結構與關聯中心」,負責決定圖像中各個部分(物體與物體、文字與物體)之間的關係。
attention.to_q, attention.to_k 構圖、物體佈局、提示詞理解、空間邏輯 Q 和 K 的匹配決定了模型「關注哪裡」。它們決定了你的提示詞(如:貓坐在沙發上)是否能正確轉換為構圖(貓確實出現在沙發上,而不是沙發旁邊)。
attention.to_v 特徵細節、主題內容、材質質感 一旦決定了關注點,V 則包含了該點應該具備的「內容」。它直接影響主題的長相。
attention.to_out 整合性、圖像完整度 將注意力機制的計算結果重新投影回主流程,確保構圖與背景融合自然。
Feed Forward (前饋網路) - 這是模型的「知識庫與細節加工廠」
w1, w2, w3 (通常為 SwiGLU 結構) 五官細節、服裝紋理、背景複雜度、具體物件的特徵 如果 Attention 決定了「這裡有個五官」,FFN 則決定了「這個眼睛的睫毛長什麼樣」。它是儲存具體視覺知識(如:某種特定制服的設計、某個特定藝人的臉部特徵)最集中的地方。

全方位影響的對照:

影響層面 關鍵組件 說明
提示詞遵循度 adaLN, to_q, to_k 決定模型是否聽懂你的指令,並將元素放在正確位置。
構圖與佈局 to_q, to_k 決定主體的大小、位置以及與背景的空間關係。
主題與臉部 (五官) to_v, w1, w2, w3 決定人物像不像、五官是否精緻、皮膚紋理。
服裝與細節 w1, w2, w3 處理衣服的褶皺、鈕扣細節、珠寶裝飾。
背景與環境 to_q, to_k, to_out 決定背景的複雜度,以及主體與環境的融合度。
顏色與光影 adaLN, to_v 影響飽和度、色調平衡、光照來源與強弱。

以上無法保證對錯,請自行斟酌參考!

然後,我做了一個小工具:

modify_zlora.py

他可以調整單一,或是融合多個不同的 ZIT Lora,然後根據上述的區塊來調整出你想要的結果。

請留意,關於 --ratio 是必填,而其他的區塊權重,會先乘上 --ratio 之後再相加。


小結

其實我不會寫 python,那個工具是我給概念,然後請 Claude 幫我寫的。

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