{{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:策略架构|策略架构]]