由于官方SDK比较冗余且经常跨文档讲解且SDK整理的乱七八糟,对于新手来说全部看完上手成本较高,本文旨在以简短的方式介绍 CAFFE / ONNX 模型转 om 模型,并进行推理的全流程。希望能够帮助到第一次接触华为海思框架的道友们。大佬们就没必要看这种基础文章啦!
注:本文所有操作均在 WSL (Windows 虚拟子系统)上操作的,默认 root 环境,默认开发板系统为LINUX,所有环境变量均写入 bashrc ,非虚拟机用户谨慎写入。所有用到的工具以及示例代码,均在文末。
目录
1.1 安装CANN ToolKit(以python3.9为例)
1.3 安装openssh(有的话可跳过,没有也可以通过 NFS 共享目录解决文件传输问题)
2.3 om 模型推理流程(类似RKNNToolKitLite)
1. 简介
ATC 是海思芯片的模型转换工具,用于将开源框架网络模型(caffe,onnx,tensorflow)转化为 .om 格式并使用 AscendCL进行推理(因为笔者比较熟悉瑞芯微系列,分别类似于类似瑞芯微系列的RKNNToolkit工具, .rknn 模型,RKNNToolkitLite板端推理工具)。
1.1 安装CANN ToolKit(以python3.9为例)
模型转换需要在 linux x86 设备上进行,因为我的服务器是ubuntu22.04,而官方给的交叉编译工具又必须在ubuntu18.04上才能用,所以我选择使用 WSL,安装ubuntu18.04参考:Windows11 安装 WSL
1.1.1 编译python3.9
坑:各 python 必须严格按照下述版本,否则执行模型转换时会报错 :Python3.7.x(3.7.5~3.7.11)、Python3.8.x(3.8.0~3.8.11)、Python3.9.x(3.9.0~3.9.2)推荐使用Python3.9.2
# 安装python3.9
sudo apt update
sudo apt install -y build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncurses5-dev libncursesw5-dev xz-utils tk-dev \
libffi-dev libxslt1-dev liblzma-dev python3-openssl cmake Pillow git
wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz
tar -zxvf Python-3.9.2.tgz
cd Python-3.9.2
./configure --prefix=/usr/local/python3.9.2 --with-ssl-default-suites=openssl --enable-shared CFLAGS=-fPIC
make -j8
make install
vi ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/python3.9.2/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/python3.9.2/bin:$PATH
source ~/.bashrc
# 安装 cann 所需 python 环境
# 注意,WSL默认sudo权限,此处如果用sudo,后续执行 ./Ascend-cann-toolkit_8.1.RC1_linux-x86_64.run --install 也要加sudo
pip3 install attrs cython numpy==1.24.0 decorator sympy cffi pyyaml pathlib2 psutil protobuf==3.20 scipy requests absl-py -i https://pypi.tuna.tsinghua.edu.cn/simple
1.1.2 安装 cann
在昇腾官网下载 cann 安装包, 并传到WSL中:社区版资源下载-资源下载中心-昇腾社区
chmod +x Ascend-cann-toolkit_5.20.t6.2.b060_linux-x86_64.run
# 校验安装包是否完整, 校验成功会显示 Verifying archive integrity... 100%
./Ascend-cann-toolkit_5.20.t6.2.b060_linux-x86_64.run --check
# 安装,安装过程中有协议确认,按 Y 即可,安装成功会显示 <..