作者:向阳
原文链接:https://zhuanlan.zhihu.com/p/2057411805450866980
最近我在准备从 LLM Post-training 转向 VLA。读完 π0 / π0.5 / RT-2 这一批 imitation learning,以及 π0.6-Recap、RLDG、SERL/HIL-SERL、VLAC、EXPO-FT、dVLA-RL 等 RL 方向的工作后,我反复有一种奇怪的熟悉感——这些论文里描述的训练难题,在我做 Agentic RL 时都或多或少踩过。这篇 blog 是我对这种熟悉感的尝试性翻译。
立场
本人在某电商大厂做智能导购的 LLM 后训练——用户在对话框里说需求,模型理解意图并召回商品,兼顾相关性和多样性。核心方案是 query 改写 + 商品筛选 两阶段:改写把模糊需求转成 3 条互补检索词(基础改写、条件扩展、知识驱动),筛选把 60 个候选压到 10 个。
RL 相关我经历了三个阶段:
1、 两模型独立 SFT + PPO——边界清晰,但 query 改写看不到最终商品列表,3 条 query 全部 collapse 到”条件扩展”这一种最容易得高分的策略,典型 reward hacking
2、 用筛选后商品列表反向指导 query RL——趋同解决,但两模型仍是割裂的
3、 Agentic RL 联合优化——两模型合并,中间调用检索工具,用最终商品的 preference 做统一 reward。这一阶段踩坑最多:reward 震荡、梯度爆炸、reward 停滞、critic loss 早早归零、KL 飙升、新形态的 reward hacking
后面的分析都围绕这三个阶段的经验展开。
Part 1 · RLHF 工业战场的 4 个坑
按重要性排序。
坑 1:训推不一致
现象:vLLM 推理引擎为了加速做了大量算子融合和计算顺序调整,和 Torch 训练引擎在同一 sequence 上算出的 logits 有可测量的差异。计算 importance ratio 时引入 bias,直接表现为训练震荡。
解:TIS (Truncated Importance Sampling)。核心思路是把 importance ratio 分解为两部分——训推引擎差异引入的 bias(异常,需要截断)+ 模型 update 前后同一 token 的正常概率变化(保留)。截断只作用在前者。
一句话:训推不一致是工业 RL 系统的结构性问题,不是 bug。
坑 2:长序列 PPO 崩溃
现象:trajectory 一超过 2K-4K token loss 就爆炸。我们的输入包括对话历史、用户记忆画像、检索平台返回的商品信息,实际 sequence 常常超过 10K。长序列下 cumulative log-ratio 被放大,advantage 信号方差非平稳。
解:自适应 KL controller + advantage normalization。前者根据当前 policy 与 ref 的 KL 动态调整 KL 系数,后者防止 advantage 方差在长序列上爆炸。
一句话:长序列下固定 KL 会失控,advantage 必须做 online normalization。
坑 3:Reward Hacking 的工业级形态
现象:两种典型作弊——(a) Multi-Query 生成中 3 条本应互补的查询 collapse 到单一”条件扩展”类型;(b) 商品筛选 10 个位置里后 3 个和前 7 个高度重复。前者是相关性 reward 的漏洞,后者是相关性和多样性两个指标冲突后的局部最优。
解:两条组合拳——把 reward 从中间步骤(query 质量)后移到 trajectory 终态(最终商品列表相关性)+ 相关性和多样性指标分开计算再加权求和,避免混在一起 dilute 信号。
一句话:reward 链路越短,越容易被钻空子;多目标混着算等于告诉模型”重点不重要”。
坑 4:多步 Agent 联合优化
现象:query 改写 + 商品筛选共享终态 reward 且互相依赖。两阶段独立优化切断 credit assignment——上游对下游无 awareness,下游对上游分布敏感。
解:合并成一个模型,端到端 RL,中间显式 tool call。这就进入 Agentic RL 领域,也是坑 1 和坑 2 加剧版本出现的地方。
一句话:credit assignment 交给统一 trajectory,比手工拆分子目标更稳。
Part 2 · VLA-RL 现状速览
主流 VLA(RT-2 / π0 / π0.5 / OpenVLA)都是 imitation learning——喂演示数据,模型 mimic。但 imitation 有天花板:演示数据的天花板就是模型能力的天花板。因此 RL fine-tune 是必然方向。
据我观察目前没有 winning recipe,主要三条并行路线。
路线 A:SERL 系(Sergey Levine 团队,真机 sample-efficient RL)
SERL 用 RLPD(基于 SAC) 做 off-policy 训练:每采一步就加入 replay buffer,UTD 拉到 10-20,用一个二元判别器判断任务是否完成作为唯一 reward,加上 forward-backward 双 policy 提高 reset 效率。HIL-SERL 引入 human-in-the-loop 干预,处理危险动作和难 case。RLDG 是多任务扩展:每个任务独立训练一个 specialist,然后用 specialist rollout 数据蒸馏 OpenVLA 这样的 generalist。
局限:人在环成本高,场景受限。
路线 B:PI 部署栈(π0.6 + Recap)
Recap 借鉴 advantage 思想,但整体上不算完整 RL。核心是先训练一个 value function,预测当前状态到任务完成的归一化剩余步数([-1, 0])。训练完后,用 value 差分(可离散化为 0/1 indicator)标记一个 chunk 是好动作还是坏动作。这个 indicator 作为 conditioning 塞给 VLM——推理时固定条件在”高 advantage”(1)上,类似 CFG。
值得注意:失败轨迹也参与训练——PI 用 P(success) 类型信号绕过了”失败轨迹没有 completion 步数”的问题。
我的判断:这个 indicator 本质是 chunk 级别的 credit assignment 信号,是一种轻量、稳定的 RL 替代方案。
路线 C:算法创新
1、VLAC:训练一个通用 process reward model,比较相邻两步的 progress 差作为 dense reward,PPO + MC 采样优化
2、EXPO-FT:不直接优化 VLA,而是训练一个小的残差编辑网络——大模型输出基础动作 a,小模型学 delta,用 Q 值 + 熵正则做 RL。绕开了 flow matching 与 PPO 兼容难的问题
3、dVLA-RL:把 flow matching 的多步 denoising 当 MDP 概率连乘,用可计算的”路径概率”替代”动作概率”,让 PPO 直接应用于 diffusion VLA;以 chunk 为单位算 advantage,广播到 chunk 内每步 denoising
共同 theme:用中间信号解决 credit assignment,不同的是切入点——process reward、残差编辑、或 denoising 路径。
Part 3 · 4 个坑的跨域映射
按 (a) LLM 中的形态 → (b) VLA 中的对应版本 → © 可能的应对方向 三段式。
3.1 训推不一致 → Sim-to-Real Gap
LLM 中:vLLM 与 Torch 在同一 sequence 上 logits 差异,on-policy 变 off-policy
VLA 中:仿真训练的 policy 到真机崩溃——摩擦、传感器噪声、时延都是”仿真里没建模好”的分布漂移。本质就是训推不一致的物理世界版本
可能应对:能否借鉴 TIS 的思路,对 sim 和 real 分布之间的 importance ratio 做截断?具体做法——同一任务集分别在 sim 和 real 采样,统计 log-ratio 分布,超阈值样本截断以纠偏。这是我认为值得跑实验的方向
3.2 长序列 PPO 崩溃 → 长 horizon 操作任务
LLM 中:10K token trajectory 下 advantage 方差爆炸,自适应 KL 兜底
VLA 中:叠衣服、做饭这种任务 trajectory 跨越数百到数千 timestep,credit assignment 难度爆炸
一个反直觉的观察:LLM 的 Agentic RL trajectory 也上万 token,为什么终态 reward 能 work、VLA 却不行?
我的分析有三个原因:
1、 LLM 关键决策 token 只有几百——大部分 token 在关键 token 确定后是必然连贯的,prior 帮做了隐式 credit assignment。VLA 每个动作 token 都能影响成败
2、 终态 reward 信噪比不同——代码/数学成功界限很硬,机器人任务的成功检测器有噪声,“成功”边界模糊
3、 采样效率——LLM 每次采样几百毫秒,能靠暴力样本量做 denoise;VLA 的采样成本让暴力路径完全走不通
所以业界都在向 dense process reward 收敛(VLAC、SARM、Recap 的 value 差)——这不是一时权宜,而是采样成本约束下的必然选择。
3.3 Reward Hacking → 物理 Reward Hacking
LLM 中:Multi-Query collapse、商品筛选倾向同品牌、位置重复——只要 reward 有漏洞总会被钻
VLA 中:物理 reward hacking 更隐蔽,因为 reward 基于视觉观测:
- “把杯子放到桌上” → 中间过程把桌上其他杯子推倒也算完成
- “叠衣服” → 揉成团塞到边缘蒙混 vision-based reward
- “打扫房间” → 把垃圾藏到摄像头看不见的地方
可能应对:
- reward 定义要包含明确终态状态 + 无副作用约束(“垃圾放垃圾桶 + 没损坏其他物品”)
- 用终态结果指导中间步骤——我担心 VLAC 那种纯 progress 信号容易跑偏,因为”进步”本身可以被钻(推倒杯子也算 progress)
- 步数惩罚——快速稳定完成比慢慢磨蹭好
3.4 Agent 联合优化 → VLA 端到端 RL
LLM 中:query 生成 + 筛选合并成一个模型端到端 RL
VLA 中:传统机器人 stack 是 perception → planning → control 三段独立,VLA 主张端到端。但目前主要是 imitation 端到端,还没有真正 RL 端到端
π0.5 / π0.6 已经在做 planning + perception 一体化(先出 sub-task 再出动作),EXPO-FT 用两个互补模型分工——都是折衷方案
可能应对:world model + RL(Dreamer / GR00T / Cosmos 那条线)——在 dream 中做 cheap rollout,用 real rollout 校准。这是目前看到最有希望绕开采样成本的路径
Part 4 · LLM 和 VLA 的核心差异
跨域映射中反复遇到的差异,可以浓缩为下面五个维度:
| 维度 | LLM Agentic RL | VLA-RL | 后果 |
|---|---|---|---|
| Base model prior | 互联网级 pretraining | 演示级 imitation(少 6-8 个数量级) | prior 弱 → 需 dense reward 兜底 |
| Action space | 离散 token(有语义) | 7-14 DoF 连续控制 | flow matching 与 PPO 兼容难 |
| 有效决策步 | ~100 关键 token | ~1000-10000 timestep | credit assignment 难度爆炸 |
| Rollout 成本 | 毫秒级 | 分钟到小时级 | on-policy / 暴力 sample 都不可行 |
| Reward 信噪比 | 高(可 verify) | 低(vision-based 有噪声) | 需要 process reward + 副作用约束 |
Action space 这一层特别关键——它直接决定了 VLA 无法像 LLM 那样”优雅地”解 RL:
- 直接离散化:token 语义变了,VLM 不理解,需要大量 pretraining,且有精度损失
- Flow matching:能处理连续,但 loss 形式与 VLM 不兼容,动作梯度传不回 VLM
- Fast tokenizer 类方案:折衷但仍需 co-training
这就是 EXPO-FT 用残差、dVLA-RL 用路径概率、Recap 用 chunk indicator 的深层原因——都是在绕开这个根本困难。
Part 5 · 一个具体猜想:Outcome + Process Reward 的时序切换
核心问题:VLA 长 horizon 任务只有终态 1 bit,credit assignment 极难。行业方案是 reward shaping / curriculum / HER,但这些都是”补足中间 reward”——而这正是 reward hacking 的温床(VLAC 的 progress 信号就有这个隐患)。
我的猜想:不要静态地补 reward,而是在训练时序上动态切换 reward 类型:
1、 早期(critic 未收敛):用 process reward(progress 差、Recap 的 value change 类信号)只用于稳定训练,不主导 policy update
2、 中期(critic 逐渐收敛):process reward 与终态 reward 加权混合
3、 晚期(critic 稳定):切换到纯终态 reward + 副作用约束——逼迫模型学”真正稳定完成任务”而非”投机过关”
背后的假设是:process reward 是训练稳定性的支架,不是最终目标。当支架撑起了 critic 之后应该拆掉。
可验证性:在 ManiSkill / RoboCasa 上做对照——同一任务比较 pure dense / pure sparse / stage-switched 三组的最终表现,尤其看是否产生 reward hacking 行为。
结语
以上是我作为 VLA 新手的初步思考。有些技术判断确实还需要多验证,写错的地方请直接指正——我很想被反驳。