阿里 RynnVLA-002 源码深度拆解:一个 7B 模型如何同时当机器人大脑和世界模拟器

一个 Transformer,两种人格:左手操控机械臂做动作,右手预测下一帧画面。阿里达摩院用 LIBERO 97.4% 的成绩证明这不是玩具。


为什么你应该关注这个项目

具身智能(Embodied AI)最近半年从"学术概念"加速进入"工程落地"阶段。标志性事件是:模型不再只停留在论文 benchmark 上,而是开始和真实机器人硬件对接。

RynnVLA-002 是阿里达摩院在 2025 年 11 月开源的具身智能模型,它做了一件很优雅的事------用一个 7B 的 Transformer 同时实现 VLA(看图+听话+做动作)和世界模型(预测下一帧画面)

这不是炫技。这意味着同一个模型既能"干活"(控制机械臂),又能"想象"(想象做完动作后世界会变成什么样)。后者是做规划的前提。

架构:一个骨架,两套皮肤

RynnVLA-002 基于 Meta 的 Chameleon 7B(一个早融合多模态自回归模型),预训练自 Lumina-mGPT。

它的核心创新是用对话模板来切换任务模式

VLA 模式(干活):

复制代码
Human: What action should the robot take to [pick up the cup]?
       <state><image><image><image><image>
GPT:   <action><action><action><action><action>

世界模型模式(想象):

复制代码
Human: Generate the next image based on the provided sequence
       of historical images and corresponding actions.
       <image><image><action>
GPT:   <image><image>

同一个 backbone,换个 prompt 就切换了。这是 Chameleon 早融合架构的巨大优势------文本、图像、动作全在同一个 token 空间里,模型天然能处理多种输出格式。

最大工程亮点:双路动作头

这是我认为全项目最值得偷学的设计

传统 VLA 模型的动作输出只有两条路:

  • 纯离散:把动作量化成 token,用交叉熵训练。问题是精度不够(机器人需要毫米级)
  • 纯回归:直接输出连续数值。问题是语义信息丢失,训练不稳定

RynnVLA-002 的解法是两条路都要

  1. 主干输出离散 action token → 交叉熵 loss(保留语义)
  2. 同时从 hidden states 接一个 ActionHead → L1 回归 loss(提供精度)
  3. 联合优化

ActionHead 的结构:

复制代码
hidden states → 切片 → 拼接 learnable action queries
  → hidden_projection (4096→1024)
  → TransformerEncoder ×2 (nhead=4)
  → MLPResNet → (time_horizon=5, action_dim=7)

结果验证 :LIBERO benchmark 上连续动作 97.4% vs 离散动作 93.3%,连续全面胜出。

这个设计能迁移到哪里?

任何需要 LLM 输出精确数值的场景都能借鉴:

  • 量化交易:同时输出"方向 token"(买/卖/持)和"权重回归值"(0.0~1.0)
  • 风控评分:同时输出"风险等级 token"(低/中/高)和"连续评分"(0~100)
  • 游戏 AI:同时输出"技能选择 token"和"精确参数"

Attention Mask 阻断误差累积

另一个精妙设计。

多步预测场景下,错误会像雪球一样越滚越大------第 1 步偏了 1mm,第 5 步可能偏了 10mm。

RynnVLA-002 用自定义的 attention mask 硬切断这条链:

python 复制代码
# 对每个 action chunk,屏蔽它对前一个 action chunk 的注意力
mask[batch_idx, block_start:block_end+1, prev_start:prev_end+1] = 0

强制模型每步重新看图,不基于自己上一次的动作预测下一步。这可以迁移到所有多步预测 + 误差敏感的场景(时序预测、长文本生成、路径规划)。

Starting Point 权重策略:让模型"选择性失忆"

代码里有个 _make_and_save_starting_point 函数,会把 lm_head 中图像 token 对应的权重清零:

python 复制代码
model.lm_head.weight.data[image_tokens] = torch.zeros_like(...)

Chameleon 本来擅长文生图,但这会干扰 VLA 训练(模型倾向于"画图"而非"做动作")。清零 = 强制从零学 action 相关的映射。

可借鉴:任何时候你想让预训练模型"忘掉某种能力,学新能力",权重清零是一种有效的硬手段。

半年进化:从 WorldVLA 到 RynnVLA-002

维度 WorldVLA (2025-06) RynnVLA-002 (2025-11)
动作类型 仅离散 token 离散 + 连续双路
摄像头 第三人称单路 第三人称 + 腕部双路
本体状态 eef_gripper_state 输入
LIBERO 成功率 ~85% 97.4%

半年时间,VLA 从"能跑"到"堪用"。关键变量不是模型大小,而是信息密度增加 (腕部相机+状态)和输出表示升级(离散→连续)。

消融实验的工程化范本

model/ 目录下 5 个模型文件,是 5 种消融变体:

文件 含义
modeling_xllmx_chameleon.py 基础 baseline
..._ck.py + action chunk
..._ck_action_head.py + 连续头(主力版)
..._ck_action_head_progress.py + 进度监督
..._ck_action_head_conti_only.py 纯连续无离散

通过改 __init__.py 一行 import 切换。消融实验工程化的典范,值得任何做研究的团队学习。

工程坑清单

代价
依赖版本严格(torch 2.2, transformers 4.43, flash-attn) 环境 1-3 天
预 tokenize 后 LIBERO 数据几百 GB 磁盘焦虑
Chameleon 权重需 Meta HF 授权 等待审核
训练需 8×A100/H100 ≈$300/天
代码里大量 # print(f"has NaN") 注释 训练中遇到过数值不稳定

总结:5 个可跨领域偷学的范式

  1. 双路输出:离散 token(保语义)+ 连续回归(保精度)
  2. 对话模板即任务定义:同一 backbone 换 prompt 切换任务
  3. 自定义 Attention Mask:阻断多步预测的误差累积
  4. 消融实验工程化:5 个文件通过 import 切换
  5. Starting Point 权重清零:让模型选择性遗忘

这 5 个设计不限于机器人------任何需要 LLM 输出精确控制量、多步预测、多任务切换的场景都能用


参考


一深思AI · AI 情报站 · 2026-05-13

相关推荐
Lkstar8 小时前
高级提示技巧:Few-shot、Chain-of-Thought、自一致性——让大模型推理能力翻倍
程序员·llm·ai编程
weixin_468466859 小时前
液态神经网络新手入门与实战指南
人工智能·深度学习·神经网络·ai·机器视觉·液态神经网络
Stick_ZYZ9 小时前
从“能调用工具”到“能稳定执行任务”:Agent 工程化的下一步
java·人工智能·后端·spring·ai
qq_白羊座9 小时前
DeepEval vs EvalScope 完整对比
llm
AlfredZhao9 小时前
AI编程系列01:裸 API 账单场景下,如何自建 LLM 用量可视化看板
llm·vibecoding·氛围编程
阿里云大数据AI技术9 小时前
DataWorks Data Agent:从增强到自主,数据智能体的范式跃迁
人工智能·agent
明月(Alioo)9 小时前
Netcat (nc) 操作指南
ai·aigc
weixin_468466859 小时前
多鲁棒优化新手实战指南
人工智能·深度学习·机器学习·ai·模型优化
一叶知秋dong10 小时前
ComfyUI 的节点
ai
DigitalOcean10 小时前
DigitalOcean 的 AI 推理路由器是如何构建的
后端·aigc·agent