A Verifiable First Step: Reproducible OpenVLA LoRA Fine-Tuning in Google Colab

The landscape of advanced robotics is rapidly evolving, with sophisticated models like OpenVLA at the forefront of enabling machines to understand and interact with their environment. However, the sheer scale and complexity of these models often present a daunting barrier to entry for researchers and developers. The OpenVLA paper introduces a powerful 7-billion-parameter open-source vision-language-action (VLA) model trained on an extensive dataset of nearly one million real-world robot demonstrations. This impressive scale, while promising, highlights the critical need for accessible and verifiable methods to explore fine-tuning capabilities. This article addresses this challenge by providing a small, reproducible, and inspectable pathway to running a real OpenVLA LoRA fine-tuning process within the familiar environment of Google Colab. The objective is to demystify the initial steps of OpenVLA fine-tuning, offering a concrete understanding of the process before committing significant resources to larger-scale robotic experiments. Readers will gain insight into the modifications involved in OpenVLA fine-tuning, the advantages of employing LoRA adapters, the practical steps for executing the official training pipeline in Colab, and robust methods for confirming that the results represent genuine training rather than mere script execution.
OpenVLA, at its core, is a model designed for robot control. As a vision-language-action model, it processes two primary inputs: a visual feed from the robot’s workspace, typically captured by a camera, and a natural-language instruction that guides the desired action. For instance, an instruction like "put the cup on the plate" would be processed by the model. Based on these inputs, OpenVLA predicts the subsequent action the robot should undertake. The process of fine-tuning involves taking a pre-trained model and further training it on a specific dataset. In the context of OpenVLA, this dataset comprises real-world robot demonstrations. Each demonstration meticulously records the robot’s sensory observations, the accompanying natural-language instruction it was following, and the precise action it executed. The ultimate goal of fine-tuning is to enhance the model’s proficiency in predicting the demonstrated actions for a particular task family that is relevant to the user’s objectives.
This article meticulously details a concise and reproducible OpenVLA fine-tuning run. It utilizes the openvla/openvla-7b checkpoint, which serves as the 7-billion-parameter foundation employed in the official OpenVLA training methodology. Crucially, instead of modifying the entire model, this approach focuses on training a Low-Rank Adaptation (LoRA) adapter. LoRA significantly reduces the computational burden and memory requirements of the fine-tuning process by training only a small subset of adapter weights, while the vast majority of the original model’s parameters remain frozen.
The chosen dataset for this demonstration is the libero_spatial_no_noops subset from the Robot Learning Dataset Standard (RLDS) repository. RLDS is a standardized format designed for the efficient storage of robot demonstrations, structured as episodes. Each episode contains a sequential record of observations, language instructions, actions, and relevant step information. In this fine-tuning scenario, OpenVLA learns by comparing its predicted action tokens against the action tokens demonstrated within these episodes.

The subsequent sections of this article will guide readers through the entire process, from initial setup to the presentation of verifiable evidence. This includes a detailed explanation of the dataset, the specific training command executed, key hyperparameters, the nature of OpenVLA’s predictions, the interpretation of loss and action accuracy metrics, and the verification of the completed training run through Weights & Biases (W&B). The intention is not to inflate the scope of this initial run but rather to establish a transparent and inspectable foundation for further exploration.
What This Endeavor Is and Is Not
This tutorial provides a comprehensive walkthrough of a reproducible, end-to-end OpenVLA adaptation workflow. It confirms that the LIBERO dataset can be loaded successfully, the official fine-tuning pipeline operates as expected, LoRA adapter weights are updated, crucial training metrics are logged, and GPU utilization is demonstrably active. Furthermore, it ensures that the resulting training run is accessible for external inspection within W&B.
It is vital to clarify that this short-duration Colab run serves as an integration validation and not as a task-performance benchmark. Evaluating whether the adapted policy leads to improved success rates in robotic tasks would necessitate held-out simulation rollouts or direct evaluation on physical robots. The primary objective here is to equip readers with a functional and verifiable foundation, enabling them to proceed with longer training durations and more comprehensive evaluation strategies with greater confidence.
Reproduction Materials and Setup
For those wishing to replicate this process, the following materials are provided:
- Colab Notebook: https://colab.research.google.com/drive/1AiiJuFvNUTyQ-eksm9Mj7wAGtvH_V4zQ
- Weights & Biases (W&B) Run: https://wandb.ai/wb-authors/openvla-lora-finetune/runs/zwo162re
- Dataset:
libero_spatial_no_noops - Model Checkpoint:
openvla/openvla-7b - Hardware: Google Colab with A100 High-RAM runtime
- Training Duration: 100 steps
The process begins with setting up the Colab environment. It is imperative to select a "Python 3" runtime with an "A100 GPU" and "High-RAM" enabled. This configuration ensures sufficient computational resources for the demonstration. The notebook relies on the user’s Weights & Biases API key, which must be securely stored in Colab’s "Secrets" section. Upon execution, the notebook automatically detects the default W&B entity associated with the provided API key, streamlining the process of logging the run to the correct project.

