首页 / 资讯中心 / 文章详情

GR00T N1 数据工程实录:88 小时遥操作如何裂变成 78 万条轨迹——潜动作标注、神经轨迹、DexMimicGen 三条产线的完整拆解

GR00T N1 数据工程实录:88 小时遥操作如何裂变成 78 万条轨迹——潜动作标注、神经轨迹、DexMimicGen 三条产线的完整拆解 ★ FEATURED ARTICLE
GR00T N1 数据工程实录88 小时遥操作如何裂变成 78 万条轨迹——潜动作标注、神经轨迹、DexMimicGen 三条产线的完整拆解本文以数据工程师的视角拆解 GR00T N1 的训练数据是怎么从无到有生产出来的。所有数字均出自论文正文与附录代码与数据样例对照官方仓库 Isaac-GR00T。最后一节回到启元 Q1。一、先看账本GR00T N1 的数据资产负债表GR00T N1 论文有一个基本判断具身智能的瓶颈不在模型架构而在数据——互联网上不存在机器人行为的语料库。模型侧它的答案是双系统VLM 理解场景Flow-Matching DiT 生成动作但真正让这套架构跑起来的是数据侧一条覆盖三层的数据生产线——这也是本文的主角。做数据工程第一步是把账算清楚。GR00T N1 的全部训练数据可以列成一张表数据资产数量折算时长生产成本来源真机遥操作数据GR-1—88 小时人工遥操作20Hz 采集自建团队神经轨迹视频生成~30 万条827 小时10.5 万 L40 GPU 时视频模型生成仿真轨迹DexMimicGen78 万条6,500 小时11 小时挂机生成物理仿真人类视频无动作标签—数十万小时级数据集整理Ego4D 等 7 个公开集Open X-Embodiment——公开集整合RT-1/Bridge-v2/DROID 等AgiBot-Alpha14 万条—公开集智元 100 台机器人两个数字值得停下来想一想6,500 小时 / 11 小时。DexMimicGen 用 11 个小时把几十条人类演示自动扩展成了 78 万条仿真轨迹——折算下来等于一个人类演示员不吃不喝连续录 9 个月。这就是论文里合成数据的杠杆率。88 小时 → 827 小时。神经轨迹这条路用视频生成模型做同样的事拿 88 小时真机数据微调一个图生视频模型再从已有初始帧出发生成反事实轨迹换个物体、换个放置位置数据量直接 10 倍。真机数据是最贵的人工遥操作但它是锚点——所有合成数据的质量都靠它兜底。二、底层没有动作标签的人类视频怎么进训练集2.1 问题定义Ego4D、EPIC-KITCHENS 这些数据集有几十万小时的人类第一视角操作视频是机器人最想要的行为先验。但它们只有一个致命问题视频里只有画面没有动作标注。你不知道人在操作时手臂的关节角是多少。GR00T N1 的解法分两步先用 VQ-VAE 把画面变化翻译成潜动作再把潜动作当作一种虚拟机型的动作标签直接进训练。2.2 潜动作提取VQ-VAE 的实现逻辑论文对模型结构的描述很简洁编码器吃连续两帧吐出离散潜动作解码器拿潜动作加当前帧重建未来帧。# 潜动作 VQ-VAEclassLatentActionVQVAE(nn.Module): 训练目标给定 (x_t, x_{tH})让模型学会把画面发生了什么变化 压缩成一个离散 code z_t并用 (z_t, x_t) 重建 x_{tH} def__init__(self,codebook_size):self.encoderVideoEncoder()# 输入当前帧未来帧self.codebooknn.Embedding(codebook_size,d_latent)# 离散码本self.decoderFrameDecoder()# 输入潜动作当前帧defencode(self,x_t,x_future,H):z_contself.encoder(x_t,x_future)# 连续潜变量z_tquantize_nearest(z_cont,self.codebook)# VQ 量化为离散码returnz_tdefforward(self,x_t,x_future,H):z_tself.encode(x_t,x_future,H)x_reconself.decoder(z_t,x_t)# z_t 当前帧 - 未来帧returnvqvae_loss(x_recon,x_future,z_cont,z_t)# 训练完成后编码器即逆动力学模型# 输入任意两帧输出潜动作标签供策略预训练使用deflabel_video_with_latent_actions(vqvae,video,H):return[vqvae.encode(video[t],video[tH],H)fortinrange(0,len(video)-H)]这里最巧妙的设计是把潜动作当成一个独立机型论文称 LAPA embodiment。策略模型不需要知道潜动作和真机动作的区别它们在训练管道里地位完全相同——一个统一了所有数据源的动作接口。2.3 潜动作真的跨机型一致吗论文 Figure 4 给了一个很有说服力的验证在 8 种不同机型含人类的视频里检索相似潜动作同一个潜动作 1在所有机型上对应的都是右臂向左移“潜动作 2对应的都是右臂向右移”。潜空间自己学出了移动方向这种与具体机体无关的运动语义。这就是跨机型训练能 work 的根基。三、中层上神经轨迹——用视频模型脑补反事实数据3.1 生产流水线全流程神经轨迹的完整生产流程我按论文 Sec 2.2 和附录 F 的描述整理成流水线# 神经轨迹生产流水线defneural_trajectory_pipeline(real_teleop_data):# Stage 1: 微调图生视频模型# 真实数据: 3000 条样本, 480P, 81 帧/条, 带语言标注video_modelfinetune_img2vid_model(real_teleop_data,epochs100)# Stage 2: 生成新任务指令# 用多模态 LLM 检测初始帧中的物体枚举物理合理的组合forinitial_frameincollect_initial_frames(real_teleop_data):objectsmllm.detect_objects(initial_frame)promptsmllm.generate_combinations(templatepick up {obj} from {src} to {dst},objectsobjects,constraintonly physically feasible combinations)# Stage 3: 生成视频2 分钟 L40 时间生成 1 秒视频forpromptinprompts:videovideo_model.generate(initial_frame,prompt)# Stage 4: 质量过滤——多模态 LLM 当裁判keyframesdownsample(video,n8)ifnotmllm.judge_follows_instruction(keyframes,prompt):continue# 滤掉不听指令的captionmllm.recaption(video)# 重新生成高质量标注# Stage 5: 动作标注两条路latent_actionsvqvae.label(video)# 路线 A: 潜动作pseudo_actionsidm.predict(video)# 路线 B: 逆动力学模型伪动作yieldTrainingSample(video,caption,latent_actions,pseudo_actions)3.2 三个工程细节细节一指令多样性是编出来的。生成模型自己不会想我该生成什么任务多样性完全靠 Stage 2 的 LLM 组合枚举——检测初始帧里有什么物体然后按把 X 从 A 拿到 B的模板穷举物理合理的组合。左hand改右手、盘子换篮子一条真机数据就这样裂变成几十条合成数据。细节二质量过滤靠AI 裁判。生成视频最大的坑是模型不严格遵守指令让它拿黄瓜它拿了苹果。论文的做法是降采样 8 帧喂给另一个多模态 LLM 判卷不合格的直接丢弃合格的用 LLM 重新标注recaption。整条流水线没有人工质检环节——这个规模30 万条也确实没法人工质检。细节三生成成本要算总账。L40 上 2 分钟生成 1 秒视频827 小时视频 105,000 L40 GPU 时用 3600 块 L40 并行跑了约 1.5 天。折算云成本大约 15-30 万美元。贵吗对比人工遥操作每小时真机数据的成本设备折旧 操作员工时 数据管理这个价格反而便宜——而且是一次性投入。四、中层下仿真轨迹——DexMimicGen 的自动扩展仿真这条线的核心工具是 DexMimicGenNVIDIA 参与的开源项目。它的原理可以概括为演示切割 物体对齐 自动重放# DexMimicGen 数据扩展原理defdexmimicgen_expand(few_human_demos,simulator):# 1) 演示切割把完整演示拆成以物体为中心的子任务片段segments[]fordemoinfew_human_demos:segmentssegment_by_object(demo)# 抓苹果是一段开抽屉是另一段# 2) 环境随机化新场景里物体位置随机摆放fornew_envinrandomize_scenes(simulator,n_scenes10000):forseginsegments:# 3) 片段变换保持末端执行器-物体相对位姿把片段# 适配到新环境中物体的新位置transformedtransform_segment(seg,align_tonew_env.objects[seg.target_object])# 4) 插值衔接 逐步重放 成功校验replay_with_interpolation(simulator,transformed,verify_successTrue)# 只有校验成功的轨迹才入库只保留成功轨迹这一步很关键——仿真里校验成功的标准是确定的物体进了目标容器没有所以仿真数据天然带高质量标签这也是它和神经轨迹最大的区别仿真给的是有真值动作的数据神经轨迹给的只有伪标签。任务体系上仿真数据基于 RoboCasa 框架构建任务形式统一为把 A 从 B 重排到 C覆盖 54 种容器组合每种组合生成 1 万条演示合计 54 万条预训练部分加上后训练共 78 万条。五、顶层88 小时真机数据是怎么采集的顶层数据量最小但采集工程反而最重。论文列了三套遥操作方案方案硬件捕捉内容定位方案一Manus Glove VIVE Ultimate Tracker腕部 6-DoF 手指骨架高精度主力方案方案二Apple Vision Pro头显 手势消费级备选方案三Leap Motion腕部 6-DoF 手指仿真数据采集用采集流程操作员穿戴设备 → 实时动作捕捉 → 逆运动学重定向到 GR-1 全身 IK 控制器 → 20Hz 控制频率执行 → 同时记录头部相机图像 人体本体感知 动作序列。标注分两层细粒度抓取/移动/放置等原子动作和粗粒度高层任务描述分层标注支撑了策略同时学精确运动控制和高层任务推理。六、混合训练三层数据怎么下锅数据生产完最后一道工序是混合。论文 Table 1 给出了每类数据适用的标注技术我转译成一张操作矩阵数据类型潜动作标注神经轨迹扩展仿真扩展真机数据可用可用可用仿真数据可用可用—人类视频可用——预训练时跨三层混合采样后训练时针对单一机型微调并探索了真实数据 : 神经轨迹 1:1的混合比例。混合这件事在官方仓库里有一套完整的工程实现三个关键环节都能在代码里找到环节一多数据集加权采样。训练入口脚本 examples/finetune.sh 提供了数据混合的调度参数# examples/finetune.shGLOBAL_BATCH_SIZE${GLOBAL_BATCH_SIZE:-32}SHARD_SIZE${SHARD_SIZE:-1024}NUM_SHARDS_PER_EPOCH${NUM_SHARDS_PER_EPOCH:-100000}EPISODE_SAMPLING_RATE${EPISODE_SAMPLING_RATE:-0.1}# 单 episode 被采到的概率DS_WEIGHTS_ALPHA${DS_WEIGHTS_ALPHA:-}# 多数据集采样权重dataset_path 参数本身接受 os.pathsep 分隔的多个数据集根目录gr00t/configs/finetune_config.py配合 DS_WEIGHTS_ALPHA 控制每个数据集在混合桶里的占比——论文里三层混合采样落到工程上就是这几个旋钮。环节二跨数据集统计量合并。不同数据集的状态/动作分布不同归一化参数必须合并计算。真实实现gr00t/data/dataset/sharded_mixture_dataset.pydefmerge_statistics(per_dataset_stats,dataset_sampling_weights,...):按采样权重合并多数据集统计量公式 Var_combined Σ(w_i * (σ_i² μ_i²)) - (Σ(w_i * μ_i))² dataset_sampling_weightsnp.array(dataset_sampling_weights)normalized_weightsdataset_sampling_weights/dataset_sampling_weights.sum()# ...... 加权合并 mean/std跨数据集取全局 min/max/q01/q99 ......。一个容易被忽略的细节mean/std 按权重加权但 q01/q99 是跨数据集取 min/max 包络——保证任何一条数据归一化后都不会超出 [0,1] 区间。环节三归一化分位数。数据统计默认用 1%/99% 分位数而不是绝对极值gr00t/data/stats.pyq01np.quantile(np_data,0.01,axis0).tolist(),q99np.quantile(np_data,0.99,axis0).tolist(),遥操作数据里总有几帧异常抖动用绝对 min/max 归一化会把有效信号压得很窄分位数归一化是机器人数据管线的标配——Q1 将来做数据管线这一条直接抄。数据策略的实验回报。论文的消融实验验证了这套体系每一环的含金量后训练混入神经轨迹RoboCasa 30/100/300 演示档分别提升 4.2%/8.8%/6.8%中等数据档收益最大真机 10% 数据档平均提升 5.8%。这套体系养出来的模型仿真三基准平均成功率 45.0%、真机 13 任务平均 76.8%均为同数据量对比中的最优而整座数据金字塔最终兑成的总账是只用 10% 真机数据42.6%几乎追平 Diffusion Policy 全量数据的成绩46.4%。数据生产体系的杠杆在实验上是被验证过的杠杆。七、启元 Q1 的数据工程开工清单把 GR00T N1 的数据方法论压到 Q1 的尺度我的判断是Q1 的数据金字塔不需要 GR00T N1 的量级但需要同样的结构。对照开工清单第一优先级把规则转成数据现在就能做Q1 每个技能包的 JSON 配置motions、emotion_id、led、lines本身就是结构化的行为描述。把技能包的执行过程录制成图像 语言指令 动作序列三元组现有鼓励/早安/倒计时三个技能立即变成种子数据。这是 Q1 手里唯一零成本的数据资产不录就浪费了。录的时候格式别自己发明直接对齐 GR00T 的 LeRobot 格式——仓库自带了一个标准样例 demo_data/cube_to_bowl_5目录结构是三层cube_to_bowl_5/ ├── data/chunk-000/episode_000000.parquet# 状态动作每 episode 一个 parquet├── videos/chunk-000/observation.images.front/# 相机视频每路一个目录└── meta/modality.json# 模态切片声明关键其中 modality.json 声明了状态/动作向量的切片方式{state:{single_arm:{start:0,end:5},gripper:{start:5,end:6}},action:{single_arm:{start:0,end:5},gripper:{start:5,end:6}},video:{front:{original_key:observation.images.front},wrist:{original_key:observation.images.wrist}},annotation:{human.task_description:{original_key:task_index}}}这套格式的价值在于切片声明与数据分离动作向量里哪几维是手臂、哪几维是夹爪由 modality.json 声明而不是隐含在数据里训练侧按声明切片组合。Q1 的技能包导出脚本只要落成这个格式将来接 GR00T 后训练管线就是零改造。第二优先级仿真数据1-2 个月Q1 只需仿真上肢动作物理复杂度远低于 GR-1 全身灵巧手。用 Isaac Sim 搭 Q1 数字孪生把招手比心这类动作做成参数化任务幅度、次数、时长可调DexMimicGen 式的演示切割 重放 成功校验可以直接套用。目标量级几十小时仿真数据就够后训练用。第三优先级遥操作设备选型同步启动参考 GR00T N1 的三套方案Q1 的合理选择是 Leap Motion约几百元捕捉上肢 手指正好覆盖 Q1 的动作空间不必上 VIVE 数据手套的全身方案。暂不建议碰的人类视频预训练潜动作预训练的收益来自海量数据Q1 的场景太窄上肢交互直接在人类视频上做潜动作预训练的性价比不高。更务实的路线是等 Q1 仿真数据攒起来后直接微调 GR00T N1 的开源权重——它的底层先验 NVIDIA 已经替你预训练好了。一句话总结GR00T N1 证明了数据不够工程来凑是可行的——88 小时真机数据 视频生成 仿真扩展 潜动作标注四件套把数据问题从有没有变成了怎么生产。Q1 要抄的不是数据本身是这套生产体系。论文信息GR00T N1: An Open Foundation Model for Generalist Humanoid RobotsNVIDIA2025 年 3 月arXiv2503.14734开源项目信息项目地址https://github.com/NVIDIA/Isaac-GR00T项目定位GR00T N1 系列基础模型的官方实现Apache 2.0 协议数据资产仓库自带 5 个 LeRobot 格式演示数据集demo_data/ 目录含 parquet、相机视频与模态声明格式规范见 getting_started/data_preparation.md数据工具统计量生成gr00t/data/stats.py、多数据集混合sharded_mixture_dataset.py、机型模态配置注册gr00t/configs/data/embodiment_configs.py格式参考本文引用的 modality.json 样例出自 demo_data/cube_to_bowl_5可直接作为自建数据集的格式模板访问启元机器人开发者社区获取 SDK、仿真工具、开发文档完成从代码仿真到真机落地的全流程开发https://dev.primebot.com/
阅读完成 · 觉得有帮助?
咨询建站