Overview
This document describes how to integrate a Vision-Language-Action-Critic (VLAC) into the SimpleVLA-RL training stack. The goal is to replace the simulator-provided terminal success signal during training with a VLAC-predicted value, while preserving the simulator signal for evaluation.
Repository structure (high level)
verl Core RL training framework for SimpleVLA-RL. Uses Ray for distributed orchestration and vLLM for fast inference/parallelization. Originally built for LLM RL, adapted here for VLA training. Ships with a pre-trained OpenVLA-OFT model and the LIBERO simulation environment as Python packages.
examples Entry scripts and helpers for training and evaluation.
run_openvla_oft_rl.shis the main training entrypoint.eval_openvla_oft.shruns evaluation (withtrainer.val_only=True).evo_vlac External module imported from the VLAC project. Provides models to predict task progress/success for robot manipulation.
evo_vlac/examplesshows how to run the critic on images/videos and obtain pairwise critic, per-frame values, and done/success estimates.
Objective
Training Do not use the environment
doneduring training. Termination and terminal rewards are determined by VLAC only. After each step, call VLAC to detectdone.- If
VLAC determined done == True: terminate the episode immediately and set the terminal reward to 1.0 (no need to call VLAC value again). - Else if
max_stepis reached: terminate the rollout and call the VLAC model to compute the value list and use the last value the reward. - Else: continue the episode.
- If
Evaluation Keep using the environment
donesignal to compute success rate. VLAC is not used to determine evaluation success.Rollout termination logic
- Training: "done" signal from VLAC
- Testing: "done" signal from the environment
Reward logic
- Training: if "done" detected by VLAC, reward=1.0; else, reward comes from VLAC value.
Integration approach (service-oriented)
Why service
verlis Ray/vLLM-managed; VLAC is managed via Hugging Face and ms-swift. To keep systems decoupled and switchable, expose VLAC as a lightweight service thatverlcalls at needed times.Deployment flexibility The VLAC service can run on the same node (sharing GPU memory fraction) or on a different node.
Transport options During training, frames are kept in memory as a Python list (TODO: you need to double-confirm this in the code in implementation); they are not written to disk until the episode finishes. Therefore, prefer sending the frames for communication in the service.
Additional Notes
- Try to use simple implementation. Avoding using complicated environment, e.g., docker.
- GPU resource sharing: Likely to share GPUs with SimpleVLA-RL on H100 80GB cards. During rollout generation, usage is ~20–30 GB; during actor gradient updates, peaks at ~60–70 GB.
- Development environment: Use this desktop only for editing and light, non-intrusive smoke tests. I will push to a server for real training/evaluation.
- Collaboration: Before starting, I will confirm the open questions above with you and then proceed with the plan.