To manage dependencies effectively, the notebook employs two distinct Python virtual environments. The primary environment, /content/openvla_venv, is dedicated to running the official OpenVLA training scripts. This isolation ensures that the specific, and sometimes older, dependencies required by OpenVLA remain stable. A secondary environment, /content/wandb_sync_venv, is utilized for the Weights & Biases synchronization process. This environment uses a current W&B client to upload the offline training results after the main training phase concludes. This dual-environment approach guarantees the stability of the OpenVLA dependency stack while facilitating seamless integration with modern W&B authentication and synchronization protocols.
The synchronization logic is a distinctive feature of this setup. The training is performed offline within the dedicated OpenVLA environment. Subsequently, a fresh synchronization environment is established, the associated W&B entity is resolved from the API key, and the offline run is uploaded. This is typically initiated with code snippets like:
!pip install -U wandb
import wandb
from google.colab import userdata
wandb.login(key=userdata.get("WANDB_API_KEY"))
wandb.init(project="openvla-lora-finetune")
This sequence ensures that the training process is robust and that the final output is accurately logged and accessible.
Understanding OpenVLA Fine-Tuning Modifications
Fine-tuning fundamentally alters a pre-trained model’s behavior by training it on specific robot demonstration data. In this context, OpenVLA functions as the robot’s policy, responsible for selecting the next action. It receives a visual input from the robot’s workspace and a textual instruction, then outputs action tokens that translate into the robot’s next movement.
These action tokens represent discrete entries within a vocabulary that correspond to robot control values. The OpenVLA model, as released, predicts normalized seven-degree-of-freedom (7-DoF) end-effector commands. The end-effector is the part of the robot arm that interacts with the environment, such as a gripper. The seven degrees of freedom encompass translational movements (x, y, z) and rotational movements (roll, pitch, yaw), along with the gripper’s state (open/closed). A robotic system must then convert these normalized values back into the specific action scales and formats required by its own hardware and operational dataset before executing them.

During the fine-tuning process, the model is presented with an image from the robot’s workspace, a natural-language instruction, and the corresponding next action that was demonstrated in the LIBERO dataset. The LoRA adapter, through small weight updates, learns to make the model more inclined to predict the specific action tokens observed in this particular task family.
It is important to distinguish fine-tuning from other methods of influencing model behavior. Prompting, for instance, modifies the instructions given to the model at inference time without altering its underlying weights. Reinforcement learning, on the other hand, improves a policy through iterative trial-and-error interactions with an environment, guided by rewards and feedback. Fine-tuning, as implemented here, updates the model’s weights using demonstration data.
Fine-tuning proves particularly valuable when a pre-trained policy is already close to the desired task but exhibits a mismatch with the specific robotic setup. Common reasons for such mismatches include variations in camera angles, different gripper types, altered action scales, distinct object appearances, or nuances in task language that were not adequately covered in the original training data. This phenomenon is frequently referred to in robotics literature as "embodiment shift"—where changes in the robot’s physical embodiment, its sensors, or its action space render a previously trained policy less effective.
The Strategic Advantage of LoRA
Low-Rank Adaptation (LoRA) is the chosen adapter method for this particular fine-tuning run. LoRA operates by training a small set of newly introduced weights while keeping the vast majority of the base OpenVLA checkpoint parameters frozen. This parameter-efficient approach makes LoRA an exceptionally practical choice for initial experiments with large-scale robot models. The benefits include reduced memory consumption during training and the generation of significantly smaller adapter checkpoints compared to full model fine-tuning.
The OpenVLA project itself has reported that LoRA achieves performance comparable to full fine-tuning in their parameter-efficient fine-tuning experiments, with only a marginal 1.4 percent of parameters being trained. This finding strongly supports the selection of LoRA for a preliminary run, though it is crucial to reiterate that this 100-step demonstration does not constitute a comprehensive evaluation of full model quality.

