RL Post-Training for VLA Models
RLinf is a flexible and scalable open-source RL infrastructure designed for Embodied and Agentic AI. This integration enables reinforcement learning fine-tuning of Vision-Language-Action (VLA) models (e.g., GR00T, OpenVLA) on Isaac Lab simulation tasks.
The typical workflow follows three stages:
- Data collection — Collect demonstration data from the Isaac Lab environment (e.g., via teleoperation or scripted policy).
- Base model training — Train a VLA base model (e.g., GR00T) on the collected demonstrations using supervised learning.
- RL fine-tuning — Fine-tune the pretrained VLA model on the Isaac Lab task using RLinf with PPO / Actor-Critic / SAC.
Overview
The RLinf integration allows Isaac Lab users to:
- Fine-tune pretrained VLA models on Isaac Lab tasks using PPO / Actor-Critic / SAC
- Leverage RLinf’s FSDP-based distributed training across multiple GPUs/nodes
- Define observation/action mappings from Isaac Lab to GR00T format via a single YAML config
- Register Isaac Lab tasks into RLinf without modifying RLinf source code
Architecture
Data flow:
EnvWorkerruns Isaac Lab simulation and converts observations to RLinf formatRolloutWorkerruns VLA model inference (e.g., GR00T) to produce actions- Actions are converted back to Isaac Lab format and stepped in the environment
ActorWorkerupdates the VLA model with PPO/actor-critic loss via FSDP
Prerequisites
RLinf post-training currently supports Linux only. Compatible distributions include Ubuntu and Debian, Red Hat-family distributions, and Arch Linux.
- Isaac Lab installed and configured
- Isaac-GR00T repo (for VLA inference and data transforms)
- A pretrained VLA checkpoint in HuggingFace format. A pretrained GR00T checkpoint for
assemble_trocaris available and can be downloaded via:
- Multi-GPU setup recommended (FSDP requires at least 1 GPU)
Installation
From the Isaac Lab root directory:
The packages installed in Step 2 intentionally differ from the versions in the
Isaac Lab lockfile. Use uv run --no-sync for the commands below so that
uv does not replace these GR00T-compatible versions before launching.
Skipping flash-attn
If Step 4 fails, skip installation of flash-attn and apply this patch instead:
The patch switches GR00T to PyTorch SDPA, so flash-attn is no longer required. The training and evaluation commands below work unchanged.
OpenMP preload on aarch64
On DGX Spark and other aarch64 Linux systems only, preload the aarch64 OpenMP library so it can be loaded into the Python process (see Python environment with Isaac Sim):
Do not set this aarch64 path on x86_64 Linux. If it was inherited from a
previous setup, run unset LD_PRELOAD before launching Isaac Lab.
Quick Start
Training — RL fine-tuning of a pretrained VLA model:
uv (Recommended)
isaaclab.sh
Evaluation — Evaluate a pretrained (base) model with video recording:
uv (Recommended)
isaaclab.sh
Evaluation — Evaluate an RL-finetuned checkpoint with video recording:
uv (Recommended)
isaaclab.sh
Here --model_path points to the HuggingFace-format base model (with
config.json), and --checkpoint points to the RLinf checkpoint
directory (the global_step_<N> folder). The script loads the model
architecture from the base model and overlays the RL-finetuned weights
(full_weights.pt) from the checkpoint.
The --config_path flag is optional. When omitted, the scripts automatically
search the isaaclab_tasks package for the matching YAML configuration file.
Checkpoints
Checkpoints are saved every save_interval epochs (default: 2) to:
The placeholders are configurable in the task YAML
(source/isaaclab_tasks/isaaclab_tasks/contrib/assemble_trocar/config/isaaclab_ppo_gr00t_assemble_trocar.yaml):
<experiment_name>—runner.logger.experiment_name(default:test_gr00t)<N>— increments everyrunner.save_intervalepochs
The exact path is printed at startup as [INFO] Logging to: .... To resume training, pass the
global_step_<N> directory via --checkpoint. For playback, --checkpoint also
accepts latest and best; both select the newest saved RLinf checkpoint.
Training throughput scales with the number of parallel environments. If your
GPU has spare memory, increase env.train.total_num_envs (default: 4)
in the task YAML.
Each checkpoint can be several gigabytes. To avoid filling up disk space,
increase save_interval in the task YAML so that fewer
intermediate checkpoints are saved during training.
Configuration
All configuration lives in a single YAML file loaded by Hydra.
The key configuration block is the env.train.isaaclab section, which defines how Isaac Lab observations
are converted to GR00T format:
Key Files
For detailed configuration options, CLI arguments, and how to add new tasks,
use the unified ./isaaclab.sh train --rl_library rlinf and ./isaaclab.sh play --rl_library rlinf commands.