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.
| Step | Description | Output |
|---|---|---|
| 1. Prepare LeRobot Dataset | Convert your demonstration data to LeRobot v3.0 format | LeRobot dataset directory |
| 2. Prepare Robot Config | Define feature mapping (states / actions / images) from raw keys to unified feature space | configs/robot_configs/<data_name>.yaml |
| 3. Compute Norm Statistics | Calculate normalization statistics over your dataset | assets/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.
- Step 1 — RoboTwin Data: Follow RoboTwin2.0 Preparation to download and convert.
- Step 2 — Robot Config: See
configs/robot_configs/robotwin.yamlfor the RoboTwin feature mapping. - Step 3 — Normalization: Pre-computed stats are provided at
assets/norm_stats/robotwin_50.json. To recompute for a custom task subset, see the Custom Data Guide.
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.