最近 Z Image Turbo 很紅,加上 AI-Toolkit 目前支援度還算不錯,所以也順手測試了一下。大抵上來說,由於是蒸餾模型,所以訓練起來比一般模型來得奇怪一點。
我就跑了幾個,有興趣的人可以去我的 C 站 看看。
Z Image Turbo 訓練器
AI-Toolkit 跟 Kohya 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
設定的部分有幾點需要注意:
- 截至目前為止,他只能訓練 Lora。
Batch Size只能設定1,不然會故障。Steps設定5000或以上效果比較好一點。Cache Text Embeddings記得打開。Use EMA好像壞了(Issue #524)開了貌似沒作用。- Dataset 訓練集的部分,打開
Cache Latents。 - 可以只訓練一種解析度就好,預設是三種
512,768,1024,你可以只訓練1024。 - ADVANCED 打開,把
Do Differential Guidance打開,Differential Guidance Scale設定為3,會學的比較快。 - Simple Prompts 可以只留下一個就好(省點時間)。
以上就是比較基本的設定,照這些設定就可以先跑一個 Lora 來看看有沒有你要的結果。
進階設定
AI-Toolkit 除了 GUI 以外,右上角可以打開 Show Advanced 的模式,他是一個 yaml 的結構文件,要注意一件事情,當你在 Show Advanced 修改過後,如果切回 Show Simple 但是畫面壞了,那就表示你把設定改壞了。
在你確定你知道自己在做什麼事情的情況下,Show Advanced 可以修改一些在 GUI 裡面沒有的東西。
- Datasets 可以設定重複次數(
num_repeats),就是 Kohya 的資料夾名稱前面的那個 數字。 optimizer可以換成lion,lion8bit,prodigy,prodigy8bit,adam,adamw,adam8,adamw8,ademamix8bit,adagrad,automagic。lr_scheduler預設是constant,可以改為cosine,cosine_with_restart,constant_with_warmup,linear,step。constant_with_warmup需要搭配num_warmup_steps預設1000。cosine_with_restarts需要在lr_scheduler_params當中設定total_iters與max_iterations,其中max_iterations設定與總步數相同,total_iters設定為多少 Steps 後要重新啟動餘弦退火。optimizer_params可以根據不同的 Optimizer 去設定不同的超參數。
其餘的設定基本上在 GUI 都有,當然,你設定完上述的功能後,就不要再切回 GUI 去改動到相關設定,不然你就得重來。
訓練結果驗證
訓練完成之後就使用 ComfyUI 基本的工作流就能驗證效果。

有了訓練結果之後,我就可以來做其他的事情了,例如,融合。
融合 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 | 影響飽和度、色調平衡、光照來源與強弱。 |
以上無法保證對錯,請自行斟酌參考!
然後,我做了一個小工具:
他可以調整單一,或是融合多個不同的 ZIT Lora,然後根據上述的區塊來調整出你想要的結果。
請留意,關於
--ratio是必填,而其他的區塊權重,會先乘上--ratio之後再相加。
小結
其實我不會寫 python,那個工具是我給概念,然後請 Claude 幫我寫的。