ComfyUI генерирует черный квадрат и артефакты вместо изображения — до и после исправления VAE Decode и настроек запуска
AI и DIY,  Статьи

ComfyUI генерирует чёрный квадрат/артефакты вместо изображения. Что делать?

Иногда после успешного прохождения цикла генерации в ComfyUI вместо ожидаемого изображения появляется чёрный квадрат, серый шум, сильные цветовые артефакты или полностью испорченная картинка.

Пример сбоя (промпт: «A fashion photography work full of surreal romanticism, using a low-angle upward shooting composition, with a clear light blue sky as the background, and the visual focus concentrated on the fantasy blue vegetation and the model walking through it»):

Генерация «Черного Квадрата» Малевича вместо желаемого промта:

Подобные ошибки могут возникать из-за следующих причин:

  • Проблемы с VAE (самая частая причина). Повреждённый, отсутствующий или неправильно подключённый VAE приводит к появлению чёрного/серого квадрата или сильного шума. VAEDecode не может корректно преобразовать латент обратно в изображение.
  • Несовместимый режим точности (precision) BF16/FP16 на старых GPU (GTX 10xx/16xx, некоторые AMD/Intel) или неправильные launch-аргументы, переключение GPU в неподдерживаемый режим оптимизации.
  • Нехватка VRAM (либо деградация чипов) или утечки памяти, особенно при высоком разрешении, множестве LoRA/ControlNet или Flux-моделях.
  • Неправильные настройки Sampler / CFG Слишком высокий CFG (особенно >12–15 для SDXL/Flux) «выжигает» изображение в чёрный цвет.
  • Конфликты кастомных нод, библиотек (timm) и версии Python.
  • Ошибки workflow (пустой latent, denoise=0, неправильное подключение).

Чтобы исправить генерацию цветового шума/черных квадратов вместо желаемого изображения можно использовать следующие способы:

  • попробовать сменить или добавить надежный узел VAE. В первую очередь проверить работу узла VAEDecode, убедиться, что в него подается правильный латентный образ (samples) и задействуется рабочий VAE. Можно попробовать сохранить latent (Save Latent) и попробовать декодировать его отдельно — это быстро выявит проблему именно в VAE.

Рекомендуется использовать надёжный VAE, например:

  • SD1.5: vae-ft-mse-840000-ema-pruned.safetensors (или fp16-версию).
  • SDXL: sdxl_vae.safetensors или встроенный в модель.
  • Flux: ae.sft / flux_ae.safetensors.

Кроме того, можно попробовать добавить Load VAE → VAEDecode из стандартных официальных нод, а для больших разрешений/upscaling — Tiled VAE Decode из ComfyUI-Impact-Pack или KJNodes при. Это сильно снижает VRAM-проблемы и риск появления артефактов.

  • принудительно изменить/добавить аргументы режима точности (FP32/FP16 и т. д.) в командной строке запуска comfyui.

Некоторые видеокарты (особенно старые GPU Nvidia серии GTX 16xx/10xx, а также некоторые карты AMD/Intel) не умеют корректно считать в режимах половинной точности (BF16/FP16), из-за чего некорректно работают математические веса модели и получаются артефакты/черный кадр. Ошибки при генерации на картинках выше были вызваны использованием модели z_image_bf16.safetensors (заточена под BF16-вычисления) на видеокартах, не умеющих «из коробки» проводить такие вычисления.

В этом случае можно использовать дополнительные аргументы запуска ComfyUI, например, для старых GPU (GTX 16xx и ниже):

  ./venv/bin/python3 main.py --no-half --no-half-vae

или

./venv/bin/python3 main.py --force-fp32

для Tesla V100:

./venv/bin/python3 main.py  --force-fp16

Для современных карт (Nvidia RTX 30/40/50):

./venv/bin/python3 main.py --fp16-vae   # или --bf16-vae

Для Mac (MPS) рекомендуется использовать параметр force_model_dtype: «float32» в config/settings.json + CPU VAE.

