{{htmlmetatags>metatag-robots=(index,follow)
metatag-keywords=(LeRobot,训练,评估,lerobot-train,lerobot-eval,Accelerator,策略)
metatag-description=(LeRobot 训练和评估系统:配置驱动训练、分布式训练支持、仿真环境中的策略评估)
}}
====== LeRobot 训练与评估 ======
本页面概述 LeRobot 的训练和评估系统:涉及的脚本、配置如何流入流水线,以及训练和评估之间的关系。
[[机器人:lerobot:home|返回概述]]
===== 系统概览 =====
训练和评估共享一个通用结构:配置数据类驱动所有选择,工厂层实例化数据集、策略和环境,循环处理数据流。评估集成在训练中(定期运行 rollout),也可通过 ''lerobot-eval'' 独立运行。
===== CLI 入口 =====
^ 命令 ^ 脚本 ^ 配置类 ^ 主函数 ^
| ''lerobot-train'' | ''lerobot/scripts/lerobot_train.py'' | ''TrainPipelineConfig'' | ''train()'' |
| ''lerobot-eval'' | ''lerobot/scripts/lerobot_eval.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 的奖励模型共享
===== 策略和处理器连线 =====
训练和评估都使用工厂函数实例化策略及其处理器:
* ''make_policy()'':根据配置创建策略实例
* ''make_env()'':创建仿真环境
* ''make_env_pre_post_processors()'':创建环境和策略之间的预处理器和后处理器
===== 相关页面 =====
* [[机器人:lerobot:home|LeRobot 框架概述]]
* [[机器人:lerobot:数据集|数据集]]
* [[机器人:lerobot:策略架构|策略架构]]