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-сервер