E1 · Train for 200 steps
15 minRun the lerobot-train from the panel (with cpu or cuda). Time it.
Done when: ls outputs/train/act_pusht_teste/checkpoints/ shows 000200 and last.
Lesson 5 · 18 min
LeRobot, from Hugging Face, puts data, policies, and commands for recording, training, and running in one place. In this lesson you train a real ACT policy for a few steps and end up with a checkpoint on disk. No robot and no account needed.
Start the lesson
Goal: install LeRobot 0.6, train a small policy, and understand the record → train → run cycle.
Four commands. The middle two don't need a robot. Click each one.
Recording and running need the arm. Training and evaluating run on any computer.
Click each step.
Since 0.6, the base package is lean: to train, install lerobot[training]. For simulation, use extras like [pusht] or [aloha].
Python 3.12 and PyTorch 2.7 or newer. Some options were renamed: eval_freq became env_eval_freq, and --dataset.vcodec became --dataset.rgb_encoder.vcodec.
The 200 steps in this exercise took 26 s on an NVIDIA GPU (GB10) and 321 s, about 5 minutes, on just the 20-core CPU of the same machine (10/19/2026). A regular laptop will be slower.
Real training is a different scale: the LeRobot docs say training on your own robot takes several hours. The 0.6 hardware guide measures memory and time per policy family.
For this exercise, a CPU is enough. For long training runs, 0.6 supports the same lerobot-train in the cloud with --job.target, through HF Jobs, which is billed by usage and requires an account.
You don't need it for the course: everything here runs locally.
The SO-101 is LeRobot's entry-level arm. With the leader and follower pair, you record your own dataset with lerobot-record and train the same way.
LeLab runs the whole flow in the browser, with no command line, and today it only supports the SO-ARM101.
Same venv as lesson 4. Swap cuda for cpu if you don't have an NVIDIA GPU.
lerobot-train \ --policy.type=act \ --dataset.repo_id=lerobot/pusht \ --steps=200 \ --save_freq=200 \ --log_freq=50 \ --batch_size=8 \ --policy.device=cuda \ --policy.push_to_hub=false \ --wandb.enable=false \ --output_dir=outputs/train/act_pusht_teste \ --job_name=act_pusht_teste
ls outputs/train/act_pusht_teste/checkpoints/ ls outputs/train/act_pusht_teste/checkpoints/last/pretrained_model/
lerobot-record \ --robot.type=so101_follower \ --robot.port=<follower port> \ --teleop.type=so101_leader \ --teleop.port=<leader port> \ --dataset.repo_id=<your username>/meu-dataset \ --dataset.num_episodes=5 \ --dataset.single_task="Pick up the black cube" \ --dataset.streaming_encoding=true \ --dataset.encoder_threads=2
INFO ... cfg.steps=200 (200) INFO ... dataset.num_frames=25650 (26K) INFO ... dataset.num_episodes=206 INFO ... num_learnable_params=51588994 (52M) INFO ... step:50 ... loss:14.587 ... INFO ... step:100 ... loss:4.694 ... INFO ... step:150 ... loss:3.878 ... INFO ... step:200 ... loss:3.473 ... mem_gb:0.95 INFO ... Checkpoint policy after step 200 INFO ... End of training $ ls outputs/train/act_pusht_teste/checkpoints/ 000200 last $ ls outputs/train/act_pusht_teste/checkpoints/last/pretrained_model/ config.json model.safetensors policy_postprocessor.json ... train_config.json
LeRobot 0.6.1, NVIDIA GB10 GPU: 26 s total. CPU only: 321 s, final loss 3.536. Lines shortened with "...". The first time, it also downloads the ResNet-18 weights that ACT uses for vision.
--policy.push_to_hub=false: without it, training stops right at the start with ValueError: 'repo_id' argument missing. Please specify it to push the model to the hub. (tested on 10/19/2026): by default it wants to push the policy to the Hub.--policy.device=cuda without an NVIDIA GPU: swap it for cpu.About 5 minutes on CPU, under 1 minute on GPU.
Run the lerobot-train from the panel (with cpu or cuda). Time it.
Done when: ls outputs/train/act_pusht_teste/checkpoints/ shows 000200 and last.
In the log, find the step:50 and step:200 lines and write down both losses.
Done when: the loss at step 200 is lower than at step 50, and you noted how long the training took on your machine.
Repeat with --steps=5000 --save_freq=5000 --batch_size=32 and a different --output_dir. Keep the checkpoint: lesson 6 compares the two.
Done when: the checkpoints/005000 folder exists (here it took 474 s on the GPU, with a final loss of 0.329).
The explanation appears after your answer.
Question 1 of 4
Which commands in the cycle run without a robot?skill
Question 2 of 4
Where is the checkpoint after training?
Question 3 of 4
The loss dropped from 14.6 to 3.5. What does that guarantee?
Question 4 of 4
What is the dagger strategy in lerobot-rollout for?
Pick an option. The explanation appears after your attempt.