Phase 08 - Lesson 19
Modelado Autorregresivo Visual (VAR): Predicción de Siguiente Escala
Los modelos de difusión realizan muestreos iterativos en el tiempo (pasos de desenoizado). VAR realiza muestreos iterativos en escala: predice un token de 1x1, luego 2x2, luego 4x4, hasta la resolución final, y cada escala se condiciona en la anterior. El artículo de 2024 demostró que VAR se alinea con las leyes de escala de tipo GPT para la generación de imágenes y supera a DiT con el mismo presupuesto de cómputo. Esta lección construye el mecanismo principal.
Tipo: Build Lenguajes: Python (con PyTorch) Prerrequisitos: Fase 7 Lección 03 (Multi-Head Attention), Fase 8 Lección 06 (DDPM) Tiempo: ~90 minutos
El Problema
La generación autorregresiva dominó el modelado de lenguaje porque escala de manera predecible: más cómputo, más parámetros, menor perplejidad, mejores resultados. La generación de imágenes tuvo dos intentos principales de AR antes de 2024: PixelRNN/PixelCNN (píxel por píxel) y DALL-E 1 / Parti / MuseGAN (token por token en códigos de VQ-VAE).
Ambos sufrieron de un problema con el orden de generación. Los píxeles y los tokens están dispuestos en una cuadrícula 2D, pero el modelo AR tiene que recorrerlos en un orden de barrido de trama (raster) 1D. Un píxel inicial de la esquina no tiene idea de en qué se convertirá finalmente la imagen. La calidad de generación escaló peor que GPT en texto y nunca alcanzó la calidad de los modelos de difusión con un presupuesto de cómputo equivalente.
VAR soluciona el problema del orden de generación al cambiar qué es lo que se está generando. En lugar de predecir tokens de imagen uno por uno en el espacio, VAR predice una imagen completa a resoluciones crecientes. Paso 1: predecir un token de 1x1 (el "resumen" general de la imagen). Paso 2: predecir una cuadrícula de tokens de 2x2 (características más gruesas). Paso 3: predecir una cuadrícula de 4x4. Paso K: predecir la cuadrícula final de (H/8)x(W/8).
Cada escala atiende a todas las escalas anteriores (causalmente en "orden de escala") y de forma paralela dentro de su propia escala. El problema del orden desaparece: la imagen completa en la escala k se produce en una sola pasada del transformer.
El Concepto
Tokenizador Multiescala VQ-VAE
VAR necesita un tokenizador discreto multiescala. Para una imagen x, produce una secuencia de cuadrículas de tokens de resolución progresivamente mayor:
x -> encoder -> latent f
f -> tokenize at 1x1: token grid z_1 of shape (1, 1)
f -> tokenize at 2x2: token grid z_2 of shape (2, 2)
...
f -> tokenize at (H/p)x(W/p): token grid z_K of shape (H/p, W/p)
Cada z_k utiliza el mismo codebook (tamaño típico de 4096-16384). La tokenización en cada escala no es independiente; se entrena de modo que la suma de los residuos en cada escala reconstruya f:
f ≈ upsample(embed(z_1), target_size) + ... + upsample(embed(z_K), target_size)
Esta es una variante de VQ residual. La escala k captura lo que las escalas 1..k-1 omitieron. El decodificador toma la suma de todos los embeddings de escala y produce la imagen.
El tokenizador VQ multiescala se entrena una vez (como VQGAN) y luego se congela. Todo el trabajo generativo es realizado por el modelo autorregresivo en la parte superior.
Predicción de Siguiente Escala
El modelo generativo es un transformer que observa los tokens de todas las escalas anteriores y predice los tokens en la siguiente escala.
Estructura de la secuencia de entrada:
[START, z_1 tokens, z_2 tokens, z_3 tokens, ..., z_K tokens]
Los embeddings de posición codifican tanto el índice de escala como la posición espacial dentro de la escala. La atención es causal en el orden de la escala: el token en la escala k, posición (i, j) puede atender a todos los tokens en las escalas 1..k y a los tokens en la propia escala k que aparezcan antes en cualquier orden intraescala que se utilice (VAR utiliza atención posicional fija sin causalidad intraescala: todas las posiciones dentro de una escala se predicen en paralelo).
Pérdida de entrenamiento: en cada escala k, predecir los tokens z_k dados todos los tokens de escalas previas. Pérdida de entropía cruzada (cross-entropy) sobre los códigos discretos de VQ. La misma estructura que GPT, excepto que la "secuencia" ahora está estructurada por escalas.
Generación
En la inferencia:
generate z_1 = sample from p(z_1) # 1 token
generate z_2 = sample from p(z_2 | z_1) # 4 tokens in parallel
generate z_3 = sample from p(z_3 | z_1, z_2) # 16 tokens in parallel
...
decode: f = sum of embed-and-upsample scales 1..K
image = VAE_decoder(f)
Para K = 10 escalas, la generación consiste en 10 pasadas hacia adelante (forward passes) del transformer. Cada pasada produce su escala completa en paralelo, sin autorregresión por token dentro de una escala. Para una imagen de 256x256, esto representa aproximadamente 10 pasadas frente a las 28-50 de DiT.
Por Qué la Predicción de Siguiente Escala Supera a la de Siguiente Token
Tres ventajas estructurales:
- O alineamiento de grueso a fino con las estadísticas naturales de las imágenes. La percepción visual humana y los conjuntos de datos de imágenes exhiben regularidades dependientes de la escala: la estructura de baja frecuencia es estable y predecible; el detalle de alta frecuencia es condicional al contenido de baja frecuencia. La predicción de siguiente escala explota esto.
- Generación paralela dentro de la escala. A diferencia del AR de tokens estilo GPT, VAR produce todos los tokens de una escala en un solo paso. La longitud efectiva de generación es de escala logarítmica en lugar de lineal.
- Sin sesgo en el orden de generación. Los tokens en la escala k ven toda la escala k-1; no existe un sesgo de "a la izquierda de" o "arriba de" que obligue a los tokens iniciales a comprometerse antes de que el contexto posterior esté disponible.
Ley de Escala
Tian et al. demostraron que VAR sigue una curva de escala de ley de potencia para FID en ImageNet, al igual que GPT lo hace para la perplejidad. Duplicar los parámetros o el cómputo reduce el error a la mitad de manera confiable. Este fue el primer modelo generativo de imágenes que exhibió este tipo de comportamiento de escala de manera tan clara como los modelos de lenguaje. El resultado es que las predicciones de escala VAR se vuelven predecibles a partir del cómputo, no por estimaciones empíricas por arquitectura.
Relación con la Difusión
VAR y la difusión comparten la misma historia de compresión de datos: ambos descomponen el problema de generación en una secuencia de subproblemas más sencillos.
- Difusión: añade ruido gradualmente, aprende a deshacer un paso.
- VAR: añade resolución gradualmente, aprende a predecir la siguiente escala.
Son ejes diferentes a través del problema. Ambos generan distribuciones condicionales tratables. Empíricamente, VAR es más rápido en la inferencia (menos pasadas, todo en paralelo dentro de una escala) y iguala o supera a DiT en ImageNet condicional de clase. El VAR condicional de texto (VARclip, HART) es una dirección de investigación activa.
Build It
En code/main.py vas a:
- Construir un pequeño tokenizador VQ multiescala sobre datos de "imagen" sintéticos (anillos gaussianos 2D).
- Entrenar un transformer estilo VAR para predecir los tokens en la siguiente escala.
- Muestrear llamando al transformer 4 veces (4 escalas) y decodificando.
- Verificar que el entrenamiento ordenado por escalas hace que la generación sea paralela dentro de una escala.
Esta es una implementación de juguete. El punto es ver la máscara de atención estructurada por escala y el funcionamiento real de la generación paralela dentro de la escala.
Ship It
Esta lección produce outputs/skill-var-tokenizer-designer.md, una habilidad para diseñar un tokenizador multiescala: número de escalas, relaciones de escala, tamaño del codebook, uso compartido de residuos, arquitectura del decodificador.
Ejercicios
Ablación del número de escalas. Entrena VAR con 4, 6, 8, 10 escalas. Mide la calidad de reconstrucción frente al número de pasadas autorregresivas. Más escalas = residuos más finos = mejor calidad pero más pasadas.
Tamaño del codebook. Entrena tokenizadores con tamaños de codebook de 512, 4096, 16384. Los codebooks más grandes ofrecen una mejor reconstrucción pero una predicción más difícil. Encuentra el punto de inflexión.
Verificación de paralelo dentro de la escala. Para un VAR entrenado, mide el patrón de atención de manera explícita. Dentro de la escala k, ¿el modelo atiende a posiciones entre escalas pero no dentro de la misma escala? Verifica la implementación de la máscara.
Escalamiento de VAR vs DiT. Para la misma tarea condicional de clase en ImageNet, entrena VAR y DiT con presupuestos de parámetros equivalentes (por ejemplo, 33M, 130M, 458M). Grafica FID frente a cómputo. VAR debería superar a DiT en cada tamaño; reproduce el resultado del artículo a pequeña escala.
Condicionamiento de texto. Extiende VAR para tomar un embedding de texto (CLIP pooled) como una entrada adicional de condicionamiento mediante adaLN. Esta es la receta de HART. ¿Cuánto mejora el FID en el muestreo alineado con el texto?
Términos Clave
| Término | Lo que la gente dice | Lo que realmente significa |
|---|---|---|
| VAR | "Visual AutoRegressive" | Generación de imágenes mediante predicción de siguiente escala sobre una pirámide de cuadrículas de tokens VQ |
| Next-scale prediction | "Prever más grueso, luego más fino" | El modelo predice tokens a escalas de resolución creciente, condicionándose en todas las escalas anteriores |
| Multi-scale VQ tokenizer | "VQ residual" | VQ-VAE que produce K cuadrículas de tokens de resolución creciente, con el decodificador sumando todas las escalas |
| Scale k | "Nivel de pirámide k" | Uno de K niveles de resolución, desde 1x1 en k=1 hasta (H/p)x(W/p) en k=K |
| Parallel-within-scale | "Una pasada hacia adelante por escala" | Todos los tokens en la escala k se predicen en una sola pasada del transformer, no de manera autorregresiva |
| Causal-across-scales | "Atención ordenada por escala" | El token en la escala k puede atender a todas las escalas de 1..k pero no a las escalas de k+1..K |
| Residual VQ | "Tokenización aditiva" | Los tokens de cada escala codifican el residuo dejado por las escalas inferiores; el decodificador suma todos los embeddings de escala |
| VAR scaling law | "Escalamiento de GPT para imágenes" | El FID sigue una ley de potencia predecible en el cómputo, al igual que la perplejidad de los modelos de lenguaje |
| HART | "Híbrido VAR + texto" | Variante de VAR condicional de texto que combina decodificación iterativa estilo MaskGIT con la estructura de escala de VAR |
| Scale position embedding | "Tripleta (escala, fila, col)" | La codificación posicional contiene tanto el índice de escala como las coordenadas espaciais dentro de la escala |
Lecturas Adicionales
- Tian et al., 2024 — "Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction" — el artículo de VAR, referencia canónica
- Peebles and Xie, 2022 — "Scalable Diffusion Models with Transformers" — DiT, la línea base de comparación de difusión
- Esser et al., 2021 — "Taming Transformers for High-Resolution Image Synthesis" — VQGAN, la familia de tokenizadores que extiende el tokenizador multiescala de VAR
- van den Oord et al., 2017 — "Neural Discrete Representation Learning" — VQ-VAE, el fundamento de la tokenización discreta de imágenes
- Tang et al., 2024 — "HART: Efficient Visual Generation with Hybrid Autoregressive Transformer" — VAR condicional de texto