Skip to main content

Post-training

💻 Post-Training Example​

Data Preparation​

Post-training requires three preparation steps. For a complete guide on customizing your own dataset, see the Custom Data Guide.

StepDescriptionOutput
1. Prepare LeRobot DatasetConvert your demonstration data to LeRobot v3.0 formatLeRobot dataset directory
2. Prepare Robot ConfigDefine feature mapping (states / actions / images) from raw keys to unified feature spaceconfigs/robot_configs/<data_name>.yaml
3. Compute Norm StatisticsCalculate normalization statistics over your datasetassets/norm_stats/<name>.json

Note: If you already have data in LeRobot v2.1 format, you can use convert_dataset_v21_to_v30.py to quickly convert it to v3.0.

Below we use RoboTwin 2.0 (5 tasks: "open_microwave", "click_bell", "stack_blocks_three", "place_shoe", "put_object_cabinet") as an example.

Training​

The following example post-trains LingBot-VLA on five RoboTwin 2.0 tasks (open_microwave, click_bell, stack_blocks_three, place_shoe, and put_object_cabinet):

# without depth
bash train.sh tasks/vla/train_lingbotvla.py ./configs/vla/robotwin_load20000h.yaml \
--data.train_path /path/to/mixed_robotwin_5tasks \
--data.data_name robotwin \
--data.norm_stats_file assets/norm_stats/robotwin_50.json \
--train.output_dir output/

# with depth
bash train.sh tasks/vla/train_lingbotvla.py ./configs/vla/robotwin_load20000h_depth.yaml \
--data.train_path /path/to/mixed_robotwin_5tasks \
--data.data_name robotwin \
--data.norm_stats_file assets/norm_stats/robotwin_50.json \
--train.output_dir output/

🤖 Real-Robot Post-Training​

Also, we provide recommended training configurations specifically tailored for real-world scenarios: real_load20000h.yaml (w/o depth) and real_load20000h_depth.yaml (w/ depth). For a detailed explanation of all training configuration parameters (batch size, gradient accumulation, training duration, checkpointing, depth injection, etc.), see the Training Configuration Guide.