Phase 12 - Lesson 12

Emu3: Predicción de Próximo Token para Generación de Imagen y Video

Emu3 de BAAI (Wang et al., septiembre de 2024) es el resultado de 2024 que debería haber puesto fin al debate entre difusión y autorregresión. Un único transformer decoder-only al estilo Llama, entrenado únicamente con el objetivo de predicción de próximo token, a través de un vocabulario unificado de texto + tokens de imagen VQ + tokens de video VQ 3D, supera a SDXL en generación de imágenes y a LLaVA-1.6 en percepción. Sin pérdida CLIP. Sin cronograma de difusión (diffusion schedule). Classifier-free guidance se utiliza en la inferencia para mejorar la calidad, pero el objetivo central de entrenamiento es la predicción de próximo token con teacher forcing. Publicado en Nature. Esta lección analiza la tesis de Emu3 — por qué un mejor tokenizador más escala es todo lo que necesitas — y la contrasta con los enfoques de difusión.

Tipo: Learn Idiomas: Python (stdlib, matemática del tokenizador de video 3D + esqueleto de muestreador autorregresivo) Prerrequisitos: Phase 12 · 11 (Chameleon) Tiempo: ~120 minutos

Objetivos de Aprendizaje

  • Explicar por qué el objetivo de pérdida única de próximo token de Emu3 funciona a pesar de la vieja suposición de que se requiere difusión para la calidad de imagen.
  • Describir el tokenizador de video 3D: cómo es un codebook VQ espaciotemporal y por qué los parches (patches) abarcan el tiempo.
  • Comparar Emu3 vs Stable Diffusion XL en (cómputo de entrenamiento, costo de inferencia, techo de calidad).
  • Nombrar los tres roles que desempeña el mismo modelo Emu3: Emu3-Gen (generación de imágenes), Emu3-Chat (percepción), Emu3-Stage2 (generación de video).

El Problema

El consenso general hasta 2024: la generación de imágenes necesita difusión. El argumento: los tokens discretos de imagen pierden demasiada información para reconstruir detalles, y el muestreo autorregresivo acumula errores a lo largo de miles de tokens. Stable Diffusion, DALL-E 3, Imagen, Midjourney utilizan alguna forma de difusión. Chameleon (Lección 12.11) refutó parcialmente esto a pequeña escala, pero no igualó a SDXL en calidad.

Emu3 atacó este argumento directamente. La afirmación: un mejor tokenizador visual + suficiente escala + pérdida de próximo token = generación de imágenes superior a la difusión en el mismo modelo que también realiza percepción.

La apuesta fue controversial cuando se publicó. Dos años después, la familia de generación unificada de código abierto (Emu3, Show-o, Janus-Pro, Transfusion) es el camino predeterminado para la investigación; los modelos de frontera de producción parecen usar alguna variante.

El Concepto

El tokenizador de Emu3

El ingrediente clave es el tokenizador visual. Emu3 entrena un tokenizador personalizado de la clase IBQ (Inverse Bottleneck Quantizer, familia SBER-MoVQGAN) con una reducción de resolución de 8x8 por token. Una imagen de 512x512 se convierte en 64x64 = 4096 tokens con un tamaño de codebook de 32768.

Esto es más grande que los 1024 tokens de Chameleon por 512x512 con K=8192, pero más barato por token (búsquedas de codebook más pequeñas, códec más simple). La métrica clave: PSNR de reconstrucción a 30.5 dB, competitivo con el espacio latente continuo de Stable Diffusion a 32 dB.

Para video: un tokenizador VQ 3D codifica un parche espaciotemporal (4x4x4 píxeles) en un número entero. Un clip de 4s a 8 FPS tiene 32 fotogramas; a 256x256 con una reducción espacial de 4x y una reducción temporal de 4x, la cantidad de tokens es (256/4) * (256/4) * (32/4) = 64 * 64 * 8 = 32,768 tokens.

La calidad del tokenizador es el techo. La contribución de Emu3 consiste en parte en "hemos entrenado un tokenizador muy bueno".

Entrenamiento con pérdida única

Emu3 utiliza un solo objetivo: predicción de próximo token en un vocabulario compartido que abarca tokens de texto, tokens de imagen 2D y tokens de video 3D. Los pesos se multiplican por factores específicos de cada modalidad durante el entrenamiento para equilibrar la contribución, pero la función de pérdida es idéntica.

Entrenamiento con una mezcla de:

  • Gación de imagen (Image gen): <text caption> <image> image_tokens </image>
  • Percepción de imagen (Image perception): <image> image_tokens </image> <question> text_tokens
  • Gación de video (Video gen): <text caption> <video> video_tokens </video>
  • Percepción de video (Video perception): análogo.
  • Solo texto: NTP estándar.

El modelo aprende cuándo emitir tokens de imagen versus tokens de texto a partir de la distribución de datos. La generación surge cuando el modelo predice tokens de imagen después de la etiqueta <image>.

Classifier-free guidance y temperatura

La generación autorregresiva de imágenes mejora significativamente con classifier-free guidance (CFG) en la inferencia. Emu3 lo utiliza: genera dos veces, una vez con la descripción completa y otra con una descripción vacía, y mezcla los logits con un peso de guía (típicamente entre 3.0 y 7.0). Este es el mismo truco de CFG que utiliza la difusión, adaptado al entorno autorregresivo.

La temperatura importa: demasiado alta genera artefactos; demasiado baja provoca colapso de modo. La temperatura recomendada para Emu3 es 1.0 para percepción y 0.8 para generación de imágenes.

Tres roles, un modelo

