Arquitectura
OpenVLA (Kim et al., 2024) es el primer VLA open-source de 7 mil millones de parámetros entrenado como política robótica generalista. Mientras RT-2 demostró el concepto VLA, sus pesos nunca fueron publicados y requería infraestructura a escala de Google. OpenVLA democratiza el enfoque: código, pesos y receta de entrenamiento son completamente abiertos.
El modelo se construye sobre el framework Prismatic VLM (Karamcheti et al., 2024) , que presenta un sistema de visión de doble encoder cuidadosamente diseñado:
- SigLIP (ViT-SO400M) (Zhai et al., 2023) : Encoder contrastivo visión-lenguaje entrenado con pérdida sigmoide. Excelente en comprensión semántica — reconocimiento de objetos, escenas y vinculación de lenguaje con elementos visuales.
- DINOv2 (ViT-L) (Oquab et al., 2024) : Encoder auto-supervisado entrenado con auto-destilación (sin lenguaje). Captura características espaciales y geométricas finas — bordes, texturas, profundidad y contornos de objetos.
¿Por qué dos encoders? La manipulación robótica requiere tanto entender qué es un objeto (semántico — SigLIP) como dónde está exactamente y cómo es geométricamente (espacial — DINOv2). Las ablaciones en el paper del Prismatic VLM muestran que esta combinación supera a cualquier encoder individual.
Las características visuales de ambos encoders se concatenan y proyectan al espacio de embeddings de Llama 2 7B (Touvron et al., 2023) . Para una imagen de 224×224, cada encoder produce 256 tokens de parche, dando 512 tokens visuales totales tras la concatenación.
La secuencia de entrada completa al transformer tiene esta forma:
donde $\ell_1, \ldots, \ell_m$ son los tokens de la instrucción de lenguaje y $a_1, \ldots, a_7$ son los tokens de acción a generar.
Entrenamiento en Open X-Embodiment
OpenVLA se entrena en el dataset Open X-Embodiment (OXE) (Open X-Embodiment et al., 2024) — específicamente, la misma mezcla de datos usada por RT-2-X — con aproximadamente 970K trayectorias robóticas en 22 embodiments . Esto incluye manipuladores de un brazo (WidowX, Google Robot, xArm), configuraciones bimanuales y manipuladores móviles.
La receta de entrenamiento involucra dos etapas:
- Etapa 1 — Pre-entrenamiento del VLM: El Prismatic VLM se entrena primero en tareas visión-lenguaje (captioning de imágenes, respuesta visual a preguntas) para construir una base visual-lingüística sólida. Los encoders de visión permanecen congelados; solo se actualizan el MLP de proyección y el modelo de lenguaje.
- Etapa 2 — Fine-tuning robótico: El modelo completo (incluyendo los encoders de visión) se fine-tunea con datos robóticos OXE. Se añaden 256 nuevos tokens de acción al vocabulario. La tasa de aprendizaje es menor que en la etapa 1, y el entrenamiento se enfoca en la pérdida de predicción del siguiente token solo sobre tokens de acción.
Un desafío clave con OXE es la heterogeneidad del espacio de acciones : diferentes robots tienen distintos números de articulaciones, escalas de acción y modos de control. OpenVLA normaliza todo a un formato común de 7 dimensiones escalado a $[-1, 1]$ basándose en estadísticas del dataset.
Pipeline de Predicción de Acciones
En inferencia, OpenVLA predice acciones autoregresivamente. Dada una imagen $o_t$ e instrucción $\ell$, el modelo genera 7 tokens de acción secuencialmente:
Cada token $a_t^{(i)}$ es un entero en $\{0, 1, \ldots, 255\}$ representando un bin en la dimensión de acción correspondiente. Las 7 dimensiones son:
- $a^{(1)}, a^{(2)}, a^{(3)}$: Deltas de posición del efector final ($\Delta x, \Delta y, \Delta z$)
- $a^{(4)}, a^{(5)}, a^{(6)}$: Deltas de rotación del efector final (roll, pitch, yaw)
- $a^{(7)}$: Estado del gripper (abrir/cerrar — efectivamente binario, pero aún tokenizado en 256 bins)
Tras generar los 7 tokens, cada índice de bin se de-tokeniza a un valor continuo usando la fórmula del centro de bin del artículo anterior. El vector de acción de 7 dimensiones resultante se envía al controlador del robot.
La pérdida de entrenamiento se calcula solo sobre tokens de acción , no sobre tokens de imagen o lenguaje:
donde $N$ es el tamaño del lote y $a_{t,n}^{(i)*}$ denota el bin ground-truth para la dimensión $i$ en la muestra $n$. Nótese que la pérdida se calcula solo sobre los tokens de acción , no sobre los tokens de imagen o lenguaje — el modelo no se entrena para reconstruir sus entradas.
Fine-Tuning para Nuevos Robots
Una política generalista entrenada en OXE proporciona un punto de partida sólido, pero el despliegue real típicamente requiere adaptación a un robot, entorno y conjunto de tareas específicos. OpenVLA soporta fine-tuning eficiente mediante Low-Rank Adaptation ( LoRA ) (Hu et al., 2022) .
LoRA congela los pesos pre-entrenados $W_0$ y añade matrices de actualización de bajo rango $\Delta W = BA$ donde $B \in \mathbb{R}^{d \times r}$ y $A \in \mathbb{R}^{r \times d}$ con rango $r \ll d$. El peso efectivo se convierte en:
Con $r = 32$ (el valor por defecto para OpenVLA), solo ~1.4% de los parámetros totales son entrenables, reduciendo drásticamente los requisitos de memoria GPU. El fine-tuning puede hacerse en una sola GPU A100 con tan solo 20-50 demostraciones en el dominio objetivo.
OpenVLA se evaluó frente a RT-2-X (el modelo comparable más cercano) en dos plataformas robóticas:
- Google Robot: En tareas de manipulación en mesa, OpenVLA (7B) logró tasas de éxito comparables a RT-2-X (55B) a pesar de ser 8× más pequeño, según las evaluaciones del paper original.
- WidowX: En tareas Bridge V2, OpenVLA con fine-tuning superó significativamente a RT-2-X en las evaluaciones de los autores, probablemente porque el modelo más pequeño puede adaptarse con más precisión al dominio objetivo mediante LoRA.
Quiz
Pon a prueba tu comprensión de la arquitectura y entrenamiento de OpenVLA.
¿Por qué OpenVLA usa dos encoders de visión separados (SigLIP y DINOv2)?
¿Cómo maneja OpenVLA el hecho de que diferentes robots tienen diferentes espacios de acción?
¿Sobre qué calcula OpenVLA su pérdida de entrenamiento?
¿Qué porcentaje de los parámetros de OpenVLA son entrenables al usar LoRA con rango r = 32?
¿Qué sugiere el hallazgo de que OpenVLA (7B) iguale a RT-2-X (55B)?