Galaxea G0.5 模型解析:从VLA-0到统一自回归序列的实践与思考
Galaxea G0.5 模型解析:从VLA-0到统一自回归序列的实践与思考
先说结论
VLA-0以纯文本形式输出动作(如“550 380 500”),证明不经架构修改即可达到强基线,掩码增强是防止模型盲目续写的关键。
G0.5通过残差向量量化将异构机器人动作映射到共享词表,并只预测活跃部件,显著降低解码负担。
原生思维链将子任务、目标框、轨迹与动作交错生成,在复杂操作中提升指令遵循,但测试时需固定模板以避免不稳定。
从从业者视角看,自回归VLA的价值不在技术新奇,而在于用最简单的方式保留VLM预训练能力,本文分析其设计取舍与实际部署的边界。
如果你关注过机器人VLA的进展,一定对“VLM作为编码器 + 扩散动作头”组合不陌生——π0、π0.5、GR00T N1都走这条路。但它有个隐忧:VLM只输出压缩后的条件,推理能力藏在瓶颈里;动作专家梯度反向传播还容易污染语言能力,逼出“知识隔离”这类补救。
那如果反过来呢?让VLM直接输出动作,用同一套权重搞定推理和控制?
Galaxea G0.5 就是这种思路的集大成者。而它最有趣的起点,是NVIDIA一个叫VLA-0的小实验——没改任何模型结构,只用文本数字串当动作,就在LIBERO上超过了带复杂动作头的方案。这给了业界一个信号:自回归路线不是瓶颈,关键是怎么让token生成更高效。
从VLA-0说起:自回归路线被低估了吗
VLA-0的配方简单到让人怀疑:把连续动作(比如7维关节角度)映射到[0,1000]的整数,以空格分隔的文本字符串输出。没有新token,没有新层,就用预训练VLM的文本生成能力。
它能work的核心有三点:掩码动作增强(随机遮住部分数字,强迫模型看图说话)、时序集成预测(每一步预测未来N步,取平均消抖)、以及直接用文本天然的高精度(1000个格子足够覆盖大部分场景)。
但VLA-0有个硬伤:每个时间步都要生成一大段数字,控制频率一高,token数暴涨。拿7维动作、预测步长H=10来说,一次生成70个数字token,在高频控制场景(比如揉面团)根本跑不动。
这就是G0.5要解决的核心问题:不放弃自回归的简洁,但要解决效率问题。
G0.5的设计核心:动作分词与稀疏预测
G0.5的做法是“结构化分词”。它不把动作压平成一堆数字,而是按照机器人本体拆成部件:左臂、右臂、下半身。每个部件先映射到共享维度(比如左臂9维+夹爪1维),再用残差向量量化(RVQ)压缩成紧凑的离散编码。
关键是“只预测活跃部件”。比如只动左臂时,右臂的token组直接从序列中移除,不产生无效tokens。这在双臂任务中能省将近一半的token量,同时保留对每个部件的精确控制。
对比π0的做法:把所有机器人填充到18维联合状态,动作空间固定但浪费了不少维度。G0.5的稀疏设计更贴近实际——大部分时间只有少数关节在动。
分词器是跨载体共享的。新加一种机器人形态,不需要重新训练tokenizer,只需要按<left_control>(9) | <left_gripper>(1) …的布局填充即可。这对多形态数据混合训练非常友好。
原生思维链:让推理成为动作的一部分
G0.5最吸引人的设计是“CoT和动作共用一个解码器”。训练时随机从8种CoT格式中采样:子任务文本、目标框、2D轨迹、动作提示等。这些推理token和动作token在同一个序列中交错生成。
好处很明显:底边推理结果可以直接喂给后续动作生成,没有模块间的瓶颈。比如模型先输出“子任务: 抓住毛巾角”,再输出BBox框定位毛巾,然后直接生成动作数字。整个过程端到端,且推理阶段的错误可以被自回归的上下文接力修正。
但代价是测试时的稳定性。如果CoT格式不固定,模型可能会啰嗦或跳步骤。所以评估时统一用无CoT格式,推理能力只是隐式增强。如果要部署,通常需要在系统提示里明确指定CoT开关。
视觉记忆与训练细节
复杂操作任务是非马尔可夫的:被遮挡时你需要知道几秒前手在哪。G0.5在所有视觉transformer层中每隔4层插入可分离时空注意力,处理5秒内的6帧历史观测。训练时随机丢弃30%历史帧作为正则化。
算下来训练成本不低:120K步,使用AdamW,基础学习率1e-5,预热4000步后恒温到92%再余弦衰减。数据混合中VQA和动作样本按1:4配比,总计约1亿条通用VQA + 5000万具身VQA + 500万内部标注。
如果你只能拿得动小数据,千万别直接冲这个规模。对于个人开发者或小团队,更实际的做法是先拿VLA-0的简化版验证概念:用现成VLM + 纯文本动作输出,自己加个掩码增强,在小场景上跑通,再考虑引入结构分词。
部署视角:适用边界与代价
G0.5的定位是“预训练基础模型”,不是“拿来就用”。如果你要跑在自己的机器人上,有三件事绕不开:
- 动作归一化:每个数据来源的数值范围可能不同,需要单独算z-score或分位数缩放,全局统一预处理会崩。
- CoT模板选择:测试时用哪种格式需要实验决定,草率用子任务文本可能让模型花太多token在推理上,导致动作输出延迟。
- 推理速度:虽然稀疏预测缓解了token膨胀,但单次生成几十个token仍然比扩散头慢一个数量级。如果追求高频控制(>50Hz),还是得用可选的那个flow-matching头做加速。
作者保留了一个flow-matching头作为可选项,这本身就是一种权衡——复杂但快,简单但慢。
如果你问我个人更倾向哪条路?对于50%以上“观察-推理-执行”型任务(如桌子清理),我会优先选纯自回归,因为推理能力能直接用上;对于纯重复运动(如螺丝拧紧),扩散头更省心。
最后留个问题
现在有一个折中方案:将G0.5的自回归部分作为采样器,只在关键帧用CoT,中间帧用动作平滑插值。这会损失精度但大幅提升速度。你觉得这种混合策略值得尝试吗?
最后留一个讨论点
如果你要部署一个VLA模型做家庭服务,你会选择G0.5这样的纯自回归路线(简单但可能高频慢),还是保留一个可选的flow-matching头做加速?二者的适用场景如何划分?
