Z-Image Turbo: картинка за восемь шагов
Урок «zimage-turbo» в группе Картинки: модели списка уроков. Шагов: 14.
Чему вы научитесь
Соберёте граф для дистиллированной модели, которая рисует за 8 шагов при cfg 1, и узнаете, почему негативный промпт ей не нужен.
Что понадобится
- Урок продолжает Какой загрузчик для какого файла. Карточка говорит об этом; это подсказка, а не замок.
- Файлы моделей, которые урок проверяет:
- модель Z-Image:
models/diffusion_models, напримерz_image_turbo_bf16.safetensors; - файл qwen_3_4b:
models/text_encoders, напримерqwen_3_4b.safetensors; - VAE от Flux, файл ae.safetensors:
models/vae, напримерae.safetensors.
- модель Z-Image:
- Ноды: Load Diffusion Model, Load CLIP, Load VAE, ModelSamplingAuraFlow, CLIP Text Encode (Prompt), ConditioningZeroOut, EmptySD3LatentImage, KSampler, VAE Decode, Save Image / Preview Image.
- Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.
Шаги
Слова каждого шага, как их показывает урок. Имена нод выделены.
Что такое дистиллированная модель (чтение)
Turbo, Lightning, schnell, distilled: эти слова значат модель, которую научили рисовать за несколько шагов. Она быстрая и платит за это: cfg должен быть 1, поэтому негативный промпт не читается, а лишние шаги почти не помогают.
Z-Image Turbo от Alibaba Tongyi как раз такая. Она хорошо рисует фото, понимает английский и китайский и умеет писать на картинке короткие слова.
Это граф шаблона ComfyUI «Z-Image-Turbo: Text to Image».
Какие файлы нужны вашему семейству (чтение)
- модель:
z_image_turbo_bf16.safetensorsв models/diffusion_models; - текстовый энкодер:
qwen_3_4b.safetensorsв models/text_encoders. Это небольшая языковая модель: она читает промпт так же, как любой текст; - VAE:
ae.safetensorsв models/vae, тот же файл, что у Flux.
Базовая модель Z-Image (без Turbo) берёт тот же энкодер и VAE, а файл модели у неё свой:
z_image_bf16.safetensors.Если файла нет в списке, значит, его нет в вашем ComfyUI. Приложение ничего не скачивает. Откройте в самом ComfyUI шаблон «Z-Image-Turbo: Text to Image»: он покажет, каких файлов не хватает и куда их положить. Берите файлы только с официальной страницы модели. Потом выберите здесь в меню «Синхронизация ▸ Синхронизировать сейчас», и файлы появятся в списках.
- модель:
Загрузите модель
Добавьте ноду Load Diffusion Model и выберите файл Z-Image Turbo в поле
unet_name.Загрузчик берёт из models/diffusion_models ту часть, которая рисует. Текстовый энкодер и VAE загружают свои ноды.
Загрузите текстовый энкодер
Добавьте ноду Load CLIP. В поле
clip_nameвыберите файл Qwen, а в полеtypeпоставьтеlumina2.Z-Image читает промпт так же, как семейство Lumina, поэтому ComfyUI называет тип по нему. С другим типом файл прочитается неверно, и картинка не будет иметь отношения к промпту.
Загрузите VAE
Добавьте ноду Load VAE и выберите
ae.safetensorsв полеvae_name.Z-Image работает с тем же сжатым видом картинки, что и Flux, поэтому берёт тот же VAE.
Задайте сдвиг
Добавьте ноду ModelSamplingAuraFlow и подключите выход
MODELноды Load Diffusion Model к её входуmodel. В полеshiftпоставьте 3.Модели этого вида убирают шум по прямой дорожке, а сдвиг говорит, на какой её части тратить шаги. Больший сдвиг отдаёт больше шагов крупным формам, меньший мелким деталям. Число взято из шаблона ComfyUI; пробуйте от 2 до 6, если композиция разваливается или детали получаются кашей.
Напишите промпт
Добавьте ноду CLIP Text Encode (Prompt) и подключите выход ноды Load CLIP к её входу
clip. В полеtextопишите картинку предложениями. Слова, которые нужно написать на картинке, ставьте в кавычки: керамическая кружка на деревянном столе, на ней напечатано слово "MORNING", мягкий свет из окна.Языковая модель лучше понимает длинное точное описание, чем список тегов.
Дайте что-то на вход негатива
Добавьте ноду ConditioningZeroOut и подключите выход ноды CLIP Text Encode (Prompt) к её входу
conditioning.При cfg 1 сэмплер вход negative не читает, поэтому шаблон ComfyUI подаёт туда пустое условие. Негативный промпт здесь ничего не делает: что не нужно, скажите в самом промпте.
Добавьте пустой латент
Добавьте ноду EmptySD3LatentImage и поставьте в полях
widthиheight1024.Это тот же пустой латент, что у Flux, с 16 каналами. Z-Image хорошо рисует примерно до 2 мегапикселей; обе стороны должны делиться на 16.
Добавьте сэмплер
Добавьте ноду KSampler и подключите:
- ко входу
modelвыход ноды ModelSamplingAuraFlow, а не загрузчика; - ко входу
positiveвыход ноды CLIP Text Encode (Prompt); - ко входу
negativeвыход ноды ConditioningZeroOut; - ко входу
latent_imageвыход ноды EmptySD3LatentImage.
- Мало шагов, cfg 1
В ноде KSampler поставьте:
steps: 8;cfg: 1;sampler_name:res_multistep;scheduler:simple.
Модель научили заканчивать примерно за восемь шагов. С меньшим числом картинка остаётся грубой, с гораздо большим не становится лучше. Cfg выше 1 выжигает цвета и удваивает время.
- Превратите результат в картинку
Добавьте ноду VAE Decode. Ко входу samples подключите выход ноды KSampler, ко входу vae выход ноды Load VAE.
Сэмплер выдаёт картинку в сжатом виде, латент. VAE того же семейства разворачивает его в пиксели.
- Сохраните картинку
Добавьте ноду Save Image и подключите выход ноды VAE Decode к её входу images.
Без неё ComfyUI посчитает картинку и никуда её не положит.
- Граф готов (чтение)
Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.
Если результат плохой:
- серый шум или ошибка: VAE не
ae.safetensors; - картинка не слушает промпт:
typeнеlumina2; - пластиковая кожа или выжженные цвета:
cfgвыше 1.
Базовая Z-Image (без Turbo) работает на том же графе с другими числами: 25 шагов, cfg 4 и настоящий негативный промпт во второй текстовой ноде вместо ConditioningZeroOut. С ней работают только LoRA, сделанные для Z-Image.
Что проверяет урок
Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:
- Шаг 3, Загрузите модель:
- нода Load Diffusion Model.
- в поле
unet_nameноды Load Diffusion Model стоит файл такого вида: модель Z-Image; такой файл лежит вmodels/diffusion_models, напримерz_image_turbo_bf16.safetensors.
- Шаг 4, Загрузите текстовый энкодер:
- нода Load CLIP.
- в поле
clip_nameноды Load CLIP стоит файл такого вида: файл qwen_3_4b; такой файл лежит вmodels/text_encoders, напримерqwen_3_4b.safetensors. typeноды Load CLIP:lumina2. Почему: с чтением текста не того типа модель прочтёт промпт неправильно и получит бессмыслицу.
- Шаг 5, Загрузите VAE:
- нода Load VAE.
- в поле
vae_nameноды Load VAE стоит файл такого вида: VAE от Flux, файл ae.safetensors; такой файл лежит вmodels/vae, напримерae.safetensors.
- Шаг 6, Задайте сдвиг:
- нода ModelSamplingAuraFlow.
MODELноды Load Diffusion Model во входmodelноды ModelSamplingAuraFlow (можно через LoraLoaderModelOnly).shiftноды ModelSamplingAuraFlow: от 1 до 10; «Сделать за меня» ставит 3. Почему: сдвиг решает, на что уходят шаги; шаблон Z-Image ставит 3.
- Шаг 7, Напишите промпт:
- нода CLIP Text Encode (Prompt).
CLIPноды Load CLIP во входclipноды CLIP Text Encode (Prompt).textноды CLIP Text Encode (Prompt): не меньше 20 знаков.
- Шаг 8, Дайте что-то на вход негатива:
- нода ConditioningZeroOut.
CONDITIONINGноды CLIP Text Encode (Prompt) во входconditioningноды ConditioningZeroOut.
- Шаг 9, Добавьте пустой латент:
- нода EmptySD3LatentImage.
widthноды EmptySD3LatentImage: от 512 до 2048; «Сделать за меня» ставит 1024. Почему: z-Image учили около одного мегапикселя.heightноды EmptySD3LatentImage: от 512 до 2048; «Сделать за меня» ставит 1024. Почему: z-Image учили около одного мегапикселя.
- Шаг 10, Добавьте сэмплер:
- нода KSampler.
MODELноды ModelSamplingAuraFlow во входmodelноды KSampler (можно через LoraLoaderModelOnly).CONDITIONINGноды CLIP Text Encode (Prompt) во входpositiveноды KSampler.CONDITIONINGноды ConditioningZeroOut во входnegativeноды KSampler.LATENTноды EmptySD3LatentImage во входlatent_imageноды KSampler.
- Шаг 11, Мало шагов, cfg 1:
stepsноды KSampler: от 4 до 12; «Сделать за меня» ставит 8. Почему: турбо-модель обучена заканчивать примерно за 8 шагов.cfgноды KSampler:1. Почему: при cfg 1 негатив не читается; больший cfg выжигает цвета турбо-модели.sampler_nameноды KSampler:res_multistep.schedulerноды KSampler:simple.
- Шаг 12, Превратите результат в картинку:
- нода VAE Decode.
LATENTноды KSampler во входsamplesноды VAE Decode.VAEноды Load VAE во входvaeноды VAE Decode.
- Шаг 13, Сохраните картинку:
- нода Save Image или Preview Image.
IMAGEноды VAE Decode во входimagesноды Save Image или Preview Image.
Что дальше
Этот урок продолжают: Qwen-Image: надписи на картинке, Квантованная модель: GGUF.