《VLA 系列》π0.5 + KI | 知识隔离 | 离散与连续动作联合训练 | 论文与源码解析

π0.5 已经能把多种机器人、任务和通用视觉语言数据放进同一个训练体系,但继续扩大数据并没有消除一个很现实的矛盾:自回归动作 token 训练得快,却要逐 token 解码;Flow Matching 动作专家推理快,却可能让一个随机初始化的机器人模块通过反向传播破坏预训练 VLM 的语言知识。Physical Intelligence 在 Knowledge Insulation(KI,知识隔离) 中给出的答案,不是冻结 VLM,而是把两种动作表示放到同一个模型里训练,并只隔离有害的梯度路径。

这篇论文最值得记住的四点是:

  • 训练时双头、推理时单头:离散 FAST 动作 token 给 VLM 提供稳定的 next-token 学习信号;连续动作专家负责 Flow Matching,部署时只保留后者。
  • 隔离的是梯度,不是信息:动作专家仍能读取 VLM 的视觉、语言和状态表征,但 Flow Matching 损失不能反向改写 VLM backbone。
  • KI 不是冻结 VLM:完全冻结会保住原有知识,也会阻止 VLM 学会机器人数据需要的新表征,论文实验中甚至出现 0% 任务完成率。
  • 速度与泛化同时改善:在 table bussing 上,KI 达到相近性能所需训练步数比 π0 少约 7.5 倍;推理仍保持连续动作专家约 10 Hz 的优势。

论文:arXiv官方 PDF

项目主页:Physical Intelligence:Knowledge Insulation

源码:Physical-Intelligence/openpi

模型与复现入口:openpi README

1、问题:训练快、推理快、保住语言能力,为什么不能同时得到?

1.1、两条常见路线各缺一块

把连续机器人动作离散化成 token 后,VLA 可以像语言模型一样做 next-token prediction。FAST tokenizer 正是这条路线的代表:训练信号与 VLM 预训练形式一致、收敛快,但推理必须顺序生成整个动作块。论文给出的测量是:RTX 4090 上生成 1 秒动作块约需 750 ms,只能达到约 1.3 Hz。

π0 的另一条路线是在 VLM 旁边增加约 300M 参数的 action expert,用 Flow Matching 一次并行预测整个连续动作块。它可达到约 10 Hz,但 action expert 从随机权重开始训练。如果动作损失一路回传到 VLM,机器人数据产生的梯度就会与预训练语言表征相互干扰,语言指令遵循能力随之下降。

上图用 table bussing 说明了这种三难关系:π0 推理快却拿错物体,π0-FAST 能遵循语言但执行慢,而 KI 同时完成了正确抓取和快速执行。注意,这里"快训练"和"快推理"是两种不同指标:前者看达到目标性能所需的优化步数,后者看一个动作块的生成延迟。

1.2、为什么直接冻结 backbone 也不行?

冻结 VLM 看起来最安全:既然担心知识被破坏,就不更新它。但通用 VLM 从未见过足够多的机器人状态---动作对应关系,其原始表征并不天然适合精细控制。冻结后,action expert 只能在固定表征上拟合动作,无法让视觉语言主干适应机器人数据。论文把它概括为:需要保护预训练知识,也需要允许 VLM 通过合适的监督继续学习。

2、π0.5 + KI 的总体结构

KI 没有把 π0.5 改造成世界模型。它仍是一个端到端 VLA:输入多视角 RGB、语言指令和本体状态,输出连续动作块;推理时不预测未来图像,也不需要深度图或隐式视觉子目标。

上图的关键不是多了一个动作头,而是三种学习信号如何分工:蓝色 VLM backbone 学文本和离散动作 token,黄色 action expert 学连续动作;前向时 action expert 可以读取 backbone,反向时这条跨模块路径被 stop-gradient 截断。

组件/信号 输入与输出 训练时作用 推理时是否保留
VLM backbone 图像、提示词、文本化状态 → 上下文表示 通过文本和 FAST 动作 token 的交叉熵适应机器人任务,同时保持通用语义 保留,提供条件表示
FAST 离散动作分支 连续动作 → 离散 token 序列 给 VLM 提供与预训练一致的 next-token 目标 移除,不解码
连续 action expert 噪声动作块 + VLM 条件 → 速度场 用 Flow Matching 学习连续动作生成 保留,真正执行动作
Knowledge Insulation action expert 与 VLM 之间的梯度边界 允许信息前传,阻止动作损失更新 VLM 推理无梯度,不产生额外步骤
VLM/网页共训练数据 caption、VQA、定位等 减少语言与视觉知识遗忘,改善 OOD 物体泛化 不需要

