NVIDIA Isaac GR00T N1.5 人形机器人强化学习入门教程(四)Lerobot、宇树 G1 等不同形态机器人微调教程
系列文章目录
目录
系列文章目录
前言
一、Lerobot So100/So101 微调教程
1.1 数据集
1.2 微调
1.3 开环评估
1.4 部署
二、Unitree G1 微调
2.1 下载数据集
2.2 尝试加载数据集并可视化它
2.3 微调
2.4 开环评估
2.5 部署
前言
本笔记本是一份关于如何在新的数据集上对GR00T-N1预训练模型进行微调的教程。
一、Lerobot So100/So101 微调教程
GR00T-N1.5 适用于各种机器人形态的用户。基于 Huggingface 的低成本 So101 Lerobot 机械臂,用户可通过 new_embodiment 标签在自己的机器人上对 GR00T-N1.5 进行微调。
So100 Strawberry and Grape Picking | So101 Table Cleanup Task |
---|---|
{width=400} | {width=400} |
Dataset | Observation | Viz Link |
---|---|---|
so101-table-cleanup | Dual camera views of table cleanup task | Link |
so100_strawberry_grape | Single camera view of strawberry and grape picking | Link |
tictac-bot | Single camera view of a tic-tac-toe board | Link |
1.1 数据集
用户可以使用任何 lerobot 数据集进行微调。在本教程中,我们将首先使用一个示例数据集:so101-table-cleanup
请注意,此实现未包含在我们的预训练数据集混合中。
首先,下载数据集
huggingface-cli download \--repo-type dataset youliangtan/so101-table-cleanup \--local-dir ./demo_data/so101-table-cleanup
其次,复制模态文件
modality.json 文件提供了关于状态和动作模态的额外信息,以使其与“GR00T”兼容。将 examples/so100_dualcam__modality.json 复制到数据集 <DATASET_PATH>/meta/modality.json。
对于类似 so101-table-cleanup 数据集的双摄像头设置,请执行以下操作:
cp examples/so100_dualcam__modality.json ./demo_data/so101-table-cleanup/meta/modality.json
对于单摄像头设置,如 so100_strawberry_grape 数据集,请执行以下操作:
cp examples/so100__modality.json ./demo_data/so100_strawberry_grape/meta/modality.json
然后我们可以使用LeRobotSingleDataset类加载数据集。
1.2 微调
微调可以通过使用我们的微调脚本/gr00t_finetune.py来完成,因为它支持“new-embodiment”标签。
python scripts/gr00t_finetune.py \--dataset-path /datasets/so101-table-cleanup/ \--num-gpus 1 \--batch-size 64 \--output-dir ~/so101-checkpoints \--max-steps 10000 \--data-config so100_dualcam \--video-backend torchvision_av
将批处理大小调整为与您的GPU内存匹配。
1.3 开环评估
训练完成后,您可以运行以下命令来可视化微调后的策略。
python scripts/eval_policy.py --plot \--embodiment_tag new_embodiment \--model_path <YOUR_CHECKPOINT_PATH> \--data_config so100_dualcam \--dataset_path /datasets/so101-table-cleanup/ \--video_backend torchvision_av \--modality_keys single_arm gripper
这是在训练策略7000步后的结果。
经过更多步骤的训练后,模型性能将显著提升。
太棒了!您已成功在新的实现上对GR00T-N1.5进行了微调。
1.4 部署
首先,确保数据可重放,请参考lerobot文档:https://huggingface.co/docs/lerobot/so101
在机器人上评估策略:
python eval_lerobot.py \--robot.type=so101_follower \--robot.port=/dev/ttyACM0 \--robot.id=lil_guy \--robot.cameras="{ wrist: {type: opencv, index_or_path: 9, width: 640, height: 480, fps: 30}, front: {type: opencv, index_or_path: 15, width: 640, height: 480, fps: 30}}" \--policy_host=10.112.209.136 \--lang_instruction="Grab pens and place into pen holder."
有关部署的更多详细信息,请参阅笔记本:5_policy_deployment.md
二、Unitree G1 微调
本节展示如何在 Unitree G1 机器人上进行微调,作为新的实现方式。数据集可从以下链接获取:nvidia/PhysicalAI-Robotics-GR00T-Teleop-G1
规格:
- 观察:43 维向量化状态(全身和双手的关节位置)
- 动作:43 维向量化动作(全身和双手的关节位置)
- 视频:RGB 视频,分辨率为 640x480,帧率为 20fps
- 语言指令:
- “从桌子上拿起苹果,把它放进篮子里。”
- “从桌子上拿起梨并放入篮子。”
- “从桌子上拿起葡萄并放入篮子。”
- “从桌子上拿起星果并放入篮子。”
2.1 下载数据集
huggingface-cli download \--repo-type dataset nvidia/PhysicalAI-Robotics-GR00T-Teleop-G1 \--local-dir ./datasets/
2.2 尝试加载数据集并可视化它
示例:加载苹果数据集的第一集
python scripts/load_dataset.py --dataset-path datasets/PhysicalAI-Robotics-GR00T-Teleop-G1/g1-pick-apple/ --plot-state-action### Similar for other fruits
# Switch to other fruits -- pear, grapes, starfruit
·您应看到以下图表:
2.3 微调
在此,我们可以提供用于微调的數據集列表。我们将使用包含苹果、梨、葡萄和星果采摘任务的混合数据集对模型进行微调。
dataset_list=("datasets/PhysicalAI-Robotics-GR00T-Teleop-G1/g1-pick-apple/""datasets/PhysicalAI-Robotics-GR00T-Teleop-G1/g1-pick-pear/""datasets/PhysicalAI-Robotics-GR00T-Teleop-G1/g1-pick-grapes/""datasets/PhysicalAI-Robotics-GR00T-Teleop-G1/g1-pick-starfruit/"
)python scripts/gr00t_finetune.py \--dataset-path ${dataset_list[@]} \--num-gpus 1 --batch-size 95 --output-dir ~/checkpoints/full-g1-mix-fruits/ \--data-config unitree_g1 --max-steps 15000
注意:由于该数据集采用H.264编码格式录制,因此在加载视频时需使用decord后端。
2.4 开环评估
示例:评估苹果数据集
python scripts/eval_policy.py --plot \--embodiment_tag new_embodiment \--model_path <YOUR_CHECKPOINT_PATH> \--data_config unitree_g1 \--dataset_path datasets/PhysicalAI-Robotics-GR00T-Teleop-G1/g1-pick-apple/ \--video_backend decord \--modality_keys left_arm right_arm
我们可以看出,策略对动作的预测似乎与真实情况非常接近,这表明微调是成功的。然而,对于策略的实际性能,我们需要在真实机器人上进行评估。
2.5 部署
G1 的部署脚本在此未提供。但该管道与 so100 微调管道类似。