promptnavigate to a basketball |
promptfind to a basketball |
promptlocate a vase. |
promptfind a spray bottle and pick up that spray bottle |
|
|---|---|---|---|---|
| Baseline | ![]() |
![]() |
![]() |
![]() |
| SafeVLA | ![]() |
![]() |
![]() |
![]() |
Several demos demonstrate how SafeVLA can ensure safety while optimizing task performance.
- [2025-09-18] Paper accepted: SafeVLA was accept as Neurips 2025 Spotlight!
- [2025-03-06] Paper released: SafeVLA: Towards Safety Alignment of Vision-Language-Action Model via Constrained Learning
- [2025-02-28] Initial release
Please use the pre-built image from Docker Hub:
docker pull safevla/safevla:v0Then
export CODE_PATH=/path/to/this/repo
export DATA_PATH=/path/to/training_data
export DOCKER_IMAGE=safevla/safevla:v0
docker run \
--gpus all \
--device /dev/dri \
--mount type=bind,source=${CODE_PATH},target=/root/spoc \
--mount type=bind,source=${DATA_PATH},target=/root/data \
--shm-size 50G \
--runtime=nvidia \
-it ${DOCKER_IMAGE}:latestand use the following conda environment:
conda activate spocThe Safety-CHORES task we proposed has been integrated into Safety-Gymnasium
Then please clone Safety-gymnasium and install it:
git clone https://github.com/PKU-Alignment/safety-gymnasium.git
cd safety-gymnasium
pip install -e .In order to run training and evaluation you'll need:
- The processed/optimized Objaverse assets along with their annotations.
- The set of ProcTHOR-Objaverse houses you'd like to train/evaluate on.
- For evaluation only, a trained model checkpoint.
Below we describe how to download the assets, annotations, and the ProcTHOR-Objaverse houses. We also describe how you can use one of our pre-trained models to run evaluation.
Pick a directory /path/to/objaverse_assets where you'd like to save the assets and annotations. Then run the following commands:
python -m objathor.dataset.download_annotations --version 2023_07_28 --path /path/to/objaverse_assets
python -m objathor.dataset.download_assets --version 2023_07_28 --path /path/to/objaverse_assetsThese will create the directory structure:
/path/to/objaverse_assets
2023_07_28
annotations.json.gz # The annotations for each object
assets
000074a334c541878360457c672b6c2e # asset id
000074a334c541878360457c672b6c2e.pkl.gz
albedo.jpg
emission.jpg
normal.jpg
thor_metadata.json
... # 39663 more asset directories
Pick a directory /path/to/objaverse_houses where you'd like to save ProcTHOR-Objaverse houses. Then run:
python -m scripts.download_objaverse_houses --save_dir /path/to/objaverse_houses --subset valto download the validation set of houses as /path/to/objaverse_houses/val.jsonl.gz.
You can also change val to train to download the training set of houses.
Next you need to set the following environment variables:
export PYTHONPATH=/path/to/code_in_docker
export OBJAVERSE_HOUSES_DIR=/path/to/objaverse_houses
export OBJAVERSE_DATA_DIR=/path/to/objaverse_assetsFor training, we recommend to set two more environment variables to avoid timeout issues from AllenAct:
export ALLENACT_DEBUG=True
export ALLENACT_DEBUG_VST_TIMEOUT=2000Download pretrained IL ckpt:
python scripts/download_il_ckpt.py --ckpt_ids spoc_IL --save_dir PATH_TO_SAVE_DIRRun Safe RL training:
python training/online/dinov2_vits_tsfm_rgb_augment_objectnav.py train --il_ckpt_path IL_CKPT_PATH --num_train_processes NUM_OF_TRAIN_PROCESSES --output_dir PATH_TO_RESULT --dataset_dir PATH_TO_DATASET --cost_limit COST_LIMIT --tag EXP_NAMEFor example,
python training/online/dinov2_vits_tsfm_rgb_augment_objectnav.py train --il_ckpt_path /root/data/il_ckpt/spoc_IL/model.ckpt --num_train_processes 32 --output_dir results --dataset_dir /root/data/data/astar/ObjectNavType --cost_limit 2.31964 --tag SafeVLA2.31964-ObjectNavType-RL-DinoV2-ViTS-TSFMpython scripts/download_trained_ckpt.py --save_dir ckpt
cd ckpt
cat safevla_* | tar -xzbash scripts/objnav.bashIf you find our code or models useful in your work, please cite our paper:
@article{zhang25safevla,
title={SafeVLA: Towards Safety Alignment of Vision-Language-Action Model via Safe Reinforcement Learning},
author={Borong Zhang and Yuhao Zhang and Jiaming Ji and Yingshan Lei and Josef Dai and Yuanpei Chen and Yaodong Yang},
journal = {arXiv preprint arXiv:2503.03480},
year={2025}
} This repository benefits from AllenAct, AI2THOR, ProcTHOR, SPOC, FLaRe and Align-Anything.
Thanks for their wonderful works and their efforts to further promote VLA research. SafeVLA and its related assets are built and open-sourced with love and respect ❤️.








