Zen Image Edit: Qwen-Image 2.1 на кодировщике 0.8B в ComfyUI

ComfyUI Wikinews

Zen Image Edit запускает Qwen-Image 2.1 на текстовом кодировщике Qwen3.5-0.8B и адаптере слияния на 158M, сокращая кодировщик с 17,5 ГБ до 1,7 ГБ, с двумя маршрутами в ComfyUI.

Zen Image Edit (Hugging Face) сохраняет DiT и VAE модели Qwen-Image 2.1, но заменяет текстовый кодировщик Qwen3-VL-8B объёмом 17,5 ГБ на Qwen3.5-0.8B (1,7 ГБ) плюс адаптер слияния текста на 158M, обученный воспроизводить условие исходного кодировщика. Один пайплайн охватывает text-to-image, редактирование персонажей и сцен и вывод прозрачного RGBA, а карточка модели содержит как код Diffusers, так и маршрут для ComfyUI.
Пример text-to-image от Zen Image Edit при 1024 px

Text-to-image при 1024 px, 30 шагов, сгенерировано пайплайном. Источник: AiArtLab/zen-image-edit.

Что меняет Zen Image Edit

Именно стек условий Qwen-Image 2.1 делает модель дорогой по памяти: текстовый кодировщик базовой модели это Qwen3-VL-8B примерно на 17,5 ГБ в fp16, и он должен располагаться рядом с DiT на 14,5 ГБ. Zen Image Edit заменяет его небольшим мультимодальным кодировщиком и адаптером, который имитирует то, что выдавал большой кодировщик, как по обычному тексту, так и по тексту вместе с референсными изображениями.

КомпонентZen Image Edit
ТрансформерDiT Qwen-Image 2.1, 32 слоя, 14,5 ГБ fp16, со встроенным адаптером слияния текста на 158M
Текстовый кодировщикQwen3.5-0.8B, 1,7 ГБ fp16, tokenizer и processor без изменений
Точность условийкосинус 0,95 по тексту, 0,97 по визуальным позициям промптов редактирования, в сравнении с нативным кодировщиком Qwen3-VL-8B
VAEдообученный декодер Qwen-Image 2.1, 16x пространственное сжатие, fp32
SchedulerFlowMatchEulerDiscreteScheduler, простой статический сдвиг 5.0
Пиковая VRAMоколо 17,5 ГБ в резидентной памяти, меньше с enable_model_cpu_offload()

Адаптер живёт внутри DiT как его блок слияния текста, поэтому вся модель это одна самодостаточная папка Diffusers, и отдельный кодировщик на 17,5 ГБ нигде не нужен. Сэмплер использует простой статический сдвиг 5.0 вместо динамического сдвига базовой модели.

Поставляемый в комплекте адаптер имеет ревизию v12. Таблица позиций его ветви внимания покрывает 2 304 слота, и он дообучался на реальной геометрии редактирования 1024 px, поэтому длинные референсные последовательности сохраняют свои позиции, а не попадают в хвост с нулевым заполнением. Это подняло визуальный косинус относительно нативного кодировщика с 0,93 до 0,97, тогда как текст остался на 0,95.

Дообученный VAE

Поставляемый декодер не является стандартным для Qwen-Image 2.1. Это дообученный только декодер на основе madebyollin/texture-fix-vae-for-qwen-image-2.1, обученный убирать решётку в 2 px, которую апсемплинг nearest-exact фиксирует в выходном шаге. Обучался только декодер, 5 300 шагов, с одним дополнительным членом лосса: разницей peak-to-peak между средними значениями подрешёток 2x2 у реконструкции и у цели. Верно воспроизведённое содержимое даёт в этот член ноль, поэтому штрафуется только добавленная решётка. Кодировщик побитово идентичен оригиналу, что оставляет латентное пространство неизменным.

ДекодерPSNRLPIPSРешётка (/255)
оригинальный Qwen-Image 2.133.0730.053162.631
texture-fix32.8400.053880.125
этот VAE33.3970.052910.000

Реконструкция на 32 отложенных изображениях при 512 px. В карточке модели отмечено, что решётка не видна при 100% увеличении, поэтому её измеряют, а не оценивают на глаз.

Примеры

Редактирование одного изображения: фон меняется, субъект сохраняется

Редактирование с одним условием-изображением: фон меняется, субъект сохраняется.

Замена персонажа с двумя условиями-изображениямиЗамена персонажа с двумя условиями-изображениями
Два условия-изображения: <image1> сохраняет позу, одежду и сценуЛичность копируется из <image2>

Редактирование следует конвенции базовой модели: редактируется первое изображение (<image1>), а все последующие служат референсами. В карточке модели отмечено, что именно подача референса первым чаще всего становится причиной того, что замена «не происходит»: тогда модель редактирует сам референс.

Редактирование с тремя условиями-изображениями

Три условия-изображения: цель и композиция из <image1>, человек из <image2>, цвет и освещение из <image3>.

Прозрачный вывод RGBA

Генерация с прозрачностью (RGBA) идёт через тот же пайплайн.

Запуск в ComfyUI

Существует два независимых маршрута для ComfyUI, и ни одному из них не нужен кодировщик на 17,5 ГБ.

Пакет узлов: recoilme/zen-image-edit-comfyui. DiT, VAE, сэмплер и кэш префиксного KV остаются штатными в ComfyUI (требуется сборка с поддержкой Qwen-Image 2.1), а узел лишь поставляет маленький кодировщик и адаптер:

  1. Скачайте adapter_v12.safetensors (0.64 GB) в ComfyUI/models/.
  2. Поместите qwen_image_2.1_bf16.safetensors в models/diffusion_models/, а qwen_image_2.1_vae_bf16.safetensors в models/vae/, оба из Comfy-Org/Qwen-Image-2.1.
  3. Загрузите текстовый кодировщик: hf download Qwen/Qwen3.5-0.8B --local-dir ComfyUI/models/text_encoders/qwen3.5_0.8b.
  4. Перезапустите ComfyUI. Требуется transformers >= 5.17.

Автор сообщает о косинусе 1.0000 относительно сборки Diffusers из той же папки, и оба примера графов проверены от начала до конца.

Однофайловый чекпоинт: T8mars/comfyui-Zen-Image-Edit-T8. Устанавливаемый через ComfyUI Manager, этот маршрут упаковывает DiT, VAE, кодировщик Zen, адаптер слияния и ассеты tokenizer в один чекпоинт zen_image_edit_qwen21_single.safetensors, опубликованный как t8star/Zen-Image-Edit-Comfy. Его загрузчик возвращает MODEL, CLIP и VAE, поэтому отдельные загрузки не нужны, а загрузчик только для CLIP работает со штатными загрузчиками diffusion и VAE. Конверсия проверена на ComfyUI 0.37.0 с RTX 5090 Laptop на 24 ГБ, как на графе text-to-image, так и на графе редактирования изображений. Тот же репозиторий также переопубликовывает турбо-адаптеры Viggle в виде LoRA, которые загружаются во встроенных узлах ComfyUI, вместе с рабочими процессами.

Примеры, сгенерированные через пакет узлов ComfyUI

Два референса персонажей на входе, три сцены на выходе, через узел ComfyUI при 768x1280. Источник: recoilme/zen-image-edit-comfyui.

Задокументированные ограничения

В карточке модели пробелы перечислены, а не оставлены на самостоятельный поиск:

  • Только английский. Именно на нём обучался и тестировался адаптер, а другие языки дают отклонения.
  • Цифры на вывесках. «OPEN 24 HOURS» отрисовывается как «OPEN 26 HOURS» на всех проверенных seed. Слова передаются нормально.
  • Нефотографические референсы переносятся менее точно, чем фотографические, поскольку адаптер имитирует нативный кодировщик и наследует его потолок.
  • Размер пакета больше 1 при 1024 px даёт пик около 28 ГБ, поэтому один промпт за вызов является безопасным режимом.
Пример неудачной отрисовки текста

Слова отрисовываются правильно, цифры на вывесках нет. Источник: AiArtLab/zen-image-edit.

Доступность

Веса опубликованы как AiArtLab/zen-image-edit. Для карт на 16 ГБ есть сборка GGUF Q5_K в recoilme/zen-image-edit-gguf, которая во время запуска снижает трансформер с 13.55 GiB до 4.52 GiB. Для запуска пайплайна Diffusers нужен diffusers, собранный с поддержкой Qwen-Image-2.1, и trust_remote_code=True.

Комментарии

Войдите через GitHub, чтобы участвовать в обсуждении.

Загрузка комментариев…
Zen Image Edit: Qwen-Image 2.1 на кодировщике 0.8B в ComfyUI | ComfyUI Wiki