← Trilha 1 MÓDULO 1.2

🧬 Anatomia VLA: Vision + Language + Action

Abrimos a caixa-preta. Um VLA tem três órgãos: um encoder de visão que vira pixels em tokens, um backbone de linguagem que raciocina, e uma cabeça de ação que emite comandos motores — tudo costurado por fusão multimodal, propriocepção e um loop de controle a dezenas de Hz.

6
Tópicos
~40
Minutos
Básico
Nível
Teoria
Tipo

Conteúdo detalhado

👁 Vision encoder ViT / DINOv2 / SigLIP 💬 Texto instrução → tokens 📐 Estado juntas, força Backbone LLM fusão multimodal cross-attention / early fusion 🦾 Action head Δpose · gripper

O fluxo de tokens: três entradas convergem no backbone, que entrega um estado latente à cabeça de ação.

1

👁 Encoder de visão: ViT, DINOv2, SigLIP

A imagem entra como uma grade de patches (ex: 16×16 px), cada um projetado num patch embedding — o token visual. Um ViT processa esses tokens com self-attention. As escolhas comuns têm objetivos distintos: SigLIP alinha visão e texto via contrastive (bom para semântica/linguagem), enquanto DINOv2 aprende features espaciais densas auto-supervisionadas (bom para localização e geometria). OpenVLA usa um dual encoder (SigLIP + DINOv2) justamente para juntar semântica e espaço.

✓ Fazer

  • Combinar SigLIP (semântica) + DINOv2 (espaço) para robustez.
  • Manter o encoder pré-treinado e fine-tunar leve.
  • Usar múltiplas câmeras (frontal + wrist) como tokens extras.

✗ Evitar

  • Treinar encoder do zero com poucas demos.
  • Resolução baixa demais que perde detalhes de preensão.
  • Estourar o token budget com câmeras redundantes.

Patch embedding

Patch de imagem → token.

SigLIP

Alinhamento visão-texto contrastive.

DINOv2

Features espaciais auto-supervisionadas.

Dual encoder

Dois encoders concatenados.

2

💬 Backbone de linguagem: Llama, PaliGemma

O coração do VLA é um LLM pré-treinado que funciona como motor de raciocínio multimodal. OpenVLA usa um Prismatic VLM com base Llama 2-7B; π0 parte do PaliGemma (3B). A vantagem é herdar bilhões de tokens de conhecimento web — gramática, mundo, relações de objetos — que dão grounding semântico à instrução. O backbone recebe tokens de visão + texto (+ estado) e produz um estado latente que condiciona a ação.

📊 Backbones na prática

  • OpenVLA — 7B, base Llama 2, Prismatic VLM.
  • π0 — base PaliGemma 3B + action expert via flow matching.
  • RT-2 — PaLI-X / PaLM-E (até 55B), fechado.

⚡ Dica prática

O tamanho do backbone é um trade-off direto com a latência de inferência. Modelos de 7B exigem GPU forte e action chunking para rodar a 10-50Hz; bases menores (3B) facilitam deploy em borda.

PaliGemma

VLM base do π0.

Prismatic

Receita de VLM do OpenVLA.

Decoder transformer

Núcleo autoregressivo de raciocínio.

Grounding semântico

Conhecimento web aplicado à tarefa.

3

🔗 Fusão multimodal: cross-attention vs early fusion

Como visão e texto entram no mesmo contexto? Em early fusion (OpenVLA, π0), tokens visuais e de texto são simplesmente concatenados na sequência de entrada do LLM, que os mistura via self-attention — simples e eficaz, mas o número de tokens visuais cresce o custo. Em cross-attention (Flamingo, alguns VLAs), o texto consulta a imagem por camadas de atenção cruzada dedicadas, mantendo o backbone de linguagem mais enxuto. O trade-off central é token budget versus capacidade de grounding fino.

# Early fusion (concatenação)
seq = [img_tok_1 ... img_tok_256, txt_tok_1 ... txt_tok_K]
latent = LLM(seq)            # self-attention mistura tudo

# Cross-attention
latent = LLM(txt_tok)        # texto no fluxo principal
latent = CrossAttn(latent, img_tok)  # consulta a imagem

💡 Por que early fusion venceu nos VLAs