这里也要澄清参数口径:论文架构图把完整 VLM 标为 3B,而附录把语言 backbone 记为 2B;两者并不矛盾,前者是包含视觉编码相关部分的整体口径,后者只指语言主干。连续 action expert 约 300M。

3、训练流程:两种动作表示,各自更新该更新的参数

3.1、联合离散/连续动作预测

对同一条机器人轨迹,模型同时构造两种监督:

  1. FAST tokenizer 把真实连续动作压缩成离散 token,和文本 token 一起做自回归预测;
  2. 对同一动作块加噪,由 action expert 预测从噪声回到数据的速度场;
  3. 通用 VLM 数据和机器人 planning 数据也进入自回归分支,持续给 backbone 提供语义监督;
  4. 两类动作 token 使用隔离的 attention mask,防止离散答案与连续答案互相"偷看"。

设动作块为 a 1 : H a_{1:H} a1:H,论文附录使用 H = 50 H=50 H=50。Flow Matching 先采样高斯噪声 ω \omega ω 和生成时间 τ \tau τ,得到插值动作:

a 1 : H τ , ω = τ a 1 : H + ( 1 − τ ) ω , ω ∼ N ( 0 , I ) a_{1:H}^{\tau,\omega}=\tau a_{1:H}+(1-\tau)\omega,\qquad \omega\sim\mathcal{N}(0,I) a1:Hτ,ω=τa1:H+(1−τ)ω,ω∼N(0,I)

符号 含义 形态/来源 作用
a 1 : H a_{1:H} a1:H 真实连续动作块 数据集轨迹,长度 H = 50 H=50 H=50 Flow Matching 的数据端点
ω \omega ω 高斯噪声动作块 与动作块同形状 生成过程的噪声端点
τ \tau τ 生成模型内部时间 标量,非机器人物理时间 控制插值位置
a 1 : H τ , ω a_{1:H}^{\tau,\omega} a1:Hτ,ω 加噪后的动作块 H , d a H, d_a H,da action expert 的输入

论文并非均匀采样 τ \tau τ,而是用偏向高噪声区间的 Beta 分布:

p ( τ ) = Beta ⁡  ⁣ ( s − τ s ; α = 1.5 , β = 1 ) , s = 0.999 p(\tau)=\operatorname{Beta}\!\left(\frac{s-\tau}{s};\alpha=1.5,\beta=1\right),\qquad s=0.999 p(τ)=Beta(ss−τ;α=1.5,β=1),s=0.999

这里的 α , β \alpha,\beta α,β 是 Beta 分布形状参数, s s s 是数值截断尺度;它们只控制训练时的噪声时间采样,与真实机器人控制频率无关。

3.2、自回归损失与 Flow Matching 损失

文本和离散动作 token 使用标准自回归交叉熵:

L A R - V L A ( θ ) = E ( x , y ) ∼ D − ∑ j = 1 n − 1 M j log ⁡ p θ ( y j + 1 ∣ x 1 : j ) \mathcal{L}{\mathrm{AR\text{-}VLA}}(\theta) =\mathbb{E}{(x,y)\sim\mathcal{D}} \left-\\sum_{j=1}\^{n-1}M_j\\log p_\\theta(y_{j+1}\\mid x_{1:j})\\right LAR-VLA(θ)=E(x,y)∼D−j=1∑n−1Mjlogpθ(yj+1∣x1:j)

符号 含义 作用
x 1 : j x_{1:j} x1:j 到位置 j j j 为止的多模态上下文 条件输入,包含图像、语言、状态等
y j + 1 y_{j+1} yj+1 下一个文本或 FAST 动作 token 预测目标
M j M_j Mj 位置掩码 只在需要监督的位置累计损失
θ \theta θ 模型参数 在 KI 下,AR 分支主要更新 VLM backbone

连续动作专家的目标为:

L F L O W - V L A ( θ ) = E D , τ , ω ∥ ω − a 1 : H − f θ a  ⁣ ( a 1 : H τ , ω ) ∥ 2 2 \mathcal{L}{\mathrm{FLOW\text{-}VLA}}(\theta) =\mathbb{E}{\mathcal{D},\tau,\omega} \left\\left\\\|\\omega-a_{1:H}-f_\\theta\^a\\!\\left(a_{1:H}\^{\\tau,\\omega}\\right)\\right\\\|_2\^2\\right LFLOW-VLA(θ)=ED,τ,ω∥ω−a1:H−fθa(a1:Hτ,ω)∥22