Генерация с такими параметрами исправляет результат даже на несовместимых видеокартах:

Тот же промт, comfyui запущен с половинной точностью (multi-GPU система с видеокартами Nvidia Tesla V100, GeForce GTX 1660S + GeForce GTX 1660 Ti):


То же, после включения неофициального узла FlashAttn для Tesla V!00:


Еще одной причиной сбоя генерации является ошибка планировщика (Sampler/Scheduler). Слишком высокий шаг прохода (CFG Scale) выше 15–20 или специфические планировщики могут «выжечь» картинку до чистого черного цвета. Чтобы исправить такую ошибку, нужно:

  • установить в узле KSampler стандартные значения, например: CFG = 7.0, Steps = 20-30;
  • поменять sampler_name на euler, dpmpp_2m_karras или ddim, а scheduler на normal;
  • для Flux / Aurora / SD3: CFG ≈ 1.0–1.5 + отдельный Flux Guidance (2.5–4.0).

При использовании операционной системы с не совсем подходящей версией python также могут возникать ошибки в работе узлов comfyui. Вроде бы вполне рабочее окружение начинает вести себя неадекватно, выдавая консольные сообщения о сбоях, либо вообще отказываясь от работы, падая в KeyError: ‘ram_inactive’:

...File "ComfyUI/execution.py", line 731, in execute_async ram_inactive_headroom = int(self.cache_args["ram_inactive"] * (1024 ** 3)) KeyError: 'ram_inactive'"...

Это происходит из-за конфликта с кастомными узлами и плохой совместимсти ComfyUI на свежей (на момент написания статьи) версии Python 3.14.

При генерации может появиться искаженное изображение/черный квадрат из-за конфликта в библиотеках, например, у автора появлялись проблемы с timm (ошибка FutureWarning: Importing from timm.models.layers is deprecated)^

...FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers

warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)...

Эта библиотека часто используется кастомными узлами для работы с детекторами лиц, апскейлерами или ControlNet. На несовместимых версиях Python (включая самый новый Python 3.14) старый синтаксис timm вызывает сбой при передаче тензоров в видеокарту, из-за чего математика генерации ломается и на выходе получается пустое изображение (черный квадрат).

Эта ошибка обычно лечится обновлением timm, либо переустановкой comfyui с подходящей версией Python (сейчас рекомендуемая версия Python для ComfyUI — 3.11 или 3.12).

  python3 -m venv venv && source venv/bin/activate
  pip install --upgrade timm

или

  pip install --upgrade --force-reinstall timm

Чтобы оптимизировать работу с VRAM стоит импользовать ноды Empty Latent Cache, VRAM Dump, перед генерацией активировать в ComfyUI Manager опцию «Free VRAM» / «Reload Nodes», а также для слабых видеокарт добавлять в скрипт запуска comfyui параметры:

  --lowvram, --medvram, --medvram-sdxl

Краткий чек-лист действий по устранению причин генерации артефактов/черных квадратов Малевича:

  1. Перезапустить ComfyUI + Clean VRAM.
  2. Проверить подключение Load VAE → VAEDecode.
  3. Попробовать стандартный VAE + —no-half-vae.
  4. Снизить разрешение, отключить лишние LoRA/ControlNet.
  5. CFG 7.0, Steps 20–30, sampler Euler.
  6. Обновить timm и custom nodes.

Если ничего не помогает — сохранить workflow как JSON и протестировать работу comfyui на простом примере из официальных шаблонов.

Дополнительные советы:

При работе с моделями Flux лучше использовать официальные workflow и FP8-версии моделей, которые экономят VRAM при сохранении качества.

При работе с ReActor / FaceID / LivePortrait часто помогают переименование модели или CPU offload.

Подсказки, помогающие найти ошибку, практически всегда есть в консоли comfyui там почти всегда есть подсказки (NaN, OOM, dtype warnings).

Для старых, но мощных видеокарт, например, Tesla V100, рекомендуется использовать ноды Empty Latent Cache, VRAM Dump, FlashAttention.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *