一句话定位
Octo 是首个完全开源(含预训练管线、checkpoint、数据加载器)、且能被高效微调到全新观测/动作空间的通用机器人策略(Generalist Robot Policy, GRP):一个 transformer-first 骨干 + 扩散动作头,在 open-x-embodiment 的 80 万条真机轨迹(25 个子数据集)上做模仿预训练,既可用语言指令也可用目标图像指定任务,开箱即控多种机械臂,并能在单张消费级 A5000上用约 100 条演示、5 小时微调迁移到新传感器(力/力矩)、新动作空间(关节位置控制)乃至新本体(双臂 ALOHA)。两个开源规模:Octo-Small 27M、Octo-Base 93M。
背景与定位
论文攻击的是「通用机器人模型」这一开放难题:NLP/CV 已有可复用的通用预训练骨干,而机器人一直「一任务一机器人各训一个」。此前的 GRP——robocat(RoboCat,目标条件多本体)、open-x-embodiment 的 RT-1-X / RT-2-X(语言条件跨 5 本体)——虽已展示跨本体控制,但被三个短板锁死:(1) 强约束下游用户只能沿用预训练时的固定输入(如单摄像头)与动作空间;(2) 缺乏对新域的有效微调支持;(3) 最大的模型不对公众开放。
Octo 的核心设计取向是灵活性 + 可扩展性:用一套 block-wise masked attention 的 transformer,把「任意输入 token(观测 + 任务)→ 输出 token(解码成动作)」统一起来,微调时只需增删 token / 加轻量 encoder / 加新 head,不动预训练的 transformer 权重。方法论上,Octo 把三样已在别处出现的组件——transformer 策略骨干、语言 + 目标图像双模态任务指定、diffusion-policy(Chi et al. 的扩散动作解码)——首次组合进跨本体通用策略,并叠加 aloha-act(ACT)提出的 action chunking 与来自可扩展 ViT 训练文献(学习率调度、模型阶梯)的工程实践。范式名:跨本体通用机器人策略预训练 + 组合式可微调接口。与同期靠大 VLM 骨干输出离散动作 token 的 RT-2-X(55B)路线不同,Octo 走「小策略 + 连续扩散动作」路线;与后来的 hpt-heterogeneous-pretrained-transformers、lapa-latent-action-pretraining 同属「如何吃下异构机器人数据」的探索谱系。发表于 RSS 2024(Delft)。
模型架构
核心是一个 transformer 策略 π,三段式:输入 tokenizer → transformer 骨干 → readout head。
输入 tokenizer(模态特定)
- 语言:先分词,再过冻结的 t5-base(111M),产出 16 个语言 embedding token。(消融发现冻结 base 最好;换 t5-small 30M / t5-large 386M 或微调最后两层都没提升,归因于多数数据集缺乏丰富自由语言标注。)
- 图像观测 / 目标图像:过一个很浅的卷积 stack,切成 16×16 patch(第三人称图 → 256 token,腕部相机图 → 64 token)。这是「transformer-first」设计:几乎不用大 ResNet encoder,把参数与 FLOPS 集中在 transformer 骨干里(与 canonical ViT 一致)。
- 输入序列 = [任务 token, 观测 token₁, 观测 token₂, …] + 可学习位置 embedding。
Transformer 骨干(block-wise masked attention)
- 观测 token 只能因果地注意到「同时刻或更早」的观测 token 以及任务 token;不存在的观测(如某数据集无语言)被整块 mask 掉。
- 插入可学习的 readout token(类似 BERT 的 [CLS]):它注意前面的观测/任务 token,但不被任何观测/任务 token 注意——只被动读出内部 embedding,不影响它们。这种模块化让微调时能自由增删观测/任务/head 而不重初始化预训练权重(对比 RT-1 / GNM 那种「改一个图像输入就要重训大块」)。
扩散动作头(diffusion action head)
- 施加在 readout token 的 embedding 上,预测连续、多模态动作分布,且预测一个 action chunk(一次预测未来数步)。
- 结构:3 层 MLP,hidden dim 256,带残差连接与 LayerNorm;标准 DDPM 目标,cosine 噪声 schedule,20 步去噪。关键工程点:每次动作预测只跑一次 transformer 前向,多步去噪全在这个小 head 内完成(省算力)。
- 预训练 chunk size = 4(README FAQ);观测历史 window = 2 帧(超过 1 帧额外历史收益急剧递减)。
规模阶梯(Table V)
| 变体 | Layers | Hidden D | MLP size | Heads | Params |
|---|---|---|---|---|---|
| Octo-Tiny | — | — | — | — | 10M(仅缩放消融用) |
| Octo-Small | 12 | 384 | 1536 | 6 | 27M |
| Octo-Base | 12 | 768 | 3072 | 12 | 93M |
(Small/Base 骨干分别对标 ViT-S / ViT-B。)
数据
- 规模:Open X-Embodiment 约 150 万条 episode 中,筛出 80 万条作训练——作者称是当时最大的机器人操作演示集(RT-X 只用了更受限的 35 万条子集)。预处理后数据集约 1.2TB(README)。
- 组成:手工筛选 25 个 OXE 子数据集(内部代号
oxe_magic_soup)。采样权重主要按各集样本量、再做少量手工调整。
混合配比(Table III,每 batch 平均占比)
| 数据集 | 占比 | 数据集 | 占比 |
|---|---|---|---|
| Fractal (RT-1) | 17.0% | Toto | 2.4% |
| Kuka | 17.0% | Austin Sirius | 2.3% |
| Bridge | 17.0% | Berkeley Autolab UR5 | 1.5% |
| BC-Z | 9.1% | IAMLab CMU Pickup Insert | 1.2% |
| Stanford Hydra | 6.0% | Viola | 1.2% |
| Language Table | 5.9% | Berkeley Fanuc | 1.0% |
| Taco Play | 3.6% | NYU Franka Play | 0.9% |
| Furniture Bench | 3.3% | Jaco Play | 0.6% |
| UT Austin Mutex | 3.0% | Berkeley Cable Routing | 0.3% |
| Austin Sailor | 2.9% | Austin Buds | 0.3% |
| Roboturk | 2.8% | CMU Stretch / NYU Door / DLR EDAN / UCSD Kitchen | ≤0.2% |
- curation 规则:先剔除「无图像流」「非 delta 末端执行器控制」的集;再剔除过度重复、低分辨率、过于小众的集。把剩余集粗分「更多样/更少样」,更多样的权重翻倍;对少数重复 episode 多的集降权。
- 对齐:缺失相机通道零填充;统一夹爪动作——+1 = 张开,0 = 闭合(消融表明这种「绝对夹爪表示」优于「相对表示」)。
- 模态覆盖偏斜(论文自陈的短板根因):仅 27% 数据含腕部相机,仅 56% 数据含语言标注——这直接导致腕部相机处理弱、语言条件不如目标图像条件。
- 动作标注 / 自监督:对无语言标注的数据集一律用目标图像条件;训练时用 hindsight goal relabeling(从轨迹未来均匀采一状态当目标图),并对每条样本随机置零语言或目标图,使模型既能语言也能目标图条件。
- v1.5 数据侧改动:用 GPT-3.5 对语言指令做改写增广(README)。
训练方法
- 目标:扩散策略的标准 DDPM 去噪目标(Chi et al. / Ho et al.),cosine schedule,20 步。作者对比发现扩散头在 zero-shot 与微调上都优于 MSE 头与离散动作头。
- 优化器/调度:AdamW,学习率 3e-4,inverse-square-root(reciprocal square-root)衰减,2000 步线性 warmup,weight decay 0.1,梯度裁剪 1.0,batch size 2048。
- 预训练步数:Octo-Base 训 300k 步。
- 图像增广:第三人称相机——随机裁剪→resize 到 256×256→color jitter;腕部相机——同样但不随机裁剪,resize 到 128×128;像素归一到 [-1, 1]。
- 数据加载工程:在解码图像前先跨轨迹 shuffle/interleave 帧,使 shuffle buffer 撑到 50 万(小 buffer 20k + 轨迹级 interleave 会显著掉 zero-shot 性能);每条轨迹最多抽 100 个随机步避免长 episode 挤爆 buffer。
- 微调配方(全模型更新,统一超参):给约 100 条目标域演示,微调 50k 步,cosine decay + 线性 warmup。作者发现更新全模型优于冻结部分预训练参数;对新观测/新动作空间只需加对应 encoder/位置 embedding/新 head。
- v1.5 训练侧修正(README):把语言 token 在上下文窗口每个时刻重复以增强视觉-语言 cross-attention;关掉扩散头 dropout(与 LayerNorm 不兼容);修 attention mask off-by-one;修图像增广随机种子。
Infra(训练 / 推理工程)
- 训练硬件:TPU v4-128 pod。Octo-Base(ViT-B,300k 步,batch 2048)约 14 小时;Octo-Small 约 8 小时(README)。
- 微调硬件:单张 NVIDIA A5000(24GB VRAM)约 5 小时(可多卡加速)——刻意压到「消费级、可及」的算力预算。
- 精度 / 并行细节:论文未披露具体并行策略与数值精度(框架为 JAX)。
- 推理吞吐:单张 NVIDIA 4090 上 Octo-Base 13 it/sec、Octo-Small 17 it/sec(README)。得益于「每步动作只跑一次 transformer 前向、去噪在小 head 内完成」。
- 实机控制频率(微调评测披露,因平台而异):CMU Baking 动作 15 Hz(R2D2 Franka 控制器)、Stanford Coffee 10 Hz(基于 Polymetis)、Berkeley Coke(ViperX,末端 delta 控制)5 Hz。双臂 ALOHA 用 chunk=64 训练、test 时 receding-horizon 每次执行 12 个动作再重规划。
评测 benchmark
在 4 家机构、9 个真机 setup 上评测(数据均取自源自 project page 与论文 Fig.3 / Table I)。
Zero-shot 开箱控制(成功率)
| 方法 | WidowX | UR5 | RT-1 Robot |
|---|---|---|---|
| RT-1-X (35M) | 0.20 | 0.35 | 0.60 |
| RT-2-X (55B) | 0.50 | — | 0.85 |
| Octo | 0.50 | 0.70 | 0.80 |
- 语言条件下 Octo 平均比 RT-1-X 高 29%,与 55B 的 RT-2-X 相当。
- Octo 额外支持目标图像条件:WidowX 上目标图条件比语言条件平均高 25%。
数据高效微调(成功率,各约 100 条演示、统一超参,Table I)
| 方法 | CMU Baking | Stanford Coffee | Berkeley Peg Insert* | Berkeley Pick-Up† | Berkeley Coke | Berkeley Bimanual† | 平均 |
|---|---|---|---|---|---|---|---|
| ResNet+Transformer Scratch (28M) | 0.25 | 0.45 | 0.10 | 0.00 | 0.20 | 0.20 | 0.20 |
| VC-1 (视觉表征预训练) | 0.30 | 0.00 | 0.05 | 0.00 | 0.10 | 0.50 | 0.15 |
| Octo | 0.50 | 0.75 | 0.70 | 0.60 | 1.00 | 0.80 | 0.72 |
(* 新观测:力/力矩本体感受;† 新动作空间:关节位置控制。数值取自论文 Table I,与 project page 微调总表一致。)Octo 平均比次优 baseline 高 52%。
设计消融(Table II/VI,均在 WidowX,40 trials 平均)
| 配置 | 聚合成功率 |
|---|---|
| Octo-Small(完整) | 83% |
| 数据:RT-X 11-集混合 | 60% |
| 数据:仅单机器人(Bridge) | 43% |
| 策略:离散动作预测 | 18% |
| 策略:连续 MSE 预测 | 35% |
| 架构:ResNet-50 + Transformer | 70% |
结论:最宽数据混合 + ViT/transformer-first 架构 + 扩散动作头三者各自都显著更优。
规模缩放:Octo-Tiny(10M) < Small(27M) < Base(93M),zero-shot 随规模单调提升;Base 对初始场景更鲁棒、更少过早抓取。
泛化分解(Table VII,WidowX):in-distribution 85%、novel objects 80%、novel environment 40%、novel skill 仅 5%(翻杯、插槽等新技能几乎不会)。
创新点与影响
贡献:(1) 首个完全开源可复现的通用机器人策略——放出预训练管线、27M/93M checkpoint、以及 JAX/PyTorch 双端 OXE 数据加载器(MIT 协议);(2) 首个能有效微调到新观测与新动作空间的 GRP,靠 block-wise attention + readout token 的组合式接口,微调时不动预训练骨干;(3) 把 transformer 策略 + 语言/目标图双条件 + 扩散动作头首次组合进跨本体设定,并给出成体系的设计消融(数据宽度、扩散 vs MSE vs 离散、ViT vs ResNet、模型规模、patch size、shuffle buffer 等「有效/无效清单」),成为后续研究的配方参考。
影响:Octo 与 open-x-embodiment 一起成为 2024 年开源通用机器人策略的事实基线,被后续 VLA(如 OpenVLA 等)反复作为对比与初始化对象;它证明了「小策略 + 连续扩散动作」路线在开箱多机器人控制上能追平 55B 级 VLM(RT-2-X),且推理与微调成本低到消费级 GPU 可及。
作者自陈局限:(1) 腕部相机处理不佳——微调时常只用第三人称相机反而更好,根因是仅 27% 数据含腕部相机;(2) 语言条件明显弱于目标图条件,根因是仅 56% 数据有语言标注且标注贫乏;(3) 全靠最优演示的模仿学习,未用次优/在线交互数据;(4) 只在单臂/双臂操作上训练评测,未涉导航/移动操作;(5) 加入本体感受输入反而变差(疑似因果混淆);(6) 新技能泛化很弱(Table VII novel skill 5%)。
原始链接
- 论文 arXiv:https://arxiv.org/abs/2405.12213 (PDF:https://arxiv.org/pdf/2405.12213 )
- 项目主页:https://octo-models.github.io/
- 代码 GitHub:https://github.com/octo-models/octo
- 权重 HuggingFace:https://huggingface.co/rail-berkeley (octo-small / octo-base / *-1.5)
- 发表:Robotics: Science and Systems (RSS) 2024, Delft, Netherlands
一手源存档(sources/)
- octo—github-readme — GitHub README(含推理吞吐 13/17 it/sec、TPU v4-128 8h/14h、1.2TB、chunk=4、window=2、v1.5 改动)
- octo—project-page — 项目主页(zero-shot / 微调成功率总表、模态覆盖说明)
- arXiv 原文 PDF(不入 git):https://arxiv.org/pdf/2405.12213