← 返回 2026-07-06

Embodied.cpp:异构机器人上具身AI模型的便携式推理运行时 Embodied.cpp: A Portable Inference Runtime of Embodied AI Models on Heterogeneous Robots

Ling Xu, Chuyu Han, Borui Li, Hao Wu, Shiqi Jiang, Ting Cao, Chuanyou Li, Sheng Zhong, Shuai Wang 📅 2026-07-02 👍 56 2026-07-13 08:37
C++运行时 VLA模型 WAM模型 具身AI 推理优化 机器人部署 边缘计算

首个支持VLA和WAM的C++具身AI推理运行时,实现模块化多速率执行和跨异构硬件部署

前置知识

VLA模型 (Vision-Language-Action Models)

视觉-语言-动作模型是具身AI的核心架构之一,它将视觉感知、语言理解和动作生成整合到一个统一的框架中。这类模型通常采用预训练的视觉-语言骨干网络(如CLIP、PaliGemma等),接收图像观察和自然语言指令作为输入,输出机器人执行的动作。VLA模型的关键优势在于能够直接从观察和指令映射到动作,避免了传统方法中感知、规划和控制的模块化分离。典型实现包括RT-2、OpenVLA、Octo、pi0.5等,它们在推理时通常需要处理图像编码、文本嵌入和动作解码等多个计算阶段。

读懂本文需要理解VLA模型的核心计算路径和部署挑战,因为Embodied.cpp的设计目标之一就是高效运行这类模型。VLA模型在机器人上的部署需要处理多模态输入、低延迟推理和闭环控制等问题,这正是本文要解决的核心问题。

WAM模型 (World-Action Models)

世界-动作模型是具身AI的另一个重要分支,它将世界建模(预测未来状态)与动作生成作为一个统一的推理问题来处理。与VLA模型直接输出动作不同,WAM模型先预测世界的未来状态,然后基于这个预测来生成动作。这种方式的优势在于能够考虑行动的长期后果,更适合复杂的规划和决策。WAM模型有几种组织方式:Predict-then-Act方式显式分离世界模型和动作专家;Unified AR-Modeling方式将世界预测和动作生成统一到一个自回归token空间;Shared-Backbone方式在世界建模和动作生成间共享骨干网络;Latent-space方式预测紧凑的潜在未来。代表性模型包括UniPi、WorldVLA、LingBot-VA、LaWAM等。

WAM模型提出了与VLA模型不同的推理需求,特别是对状态管理和预测计算的显式支持。Embodied.cpp的独特之处在于同时支持VLA和WAM,理解WAM模型有助于理解本文在架构设计上所做的权衡和通用性考虑。

多速率执行 (Multi-rate Execution)

多速率执行是指在同一个控制回路中,不同的计算模块以不同的频率运行。在具身AI系统中,感知编码器、变换器骨干网络、预测分支和动作头可能需要以不同的速率刷新。例如,感知模块可能以较低频率运行(因为环境变化相对缓慢),而动作执行可能需要以较高频率运行(为了实现精细控制)。多速率执行的关键挑战在于如何协调不同速率模块间的状态共享、时序同步和资源分配。现代层次化和异步VLA系统(如Hi Robot、GR00T N1)以及WAM系统都明确采用了这种设计模式。

多速率执行是Embodied.cpp的核心设计原则之一,也是区别于传统LLM推理运行时的关键特性。理解这个概念有助于理解为什么现有的推理运行时(如llama.cpp、ONNX Runtime)不能满足具身部署的需求,以及Embodied.cpp如何通过模块化设计来解决这一问题。

Batch-1推理

Batch-1推理是指每次推理只处理一个样本的执行模式,这在机器人场景中很常见,因为机器人通常是一个接一个地与环境交互。与云端服务通常追求大batch throughput优化不同,batch-1推理更关注单个请求的延迟和稳定性。在异构硬件上优化batch-1推理面临特殊挑战:无法通过batch来摊薄kernel launch overhead,需要精心设计算子融合和内存复用,同时还要考虑host-device数据移动的开销。量化技术(如Q4_K)在batch-1场景下特别有价值,因为它能显著降低内存占用,从而在资源受限的边缘设备上运行更大的模型。

