[嵌入式AI从0开始到入土]22_基于昇腾310P RC模式的ACT模型部署实践


前言

ACT模型介绍

参考文献

一、硬件平台介绍

二、部署步骤

2.1 模型下载

2.2 代码下载

2.3 lerobot运行环境配置

2.4 转换模型

2.5 设置无头渲染

2.6 安装并配置ACL

2.7 生成processor 文件

2.7 仿真评测

三、性能数据对比

四、总结与后续改进方向

前言

昇腾(Ascend)是华为推出的一系列面向人工智能计算的专用处理器(NPU,Neural Processing Unit),旨在为深度学习 训练和推理提供高性能、高能效的算力支持。昇腾系列芯片基于华为自研的达芬奇(DaVinci)架构,具备高并行、高吞吐、低功耗等优势,广泛应用于数据中心、边缘计算和终端设备等多种场景。


具身智能AI大模型是一种结合感知、决策与行动能力的智能系统,通过物理或虚拟载体与环境交互。这类模型不仅依赖大规模数据训练,还整合传感器输入、运动控制等模块,实现实时环境适应与任务执行。其核心在于将抽象认知能力与具身体验结合,推动机器人、自动驾驶等领域的突破。典型应用包括自主导航、物体抓取、人机协作等,标志着AI从纯数字世界迈向物理世界的关键一步。


ACT模型介绍

在 Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware 论文中提出了ACT: Action Chunking with Transformers 模型。


ACT 是一种典型的基于 Transformer  的模仿学习控制策略,其核心思想是以“动作分块(Action Chunking)”的方式一次性预测一段连续动作序列,从而有效缓解逐步预测带来的误差累积问题,并在多个双臂精细操作任务中验证了其有效性。


参考文献

https://gitcode.com/cann/cann-recipes-embodied-intelligence

https://github.com/huggingface/lerobot

https://github.com/tonyzhaozh/act

一、硬件平台介绍

笔者参考的相关源码仓库基本都是基于Atlas 800I A2服务器进行训练,Ascend 310P芯片 EP模式下进行推理的。这里我们只需要进行模型的推理,并不涉及训练,EP模式的标卡还需要一台有PCIE接口的电脑,这并不符合机器人目前的空间限制和功耗限制。在综合售价,性能等因素后,笔者选取了Ascend 310P芯片 RC模式的开发板来进行具身智能相关模型的部署。


刚好香橙派 上线了OrangePi AI Station,其搭载了Ascend 310P处理器,集成 16个CPU核,主频可达 1.9GHz,10个AI core,主频可达1.08GHz,8个Vector核,主频可达1GHz;算力可达176TOPS,支持48GB/96GB LPDDR4X/LPDDR5,支持NVMe SSD 2280的M.2插槽,3个USB3.0、HDMI、千兆网口、TF插槽、40Pin扩展接口等,130*130mm的尺寸,能够方便的放入机器人内部,性能和外设接口也够用。


二、部署步骤

这里有个前提,你已经刷入了香橙派提供的最新的镜像,并更新了香橙派提供的最新的驱动程序。

这里笔者使用的cann版本是社区的8.5.0版本,其他版本没有测试过,理论上也是可以用的。请自行安装

Ascend-cann-toolkit_8.5.0_linux-aarch64 .run和

Ascend-cann-310p-ops_8.5.0_linux-aarch64.run。都是直接执行xxx.run --install,等他自己跑完,大概半个小时。


2.1 模型下载

我下载到了/models目录


git clone https://huggingface.co/lerobot/act_aloha_sim_transfer_cube_human


2.2 代码下载

我下载到了/root目录,其他目录也可以。


git clone https://gitcode.com/cann/cann-recipes-embodied-intelligence

cd cann-recipes-embodied-intelligence/manipulation

git clone https://github.com/huggingface/lerobot.git

cd lerobot

git checkout d9e74a9d374a8f26582ad326c699740a227b483c

# 如果checkout失败,执行下面两行再次checkout

git reset --hard HEAD

