Image Generation

VAE

Variational Autoencoder — компонент Stable Diffusion, кодирующий изображения в латентное пространство.

Что такое VAE в Stable Diffusion

VAE (Variational Autoencoder) — нейросеть, кодирующая изображения в компактное латентное пространство меньшей размерности (8× сжатие по каждой оси) и декодирующая их обратно. В Stable Diffusion диффузионный процесс работает именно в латентном пространстве, а не в пространстве пикселей — это делает SD значительно эффективнее.

Структура VAE в SD:

  • Encoder: изображение 1024×1024 → латент 128×128×4 (или 16)
  • Decoder: латент → изображение 1024×1024

Зачем менять VAE

Стандартный VAE SD 1.5 и некоторые версии SDXL имеют проблемы: мутные лица, артефакты на коже, потери мелких деталей. Улучшенные VAE (madebyollin/sdxl-vae-fp16-fix, EMA VAE) устраняют эти проблемы.

# Заменить VAE на улучшенный
from diffusers import AutoencoderKL, StableDiffusionXLPipeline
import torch

vae = AutoencoderKL.from_pretrained(
    "madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16
)
pipe = StableDiffusionXLPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    vae=vae, torch_dtype=torch.float16
).to("cuda")

В ComfyUI/A1111: поместить VAE-файл (.safetensors) в models/VAE/ и выбрать в UI.

Tiled VAE

При генерации очень больших изображений (4K+) стандартный VAE не помещается в VRAM. Tiled VAE разбивает изображение на тайлы и обрабатывает их по частям:

pipe.enable_vae_tiling()   # Diffusers: обработка тайлами
pipe.enable_vae_slicing()  # пакетная обработка по одному изображению

Связанные термины

  • Stable Diffusion — использует VAE
  • SDXL — требует fp16-fix VAE
  • FLUX — имеет свой VAE (ae.safetensors)
  • латентное пространство (сжатое представление изображения) — см. также тензор, эмбеддинг

Готовы запустить GPU-задачу?

Запустить GPU-сервер