LeRobot SO-101 机械臂的训练后 Isaac GR00T N1.5
引言
NVIDIA Isaac GR00T (通用机器人 00 技术) 是一个用于构建机器人基础模型和数据管道的研发平台,旨在加速智能、适应性机器人的创建。
今天,我们宣布推出 Isaac GR00T N1.5,这是 Isaac GR00T N1(世界上第一个用于通用人形机器人推理和技能的开放式基础模型)的首次重大更新。这个跨具身模型处理多模态输入,包括语言和图像,以在不同环境中执行操作任务。它可以通过后期训练适应特定的具身、任务和环境。
在这篇博客中,我们将演示如何使用单个 SO-101 机械臂的遥操作数据对 GR00T N1.5 进行后期训练(微调)。
GR00T N1.5 的技术博客:https://research.nvidia.com/labs/gear/gr00t-n1_5/
分步教程
现在,GR00T N1.5 可供使用各种机器人外形尺寸的开发人员使用,并且可以使用价格实惠的开源 LeRobot SO-101 机械臂轻松进行微调和适配。
这种灵活性得益于 EmbodimentTag
系统,该系统允许对不同机器人平台模型进行无缝自定义,使业余爱好者、研究人员和工程师能够根据自己的硬件调整高级人形推理和操作能力。
步骤 0:安装
在继续安装之前,请检查您是否满足先决条件。
0.1 克隆 Isaac-GR00T 仓库
git clone https://github.com/NVIDIA/Isaac-GR00T
cd Isaac-GR00T
0.2 创建环境
conda create -n gr00t python=3.10
conda activate gr00t
pip install --upgrade setuptools
pip install -e .[base]
pip install --no-build-isolation flash-attn==2.7.1.post4
步骤 1:数据集准备
用户可以使用任何 LeRobot 数据集微调 GROOT N1.5。在本教程中,我们将使用桌面清理任务作为微调示例。
值得注意的是,SO-100 或 SO-101 的数据集不在 GR00T N1.5 的初始预训练中。因此,我们将把它训练为 new_embodiment
。
1.1 创建或下载您的数据集
对于本教程,您可以按照这些说明(推荐)创建自己的自定义数据集,或者从 Hugging Face 下载 so101-table-cleanup 数据集。`--local-dir` 参数指定数据集将保存在您机器上的位置。
huggingface-cli download \
--repo-type dataset youliangtan/so101-table-cleanup \
--local-dir ./demo_data/so101-table-cleanup
1.2 配置模态文件
modality.json
文件提供了有关状态和动作模态的附加信息,使其“GR00T 兼容”。使用此命令将 getting_started/examples/so100_dualcam__modality.json
复制到数据集 <DATASET_PATH>/meta/modality.json
cp getting_started/examples/so100_dualcam__modality.json ./demo_data/so101-table-cleanup/meta/modality.json
注意:对于像 so100_strawberry_grape 这样的单摄像头设置,运行
cp getting_started/examples/so100__modality.json ./demo_data/<DATASET_PATH>/meta/modality.json
完成这些步骤后,可以使用 GR00T LeRobotSingleDataset
类加载数据集。这里显示了一个加载数据集的示例脚本
python scripts/load_dataset.py --dataset-path ./demo_data/so101-table-cleanup --plot-state-action --video-backend torchvision_av
步骤 2:微调模型
可以使用 Python 脚本 scripts/gr00t_finetune.py
执行 GR00T N1.5 的微调。要开始微调,请从终端执行以下命令
python scripts/gr00t_finetune.py \
--dataset-path ./demo_data/so101-table-cleanup/ \
--num-gpus 1 \
--output-dir ./so101-checkpoints \
--max-steps 10000 \
--data-config so100_dualcam \
--video-backend torchvision_av
提示:默认的微调设置需要约 25G 的 VRAM。如果您的 VRAM 不足,请尝试在 gr00t_finetune.py
脚本中添加 --no-tune_diffusion_model
标志。
步骤 3:开环评估
训练完成后,您的微调策略生成后,您可以通过运行以下命令在开环设置中可视化其性能
python scripts/eval_policy.py --plot \
--embodiment_tag new_embodiment \
--model_path <YOUR_CHECKPOINT_PATH> \
--data_config so100_dualcam \
--dataset_path ./demo_data/so101-table-cleanup/ \
--video_backend torchvision_av \
--modality_keys single_arm gripper
恭喜!您已成功在新的具身机器人上微调了 GR00T-N1.5。
步骤 4:部署
成功微调和评估您的策略后,最后一步是将其部署到您的物理机器人上进行实际执行。
要连接您的 SO-101 机器人并开始评估,请在终端中执行以下命令
- 首先将策略作为服务器运行
python scripts/inference_service.py --server \
--model_path <PATH_TO_YOUR_CHECKPOINT> \
--embodiment-tag new_embodiment \
--data-config so100_dualcam \
--denoising-steps 4
- 在单独的终端中,将评估脚本作为客户端运行
python getting_started/examples/eval_lerobot.py \
--robot.type=so100_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."
由于我们使用不同的语言指令对 GRO0T-N1.5 进行了微调,用户可以通过使用数据集中的其中一个任务提示来引导策略,例如
“拿起胶带并放入笔筒中。”
有关详细的分步教程,请查看:https://github.com/NVIDIA/Isaac-GR00T/tree/main/getting_started
🎉 祝您编程愉快!💻🛠️
今天就开始吧
准备好使用 NVIDIA 的 GR00T N1.5 提升您的机器人项目了吗?请查阅这些基本资源
- GR00T N1.5 模型:直接从 Hugging Face 下载最新模型。
- 微调资源:在我们的 GitHub 上查找微调的示例数据集和 PyTorch 脚本。
- 贡献数据集:通过将您自己的数据集贡献给 Hugging Face 来赋能机器人社区。
- LeRobot 黑客马拉松:加入全球社区并参加即将到来的 LeRobot 黑客马拉松,施展您的技能。
关注 Hugging Face 上的 NVIDIA,了解最新进展。