Embodied.cpp的核心性能目标就是高效的batch-1推理,这是它与传统throughput优化推理运行时的本质区别。理解batch-1推理的特点和挑战,有助于理解本文在架构设计、算子融合和量化等方面所做的技术选择。

研究动机

现有的AI模型推理运行时主要针对传统的请求-响应服务模式设计,它们假设相对统一的token接口,并通过大batch和多用户并发来优化吞吐量。然而,具身AI部署面临完全不同的运行时契约:推理运行在闭环控制内部,需要结合多个异构模块,必须能在机器人侧的硬件上部署,同时还要能吸收新的模型家族。具体来说,有三大核心挑战没有被现有系统满足。首先,多速率执行问题:现代具身系统越来越模块化,感知编码器、变换器骨干网络、预测分支和动作头可能需要在同一个控制回路中以不同频率运行,但传统LLM运行时假设单一的同步前向传播。其次,延迟优先的闭环控制:机器人场景下执行通常是batch-1的,单个机器人或模拟器需要持续接收动作,要求低延迟、低抖动和可预测的时序行为,但现有运行时主要通过大batch和吞吐量优化。最后,可扩展的具身接口:新模型家族定期引入新的依赖栈、更大的自定义算子和新的输入输出约定,现有运行时无法灵活吸收这些变化。llama.cpp、ONNX Runtime、SGLang、vLLM-Omni等系统要么是通用推理运行时缺乏第一类具身模型支持,要么是仅针对单一模型家族的具身推理运行时。

本文的目标是本文的目标是设计并实现Embodied.cpp,一个便携式C++推理运行时,能够统一支持VLA模型和WAMs,并且能在边缘设备、异构硬件、机器人和模拟器上直接部署。具体来说,Embodied.cpp要满足三个核心设计目标:模块化多速率执行,暴露显式的执行单元、可插拔模块、共享状态或特征池和可配置的刷新策略,使不同组件能以不同速率运行而不强制单一的同步路径;延迟优先的融合执行,优先考虑稳定的控制性能,同时支持图重放、缓冲区复用、算子融合、后端特定调度和仔细的主机-设备数据移动,以在异构设备上实现高效的小批量推理;可扩展的算子和I/O支持,提供类型化的具身接口、可插拔的头部、第一类部署适配器和足够的后端及算子覆盖,使新的具身范式无需每次重建周围的运行时即可实现。通过这些设计,Embodied.cpp旨在解决现有推理运行时在具身部署方面的空白。

与已有工作不同的是,本文的独特切入角度是:虽然具身AI模型在架构上继续多样化,但具身部署实际上正在收敛到一个共享的执行路径。通过对代表性VLA模型和WAMs的架构分析,本文发现这些模型的主要分歧被限制在一小组可插拔的头部和预测模块上。这意味着一个稳定可重用的核心运行时是可能的,同时仍然为新的具身模型变体留出足够的扩展表面。这个观察与现有系统形成了鲜明对比:现有系统要么试图通过大量定制来支持单一模型家族,要么保持通用但缺乏具身部署的第一类支持。Embodied.cpp的创新之处在于将这个共享执行路径映射到一个统一的五层架构,在保持部署边界稳定的同时,在内部保持足够的可扩展性。此外,本文还强调了一个被忽视的需求:具身部署需要一个能够联合支持VLA和WAM执行,同时还能落地到边缘设备、异构硬件、机器人和模拟器的具身推理运行时。

核心方法

