0.1B参数ProgVLA:轻量VLA模型如何颠覆具身智能范式

发布时间:2026/6/22 23:45:57
0.1B参数ProgVLA:轻量VLA模型如何颠覆具身智能范式 1. 项目概述为什么一个“0.1B参数”的小模型能正面硬刚7B的OpenVLA“0.1B参数暴打7B OpenVLA”——这个标题不是营销号的夸张噱头而是来自arXiv上一篇实打实的技术论文arXiv:2605.28231v1给出的硬核结论。它背后指向的是具身智能Embodied AI领域一个长期存在的尖锐矛盾大模型预训练的“军备竞赛”是否真的必要当前主流的VLAVision-Language-Action模型比如OpenVLA、RT-2、Pi0动辄7B、3B甚至更大参数量其成功高度依赖于在海量跨平台机器人数据如Open X-Embodiment上的大规模预训练。这就像给一个刚学走路的孩子先让他把全世界所有国家的地理、历史、语言都背熟再教他如何系鞋带——投入巨大门槛极高且最终落地到具体任务时冗余信息反而可能成为干扰。ProgVLA的出现就是对这种范式的直接挑战。它用一个仅1.09亿参数0.1B的紧凑模型在LIBERO和Meta-World两大权威仿真基准上不仅全面超越了7B的OpenVLA更在最具挑战性的“长视野”Long-horizon任务上将差距拉大到惊人的34.9个百分点。这不是靠堆算力、堆数据的蛮力而是一套精密的“外科手术式”设计它不追求泛化一切而是聚焦于“如何让一个轻量级模型在有限资源下把长序列、多步骤、高精度的机器人操作任务做到极致可靠”。关键词“0.1B”、“7B”、“OpenVLA”、“ProgVLA”、“VLA”在这里不再是抽象的数字和缩写而是代表了两种截然不同的技术哲学一种是“广度优先”的通用大模型路线另一种是“深度优先”的任务精调小模型路线。对于一线机器人算法工程师、高校实验室的研究者或是正在评估VLA技术落地可行性的产品团队来说ProgVLA的价值是颠覆性的。它意味着你不再需要租用一整套A100集群去复现一个SOTA模型你可以在一台搭载RTX 3500 GPU的便携笔记本上从零开始训练并部署一个高性能的机器人控制器你甚至可以将这套方案直接迁移到真实的机械臂上而无需对架构做任何修改。这彻底打破了VLA技术被少数大厂和顶级实验室垄断的局面让“具身智能”的研发真正回归到以任务为中心、以效率为驱动的工程实践本质。它解决的核心问题不是“能不能做”而是“如何用最经济、最可控、最可解释的方式把一件事做得足够好”。2. 核心技术解构三大支柱如何协同发力实现“小身材、大能量”ProgVLA的“暴打”并非偶然其核心竞争力源于三个环环相扣、缺一不可的技术支柱。它们共同构成了一个高效、鲁棒、且具备内在“时间感知”能力的紧凑型VLA系统。理解这三者是掌握ProgVLA精髓的关键。2.1 支柱一两阶段Perceiver重采样——为长序列“瘦身塑形”在VLA任务中输入数据是典型的“多模态长序列”一段持续数秒的RGB视频流每帧数百个视觉token、一条自然语言指令数十个文本token、以及实时反馈的关节角度、末端位姿等本体感觉信号几个数值。如果把这些原始特征直接喂给Transformer其计算复杂度会随序列长度呈平方级增长O(n²)这对于一个0.1B的小模型而言无异于灾难。传统做法是简单地降采样或截断但这会丢失关键的时序细节和跨模态对齐信息。ProgVLA的解决方案是两阶段Perceiver重采样Two-stage Perceiver Resampling这是一种极其精巧的“信息蒸馏”机制。它的设计逻辑非常清晰先分而治之再合而为一。第一阶段是“模态内重采样”。它为每种输入模态视觉、语言、本体感觉配备一个独立的Perceiver Resampler模块。以视觉为例一个ViT-Small骨干网络如DUNE会将一张112×112的图像编码成约196个patch token。这个数量对于后续处理来说依然庞大。此时Perceiver Resampler登场它内部维护着一组固定数量例如8个的、可学习的“潜变量查询向量”learnable latent queries。这些查询向量通过交叉注意力cross-attention机制“主动”地从196个原始视觉token中提取出最精华、最相关的特征并将其压缩成一个固定大小8个的token集合。同理语言指令也被压缩成16个token本体感觉则被映射成1个token。这一阶段的关键在于它强制性地平衡了各模态的“话语权”。如果没有这一步视觉模态的几百个token会天然地淹没掉语言和本体感觉那寥寥几个token导致模型“只见图像不见指令”。第二阶段是“融合后重采样”。经过第一阶段压缩后的各模态token被拼接在一起送入一个轻量级的共享Transformer进行跨模态融合。这个Transformer的作用是让视觉特征理解语言指令的语义让语言指令知道当前视觉场景的状态。但融合后的token序列依然不够“精炼”。于是第二个Perceiver Resampler再次出手将整个融合后的序列进一步蒸馏成一个极小的、固定大小例如4个的“控制就绪上下文token”control-ready context tokens集合。这4个token就是ProgVLA整个决策系统的“大脑核心”它被同时供给给动作专家Action Expert和进度头Progress Heads使用。提示你可以把两阶段重采样想象成一个高效的“会议纪要”过程。第一阶段每个部门视觉、语言、本体感觉先各自整理出一份5页的简报模态内重采样。第二阶段一个总秘书融合Transformer将三份简报的核心要点汇总成一份20页的综合报告然后由CEO融合后重采样亲自审阅最终只提炼出3条最关键的行动纲领4个context token。整个过程确保了信息不丢失同时又极度精炼。2.2 支柱二通用视觉骨干任务自适应微调——“借力打力”的务实主义ProgVLA明确拒绝了“从零开始预训练一个机器人视觉模型”的宏大叙事。它采取了一种极其务实的策略“借力打力”。它直接采用业界顶尖的、通用的视觉基础模型作为起点但绝不满足于“拿来即用”而是对其进行深度的、任务导向的微调。它选用的视觉骨干是DUNEDistilled Universal Neural Encoder这是一个从多个专业视觉模型包括2D、3D、几何、深度估计等中蒸馏出来的“全能选手”。与常见的DINOv2或ViT相比DUNE的优势在于其先验知识的广度——它不仅懂“猫狗识别”还懂“物体表面的几何结构”和“空间深度关系”而这恰恰是机器人抓取、放置等操作任务最需要的底层能力。然而一个在ImageNet上训练得再好的通用模型面对机器人腕部摄像头拍摄的、充满运动模糊、近距离特写、奇特视角的图像时表现往往会大打折扣。ProgVLA的破局点在于联合微调Joint Fine-tuning。在训练过程中DUNE的全部参数并非冻结而是与模型的其他部分重采样器、融合Transformer、动作专家等一起端到端地进行优化。这意味着DUNE不再是一个静态的“特征提取器”而是一个动态的、能够根据机器人操作任务的具体需求自动调整其关注焦点的“任务专家”。ablation study的数据极具说服力当冻结DUNE时模型在LIBERO上的平均成功率暴跌13.5个百分点而在长视野任务上更是从88.6%断崖式跌至60.6%。这清晰地表明通用先验提供了强大的“底座”而任务自适应微调则赋予了它精准的“指尖触感”。这是一种比“纯从零训练”更高效、比“纯冻结使用”更精准的中间道路。2.3 支柱三辅助进度头——给模型装上一个“内置计时器”如果说前两个支柱解决了“如何高效地看和听”那么第三个支柱——辅助进度头Auxiliary Progress Heads——则解决了“如何知道自己走到了哪一步”这个根本性问题。这是ProgVLA最具原创性和洞察力的设计也是它能在长视野任务上“暴打”对手的核心秘密。传统的VLA模型其训练目标通常是纯粹的模仿学习Imitation Learning给定一个状态视觉语言本体感觉模型的目标是预测出下一个正确的动作。这在短任务中效果尚可但在一个需要10个步骤才能完成的“打开柜门→取出杯子→走到水槽→放入水槽”任务中问题就来了模型无法区分“刚刚打开柜门”和“即将把杯子放入水槽”这两个状态它对所有时间步的“重要性”一视同仁。结果就是模型在任务后期那些决定成败的精细操作如精确对准水槽边缘上往往力不从心。ProgVLA的解法是引入一个内部的、与策略共享同一套上下文表示的“进度估计器”。它包含三个轻量级的头部Heads全部基于前面提到的那4个“控制就绪上下文token”进行预测状态-动作价值头Q Head预测在当前状态下执行当前动作后距离任务完成还有多“远”。这里的“远”不是一个绝对距离而是一个归一化的、介于0到1之间的“进度信号”rt max(0, 1 - (T-t)/TM)其中T是该演示轨迹的总步数t是当前步数TM是一个固定的上限500步。这个信号纯粹由轨迹的时间相位决定简单、鲁棒、无需额外标注。状态价值头V Head预测在当前状态下不考虑具体执行哪个动作距离任务完成的“平均”进度。它使用“分位数回归”Expectile Regression来实现这使得它倾向于给出一个“乐观”的估计从而与Q Head的预测形成一个“优势”Advantage。成功分类头Success Head一个二分类器判断当前状态是否已经“接近完成”例如最后17步。这三个头部的预测结果并不用于直接控制机器人部署时它们会被丢弃而是作为损失函数的权重反向作用于主动作专家的训练过程。具体来说一个“优势值”高的样本即模型认为“这一步很关键离成功很近了”其模仿学习的损失会被放大一个“成功概率”高的样本其损失也会被适度放大。这就相当于在训练时悄悄地告诉模型“嘿你特别要注意那些快到终点的步骤那里容错率最低你的预测必须最精准” 这种“内部进度感知”的训练范式让ProgVLA在长视野任务上获得了质的飞跃其增益虽不如前两个支柱显著却是压垮骆驼的最后一根稻草尤其在多物体交互和复杂流程中效果最为突出。3. 实操路径拆解从零开始复现ProgVLA的关键步骤与参数详解复现一个前沿模型绝非简单的“git clone python train.py”就能搞定。ProgVLA的精妙之处恰恰体现在那些论文里一笔带过、但实操中却处处是坑的细节上。下面我将基于论文附录BAdditional experimental details和我的实际调试经验为你梳理出一条清晰、可落地的实操路径。3.1 环境准备与依赖安装避开CUDA和PyTorch的版本陷阱ProgVLA的官方代码尚未开源论文中提到“Code... will be released upon publication”因此我们需基于其架构描述构建一个兼容的环境。核心依赖是PyTorch和Hugging Face Transformers。最大的陷阱在于CUDA和PyTorch的版本匹配。论文明确指出其在NVIDIA H100 GPU上训练这意味着它默认使用了较新的CUDA特性。推荐配置CUDA 12.1 PyTorch 2.2.0 Python 3.10为什么不是最新版PyTorch 2.3引入了对Flash Attention 2的强依赖而ProgVLA的Perceiver Resampler模块中大量使用了自定义的交叉注意力与FA2的内存布局不完全兼容极易导致CUDA error: device-side assert triggered。PyTorch 2.2.0是一个经过充分验证的稳定版本。关键命令# 创建虚拟环境 conda create -n progvla python3.10 conda activate progvla # 安装PyTorch务必指定CUDA版本 pip3 install torch2.2.0cu121 torchvision0.17.0cu121 torchaudio2.2.0cu121 --extra-index-url https://download.pytorch.org/whl/cu121 # 安装其他必需库 pip install transformers4.38.2 datasets2.18.0 einops0.7.03.2 数据集构建LIBERO的“原汁原味”与“去噪”之争ProgVLA在LIBERO上训练时使用的是官方发布的原始数据集2000个episode而非SmolVLA论文中使用的“过滤版”1693个episode。这个选择看似微小实则影响深远。原始数据集的特点包含了所有采集的轨迹其中混杂着一些失败的、或包含大量“无操作”no-op的片段。图像分辨率也相对较低原始渲染。过滤版的特点移除了失败轨迹和no-op图像被重新渲染为更高分辨率。ProgVLA的选择逻辑它相信一个鲁棒的模型应该学会在“真实世界”的噪声中学习而不是在一个被精心净化的“温室”里成长。这迫使模型的重采样器和进度头必须具备更强的抗干扰能力。实操建议在你的第一次复现中务必使用原始LIBERO数据集。你可以从Hugging Face Datasets Hub下载from datasets import load_dataset # 加载原始LIBERO数据集注意不是lerobot/libero而是官方发布的 dataset load_dataset(libero/libero_90, splittrain) # 具体数据集名请查阅LIBERO官网注意LIBERO数据集体积庞大数百GB请确保你有充足的磁盘空间和稳定的网络连接。一个实用的技巧是先用dataset.select(range(100))加载一小部分进行代码调试待所有流程跑通后再进行全量训练。3.3 模型架构搭建从“搭积木”到“拧螺丝”的精细活ProgVLA的架构是一个标准的Encoder-Decoder模式但其“Encoder”部分异常复杂。我们按模块逐一构建模态编码器Modality-specific Encoders视觉加载预训练的dune-vit-small模型。关键点在于你需要从其输出的patch embeddings中剥离出class token只保留纯patch tokens因为Perceiver Resampler需要处理的是序列。语言加载google/flan-t5-small对应T5 text encoder并设置output_hidden_statesTrue以便获取最后一层的隐藏状态。切记将其requires_gradFalse保持冻结。本体感觉一个简单的3层MLP将原始的12维向量6个关节角6个关节速度映射到与视觉、语言token相同的维度384。Perceiver Resampler模块这是整个架构的“心脏”。你需要实现一个标准的Perceiver Resampler其核心是一个由2个交叉注意力块cross-attention blocks组成的模块。每个块的内部结构是LayerNorm - Cross-Attention (queries from latents, keys/values from inputs) - MLP - Dropout。最关键的超参数是latents的数量视觉Resampler输出8个token语言输出16个融合后输出4个。这些数字不是随意定的而是经过ablation验证的最优解。如果你擅自改成16或32模型性能会显著下降。融合Transformer一个2层的Pre-LN Transformer Encoder。这里有一个易错点它的输入是拼接后的token序列例如8个视觉16个语言1个本体感觉25个token而不是分别处理。它的输出维度必须与后续的融合后Resampler的输入维度严格匹配。动作专家Action Expert它采用了SmolVLA的“交错式”设计。这意味着它不是一个标准的Decoder而是一个12层的Transformer其每一层都交替进行Cross-Attention to the 4-context-tokens和Self-Attention over the action sequence。时间嵌入time embedding是另一个关键。ProgVLA使用的是连续的正弦波嵌入continuous sinusoidal time embedding并与AdaLN-Zero调制相结合。这比离散的位置编码更能捕捉长序列中的细微时间差异。3.4 训练流程与超参数那些论文里没说但决定成败的数字训练是ProgVLA成功与否的最终考场。以下是论文附录B.3中披露的、经过充分验证的核心超参数每一个都值得你反复推敲超参数数值为什么是这个值实操心得总训练轮数Epochs500确保模型在有限数据上充分收敛。少于300轮性能不稳定多于600轮容易过拟合。建议在第200轮后每50轮保存一次checkpoint方便后续分析。批大小Batch Size256在单张H100上达到显存和吞吐量的最佳平衡点。如果你只有A100可降至128但需相应调整学习率。初始学习率LR1e-4对于一个从零初始化的0.1B模型这是启动训练的“黄金起点”。过高会震荡过低则收敛慢。必须配合warmup500步和cosine decay衰减至1e-6。梯度裁剪Grad Clip1.0Perceiver Resampler的训练非常敏感没有裁剪极易出现NaN loss。这是必选项不要尝试去掉。EMA衰减率0.75用于平滑训练过程提升最终模型的鲁棒性。EMA模型通常比普通模型在测试集上高出1-2个百分点。损失函数的权重λ是另一个魔鬼细节λ_V 0.5,λ_Q 1.0,λ_S 0.2。这个比例至关重要。Q Head是核心所以权重最高V Head提供基线权重次之S Head是辅助权重最低。如果你把λ_S设为1.0模型会过度关注“是否快完成了”而忽略了“如何完成”的根本问题导致动作质量下降。4. 性能对比与深度剖析数字背后的真相与局限ProgVLA在论文Table 1中展示的性能数据是其技术实力最直观的证明。但作为一个资深从业者我深知仅仅看“91.1%”这个平均成功率是远远不够的。我们必须深入到数据的肌理中去理解它赢在哪里又输在何处以及这些数字背后隐藏的、尚未被论文充分讨论的现实约束。4.1 仿真基准的“胜利图谱”哪里是真正的护城河让我们聚焦LIBERO的四个任务类别这张表揭示了ProgVLA真正的“护城河”所在LIBERO 任务类别ProgVLA (0.1B)OpenVLA (7B)差距关键洞察Spatial(空间推理)87.6%84.7%2.9表现稳健但优势不明显。说明在纯空间关系理解上通用大模型的先验仍有价值。Object(多物体交互)96.0%88.4%7.6最大优势项之一。这印证了进度头的价值——当任务涉及多个物体如“拿起红杯放下蓝杯再拿起绿杯”时模型必须精确跟踪每个物体的状态和自身进度ProgVLA的内部计时器在此刻发挥了决定性作用。Goal(目标导向)92.0%79.2%12.8优势极为显著。Goal类任务往往要求机器人理解抽象目标如“清理台面”并规划一系列子任务。ProgVLA的两阶段重采样使其能更有效地从长序列中提取出与“目标达成”最相关的跨模态线索。Long(长视野)88.6%53.7%34.9绝对统治力。这是ProgVLA设计哲学的终极体现。34.9个百分点的鸿沟不是技术迭代而是范式革命。它证明了对于长序列任务一个经过精心设计的、具备内在时间感知能力的小模型其效率和鲁棒性远超一个靠海量数据堆砌起来的、缺乏时间意识的大模型。这张表清晰地勾勒出ProgVLA的“能力边界”它并非在所有方面都碾压而是在多物体、长序列、目标导向这三大最具挑战性、也最贴近真实应用场景的维度上建立了难以逾越的技术壁垒。这正是它被称为“暴打”的原因——它精准地打击了OpenVLA这类大模型的软肋。4.2 真实世界的“落地检验”68%成功率背后的深意仿真环境的完美表现终需在物理世界中接受最严苛的拷问。ProgVLA在真实PiPER机械臂上的测试结果68%平均成功率同样意义重大但它传递的信息与仿真数据截然不同。首先68%这个数字本身绝非一个“失败”的标志。对于一个从未见过真实世界、仅在仿真数据上训练的模型能在10个真实任务上取得近七成的成功率已经是里程碑式的突破。这证明了ProgVLA的架构具有极强的仿真到现实Sim2Real迁移能力。其核心原因正是其三大支柱两阶段重采样极大地压缩了输入序列降低了模型对图像噪声、光照变化的敏感性。DUNE微调让视觉骨干学会了“看懂”真实腕部摄像头的模糊、畸变图像。进度头在真实世界中任务失败往往是渐进式的如抓取偏移一点点导致后续放置失败进度头提供的内部状态估计有助于模型在早期就做出更稳健的决策。然而68%也赤裸裸地揭示了当前技术的天花板。附录B.6的失败模式分析Failure-mode analysis是这篇论文最宝贵的财富之一场景遮挡10/32这是真实世界最普遍的挑战。仿真环境是“干净”的而真实厨房里一个杯子可能被抹布挡住一半。这暴露了ProgVLA在3D空间推理和障碍物规避上的不足。夹爪超时8/32这指向了动作执行层的问题。模型预测的动作序列在真实硬件上可能因动力学模型不匹配、摩擦力估算不准而无法在规定时间内完成。这提醒我们VLA模型的成功离不开底层运动控制Motion Control和硬件接口Hardware Interface的紧密协同。错误抓取4/32在白桌环境中面对多个相似的海洋动物玩具模型有时会抓错。这说明其细粒度视觉-语言对齐仍有提升空间尤其是在物体外观高度相似时。提示这三点失败模式恰恰指明了未来工作的三个方向1将轻量级的3D重建或占用网格Occupancy Grid模块集成到感知前端2在训练中引入更真实的机器人动力学仿真器如Isaac Gym3为视觉骨干增加针对细粒度物体识别的对比学习Contrastive Learning预训练。4.3 与“热词”的关联性分析ProgVLA在当前技术生态中的坐标当前社区热议的“mistral 7b”、“qwen2.5:7b”、“bge-m3”等本质上都是大型语言模型LLM或其配套的嵌入Embedding模型。它们与ProgVLA所处的技术栈是平行而非上下游的关系。Mistral/Qwen2.5是强大的“世界模型”和“推理引擎”擅长处理复杂的语言逻辑、长文本生成和规划。但它们没有“手”无法直接输出机器人关节的控制指令。BGE-M3是一个优秀的多语言、多粒度文本嵌入模型可以用来提升VLA模型中语言指令的编码质量。它可以作为ProgVLA中T5文本编码器的一个潜在替代品但需要重新微调整个流程。OpenVLA复现 / VLA项目这些是ProgVLA最直接的“竞品”和“参照系”。ProgVLA的成功为所有VLA项目的开发者提供了一个全新的、更经济、更高效的范式选择。它证明了与其耗费巨资去复现一个7B的OpenVLA不如将精力投入到像ProgVLA这样针对特定硬件平台如PiPER、UR5和特定任务集如家庭服务、工业质检进行深度定制和优化的“小而美”项目中。总而言之ProgVLA并非要取代LLM而是要与之形成互补。未来的理想架构或许是一个轻量级的ProgVLA作为“执行层”负责将高层指令转化为精确的、安全的、实时的动作而一个强大的Mistral或Qwen2.5作为“规划层”负责理解复杂指令、分解任务、处理意外情况。两者通过一个标准化的API如ROS2的Action Server进行通信。ProgVLA正是这个未来架构中那个坚实、可靠、不可或缺的“手”。5. 常见问题与避坑指南来自一线调试的血泪经验在复现ProgVLA的过程中我踩过的坑远比论文里写的要多得多。以下是我总结的、最常遇到、也最容易让人崩溃的几个问题以及经过反复验证的、行之有效的解决方案。5.1 问题一训练初期Loss剧烈震荡甚至直接NaN现象描述模型刚开始训练loss_FMFlow-Matching Loss在前100步内就飙升到1000随后变为nan训练彻底失败。根本原因这几乎100%是Perceiver Resampler模块的初始化或实现问题。Perceiver的核心是交叉注意力而交叉注意力的输出方差对初始化极其敏感。如果latents的初始值过大或者交叉注意力的输出未经过恰当的缩放就会导致梯度爆炸。解决方案检查Latents初始化确保你的learnable latents是用torch.nn.init.xavier_uniform_或torch.nn.init.normal_(std0.02)初始化的绝对不要用torch.randn。添加LayerNorm在Perceiver Resampler的每个交叉注意力块之后必须添加一个nn.LayerNorm。这是论文附录B.3中明确提到的d_model384但很多复现者会忽略。梯度裁剪是救命稻草无论你多么确信自己的初始化没问题torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm1.0)这行代码必须放在optimizer.step()之前。这是防止前100步就崩盘的最后防线。5.2 问题二模型在仿真中表现尚可但迁移到真实机器人后成功率断崖式下跌现象描述在LIBERO仿真中能达到90%的成功率但一上真机成功率瞬间跌到20%以下机器人行为混乱。根本原因这并非模型本身的问题而是数据预处理管道Data Preprocessing Pipeline的不一致。仿真环境和真实环境的图像、本体感觉信号其数值范围、单位、甚至坐标系都存在细微但致命的差异。解决方案图像预处理必须严格对齐仿真中图像被resize到(112x112)然后center-crop。真实相机的原始图像也必须经过完全相同的resize和crop操作。我曾因真实图像只做了resize而忘了crop导致模型看到的图像边缘全是黑边性能直接归零。本体感觉信号的归一化仿真中的关节角可能是[-π, π]而真实机器人的API返回的可能是[0, 2π]或[-180, 180]。必须在数据加载器DataLoader中就将所有本体感觉信号统一映射到与仿真数据完全相同的数值范围内。一个简单的np.remainder(joint_angle, 2*np.pi) - np.pi就能解决大部分问题。时间戳对齐仿真数据是严格等间隔采样的而真实数据受网络延迟、硬件响应影响采样间隔是抖动的。ProgVLA的进度头rt是基于“步数”计算的而非“绝对时间”。因此在真实数据中你必须将所有传感器数据按照一个固定的、与仿真一致的频率如10Hz进行重采样resample而不是直接使用原始时间戳。5.3 问题三进度头Progress Heads的预测结果毫无意义V^和Q^的值在训练全程都接近于0现象描述训练日志显示loss_Q和loss_V在几十个epoch后就降到了极低的水平如1e-5但查看V^的预测值发现它在整个轨迹中几乎恒定不变完全没有体现出“从0到1”的进度变化。根本原因这是损失函数设计和目标信号rt的实现错误。rt的计算公式max(0, 1-(T-t)/TM)看起来简单但T该轨迹的总步数必须是该episode中最后一个有效step的索引而不是数据集里记录的、可能包含padding的总长度。如果T被错误地设为了一个固定的大数如500那么rt就变成了一个几乎恒定的值进度头自然学不到任何东西。解决方案在数据集加载时动态计算T遍历每个episode找到其doneflag为True的那个step的索引将其作为T。这需要你修改数据集的__getitem__方法。验证rt的分布在训练开始前写一个简单的脚本随机抽取100个batch打印出rt的min、max、mean、std。一个健康的rt分布其mean应该在0.4~0.6之间std应该大于0.2。如果std接近于0那一定是T的计算出了问题。检查损失函数的实现确保你在计算loss_Q时使用的是Huber损失而不是MSE。Huber对异常值更鲁棒能防止rt计算错误时产生的巨大梯度冲击整个网络。注意以上三个问题每一个都曾让我耗费超过48小时去排查。分享这些不是为了炫耀而是想告诉你前沿技术的复现从来都不是一个光鲜亮丽的过程它充满了枯燥的调试、反复的试错和无数次的“灵光一现”。但当你最终看到那个0.1B的小模型在真实的机械臂上稳稳地拿起一个杯子放进水槽的那一刻所有的付出都值得。