ATeam-Research/A1

Python

44

4 commits

updated Apr 27, 2026

See the code

README

๐Ÿค– A1: A Fully Transparent Open-Source, Adaptive and Efficient Truncated Vision-Language-Action Model

arXiv GitHub Project Page


๐Ÿ“‹ Table of Contents


๐Ÿ”ง Installation

conda create -n a1 python=3.10
conda activate a1
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124
pip install -e .[all]
pip install --no-deps --force-reinstall git+https://github.com/moojink/dlimp_openvla
pip install -r requirements.txt 

โš™๏ธ Environment Setup

๐Ÿ” 1. Copy Environment Template

๐Ÿ“‹ cp .env.example .env.personal

โœ๏ธ 2. Configure Your Settings

Edit .env.personal with your personal settings:

# Example content
CONDA_ROOT=/path/to/conda
CONDA_ENV=a1
WANDB_ENTITY=your_entity
WANDB_PROJECT=your_project

๐Ÿ”’ This file is Git-ignored and won't be committed!

๐Ÿ”„ 3. Load Environment

source .env.personal

โš ๏ธ Security Note: .env.personal contains sensitive information (paths, API keys, etc.). Do NOT commit it to Git.


๐Ÿš€ Deploy

Start the API server for model inference:

๐Ÿ–ฅ๏ธ bash deploy/deploy.sh --weight /put/checkpoint/here --port <port>

๐Ÿ“‹ Arguments:

ArgumentRequiredDescription
--weightโœ…Path to model checkpoint
--portโŒServer port (auto-selected if not provided)
--normโŒEnable normalization (0 or 1)

โœจ Example:

bash deploy/deploy.sh --weight ./model/checkpoints/pretrain --port 8000

๐Ÿ“Š Evaluation

๐ŸŽฎ LIBERO Evaluation

๐Ÿ“ฆ 1. LIBERO Installation

๐Ÿ“ฅ git submodule update --init robot_experiments/libero/LIBERO
๐Ÿ“ฅ pip install -e robot_experiments/libero/LIBERO

๐Ÿš€ 2. Run Evaluation

ModeCommandDescription
๐ŸŽฏ Standardbash eval_libero.shStandard evaluation
โšก Early Exitbash eval_libero_exit.shEvaluates all 4 LIBERO task suites

๐Ÿงช VLABench Evaluation

VLABench evaluation requires running both a server and a client in separate terminals.

๐Ÿ“‹ Setup Steps:

StepActionCommand
1๏ธโƒฃInstall VLABenchpip install -r ...
2๏ธโƒฃDownload Assetspython scripts/download_assets.py
3๏ธโƒฃStart Server ๐Ÿ’ปbash deploy/deploy.sh ...
4๏ธโƒฃRun Client ๐ŸŽฎpython eval_client.py

๐Ÿ”ง Step 1: Install VLABench

pip install -r robot_experiments/vlabench/VLABench/requirements.txt
pip install -e robot_experiments/vlabench/VLABench

๐Ÿ“ฅ Step 2: Download Assets (if not already downloaded)

cd robot_experiments/vlabench/VLABench
python scripts/download_assets.py --choice all

๐Ÿ–ฅ๏ธ Step 3: Start the Evaluation Server (Terminal 1)

# Load environment and start the API server
bash deploy/deploy.sh --weight <path_to_checkpoint> --port 8000

๐ŸŽฎ Step 4: Run the Evaluation Client (Terminal 2)

cd robot_experiments/vlabench
python eval_client.py

โš ๏ธ Note: The server and client must run in separate terminals. The server loads the model and waits for client connections, while the client sends evaluation requests and receives results.

๐Ÿ† RoboChallenge Evaluation

RoboChallenge evaluation is executed through the run_task.py script, supporting two modes:

๐ŸŽฎ Mode๐Ÿ“– Description๐ŸŽฏ Purpose
mockAutomatic evaluation using local pre-recorded dataLocal testing, debugging
realConnect to real robot and submit official evaluationOfficial competition evaluation

๐Ÿฆพ Supported Robot Types:

  • ALOHA ๐Ÿค–
  • ARX5 ๐Ÿ”ง
  • UR5 โšก
  • FRANKA ๐Ÿฆฟ

๐Ÿงช Mock Mode (Local Automatic Evaluation)

# ๐Ÿ’ป Terminal 1: Deploy model
bash deploy/deploy.sh --weight <path_to_checkpoint> --port 8000

# ๐ŸŽฎ Terminal 2: Run mock evaluation
cd robot_experiments/RoboChallengeInference
python run_task.py \
    --task_name open_the_drawer \
    --test_type mock \
    --url http://localhost:8000

