IT评测·应用市场-qidao123.com

标题: NVIDIA Isaac GR00T N1:天下首个开源通用人形呆板人底子模型 [打印本页]

作者: 东湖之滨    时间: 2025-3-20 11:27
标题: NVIDIA Isaac GR00T N1:天下首个开源通用人形呆板人底子模型
NVIDIA Isaac GR00T N1:天下首个开源通用人形呆板人底子模型

NVIDIA近来发布了一个重磅开源项目——Isaac GR00T N1,这是天下上第一个开源的通用人形呆板人推理和技能底子模型。本文将详细先容这个革命性项目的背景、架构、部署方法以及使用流程,资助研究人员和开发者快速上手这一强盛工具。
项目概述

NVIDIA Isaac GR00T N1是一个跨实验模型,可以吸取多模态输入(包括语言和图像),用于在各种环境中实验操作任务。该模型基于广泛的人形数据集举行训练,这些数据集包括真实捕获的数据、使用NVIDIA Isaac GR00T Blueprint组件生成的合成数据以及互联网规模的视频数据。


GR00T N1的特点在于它可以通过后期训练适应特定的实验方式、任务和环境。这意味着研究人员可以将这个底子模型应用到各种差别的呆板人平台上,并针对特定任务举行微调,大大低落了开发复杂呆板人应用的门槛。
技能架构

GR00T N1的神经网络架构是视觉-语言底子模型和扩散变换器头的组合,用于去噪连续动作。下图展示了该架构的体现图:

从上图可以看出,整个系统分为几个关键部门:
这种架构设计使GR00T N1可以大概明白复杂的视觉场景和语言指令,并将其转化为准确的呆板人动作序列。
目的用户

GR00T N1紧张面向人形呆板人范畴的研究人员和专业人士。该项目提供了一系列工具,使用户可以大概:

项目的重点是通过微调实现呆板人举动的定制化,这使得即使是资源有限的研究团队也能快速开发出复杂的呆板人应用。
环境要求

在开始使用GR00T N1之前,请确保您的系统满足以下要求:

请注意,CUDA版本必须是12.4,否则在配置flash-attn模块时可能会遇到困难。
安装指南

1. 克隆代码库

首先,克隆GitHub代码库并进入项目目次:
  1. git clone https://github.com/NVIDIA/Isaac-GR00T
  2. cd Isaac-GR00T
复制代码
2. 创建Conda环境并安装依靠

创建一个新的Conda环境并安装所需的依靠项:
  1. conda create -n gr00t python=3.10
  2. conda activate gr00t
  3. pip install --upgrade setuptools
  4. pip install -e .
  5. pip install --no-build-isolation flash-attn==2.7.1.post4
复制代码
使用流程

使用GR00T N1的一般流程如下:
数据加载指南

在使用GR00T N1之前,您需要了解怎样加载和处置惩罚数据。以下内容基于0_load_dataset.ipynb教程。
LeRobot格式

GR00T N1使用LeRobot格式加载数据。本教程将展示怎样使用数据加载器加载LeRobot格式的数据。

加载数据集的三个关键要素

要加载数据集,我们需要定义三个关键要素:
  1. from gr00t.data.dataset import LeRobotSingleDataset
  2. from gr00t.data.embodiment_tags import EmbodimentTag
  3. from gr00t.data.dataset import ModalityConfig
  4. from gr00t.experiment.data_config import DATA_CONFIG_MAP
  5. # 获取数据配置
  6. data_config = DATA_CONFIG_MAP["gr1_arms_only"]
  7. # 获取模态配置和转换
  8. modality_config = data_config.modality_config()
  9. transforms = data_config.transform()
  10. # 这是一个LeRobotSingleDataset对象,从给定的数据集路径加载数据
  11. dataset = LeRobotSingleDataset(
  12.     dataset_path="demo_data/robot_sim.PickNPlace",
  13.     modality_configs=modality_config,
  14.     transforms=transforms,
  15.     embodiment_tag=EmbodimentTag.GR1,  # 要使用的实施
  16. )
  17. # 这是访问数据的示例
  18. dataset[5]
复制代码
加载数据集后,您可以访问其中的样本,每个样本包罗视频、状态和动作等信息。
数据格式详解

GR00T N1使用LeRobot兼容数据格式,但添加了更详细的元数据和解释模式。以下内容基于LeRobot_compatible_data_schema.md文档。
数据目次结构