Embodied.cpp的整体设计思路是从具身AI模型的架构分析出发,提取出共享的执行路径,然后将这个路径映射到一个统一的五层架构。从直觉上看,不同的具身模型虽然在外观上差异很大,但如果剥开它们的可插拔头部和预测模块,会发现它们都遵循一个相似的执行流程:从传感器输入到特征编码,通过骨干网络进行变换,最后输出动作或预测。Embodied.cpp的设计就是将这个共同流程抽象为基础设施,而将差异部分设计为插件。技术路线上,Embodied.cpp首先通过架构分析识别出VLA模型和WAMs的执行共性,然后设计五层架构来组织这些共性,最后通过后端抽象实现跨异构硬件的部署。这个五层架构包括:输入适配器层,负责吸收多样化的传感器输入和数据集样本;序列构建器层,负责将输入组织成模型所需的序列格式;骨干执行层,负责核心的transformer-style计算;头部插件层,负责模型特定的头部和预测模块;部署适配器层,负责将输出桥接到模拟器和真实机器人软件栈。在这五层之下,有三个支持子系统直接对应核心挑战:模块化多速率执行处理解耦调度和运行时状态,延迟优先的batch-1执行针对异构硬件上的CPU、GPU、NPU和其他加速器的低延迟部署,具身AI内核仓库收集可重用算子和模型特定内核。

Embodied.cpp的核心创新点在于它将具身部署的运行时契约从token serving转变为embodied control,并且通过五层架构和三个支持子系统来实现这个转变。与已有方法相比,Embodied.cpp的本质区别体现在三个方面。首先,在模型覆盖上,Embodied.cpp是首个同时支持VLA模型和WAMs的推理运行时,而现有系统如vla.cpp仅支持VLA模型,llama.cpp等通用运行时不支持任何具身模型家族。其次,在执行模型上,Embodied.cpp引入模块化多速率执行作为第一类特性,支持解耦模块以不同速率运行并通过缓冲状态协调,而现有运行时假设单一的同步请求-响应路径。最后,在部署能力上,Embodied.cpp通过后端抽象和部署适配器实现了真正的异构硬件和机器人/模拟器集成,而现有系统要么不支持异构硬件协作,要么需要大量定制集成。另一个关键创新是Embodied.cpp将运行时状态作为第一类对象而不是隐式缓存,这使得多速率执行和状态管理更加明确和可控。此外,Embodied.cpp的具身AI内核仓库提供了类型化的具身接口,使得新模型家族可以无缝集成而无需重建周围的运行时。

方法步骤详情

Embodied.cpp的方法步骤可以完整描述为:输入适配阶段,输入适配器吸收在线传感器流和离线数据集样本,包括摄像头、力或触觉信号、IMU数据和基准数据集,这些输入通过一个类型化的具身接口进入运行时。序列构建阶段,序列构建器将组织好的输入转换成模型所需的序列格式,这可能包括图像token化、文本嵌入、历史状态拼接和 proprioception 编码等操作,不同模型可能有不同的序列格式要求。骨干执行阶段,核心的transformer-style计算在这个阶段执行,包括注意力计算、前馈网络、残差连接等操作,Embodied.cpp通过图重放、缓冲区复用和算子融合来优化小批量推理的性能,同时支持多种后端(CPU、GPU、NPU等)。头部插件阶段,模型特定的头部和预测模块在这个阶段执行,包括连续动作头部、离散动作token解码器、世界模型预测分支、未来预测器等,这些模块是可插拔的,不同模型可以有自己的实现。部署适配阶段,部署适配器将运行时输出桥接到模拟器和真实世界机器人软件栈,包括动作执行、状态更新、控制信号生成等操作,不同平台可能有不同的协议和接口要求。在所有这些阶段中,模块化多速率执行控制着不同组件的调度和刷新策略,延迟优先的融合执行确保低延迟和低抖动,可扩展的算子和I/O支持使得新模型可以无缝集成。

技术新颖性

Embodied.cpp的技术新颖性体现在多个方面。首先,在架构设计上,Embodied.cpp首次提出了专门针对具身部署的五层架构,这五层(输入适配器、序列构建器、骨干执行、头部插件、部署适配器)清晰地分离了共享执行路径和模型特定扩展,与现有运行时的一刀切设计形成鲜明对比。其次,在执行模型上,Embodied.cpp引入了模块化多速率执行作为第一类特性,这使得运行时能够支持现代层次化和异步VLA系统以及WAM系统的多样化执行需求,这在现有推理运行时中是前所未有的。第三,在优化策略上,Embodied.cpp提出了延迟优先的融合执行,专门针对batch-1场景优化,这与现有运行时的吞吐量优化策略形成互补。第四,在部署能力上,Embodied.cpp通过后端抽象和部署适配器实现了真正的异构硬件协作和机器人/模拟器集成,这使得一个运行时可以联合使用CPU、GPU、NPU等设备,而不仅仅是切换后端。第五,在可扩展性上,Embodied.cpp的具身AI内核仓库提供了类型化的具身接口和可重用算子,这使得新模型家族可以无缝集成而无需重建周围的运行时,这与现有运行时的硬编码模型支持形成对比。最后,在模型覆盖上,Embodied.cpp是首个同时支持VLA模型和WAMs的推理运行时,这在技术上具有突破性意义,因为这两个模型家族有不同的执行需求和接口约定。

Project overview of Embodied.cpp
Figure 2: Project overview of Embodied.cpp

实验结果

本文通过两个VLA模型和一个WAM基准的实验,验证了Embodied.cpp在支持多样化具身模型架构的同时提高部署效率并保持高准确性的能力。在VLA模型评估中,HY-VLA在RoboTwin的place_empty_cup任务上达到了100.0%的任务成功率,动作块长度为20,服务器端推理延迟为1340.3ms,分摊的环境步延迟为735.9ms,峰值GPU内存为6850 MiB。pi0.5达到了91.0%的任务成功率,置信区间为[86, 94],动作块长度为50,服务器端推理延迟为266.6ms,分摊的环境步延迟为56.85ms,峰值GPU内存为6546 MiB。这两个结果都表明Embodied.cpp能够在一个C++运行时内支持不同的VLA架构,同时保持任务行为。HY-VLA的延迟高于pi0.5,因为它使用了更大的Hunyuan-VL骨干网络、三视图输入和视频历史/MEM视觉路径,而pi0.5使用了更轻量的PaliGemma骨干网络和更长的动作块,这降低了分摊的步成本。在WAM评估中,使用LingBot-VA的初步量化微基准显示,Python原始实现(BF16权重)的Transformer块延迟为3.236ms,每块内存为312.2 MiB,而Embodied.cpp实现(Q4_K量化)的延迟为3.171ms,每块内存为88.1 MiB。使用100个随机输入样本,C++ Q4_K块与Python BF16块相比,平均绝对误差(MAE)低于3.3 × 10^-2,余弦相似度高于9.997 × 10^-1。这表明Embodied.cpp能够以大幅的内存节省(从312.2 MiB降至88.1 MiB)和非常有限的输出漂移来承载和验证WAM侧的Transformer组件。

Architecture-oriented comparison of embodied AI models
Table 1: Architecture-oriented comparison of embodied AI models
Comparison of inference runtimes from the perspective of embodied model coverage and deployment readiness
Table 2: Comparison of inference runtimes from the perspective of embodied model coverage and deployment readiness
LingBot-VA single-block quantization microbenchmark
Table 4: LingBot-VA single-block quantization microbenchmark
查看结构化数据
任务指标本文基线提升
RoboTwin place_empty_cup (HY-VLA) 任务成功率 100.0% 未明确报告 与Python实现等价
RoboTwin place_empty_cup (HY-VLA) 服务器端推理延迟 1340.3ms 未明确报告 C++实现保持准确性
RoboTwin place_empty_cup (HY-VLA) 峰值GPU内存 6850 MiB 未明确报告 适中的资源占用
pi0.5部署任务 任务成功率 91.0% [86, 94] 未明确报告 与Python实现等价
pi0.5部署任务 服务器端推理延迟 266.6ms 未明确报告 比HY-VLA快约5倍(更轻量的骨干网络)
pi0.5部署任务 峰值GPU内存 6546 MiB 未明确报告 比HY-VLA略低(更轻量的骨干网络)
LingBot-VA单块量化 内存/块 88.1 MiB (Q4_K) 312.2 MiB (Python BF16) 减少72%(内存节省3.5倍)
LingBot-VA单块量化 延迟/块 3.171ms 3.236ms 相当(略有改善)
LingBot-VA单块量化 精度(MAE) < 3.3 × 10^-2 0 (BF16基准) 可接受的量化误差
LingBot-VA单块量化 精度(余弦相似度) > 9.997 × 10^-1 1 (BF16基准) 极高的精度保持