其中 f θ a f_\theta^a fθa 是 action expert 预测的速度场, ω − a 1 : H \omega-a_{1:H} ω−a1:H 是该插值路径上的目标速度;二者形状都与动作块一致。训练是在不同 τ \tau τ 上回归速度,推理时再通过数值积分把噪声逐步推向可执行动作。

联合目标可写成:

L C O - V L A ( θ ) = E − ∑ j M j ℓ log ⁡ p θ ( ℓ \^ j + 1 ∣ x 1 : j ) + α M a c t ∥ ω − a 1 : H − f θ a  ⁣ ( a 1 : H τ , ω ) ∥ 2 2 \mathcal{L}_{\mathrm{CO\text{-}VLA}}(\theta) =\mathbb{E}\left -\\sum_j M_j\^{\\ell}\\log p_\\theta(\\hat\\ell_{j+1}\\mid x_{1:j}) +\\alpha M\^{\\mathrm{act}}\\left\\\|\\omega-a_{1:H}-f_\\theta\^a\\!\\left(a_{1:H}\^{\\tau,\\omega}\\right)\\right\\\|_2\^2 \\right LCO-VLA(θ)=E−j∑Mjℓlogpθ(ℓ\^j+1∣x1:j)+αMact∥ω−a1:H−fθa(a1:Hτ,ω)∥22

这里 ℓ ^ \hat\ell ℓ^ 同时覆盖语言 token 与离散动作 token, M j ℓ M_j^{\ell} Mjℓ 和 M a c t M^{\mathrm{act}} Mact 分别控制自回归样本、动作样本是否参与损失, α \alpha α 是两项的权重。论文指出,在 KI 让两项损失作用于相互独立的参数集合后,可以直接取 α = 1 \alpha=1 α=1,不再需要用权重艰难平衡两条梯度。

3.3、Knowledge Insulation 到底隔离了什么?

action expert 的 query 仍会对 VLM backbone 的 key/value 做注意力;真正的变化是把跨模块的 key/value 看成常量:

K b ′ = sg ⁡ ( K b ) , V b ′ = sg ⁡ ( V b ) K_b'=\operatorname{sg}(K_b),\qquad V_b'=\operatorname{sg}(V_b) Kb′=sg(Kb),Vb′=sg(Vb)

K b , V b K_b,V_b Kb,Vb 是 backbone 产生的 key/value, sg ⁡ ( ⋅ ) \operatorname{sg}(\cdot) sg(⋅) 表示 stop-gradient:前向数值不变,反向梯度为零。于是 action expert 仍能利用 VLM 表征,但 L F L O W - V L A \mathcal{L}_{\mathrm{FLOW\text{-}VLA}} LFLOW-VLA 不会穿过这条路径修改 backbone;backbone 继续由文本和 FAST token 的交叉熵更新。

这和"detach 整个 VLM 输出后冻结所有 VLM 参数"不同。KI 只切断 action loss → VLM 的路径,没有切断 AR loss → VLM 的路径。

4、推理流程:训练期的 FAST 分支被直接丢弃

推理时不再生成离散动作 token,也不需要 VLM 数据。一次控制循环可以概括为:

  1. 读取多相机 RGB、自然语言指令和当前本体状态;
  2. VLM 编码视觉---语言上下文;
  3. 从高斯噪声动作块出发,action expert 多步预测速度场;
  4. 用数值积分得到长度为 50 的连续动作块;
  5. 执行动作块的一部分,然后用新观测重新规划。

以"把桌上的勺子放进垃圾桶"为例,FAST token 在训练中帮助 backbone 学到"勺子""垃圾桶"和动作序列的对应关系;部署时模型不会先拼出一串离散 token,而是让 action expert 直接并行产生抓取、抬起、移动和释放所需的连续关节/末端控制量。这样既保留语义表征,又避开逐 token 解码的延迟。

当前 openpi 的 sample_actions() 默认用 10 个 Euler 步积分连续速度场。这个数字是当前源码默认值,不能反过来当作论文所有实验的统一硬件口径;论文公开的约 10 Hz 与 750 ms 对比也不包含真实机器人完成整段动作的全部环境耗时。

5、源码解析:release checkpoint 用过 KI,但仓库没有开放 KI 训练闭环

本节检查的是 openpi main 分支,commit 15a9616a00943ada6c20a0f158e3adb39df2ccac,提交日期 2026-06-16。最重要的结论先说:公开的 π0.5 checkpoint 在预训练阶段使用了 KI,但当前仓库的 fine-tuning 只实现 Flow Matching 动作损失,没有实现论文中的 FAST + Flow 联合损失和跨模块 stop-gradient。

