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

[嵌入式AI从0开始到入土]嵌入式AI系列教程

注:等我摸完鱼再把链接补上

可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。

第1期 昇腾Altas 200 DK上手
第2期 下载昇腾案例并运行
第3期 官方模型适配工具使用
第4期 炼丹炉的搭建(基于Ubuntu23.04 Desktop)
第5期 炼丹炉的搭建(基于wsl2_Ubuntu22.04)
第6期 Ubuntu远程桌面配置
第7期 下载yolo源码及样例运行验证
第8期 在线Gpu环境训练(基于启智ai协作平台)
第9期 转化为昇腾支持的om离线模型
第10期 jupyter lab的使用
第11期 yolov5在昇腾上推理
第12期 yolov5在昇腾上应用
第13期_orangepi aipro开箱测评
第14期 orangepi_aipro小修补含yolov7多线程案例
第15期 orangepi_aipro欢迎界面、ATC bug修复、镜像导出备份
第16期 ffmpeg_ascend编译安装及性能测试
第17期 Ascend C算子开发
第18期 Ascend C算子开发环境(S5赛季)
第19期 vllm Ascend初体验
第20期 在Ascend上使用ComfyUI部署SD模型
第21期 基于昇腾310P RC模式的Pi0模型部署实践
第22期 基于昇腾310P RC模式的ACT模型部署实践

未完待续...


文章目录


前言

昇腾(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)"的方式一次性预测一段连续动作序列,从而有效缓解逐步预测带来的误差累积问题,并在多个双臂精细操作任务中验证了其有效性。

参考文献


一、硬件平台介绍

笔者参考的相关源码仓库基本都是基于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目录

bash 复制代码
git clone https://huggingface.co/lerobot/act_aloha_sim_transfer_cube_human

2.2 代码下载

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

bash 复制代码
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运行环境配置

bash 复制代码
# 注意,请先检查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版本和开发板环境一致。

bash 复制代码
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 设置无头渲染

bash 复制代码
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

bash 复制代码
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 文件

bash 复制代码
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 仿真评测

bash 复制代码
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,也就是大量的时间被用在了模型加载,画面渲染等方面,具体原因暂时还没有时间拉取流水线分析。欢迎各位大神值点一二。

相关推荐
困死,根本不会8 小时前
OpenCV摄像头实时处理:从单特征到联合识别(形状识别 + 颜色识别 + 形状颜色联合识别)
人工智能·opencv·计算机视觉
yj_sharing9 小时前
PyTorch深度学习实战:从模型构建到训练技巧
人工智能·pytorch·深度学习
安全二次方security²9 小时前
CUDA C++编程指南(7.31&32&33&34)——C++语言扩展之性能分析计数器函数和断言、陷阱、断点函数
c++·人工智能·nvidia·cuda·断点·断言·性能分析计数器函数
bksheng9 小时前
【Dify】安装与部署
人工智能
狸奴算君9 小时前
告别数据泄露:三步构建企业级AI的隐私保护盾
人工智能
Christo39 小时前
TKDE-2026《Efficient Co-Clustering via Bipartite Graph Factorization》
人工智能·算法·机器学习·数据挖掘
jackylzh9 小时前
PyTorch 2.x 中 `torch.load` 的 `FutureWarning` 与 `weights_only=False` 参数分析
人工智能·pytorch·python
叶庭云9 小时前
AI Agent KernelCAT:深耕算子开发和模型迁移的 “计算加速专家”
人工智能·运筹优化·算子·ai agent·kernelcat·模型迁移适配·生态壁垒
码农三叔9 小时前
(8-2)传感器系统与信息获取:外部环境传感
人工智能·嵌入式硬件·数码相机·机器人·人形机器人