Latent space
Латентное пространство — сжатое математическое многообразие, в которое нейросеть отображает данные. У современных диффузионных моделей изображение 512×512 пикселей превращается в латент 64×64×4 числа — на 48 порядков компактнее. Все вычисления модель проводит именно в латенте.
Определение латентного пространства
Латентное пространство (от лат. latens — скрытый) — математическое многообразие, в которое модель отображает входные данные с сохранением смысловой структуры, но в существенно меньшей размерности. Концепция фундаментальна для автоэнкодеров (VAE — Kingma, Welling, 2013), GAN и современных диффузионных моделей.
Пример из Stable Diffusion 1.5: фото 512×512 RGB — тензор 512×512×3 = 786 432 числа. VAE-encoder сжимает его в латент 64×64×4 = 16 384 числа — в 48 раз меньше. Все шаги диффузии (50–100 итераций денойза) происходят с этим маленьким тензором. В конце VAE-decoder превращает финальный латент обратно в пиксели. Поэтому SD называется «latent diffusion».
Зачем нужно сжатие
Если бы SD работал прямо с пикселями, одна генерация требовала бы в десятки раз больше памяти и времени. До латентной диффузии (paper Rombach et al., декабрь 2021, arXiv:2112.10752) пиксельные модели вроде GLIDE и DALL-E 2 требовали кластера A100. Латентная диффузия позволила запускать text-to-image на потребительской GPU 8 ГБ VRAM — именно это обеспечило массовое распространение SD летом 2022 года.
Внутренняя структура латента не случайна — соседние точки соответствуют визуально похожим изображениям:
- Интерполяция: латент(кот) + латент(собака) пополам = промежуточное существо.
- Слот-вектор: разность
latent(улыбающийся) − latent(серьёзный)= вектор улыбки, прибавляется к другим латентам. - Inversion: подобрать латент, декодящийся в данное фото — основа image-to-image и редактирования.
В Midjourney, Flux.1, SDXL принцип тот же, размерность различается: SDXL — 128×128×4 для 1024×1024, Flux.1 — 128×128×16. Больше каналов латента = больше деталей при декодинге.
Связанные концепции
Латентное пространство — фундамент диффузионных моделей и Stable Diffusion. VAE — стандартный энкодер латента. U-Net — сеть, которая денойзит латент. GAN — альтернативный класс со своим латентом (часто 512-мерный вектор). Управление латентом — через ControlNet, LoRA, IP-Adapter. Латент-апскейл применяется при апскейле через диффузию (SeedVR2).
Частые вопросы
Почему 4 канала, а не 3 как у RGB?
VAE SD обучен так, чтобы 4 канала совместно несли больше информации, чем 3 канала RGB — это даёт более точную реконструкцию. Каналы абстрактные, не привязаны к цветам. У Flux.1 каналов 16 — ещё лучше качество при большом разрешении.
Можно ли увидеть, как выглядит латент?
Прямо — нет, это абстрактный тензор. Если вывести 4 канала как 4 grayscale-картинки, получаются размытые тоновые карты. В ComfyUI есть нода Decode Latent — показывает промежуточные шаги денойза, самый наглядный способ увидеть превращение латента в фото.
Чем латент VAE отличается от эмбеддинга CLIP?
VAE-латент — сжатое представление, из которого можно декодировать обратно в пиксели. CLIP-эмбеддинг — семантический вектор (768 или 1024 числа), описывающий «о чём» картинка, без возможности восстановить пиксели. В SD используются оба: CLIP текста — кондишн, VAE-латент — объект денойза.
Латент-апскейл — что это?
Апскейл в латентном пространстве: латент масштабируется (например, ×2), модель доуточняет детали через несколько шагов денойза. Быстрее и качественнее пиксельного апскейла на классических моделях, используется в SeedVR2 и tile-based пайплайнах.