尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
拆解 GR00T N1 双系统架构:System 2 看懂场景、System 1 毫秒出手,2.2B 参数与 63.9ms 背后的每一根管线(附官方源码对照)
拆解 GR00T N1 双系统架构System 2 看懂场景、System 1 毫秒出手2.2B 参数与 63.9ms 背后的每一根管线附官方源码对照本文把 GR00T N1 的架构从输入到输出完整走一遍。文中代码段摘自 NVIDIA 开源的 Isaac-GR00T 官方仓库Apache 2.0 协议——论文 N1 与仓库当前主线 N1.7 在骨干网络上迭代过但 Flow-Matching 动作生成的核心实现完全同构。对启元 Q1 的架构启发放在第六节。一、全局视角一张图看懂数据流先把论文的研究背景钉在墙上一个模型要听得懂语言、看得见场景还要在毫秒级节奏里输出机器人动作而且最好跨机型通用。GR00T N1 给出的答案是双系统理解交给 VLM行动交给 Flow-Matching DiT两者以交叉注意力耦合、端到端联合训练。下面从输入到输出把整条管线拆开。先上整体管线。GR00T N1 的前向过程只有三步图像观测 语言指令 ──[System2: Eagle-2 VLM]──视觉语言特征 φ_t │ 机器人状态 q_t ──────[System1: DiT]── 交叉注意力 ──┘ │ │ 加噪动作块 A_τ ──去噪4步 │v动作块 A_t(16步)[Figure 2: GR00T N1 模型概览——System 2 与 System 1 的耦合关系]两个系统不是串联的两级流水线而是条件生成关系System 2 每 100ms 算一次 φ_tSystem 1 拿着 φ_t 当条件以 120Hz 的节奏持续生成动作。System 2 在两次推理之间是冻结的——就像人眼扫一眼环境后手会连续执行几秒动作不需要每 8ms 重新看一次。二、System 2把 VLM 当特征提取器用2.1 Eagle-2 骨干的三个关键参数GR00T N1 的 VLM 骨干是 NVIDIA 自家的 Eagle-2由 SigLIP-2 视觉编码器 SmolLM2 语言模型组成。GR00T-N1-2B 总参数 2.2B其中 VLM 占 1.34B。有三个设计细节值得抠细节一图像 token 数量。输入图像统一缩放到 224×224经过 pixel shuffle 后每帧只产生 64 个图像 token。这个数字很关键——多视角输入比如左右腕三个相机时 token 数线性增长64/帧的控制直接决定了 VLM 的推理延迟。作为对比很多 VLA 工作单帧用 256 tokenVLM 一跑就是几百毫秒。细节二取中间层特征。这是我认为整篇论文最反直觉但合理的一个选择VLM 特征取 LLM 的第 12 层不是最后一层。官方仓库的实现比取特征更彻底——直接把 12 层以上的所有层物理删除# gr00t/model/modules/qwen3_backbone.py# needed since we dont use these layers. Also saves computewhilelen(self.model.language_model.layers)select_layer:self.model.language_model.layers.pop(-1)配合配置文件里的默认值 select_layer: int 12gr00t/configs/model/gr00t_n1d7.py这意味着加载 VLM 时上层的语言头、未用到的 Transformer 层压根不进显存。中间层不是从 32 层里挑一层读出来而是模型在结构上就只有 12 层。为什么不用最后一层论文的实验结论是中间层特征推理更快不用跑完整个 LLM且下游策略成功率更高。直观解释最后一层特征过度语言化抽象成了语义概念而动作生成需要的是保留空间细节的视觉-语言混合表征。第 12 层刚好卡在看懂了但还没说出口的位置。细节三聊天模板对齐。训练策略时文本描述和图像按 VLM 预训练时的 chat 格式输入。这个细节保证了策略训练不破坏 VLM 的预训练知识。2.2 Q1 视角这个设计能用吗Q1 没有条件在设备端跑 1.34B 的 VLM。但取中间层 压缩图像 token这两个思路可以移植到任何轻量 VLM 上——如果 Q1 未来要做云端理解模块这两个选择能直接把推理成本砍一半以上。三、System 1Flow-Matching 动作生成3.1 先讲清楚 Flow-Matching 在干什么Diffusion Policy 用的是标准 DDPM 去噪GR00T N1 用的是 Flow-Matching流匹配。两者都是从噪声生成数据区别在于DDPM学习每一步去噪的噪声残差采样几十到上百步Flow-Matching学习一条从噪声分布到数据分布的速度场向量场欧拉积分 4 步就能走完。对实时机器人控制来说4 步 vs 100 步就是能不能上机的区别。3.2 训练目标源码里只有三行核心论文公式 (1) 在官方仓库里的样子gr00t/model/gr00t_n1d7/gr00t_n1d7.py# 加噪与速度场目标actionsaction_input.action noisetorch.randn(actions.shape,deviceactions.device,dtypeactions.dtype)tself.sample_time(actions.shape[0],deviceactions.device,dtypeactions.dtype)tt[:,None,None]# shape (B,1,1) for broadcastnoisy_trajectory(1-t)*noiset*actions# A_τ τ·A_t (1-τ)·εvelocityactions-noise# 速度场回归目标# ...... DiT 前向 ......hidden_states状态加噪动作 token# encoder_hidden_statesVLM 第 12 层特征timesteptpredself.action_decoder(model_output,embodiment_id)pred_actionspred[:,-actions.shape[1]:]action_lossF.mse_loss(pred_actions,velocity,reductionnone)*action_mask lossaction_loss.sum()/(action_mask.sum()1e-6)# 按 action_mask 加权平均τ 的采样逻辑同文件# __init__ 里构建 Beta 分布浓度参数直接来自模型配置self.beta_distBeta(torch.tensor(float(config.noise_beta_alpha),dtypetorch.float32,devicecpu),torch.tensor(float(config.noise_beta_beta),dtypetorch.float32,devicecpu),)defsample_time(self,batch_size,device,dtype):sampleself.beta_dist.sample([batch_size]).to(device,dtypedtype)sample(1-sample)*self.config.noise_s# 截断到 s0.999 以内returnsample配置文件 gr00t/configs/model/gr00t_n1d7.py 里的默认值noise_beta_alpha: float 1.5、noise_beta_beta: float 1.0、noise_s: float 0.999——与论文 Sec 2.1 写的 Beta(1.5, 1)、s0.999 逐位一致可以逐字对上。三个值得注意的实现细节时间步分布不是均匀的。τ 从 Beta(1.5, 1) 采样且截断在 0.999 以内——Beta(1.5,1) 的概率质量偏向大 τ意味着训练时模型更多见到接近真实动作的样本。这是从 π0Black et al., 2024继承的技巧对收敛速度影响很大。τ 要一起编码进网络。扩散时间步通过 adaptive layer normalization 注入 DiT而不是简单拼接仓库里还能看到一个细节连续 τ 会被离散化成桶num_timestep_buckets: int 1000后作为条件输入。动作块整体加噪。整个动作块作为一个整体加噪、去噪保证块内时序一致性损失计算乘了 action_mask 并做归一化意味着机型可以屏蔽自己不存在的动作维度——这是多机型共用一个 DiT 的工程前提之一。3.3 推理4 步欧拉积分仓库里的去噪主循环gr00t_n1d7.py# 推理去噪主循环# Run denoising steps.fortinrange(self.num_inference_timesteps):t_contt/float(self.num_inference_timesteps)# e.g. goes 0, 1/N, 2/N, ...t_discretizedint(t_cont*self.num_timestep_buckets)# Embed noised action trajectory.timesteps_tensortorch.full(size(batch_size,),fill_valuet_discretized,devicedevice)action_featuresself.action_encoder(actions,timesteps_tensor,embodiment_id)# ...... 状态/动作 token 拼接与训练时完全一致 ......。model_outputself.model(hidden_statessa_embs,encoder_hidden_statesvl_embeds,timesteptimesteps_tensor,)predself.action_decoder(model_output,embodiment_id)pred_velocitypred[:,-self.action_horizon:]# Update actions using euler integration.actionsactionsdt*pred_velocity从纯噪声开始每步让网络预测速度场然后欧拉积分往前走一小步——论文说的 K4 步去噪落到代码里就是一个 range(4) 的 for 循环。num_inference_timesteps: int 4 也写在配置默认值里。16 步动作块H16在 120Hz 控制频率下覆盖约 133ms。System 1 每 63.9ms 推理一次L40 GPU, bf16配合动作块滑动执行整体等效 120Hz 输出。推理快、动作平滑这两件事在 Flow-Matching 这里是同一件事。3.4 机型适配编码器/解码器的外挂设计GR00T N1 支持单臂、双臂、人形 灵巧手等多种机型靠的不是多个模型而是机型特定的薄编码器 共享的 DiT 主体仓库里的证据是两部分。先是配置gr00t/configs/model/gr00t_n1d7.pymax_state_dim:int132# 所有机型统一填充到这个维度max_action_dim:int132max_num_embodiments:int32# 支持注册的机型数上限input_embedding_dim:int1536所有机型的状态/动作向量都填充padding到统一维度每个机型分配一个独立的编码器槽位DiT 主体参数完全共享。再看机型标签的注册表gr00t/data/embodiment_tags.pyclassEmbodimentTag(Enum):Embodiment tags supported by the GR00T N1.7 checkpoint.REAL_G1real_g1_relative_eef_relative_joints# 宇树 G1 真机UNITREE_G1unitree_g1_full_body_with_waist_height_nav_cmdLIBERO_PANDAlibero_sim# 仿真 Panda# ...... 预训练/后训练机型各若干 ......。# New embodiment during post-trainingNEW_EMBODIMENTnew_embodiment# 自定义机型的统一注册位 Any new embodiment. 预训练机型各自一个标签而所有自定义机型共用 NEW_EMBODIMENT 这一个注册位——新增一个机型本质上只是新增一对 MLP 编码器/解码器加一个标签百万级参数DiT 主体亿级参数原封不动。这个设计对多机型产品线比如启元未来若同时有 Q1 和其他形态产品是直接的参考。四、DiT 内部自注意力管动作交叉注意力管理解DiT 块的结构是 Flamingo/VIMA 式的交替设计。仓库里的真实实现gr00t/model/modules/dit.py# 交替自注意力/交叉注意力assertself.config.interleave_self_attention,Interleave self attention must be enabledforidx,blockinenumerate(self.transformer_blocks):ifidx%21:# Self-attention blocks —— 动作 token 之间交互时序连贯性hidden_statesblock(hidden_states,...,tembtemb)else:# Cross-attention blocks - alternate between non-image and image tokensifidx%(2*self.attend_text_every_n_blocks)0:curr_encoder_attention_masknon_image_attention_maskelse:curr_encoder_attention_maskimage_attention_mask# Q动作, K/VVLM 特征且图像 token 与文本 token 交替作为条件hidden_statesblock(hidden_states,encoder_hidden_statesencoder_hidden_states,encoder_attention_maskcurr_encoder_attention_mask,tembtemb,)这里有个论文正文没有展开、但代码写得明明白白的细节交叉注意力不是把 VLM 特征一锅端进来而是 attend_text_every_n_blocks2 的节奏——隔一个交叉注意力块换一类条件一层只看图像 token下一层只看文本 token。配置默认值 use_alternate_vl_dit: bool True 说明这是主线模型的实际形态。扩散时间步 τ 则通过 AdaLayerNorm 注入每层。这个分工非常清晰注意力类型输入学到什么自注意力加噪动作 token 状态 token动作块内部的时序结构交叉注意力Q动作, K/VVLM 特征“现在该做什么任务”adaLN扩散时间步 τ当前处于去噪哪个阶段对比一下 RT-2 的做法——把动作离散成 token 塞进 LLM 的词表里用自回归方式说出动作。两条路线的本质区别RT-2 让动作迁就语言模型的接口GR00T N1 让语言模型的输出迁就动作生成的接口。后者对高频控制明显更友好。五、模型规格速查把 GR00T-N1-2B 的关键数字汇总成一张表右列是官方仓库当前主线N1.7配置文件 gr00t_n1d7.py的对照值项目论文 N1-2B仓库主线 N1.7总参数量2.2BVLM 1.34B DiT 约 0.86B3BVLM 骨干换为 Cosmos-Reason2-2B视觉编码224×224 → 64 token/帧230×230 裁剪 → 256×256image_crop_size 配置VLM 特征层第 12 层第 12 层select_layer 12未变动作块长度 H16 步40 步action_horizon 40状态/动作维度29 维GR-1统一填充到 132 维max_state_dim去噪步数 K44num_inference_timesteps 4未变时间步分布Beta(1.5, 1), s0.999Beta(1.5, 1), s0.999未变推理延迟63.9 ms / 动作块L40, bf16仓库另提供 TensorRT 部署链路进一步压缩可以看到骨干网络和动作块长度在迭代但 Flow-Matching 的核心机制4 步去噪、Beta 采样、双系统解耦从论文到仓库主线一直没动——这正是本篇值得精读的原因这些是经过验证的稳定设计。这套架构的实验回报论文给得毫不含糊三个仿真基准后训练平均成功率 45.0%比从零训练的 Diffusion Policy33.4%高 11.6 个百分点且机型越复杂优势越大人形基准领先 17.3 个百分点真机 13 个任务平均 76.8%对 Diffusion Policy 的 46.4%System 1 单次推理 63.9msL40, bf164 步去噪就能实时出动作块。架构设计的每一处取舍最后都兑现成了延迟表和成功率表上的数字。六、Q1 的架构路线图三步走把上面的技术点翻译成 Q1 视角的行动项第一步复用预设动作体系的动作原语思路。Q1 现在的 set_preset_motion(3008) 这套预设动作本质上就是动作空间离散化。在引入学习式策略之前可以把每个预设动作当作一个动作 token用一个小型序列模型学什么场景下按什么顺序组合预设动作——这是最低成本的数据驱动化改造且完全兼容现有 PrimeConsole 校验体系。第二步轻量化 System 1。Q1 的交互动作招手、比心、舞蹈都是上肢短程运动动作维度远低于 GR-1 的全身灵巧手。一个 distilled 到 100M 参数的 Flow-Matching 头配合 Q1 现有动作接口理论上有机会跑在设备端或边缘盒子。第三步云端 System 2 端侧 System 1。语言理解、场景识别放云端走 Q1 现有的网络能力动作生成放本地。这个分工和 Q1 现有配置在云端管理、动作在本地执行的架构是同构的改造成本相对可控。一句话总结GR00T N1 真正可迁移的不是它的模型权重而是理解与行动解耦、动作生成用流匹配、机型差异用外挂编码器吸收这三个设计决策。论文信息GR00T N1: An Open Foundation Model for Generalist Humanoid RobotsNVIDIA2025 年 3 月arXiv2503.14734开源项目信息项目地址https://github.com/NVIDIA/Isaac-GR00T项目定位GR00T N1 系列基础模型的官方实现Apache 2.0 协议当前主线为 N1.7本文引用代码均出自该主线源码地图gr00t/model/模型实现本文的 ActionHead 与 DiT 源码分别在 gr00t_n1d7/gr00t_n1d7.py 与 modules/dit.py、gr00t/configs/全部超参默认值、gr00t/data/数据处理与机型标签注册与论文对照Flow-Matching 动作头、双系统耦合、4 步去噪、机型外挂编码器等核心机制与论文 N1 完全同构骨干网络与动作块长度按 N1.7 演进访问启元机器人开发者社区获取 SDK、仿真工具、开发文档完成从代码仿真到真机落地的全流程开发https://dev.primebot.com/
RELATED

