Phase 08 - Lesson 19
Modelagem Autorregressiva Visual (VAR): Predição de Próxima Escala
Modelos de difusão realizam amostragem iterativamente no tempo (etapas de remoção de ruído). O VAR realiza amostragem iterativamente na escala — ele prediz um token de 1x1, depois de 2x2, depois de 4x4, até a resolução final, com cada escala se condicionando na anterior. O artigo de 2024 mostrou que o VAR se alinha com as leis de escala do estilo GPT para geração de imagens e supera o DiT com o mesmo orçamento de computação. Esta lição constrói o mecanismo principal.
Tipo: Build Linguagens: Python (com PyTorch) Pré-requisitos: Fase 7 Lição 03 (Multi-Head Attention), Fase 8 Lição 06 (DDPM) Tempo: ~90 minutos
O Problema
A geração autorregressiva dominou a modelagem de linguagem porque escala de forma previsível: mais computação, mais parâmetros, menor perplexidade, melhores saídas. A geração de imagens teve duas tentativas principais de AR antes de 2024: PixelRNN/PixelCNN (pixel por pixel) e DALL-E 1 / Parti / MuseGAN (token por token em códigos VQ-VAE).
Ambas sofreram com o problema da ordem de geração. Pixels e tokens são organizados em uma grade 2D, mas o modelo AR precisa visitá-los em uma ordem de varredura (raster) 1D. Um pixel inicial no canto não tem ideia do que a imagem eventualmente se tornará. A qualidade da geração escalou de forma pior do que o GPT para texto e nunca alcançou a qualidade dos modelos de difusão sob o mesmo orçamento de computação.
O VAR resolve o problema da ordem de geração alterando o que está sendo gerado. Em vez de prever tokens de imagem um por um no espaço, o VAR prevê uma imagem inteira em resoluções crescentes. Passo 1: prever um token 1x1 (o "resumo" geral da imagem). Passo 2: prever uma grade 2x2 de tokens (características mais grossas). Passo 3: prever uma grade 4x4. Passo K: prever a grade final (H/8)x(W/8).
Cada escala atende a todas as escalas anteriores (causalmente na "ordem das escalas") e em paralelo dentro de sua própria escala. O problema da ordem desaparece: a imagem inteira na escala k é produzida em uma única passagem pelo transformer.
O Conceito
Tokenizador Multiescala VQ-VAE
O VAR precisa de um tokenizador discreto multiescala. Para uma imagem x, ele produz uma sequência de grades de tokens de resolução progressivamente maior:
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 usa o mesmo codebook (tamanho típico de 4096-16384). A tokenização em cada escala não é independente — ela é treinada de modo que a soma dos resíduos de cada escala reconstrua f:
f ≈ upsample(embed(z_1), target_size) + ... + upsample(embed(z_K), target_size)
Esta é uma variante de residual VQ. A escala k captura o que as escalas 1..k-1 perderam. O decodificador recebe a soma de todas as incorporações (embeddings) de escala e produz a imagem.
O tokenizador VQ multiescala é treinado uma vez (como o VQGAN) e depois congelado. Todo o trabalho gerador é feito pelo modelo autorregressivo por cima.
Predição de Próxima Escala
O modelo gerador é um transformer que visualiza tokens de todas as escalas anteriores e prediz os tokens na escala seguinte.
Estrutura da sequência de entrada:
[START, z_1 tokens, z_2 tokens, z_3 tokens, ..., z_K tokens]
As incorporações de posição (position embeddings) codificam tanto o índice da escala quanto a posição espacial dentro da escala. A atenção é causal na ordem da escala: o token na escala k, posição (i, j) pode atender a todos os tokens nas escalas 1..k e a tokens na própria escala k que vêm antes em qualquer ordem intraescala que seja usada (o VAR usa atenção posicional fixa sem causalidade intraescala — todas as posições dentro de uma escala são preditas em paralelo).
Perda de treinamento: em cada escala k, prever os tokens z_k dados todos os tokens de escalas anteriores. Perda de entropia cruzada (cross-entropy loss) nos códigos discretos do VQ. Mesma estrutura do GPT, exceto que a "sequência" agora é estruturada em escala.
Geração
Na inferência:
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, a geração consiste em 10 passagens diretas (forward passes) pelo transformer. Cada passagem produz sua escala inteira em paralelo — sem autorregressão por token dentro de uma escala. Para uma imagem de 256x256, isso representa cerca de 10 passagens contra as 28-50 do DiT.
Por Que a Predição de Próxima Escala Supera a de Próximo Token
Três vantagens estruturais:
- O alinhamento de grosso-para-fino com as estatísticas naturais de imagem. A percepção visual humana e os conjuntos de dados de imagens exibem regularidades dependentes da escala: a estrutura de baixa frequência é estável e previsível; o detalhe de alta frequência é condicional ao conteúdo de baixa frequência. A predição de próxima escala explora isso.
- Geração paralela dentro da escala. Ao contrário do AR de tokens estilo GPT, o VAR produz todos os tokens em uma escala em um único passo. O comprimento efetivo de geração é em escala logarítmica em vez de linear.
- Sem viés de ordem de geração. Os tokens na escala k veem toda a escala k-1; não há viés de "à esquerda de" ou "acima de" que force os tokens iniciais a se comprometerem antes que o contexto posterior esteja disponível.
Lei de Escala
Tian et al. demonstraram que o VAR segue uma curva de escala de lei de potência para o FID no ImageNet — assim como o GPT faz para a perplexidade. Dobrar os parâmetros ou a computação reduz o erro pela metade de forma confiável. Este foi o primeiro modelo gerador de imagens a exibir esse tipo de comportamento de escala de forma tão limpa quanto os modelos de linguagem. O resultado é que as predições em escala VAR tornam-se previsíveis a partir da computação, e não por palpites empíricos por arquitetura.
Relação com a Difusão
O VAR e a difusão compartilham a mesma história de compressão de dados: ambos dividem o problema de geração em uma sequência de subproblemas mais fáceis.
- Difusão: adiciona ruído gradualmente, aprende a desfazer uma etapa.
- VAR: adiciona resolução gradualmente, aprende a prever a próxima escala.
Eles representam eixos diferentes para o problema. Ambos geram distribuições condicionais tratáveis. Empiricamente, o VAR é mais rápido na inferência (menos passagens, tudo em paralelo dentro de uma escala) e se equipara ou supera o DiT no ImageNet condicional por classe. O VAR condicional por texto (VARclip, HART) é uma direção de pesquisa ativa.
Build It
Em code/main.py você irá:
- Construir um pequeno tokenizador VQ multiescala em dados sintéticos de "imagem" (anéis gaussianos 2D).
- Treinar um transformer estilo VAR para prever na próxima escala os tokens.
- Amostrar chamando o transformer 4 vezes (4 escalas) e decodificando.
- Verificar se o treinamento ordenado por escala torna a geração paralela dentro de uma escala.
Esta é uma implementação de brinquedo. O objetivo é ver a máscara de atenção estruturada por escala e a geração paralela dentro da escala realmente funcionando.
Ship It
Esta lição produz outputs/skill-var-tokenizer-designer.md — uma habilidade para projetar um tokenizador multiescala: número de escalas, proporções de escala, tamanho do codebook, compartilhamento de resíduos, arquitetura do decodificador.
Exercícios
Ablação de contagem de escalas. Treine o VAR com 4, 6, 8, 10 escalas. Meça a qualidade de reconstrução versus o número de passagens autorregressivas. Mais escalas = resíduos mais finos = melhor qualidade, mas mais passagens.
Tamanho do codebook. Treine tokenizadores com tamanhos de codebook de 512, 4096, 16384. Codebooks maiores proporcionam melhor reconstrução, mas predição mais difícil. Encontre o ponto de inflexão.
Verificação de paralelo-dentro-da-escala. Para um VAR treinado, meça explicitamente o padrão de atenção. Dentro da escala k, o modelo atende a posições de escala cruzada, mas não intraescala? Verifique a implementação da máscara.
Escalonamento do VAR vs DiT. Para a mesma tarefa condicional de classe do ImageNet, treine o VAR e o DiT com orçamentos de parâmetros correspondentes (por exemplo, 33M, 130M, 458M). Plote o FID versus computação. O VAR deve ficar à frente do DiT em cada tamanho — reproduza o resultado do artigo em pequena escala.
Condicionamento de texto. Estenda o VAR para receber um embedding de texto (CLIP pooled) como entrada extra de condicionamento via adaLN. Esta é a receita do HART. Quanto o FID melhora na amostragem alinhada ao texto?
Termos-Chave
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| VAR | "Visual AutoRegressive" | Geração de imagens por predição de próxima escala sobre uma pirâmide de grades de tokens VQ |
| Next-scale prediction | "Prever mais grosso, depois mais fino" | O modelo prevê tokens em escalas de resolução crescente, condicionando-se em todas as escalas anteriores |
| Multi-scale VQ tokenizer | "VQ residual" | VQ-VAE que produz K grades de tokens de resolução crescente, com o decodificador somando todas as escalas |
| Scale k | "Nível de pirâmide k" | Um dos K níveis de resolução, desde 1x1 para k=1 até (H/p)x(W/p) para k=K |
| Parallel-within-scale | "Um forward por escala" | Todos os tokens na escala k são preditos em uma única passagem pelo transformer, não de forma autorregressiva |
| Causal-across-scales | "Atenção ordenada por escala" | O token na escala k pode atender a todas as escalas de 1..k, mas não às escalas de k+1..K |
| Residual VQ | "Tokenização aditiva" | Os tokens de cada escala codificam o resíduo deixado pelas escalas inferiores; o decodificador soma todas as incorporações de escala |
| VAR scaling law | "Escalonamento GPT de imagem" | O FID segue uma lei de potência previsível na computação, como a perplexidade dos modelos de linguagem |
| HART | "Híbrido VAR + texto" | Variante de VAR condicional por texto que combina decodificação iterativa estilo MaskGIT com a estrutura de escala do VAR |
| Scale position embedding | "Tripla (escala, linha, col)" | A codificação posicional carrega tanto o índice de escala quanto as coordenadas espaciais dentro da escala |
Leituras Adicionais
- Tian et al., 2024 — "Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction" — o artigo do VAR, referência canônica
- Peebles and Xie, 2022 — "Scalable Diffusion Models with Transformers" — DiT, a linha de base de comparação de difusão
- Esser et al., 2021 — "Taming Transformers for High-Resolution Image Synthesis" — VQGAN, a família de tokenizadores que o tokenizador multiescala do VAR estende
- van den Oord et al., 2017 — "Neural Discrete Representation Learning" — VQ-VAE, a base da tokenização discreta de imagens
- Tang et al., 2024 — "HART: Efficient Visual Generation with Hybrid Autoregressive Transformer" — VAR condicional por texto