局限与改进

本文的工作存在一些局限性,作者在文中明确承认了部分,同时也可以观察到一些额外的限制。首先,作者明确指出完整的LingBot-VA闭环结果没有包含在内,因为完整的模型在当前草稿使用的受限本地边缘设置上还不够稳定,这使得WAM评估仅限于单块量化微基准,缺乏端到端的任务成功率和闭环性能数据。其次,虽然HY-VLA和pi0.5展示了高任务成功率,但评估的任务范围相对有限(仅RoboTwin的一个任务),缺乏在更广泛任务集上的泛化性验证。第三,虽然论文声称支持异构硬件协作,但实验报告主要集中在GPU上的性能,缺乏在CPU、NPU等设备上的详细性能数据和跨设备协作的具体展示。第四,虽然论文强调了延迟优先的优化,但报告的延迟数据(特别是HY-VLA的1340.3ms)对于某些高频控制场景来说仍然偏高,论文没有讨论如何进一步降低延迟到毫秒级别。第五,虽然Embodied.cpp的设计支持模块化多速率执行,但论文没有展示实际的多速率执行案例和性能优势,所有评估似乎都使用了同步执行路径。第六,论文缺乏与现有具身推理运行时(如vla.cpp)的直接对比,这使得读者难以准确评估Embodied.cpp相对于最先进系统的优势。最后,虽然论文讨论了可扩展的具身接口,但没有展示如何实际添加新模型或新算子的过程,这使得可扩展性主张缺乏实证支持。

独立分析的弱点

Embodied.cpp的独立分析弱点体现在多个方面,每个都有明确的改进方向。首先,WAM评估不完整是明显弱点,目前仅有LingBot-VA的单块量化结果,缺乏端到端的闭环控制实验。改进方向是:在更强大的边缘设备上完成完整的LingBot-VA部署,或者在更小的WAM模型上完成端到端评估,报告任务成功率、控制稳定性和资源占用等关键指标。其次,任务覆盖范围有限是另一个弱点,目前仅在RoboTwin的一个任务上评估了HY-VLA,pi0.5的具体任务甚至没有明确描述。改进方向是:在多个基准任务上评估VLA模型,包括ManiSkill、LIBERO、Open X-Embodiment等广泛使用的基准,同时报告不同任务难度下的性能变化。第三,异构硬件支持缺乏实证是弱点,论文虽然声称支持CPU、GPU、NPU等设备,但实验主要在GPU上。改进方向是:在多种设备上系统评估性能,包括Jetson设备、RK-based平台、x86边缘盒子和工作站级系统,并展示跨设备协作的具体案例和性能优势。第四,延迟优化空间大是弱点,HY-VLA的1340.3ms延迟对于高频控制场景偏高。改进方向是:进一步优化算子融合、内存复用和后端调度,探索更激进的量化策略,或者设计模型蒸馏方案来减小模型大小同时保持性能。第五,多速率执行缺乏展示是弱点,虽然这是核心特性之一,但论文没有展示实际的多速率执行案例。改进方向是:设计层次化或异步VLA系统的实验,显式展示不同模块以不同速率运行,并报告相对于同步执行的性能优势(如降低的端到端延迟、减少的计算量等)。第六,缺乏与现有系统的直接对比是弱点,这使得难以评估相对优势。改进方向是:与vla.cpp、llama.cpp等系统进行系统对比,报告在相同硬件、相同模型、相同任务下的性能数据,包括延迟、内存、吞吐量和任务成功率等指标。最后,可扩展性缺乏实证是弱点,虽然论文讨论了如何添加新模型,但没有展示实际案例。改进方向是:提供详细的新模型集成教程和示例,展示如何添加一个全新的VLA或WAM模型,包括需要实现的接口、预期的集成时间和遇到的挑战等。

