Phase 12 - Lesson 14

Modelos Unificados Show-o y de Difusión Discreta

This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.

Transfusion mezcla representaciones continuas y discretas. Show-o (Xie et al., agosto de 2024) va en la otra dirección: los tokens de texto utilizan la predicción causal del siguiente token (next-token prediction), los tokens de imagen utilizan difusión discreta enmascarada al estilo de MaskGIT. Ambos residen dentro de un único transformer con una máscara de atención híbrida. El resultado unifica VQA, texto a imagen (text-to-image), inpainting y generación de modalidad mixta en un solo backbone, un tokenizador por modalidad y una única formulación de pérdida (pérdida del siguiente token extendida a la predicción enmascarada). Esta lección analiza el diseño de Show-o — por que la difusión discreta enmascarada es un generador de imágenes paralelo de pocos pasos — y lo contrasta con Transfusion y Emu3.

Tipo: Conocimiento Idiomas: Python (librería estándar, muestreador de difusión discreta enmascarada) Prerrequisitos: Fase 12 · 13 (Transfusion) Tiempo: ~120 minutos

Objetivos de Aprendizaje

  • Explicar la difusión discreta enmascarada: el esquema de tiempo que enmascara los tokens de manera uniforme y luego le pide al transformer que los recupere.
  • Comparar la decodificación paralela de imágenes (Show-o, MaskGIT) con la decodificación autorregresiva de imágenes (Chameleon, Emu3) en cuanto a velocidad y calidad.
  • Nombrar las tres tareas que Show-o maneja en un solo checkpoint: T2I, VQA e inpainting de imágenes.
  • Elegir un esquema de enmascaramiento (coseno, lineal, truncado) y razonar sobre su efecto en la calidad de la muestra.

El Problema

El entrenamiento de dos pérdidas (two-loss) de Transfusion funciona, pero tiene dinámicas más complicadas: la pérdida de difusión continua vive en una escala numérica diferente de la pérdida de NTP discreta. Equilibrar los pesos de las pérdidas requiere una búsqueda de hiperparámetros. La arquitectura es efectiva pero compleja.

La respuesta de Show-o: mantener ambas modalidades discretas (como Chameleon), pero generar imágenes en paralelo mediante difusión discreta enmascarada en lugar de secuencialmente. El objetivo de entrenamiento se convierte en una única predicción de token enmascarado (masked-token-prediction) que generaliza la predicción del siguiente token (next-token-prediction) de forma natural.

El Concepto

Difusión discreta enmascarada (MaskGIT)

El truco original de MaskGIT de Chang et al. (2022) es elegante. Comienza con una imagen completamente enmascarada (cada token es el ID especial <MASK>). En cada paso, predice todos los tokens enmascarados en paralelo, luego conserva las K predicciones con mayor nivel de confianza y vuelve a enmascarar el resto. Después de aproximadamente 8 a 16 iteraciones, todos los tokens se completan. El esquema de cuántos tokens desenmascarar por paso se ajusta: los esquemas de coseno funcionan bien.

El entrenamiento es simple: toma una muestra de la tasa de enmascaramiento de manera uniforme entre [0, 1], aplícala a los tokens VQ de la imagen y entrena al transformer para recuperar los enmascarados. Exactamente lo que BERT hizo con el texto, pero escalado a la generación de imágenes.

Show-o: un transformer, máscara híbrida

Show-o coloca MaskGIT dentro de un transformer de modelo de lenguaje causal. La máscara de atención es:

  • Tokens de texto: causales (LLM estándar).
  • Tokens de imagen: bidireccionales completos dentro del bloque de imagen (para que los tokens enmascarados puedan ver todos los demás tokens de imagen durante la predicción).
  • Texto a imagen: el texto atiende a las imágenes anteriores, la imagen atiende al texto anterior.

El entrenamiento alterna entre:

  1. NTP estándar en secuencias de texto.
  2. Muestras de T2I: texto → imagen con tokens de imagen enmascarados, pérdida de predicción de token enmascarado (masked-token-prediction loss).
  3. Muestras de VQA: imagen → texto con tokens de texto enmascarados (en realidad, solo NTP).

La pérdida unificada es la entropía cruzada en los tokens <MASK>, que cubre tanto el NTP de texto (onde solo el último token está "enmascarado") como la difusión enmascarada de imagen (onde un subconjunto aleatorio está enmascarado).

Muestreo paralelo

Show-o genera una imagen en aproximadamente 16 pasos en lugar de ~1000 (autorregresivo por token) o ~20 (difusión). En cada paso, predice todos los tokens enmascarados en paralelo; confirma los top-K más confiables; repite.

Compare:

  • Chameleon / Emu3 (autorregresivo sobre tokens): N_tokens forward passes, típicamente de 1024 a 4096 por imagen.
  • Transfusion (difusión continua): ~20 pasos, cada uno de los cuales es un paso completo de transformer.
  • Show-o (difusión discreta enmascarada): ~16 pasos, cada uno de los cuales es un paso completo de transformer.

Show-o es más rápido que Chameleon en modelos de escala similar, y coincide aproximadamente con el recuento de pasos de Transfusion con un costo menor por paso (logits de vocabulario discreto frente a la pérdida MSE continua).

