S
SkillNav

将机器人 AI 带到嵌入式平台:数据集采集、VLA 微调与端侧优化实践

教程Hugging Face2026-03-05T14:16:49+00:009 分钟阅读
将机器人 AI 带到嵌入式平台:数据集采集、VLA 微调与端侧优化实践

Title: 将机器人 AI 带到嵌入式平台:数据集采集、VLA 微调与端侧优化

Summary: NXP 在 Hugging Face 发布的一篇博客

Content (Part 1/2): 返回文章列表

Gaetan Bahl's avatar

blog_image

作者Enzo RuedasTess Boivin


近年来,Large Language Models 的进展推动了系统从纯文本推理迈向多模态系统。最初是通过在 Vision–Language Models (VLMs) 中整合视觉感知实现的,最近则进一步发展到由 Vision–Language–Action (VLA) models 直接生成机器人动作。由于算力、内存、功耗约束严格,同时还要满足实时控制要求,把这些模型部署到嵌入式机器人平台上仍然是一个挑战。

在同步控制流水线中,当 VLA 正在做推理时,机械臂会空转等待指令,导致振荡行为和纠偏延迟。为了解决这个问题,asynchronous Inference 可将动作生成与执行解耦,实现更平滑、连续的运动。但要真正生效,端到端推理时延必须短于动作执行时长。这个时间约束也就决定了模型吞吐的上限。

将 VLA 模型带到嵌入式平台,并不是简单做模型压缩,而是一个复杂的系统工程问题,需要架构分解时延感知调度以及与硬件对齐的执行策略。只有解决这些挑战,才能把多模态基础模型的最新进展转化为可落地、可部署的嵌入式机器人系统。

本指南给出了 NXP 的实战最佳实践,涵盖如何录制可靠的机器人数据集、如何微调 VLA 策略(ACTSmolVLA),并展示了 NXP i.MX95 在优化后的实时性能表现。


🎥 数据集采集:真正重要的是什么

高质量、一致性强的数据,胜过“数量更多但杂乱无章”的数据。本节把踩坑经验整理成可执行的检查清单与方案。

在我们的案例中,采集任务是:“把茶包放进杯子里。”

1) 一致性优先

  • 固定相机:使用刚性支架,避免位姿漂移。如果在采集或评估过程中,一个或多个相机因机器人振动或操作员重置环境而发生偏移,精度会明显下降。
  • 可控光照:尽量在光照可控的环境中进行(固定光源,并远离日照变化明显的位置)。
  • 增强对比度:除非部署场景本来就是如此,否则避免“白色物体对白色背景”的训练条件。尽量提高机械臂、目标物体和环境之间的对比度。
  • 固定标定:务必备份机器人和遥操作器的标定数据,避免代码崩溃后不得不重录之前的 episode。
  • 不要“作弊”:不要使用模型在推理时拿不到的信息。采集数据时,操作员很容易依赖对场景的直接目视观察,但这会引入数据集中并不存在的信息。数据采集必须限制在策略运行时可用的同一组相机输入上。

2) 使用夹爪相机(强烈推荐)

从仅场景视角切换到混合视角,通常可以提升整体准确率;但相机越多,时延影响也越大。因此必须在两者之间做出合理权衡。就我们而言,3 路相机达到了较好平衡:

Top

Gripper

Left

top

gripper

left

覆盖整个场景的全局视角。

用于精细抓取和对齐的最近视角。

补充 Top 视角在高度和深度上的信息。

我们强烈建议使用安装在夹爪上的相机。它通过提供近距离、与任务高度相关的视角,能稳定提升精细操作任务的成功率。更重要的是,它也最能约束正确的数据采集流程,让操作员仅依赖机器人感知,而不是直接观察场景。

安装夹爪相机时,建议使用 Velcro 或应力释放导向结构(strain-relief guide) 固定线缆,避免遮挡视野或在运动中脱落。

3) 提升抓持能力

heat_shrink-tube

在夹爪爪面套上**热缩管(heat-shrink tubing)**等简单硬件改造,就能提高摩擦力、降低粗糙接触带来的问题、减少 episode 中打滑,并提升任务成功率(减少“差一点成功”的 episode),从而改善策略学习稳定性。

