Phase 12 - Lesson 16
MIO e Modelos Multimodais de Streaming Any-to-Any
O GPT-4o entrega um produto que a maioria dos modelos abertos não consegue replicar: um agente que ouve voz, vê vídeo e responde por voz em tempo real. A resposta do ecossistema aberto no final de 2024 foi o MIO (Wang et al., setembro de 2024). O MIO tokeniza texto, imagem, fala e música, treina um transformer causal sobre as sequências intercaladas e gera qualquer modalidade a partir de qualquer modalidade. O AnyGPT (Zhan et al., fevereiro de 2024) foi a prova de conceito; o MIO é o ganho de escala (scale-up); o Unified-IO 2 (Allen AI, dezembro de 2023) é o primo com ancoragem (grounding) de visão e ação. Esta lição aborda o padrão any-to-any — quatro tokenizadores, um transformer e decodificação amigável para streaming.
Tipo: Aprender Idiomas: Python (stdlib, alocador de tokens de quatro modalidades + loop de decodificação em streaming) Pré-requisitos: Fase 12 · 11 (Chameleon), Fase 6 (Speech and Audio) Tempo: ~120 minutos
Objetivos de Aprendizado
- Projetar um vocabulário compartilhado que hospede tokens de texto, imagem, fala e música sem colisões.
- Comparar o SEED-Tokenizer (imagens) e o SpeechTokenizer residual-VQ (fala) em termos de compensações (trade-offs) entre compressão e reconstrução.
- Explicar o currículo de quatro estágios que constrói a geração any-to-any.
- Nomear as três receitas abertas de any-to-any e suas principais compensações: MIO, AnyGPT, Unified-IO 2.
O Problema
Um modelo multimodal unificado é fácil de prometer e difícil de construir em escala. A maioria dos sistemas "any-to-any" até 2024 funcionava em pipeline: modelo de visão → representação de texto → modelo de fala → áudio. Cada etapa perde informação, adiciona latência e complica o treinamento. O vídeo de demonstração do GPT-4o mostrou uma alternativa de modelo único com resposta em menos de um segundo; os sistemas abertos ficaram meses atrás.
Os desafios de engenharia:
- Devem existir tokenizadores para cada modalidade, que comprimam de forma suficientemente sem perdas para reconstrução e produzam tokens em taxas que o transformer possa consumir.
- Um único vocabulário deve alocar espaço para texto (32k+), imagem (16k+), fala (4k+) e música (8k+). No mínimo, mais de quarenta mil entradas.
- Os dados de treinamento devem cobrir cada par de entrada-saída (texto→imagem, imagem→fala, fala→imagem, etc.) ou o modelo deve ser capaz de compor.
- A inferência deve transmitir tokens de saída em streaming rápido o suficiente para latência de conversação (<500ms de tempo para o primeiro byte de áudio/time-to-first-audio-byte).
O Conceito
Quatro tokenizadores para quatro modalidades
A pilha de tokenizadores do MIO:
- Texto: BPE padrão, vocabulário de ~32000.
- Imagem: SEED-Tokenizer (2023) — VAE quantizado com dicionário de códigos (codebook) discreto, 4096 entradas, 32x32 tokens por imagem.
- Fala: SpeechTokenizer residual-VQ (2023) — codifica forma de onda de 16kHz em 8 dicionários de códigos hierárquicos; o primeiro nível é o conteúdo bruto, os níveis posteriores adicionam prosódia e identidade do locutor.
- Música: residual-VQ semelhante (família MusicGen / Encodec da Meta), 4-8 dicionários de códigos.
Cada modalidade produz tokens inteiros. Os tokens recebem intervalos de IDs disjuntos no vocabulário compartilhado:
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: vocabulário de ~48k. O embedding de entrada e a projeção de saída abrangem todo ele.
Decodificação em streaming
A geração de fala usa residual-VQ. O transformer prevê os tokens de fala base (camada 0); um quantizador residual decodificado em paralelo prevê as camadas subsequentes. Cada token da camada 0 representa aproximadamente 50ms de áudio a 16kHz.
O padrão de streaming:
- O usuário fala no microfone; o tokenizador de áudio em tempo real emite tokens de fala a cada 50ms.
- O MIO consome os tokens conforme eles chegam (preenchimento de prompt/prefill + passagem direta/forward incremental).
- Os tokens de saída são transmitidos em tempo real conforme são gerados; um decodificador de fala paralelo os converte em amostras de áudio com latência de ~50-150ms.
- Tempo para o primeiro byte de áudio: ~300-500ms no artigo do MIO, aproximando-se dos ~250ms do GPT-4o.
Mini-Omni (arXiv:2408.16725), GLM-4-Voice (arXiv:2412.02612) e Moshi (arXiv:2410.00037) são designs complementares de LLM de fala em streaming. O Moshi, em particular, alcança 160ms de ida e volta (round-trip) em uma única GPU.
Currículo de quatro estágios
Currículo de treinamento do MIO:
- Estágio 1 — alinhamento. Corpora de pares de modalidades em larga escala: texto-imagem, texto-fala, texto-música. Cada par usa seu próprio segmento de vocabulário de tokens. Treina o vocabulário compartilhado.
- Estágio 2 — intercalado. Documentos intercalados de múltiplas modalidades (blogs com imagens + vídeo, podcasts com transcrições, etc.). Treina o contexto entre modalidades (cross-modality).
- Estágio 3 — aprimorado por fala. Dados de áudio extras para elevar a qualidade da fala sem perder a capacidade de texto.
- Estágio 4 — SFT. Ajuste fino de instruções (instruction tuning) entre modalidades: VQA, legendagem, narração, diálogo fala-para-fala (speech-to-speech).
Pular um estágio degrada capacidades específicas: pule o estágio 2 e o modelo perde o contexto de cruzamento de modalidades; pule o estágio 3 e a fala fica ruim.
Cadeia de pensamento visual (Chain-of-visual-thought)
O MIO introduz a cadeia de pensamento visual (chain-of-visual-thought): o modelo emite tokens de imagem intermediários como uma etapa de raciocínio. Para "o gato está subindo em uma árvore?", o modelo:
- Emite tokens
<image>renderizando a cena (a partir da imagem de entrada ou de um esboço). - Emite texto analisando o esboço.
- Emite a resposta final.
A imagem intermediária renderizada serve como um rascunho (scratchpad). Os benchmarks melhoram em tarefas de raciocínio espacial. A ideia espelha a cadeia de pensamento (chain-of-thought) para raciocínio em texto.
Concorrentes em any-to-any
- AnyGPT (arXiv:2402.12226): 4 modalidades (texto, imagem, fala, música), design semelhante.
- Unified-IO 2 (arXiv:2312.17172): adiciona saídas de ação de visão, profundidade, normais. Mais diversidade de tarefas, menor escala.
- NExT-GPT (arXiv:2309.05519): LLM + decodificadores de difusão específicos para cada modalidade. Não é uma abordagem de modelo único.
- CoDi (arXiv:2305.11846): difusão combinável; any-to-any via espaço latente compartilhado.
O MIO é o mais próximo de um any-to-any de token puro. O AnyGPT é seu ancestral conceitual.
Orçamento de latência
Para um produto de conversação, a latência de cada componente importa:
- Do microfone aos tokens de áudio: ~50ms.
- Prefill (tokens de áudio + histórico): ~100ms em um modelo 8B.
- Primeiro token de saída: ~50ms.
- Residual-VQ paralelo + decodificador de fala: ~100-150ms.
Tempo total para o primeiro byte de áudio (TTFAB): mínimo de ~300ms. O GPT-4o afirma ~250ms. O Moshi afirma 160ms. MIO/AnyGPT estão na faixa de 400-600ms de acordo com os benchmarks públicos.
Por que o any-to-any continua difícil
Mesmo em 2026, os modelos abertos de any-to-any ficam atrás dos fechados em dois eixos:
- Qualidade da fala. O tokenizador residual-VQ apresenta perdas (lossy); a fala conversacional soa robótica em comparação com vozes da classe do ElevenLabs.
- Raciocínio entre modalidades. Pedir ao modelo para "cantar sobre o que você vê" ainda falha com mais frequência do que tarefas de visão pura.
Estes são problemas de pesquisa em aberto. O Qwen3-Omni (Lição 12.20) é a tentativa aberta mais avançada em 2025.
Use-o
code/main.py:
- Define a alocação de vocabulário de quatro modalidades e a imprime.
- Encaminha uma lista de entradas multimodais (texto, imagem, clipe de áudio, música) pelo roteador de tokenizadores.
- Simula a decodificação em streaming para uma resposta de conversão de texto em fala (TTS) com contagem de latência.
- Computa o tempo esperado para o primeiro byte de áudio, dadas as latências do codificador, prefill e decodificador.
Envie-o
Esta lição produz outputs/skill-any-to-any-pipeline-auditor.md. Dada uma especificação de produto de conversação (modalidades de entrada, modalidades de saída, meta de latência), ela audita as escolhas de design da família MIO e calcula o orçamento de latência.
Exercícios
Seu produto aceita entrada de fala e retorna saída de fala. Qual é a meta de orçamento de latência de ponta a ponta? Liste os componentes que consomem tempo.
O SpeechTokenizer residual-VQ usa 8 dicionários de códigos (codebooks). Proponha por que a decodificação em paralelo dos níveis residuais é necessária (vs. sequencial) e quais economias de latência ela traz.
Seu vocabulário tem 32k de texto + 4k de imagem + 4k de fala. Adicione 8k de música e ~10 separadores. Qual é o custo de parâmetros da matriz de embeddings com dimensão oculta de 4096?
A cadeia de pensamento visual (chain-of-visual-thought) emite uma imagem intermediária. Que tipos de perguntas são beneficiadas? Que tipos são prejudicadas pelos tokens extras?
Leia o Moshi (arXiv:2410.00037). Descreva sua técnica de "monólogo interno" (inner monologue) e compare-a com a cadeia de pensamento visual do MIO.
Termos-Chave
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| Any-to-any | "Entrada/saída multimodal" | Um único modelo que aceita e emite texto, imagem, fala e música em qualquer direção |
| Residual-VQ | "Pilha de tokenizadores de fala" | Tokenização de múltiplos dicionários de códigos (multi-codebook) onde cada camada adiciona informação; a camada base é o conteúdo, as camadas posteriores são a prosódia |
| SEED-Tokenizer | "Códigos de imagem" | Tokenizador de imagem discreto com dicionário de códigos de 4096 entradas usado pelo MIO |
| Chain-of-visual-thought | "Rascunho visual" | O modelo gera uma imagem intermediária como uma etapa de raciocínio antes de sua resposta final |
| Time-to-first-audio-byte | "TTFAB" | Latência da voz do usuário até a primeira saída de áudio; <500ms para sensação de conversação |
| Currículo de quatro estágios | "Receita de treinamento" | Alinhamento -> intercalado -> aprimorado por fala -> SFT, nessa ordem |