LeRobot 训练与评估
本页面概述 LeRobot 的训练和评估系统:涉及的脚本、配置如何流入流水线,以及训练和评估之间的关系。
系统概览
训练和评估共享一个通用结构:配置数据类驱动所有选择,工厂层实例化数据集、策略和环境,循环处理数据流。评估集成在训练中(定期运行 rollout),也可通过 lerobot-eval 独立运行。
CLI 入口
| 命令 | 脚本 | 配置类 | 主函数 |
|---|---|---|---|
lerobot-train | lerobot/scripts/lerobottrain.py | EvalPipelineConfig | eval_main() |
训练流水线
train() 函数是监督离线训练的单一入口点。它使用 Hugging Face Accelerator 进行设备管理、混合精度和多 GPU 支持。
lerobot-train --policy.type=act --dataset.repo_id=lerobot/pusht --training.output_dir=./output
训练配置
TrainPipelineConfig 是训练的唯一根数据类,包含以下子配置:
- 策略配置:选择策略类型和超参数
- 数据集配置:指定数据集路径或 Hub repo_id
- 训练配置:批量大小、学习率、epoch 数等
- 评估配置:评估频率和 rollout 参数
所有子配置在启动时通过 validate() 方法验证。
优化器和学习率调度器
LeRobot 支持多种优化器和学习率调度器:
- 优化器:AdamW、SGD 等
- 调度器:Cosine annealing、StepLR、Constant 等
- 支持 warmup 阶段
多 GPU 和分布式训练
通过 Hugging Face Accelerator 实现:
- 自动设备放置
- 混合精度训练(FP16/BF16)
- 多 GPU 数据并行
- 梯度累积支持
评估流水线
评估在向量化仿真环境中运行 rollout 并报告汇总指标。
eval() 函数
从 lerobot-eval CLI 调用,也可在训练过程中定期触发:
lerobot-eval --policy.type=act --policy.pretrained_model_name_or_path=./output/checkpoint
rollout()
在所有环境的 VectorEnv 中运行一批 episodes。滚动直到所有环境完成或达到 max_steps,返回形状为 (batch, sequence, *) 的动作、奖励、成功和完成张量。
强化学习
除了监督学习,LeRobot 还支持强化学习流水线:
- HIL-SERL:人类介入的强化学习框架
- TDMPC:基于模型预测控制的强化学习
- 奖励建模:通过
RewardModelConfig支持自定义奖励函数和基于 Hub 的奖励模型共享
策略和处理器连线
训练和评估都使用工厂函数实例化策略及其处理器:
makepolicy():创建仿真环境:根据配置创建策略实例 *makeenv()makeenvprepostprocessors():创建环境和策略之间的预处理器和后处理器
评论