For the purposes of this article, LoRA’s utility lies in its ability to keep the experiment contained within the manageable scope of a Colab notebook while still leveraging the official OpenVLA fine-tuning scripts. The outcome is a successful "smoke test" that yields tangible evidence of real training: the dataset is loaded correctly, the LoRA adapter undergoes training, essential metrics are logged, and the completed run is synchronized with W&B, providing an auditable trail.
The Dataset: libero_spatial_no_noops Explained
LIBERO serves as a benchmark suite for language-conditioned robot manipulation tasks. The spatial split specifically focuses on tasks requiring the robot to adhere to spatial relationships between objects, such as positioning one object relative to another. The Robot Learning Dataset Standard (RLDS) format structures robot demonstrations as episodes, where each episode comprises a sequence of timesteps. Each timestep records camera observations, natural-language instructions, actions, and metadata pertaining to that specific step. The no_noops suffix indicates that "no-operation" actions—those where the robot’s state does not change—have been deliberately excluded from the dataset. This ensures that the training data primarily consists of steps where the robot actively modifies the task state. The Colab notebook automates the download of this dataset and stores it within the Colab runtime environment for immediate use.
A sample episode from the dataset illustrates its content. The frames represent camera observations from a single robot demonstration. The accompanying instruction for this particular episode is: "pick up the black bowl on the ramekin and place it on the plate." The first action recorded in this sequence is a vector of seven values: x, y, z, roll, pitch, yaw, and gripper state.
The OpenVLA training script requires two primary dataset parameters: data_root_dir, which specifies the directory containing the modified LIBERO RLDS data, and dataset_name, which selects the precise LIBERO split to be used for training. In this instance, these are set as:
--data_root_dir /content/data/rlds/modified_libero_rlds
--dataset_name libero_spatial_no_noops
These parameters are the critical link between the downloaded data and the training command. Any discrepancy in the folder path or the split name will prevent OpenVLA from successfully loading the demonstrations.

Dataset Licensing: The libero_spatial_no_noops split used in this run is sourced from the modified LIBERO RLDS data, distributed by the OpenVLA project. The LIBERO datasets are released under the Creative Commons Attribution 4.0 International (CC BY 4.0) license, which permits commercial use provided proper attribution is given. Both the LIBERO and OpenVLA codebases are licensed under the permissive MIT License. The original source of the dataset is the LIBERO project (Liu et al., 2023).
The Training Command and Hyperparameters
The Colab notebook executes the official OpenVLA LoRA entry point script, vla-scripts/finetune.py. The core training command is as follows:
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
Gradient accumulation is a technique employed to simulate larger batch sizes without requiring proportionally more GPU memory. It involves accumulating gradients over several small batches before performing a single optimizer update. The effective batch size is calculated as:
effective batch size = batch size × gradient accumulation steps × number of training processes
For this specific run:

2 × 8 × 1 = 16
The training is intentionally limited to 100 steps. This duration is sufficient to verify that the dataset is loaded, the LoRA adapter is actively training, metrics are being logged, and the W&B synchronization mechanism functions correctly.
The hyperparameters chosen for this run are deliberately conservative, optimized for a short "smoke test" on an A100 Colab instance. A LoRA rank of 32 and a learning rate of 0.0005 are consistent with the scale used in the OpenVLA LoRA examples. A batch size of 2 is maintained to keep GPU memory usage within manageable limits. Gradient accumulation of 8 results in an effective batch size of 16, while the physical batch size remains small. Image augmentation is kept enabled, as recommended by the OpenVLA LoRA recipe, to enhance robustness against visual variations.
Verifiable Evidence Captured by the Notebook
Upon completion of the Colab run, the notebook generates an evidence folder and a corresponding zip file for offline inspection:
/content/openvla_article_outputs//content/openvla_article_outputs.zip
The evidence folder contains the following key files:

colab_environment.json: Details about the Colab runtime environment.openvla_lora_colab_command.sh: The exact command executed for training.openvla_lora_train_stdout.txt: The standard output from the training process.wandb_run_url.txt: A file containing the URL of the synced W&B run.wandb_verified_run.json: Metadata confirming the successful W&B run verification.
The training log within openvla_lora_train_stdout.txt provides confirmation of the specific model and dataset used: "Fine-tuning OpenVLA Model openvla/openvla-7b on libero_spatial_no_noops". The verified W&B metadata points directly to the synced run at the following URL: https://wandb.ai/wb-authors/openvla-lora-finetune/runs/zwo162re.
Analysis of the 100-Step Training Run
The 100-step LoRA fine-tuning run yielded a discernible learning signal across key metrics. Three primary metrics are crucial for interpreting the results: train_loss, which measures the supervised training error (lower is better); l1_loss, which quantifies the absolute action error (lower is better); and action_accuracy, which indicates the proportion of predicted action tokens that precisely match the demonstrated action tokens (higher is better). The significance of this run lies not solely in the final action_accuracy value but in the observed trends of all three metrics moving in the expected directions during a genuine training process: supervised loss decreases, action error decreases, and action-token accuracy improves.
The W&B summary for this run recorded the following final values:
train_loss: 3.42928l1_loss: 0.2222action_accuracy: 0.28571
Training Loss: The training loss exhibits a sharp decline within the initial ten steps, subsequently stabilizing around a range of 3.2 to 3.6, concluding at 3.42928. This trajectory confirms that the LoRA training loop is actively updating the model’s parameters.
L1 Action Loss: The L1 action loss demonstrates a decrease from an initial value of approximately 0.46, fluctuating between roughly 0.18 and 0.29, and ultimately settling at 0.2222. A lower L1 loss indicates that the model’s predicted continuous actions are becoming more aligned with the demonstrated actions.