4) 多样性与数据划分

clusters

在录制数据集时,你应该:

  • 拉开 episode 分布:把工作空间划分为多个起始位置簇(cluster),每个簇至少录制 10 个 episode。再通过改变物体位置和旋转角度来增加多样性。

    例如,我们把机械臂可达工作空间划分为 11 个 cluster,每个大小为 10 × 10 cm。

  • 区分训练集与验证集:策略很容易在训练集上过拟合,因此验证集必须是模型未见过的数据。

    例如,我们把 cluster 6 从训练集中移除。

  • 尽可能覆盖更多运动模式:小型 VLA 模型在未见运动上的泛化能力有限。因此应尽量录制覆盖更大自由度范围的 episode。

    例如,我们让茶包以水平或垂直两种姿态被抓取。

  • 提前考虑失败场景:策略有时第一次无法到达目标,必须“折返再试”。我们观察到,让约 20% 的 episode 对应这类折返情况,有助于提升总体成功率。

    例如,我们训练集里约 20% 是恢复 episode(recovery episodes)

这与 VLA 论文和社区指南中的最佳实践一致。下面是同一 cluster 内数据多样性的 3 个示例:

起始位置 1

起始位置 2

恢复 episode

cluster_10_1

cluster_10_2

recovery

起始位置 1 和 2 都是同一 cluster 中的不同起点。相比之下,在恢复 episode 中,机器人并非从“起始模式”开始,而是已经位于杯子附近,需要直接从该位置继续回收并抓取茶包。


🎛️ 微调 VLA

act_loss

我们的实际做法:

  • 任务:“抓起茶包并放入杯中。”
  • 数据集:
    • 120 个 episode:10 个 cluster x(10 个不同茶包起始位置 + 2 个 recovery episode)
    • 3 路相机(640x480px,30fps):Top、Gripper、Left
    • 将 6 号 cluster 作为验证集移除
  • **Batch size:**8
  • **训练:**在 200k steps 后,选择验证损失最低的 checkpoint

综合训练集与验证集,在准确率、泛化能力和运动平滑性之间,ACT(每个 chunk 100 actions)的最佳权衡出现在 100k-160k 训练步之间。对于 SmolVLA(每个 chunk 50 actions),这一权衡点要在更后期训练才出现。我们发现,在模型开始过拟合后再略微继续训练,往往能进一步提升整体准确率。

经验法则:最终 checkpoint 应通过训练集与验证集上的任务成功率来选,而不是仅看训练损失。


⚡ 面向 NXP i.MX95 的优化

i.MX95 集成了 6× Arm Cortex‑A55、Cortex‑M7/M33、Mali GPU、新一代 ISP 和 eIQ® Neutron NPU,面向高效、安全的边缘推理,同时支持多相机和强 I/O 能力。[nxp.com]

1) 分而治之

我们没有把模型作为单一的巨型计算图来运行,而是将 VLA 图拆分为多个逻辑阶段:encoder、decoder 和 action expert。这样每个组件都可以独立优化、调度和部署。

在实践中,SmolVLA 被拆分为以下子模块:

  • Vision:处理 RGB 相机帧并输出视觉 embedding。
  • LLM backbone:基于视觉与文本 embedding 生成 action tokens。
  • Action expert:通过 flow matching 迭代去噪 action samples,并输出最终控制指令。

这种拆分支持按模块做优化。你可以量化每个模块的量化(quantization)影响,从而选择时延与精度的最佳权衡。此外,将 action expert 从 VLM 中隔离出来,也很适合以更低频率运行该模块。

2) 量化

为了优化 i.MX95 上的推理,我们在不同模块上尝试了多种量化技术。我们发现,对视觉编码器和 LLM prefill 做量化,对精度影响有限;而对 action expert 中的 denoising flow 进行量化会显著拉低性能。这个现象符合预期,因为量化误差会在迭代去噪步骤中不断累积。

因此,我们决定让这一模块保持更高精度以保证稳定性;同时在其他模块上根据层类型探索了不同的量化配置,从 8-bit 混合精度到 4-bit 量化都有尝试。

此外,我们还对不同模块应用了内部优化。结果见下表,标记为 optimized models