Emu3 se distribuye como tres APIs funcionalmente distintas, pero con un único conjunto de pesos subyacente:

  • Emu3-Gen. Generación de imágenes. Entrada de texto, salida de tokens de imagen.
  • Emu3-Chat. VQA y subtitulado (captioning). Entrada de imagen (tokens), salida de texto.
  • Emu3-Stage2. Generación de video y VQA de video. Entrada de texto o video, salida de texto o video.

Sin cabezales específicos para tareas. Solo plantillas de prompts diferentes. Mismo checkpoint.

Benchmarks

Del artículo de Emu3 (septiembre de 2024):

  • Generación de imágenes: supera a SDXL en FID en MJHQ-30K (5.4 vs 5.6), GenEval general (0.54 vs 0.55 — empate artístico) y en el compuesto de Deep-Eval al mismo nivel.
  • Percepción de imágenes: supera a LLaVA-1.6 en VQAv2 (75.1 vs 72.4) y aproximadamente se iguala en MMMU.
  • Generación de video: calidad de clip de 4 segundos con FVD competitivo frente a modelos evaluados públicamente de la era Sora.

Los números no siempre son ganadores — Emu3 pierde un punto aquí para ganar otro allá — pero la afirmación de que "la predicción de próximo token es todo lo que necesitas" es defendible en todas las modalidades.

Costo de cómputo

Emu3 se entrenó con aproximadamente 300 mil millones de tokens multimodales con un modelo de 7B parámetros. Las horas de GPU son bastante comparables al preentrenamiento de Llama-2-7B (2k-4k años-GPU en chips de la clase A100). Los modelos de difusión como Stable Diffusion 3 se entrenan con presupuestos similares, pero requieren encoders de texto separados y pipelines más complejos.

En la inferencia, Emu3 es más lento que SDXL por imagen: 4096 tokens de imagen a 30 tok/s toma al rededor de 2 minutos por imagen de 512x512, en comparación con los 2-5 segundos de SDXL. La decodificación especulativa y la optimización de KV-cache reducen la brecha, pero no la eliminan. La generación autorregresiva de imágenes es computacionalmente pesada; esta es la desventaja actual.

Por qué importa

La contribución profunda de Emu3 es conceptual. Si la predicción de próximo token escala hasta igualar a la difusión en la generación de imágenes, el camino del modelo unificado (una sola pérdida, un solo backbone, cualquier modalidad) se vuelve viable. Los modelos futuros no necesitarán encoders de texto separados, schedulers de difusión separados o VAEs separados. Un transformer, un tokenizador por modalidad, escala.

Show-o, Janus-Pro e InternVL-U construyen sobre o desafían esta tesis. Los laboratorios chinos (BAAI, DeepSeek) publican de manera más agresiva en esta dirección que los laboratorios de EE. UU. hasta 2025.

Use It

code/main.py construye dos componentes sencillos:

  • Un calculador de cantidad de tokenizador VQ 2D vs 3D: dado (resolución, parche, duración del clip, FPS), calcula la cantidad de tokens para imagen vs video.
  • Un muestreador autorregresivo de tokens de imagen con classifier-free guidance por temperatura.

La implementación de CFG coincide con la receta de Emu3: mezclar logits condicionales e incondicionales con un peso de guía.

Ship It

Esta lección produce el archivo outputs/skill-token-gen-cost-analyzer.md. Dada una especificación de producto de generación (imagen o video, resolución objetivo, nivel de calidad, presupuesto de latencia), calcula la cantidad de tokens, el costo de inferencia y selecciona entre la familia Emu3 vs difusión.

Ejercicios

  1. Emu3 produce 4096 tokens por imagen de 512x512 a una reducción de 8x8. Calcula el equivalente para 1024x1024 y 2048x2048. ¿Qué sucede con la latencia de inferencia?

  2. Lee la Sección 3.3 del artículo de Emu3 sobre el tokenizador de video. Describe la forma del parche VQ 3D y por qué es 4x4x4 y no 8x8x1.

  3. Peso de classifier-free guidance de 5.0 vs 3.0: ¿cuál es el efecto visual? Sigue la matemática en code/main.py.

  4. Calcula los FLOPs de entrenamiento para Emu3-7B con 300B de tokens y compáralo con Stable Diffusion 3. ¿Cuál fue más costoso de entrenar?

  5. Emu3 supera a SDXL en FID pero no en VQA-v2 frente a VLMs especializados. Explica por qué el enfoque de pérdida unificada muestra fortalezas diferentes frente a especialistas en diferentes benchmarks.

Términos Clave

Término Qué dice la gente Qué significa realmente
Next-token prediction "NTP" Pérdida autorregresiva estándar: predecir token[i+1] dado token[0..i]; funciona para cualquier modalidad cuando está tokenizada
IBQ tokenizer "Inverse bottleneck quantizer" Una clase de VQ-VAE con codebooks más grandes (32768+) y mejor reconstrucción que el de Chameleon
3D VQ "Spatiotemporal quantizer" Codebook indexado por (tiempo, fila, columna); un token cubre un cubo de píxeles de 4x4x4
Classifier-free guidance "CFG" Mezclar logits condicionales e incondicionales con un peso gamma; mejora la calidad de la imagen en la inferencia
Unified vocabulary "Shared tokens" Texto + imagen + video se extraen todos del mismo espacio de enteros; el modelo predice qué modalidad viene a continuación
MJHQ-30K "Image gen benchmark" Benchmark de calidad de nivel Midjourney con 30k prompts; Emu3 reporta FID aquí

Lectura Adicional

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).