Embodied.cpp permite inferencia C++ eficiente para IA incorporada en robots heterogéneos

Embodied.cpp permite inferencia C++ eficiente para IA incorporada en robots heterogéneos

Ling Xu, Chuyu Han, Borui Li, Hao Wu, Shiqi Jiang +4 más

7 min de lectura•3 jul 2026

El despliegue de sistemas de IA incorporada debe entenderse primero en contraste con la inferencia tradicional de LLM y VLM. El servicio convencional de lenguaje o multimodal suele asumir una ruta de solicitud-respuesta mayormente síncrona, una interfaz de tokens relativamente uniforme y una optimización orientada al rendimiento en grandes lotes o múltiples usuarios concurrentes. Embodied.cpp enfrenta un escenario diferente: los modelos incorporados operan en control de lazo cerrado, combinan múltiples módulos heterogéneos y deben poder desplegarse en hardware del robot mientras absorben nuevas familias de modelos con el tiempo. Para un proyecto de código abierto de runtime de inferencia incorporada, estas diferencias se condensan en tres desafíos prácticos de sistema, cada uno de los cuales da forma directamente al diseño de Embodied.cpp.

Desafíos de la inferencia incorporada

Ejecución multi-frecuencia. Como proyecto de código abierto, Embodied.cpp debe soportar no solo los modelos incorporados actuales, sino también las optimizaciones que las futuras arquitecturas incorporadas puedan requerir. Esto es difícil porque muchos sistemas incorporados modernos ya no son monolíticos. Los modelos VLA y WAM se ensamblan cada vez más a partir de múltiples módulos, como codificadores de percepción, backbones de transformadores, ramas predictivas y cabezales de acción. A diferencia de un runtime convencional de LLM, la inferencia incorporada eficiente no siempre requiere que cada módulo se ejecute en cada paso. Una pila de percepción puede actualizarse con menos frecuencia, una rama predictiva puede ejecutarse solo cuando se necesita una estimación futura, y un cabezal de acción puede necesitar ejecutarse a una frecuencia de control mucho mayor.

Control de lazo cerrado con prioridad de latencia. El despliegue incorporado también plantea un problema de rendimiento más difícil que la inferencia en la nube ordinaria. En muchos entornos de robótica, la ejecución es efectivamente de lote único: un solo robot o simulador debe recibir acciones de manera continua, con baja latencia, baja fluctuación y comportamiento de temporización predecible. Al mismo tiempo, los objetivos de despliegue son heterogéneos, abarcando dispositivos Jetson, plataformas RK, cajas edge x86 y sistemas de nivel estación de trabajo. Esto crea una tensión entre la ejecución con prioridad de latencia y las técnicas de inferencia fusionada necesarias para hacer eficiente la ejecución de lotes pequeños en diferentes backends y dispositivos.

Diagrama que ilustra la ejecución modular multi-frecuencia con diferentes frecuencias de actualización para los módulos de percepción, backbone y cabezal de acción

Interfaces incorporadas extensibles. Finalmente, implementar un runtime de inferencia incorporada no es solo un problema de planificación. Las nuevas familias de modelos introducen regularmente nuevas pilas de dependencias, operadores personalizados más grandes y nuevas convenciones de entrada/salida. Un runtime práctico de código abierto debe, por lo tanto, absorber bibliotecas específicas del modelo, cubrir una superficie de operadores más amplia y soportar nuevos tipos de datos incorporados en ambos lados de la interfaz. Las entradas pueden incluir imágenes, lenguaje, propiocepción, historial, señales de fuerza o táctiles, y estado proporcionado por el simulador. Las salidas pueden ser tokens de acción discretos, vectores de acción continuos, fragmentos de acción, predicciones del mundo o representaciones de control intermedias.

En conjunto, estos desafíos explican por qué el despliegue incorporado no debe enmarcarse como una pequeña extensión de un runtime de LLM. El sustrato reutilizable sigue siendo real e importante, especialmente en torno a la proyección multimodal, la ejecución tipo transformador, la portabilidad del backend y la reutilización de operadores. Pero el contrato de alto nivel ha pasado de servir tokens a control incorporado, y un runtime abierto debe seguir siendo lo suficientemente extensible para absorber futuras optimizaciones incorporadas en lugar de codificar rígidamente la estructura del modelo actual.

Principios de diseño y arquitectura del runtime