3) 异步推理:面向控制的调度

在同步控制回路中,流程如下:

  1. 采集观测
  2. 运行完整模型推理
  3. 执行生成的动作

在步骤 (2) 期间,机器人处于空闲状态。如果推理延迟不可忽略,就会产生:

  • 运动中的空闲间隙
  • 由于观测滞后导致的振荡式修正
  • 有效控制频率下降
  • 恢复行为变差

采用 Asynchronous Inference 后,动作生成与执行并行进行:

  • 机器人执行当前 action chunk
  • 同时计算下一个 chunk

这会提升有效控制频率,降低观测滞后,并改善恢复行为。

在 i.MX95 这类嵌入式平台上,异步推理是必需的——但只有当推理延迟控制在 action horizon 预算内时才真正有效:$T_{\text{inference}} < T_{\text{execution}}$

同步推理

异步推理

每个 chunk 的动作数

100

100

FPS

60

60

Chunk size threshold

N/A

0.2

Aggregate function

N/A

weighted_average

动作队列演化

async_g_0

async_g_02

结果


📊 我们在 i.MX95 上取得的结果

imx95

实验设置

  • 任务:“抓起茶包并放入杯子中。”
  • **测试集(20 个 episode):**每个 cluster 随机选取 2 个位置。
  • **验证集(10 个 episode):**cluster n°6 的全部 10 个位置。

平台(CPU)

策略

格式

推理延迟

测试集准确率(20)

验证集准确率(10)

总体准确率(30)

i.MX 95

ACT

ONNX FP32

2.86 s

1.00

0.90

0.96

i.MX 95

ACT

Optimized

0.32 s

1.00

0.60

0.89

i.MX 95

SmolVLA

ONNX FP32

29.1 s

0.50

0.40

0.47


⏩ 下一步计划

我们当前的首要目标是提升 SmolVLA(ONNX FP32)的任务准确率。我们已经建立了 baseline,并测得优化后的板端推理延迟为 6.15 s

下一阶段将聚焦在 NPU 上做更深入优化。与此同时,我们也计划从单任务设置扩展到更长时域、更复杂的场景。为此我们将引入:

  • 用于可扩展数据生成与基准测试的仿真环境
  • 用于策略优化的强化学习(RL)
  • 用于弥合域差异并提升真实世界表现的Sim-to-Real 迁移

我们的目标,是从一个经过验证的单一操作任务,走向一套可复现的方法论,用于在嵌入式机器人系统上部署 VLA 策略。


✅ 可复用检查清单

数据录制

  • 固定支架已验证
  • 相机对焦与照明良好
  • 夹爪抓取状态良好
  • 标定文件备份已保存
  • 对比度已验证

训练

  • 每 20k steps 保存/评估一次 checkpoint
  • 同时保存训练参数,以便需要时恢复训练
  • 提前准备验证集,以及用于跟踪准确率和延迟的方法

部署到 i.MX95

  • 你对当前准确率满意
  • 联系我们进行模型优化

📚 资源与灵感

查看原文 ↗

相关文章

用这 4 个技巧在 Project Genie 里创造新世界
教程Google·3月3日
用这 4 个技巧在 Project Genie 里创造新世界

Google DeepMind 的 Project Genie 是一个实验性原型,支持通过文本或“文本+图片”创建、探索并混编交互式世界。文章给出实操提示:细化环境设定、定义角色及移动方式、用自有图片起步、使用简短动作导向提示词,并在第一/第三人称视角间切换。该功能目前面向美国 18 岁以上的 Google AI Ultra 订阅用户开放,后续计划扩展。

6 分钟
用 Coding Agent 一次会话构建并上线 Slack Agent
教程·3月3日
用 Coding Agent 一次会话构建并上线 Slack Agent

这篇文章介绍了 Vercel 推出的 Slack agent skill,帮助开发者通过与 coding agent 的一次对话完成 Slack Agent 的搭建与部署。它将 Slack 应用创建、OAuth 与事件配置、环境变量设置、本地联调和生产部署串成一套向导流程。文章还说明了该方案在可恢复工作流、人机审批和多模型路由方面的能力,以及后续扩展学习路径。

5 分钟