ICML 2026
Yiming Zhong*
Yaoyu He*
Zemin Yang*
Pengfei Tian
Yifan Huang
Qingqiu Huang
Xinge Zhu
Yuexin Ma
ShanghaiTech University, Morphic Robotics, The Chinese University of Hong Kong
*Indicates Equal Contribution
📖 Project Page | 📄 Paper Link | 🤗 LIBERO Checkpoint | 🤗 SimplerEnv Checkpoint
- [05/2026] ResVLA has been accepted by ICML 2026.
- [05/2026] Code and released checkpoints are available.
| Asset | Link | Default local path | Notes |
|---|---|---|---|
| Base VLM | Qwen3-VL-2B-Instruct | ../ckpt/Qwen3-VL-2B-Instruct |
Used by released configs |
| LIBERO checkpoint | resvla_libero_all_2B | results/Checkpoints/resvla_libero_all_2B |
Also used for LIBERO-plus |
| SimplerEnv checkpoint | resvla_simpler_env_2B | results/Checkpoints/resvla_simpler_env_2B |
Trained with Bridge and Fractal data |
The commands below assume a fresh clone and a clean Python environment. We verified the release workflow with Python 3.10, PyTorch 2.6.0, and CUDA 12.4 wheels.
git clone https://github.com/4DVLab/ResVLA.git
cd ResVLA
conda create -n resvla python=3.10 -y
conda activate resvlaInstall PyTorch first so torchvision resolves to the tested PyTorch version:
pip install torch==2.6.0 torchvision==0.21.0
pip install -r requirements.txt
pip install -e .Install FlashAttention for the default Qwen3-VL backend:
pip install flash-attn --no-build-isolationIf flash-attn fails with No such file or directory: '/usr/local/cuda/bin/nvcc', install a CUDA toolkit that provides nvcc, or install a prebuilt flash-attn wheel matching your Python, PyTorch, and CUDA versions from the FlashAttention releases.
If python -m venv fails on Ubuntu/Debian with ensurepip is not available, install the system venv package first:
sudo apt install python3.10-venvKeep the downloaded folders in the structure below. The loader expects each .pt file to live under <run_dir>/checkpoints/, with config.yaml and dataset_statistics.json in <run_dir>/.
# Base VLM used by the released configs.
mkdir -p ../ckpt
hf download Qwen/Qwen3-VL-2B-Instruct \
--local-dir ../ckpt/Qwen3-VL-2B-Instruct
# Released ResVLA checkpoints.
HF_XET_HIGH_PERFORMANCE=1 hf download GaussionZhong/resvla_libero_all_2B \
--local-dir results/Checkpoints/resvla_libero_all_2B
HF_XET_HIGH_PERFORMANCE=1 hf download GaussionZhong/resvla_simpler_env_2B \
--local-dir results/Checkpoints/resvla_simpler_env_2BExpected checkpoint files:
results/Checkpoints/resvla_libero_all_2B/checkpoints/resVLA_libero.pt
results/Checkpoints/resvla_simpler_env_2B/checkpoints/resVLA_simpler_env.pt
Large checkpoint downloads may appear quiet for several minutes. Check partial files under results/Checkpoints/<run>/.cache/huggingface/download/ if you want to confirm progress. Re-running the same hf download command resumes partial downloads.
If you store Qwen3-VL-2B-Instruct somewhere else, update framework.qwenvl.base_vlm in the checkpoint config.yaml or in your training config.
| Setting | Required datasets | Default directory | Preparation |
|---|---|---|---|
| LIBERO | LIBERO-spatial, LIBERO-object, LIBERO-goal, LIBERO-10 | playground/Datasets/LEROBOT_LIBERO_DATA |
bash examples/LIBERO/data_preparation.sh |
| SimplerEnv / OXE | Bridge, Fractal | playground/Datasets/SimplerEnv |
Download LeRobot-format datasets and place them under the expected names |
Prepare LIBERO data:
export DEST=playground/Datasets/LEROBOT_LIBERO_DATA
bash examples/LIBERO/data_preparation.shFor SimplerEnv / OXE training, place the LeRobot-format datasets as:
playground/Datasets/SimplerEnv/bridge_orig_1.0.0_lerobot
playground/Datasets/SimplerEnv/fractal20220817_data_0.1.0_lerobot
Check the dataloader before launching training:
NO_ALBUMENTATIONS_UPDATE=1 \
python resVLA/dataloader/lerobot_datasets.py \
--config_yaml examples/SimplerEnv/train_files/resvla_cotrain_oxe.yaml| Recipe | Script | Config |
|---|---|---|
| LIBERO | examples/LIBERO/train_files/run_libero_train_resVLA.sh |
examples/LIBERO/train_files/resvla_cotrain_libero.yaml |
| SimplerEnv / OXE | examples/SimplerEnv/train_files/run_oxe_train_ResVLA.sh |
examples/SimplerEnv/train_files/resvla_cotrain_oxe.yaml |
Launch training:
bash examples/LIBERO/train_files/run_libero_train_resVLA.sh
bash examples/SimplerEnv/train_files/run_oxe_train_ResVLA.shThe released training scripts are multi-GPU recipes. Adjust CUDA_VISIBLE_DEVICES, --num_processes, batch size, dataset paths, and base_vlm for your machine.
| Benchmark | Checkpoint | Instructions |
|---|---|---|
| LIBERO | resVLA_libero.pt |
examples/LIBERO/README.md |
| LIBERO-plus | resVLA_libero.pt |
examples/LIBERO-plus/README.md |
| SimplerEnv | resVLA_simpler_env.pt |
examples/SimplerEnv/README.md |
All evaluation workflows use the ResVLA policy server and a separate simulator-side environment.
We thank the open-source communities behind Qwen3-VL, LIBERO, LIBERO-plus, SimplerEnv, and StarVLA. Our codebase is built based on the StarVLA repository, and we sincerely appreciate their contributions to the robotics and VLA research community.
- Release paper.
- Release source code.
- Release checkpoint.
This project is released under the MIT License.
If you find ResVLA useful, please consider citing our work:
@article{zhong2026noise,
title={From Noise to Intent: Anchoring Generative VLA Policies with Residual Bridges},
author={Zhong, Yiming and He, Yaoyu and Yang, Zemin and Tian, Pengfei and Huang, Yifan and Huang, Qingqiu and Zhu, Xinge and Ma, Yuexin},
journal={arXiv preprint arXiv:2604.21391},
year={2026}
}