从零复现 gr00t17-lerobot-libero_goal-640:20,000 步微调 GR00T N1.7 的完整训练管线指南
【免费下载链接】gr00t17-lerobot-libero_goal-640项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/gr00t17-lerobot-libero_goal-640
想亲手复现 NVIDIA 的 GR00T N1.7 机器人大模型微调?这篇GR00T N1.7 微调完整指南将带你从零走通 gr00t17-lerobot-libero_goal-640 的训练管线:从环境搭建、仓库克隆,到 20,000 步微调 LIBERO Goal 任务的参数解析与命令启动,全程基于仓库内真实配置,新手也能照抄作业。
gr00t17-lerobot-libero_goal-640 是什么?
简单说,这是一个基于 LeRobot 框架训练并发布的GR00T N1.7 微调模型仓库,镜像自 NVIDIA。GR00T N1.7 是 NVIDIA 开源的跨本体(cross-embodiment)人形机器人基础模型,采用 Cosmos-Reason2/Qwen3-VL 视觉语言主干 + 流匹配动作 Transformer(flow-matching action transformer),根据视觉、语言和本体感受预测机器人动作。
本仓库则是在LIBERO Goal 基准数据集上,用 20,000 步训练出的微调版本,仓库核心文件包括:
| 文件 | 作用 |
|---|---|
model.safetensors | 微调后的模型权重 |
config.json | 模型结构与微调策略配置 |
train_config.json | 完整训练配置(数据集、优化器、调度器等) |
policy_preprocessor.json | 输入预处理管线定义 |
policy_postprocessor.json | 动作输出后处理管线定义 |
README.md | 模型卡与使用说明 |
复现前准备:安装 LeRobot 并克隆仓库
训练与推理都依赖 LeRobot(本模型基于 0.6.1 版本)。建议使用官方提供的 GPU 镜像huggingface/lerobot-gpu:latest,可省去大量依赖安装时间。
克隆本仓库:
git clone https://gitcode.com/hf_mirrors/nvidia/gr00t17-lerobot-libero_goal-640克隆后你会在目录中看到上文表格中的文件,其中train_config.json是复现训练的关键——它记录了本次微调的全部超参数。
看懂训练配置:20,000 步微调核心参数解析
打开train_config.json,你会发现这是一份"开箱即用"的完整配置。下面拆解几个最关键的部分。
数据集与任务定义
本次微调使用 LIBERO Goal 数据集(不含 no-op 动作的 1.0.0 版):
- 数据集:
IPEC-COMMUNITY/libero_goal_no_noops_1.0.0_lerobot - 任务类型:LIBERO Goal 长程操作任务
- 数据增强:启用了 color jitter(亮度 0.7~1.3、对比度 0.6~1.4、饱和度 0.5~1.5 等),增强泛化能力
- 样本平衡:同时启用了数据集与轨迹级权重平衡(
balance_dataset_weights/balance_trajectory_weights)
输入输出特征:模型的"眼睛"与"手脚"
从config.json可以看到模型消费的特征:
| 特征 | 类型 | 形状 |
|---|---|---|
observation.images.wrist_image | 腕部相机图像 | (256, 256, 3) |
observation.images.image | 主相机图像 | (256, 256, 3) |
observation.state | 机器人状态 | (8,) |
action | 输出动作 | (7,) |
训练时以 1 步观测预测 16 步动作(n_obs_steps=1,n_action_steps=16),图像统一缩放到 256×256。后处理阶段通过policy_postprocessor.json中的 libero 专用解码,对夹爪动作做二值化处理,适配 LIBERO 仿真环境。
微调策略:哪些模块被解锁?
这是 GR00T 微调的核心精髓。在 3B 参数基础模型(nvidia/GR00T-N1.7-3B)之上,本次只解锁了部分模块:
| 模块 | 是否微调 |
|---|---|
| 大语言模型(LLM) | 否 |
| 视觉编码器(Visual) | 否 |
| 投影器(Projector) | 是 |
| 流匹配扩散模型 | 是 |
| VLLN(视觉语言定位网络) | 是 |
也就是说,20,000 步微调主要训练投影器、扩散模型与 VLLN,冻结 LLM 和视觉主干。这样既大幅降低显存与训练成本,又能保留基础模型的通用能力,属于典型的高效微调方案(未使用 LoRA,use_peft=false)。
优化器与学习率设置
{ "optimizer": "adamw", "lr": 0.0001, "weight_decay": 1e-05, "grad_clip_norm": 1.0, "scheduler": "cosine", "num_warmup_steps": 1000 }- 优化器:AdamW,学习率 1e-4,权重衰减 1e-5
- 调度器:cosine 余弦退火,前 1000 步预热
- 全局批大小:320(实际布局为 2×320,即每卡 320 的并行策略)
- 随机种子:42,确保可复现
- 精度:bf16 混合精度(
use_bf16=true) - 步数:20000 步,每 1000 步保存一次检查点
一键启动训练:lerobot-train 命令详解
环境就绪后,复现训练只需一条命令。参照README.md中的标准写法:
lerobot-train \ --dataset.repo_id=${HF_USER}/<dataset> \ --policy.type=groot \ --output_dir=outputs/train/<policy_repo_id> \ --job_name=lerobot_training \ --policy.device=cuda \ --policy.repo_id=${HF_USER}/<policy_repo_id> \ --wandb.enable=true如果你希望严格复现本仓库的训练,可以直接以train_config.json为基准,把其中的output_dir(/checkpoints/gr00t-n17-libero-oss-h16-adamw-gbs640-20k-...)、数据集路径等替换为你本机的实际路径即可。训练会以save_freq=1000的频率把检查点写入outputs/train/<policy_repo_id>/checkpoints/目录。
提示:训练命令中
--wandb.enable=true会开启 Weights & Biases 在线监控,方便实时观察 loss 曲线;不需要可改为false。
训练过程监控与检查点管理
- 日志频率:每 10 步输出一次训练日志(
log_freq=10) - 保存频率:每 1000 步保存一个检查点(
save_freq=1000),训练 20,000 步共产生约 20 个检查点 - 恢复训练:配置中
resume=false,如训练中断可将train_config.json中的resume改为true,并从最近检查点继续
部署验证:用 lerobot-rollout 运行策略
训练完成后(或直接使用本仓库权重),可以在仿真环境中验证策略表现。参照README.md的 rollout 命令:
lerobot-rollout \ --strategy.type=base \ --robot.type=<your_robot_type> \ --robot.port=<your_robot_port> \ --robot.cameras="{ <camera_1>: {type: opencv, index_or_path: <index_or_path>, width: 640, height: 480, fps: 30}, <camera_2>: {type: opencv, index_or_path: <index_or_path>, width: 640, height: 480, fps: 30}}" \ --policy.path=nvidia/gr00t17-lerobot-libero_goal-640 \ --task="<your_task_description>" \ --duration=60注意:相机名称必须与训练时的观测键一致(wrist_image与image),否则推理会报错。--strategy.type=base表示不录制回合,策略会持续运行直到达到指定时长。
常见问题与调优建议
1. 显存不够怎么办?20,000 步微调使用 bf16 且冻结 LLM 与视觉编码器,显存压力已大幅降低。若仍不足,可调小全局批大小(train_config.json中的batch_size),或开启 LoRA(use_peft=true、设置lora_rank)。
2. 想微调其他任务?只需替换数据集为你的 LeRobot 格式数据集,并保持输入输出特征形状一致(双相机 + 8 维状态 + 7 维动作)。若任务不同,请同步修改policy_postprocessor.json中的动作解码配置。
3. 如何提升成功率?优先关注数据质量与平衡(本仓库启用了轨迹级权重平衡),其次是图像增强强度。推理时也可以调整num_inference_timesteps(当前为 4)在速度与精度间权衡。
4. 如何查看完整超参?所有超参都在仓库的train_config.json与config.json中,预处理/后处理细节分别见policy_preprocessor.json与policy_postprocessor.json,配合README.md一起阅读,即可完全复现这条GR00T N1.7 微调训练管线。
从克隆仓库到 20,000 步训练完成,整个流程并不复杂——关键是把train_config.json里的每项参数吃透。现在就去试试吧,祝你一次跑通!🚀
【免费下载链接】gr00t17-lerobot-libero_goal-640项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/gr00t17-lerobot-libero_goal-640
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考