相关目录可以精简为:

text 复制代码
openpi/
├── scripts/
│   ├── train.py                 # JAX 训练入口
│   └── serve_policy.py          # 策略服务入口
└── src/openpi/
    ├── models/
    │   ├── pi0.py               # 连续动作损失与采样循环
    │   ├── pi0_config.py        # π0 / π0.5 模型配置
    │   └── tokenizer.py         # 文本、状态与 FAST 相关 tokenizer
    ├── policies/policy.py       # 观测变换、推理封装
    └── training/config.py       # 数据集、checkpoint 与训练配置
论文概念 当前源码落点 实际状态
π0.5 模型初始化 models/pi0_config.pyPi0 可用;配置 VLM、action expert、动作维度与 horizon
状态文本化 PaligemmaTokenizer π0.5 将本体状态离散化后写入提示序列
Flow Matching 损失 Pi0.compute_loss() 可用;采样噪声/时间、插值、预测速度并做 MSE
连续动作采样 Pi0.sample_actions() 可用;默认 10 步 Euler 积分
FAST 离散动作 CE 与 Flow 联合训练 无对应训练路径 未开放
action expert → VLM stop-gradient 无对应 stop_gradient/detach 路径 未开放
π0.5 KI 预训练权重 README/checkpoint 配置 可用于推理与常规 Flow fine-tuning

5.1、当前 compute_loss() 做了什么

源码中的核心数据流可概括为:

python 复制代码
noise = sample_noise(actions.shape)
time = sample_beta_time(batch_size)
x_t = time * actions + (1 - time) * noise
pred = model(observation, x_t, time)
loss = mean(square(pred - (noise - actions)))

输入是真实动作、噪声动作和多模态观测,输出是每个动作维度上的速度场误差。这里没有第二个 FAST token 交叉熵,也没有让该交叉熵继续更新 VLM 的 KI 配方。因此,仅用当前 train.py 启动 π0.5 微调,不等于复现论文的单阶段 KI 训练。

作者在官方 GitHub issue #649 中进一步确认:openpi 微调会让 Flow Matching 损失同时更新 action expert 和 VLM;若要做论文式 KI 微调,还需要添加 FAST 动作 token 目标,并只阻断 action expert 损失到 VLM 的梯度。简单设置 freeze_vlm=True 并不是等价替代,论文也显示这通常会掉点。

5.2、当前仓库能可靠复现到哪一步

官方环境要求以 Ubuntu 22.04 为主。README 给出的显存参考是:推理超过 8 GB,LoRA 微调超过 22.5 GB,全量微调超过 70 GB。可以先使用公开的 DROID checkpoint 启动策略服务:

bash 复制代码
uv run scripts/serve_policy.py policy:checkpoint \
  --policy.config=pi05_droid \
  --policy.dir=s3://openpi-assets/checkpoints/pi05_droid

这条路径能验证"用 KI 预训练过的 π0.5 权重 + 连续 action expert 推理",也能进入仓库支持的 Flow Matching 微调流程;它不能验证从随机/通用 VLM 开始的完整 KI 联合训练。真正复现论文还需作者尚未合入主仓库的联合数据管线、双重 attention mask、FAST 交叉熵和 stop-gradient 实现。

6、实验:KI 赢在哪里,比较口径是什么?

6.1、任务与统计口径

论文同时做了 specialist、generalist 和仿真评测。真机任务包括 drawer、T-shirt folding、table bussing、make bed、dish in sink、DROID,以及移动操作;generalist 数据覆盖 12 种机器人配置,并混合 OXE、caption、VQA 和目标定位等 VLM 数据。每个真机任务、每个策略评测 10 个 episode,并使用双侧 t-test。

图 3 展示了评测跨度:既有固定单臂和双臂,也有移动双臂与仿真。不同图里的"平均任务完成率"并不总是同一任务集合,不能把柱高跨图直接当作严格横评。

6.2、specialist:同时保住任务成功率和语言遵循

在 items in drawer 上,KI 的平均任务完成率约 95%,明显高于 joint-training、π0、π0-FAST、HybridVLA、Transfusion 和 frozen backbone。该图中的非表格数字是按柱状图读出的近似值,精确结论应以论文图注和显著性标记为准。消融最有价值的观察是:允许 action expert 梯度进入 backbone 会伤害语言遵循;冻结 backbone 也无法获得高性能。