相关推荐

【ColdAisle FIX7|简明安装与使用指南】

【ColdAisle FIX7|简明安装与使用指南】

ColdAisle FIX8|简明安装与使用指南适用版本:ColdAisle v1.0.6 中文版 FIX8(以实际交付安装包为准)用途:Windows Server 2016 部署、首次登录、机房/机柜/设备的简单使用。一、安装(按顺序执行)…

📅 2026/10/23 10:33:08
Mornye-Extension Amazon Music插件逆向解析:跨目录链接解析与CSRF会话刷新原理

Mornye-Extension Amazon Music插件逆向解析:跨目录链接解析与CSRF会话刷新原理

【免费下载链接】Mornye-Extension Extension Registry for Mornye Browse, submit, and download community-built extensions. 项目地址: https://gitcode.com/gh_mirrors/sp/Mornye-Extension 点击查看 免费下载 本文逆向解析 Mornye-Extension 仓库中的 Amazon…

📅 2026/10/23 10:33:08
wx-cli REST API 完整参考:用 8 个端点搭建你的本地微信数据服务

wx-cli REST API 完整参考:用 8 个端点搭建你的本地微信数据服务

【免费下载链接】wx-cli WeChat macOS database decryption and query tool 项目地址: https://gitcode.com/gh_mirrors/wxcl/wx-cli 点击查看 免费下载 wx-cli 是一个运行在 macOS 上的微信数据库解密与查询工具,它的 wx-cli server run 命令可以把本机…