数据集应遵循以下目次结构:
  1. .
  2. ├─meta
  3. │ ├─episodes.jsonl
  4. │ ├─modality.json  # -> GR00T LeRobot特有
  5. │ ├─info.json
  6. │ └─tasks.jsonl
  7. ├─videos
  8. │ └─chunk-000
  9. │   └─observation.images.ego_view
  10. │     └─episode_000001.mp4
  11. │     └─episode_000000.mp4
  12. └─data
  13.   └─chunk-000
  14.     ├─episode_000001.parquet
  15.     └─episode_000000.parquet
复制代码
核心文件阐明


modality.json配置详解

这个文件提供了关于状态和动作模态的详细元数据,使得:

配置文件格式示例:
  1. {
  2.     "state": {
  3.         "<state_key>": {
  4.             "start": <int>,         // 状态数组中的起始索引
  5.             "end": <int>,           // 状态数组中的结束索引
  6.             "rotation_type": <str>,  // 可选:指定旋转格式
  7.             "dtype": <str>,         // 可选:指定数据类型
  8.             "range": <tuple[float, float]>, // 可选:指定模态范围
  9.         }
  10.     },
  11.     "action": {
  12.         "<action_key>": {
  13.             "start": <int>,         // 动作数组中的起始索引
  14.             "end": <int>,           // 动作数组中的结束索引
  15.             "absolute": <bool>,      // 可选:true表示绝对值,false表示相对/增量值
  16.             "rotation_type": <str>,  // 可选:指定旋转格式
  17.             "dtype": <str>,         // 可选:指定数据类型
  18.             "range": <tuple[float, float]>, // 可选:指定模态范围
  19.         }
  20.     },
  21.     "video": {
  22.         "<new_key>": {
  23.             "original_key": "<original_video_key>"
  24.         }
  25.     },
  26.     "annotation": {
  27.         "<annotation_key>": {}  // 空字典,与其他模态保持一致
  28.     }
  29. }
复制代码
模型推理

一旦您的数据准备就绪,您可以使用GR00T N1模型举行推理。以下内容基于1_gr00t_inference.ipynb教程。
加载预训练模型

GR00T N1模型托管在Huggingface上,您可以使用以下代码加载预训练模型:
  1. from gr00t.model.policy import Gr00tPolicy
  2. from gr00t.data.embodiment_tags import EmbodimentTag
  3. # 1. 加载模态配置和转换,或使用上面的配置
  4. modality_config = ComposedModalityConfig(...)
  5. transforms = ComposedModalityTransform(...)
  6. # 2. 加载数据集
  7. dataset = LeRobotSingleDataset(.....<与上面的加载部分类似>....)
  8. # 3. 加载预训练模型
  9. policy = Gr00tPolicy(
  10.     model_path="nvidia/GR00T-N1-2B",
  11.     modality_config=modality_config,
  12.     modality_transform=transforms,
  13.     embodiment_tag=EmbodimentTag.GR1,
  14.     device="cuda"
  15. )
  16. # 4. 运行推理
  17. action_chunk = policy.get_action(dataset[0])
复制代码
推理服务

您还可以使用提供的脚本运行推理服务,该服务可以在服务器模式或客户端模式下运行:
  1. # 服务器模式
  2. python scripts/inference_service.py --model_path nvidia/GR00T-N1-2B --server
  3. # 在不同的终端中,运行客户端模式向服务器发送请求
  4. python scripts/inference_service.py --client
复制代码
模型微调

GR00T N1支持在自定义数据集上举行微调,以适应特定的呆板人和任务。以下内容基于2_finetuning.ipynb和3_new_embodiment_finetuning.ipynb教程。
基本微调

您可以使用以下脚本在示例数据集上微调模型:
  1. # 首先运行--help查看可用参数
  2. python scripts/gr00t_finetune.py --help
  3. # 然后运行脚本
  4. python scripts/gr00t_finetune.py --dataset-path ./demo_data/robot_sim.PickNPlace --num-gpus 1
复制代码
下载示例数据集

您可以从Huggingface下载示例数据集:
  1. huggingface-cli download nvidia/PhysicalAI-Robotics-GR00T-X-Embodiment-Sim \
  2.   --repo-type dataset \
  3.   --include "gr1_arms_only.CanSort/**" \
  4.   --local-dir $HOME/gr00t_dataset
复制代码
新实验微调

如果您有一个新的呆板人实验,您可以使用3_new_embodiment_finetuning.ipynb中的方法举行微调。这涉及到:
硬件性能考虑


