[嵌入式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目录

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

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