📅 2026/10/23 10:33:08
MORE NEWS

更多资讯

📰

给 Claude Code 装 Matt Pocock 技能包,五个坑我替你踩完了:符号链接、managed 标识、路径权限全排雷

给 Claude Code 装 Matt Pocock 技能包,五个坑我替你踩完了:符号链接、managed 标识、路径权限全排雷 【免费下载链接】skills Skills for Real Engineers. Straight from my .agents directory. 项目地址: https://gitcode.com/GitHub_Trending/skill…

📰

612万条投票为何可信?text-to-image-human-preference-6M标注质量控制与userScore加权机制详解

数据集人工智能模型评测媒体生成 【免费下载链接】text-to-image-human-preference-6M 项目地址: https://ai.gitcode.com/hf_mirrors/Rapidata/text-to-image-human-preference-6M 点击查看 免费下载 text-to-image-human-preference-6M 是由 Rapidata 为 Benchma…

📰

VMware Workstation 16 Pro部署CentOS 7的工程实践指南

1. 为什么在2024年还要用Workstation 16 Pro装CentOS 7?一个被低估的“稳定压舱石”场景很多人看到这个标题第一反应是:“CentOS 7不是2024年6月就停止维护了吗?还装它干啥?”——这恰恰是问题的关键。我最近帮某高校实验室调试一…

📰

C++线程池从零实现:原理、避坑与性能优化指南

简介:这是一份面向C后端与Windows平台开发者的VC线程池实现源码,针对移动设备与管理中心高并发请求场景下频繁创建、销毁线程导致系统开销过大的问题,给出可复用的线程池解决方案。资源包共41个文件,约54KB,以16个.h头…

📰

多供应商网络统一分析:Tracking Master 架构与适配器实践

简介:Tracking Master 是一款面向 Bludit Flat File CMS 的开源网络分析跟踪插件,主要服务于个人站长、小型网站开发者以及重视数据自主可控的使用者。它针对无数据库轻量站点在访问统计与用户行为分析上的需求,可记录访问量、页面浏览、来源…

📰

LLMs for Legal Subsumption in German Employment Contracts

文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)评估德国雇佣合同条款的合法性,旨在解决法律工作中文本密集、资源消耗大的问题。研究通过与法律专家合作扩展现有数据集,测试了不同LLMs在三种法律上下文(无法律上下文、完整法律文本及判例、提炼的审查指南)下将条款…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