未来方向

基于论文的成果和当前限制,未来有多个值得探索的方向。作者在文中暗示的未来工作包括:完成完整的LingBot-VA闭环评估,这将提供更全面的WAM模型支持证据;扩展到更多的VLA和WAM模型,这将继续验证Embodied.cpp的通用性和可扩展性。基于当前成果可以延伸的方向包括:更深入的异构硬件优化,探索如何更好地利用不同设备的优势,例如在CPU上运行部分计算,在GPU/NPU上运行计算密集型kernel,同时优化设备间的数据移动和同步;更激进的量化策略,探索Q2_K、Q3_K等更激进的量化格式,或者混合精度策略,在精度和效率之间找到更好的平衡点;更丰富的多速率执行模式,探索自适应速率调度,根据环境变化和任务需求动态调整不同模块的执行频率;更全面的基准测试,在更广泛的任务集和硬件平台上系统评估Embodied.cpp,建立具身推理运行时的标准化基准;更紧密的机器人集成,与主流机器人软件栈(如ROS2、MOOS)深度集成,提供即插即用的部署方案;更强大的调试和性能分析工具,帮助开发者理解和优化具身模型在特定硬件上的行为;更高效的分布式执行,探索如何在多机器人或多节点场景下部署Embodied.cpp,同时保持低延迟和低抖动的控制特性;更广泛的社区参与,开源项目,鼓励社区贡献更多模型支持、硬件后端和部署适配器,建立一个繁荣的具身AI部署生态系统。这些方向将共同推动Embodied.cpp从一个研究原型发展成为一个实用的、广泛采用的具身AI部署平台。

复现评估

Embodied.cpp的复现性评估需要从多个维度考虑。在开源情况方面,论文提供了项目链接(https://github.com/SEU-PAISys/Embodied.cpp),这表明代码是公开的,但论文没有明确说明许可证类型、代码完整性和文档质量。理想情况下,一个可复现的项目应该有清晰的README、安装指南、使用示例和API文档。在数据方面,HY-VLA和pi0.5的评估使用了RoboTwin基准和各自的官方checkpoint,这些通常是公开可用的,但论文没有明确说明如何获取这些checkpoint和基准数据。LingBot-VA的评估使用了100个随机输入样本,但论文没有说明这些样本的来源和生成过程,这可能会影响复现性。在算力方面,论文没有明确说明实验使用的硬件配置,包括GPU型号、CPU型号、内存大小等,这使得读者难以判断在相似硬件上是否能够复现结果。HY-VLA的6850 MiB GPU内存需求和pi0.5的6546 MiB需求表明需要至少8GB显存的GPU,这在现代GPU上是比较容易满足的。在难度方面,从论文描述来看,复现VLA模型的评估应该相对容易,因为论文提到了C++部署路径和对应的checkpoint配置。复现WAM评估可能更具挑战性,因为论文明确提到完整的LingBot-VA在受限的边缘设备上还不够稳定,这意味着复现者可能需要更强大的硬件或更多的调试工作。总体来说,Embodied.cpp的复现性处于中等水平:代码是开源的,模型和数据可能是公开的,但缺少一些关键的细节(如硬件配置、数据来源、依赖版本等),这使得精确复现可能需要一些额外的工作和探索。提高复现性的建议包括:提供详细的硬件配置清单、记录所有依赖的精确版本、提供预处理的评估数据、提供Docker容器或环境配置文件、以及提供更详细的逐步复现指南。