Tareas en un solo checkpoint

Show-o admite cuatro tareas en la inferencia, seleccionadas por el formato de prompt:

  • Generación de texto: salida de texto autorregresiva estándar.
  • VQA: entrada de imagen, salida de texto.
  • T2I: entrada de texto, salida de imagen a través de difusión discreta enmascarada.
  • Inpainting: imagen con algunos tokens enmascarados, completar.

La capacidad de inpainting viene de forma gratuita a partir del entrenamiento de predicción enmascarada. Enmascare una región de la cuadrícula de tokens VQ, proporcione el resto más un prompt de texto, y prediga los tokens enmascarados.

Esquema de enmascaramiento

El esquema de cuántos tokens desenmascarar por paso determina la calidad. Show-o recomienda coseno:

mask_ratio(t) = cos(pi * t / (2 * T))   # t = 0..T

En el paso 0, todos los tokens están enmascarados (tasa 1.0). En el paso T, ninguno está enmascarado. El coseno concentra la masa en tasas de rango medio donde la predicción es más informativa. Los esquemas lineales también funcionan pero se estabilizan (plateau) más rápido.

Show-o2

Show-o2 (secuela de 2025, arXiv 2506.15564) escala Show-o: base de LLM más grande, mejor tokenizador, esquema de máscara mejorado. Mismo patrón arquitectónico.

Dónde se ubica Show-o

En la taxonomía de 2026:

  • Tokens discretos + NTP: Chameleon, Emu3. Inferencia simple pero lenta.
  • Tokens discretos + difusión enmascarada: Show-o, MaskGIT, LlamaGen, Muse. Muestreo paralelo, todavía con pérdidas (lossy) debido al tokenizador.
  • Continuo + difusión: Transfusion, MMDiT, DiT. Máxima calidad, entrenamiento más complejo.
  • Continuo + correspondencia de flujo (flow matching) en un VLM: JanusFlow, InternVL-U. Lo más nuevo.

Elija según la tarea: Show-o cuando desee T2I + inpainting + VQA en un solo modelo abierto con una velocidad razonable; Transfusion cuando la calidad sea lo primordial y pueda permitirse la estructura de dos pérdidas.

Uso

El archivo code/main.py simula el muestreo de Show-o:

  • Una cuadrícula de juguete de 16 tokens VQ.
  • Un "transformer" simulado (mock) que predice logits basándose en un prompt y en los tokens actualmente desenmascarados.
  • Muestreo enmascarado paralelo durante 8 pasos con un esquema de coseno.
  • Imprime los estados intermedios (evolución del patrón de máscara) y los tokens finales.

Ejecútelo y observe cómo la máscara se disuelve paso a paso.

Envío

Esta lección produce el archivo outputs/skill-unified-gen-model-picker.md. Dado un producto que necesita tanto comprensión (VQA, subtitulado/captioning) como generación (T2I, inpainting) con una restricción de pesos abiertos (open-weights), elija entre la familia Show-o, la familia Transfusion/MMDiT y la familia Emu3 / Chameleon con compensaciones (trade-offs) concretas.

Ejercicios

  1. La difusión discreta enmascarada toma muestras en aproximadamente 16 pasos. ¿Por qué no en 1? ¿Qué se rompe si desenmascara todo en el paso 0?

  2. El inpainting es gratuito con la difusión enmascarada. Proponga un caso de uso de producto (real o hipotético) donde el inpainting de Show-o supere a un modelo especializado.

  3. Esquema de coseno frente a esquema lineal: trace la cantidad de tokens desenmascarados por paso para T=8. ¿Cuál es más equilibrado?

  4. Una imagen de 512x512 de Show-o es de 1024 tokens. Con un vocabulario K=16384, el modelo emite 1024 * log2(16384) = 14,336 bits (1.75 KiB) de datos. Stable Diffusion emite 51251224 bits = 6,291,456 bits (768 KiB) de píxeles puros. ¿Cuál es la relación de compresión y qué calidad ofrece?

  5. Lea LlamaGen (arXiv:2406.06525). ¿En qué se diferencia el modelo de imagen autorregresivo condicional a clases de LlamaGen del enfoque enmascarado de Show-o?

Términos Clave

Término Lo que dice la gente Lo que realmente significa
Difusión discreta enmascarada "Estilo MaskGIT" Entrenamiento para predecir tokens enmascarados; en la inferencia, desenmascara de forma iterativa las predicciones más confiables
Esquema de coseno "Esquema de desenmascaramiento" Disminución de la tasa de máscara a lo largo de los pasos de inferencia; concentra el crecimiento de la confianza en el rango medio
Decodificación paralela "Todos los tokens a la vez" Cada paso predice la secuencia completa de tokens enmascarados en un solo forward pass, y luego confirma los top-K
Atención híbrida "Causal + bidireccional" Máscara que es causal sobre los tokens de texto y bidireccional dentro de los bloques de imagen
Inpainting "Generación por relleno" Condicionar sobre una imagen con algunos tokens enmascarados para predecir los que faltan; gratuito debido al objetivo de entrenamiento
Tasa de confirmación (Commitment rate) "Top-K por paso" Cuántos tokens se declaran "listos" por iteración; controla el balance entre inferencia y calidad

Lecturas Adicionales

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