git clean -fdx


2.3 lerobot运行环境配置

# 注意,请先检查python版本,笔者是3.10的环境,请尽量使用3.10或者3.11环境

python3 --version


pip install torch==2.7.1

pip install https://gitcode.com/Ascend/pytorch/releases/download/v7.2.0.1-pytorch2.7.1/torch_npu-2.7.1.post1-cp310-cp310-manylinux_2_28_aarch64.whl

pip install --upgrade pip setuptools wheel

cd /root/cann-recipes-embodied-intelligence/manipulation/lerobot

# 安装 lerobot(本地可编辑安装)

pip install -e .

# 仿真依赖(Aloha 仿真需要 gym_aloha / gym-aloha)

pip install -e ".[aloha]"

# 固定 numpy 版本(如你的环境需要)

pip install numpy==1.26.0


# 修改代码

--- a/manipulation/act/infer_with_om/eval_act_ascend.py

+++ b/manipulation/act/infer_with_om/eval_act_ascend.py

@@ -36,6 +36,7 @@ This script is adapted for **Ascend OM-only** inference:

 """


 from dataclasses import asdict

+from dataclasses import dataclass

 from pathlib import Path

 from pprint import pformat


2.4 转换模型

这一步大概需要半小时左右,如果有条件,可以使用x86环境转换模型。但需要保证cann版本和开发板环境一致。


pip install onnx onnxruntime

cd /root/cann-recipes-embodied-intelligence/manipulation/act/infer_with_om

python3 convert_and_verify_onnx.py \

    --pretrained-policy-path /models/act_aloha_sim_transfer_cube_human/ \

    --output outputs/onnx/act.onnx \

    --device cpu \

    --opset 14

atc --model=outputs/onnx/act.onnx \

        --framework=5 \

        --output=outputs/om/act \

        --soc_version=Ascend310P1


2.5 设置无头渲染

apt-get update && apt-get install -y libosmesa6-dev libgl1-mesa-glx libglfw3 libx11-6 libxrandr2 libxinerama1 libxcursor1 libxi6

apt install -y libosmesa6 libgl1-mesa-glx

export MUJOCO_GL=osmesa

export PYOPENGL_PLATFORM=osmesa


2.6 安装并配置ACL

git clone https://gitee.com/ascend/samples.git

mkdir -p /usr/local/Ascend/thirdpart/aarch64/acllite

cp -r samples/python/common/acllite/* /usr/local/Ascend/thirdpart/aarch64/acllite

export PYTHONPATH=/usr/local/Ascend/thirdpart/aarch64/acllite:$PYTHONPATH


2.7 生成processor 文件

cd /root/cann-recipes-embodied-intelligence/manipulation/lerobot/src/lerobot/processor

python3 migrate_policy_normalization.py --pretrained-path /models/act_aloha_sim_transfer_cube_human


2.7 仿真评测

cd /root/cann-recipes-embodied-intelligence/manipulation/act/infer_with_om

python3 eval_act_ascend.py \

    --policy.path=/models/act_aloha_sim_transfer_cube_human_migrated \

    --om_model_path=/models/act_aloha_sim_transfer_cube_human_migrated/outputs/om/act.om \

    --env.type=aloha \

    --env.task=AlohaTransferCube-v0 \

    --eval.batch_size=1 \

    --eval.n_episodes=1 \

    --env.episode_length=600 \

    --seed=4412


运行完成后,在output目录下获得下面的视频。

在这里插入图片描述


三、性能数据对比

测试平台     e2e时间

orangepi ai station (ascend310p rc) acl lite推理     200ms左右

nvidia orin 开启tensorRT    80ms左右

四、总结与后续改进方向

当前实测性能数据和nVidia orin有不少差距,笔者在310P EP环境下测得纯模型推理仅耗时10ms,也就是大量的时间被用在了模型加载,画面渲染等方面,具体原因暂时还没有时间拉取流水线分析。欢迎各位大神值点一二。



请使用浏览器的分享功能分享到微信等