Emma-X
declare-lab/Emma-X加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你对一台机器人说"把胡萝卜放进锅里",传统的机器人可能会直接伸手去抓,碰到胡萝卜才发现位置不对,或者抓起胡萝卜却不知道往哪里放。而 Emma-X 告诉你:先看清楚、再想清楚、最后再动手。
Emma-X(Embodied Multimodal Action Model)是由新加坡国立大学声明式 AI 实验室(declare-lab)开发的视觉-语言-动作(VLA)模型,于 2024 年 12 月在arXiv发布,并在 ACL 2025 主会议上正式发表。它的核心创新在于给机器人装备了一套类似人类"思维链"的推理机制——模型在输出动作之前,会先生成一段"接地思维链"(Grounded Chain of Thought,GCOT),明确说明自己看到了什么、计划怎么做、为什么这样做,然后再生成精确的 7 维机械臂动作向量。
在 Emma-X 出现之前,主流的视觉-语言-动作模型(如 OpenVLA)遵循的是一种"端到端"的映射逻辑:输入一张图片加一条指令,直接输出动作。这种方式的弊端在于模型缺乏中间推理过程,无法解释自己为什么要这样做,出错时也难以定位根源——就像一个背熟了所有答案但不懂原理的学生,换一道题就可能出错。
Emma-X 则引入了"先思考再行动"的范式转变。模型的推理阶段会先生成一段结构化的思维链,其中包含对环境的观察(看到了哪些物体、它们的位置关系)、对任务的理解(当前目标是什么、还需要哪些步骤)、以及对动作的规划(下一个动作应该怎样执行)。这套思维链不是简单的文字描述,而是"接地"的——每一句推理都紧密对应着图像中的具体区域和物理约束。
此外,Emma-X 还具备"前瞻空间推理"(Look-ahead Spatial Reasoning)能力。模型在执行当前动作前,会模拟该动作之后的情景,预判可能出现的问题。比如在抓取胡萝卜之前,它会提前计算机械臂的最优抓取角度和力度,避免在动作执行到一半时才发现力矩不足。
Emma-X 的代码框架构建于 OpenVLA 之上,并大量复用了 Prismatic 视觉编码器的架构设计。项目采用 Python 开发,主要依赖包括:PyTorch(深度学习核心)、Transformers(Hugging Face 模型加载与推理)、timm(图像模型预训练权重管理)以及 tokenizers(高速文本分词)。
从代码结构来看,项目包含以下核心模块:
prismatic/:视觉编码器与模型核心实现,包含 models(模型定义)、training(训练流程)、preprocessing(数据预处理)、util(工具函数)、以及 vla(视觉-语言-动作融合模块)。scripts/:预训练脚本、数据预处理脚本、增量训练脚本及文件夹监控脚本。GCOT/:Grounded Chain of Thought 数据集的生成工具。experiments/robot/:BridgeData 数据集上的 WidowX 机械臂实验代码。vla-scripts/:VLA 模型训练脚本,调用 torchrun 进行分布式训练。Emma-X 使用 7 维动作空间(7-DoF)控制机械臂,即同时输出末端执行器的位置(x, y, z)、旋转角(roll, pitch, yaw)以及夹爪开合程度。这种表达方式与 WidowX 等 6-DoF 机械臂的标准接口对齐,支持直接的物理部署。
对于想要体验 Emma-X 的开发者而言,项目提供了从模型加载到真机控制的全链路代码示例。
模型推理阶段相对友好:只需准备好 CUDA 环境,安装 transformers 和 timm,从 Hugging Face 加载 declare-lab/Emma-X 模型,即可对输入图像和任务描述进行推理。代码示例中采用了 flash_attention_2 加速推理(需额外安装 flash-attn),并将模型精度设置为 bfloat16 以在保证效果的同时节省显存。
环境配置阶段则相当硬核。项目要求 Python 3.10、CUDA 12.4+ 的严格版本匹配,训练时还需额外安装 flash-attn==2.5.5(需要 Ninja 编译工具链)、下载 30GB 的 OpenVLA 基础检查点和 124GB 的 BridgeData 机械臂操作数据集,整个配置流程对硬件和工程经验都有较高要求。
真机实验需要连接 WidowX 机械臂硬件,并参考 OpenVLA 的机器人控制接口进行对接。官方在 experiments/robot/bridge/ 目录下提供了基于 BridgeData 数据集的评估脚本。
整体而言,Emma-X 对普通开发者更友好的使用方式是直接调用 Hugging Face 推理 API,或者在有高端 GPU 的本地环境中复现推理流程——但若要进行模型训练或真机实验,则需要较完善的机器人平台和工程基础设施。
Emma-X 的训练采用了两阶段策略。首先,基于 OpenVLA 的预训练基础模型(openvla-7b-prismatic,30GB 检查点),该基础模型已经在 BridgeData 等大规模机械臂操作数据集上进行了充分的预训练,具备了基础的视觉-动作映射能力。
随后,Emma-X 在此基础上引入自定义的 Grounded Chain of Thought(GCOT)数据集进行增量训练。GCOT 数据集由项目团队专门构建,其中包含了详细的思维链标注,每条机器人操作轨迹都附带有"为什么这样做"的文字解释。训练脚本 vla-scripts/train.py 使用 torchrun 进行多 GPU 分布式训练,支持 wandb 日志记录。
数据集规模方面,BridgeData 原始数据约 124GB,加上 GCOT 扩展数据集,总规模在 150GB 以上。这对于个人开发者来说是一道不低的门槛——光下载数据集就需要较长时间,更不用说后续的训练成本。
Emma-X 的出现代表了 VLA 领域的一个重要方向:从纯模仿走向可解释、可推理的具身智能。通过在动作生成前引入结构化的思维链,模型不仅能完成任务,还能解释"为什么这样做"——这对机器人安全审计、错误诊断以及人机协作场景具有重要价值。ACL 的收录也说明学术界对这一方向的认可。
然而,Emma-X 的局限性同样明显:它目前仅支持 WidowX 等特定型号的机械臂,动作空间(7-DoF)是固定设计的,跨机器人平台迁移需要额外的适配工作;训练数据依赖 BridgeData,泛化到其他场景的效果有待验证;此外,作为一个研究原型而非生产级系统,它在实时性、鲁棒性和可扩展性方面距离真正的工业应用还有距离。
在开源生态中,Emma-X 与 OpenVLA、NORA(同实验室的另一个 SOTA VLA 模型)形成了互补关系。相比 OpenVLA 的纯端到端设计,Emma-X 在推理过程的可解释性上更胜一筹;而与 NORA 的关系则是同一团队在不同技术路线上的探索——NORA 追求 SOTA 性能,Emma-X 则更侧重于推理过程的可解释性。
Emma-X 适合以下几类用户:
对于普通用户,通过 Hugging Face 的在线推理界面(Spaces)体验 Emma-X 是最便捷的方式,无需配置本地环境即可直观感受模型的视觉-语言-动作协同推理过程。