开源 GR00T N1.7 论文解读:Cosmos-Reason2/Qwen3-VL + DiT 动作头,20K 小时人类视频预训练

📅 2026/7/2 2:36:17
开源 GR00T N1.7 论文解读:Cosmos-Reason2/Qwen3-VL + DiT 动作头,20K 小时人类视频预训练
论文:GR00T N1: An Open Foundation Model for Generalist Humanoid Robots(完全开源,arxiv 预印,7475 stars)会议:arxiv 预印链接:https://arxiv.org/abs/2503.14734GitHub:NVIDIA/Isaac-GR00T | 7475 stars作者:NVIDIA, Johan Bjorck, Fernando Castaneda, Nikita Cherniadev, Xingye Da 等(NVIDIA、University of Texas at Austin、Stanford 等)目录一、这篇论文解决了什么问题二、关键方法三、实验结果四、本地部署全流程五、为什么重要六、适用场景与机器人平台七、局限一、这篇论文解决了什么问题GR00T N1 这篇论文处理的是一个很具体的问题:人形机器人和双臂机器人想做通用操作,不能每换一个机身、相机、末端执行器,就从头收一批数据、训一套策略。NVIDIA 在 GitHub 上发布的当前主线已经是 GR00T N1.7 Early Access。论文标题仍是 GR00T N1,开源仓库则把 N1.7 作为最新实现。这里按工程写法处理:论文提供方法主干,N1.7 提供当前可跑代码、权重、微调脚本、部署路径和最新 benchmark 数字。N1.7 的定位不是一个只会跑单臂 tabletop 的策略。它面向 generalized humanoid robot skills,输入包括语言、图像、机器人状态,输出连续动作。官方 README 里写得比较直接:数据混合包含 bimanual、semi-humanoid、humanoid 数据,还加入了 20K 小时 EgoScale human video 预训练。仓库也给了 DROID、LIBERO、SimplerEnv、SO100、Unitree G1 + SONIC 的接入路径。这篇文章重点看三个点:N1.7 把 VLM backbone 从 N1.6 的 Eagle 换成 Cosmos-Reason2-2B / Qwen3-VL 架构;动作空间改成相对 EEF action,让人类视频和机器人动作更容易对齐;部署链路从 PyTorch、torch.compile 到 TensorRT full pipeline 都给了脚本,H100 上官方测到 27.9 ms E2E,也就是 35.9 Hz。二、关键方法GR00T N1.7 是典型的双系统 VLA:前面是视觉-语言基础模型,负责把图像和指令压成语义 token;后面是连续动作生成头,负责把语义、状态、噪声动作一起变成机器人控制量。1. VLM backbone:Cosmos-Reason2-2B / Qwen3-VLN1.7 的 README 明确写了新 backbone:Cosmos-Reason2-2B,采用 Qwen3-VL architecture,替代 N1.6 使用的 Eagle backbone。这个变化不只是换名字。Qwen3-VL 的视觉侧支持 flexible resolution,可以按原生 aspect ratio 编码图像,不再强行 padding 到固定比例。在部署文档里,TensorRT full pipeline 把 backbone 拆成几个可导出的组件:ViT:Qwen3-VL Vision,24 blocks,TRT 导出时为了精度保留 FP32;LLM:Qwen3-VL Text Model,16 layers,带 deepstack injection;VL Self-Attention:SelfAttentionTransformer,4 layers,如果模型配置启用就参与导出;轻量 glue ops:embed_tokens、masked_scatter、get_rope_index、VLLN 仍留在 PyTorch。这个拆法很工程。VLA 推理慢,瓶颈通常不只在动作头。N1.7 的部署文档也点明:full pipeline 推荐给 dGPU、Thor、Spark,因为它连 ViT + LLM backbone 一起加速;Orin 目前只能 DiT-only TRT,backbone 还跑 PyTorch。2. 动作头:DiT 去噪连续动作,不是离散 tokenN1.7 的动作头是 diffusion transformer head。README 描述为 denoises continuous actions;部署文档里对应的 TRT 组件叫 DiT,具体实现名是AlternateVLDiT,32 layers。推理时不是一次输出单个动作,而是预测一个动作片段。官方命令里常用两个参数:--action-horizon 8:LIBERO / DROID 示例里用 8 个动作步;--denoising-steps 4:部署 benchmark 默认 4 次去噪。可以把动作生成写成条件去噪流程:给定观测o_t、语言l、机器人状态s_t,先由 VLM 得到上下文 tokenc = f_vlm(o_t, l)。动作头从带噪动作片段a_tau开始,输入条件(c, s_t, tau),预测去噪方向或噪声残差:eps_hat = D_theta(a_tau, tau, c, s_t) L = E[||eps - eps_hat||_2^2]如果按 flow matching 的写法看,也可以把它理解成预测从噪声动作到真实动作轨迹的速度场:v_hat = D_theta(a_tau, tau, c, s_t) L = E[||v - v_hat||_2^2]论文和仓库没有把 N1.7 的训练目标在 README 里展开成完整公式,但从“diffusion transformer head denoises continuous actions”和部署参数看,关键不是把动作离散成语言 token,而是在连续空间直接生成 action chunk。这个选择对机器人控制很现实:末端位姿、夹爪、关节角都天然是连续量,硬塞进语言词表会引入量化误差。3. 相对 EEF action:N1.7 的跨具身重点N1.7 和 N1.6 的一个核心差别是 Relative EEF Action Space。官方说法是:N1.7 采用 robot 和 human embodiments 共享的 relative end-effector action space,用当前姿态的 delta 表示动作,而不是绝对目标位姿。DROID 文档把这个动作空间拆得更细:模态维度表示eef_9d9D相对末端执行器,XYZ + 6D rotationgripper_position1D绝对夹爪位置joint_position7D相对关节位置合计17DDROID embodiment 的 state/action 维度这套相对动作空间有两个直接收益。一个是同一条“把物体推近盘子”的局部动作,在不同桌面坐标系下仍然长得像同一种控制片段。另一个是人类视频预训练更容易接进来:人手移动的局部 delta,比人手在某个机器人坐标系里的绝对位置更可迁移。4. 数据混合:机器人演示 + 20K 小时 EgoScale 人类视频N1.7 README 明确写了两类训练信号:diverse robot data:bimanual、semi-humanoid、humanoid;20K hours EgoScale human video data。这不是把公开视频直接当机器人动作监督。关键在相对 EEF 表示。机器人轨迹有状态和动作,人类视频更像提供视觉-任务-运动先验。N1.7 把二者放进同一个预训练体系里,让 VLM backbone 学到“人怎样接近、抓取、移动、放置物体”的视觉序列规律,再靠机器人数据和动作头落到真实控制量上。5. 微调策略:state dropout 和大 batch官方 benchmark 脚本没有藏起来。LIBERO 四个 suite 都是:MAX_STEPS=20000GLOBAL_BATCH_SIZE=640NUM_GPUS=8state-dropout-prob=0.2SimplerEnv 用更大的 batch:Bridge:GLOBAL_BATCH_SIZE=1024,state-dropout-prob=0.8Fractal:GLOBAL_BATCH_SIZE=1024,state-dropout-prob=0.5