table bussing 的结果把训练/推理差异放到同一张图里:π0-FAST 的任务性能和语言遵循不错,但完成整项任务的墙钟时间约为 KI 的两倍;π0 推理快,却更容易偏离语言要求。DROID 上,KI 得分为 0.55 ± 0.09 0.55\pm0.09 0.55±0.09,π0 为 0.49 ± 0.09 0.49\pm0.09 0.49±0.09,π0-FAST 为 0.45 ± 0.09 0.45\pm0.09 0.45±0.09。

6.3、generalist:约 7.5 倍训练步数优势

图 6 右侧是论文"训练快"的直接证据:KI 与 π0-FAST 在约 160k step 已接近饱和,而 π0 约需 1200k step 才达到相似 task completion,步数比约为 7.5。KI 每个训练 step 因多了离散动作预测,计算量约增加 20%,但更少的优化步数仍让总训练效率占优。

左侧还说明 VLM 数据的作用有条件性:对 KI,自回归动作监督已经提供了较稳定的 backbone 学习信号,因此移除 VLM 数据对该任务的影响较小;对没有梯度隔离的 joint-training,VLM 数据对语言遵循更重要。

在未见物体和衬衫折叠上,VLM 数据共训练更明显地改善域外泛化。这说明 KI 不是仅靠结构隔离"保住旧知识",它还允许通用数据持续塑造 backbone,使视觉语义能迁移到新物体和新场景。

6.4、移动操作与 LIBERO

未见环境的移动操作中,带 VLM 数据的 KI 平均任务完成率约 77%,π0 约 26%。LIBERO 表格的精确结果如下:

方法 Spatial Object Goal Long LIBERO-90
OpenVLA-OFT 97.6 98.4 97.9 94.5 ---
π0 96.8 98.8 95.8 85.2 ---
π0-FAST 96.4 96.8 88.6 60.2 ---
KI(从头训练) 96.6 97.2 94.6 84.8 92.7
KI(generalist 初始化) 98.0 97.8 95.6 85.8 96.0

KI 在 Spatial 和 LIBERO-90 上达到论文报告的 SOTA,但在 Long/部分 LIBERO-10 子集并不优于 OpenVLA-OFT。原因可能同时包含模型、预训练数据和微调配方,不能只归因于 KI 结构本身。

6.5、收益不是状态 token 小技巧带来的

论文还比较了文本状态、连续状态和专用状态 token。KI 的文本状态与连续状态都明显优于 π0 对应设置,而专用 token 反而更弱。这排除了"只是把 state 写进文本才赢"的简单解释,主要增益仍来自联合动作表示和梯度隔离。

7、工程判断:KI 更像训练配方升级,不是部署架构膨胀

从工程角度看,KI 的价值在于把额外复杂度放在训练期:增加 FAST 离散目标、VLM 数据共训练和梯度边界,换来更稳定的 VLM 适配;部署时删掉 FAST 分支,仍走 π0 系列的连续动作专家。因此它适合已经拥有预训练 VLM、异构机器人数据,并且既在意语言泛化又在意控制延迟的团队。

它也有清晰边界:训练单步计算约增加 20%;语言遵循仍不完美;论文所需的完整 KI 训练代码和数据混合尚未在 openpi 主仓库开放;真实收益依赖足够丰富的离散动作、自回归/VLM 数据。若只有小规模单一机器人数据,直接套 stop-gradient 未必能复现论文结果。

相关推荐
ACP广源盛139246256731 小时前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
小柯南敲键盘1 小时前
跨马翻译:跨境电商批量图片翻译与视频字幕一站式工具
人工智能·python·音视频
微硬创新1 小时前
老旧产线改造:耐达讯自动化16路4‑20mA转PROFINET的工程实践
人工智能·网络协议·自动化·信息与通信
小智GEO观察1 小时前
衡量标准之变:企业传播的价值评估正在经历一次静默重构
人工智能·重构
天工开户012 小时前
2026 Facebook投放正在发生的7个变化
人工智能·经验分享·facebook
Henry-SAP2 小时前
SAP S/4HANA引领物流ERP新生态
人工智能·云原生·sap·erp
梦想的旅途22 小时前
企业微信 API 二次开发:AI 智能体接入外部群架构
人工智能·企业微信
Eloudy2 小时前
ReAct 原理简介
前端·javascript·人工智能·react.js·agent·gpu
COOLMO研究AI2 小时前
Python 如何在 AI 接口中实现请求幂等性:防止重复提交与重复扣费
人工智能·python·php
微三云-张梅2 小时前
东莞企业做GEO:AI信任体系的三个建设层级
大数据·人工智能·微三云geo·东莞系统开发·东莞geo