๐ŸŒ Real Mode (Official Evaluation)

# ๐Ÿ’ป Terminal 1: Deploy model
bash deploy/deploy.sh --weight <path_to_checkpoint> --port 8000

# ๐Ÿค– Terminal 2: Run real robot evaluation
cd robot_experiments/RoboChallengeInference
python run_task.py \
    --task_name open_the_drawer \
    --test_type real \
    --url http://localhost:8000 \
    --user_token <your_token> \
    --run_id <run_id> \
    --action_nums 30

๐Ÿ’ก Tips:

  • โœ… Mock mode automatically starts the mock server, no manual startup required
  • ๐Ÿ”‘ Real mode requires valid user_token and run_id for official evaluation
  • ๐Ÿ“‹ task_name must be defined in task_config.ROBO_CHALLENGE_TASKS

๐ŸŽ“ Training

๐ŸŒŸ Pretraining

Pretraining trains the model from scratch using large-scale VLA datasets, supporting distributed training on Slurm clusters.

๐Ÿ“ Configuration files:

  • ๐Ÿ“„ configs/experiments/pretrain.yaml - Pretraining experiment configuration
  • ๐Ÿ“„ configs/datasets/pretrain.yaml - Pretraining dataset configuration
  • ๐Ÿ–ฅ๏ธ scripts/slurms/pretrain.sh - Pretraining script (runs on Slurm cluster)

๐Ÿ–ฅ๏ธ Slurm Cluster Training:

1๏ธโƒฃ Configure Slurm submission script scripts/slurms/submit_job.sh:

  • ๐Ÿ”ง nnodes: Number of nodes required (default 8 nodes)
  • ๐Ÿ”ง gpus_per_node: GPUs per node (default 8)
  • ๐Ÿ”ง partition and quotatype: Partition name and QOS type

2๏ธโƒฃ Submit pretraining job:

๐Ÿš€ bash scripts/slurms/submit_job.sh

๐Ÿ’ป Single-node multi-GPU training (non-Slurm):

๐Ÿš€ bash scripts/slurms/pretrain.sh

โš ๏ธ Note: Pretraining requires significant computational resources. Distributed training on Slurm clusters is recommended. Global batch size = 128 ร— number of nodes.


๐Ÿ“š LIBERO Training

LIBERO training fine-tunes on simulation data, supporting single-node multi-GPU training.

๐Ÿ“ Configuration files:

  • ๐Ÿ“„ configs/experiments/libero_simulation.yaml - LIBERO training configuration
  • ๐Ÿ“„ configs/datasets/libero_4_tasks.yaml - LIBERO 4-task dataset configuration

๐Ÿš€ Run training:

bash train_libero.sh

๐Ÿงช VLAbench Training

VLAbench training fine-tunes in the VLAbench simulation environment.

๐Ÿ“ Configuration files:

  • ๐Ÿ“„ configs/experiments/vlabench.yaml - VLAbench training configuration
  • ๐Ÿ“„ configs/datasets/vlabench.yaml - VLAbench dataset configuration

๐Ÿš€ Run training:

bash train_vlabench.sh

๐Ÿ† RoboChallenge Training

RoboChallenge training uses the train_rc.sh script to fine-tune on specific tasks (e.g., open_the_drawer, put_cup_on_coaster).

๐Ÿ“ Configuration files:

FileDescription
configs/experiments/rc_open_the_drawer.yaml๐Ÿ—„๏ธ Open the drawer task config
configs/experiments/rc_put_cup_on_coaster.yamlโ˜• Put cup on coaster task config
configs/datasets/rc_*.yaml๐Ÿค– Dataset configs (ARX5, etc.)

๐Ÿš€ Run training:

bash train_rc.sh

๐Ÿ’ก Tip: Modify the vla_config_path variable in the script to switch between different task configurations.


๐Ÿ“ฆ Model Zoo & Datasets

๐Ÿค– Pretrained Models

ModelDescriptionCheckpoint
pretrainPretrained model on large-scale VLA datasetsLink
liberoFine-tuned on LIBERO simulation tasksLink
libero_exitLIBERO model with early exit mechanismLink
vlabenchFine-tuned on VLABench simulation tasksLink
rc_put_cup_on_coasterFine-tuned on RoboChallenge put cup taskLink
rc_open_the_drawerFine-tuned on RoboChallenge open drawer taskLink

๐Ÿ“Š Training Datasets