Action Token Accuracy: Action-token accuracy shows an increase from an initial value of approximately 0.09, reaching a peak near 0.35 at step 90 before concluding at 0.28571. This upward trend provides a clear learning signal for this short validation run, underscoring that the model is learning to predict discrete action tokens more accurately.
In addition to these performance metrics, the run also captures system telemetry, which serves as crucial evidence of active GPU utilization. The system/memory metric shows the host’s memory usage, which stabilizes after the initial setup. The Process GPU Power Usage (W) and Process GPU Power Usage (%) metrics reveal that the Colab A100 GPU was actively engaged throughout the training window. Process GPU power ranged between approximately 165 and 195 watts for a significant portion of the run, with GPU utilization hovering around 40 to 48 percent of the available power range. These measurements collectively confirm that the notebook performed sustained, real GPU training work, and that these metrics were successfully synchronized to W&B.
These observed metrics and system telemetry provide concrete proof that the OpenVLA LoRA fine-tuning process was executed on the RLDS dataset, actively utilized the A100 GPU, and successfully synchronized the training metrics and system performance data to Weights & Biases.
Leveraging the Tracker as Definitive Evidence
For tutorials focused on robotics and machine learning, an experiment tracker like W&B serves as an indispensable audit trail for every training run. The critical question is whether each claim made in the tutorial directly corresponds to logged metrics, system telemetry, generated files, and metadata originating from the identical training job.
This run’s reliance on W&B is foundational, as both the notebook’s output and the captured evidence were synchronized to it. This evidence pattern is transferable to any tracker capable of storing metrics, system telemetry, files, and providing a stable, shareable run URL. The W&B run provides a transparent and reviewable record of the entire process, encompassing:

- Data Provenance: Confirmation of the exact dataset used.
- Command Integrity: The precise command executed, including all hyperparameters.
- Metric Evolution: Visualizations of key training metrics over time.
- Hardware Activity: Telemetry demonstrating GPU utilization.
- Artifact Linkage: A direct link to the logged W&B run for deep inspection.
The notebook is designed to perform offline logging within the W&B environment first, followed by syncing the completed run. This approach enhances resilience against potential dependency conflicts while still culminating in a dynamic W&B page that readers can interactively explore.
Reproducing the Run: A Step-by-Step Guide
To replicate this demonstration, follow these steps:
- Open the Companion Notebook: Access the provided Colab notebook at https://colab.research.google.com/drive/1AiiJuFvNUTyQ-eksm9Mj7wAGtvH_V4zQ.
- Configure Runtime: Set the Colab runtime to use an "A100 GPU" with "High-RAM" enabled.
- Add W&B API Key: Input your Weights & Biases API key into the "Secrets" section of Colab.
- Execute All Cells: Navigate to "Runtime" and select "Run all".
The notebook systematically executes the entire sequence: it installs necessary dependencies, clones the OpenVLA repository, stages the modified LIBERO RLDS dataset, establishes the OpenVLA Python 3.10 environment, initiates the LoRA fine-tuning process, synchronizes the offline W&B run, verifies the W&B run URL, and finally, compresses all evidence files into a zip archive.
Upon successful completion of the run, the notebook will print the W&B link. Opening this link will allow you to inspect the detailed run history, interactive charts, generated files, and metadata associated with this fine-tuning process.
The Practical Value of This Run
A 100-step LoRA fine-tuning run, while brief, offers substantial practical value. It will not definitively ascertain whether a robot policy is ready for deployment. However, it will rigorously confirm that the underlying training infrastructure is correctly configured: the intended dataset is being loaded, the official training script is executing without errors, the adapter is receiving weight updates, the graphics processing unit is engaged in genuine computational work, and the training metrics are successfully captured and preserved outside the confines of the notebook.

This represents the core practical contribution of this article. Before committing to extended training periods, comprehensive simulation evaluations, or actual robotic testing, users are provided with a compact, reproducible, and inspectable baseline that honestly demonstrates what it has proven.
This methodological pattern extends beyond the specific case of OpenVLA. For any tutorial involving the fine-tuning of large models, the pertinent question transcends mere notebook completion. The more crucial inquiry is whether the training run leaves behind sufficient, verifiable evidence to enable an external party to meticulously inspect the data, the command executed, the logged metrics, the hardware activity, and the final artifacts. For the author, this represents the fundamental lesson: before evaluating the performance of a fine-tuned robot model, the priority is to first establish that the training run itself is real, reproducible, and quantifiable.