保举的微调配置是将批量大小提拔到最大,并训练20k步。
高级明白

以下内容基于4_deeper_understanding.md文档,提供了关于GR00T N1更深入的技能细节。
实验动作头微调

GR00T设计为通过专门的动作头与差别类型的呆板人(实验)一起工作。在微调时,您需要根据数据集指定要训练的实验头:
高级调解参数

模型有几个可以独立微调的组件。您可以在GR00T_N1.from_pretrained函数中配置这些参数:
数据转换明白

数据处置惩罚管道中使用了四种紧张类型的转换:

策略部署

以下内容基于5_policy_deployment.md文档,提供了关于怎样部署训练好的策略的指南。
   注意:本教程要求用户拥有训练好的模型查抄点和物理So100 Lerobot呆板人来运行策略。
  启动策略服务器

运行以下下令启动策略服务器:
  1. python scripts/inference_service.py --server \
  2.     --model_path <PATH_TO_YOUR_CHECKPOINT> \
  3.     --embodiment_tag new_embodiment \
  4.     --data_config so100 \
  5.     --denoising_steps 4
复制代码

客户端实现

客户端节点可以使用from gr00t.eval.service import ExternalRobotInferenceClient类实现。这个类是一个独立的客户端-服务器类,可用于与策略服务器通信,get_action()端点是唯一的接口:
  1. from gr00t.eval.service import ExternalRobotInferenceClient
  2. from typing import Dict, Any
  3. raw_obs_dict: Dict[str, Any] = {} # 填写空白
  4. policy = ExternalRobotInferenceClient(host="localhost", port=5555)
  5. raw_action_chunk: Dict[str, Any] = policy.get_action(raw_obs_dict)
复制代码
用户可以复制该类并在单独的隔离环境中实现自己的客户端节点。
So100 Lerobot手臂示例

我们为So100 Lerobot手臂提供了一个示例客户端节点实现。有关更多详细信息,请参考示例脚本scripts/eval_gr00t_so100.py。
用户可以运行以下下令启动客户端节点:
  1. python examples/eval_gr00t_so100.py \
  2. --use_policy --host <YOUR_POLICY_SERVER_HOST> \
  3. --port <YOUR_POLICY_SERVER_PORT> \
  4. --camera_index <YOUR_CAMERA_INDEX>
复制代码
这将激活呆板人,并调用策略服务器的action = get_action(obs)端点获取动作,然后在呆板人上实验动作。
模型评估

要对模型举行离线评估,项目提供了一个脚本,该脚本评估模型在数据集上的体现并绘制结果:
  1. # 运行新训练的模型
  2. python scripts/inference_service.py --server \
  3.   --model_path <MODEL_PATH> \
  4.   --embodiment_tag new_embodiment
  5. # 运行离线评估脚本
  6. python scripts/eval_policy.py --plot \
  7.   --dataset_path <DATASET_PATH> \
  8.   --embodiment_tag new_embodiment
复制代码
您将看到真实值与预测动作的对比图,以及动作的未归一化MSE。这将让您了解策略在数据集上的体现怎样。
常见题目解答

我有自己的数据,下一步应该做什么来举行微调?

本项目假设您的数据已经按照LeRobot格式组织。请参考getting_started/LeRobot_compatible_data_schema.md了解怎样组织数据。
什么是模态配置、实验标签和转换配置?


更多详细信息,请参阅getting_started/4_deeper_understanding.md。
Gr00tPolicy的推理速率怎样?

根据硬件的差别,推理速率会有所变革,但在现代GPU上,单个样本的推理速率通常充足快,可以满足实时控制需求。
总结

NVIDIA Isaac GR00T N1是一个突破性的开源项目,为人形呆板人研究和开发提供了强盛的底子模型。通过提供预训练模型和简化的微调流程,它使研究人员可以大概快速开发复杂的呆板人应用,而无需从头开始训练模型。
该项目的开源性质和详细文档使其成为人形呆板人研究社区的宝贵资源。无论您是经验丰富的呆板人研究人员照旧刚刚进入该范畴的新手,GR00T N1都提供了工具和资源,资助您将先辈的AI本领应用到呆板人平台上。
要开始使用,只需克隆GitHub堆栈,设置环境,并按照提供的教程举行操作。随着更多研究人员采用和贡献这个项目,我们可以期待看到人形呆板人范畴的快速进步和创新。
参考资源



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4