Phase 12 - Lesson 16
MIO y Modelos Multimodales de Streaming Any-to-Any
GPT-4o ofrece un producto que la mayoría de los modelos abiertos no pueden replicar: un agente que escucha voz, ve video y responde con voz en tiempo real. La respuesta del ecosistema abierto a finales de 2024 fue MIO (Wang et al., septiembre de 2024). MIO tokeniza texto, imagen, voz y música, entrena un transformer causal sobre las secuencias entrelazadas y genera cualquier modalidad a partir de cualquier modalidad. AnyGPT (Zhan et al., febrero de 2024) fue la prueba de concepto; MIO es el escalado (scale-up); Unified-IO 2 (Allen AI, diciembre de 2023) es el primo con alineación (grounding) de visión y acción. Esta lección aborda el patrón any-to-any: cuatro tokenizadores, un transformer y decodificación amigable para streaming.
Tipo: Aprender Idiomas: Python (stdlib, asignador de tokens de cuatro modalidades + bucle de decodificación en streaming) Pré-requisitos: Fase 12 · 11 (Chameleon), Fase 6 (Speech and Audio) Tiempo: ~120 minutos
Objetivos de Aprendizaje
- Diseñar un vocabulario compartido que aloje tokens de texto, imagen, voz y música sin colisiones.
- Comparar SEED-Tokenizer (imágenes) y SpeechTokenizer residual-VQ (voz) en términos de compensaciones (trade-offs) entre compresión y reconstrucción.
- Explicar el currículo de cuatro etapas que construye la generación any-to-any.
- Nombrar las tres recetas abiertas de any-to-any y sus principales compensaciones: MIO, AnyGPT, Unified-IO 2.
El Problema
Un modelo multimodal unificado es fácil de prometer y difícil de construir a escala. La mayoría de los sistemas "any-to-any" hasta 2024 funcionaban en pipeline: modelo de visión → representación de texto → modelo de voz → audio. Cada paso pierde información, agrega latencia y complica el entrenamiento. El video de demostración de GPT-4o mostró una alternativa de modelo único con respuesta en menos de un segundo; los sistemas abiertos se quedaron atrás por meses.
Los desafíos de ingeniería:
- Deben existir tokenizadores para cada modalidad, que comprimam lo suficientemente sin pérdidas para la reconstrucción y produzcan tokens a velocidades que el transformer pueda consumir.
- Un solo vocabulario debe asignar espacio para texto (32k+), imagen (16k+), voz (4k+) y música (8k+). Un mínimo de más de cuarenta mil entradas.
- Los datos de entrenamiento deben cubrir cada par de entrada-salida (texto→imagen, imagen→voz, voz→imagen, etc.) o el modelo debe ser capaz de componer.
- La inferencia debe transmitir tokens de salida en streaming lo suficientemente rápido para una latencia conversacional (<500ms de tiempo para el primer byte de audio/time-to-first-audio-byte).
El Concepto
Cuatro tokenizadores para cuatro modalidades
La pila de tokenizadores de MIO:
- Texto: BPE estándar, vocabulario de ~32000.
- Imagen: SEED-Tokenizer (2023) — VAE cuantizado con diccionario de códigos (codebook) discreto, 4096 entradas, 32x32 tokens por imagen.
- Voz: SpeechTokenizer residual-VQ (2023) — codifica forma de onda de 16kHz en 8 diccionarios de códigos jerárquicos; el primer nivel es el contenido grueso, los niveles posteriores añaden prosodia e identidad del hablante.
- Música: residual-VQ similar (familia MusicGen / Encodec de Meta), 4-8 diccionarios de códigos.
Cada modalidad produce tokens enteros. Los tokens reciben rangos de IDs disjuntos en el vocabulario compartido:
text: 0..31999
image: 32000..36095 (4096 image tokens)
speech: 36096..40191 (4096 speech base tokens, plus residual layers)
music: 40192..48383 (8192 music tokens)
sep: 48384..48390 (<image>, <speech>, <music>, </...>, etc.)
Total: vocabulario de ~48k. El embedding de entrada y la proyección de salida abarcan todo el vocabulario.
Decodificación en streaming
La generación de voz utiliza residual-VQ. El transformer predice los tokens de voz base (capada 0); un cuantizador residual decodificado en paralelo predice las capas subsecuentes. Cada token de la capa 0 representa aproximadamente 50ms de audio a 16kHz.
El patrón de streaming:
- El usuario habla por el micrófono; el tokenizador de audio en tiempo real emite tokens de voz cada 50ms.
- MIO consume los tokens a medida que llegan (rellenado de prompt/prefill + avance/forward incremental).
- Los tokens de salida se transmiten en streaming a medida que se generan; un decodificador de voz paralelo los convierte en muestras de audio con una latencia de ~50-150ms.
- Tiempo para el primer byte de audio: ~300-500ms en el artículo de MIO, aproximándose a los ~250ms de GPT-4o.
Mini-Omni (arXiv:2408.16725), GLM-4-Voice (arXiv:2412.02612) y Moshi (arXiv:2410.00037) son diseños complementares de LLM de voz en streaming. Moshi en particular logra 160ms de ida y vuelta (round-trip) en una sola GPU.
Currículo de cuatro etapas
Currículo de entrenamiento de MIO:
- Etapa 1 — alineación. Corpora de pares de modalidades a gran escala: texto-imagen, texto-voz, texto-música. Cada par utiliza su propio segmento de vocabulario de tokens. Entrena el vocabulario compartido.
- Etapa 2 — entrelazado. Documentos entrelazados de múltiples modalidades (blogs con imágenes + video, podcasts con transcripciones, etc.). Entrena el contexto entre modalidades (cross-modality).
- Etapa 3 — optimizado para voz. Datos de audio adicionales para elevar la calidad de la voz sin perder la capacidad de texto.
- Etapa 4 — SFT. Ajuste fino de instrucciones (instruction tuning) entre modalidades: VQA, subtitulado, narración, diálogo de voz a voz (speech-to-speech).
Omitir una etapa degrada capacidades específicas: omitir la etapa 2 hace que el modelo pierda el contexto entre modalidades; omitir la etapa 3 hace que la voz sea deficiente.
Cadena de pensamiento visual (Chain-of-visual-thought)
MIO introduce la cadena de pensamiento visual (chain-of-visual-thought): el modelo emite tokens de imagen intermedios como un paso de razonamiento. Para "¿está el gato trepando a un árbol?", el modelo:
- Emite tokens
<image>renderizando la escena (a partir de la imagen de entrada o un boceto). - Emite texto analizando el boceto.
- Emite la respuesta final.
La imagen intermedia renderizada sirve como un borrador (scratchpad). Los benchmarks mejoran en tareas de razonamiento espacial. La idea refleja la cadena de pensamiento (chain-of-thought) para el razonamiento de texto.
Competidores en any-to-any
- AnyGPT (arXiv:2402.12226): 4 modalidades (texto, imagen, voz, música), diseño similar.
- Unified-IO 2 (arXiv:2312.17172): agrega salidas de acción de visión, profundidad, normales. Más diversidad de tareas, menor escala.
- NExT-GPT (arXiv:2309.05519): LLM + decodificadores de difusión específicos de cada modalidad. No es un enfoque de modelo único.
- CoDi (arXiv:2305.11846): difusión componible; any-to-any a través de un espacio latente compartido.
MIO es el más cercano al any-to-any de token puro. AnyGPT es su ancestro conceptual.
Presupuesto de latencia
Para un producto conversacional, la latência de cada componente importa:
- Del micrófono a los tokens de audio: ~50ms.
- Prefill (tokens de audio + historial): ~100ms en un modelo 8B.
- Primer token de salida: ~50ms.
- Residual-VQ paralelo + decodificador de voz: ~100-150ms.
Tiempo total para el primer byte de audio (TTFAB): mínimo de ~300ms. GPT-4o afirma ~250ms. Moshi afirma 160ms. MIO/AnyGPT están en el rango de 400-600ms según los benchmarks públicos.
Por qué any-to-any sigue siendo difícil
Incluso en 2026, los modelos abiertos any-to-any están por detrás de los cerrados en dos ejes:
- Calidad de la voz. El tokenizador residual-VQ tiene pérdidas (lossy); la voz conversacional suena robótica en comparación con las voces de la clase de ElevenLabs.
- Razón entre modalidades. Pedirle al modelo que "cante sobre lo que ve" sigue fallando con más frecuencia que en las tareas de visión pura.
Estos son problemas de investigación abiertos. Qwen3-Omni (Lección 12.20) es el intento abierto más avanzado en 2025.
Úsalo
code/main.py:
- Define la asignación de vocabulario de cuatro modalidades y la imprime.
- Enruta una lista de entradas multimodales (texto, imagen, clip de audio, música) a través del enrutador del tokenizador.
- Simula la decodificación en streaming para una respuesta de texto a voz (TTS) con conteo de latencia.
- Calcula el tiempo esperado para el primer byte de audio dadas las latencias del codificador, prefill y decodificador.
Envíalo
Esta lección produce outputs/skill-any-to-any-pipeline-auditor.md. Dada una especificación de producto conversacional (modalidades de entrada, modalidades de salida, objetivo de latencia), audita las decisiones de diseño de la familia MIO y calcula el presupuesto de latencia.
Ejercicios
Tu producto acepta entrada de voz y devuelve salida de voz. ¿Cuál es el objetivo del presupuesto de latencia de extremo a extremo? Haz una lista de los componentes que consumen tiempo.
SpeechTokenizer residual-VQ utiliza 8 diccionarios de códigos (codebooks). Propón por qué es necesario decodificar en paralelo los niveles residuales (en comparación con la decodificación secuencial) y qué ahorros de latencia aporta.
Tu vocabulario tiene 32k de texto + 4k de imagen + 4k de voz. Agrega 8k de música y ~10 separadores. ¿Cuál es el costo en parámetros de la matriz de embeddings con una dimensión oculta de 4096?
La cadena de pensamiento visual (chain-of-visual-thought) emite una imagen intermedia. ¿Qué tipo de preguntas se benefician? ¿Cuáles se ven perjudicadas por los tokens adicionales?
Lee Moshi (arXiv:2410.00037). Describe su técnica de "monólogo interno" (inner monologue) y compárala con la cadena de pensamiento visual de MIO.
Términos Clave
| Término | Lo que la gente dice | Lo que realmente significa |
|---|---|---|
| Any-to-any | "Entrada/salida multimodal" | Un solo modelo que acepta y emite texto, imagen, voz y música en cualquier dirección |
| Residual-VQ | "Pila de tokenizadores de voz" | Tokenización de múltiples diccionarios de códigos (multi-codebook) donde cada capa añade información; la capa base es el contenido, las capas posteriores son la prosodia |
| SEED-Tokenizer | "Códigos de imagen" | Tokenizador de imagen discreto con un diccionario de códigos de 4096 entradas utilizado por MIO |
| Chain-of-visual-thought | "Borrador visual" | El modelo genera una imagen intermedia como un paso de razonamiento antes de su respuesta final |
| Time-to-first-audio-byte | "TTFAB" | Latencia desde la voz del usuario hasta la primera salida de audio; <500ms para una sensación conversacional |
| Currículo de cuatro etapas | "Receta de entrenamiento" | Alineación -> entrelazado -> optimizado para voz -> SFT, en ese orden |