Concatenar é o caminho mais simples para reaproveitar um VLM pronto sem mudar a arquitetura. Como os VLAs partem de VLMs já treinados em early fusion, herdam essa escolha. O preço é gerenciar o token budget visual cuidadosamente.

Early fusion

Concatenar tokens na entrada.

Cross-attention

Texto consulta a imagem.

Token budget

Custo cresce com tokens visuais.

Grounding fino

Ligar palavra a região da imagem.

4

🦾 A cabeça de ação (action head)

A action head converte o estado latente em comandos motores — tipicamente Δpose do efetuador (translação e rotação relativas) mais o estado do gripper (abrir/fechar). Há três famílias: (1) detokenizer, quando ações foram discretizadas em tokens (RT-1/RT-2/OpenVLA); (2) action expert via difusão/flow, um módulo separado que gera ações contínuas (π0); (3) regressão direta de floats. A escolha determina expressividade e latência — tema dos Módulos 1.5 e 1.6.

1

Detokenizer (discreto)

O LLM prevê tokens de ação; um mapa fixo os converte em valores motores. Simples, integra ao vocabulário.

2

Action expert (difusão/flow)

Módulo dedicado gera chunks de ação contínua condicionados no latente. Expressivo, multimodal.

3

Regressão direta

MLP emite floats. Baixa latência, mas sofre com multimodalidade se treinada com MSE.

Δpose

Movimento relativo do efetuador.

Action expert

Módulo de ação separado.

Detokenizer

Token → valor motor.

Gripper state

Comando de abrir/fechar.

5

📐 Propriocepção e estado

Câmera não basta. O robô precisa saber seu próprio estado — ângulos de junta, velocidades, força no efetuador e estado do gripper. Esses valores entram como um state token adicional. Igualmente importante é o histórico temporal: ver apenas o frame atual cria ambiguidade (o braço está subindo ou descendo?). Empilhar observações recentes dá ao modelo a noção de movimento e intenção em curso.

⚡ Dica prática

Atenção ao causal confusion: se a propriocepção correlaciona fortemente com a ação nas demos, o modelo pode "trapacear" copiando o estado anterior em vez de olhar a câmera. Balanceie o peso do estado e valide com perturbações.

📊 Componentes do estado

  • Juntas — posição e velocidade de cada DOF.
  • Força/torque — sensor no pulso para contato.
  • Histórico — N frames recentes para inferir movimento.

Propriocepção

Sentido do próprio corpo.

State token

Estado codificado como token.

Observation history

Janela temporal de observações.

Causal confusion

Atalho que ignora a visão.

6

⏱ O loop de controle: Hz, latência, action chunking

Manipulação fina precisa de comandos a ~50Hz, mas um VLA de 7B não inferе tão rápido. A solução é o action chunking: o modelo prevê um bloco de H ações futuras de uma vez (ex: 16-50 passos), que são executadas abertas enquanto a próxima inferência roda. Com receding horizon, re-prevê antes do chunk acabar, mantendo reatividade. Isso amortiza a latência da rede e suaviza a trajetória — ideia introduzida pelo ACT e adotada por Diffusion Policy e π0.

1

Inferir um chunk

O modelo prevê H ações futuras de uma só passada.

2

Executar em malha aberta

As ações do chunk rodam a 50Hz enquanto a rede pensa no próximo.

3

Re-prever (receding horizon)

Antes do chunk terminar, nova inferência mantém o loop reativo.

💡 Latência é orçamento

Se a inferência leva 100ms e o chunk cobre 320ms (16 passos a 50Hz), você tem folga para reatividade. Chunks grandes demais reduzem reatividade; pequenos demais estouram a latência. O ajuste de H é engenharia, não detalhe.

Action chunking

Prever bloco de ações futuras.

Receding horizon

Re-planejar antes do fim.

Control rate

Hz de execução motora.

Horizonte H

Tamanho do chunk previsto.

✅ Resumo do módulo

Três órgãos — vision encoder, backbone LLM e action head.
Fusão multimodal — early fusion domina; cross-attention é a alternativa enxuta.
Estado importa — propriocepção e histórico evitam ambiguidade temporal.
Loop de controle — action chunking + receding horizon amortizam a latência.

Próximo módulo

1.3 — Evolução dos modelos: a linhagem RT-1 → RT-2 → OpenVLA → π0 → Qwen-VLA.