Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


From Noise to Intent: Anchoring Generative VLA Policies with Residual Bridges

ICML 2026
Yiming Zhong*Yaoyu He*Zemin Yang*Pengfei TianYifan HuangQingqiu HuangXinge ZhuYuexin Ma
ShanghaiTech University, Morphic Robotics, The Chinese University of Hong Kong
*Indicates Equal Contribution

📖 Project Page | 📄 Paper Link | 🤗 LIBERO Checkpoint | 🤗 SimplerEnv Checkpoint

📣 News

  • [05/2026] ResVLA has been accepted by ICML 2026.
  • [05/2026] Code and released checkpoints are available.

📦 Released Assets

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

🛠️ Setup

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 resvla

Install 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-isolation

If 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-venv

⬇️ Download Checkpoints

Keep 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_2B

Expected 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.

📚 Datasets

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.sh

For 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

🏋️ Training

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.sh

The released training scripts are multi-GPU recipes. Adjust CUDA_VISIBLE_DEVICES, --num_processes, batch size, dataset paths, and base_vlm for your machine.

🚀 Evaluation

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.

💓 Acknowledgement

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.

🚩 Plan

  • Release paper.
  • Release source code.
  • Release checkpoint.

🎫 License

This project is released under the MIT License.

🖊️ Citation

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}
}

About

[ICML 2026] ResVLA: From Noise to Intent: Anchoring Generative VLA Policies with Residual Bridges

Resources

Stars

29 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages