El modelo parece caro, frágil y difícil de verificar. Quería una prueba más pequeña: ¿puedo ejecutar un ajuste real de OpenVLA LoRA en Colab, demostrar que el conjunto de datos se cargó correctamente, confirmar que la GPU realizó un entrenamiento real y dejar evidencia que alguien más pueda inspeccionar?
Si está tratando de comprender si es posible realizar un ajuste fino de OpenVLA, este artículo le brinda una ruta pequeña y reproducible antes de dedicar tiempo a experimentos con robots más grandes. Al final, sabrá qué cambios en el ajuste de OpenVLA, qué le compra un adaptador LoRA, cómo ejecutar la ruta de capacitación oficial en Colab y cómo verificar que el resultado sea más que una computadora portátil que simplemente terminó sin fallar.
El artículo de OpenVLA presenta OpenVLA como un modelo de acción, lenguaje y visión de código abierto de 7 mil millones de parámetros entrenado en 970.000 demostraciones de robots del mundo real. Esa escala es exactamente la razón por la que es útil una primera ejecución pequeña y verificable.
OpenVLA es un modelo para el control de robots. Un modelo de visión, lenguaje y acción, o VLA, requiere dos entradas: una imagen de la cámara del espacio de trabajo del robot y una instrucción en lenguaje natural como "pon la taza en el plato". A partir de esas entradas, predice la siguiente acción que debe realizar el robot.
El ajuste fino significa tomar un modelo previamente entrenado y entrenarlo más en un conjunto de datos específico. Para OpenVLA, el conjunto de datos consta de demostraciones de robots. Cada demostración muestra lo que vio el robot, qué instrucciones estaba siguiendo y qué acción tomó a continuación. El objetivo es mejorar la capacidad del modelo para predecir la acción demostrada para una familia de tareas importantes para la ejecución.
Este artículo explica una pequeña ejecución de ajuste de OpenVLA reproducible. Utiliza el punto de control `openvla/openvla-7b`, que es el punto de control de 7 mil millones de parámetros utilizado en la receta oficial de OpenVLA, y entrena un adaptador de Adaptación de bajo rango (LoRA) en lugar de actualizar el modelo completo. LoRA mantiene la ejecución más pequeña porque entrena solo un pequeño conjunto de pesos adaptadores, mientras que la mayor parte del modelo original permanece congelado.
La ejecución utiliza el conjunto de datos `libero_spatial_no_noops` Robot Learning Dataset Standard (RLDS). Robot Learning Dataset Standard es un formato para almacenar demostraciones de robots como episodios. Cada episodio contiene observaciones, instrucciones, acciones e información de pasos. En esta ejecución, OpenVLA aprende de esos episodios comparando sus tokens de acción previstos con los tokens de acción demostrados.
El resto del artículo sigue ese camino desde la preparación hasta la evidencia. Explica el conjunto de datos, el comando de entrenamiento, los hiperparámetros importantes, lo que predice OpenVLA, lo que significan las métricas de precisión de acción y pérdida, y cómo se verificó la ejecución completa en Weights & Biases (W&B). El objetivo no es que la pista parezca más grande de lo que es. El objetivo es hacerlo inspeccionable.
¿Qué es y qué no es esto?
Este tutorial demuestra un flujo de trabajo de adaptación OpenVLA reproducible y de extremo a extremo. El conjunto de datos LIBERO se carga correctamente, se ejecuta el proceso de ajuste oficial, adaptador LoRA
los pesos se actualizan, las métricas de entrenamiento se registran, la utilización de la GPU es visible y la ejecución resultante se puede inspeccionar en W&B.
La ejecución corta de Colab es una validación de integración, no una prueba comparativa de desempeño de tareas. Medir si la política adaptada mejora las tasas de éxito requeriría resistencia
Implementaciones de simulación o evaluación de robots reales. Aquí, el objetivo es brindar a los lectores una base funcional y verificable antes de comprometerse con una capacitación y evaluación más prolongada.
Materiales de reproducción
Cuaderno de colaboración: https://colab.research.google.com/drive/1AiiJuFvNUTyQ-eksm9Mj7wAGtvH_V4zQ
Ejecución de W&B: https://wandb.ai/wb-authors/openvla-lora-finetune/runs/zwo162re
Conjunto de datos: libero_spatial_no_noops
Modelo: openvla/openvla-7b
Hardware: Colab A100 de alta RAM
Duración del entrenamiento: 100 pasos
Qué cambia el ajuste de OpenVLA
Una vez cargado el punto de control, el ajuste fino cambia el comportamiento del modelo entrenándolo en demostraciones de robots. Una política de robot es la parte del sistema que elige la siguiente acción del robot. En esta ejecución, OpenVLA es la política: recibe una imagen del espacio de trabajo y una instrucción, luego predice tokens de acción para el siguiente movimiento del robot.
Los tokens de acción son entradas de vocabulario discretas que representan valores de control del robot. La acción OpenVLA publicada representa un comando de efector final normalizado de siete grados de libertad. El efector final es la herramienta o pinza al final del brazo del robot. Los siete valores representan x, y, z, balanceo, cabeceo, guiñada y pinza. Un sistema de robot debe convertir esos valores normalizados a la escala de acción utilizada por su propio robot y conjunto de datos antes de la ejecución.
Durante el entrenamiento, el modelo ve una imagen, una instrucción de idioma y la siguiente acción demostrada en el conjunto de datos LIBERO. El adaptador LoRA aprende pequeñas actualizaciones de peso que hacen que sea más probable que el modelo prediga los tokens de acción demostrados en esta familia de tareas.
El aprendizaje mediante estímulos y refuerzos resuelve diferentes problemas. Un mensaje cambia las instrucciones dadas al modelo cuando se utiliza. El ajuste fino actualiza los pesos utilizando datos de demostración. El aprendizaje por refuerzo en línea mejora una política mediante prueba y error, recompensa y retroalimentación de un entorno.
El ajuste fino es útil cuando la política previamente entrenada se acerca a la tarea pero no coincide con la configuración del robot. Las causas comunes son un nuevo ángulo de cámara, una nueva pinza, una escala de acción diferente, diferentes objetos o un lenguaje de tareas que no estaba bien cubierto en los datos de entrenamiento originales. Los artículos sobre robótica a menudo llaman a este problema cambio de encarnación: el cuerpo del robot, los sensores o el espacio de acción cambiaron, por lo que la política anterior ya no coincide con la nueva configuración.
¿Por qué empezar con LoRA?
La adaptación de rango bajo (LoRA) es el método de adaptador utilizado en esta ejecución. Entrena un pequeño conjunto de nuevos pesos mientras la mayor parte del punto de control OpenVLA base permanece congelado. Esto convierte a LoRA en un primer experimento práctico para un modelo de robot grande porque la ejecución utiliza menos memoria y produce un punto de control del adaptador más pequeño.
El proyecto OpenVLA informa que LoRA logró un ajuste completo en sus experimentos de ajuste eficiente de parámetros mientras entrenaba solo el 1,4 por ciento de los parámetros. Esa afirmación respalda la elección de LoRA para una primera ejecución, pero no convierte esta ejecución de 100 pasos en una evaluación completa de la calidad del modelo.
Para este artículo, LoRA es útil porque mantiene el experimento lo suficientemente pequeño como para ejecutarlo en el portátil mientras sigue utilizando el script de ajuste fino oficial de OpenVLA. El resultado es una prueba de humo con evidencia de entrenamiento real: el conjunto de datos se carga, el adaptador se entrena, las métricas se registran y la ejecución finalizada se sincroniza con W&B.
El conjunto de datos utilizado en esta ejecución.
LIBERO es un referente en manipulación de robots condicionada por el lenguaje. La división espacial se centra en tareas en las que el robot debe seguir relaciones espaciales entre objetos, como mover un objeto en relación con otro. Robot Learning Dataset Standard (RLDS) almacena demostraciones de robots como episodios. Cada episodio contiene observaciones, instrucciones de lenguaje, acciones y metadatos de pasos. El sufijo no_noops indica que se han eliminado las acciones no operativas, por lo que los datos de entrenamiento se centran en los pasos en los que el robot cambia el estado de la tarea. El cuaderno descarga el conjunto de datos automáticamente y lo almacena en el tiempo de ejecución de Colab.
El episodio de muestra a continuación muestra lo que contiene el conjunto de datos. Los cuadros son observaciones de la cámara de una demostración de robot. La instrucción para este episodio es: “coge el cuenco negro del molde y colócalo en el plato”. La primera acción tiene siete valores: x, y, z, balanceo, cabeceo, guiñada y pinza.
El GIF animado a continuación muestra el mismo episodio a lo largo del tiempo, mientras que la hoja de contactos de arriba ofrece una vista fija estable para lectores y exportaciones.
/content/data/rlds/modified_libero_rlds
El script de entrenamiento de OpenVLA necesita dos valores de conjunto de datos. –data_root_dir apunta a la carpeta que contiene los datos LIBERO RLDS modificados y –dataset_name selecciona la división LIBERO exacta utilizada para el entrenamiento:
–dataset_name libero_spatial_no_noops
Esos dos valores son el vínculo entre los datos descargados y el comando de entrenamiento. Si la carpeta o el nombre dividido es incorrecto, OpenVLA no puede cargar las demostraciones.
Licencia de conjunto de datos. Esta ejecución utiliza la división libero_spatial_no_noops de los datos LIBERO RLDS modificados distribuidos por el proyecto OpenVLA. Los conjuntos de datos de LIBERO se publican bajo la licencia Creative Commons Attribution 4.0 International (CC BY 4.0), que permite el uso comercial con atribución. Los códigos base LIBERO y OpenVLA se publican bajo la licencia MIT. Fuente del conjunto de datos: LIBERO (Liu et al., 2023).
Configuración del tiempo de ejecución de Colab
El cuaderno está diseñado para una única ejecución de Colab: configure el tiempo de ejecución una vez, agregue una clave API de Weights & Biases en Colab Secrets y ejecute las celdas de arriba a abajo. Está diseñado para un tiempo de ejecución Colab A100 High-RAM, no para un tiempo de ejecución de CPU gratuito o una pequeña computadora portátil local. El objetivo es mantener el experimento lo suficientemente pequeño para una sesión de cuaderno y al mismo tiempo utilizar la ruta de entrenamiento real de OpenVLA. La ruta fija del conjunto de datos y la detección automática de entidades W&B mantienen el comando consistente en todas las cuentas.
Utilice este tipo de tiempo de ejecución:
Tipo de tiempo de ejecución: Python 3 Acelerador de hardware: GPU A100 Alta RAM: activado
El cuaderno lee WANDB_API_KEY de Colab Secrets. Durante la sincronización, le pregunta a W&B qué entidad predeterminada pertenece a la clave y escribe la ejecución allí. La URL de ejecución final pertenece a la cuenta conectada a esa clave.
OpenVLA fija dependencias de aprendizaje automático más antiguas, por lo que el portátil utiliza dos entornos Python:
/content/openvla_venv Entorno de entrenamiento OpenVLA /content/wandb_sync_venv Entorno de sincronización W&B
El entorno de formación ejecuta el script oficial OpenVLA. El entorno de sincronización utiliza un cliente W&B actual para cargar la ejecución sin conexión una vez finalizada la capacitación. Esta división mantiene estable la pila de dependencia de OpenVLA y aún admite la autenticación W&B actual.
La parte distintiva es la lógica de sincronización. El portátil se entrena sin conexión en el entorno OpenVLA, crea un entorno de sincronización nuevo, resuelve la entidad a partir de la clave API y carga la ejecución sin conexión:
!pip install -U wandb importar wandb desde google.colab importar datos de usuario wandb.login(key=userdata.get("WANDB_API_KEY")) wandb.init(project="openvla-lora-finetune")
comando de entrenamiento
El portátil ejecuta el punto de entrada oficial OpenVLA LoRA, vla-scripts/finetune.py. El comando principal es:
torchrun –standalone –nnodes 1 –nproc-per-node 1 vla-scripts/finetune.py –vla_path openvla/openvla-7b –data_root_dir /content/data/rlds/modified_libero_rlds –dataset_name libero_spatial_no_noops –run_root_dir /content/openvla_runs –adapter_tmp_dir /content/openvla_adapter_tmp –lora_rank 32 –batch_size 2 –grad_accumulation_steps 8 –learning_rate 0.0005 –image_aug True –wandb_project openvla-lora-finetune –wandb_entity "$WANDB_ENTITY" –max_steps 100
La acumulación de gradientes significa que el entrenador acumula gradientes en varios lotes pequeños antes de realizar una única actualización del optimizador. El tamaño de lote efectivo es:
tamaño de lote efectivo = tamaño de lote x pasos de acumulación de gradiente x número de procesos de entrenamiento
Para esta carrera:
2 x 8 x 1 = 16
La carrera utiliza 100 pasos de entrenamiento. Eso es suficiente para verificar que el conjunto de datos se carga, LoRA entrena, las métricas se registran y la sincronización W&B funciona.
Los hiperparámetros son intencionalmente conservadores para un recorrido de humo de A100 Colab. El rango 32 de LoRA y la tasa de aprendizaje de 0,0005 siguen la escala del ejemplo de OpenVLA LoRA. Un tamaño de lote de 2 mantiene manejable la memoria de la GPU. La acumulación de gradiente de 8 da un tamaño de lote efectivo de 16, mientras que el tamaño del lote físico sigue siendo pequeño. El aumento de imágenes permanece activado porque la receta OpenVLA LoRA lo utiliza para mejorar la solidez a la variación visual.
Evidencias captadas por el cuaderno
Al final de la ejecución de Colab, el cuaderno escribe una carpeta de pruebas y un archivo zip:
/content/openvla_article_outputs/ /content/openvla_article_outputs.zip
La carpeta de pruebas contiene:
colab_environment.json openvla_lora_colab_command.sh openvla_lora_train_stdout.txt wandb_run_url.txt wandb_verified_run.json
El registro de entrenamiento confirma el modelo y el conjunto de datos reales:
Ajuste del modelo OpenVLA `openvla/openvla-7b` en `libero_spatial_no_noops`
Los metadatos de W&B verificados apuntan a la ejecución sincronizada:
https://wandb.ai/wb-authors/openvla-lora-finetune/runs/zwo162re
Lo que mostró la carrera
La carrera de 100 pasos produjo una señal de aprendizaje visible. Tres métricas importan antes de leer los números. train_loss mide el error de entrenamiento supervisado, por lo que cuanto menor sea, mejor. l1_loss mide el error de acción absoluto, por lo que cuanto menor sea, mejor. action_accuracy mide la frecuencia con la que los tokens de acción previstos coinciden con los tokens de acción demostrados, por lo que cuanto más alto, mejor. El resultado importante no es la precisión de la acción final en sí misma. El resultado importante es que las tres señales se mueven en la dirección esperada durante una ejecución de entrenamiento real: la pérdida supervisada disminuye, el error de acción disminuye y la precisión del token de acción mejora. El resumen de W&B registró:
train_loss: 3.42928 l1_loss: 0.2222 action_accuracy: 0.28571
Esta es la evidencia del sistema. sistema/memoria muestra el uso de memoria del host. El uso de energía de la GPU del proceso (W) y el uso de energía de la GPU del proceso (%) muestran que Colab A100 estuvo activo durante la ventana de entrenamiento. La potencia de la GPU de proceso fue de aproximadamente 170 a 190 vatios durante gran parte de la ejecución, y la utilización de la GPU de proceso se situó en alrededor del 40 por ciento. Estos paneles ayudan a confirmar que la computadora portátil realizó un trabajo de entrenamiento de GPU real y luego sincronizó las métricas con W&B.
Estas métricas muestran que el ajuste fino de OpenVLA LoRA se ejecutó en el conjunto de datos RLDS, utilizó la GPU A100 y sincronizó gráficos interactivos con W&B.
Utilice el rastreador como prueba
Para este tipo de tutorial de robótica, el rastreador de experimentos es la pista de auditoría de la ejecución. La pregunta importante es si cada reclamo de artículo se conecta con métricas registradas, telemetría del sistema, archivos y metadatos del mismo trabajo de capacitación.
Esta ejecución utiliza W&B porque el cuaderno y la evidencia capturada se sincronizaron allí. El mismo patrón de evidencia se aplica a cualquier rastreador capaz de almacenar métricas, telemetría del sistema, archivos y una URL de ejecución estable. La ejecución le da al tutorial un registro revisable:
Ejecutar URL Curva de pérdida de entrenamiento Curva de pérdida de acción L1 Curva de precisión de acción Memoria del sistema Uso de energía de la GPU Archivos de ejecución sincronizados
El portátil se entrena primero con el registro fuera de línea de W&B y luego sincroniza la ejecución finalizada. Eso hace que la ejecución sea resistente a los conflictos de dependencia y al mismo tiempo termine con una página dinámica de W&B que los lectores pueden abrir.
Reproducir la ejecución
Abra el cuaderno complementario:
https://colab.research.google.com/drive/1AiiJuFvNUTyQ-eksm9Mj7wAGtvH_V4zQ
Configure el tiempo de ejecución en GPU A100 con alta RAM. Agregue WANDB_API_KEY en Colab Secrets. Luego elige:
Tiempo de ejecución -> Ejecutar todo
El cuaderno realiza la secuencia completa en orden. Instala dependencias, clona OpenVLA, organiza el conjunto de datos LIBERO RLDS modificado, crea el entorno OpenVLA Python 3.10, ejecuta el ajuste fino de LoRA, sincroniza la ejecución de W&B sin conexión, verifica la URL de ejecución de W&B y comprime los archivos de evidencia.
Cuando se complete la ejecución, abra el enlace W&B impreso en el cuaderno para inspeccionar el historial de ejecución, los gráficos, los archivos y los metadatos.
Lo que te ofrece esta carrera
Una ejecución de LoRA de 100 pasos no le indicará si una política de robot está lista para implementarse. Le indicará si la ruta de entrenamiento está conectada correctamente: se carga el conjunto de datos correcto, se ejecuta el script oficial, el adaptador recibe actualizaciones, la unidad de procesamiento de gráficos realiza un trabajo real y las métricas sobreviven fuera del portátil.
Ése es el valor práctico del artículo. Antes de pasar a una capacitación más prolongada, una evaluación de simulación o pruebas de robots reales, tiene una línea de base compacta que es reproducible, inspeccionable y honesta sobre lo que demuestra.
El mismo patrón se aplica más allá de OpenVLA. Para cualquier tutorial de ajuste fino de un modelo grande, la pregunta útil no es solo si el cuaderno está completo. La pregunta útil es si la ejecución deja suficiente evidencia para que otra persona inspeccione los datos, el comando, las métricas, la actividad del hardware y los artefactos finales. Para mí, esa es la verdadera lección: antes de preguntar si un modelo de robot ajustado es bueno, primero demuestre que la ejecución de entrenamiento es real, reproducible y mensurable.
Fuentes
OpenVLA: un modelo de acción de lenguaje de visión de código abierto, el documento detrás del modelo, la arquitectura, la escala del conjunto de datos y las afirmaciones de ajuste. Página del proyecto OpenVLA, la descripción del proyecto para la estructura del modelo, evaluaciones de robots y ajuste fino eficiente de los parámetros. Repositorio openvla/openvla GitHub, la fuente oficial para la instalación, argumentos del comando LoRA, configuración del conjunto de datos y scripts de entrenamiento.