最近圈子里讨论最凶的一个词就是“DM0面向物理人工智能的具身原生视觉-语言-动作模型”。视觉-语言-动作模型VLA听起来很唬人但说白了就是让机器人像人一样用眼睛看、用语言理解指令、然后直接输出动作。以前的大模型是坐在屏幕里的“键盘侠”只能吐文字、出图片它知道一切但手不能提、肩不能扛。VLA要走的是“物理人工智能”这条路——让模型真正长在机器人的身体上去操作真实世界的物体而不是停留在“理解世界”这一步。DM0这个项目有意思的地方在于“具身原生”这四个字。很多团队做机器人操控是把现成的视觉语言模型拿过来外挂一个动作头然后在机械臂数据上微调。DM0的思路不太一样它的模型结构和数据管线从头到尾都是“为了动作而生的”不是事后补一个动作头而是把相机像素、语言指令、本体状态和动作输出揉进同一个网络里。这篇文章我想从架构、数据、训练、部署落地几个维度把我看到的设计思路和实际踩过的坑一起捋一遍顺便聊清楚哪些是真机会哪些现在还是演示级玩具。1. DM0到底是什么从“大模型看世界”到“大模型动手做”1.1 视觉-语言-动作模型的基本盘先把概念对齐。所谓视觉-语言-动作模型输入是三样东西第一是相机画面通常是一个或多个视角的实时视频帧第二是自然语言指令比如“把红色方块放到蓝色杯子里”第三是机器人本体的状态信息比如当前夹爪开合度、关节角度、末端位姿。输出不是文本而是动作准确说是机器人下一步该怎么动。传统机器人做法是“感知-规划-控制”三件套先用目标检测把物体找出来再用运动规划算一条无碰撞轨迹最后插值控制机械臂执行。每一步都是独立模块误差一级传一级一旦场景里出现了训练时没见过的东西整个链路就断了。VLA的思路是端到端不再单独训练检测器和规划器而是让模型从像素直接预测动作中间没有任何人工设计的中间表达。DM0走的就是这条路而且它把动作生成放在了模型设计的最核心位置不是附加功能。这里有个容易混淆的点有些项目用大模型来“选动作”比如让模型输出一段JSON告诉机器人末端目标坐标然后交给传统控制器执行。这种是“大模型当大脑”不是真正的VLA。DM0这样的具身原生模型输出的是底层运动指令的token或轨迹它自己就是控制器的一部分。换句话说模型不仅要“想清楚做什么”还要解决“怎么动得准、动得稳”。1.2 “具身原生”这四个字的分量为什么要特别强调“具身原生”因为机器人数据和纯文本数据、纯图像数据有一个本质区别机器人数据是多模态在时间轴上严格同步的而且动作是连续物理量的序列它和语言不是简单的“对应”关系而是因果关系。你说“把杯子拿起来”语言描述的是结果但动作数据记录的是过程——手要先靠近、再张开、然后闭合夹爪、抬升手腕。如果用现成的视觉语言模型做底座它的注意力机制和tokenizer都对“文字”和“图像”做了充分优化但对“连续动作序列”没有天然的建模能力。要么把动作量化成离散token硬塞进词表要么在语言模型后面接一个回归头。两种方法都能跑但都存在“语义和动作不匹配”的问题——语言模型擅长的是离散符号的组合而动作本质上是连续时空里的物理过程。DM0的“具身原生”体现在几个设计决策上它的输入不局限于单张图片而是多帧视频片段让模型感知运动趋势它把机器人本体状态关节角度、末端位姿、夹爪力度当成和文本并列的token类型而不是隐藏变量它的动作输出采用分层结构既有离散的“动作意图”也有连续的“轨迹细节”。这种设计更贴近人类操作物体的方式先规划大概的意图再根据手头反馈微调动作。1.3 谁适合认真看这个项目如果你是做机械臂抓取、移动操作底盘、灵巧手、仿真到真机迁移的工程师DM0这类模型应该是你最近半年必须跟踪的方向。如果你做的是RAG、Agent、数据分析这类偏文本的应用那VLA当前跟你的工作交集不大但可以关注一下“多模态动作预测”的训练方法。如果你是做硬件产品经理或者机器人创业方向的管理者我建议至少把本文第2节的架构和第6节的局限读完因为市面上关于VLA的宣传水分非常大几乎每个团队都在说自己做的是VLA实际落地水平天差地别。2. 架构拆解一个统一的多模态动作模型是怎么长出来的2.1 视觉编码把相机画面变成模型能读的tokenDM0的视觉侧没有走传统的CNN特征图加ROI那套老路子它用的是类似ViTVision Transformer的patch embedding方式。简单说把每一帧图像切成16x16或14x14的小块每个小块线性映射成一个向量再加上位置编码。多帧画面在时间维度上拼接让模型既能看“在哪里”也能看“怎么在动”。这里有个细节值得注意单帧静态图对机器人操作是不够的。你从一张照片里看不出杯子是静止还是正在倒下也判断不了机械臂当前速度。DM0的输入默认是连续4到8帧画面帧间间隔根据任务速度动态调节。快速抓取任务用短间隔精密装配任务用长间隔避免相邻帧差异过大导致特征不稳定。实际部署中视觉token的数量会直接决定推理显存。以640x480的分辨率、patch大小为16为例单帧大约产生 40x301200 个token4帧就是4800个token。这个量级对语言模型来说不算小所以很多VLA实际运行时会把画面缩到更低分辨率或者用感知编码器先压缩一次特征。在DM0里视觉特征经过编码器后被压缩成固定长度的瓶颈向量并不是把所有patch token全部塞进主干模型这个设计我在实操中体会很深它能省至少30%的推理延迟。2.2 语言与推理任务理解不是“看懂”而是“想清楚怎么做”语言模态在VLA里的作用容易被低估。很多人以为语言只是“任务描述”模型听懂指令就完了。但在具身场景里指令往往包含多个约束条件例如“把桌上的苹果放到冰箱第二层但要避开那摞书”。模型需要把自然语言拆解成可执行的动作序列并在执行过程中持续对照约束条件。DM0没有单独设一个“指令解析器”而是把语言token和视觉token拼在一起送进主干Transformer。主干网络的任务是学出两种模态之间的对齐关系当语言提到“红色方块”时视觉token里对应区域的注意力权重会被拉高当语言提到“小心轻放”时动作输出层的速度和加速度约束会被激活。这些能力不是靠人工规则写出来的而是在大量遥操作数据里涌现出来的。这里我插一句实操体会如果你在微调VLA时发现模型总是“听懂但做不对”问题大概率不在语言理解而在语言和动作的对齐。换句话说模型知道“红色方块”在画面里但不知道该在哪个时间点把注意力集中过去。解决思路是在训练数据里增加“分阶段指令”比如“先移动到方块附近再闭合夹爪然后抬升”。分阶段指令能强制模型学到中间过程而不是直接跳到最后目标。2.3 动作输出从离散token到连续轨迹动作输出是VLA和传统大模型最大的分叉点。文本模型输出的是一个概率分布词表是固定的机器人模型的输出空间却是高维连续空间机械臂的6个关节角是浮点数夹爪开合度也是浮点数。DM0采用了一种混合方案先让模型输出一组离散的“动作意图token”相当于动作的语义标签比如“抓取”“放下”“推动”“旋转”然后再用一个小型的连续动作解码器根据意图token和环境状态预测具体的关节轨迹。这个设计背后的逻辑是分层控制。离散意图token负责回答“做什么”连续解码器负责回答“怎么做”。这样有两个好处第一意图token可以和语言指令直接对齐训练时可以用对比学习增强匹配度第二连续输出层可以用扩散模型或flow matching这类生成式方法建模对多峰分布的表达能力更强。我们知道同一个抓取任务可能有多种合理的轨迹动作输出的多峰性决定了我们需要生成式模型而不是简单的回归模型。另一个常见的做法是把连续动作值离散成固定的bin比如把末端位置离散成256个区间然后在分类头上输出。实测下来这个方案简单但精度严重受限——离散bin的数量决定了控制精度bin太多又会让分类头变得很难收敛。DM0没有走这条路它的动作解码器是连续输出的只在预定义的动作语义层做离散化。2.4 主干网络与算力选型DM0的主干网络沿用了多模态大模型的标准结构视觉编码器加Transformer主干加任务解码器。区别在于主干不需要做得特别大因为机器人数据量远少于互联网文本数据过大的模型参数量容易过拟合。按DM0公开技术报告里的说法7B到13B量级在效果和部署成本之间比较平衡。我实际测试过类似量级的VLA模型一张4090 24G显卡勉强能跑7B模型但帧率只有8到10HZ距离实时控制还有差距。要做到30HZ以上的控制频率一般需要量化到INT8同时裁剪视觉token数量。DM0在边缘端部署时用到了2bit到4bit的混合量化方案把视觉编码器保留较高精度主干用较低精度动作解码器再用高精度。这种非对称量化我在上手后才体会到它的价值——注意力部分对量化更敏感但视觉编码器的特征提取直接决定了任务成功率。3. 数据与训练VLA模型真正烧钱的地方3.1 具身数据从哪来遥操作、仿真、真实采集很多人觉得训练大模型最贵的是算力但训练VLA模型最贵的是数据。一张文本数据可能只是几KB一段机械臂操作轨迹却需要几十万个物理状态点。DM0的数据来源主要分三路人工遥操作、仿真引擎生成、真实场景自动采集。人工遥操作是数据质量最高的来源。操作员用手柄或动捕设备控制机械臂完成指定任务系统记录相机画面、语言标注和关节运动数据。这个过程非常慢一个熟练的标注员一天只能采集两三百条有效轨迹。仿真数据来源包括物理引擎合成和渲染引擎生成优点是可以自动出数据而且可以暴力枚举场景缺点是sim-to-real gap仿真里学会的抓取策略到了真机上经常“手滑”。真实场景自动采集是最近两年兴起的方向比如在仓储场景里装一批机械臂每天根据订单自动执行抓取同时把过程中的成功和失败数据都存下来。DM0的思路是做数据配比仿真数据用来学“泛化”真实数据用来学“手感”遥操作数据用来学“复杂操作语义”。三者比例大约在6:3:1。仿真数据的占比最高但基础动作模式必须由真实数据打底否则前期策略跑偏了后面仿真数据再多也拉不回来。3.2 轨迹归一化与动作离散化模型训练前最容易被忽略的步骤是动作数据的预处理。机械臂的关节角度和末端位姿有不同的量纲和取值范围如果不做归一化模型的损失函数会被数值大的维度主导。DM0对关节角度做了均值和方差归一化对末端位姿则做了去均值化只保留相对变换量让模型学习的是“增量”而不是“绝对位置”。这个细节我一开始没在意后来发现同样结构下做了增量化的模型训练速度快了接近一倍。动作离散化在DM0里分两个层级。第一层是语义离散化把连续轨迹映射到预定义动作原语比如“grab”“release”“move_to”“push”这个映射可以通过人工标注做也可以通过聚类算法自动学。第二层是时间离散化把连续的轨迹切成固定频率的动作块比如每隔50毫秒输出一组目标关节角度。组块化的好处是降低预测的累积误差——模型不需要在每一步都做精细的预测只要每50毫秒输出一个稳定的目标点即可中间的控制由底层PID完成。3.3 预训练与微调的路子DM0的训练大体分三步走多模态对齐预训练、动作模仿学习、强化学习微调。多模态预训练用的是大量“视频文本伪动作”的互联网数据。所谓伪动作是指从视频里做光流估计或运动分割得到的粗粒度运动信息用这些伪动作预训练一个“视频到运动”的感知能力再在机器人数据上继续训练。动作模仿学习阶段使用遥操作数据目标函数多用扩散损失或者flow matching的损失函数。这一步训练的目的是让模型输出分布逼近演示轨迹分布训练过程中需要关注两个问题目标函数是生成式损失存在“多峰坍缩”的风险样本效率低一定程度上依赖数据增强。DM0在训练时加入了几何扰动增强——把物体的颜色、位置、相机视角统一做随机化这让模型不会死记某个固定画面。最后一步强化学习是可选的。模仿学习只能模仿演示数据的水平但要超过演示水平就得靠RL。DM0在仿真环境里用RL优化任务成功率让模型学会在演示轨迹里挑更好的动作组合。但RL训练VLA非常不稳定奖励函数稍微设计不合理就崩。我的建议是中小团队先别碰RL纯靠高质量模仿学习就能做出不错的demoRL适合后期有稳定数据管道时再上。3.4 训练时容易踩的坑第一坑真机数据里混着失败轨迹。我见过不少团队采集数据时没有严格筛选把“没抓起来”“中途掉落”“抓到但放错位置”的数据也拿去训练。模型是很诚实的它会把失败行为当成标准动作一起学进去。DM0的管线和遥操作采集工具都做了任务状态自动标注失败数据会进专门的分支用于学习“负向行为”而不是直接丢给主模型学。第二个坑是训练和评估数据同源。如果真机测试场景和训练数据高度一致成功率再高都是自嗨。更合理的做法是把训练数据场景和真机测试场景做严格隔离比如训练时机械臂的基座位置固定测试时故意换位置、换光照、换物体颜色。DM0项目里专门预留了一组“难度分级评测集”这让我觉得设计者确实有落地经验。第三个坑是长程任务的数据稀疏。单步抓取任务数据好采但“整理桌面”这种多步骤长任务很难完整采到。DM0的做法是把长任务切成多个子任务每个子任务单独采集再靠一个高层的“任务规划层”拼接起来。这个拆分策略我认为是VLA落地的最现实路径之一。4. 实操上手我是怎么把一个VLA模型部署到机械臂上的4.1 最小可跑通的环境配置坦白说完整复现DM0的训练管道不是个人开发者能搞定的光是数据采集就得用真机。但如果你只想跑通一个类似DM0的轻量级VLA模型用现有开源框架是可以做到的。我的参考配置是一个6自由度桌面机械臂两个固定视角的RGB相机分别是第一人称视角和俯视视角一个夹爪以及一台带RTX 4090的推理服务器。模型侧可以用7B多模态语言模型作为主干冻结视觉编码器和大部分Transformer层只微调LoRA适配器和动作解码器。先说清楚这种方案达不到DM0论文里的完整效果但足以跑通一个“开箱演示”——比如“把蓝色方块从三个物体中挑出来放到左侧托盘”。如果连机械臂都没有先用仿真环境加数字孪生顶替代码逻辑不用改。4.2 prompt和示例怎么写效果才好VLA模型的prompt设计和文本大模型有相似之处但也有明显差异。文本模型只关心语义VLA的prompt还决定了模型注意力放在画面的哪一块区域。我的写法分三段系统角色、任务指令、约束条件。系统角色固定为“You are a robot arm controller”任务指令要包含目标和物体特征最好带上位置描述约束条件要写明负面行为例如“不要触碰红色区域”。示例few-shot对VLA的效果影响非常大。给一个完整示例成功率可能提高10到20个百分点。示例不必多但动作类型要覆盖指令可能出现的变化。如果指令是“把杯子放到托盘里”我建议示例里至少包含“移动后抓取”和“抓取后移动”两种顺序让模型学会动作编排而不是死记第一个示例里的顺序。4.3 端到端推理与延迟优化部署时的一个核心矛盾是模型推理速度和机械臂控制频率不匹配。文本推理慢一两秒没关系机器人慢一秒钟可能就撞了。DM0的做法是“流式推理”模型以滑动窗口的方式持续处理最新视频帧每输出一组动作块就交给控制线程执行不等整段轨迹生成完。我在实操中把这套思路做成了两个线程视觉采集线程以30HZ采集画面并做预处理推理线程以10到15HZ频率运行模型预测动作块。控制命令通过共享内存交给机械臂驱动机械臂底层的PD控制器负责把目标点平滑成连续运动。实测下来端到端延迟大概在80到120毫秒之间对于慢速抓取任务够用但快速抓取还是会觉得跟手度不够。延迟优化有几个顺手可做的修改第一图像分辨率从640x480降到448x448任务成功率几乎不降但视觉编码耗时减少约25%第二把视觉token的前几个全连接层融合成一个算子减少多次kernel启动的开销第三用TensorRT的C运行时替换Python推理框架整体延迟还能再降30%。4.4 实机部署排雷记录有一个问题值得单独拿出来说模型在仿真里成功率90%一上真机就掉到30%。我们排查下来发现主因是仿真里相机内参和真实相机不完全一致导致视觉特征偏移。解决方法是真机推理前先做相机标定用标定结果修正输入画面的裁剪区域。这个步骤看起来基础但很多团队在模型部署时忽略了等结果不对才开始怀疑相机数据。第二个高频问题是夹爪的力度控制。模型输出了“闭合夹爪”的指令但夹爪本身没有力控容易把易碎物品夹碎或者夹不住重物。DM0这类模型在训练时通常会把夹爪力度也当成观测变量输入模型。如果你用的是没有力传感的夹爪至少要在夹爪里加电流检测用电流间接推断裂纹力矩。第三个问题是非结构化场景里的“数据分布外”情况。真机上总会出现模型没见过的东西比如一个透明的玻璃杯或者一个形状不规则的玩具。VLA模型的表现通常不是“拒绝执行”而是“自信地执行一个错误动作”。这在安全性要求高的场景是致命的。我的临时方案是在模型输出动作前加一层规则校验如果模型预测的轨迹会和已知障碍物碰撞就强制停止并请求人工接管。长期方案还是得靠更丰富的训练数据和更可靠的不确定性估计。5. 评测与落地除了看Demo我们该看什么5.1 评测维度和基准目前行业里对VLA模型缺乏统一评测标准大家都秀自己的录播视频。DM0公开的基准做法可以参考它把评测分成三个维度操作成功率、任务泛化能力、连续操作能力。操作成功率比较容易理解一次任务中模型不能出错包括路径规划、碰撞回避、夹爪力度等任一环节失败都记为失败。任务泛化能力测试的是模型在“同任务不同场景”下的表现比如训练时机械臂在桌面上工作评测时把桌面换成可调节高度的操作台甚至转动相机视角。连续操作能力测试的是多步骤任务的执行稳定性比如整理三个物体中间任何一步出错都算失败。一个容易被忽略的指标是“操作时间”。模型如果靠大量试探动作最终成功从视频看是结果好但工业化落地完全不可用。DM0在公开材料里提到了“单次任务执行时长”的统计我建议团队做评测时把这个指标放在跟成功率同等重要的位置。5.2 从demo到产线的距离一个在实验室稳定运行的VLA demo跟产线上连续稳定运行7x24小时之间差着好几个量级的工作量。首先是可靠性产线要求成功率达到99.5%以上而绝大多数VLA模型的成功率在95%到98%之间。看起来只差几个点但考虑到每小时执行几百次任务每个点都意味着持续产生异常。第二是诊断与恢复。demo场景里模型失败了就人工重来一遍产线上则必须能自动检测失败、自动纠错或者上报。DM0模型在设计时加入了“任务置信度”输出可以粗估当前动作的成功概率在置信度低于阈值时触发暂停。这个能力我在实际部署中认为比模型本身的精度提升更重要。第三是边缘算力成本。VLA模型对算力的要求远高于传统机器视觉方案控制器算力、散热、功耗在产线设计里分分钟变成瓶颈。目前我看到比较务实的路线是强弱协同模型负责复杂场景的操作决策底层运动控制仍由专用控制器完成不强行追求端到端接管所有环节。5.3 应用场景价值排序我自己观察到的VLA价值排序和很多宣传文章正好相反。工业界的刚需场景排在最前面的不是最炫酷的灵巧手而是“无序抓取”也就是从料筐里随机摆放的零件中抓出目标工件。这种场景传统视觉方案很难做因为零件互相遮挡、形状复杂但恰恰是VLA训练数据最容易生成的场景。其次是装配类任务的辅助定位比如插拔连接器、拧螺丝、对准孔位。这类任务难度大传统方案需要精密治具VLA模型可以通过视觉反馈做柔性的位姿调整减少对机械精度的依赖。最后才是家庭服务机器人因为家庭环境极度非结构化用户需求碎片化短期内商业化路径反而模糊。6. 争议与我的个人观察6.1 数据与泛化的死穴目前VLA最核心的质疑点还是在泛化能力。一个模型在100个场景里学了抓取遇到第101个从没见过的物体时成功率可能会急剧下降。DM0这类模型通过大规模数据预训练比传统方法强不少但仍然做不到人类那种“看到一个陌生物体就知道怎么抓”的零样本迁移能力。我个人的观察是泛化问题的突破口可能不在模型结构而在于数据形式。目前大家用的都是“相机画面语言指令动作轨迹”三元组动作轨迹是人或仿真器产生的天然受限于数据采集方的能力上限。如果想让模型真正学会物理交互可能需要把触觉、力觉、声音甚至温度加进去让模型对物体材质有更多维度的判断。DM0在最近的更新里提到了力觉感知融合的研究方向我觉得这才是物理人工智能该走的下一步。6.2 安全和可靠性的底线问题物理人工智能和纯软件AI最大的区别在于它做错事会产生物理后果。一个文本模型输出错误答案最多就是误导人一个VLA模型操作失误可能损坏设备、伤到人。所以VLA场景下的安全不能只靠模型必须靠系统设计。我现在能确定的底线是所有VLA模型必须是“可暂停、可接管”的。模型永远不能是最终决策者遇到模型没有把握的情况必须能退回到保守控制逻辑或者人工接管。DM0的设计里有关键动作触发超时检测和动量限制这类机制将来肯定会成为行业标准。如果你在测试同类模型第一件事不是测成功率而是测“模型犯错了能不能安全停下来”。6.3 模型规模与实时性的平衡还有一个争议是模型到底该做多大。大模型能带来更好的泛化和推理能力但机器人的实时性要求卡死了模型的规模上限。目前7B到13B是单卡推理的甜点区再往上就只能用云端算力加低延迟网络这会引入不可控的通信延迟。我相信未来的趋势不是“单一巨大模型”路线而是多模型分层一个本地的小模型负责高频机械控制一个云端的大模型负责低频的任务理解和场景决策中间有一个安全层做审批。DM0这次主打端侧部署实际上就是在验证小模型加云端模型协同路线的可行性。这个方向我在项目里已经验证过对延迟和泛化的平衡效果确实更好。7. 最后分享几个实在的体会我自己从传统机器人控制转到VLA方向将近两年最大的转变是对“模型能力边界”的看法。以前总想着把每个模块都做到完美再集成现在发现VLA的强项恰恰是能用灵活性弥补单模块精度不够的问题。模型不需要每次判断都精确到像素级别它只要在时间线里做出足够多的正确决策就能完成复杂任务。第二点体会是数据管道比模型结构更值得投入。很多团队在模型结构上花大量时间调参效果提升微乎其微。反过来把时间花在数据质量筛选、场景分布设计、动作标注标准化上任务成功率往往是跳跃式提升。DM0的价值不仅是模型本身更是它定义了一整套数据采集、清洗、评测的规范这套规范才是可以复制到具体项目里最值钱的部分。最后建议所有想上车物理人工智能的朋友先别急着追最新模型结构的发布会。找一台几百块钱的桌面机械臂搭一个最简单的单步抓取demo把构建数据管道、训练模型、部署上真机这个闭环先跑通。踩过一轮坑以后你自然就能看懂哪些VLA项目是真实力哪些只是包装。