Estos desafíos, a su vez, motivan tres principios de diseño de Embodied.cpp:

  1. Ejecución modular multi-frecuencia. Embodied.cpp debe exponer unidades de ejecución explícitas, módulos conectables, pools de estado o características compartidos y políticas de actualización configurables para que diferentes componentes puedan ejecutarse a diferentes velocidades sin forzar una única ruta síncrona.
  1. Ejecución fusionada con prioridad de latencia. Embodied.cpp debe priorizar un rendimiento de control estable mientras sigue soportando replay de grafos, reutilización de búferes, fusión de operadores, despacho específico del backend y movimiento cuidadoso de datos host-dispositivo para inferencia eficiente de lotes pequeños en dispositivos heterogéneos.
  1. Soporte extensible de operadores y E/S. Embodied.cpp debe proporcionar interfaces incorporadas tipadas, cabezales conectables, adaptadores de despliegue de primera clase y suficiente cobertura de backend y operadores para que nuevos paradigmas incorporados puedan implementarse sin reconstruir el runtime circundante cada vez.
Arquitectura de runtime de cinco capas que muestra adaptadores de entrada, constructores de secuencias, ejecución del backbone, plugins de cabezales y adaptadores de despliegue

Arquitectura del runtime de cinco capas

La arquitectura de Embodied.cpp mapea la ruta de ejecución compartida de los modelos incorporados en cinco capas distintas:

  1. Adaptadores de entrada — Manejan diversas entradas de sensores, incluyendo imágenes, lenguaje, propiocepción, historial, señales de fuerza o táctiles, y estado proporcionado por el simulador, convirtiéndolos en una representación tensorial unificada.
  1. Constructores de secuencias — Construyen las secuencias de entrada esperadas por el modelo backbone, manejando tokenización multimodal, proyección y codificación posicional.
  1. Ejecución del backbone — Ejecuta el transformador central u otra red neuronal backbone, aprovechando optimizaciones específicas del backend para inferencia eficiente de lotes pequeños.
  1. Plugins de cabezales — Implementan cabezales de salida específicos del modelo para tokens de acción discretos, vectores de acción continuos, fragmentos de acción, predicciones del mundo o representaciones de control intermedias.
  1. Adaptadores de despliegue — Conectan el runtime al hardware del robot, simuladores u otros bucles de control a través de interfaces estandarizadas.

Evaluación en modelos VLA y modelos mundo-acción

Los autores evalúan Embodied.cpp en dos modelos VLA ampliamente utilizados y un benchmark representativo de WAM, mostrando una eficiencia mejorada mientras se mantiene una alta precisión. La evaluación confirma que la arquitectura de cinco capas desacopla exitosamente el sustrato de inferencia reutilizable de los componentes específicos del modelo, permitiendo un despliegue eficiente en una variedad de dispositivos edge heterogéneos.

Discusión y trabajo futuro

La evidencia de modelos recientes apunta en una dirección: el despliegue incorporado está convergiendo en una ruta de ejecución compartida, aunque las familias de modelos continúen diversificándose. Embodied.cpp captura esta convergencia en un runtime de inferencia que trata la ruta común como infraestructura y las partes divergentes como plugins. Su arquitectura de cinco capas mantiene explícitos el patrón de interacción, la semántica de E/S, el objetivo y el límite de despliegue, mientras reutiliza la misma ruta de ejecución del backbone a través de paradigmas. En la revisión actual, los autores validan cuantitativamente la ruta de inferencia en C++ en dos modelos VLA y posicionan los WAM a través de un análisis arquitectónico. A medida que surjan nuevas variantes de modelos incorporados, esta separación entre un núcleo estable y componentes específicos de tarea conectables aumentará su valor.

Preguntas frecuentes

¿Qué hace diferente la inferencia incorporada de la inferencia tradicional de LLM/VLM? Los modelos incorporados operan en control de lazo cerrado con módulos heterogéneos, requisitos de ejecución multi-frecuencia y restricciones de latencia de lote único en hardware del robot, a diferencia de la optimización de rendimiento síncrona de solicitud-respuesta típica del servicio de LLM en la nube.

¿Cómo maneja Embodied.cpp diferentes frecuencias de actualización entre componentes del modelo? Expone unidades de ejecución explícitas y políticas de actualización configurables para que los codificadores de percepción, los backbones de transformadores, las ramas predictivas y los cabezales de acción puedan ejecutarse cada uno a su frecuencia requerida sin forzar una única ruta síncrona.

¿Qué plataformas de hardware soporta Embodied.cpp? Se dirige a dispositivos edge heterogéneos, incluyendo plataformas Jetson, sistemas basados en RK, cajas edge x86 y hardware de nivel estación de trabajo a través de una capa de abstracción del backend.

¿Qué tipos de modelos incorporados puede ejecutar Embodied.cpp? El runtime actualmente soporta modelos de visión-lenguaje-acción (VLA) y modelos mundo-acción (WAM), con una arquitectura de plugins diseñada para absorber nuevas familias de modelos incorporados sin reconstruir el runtime circundante.