DatasetDescriptionDownload
DroidDROID dataset for robotic manipulationLink
RoboChallengeRoboChallenge competition dataLink
RoboCOINRoboCOIN datasetLink
RoboMINDRoboMIND benchmark datasetLink
AgiBotAgiBot datasetLink
LIBEROLIBERO simulation tasksLink
VlaBenchVLABench simulation environmentLink

๐Ÿ“ Storage Paths:

  • Model weights: Place downloaded model weights in the model/ directory
  • Training data: Place downloaded datasets in the data/ directory

โš ๏ธ Important Notes:

  1. RoboMIND dataset preprocessing: Before using RoboMIND dataset, you need to run the indexing script:
    bash scripts/robomind_build_index.sh
    
  2. LeRobot dataset patch for pretraining: Before pretraining, you must replace the LeRobot dataset file:
    cp a1/data/vla/lerobot_datasets_replace.py <CONDA_ENV_PATH>/lib/python3.10/site-packages/lerobot/datasets/lerobot_dataset.py
    
    Replace <CONDA_ENV_PATH> with your actual conda environment path (e.g., /path/to/conda/envs/a1)

๐Ÿ“ Note: Please fill in the actual download links for models and datasets in the table above.


๐Ÿ™ Acknowledgements

This project is built upon the Molmo project. We thank the Allen Institute for AI for their excellent open-source work.


๐Ÿ“š Citation

If you find this work useful for your research, please consider citing:

@misc{zhang2026a1fullytransparentopensource,
      title={A1: A Fully Transparent Open-Source, Adaptive and Efficient Truncated Vision-Language-Action Model}, 
      author={Kaidong Zhang and Jian Zhang and Rongtao Xu and Yu Sun and Shuoshuo Xue and Youpeng Wen and Xiaoyu Guo and Minghao Guo and Weijia Liufu and Liu Zihou and Kangyi Ji and Yangsong Zhang and Jiarun Zhu and Jingzhi Liu and Zihang Li and Ruiyi Chen and Meng Cao and Jingming Zhang and Shen Zhao and Xiaojun Chang and Feng Zheng and Ivan Laptev and Xiaodan Liang},
      year={2026},
      eprint={2604.05672},
      archivePrefix={arXiv},
      primaryClass={cs.RO},
      url={https://arxiv.org/abs/2604.05672}, 
}

ATeam-Research/A1

Python

44

4 commits

updated Apr 27, 2026

See the code

README

๐Ÿค– A1: A Fully Transparent Open-Source, Adaptive and Efficient Truncated Vision-Language-Action Model

arXiv GitHub Project Page


๐Ÿ“‹ Table of Contents


๐Ÿ”ง Installation

conda create -n a1 python=3.10
conda activate a1
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124
pip install -e .[all]
pip install --no-deps --force-reinstall git+https://github.com/moojink/dlimp_openvla
pip install -r requirements.txt 

โš™๏ธ Environment Setup

๐Ÿ” 1. Copy Environment Template

๐Ÿ“‹ cp .env.example .env.personal

โœ๏ธ 2. Configure Your Settings

Edit .env.personal with your personal settings:

# Example content
CONDA_ROOT=/path/to/conda
CONDA_ENV=a1
WANDB_ENTITY=your_entity
WANDB_PROJECT=your_project

๐Ÿ”’ This file is Git-ignored and won't be committed!

๐Ÿ”„ 3. Load Environment

source .env.personal

โš ๏ธ Security Note: .env.personal contains sensitive information (paths, API keys, etc.). Do NOT commit it to Git.


๐Ÿš€ Deploy

Start the API server for model inference:

๐Ÿ–ฅ๏ธ bash deploy/deploy.sh --weight /put/checkpoint/here --port <port>

๐Ÿ“‹ Arguments:

ArgumentRequiredDescription
--weightโœ…Path to model checkpoint
--portโŒServer port (auto-selected if not provided)
--normโŒEnable normalization (0 or 1)

โœจ Example:

bash deploy/deploy.sh --weight ./model/checkpoints/pretrain --port 8000

๐Ÿ“Š Evaluation

๐ŸŽฎ LIBERO Evaluation

๐Ÿ“ฆ 1. LIBERO Installation

๐Ÿ“ฅ git submodule update --init robot_experiments/libero/LIBERO
๐Ÿ“ฅ pip install -e robot_experiments/libero/LIBERO

๐Ÿš€ 2. Run Evaluation

ModeCommandDescription
๐ŸŽฏ Standardbash eval_libero.shStandard evaluation
โšก Early Exitbash eval_libero_exit.shEvaluates all 4 LIBERO task suites

๐Ÿงช VLABench Evaluation

VLABench evaluation requires running both a server and a client in separate terminals.

๐Ÿ“‹ Setup Steps:

StepActionCommand
1๏ธโƒฃInstall VLABenchpip install -r ...
2๏ธโƒฃDownload Assetspython scripts/download_assets.py
3๏ธโƒฃStart Server ๐Ÿ’ปbash deploy/deploy.sh ...
4๏ธโƒฃRun Client ๐ŸŽฎpython eval_client.py

๐Ÿ”ง Step 1: Install VLABench

pip install -r robot_experiments/vlabench/VLABench/requirements.txt
pip install -e robot_experiments/vlabench/VLABench

๐Ÿ“ฅ Step 2: Download Assets (if not already downloaded)

cd robot_experiments/vlabench/VLABench
python scripts/download_assets.py --choice all

๐Ÿ–ฅ๏ธ Step 3: Start the Evaluation Server (Terminal 1)

# Load environment and start the API server
bash deploy/deploy.sh --weight <path_to_checkpoint> --port 8000

๐ŸŽฎ Step 4: Run the Evaluation Client (Terminal 2)

cd robot_experiments/vlabench
python eval_client.py

โš ๏ธ Note: The server and client must run in separate terminals. The server loads the model and waits for client connections, while the client sends evaluation requests and receives results.

๐Ÿ† RoboChallenge Evaluation

RoboChallenge evaluation is executed through the run_task.py script, supporting two modes:

๐ŸŽฎ Mode๐Ÿ“– Description๐ŸŽฏ Purpose
mockAutomatic evaluation using local pre-recorded dataLocal testing, debugging
realConnect to real robot and submit official evaluationOfficial competition evaluation

๐Ÿฆพ Supported Robot Types:

  • ALOHA ๐Ÿค–
  • ARX5 ๐Ÿ”ง
  • UR5 โšก
  • FRANKA ๐Ÿฆฟ

๐Ÿงช Mock Mode (Local Automatic Evaluation)

# ๐Ÿ’ป Terminal 1: Deploy model
bash deploy/deploy.sh --weight <path_to_checkpoint> --port 8000

# ๐ŸŽฎ Terminal 2: Run mock evaluation
cd robot_experiments/RoboChallengeInference
python run_task.py \
    --task_name open_the_drawer \
    --test_type mock \
    --url http://localhost:8000

๐ŸŒ Real Mode (Official Evaluation)

# ๐Ÿ’ป Terminal 1: Deploy model
bash deploy/deploy.sh --weight <path_to_checkpoint> --port 8000

# ๐Ÿค– Terminal 2: Run real robot evaluation
cd robot_experiments/RoboChallengeInference
python run_task.py \
    --task_name open_the_drawer \
    --test_type real \
    --url http://localhost:8000 \
    --user_token <your_token> \
    --run_id <run_id> \
    --action_nums 30

๐Ÿ’ก Tips:

  • โœ… Mock mode automatically starts the mock server, no manual startup required
  • ๐Ÿ”‘ Real mode requires valid user_token and run_id for official evaluation
  • ๐Ÿ“‹ task_name must be defined in task_config.ROBO_CHALLENGE_TASKS

๐ŸŽ“ Training

๐ŸŒŸ Pretraining

Pretraining trains the model from scratch using large-scale VLA datasets, supporting distributed training on Slurm clusters.

๐Ÿ“ Configuration files:

  • ๐Ÿ“„ configs/experiments/pretrain.yaml - Pretraining experiment configuration
  • ๐Ÿ“„ configs/datasets/pretrain.yaml - Pretraining dataset configuration
  • ๐Ÿ–ฅ๏ธ scripts/slurms/pretrain.sh - Pretraining script (runs on Slurm cluster)

๐Ÿ–ฅ๏ธ Slurm Cluster Training:

1๏ธโƒฃ Configure Slurm submission script scripts/slurms/submit_job.sh:

  • ๐Ÿ”ง nnodes: Number of nodes required (default 8 nodes)
  • ๐Ÿ”ง gpus_per_node: GPUs per node (default 8)
  • ๐Ÿ”ง partition and quotatype: Partition name and QOS type

2๏ธโƒฃ Submit pretraining job:

๐Ÿš€ bash scripts/slurms/submit_job.sh

๐Ÿ’ป Single-node multi-GPU training (non-Slurm):

๐Ÿš€ bash scripts/slurms/pretrain.sh

โš ๏ธ Note: Pretraining requires significant computational resources. Distributed training on Slurm clusters is recommended. Global batch size = 128 ร— number of nodes.


๐Ÿ“š LIBERO Training

LIBERO training fine-tunes on simulation data, supporting single-node multi-GPU training.

๐Ÿ“ Configuration files:

  • ๐Ÿ“„ configs/experiments/libero_simulation.yaml - LIBERO training configuration
  • ๐Ÿ“„ configs/datasets/libero_4_tasks.yaml - LIBERO 4-task dataset configuration

๐Ÿš€ Run training:

bash train_libero.sh

๐Ÿงช VLAbench Training

VLAbench training fine-tunes in the VLAbench simulation environment.

๐Ÿ“ Configuration files:

  • ๐Ÿ“„ configs/experiments/vlabench.yaml - VLAbench training configuration
  • ๐Ÿ“„ configs/datasets/vlabench.yaml - VLAbench dataset configuration

๐Ÿš€ Run training:

bash train_vlabench.sh

๐Ÿ† RoboChallenge Training

RoboChallenge training uses the train_rc.sh script to fine-tune on specific tasks (e.g., open_the_drawer, put_cup_on_coaster).

๐Ÿ“ Configuration files:

FileDescription
configs/experiments/rc_open_the_drawer.yaml๐Ÿ—„๏ธ Open the drawer task config
configs/experiments/rc_put_cup_on_coaster.yamlโ˜• Put cup on coaster task config
configs/datasets/rc_*.yaml๐Ÿค– Dataset configs (ARX5, etc.)

๐Ÿš€ Run training:

bash train_rc.sh

๐Ÿ’ก Tip: Modify the vla_config_path variable in the script to switch between different task configurations.


๐Ÿ“ฆ Model Zoo & Datasets

๐Ÿค– Pretrained Models

ModelDescriptionCheckpoint
pretrainPretrained model on large-scale VLA datasetsLink
liberoFine-tuned on LIBERO simulation tasksLink
libero_exitLIBERO model with early exit mechanismLink
vlabenchFine-tuned on VLABench simulation tasksLink
rc_put_cup_on_coasterFine-tuned on RoboChallenge put cup taskLink
rc_open_the_drawerFine-tuned on RoboChallenge open drawer taskLink

๐Ÿ“Š Training Datasets

DatasetDescriptionDownload
DroidDROID dataset for robotic manipulationLink
RoboChallengeRoboChallenge competition dataLink
RoboCOINRoboCOIN datasetLink
RoboMINDRoboMIND benchmark datasetLink
AgiBotAgiBot datasetLink
LIBEROLIBERO simulation tasksLink
VlaBenchVLABench simulation environmentLink

๐Ÿ“ Storage Paths:

  • Model weights: Place downloaded model weights in the model/ directory
  • Training data: Place downloaded datasets in the data/ directory

โš ๏ธ Important Notes:

  1. RoboMIND dataset preprocessing: Before using RoboMIND dataset, you need to run the indexing script:
    bash scripts/robomind_build_index.sh
    
  2. LeRobot dataset patch for pretraining: Before pretraining, you must replace the LeRobot dataset file:
    cp a1/data/vla/lerobot_datasets_replace.py <CONDA_ENV_PATH>/lib/python3.10/site-packages/lerobot/datasets/lerobot_dataset.py
    
    Replace <CONDA_ENV_PATH> with your actual conda environment path (e.g., /path/to/conda/envs/a1)

๐Ÿ“ Note: Please fill in the actual download links for models and datasets in the table above.


๐Ÿ™ Acknowledgements

This project is built upon the Molmo project. We thank the Allen Institute for AI for their excellent open-source work.


๐Ÿ“š Citation

If you find this work useful for your research, please consider citing:

@misc{zhang2026a1fullytransparentopensource,
      title={A1: A Fully Transparent Open-Source, Adaptive and Efficient Truncated Vision-Language-Action Model}, 
      author={Kaidong Zhang and Jian Zhang and Rongtao Xu and Yu Sun and Shuoshuo Xue and Youpeng Wen and Xiaoyu Guo and Minghao Guo and Weijia Liufu and Liu Zihou and Kangyi Ji and Yangsong Zhang and Jiarun Zhu and Jingzhi Liu and Zihang Li and Ruiyi Chen and Meng Cao and Jingming Zhang and Shen Zhao and Xiaojun Chang and Feng Zheng and Ivan Laptev and Xiaodan Liang},
      year={2026},
      eprint={2604.05672},
      archivePrefix={arXiv},
      primaryClass={cs.RO},
      url={https://arxiv.org/abs/2604.05672}, 
}