昇腾CANN模型转换

一、开发环境配置

  1. 选择Ubuntu20.04系统
  2. 换源
    1
    sudo vim /etc/apt/sources.list 
    使用国内镜像源
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

    deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

    deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

    deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
  3. 安装环境依赖
    1
    2
    3
    sudo apt update && sudo apt upgrade
    sudo apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev
    sudo apt-get install -y unzip pciutils net-tools libblas-dev gfortran libblas3 libopenblas-dev libncursesw5-dev
  4. python环境配置
    安装miniconda
    1
    2
    3
    4
    5
    mkdir -p ~/miniconda3
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
    bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
    rm -rf ~/miniconda3/miniconda.sh
    ~/miniconda3/bin/conda init zsh
    创建cann的conda环境
    1
    2
    conda create -n cann python=3.9
    conda activate cann
    pip、conda换源,此处省略,自行查阅相关资料
    安装基础包
    1
    2
    3
    pip3 install --upgrade pip
    pip3 install attrs numpy==1.17.2 decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests
    pip install onnx

二、安装CANN toolkit

  1. 下载toolkit开发工具
    官方最新:华为社区版资源下载
    个人:Ascend-cann-toolkit_8.0.RC3.alpha001_linux-x86_64.run 提取码: abel
    个人:Ascend-cann-toolkit_8.0.RC3.alpha001_linux-aarch64.run 提取码: abel
  2. 安装开发工具
    1
    2
    chmod +x Ascend-cann-toolkit_8.0.RC3.alpha001_linux-x86_64.run
    ./Ascend-cann-toolkit_8.0.RC3.alpha001_linux-x86_64.run --install
  3. 配置交叉编译环境
    对于Atlas 200 AI加速模块 (RC场景)和Atlas 500 小站(运行环境aarch64架构)来说,当开发环境是一台X86 PC进行环境搭建时,需要在开发环境中安装交叉编译工具
    1
    sudo apt install g++-aarch64-linux-gnu
  4. 添加依赖库
    出现报错
    1
    libascend_hal.so: cannot open shared object file:No such……
    进入到Ascend目录下输入
    1
    find . -name libascend_hal.so
    把libascend_hal.so复制到/usr/local/lib/下
    1
    sudo cp ~/Ascend/ascend-toolkit/8.0.RC3.alpha001/x86_64-linux/devlib/linux/x86_64/libascend_hal.so /usr/local/lib/
    进入“/etc/ld.so.conf”,并将“/usr/local/lib”添加至文件最后一行
    1
    /usr/local/lib/
    更新共享库缓存
    1
    2
    ldconfig
    sudo ldconfig
  5. 添加环境变量
    在”~/.zshrc”中加入”source /home/abelxiaoxing/Ascend/ascend-toolkit/set_env.sh”
    1
    lvim ~/.zshrc
    1
    source /home/abelxiaoxing/Ascend/ascend-toolkit/set_env.sh
    重新载入zsh配置
    1
    source ~/.zshrc

三、onnx到om模型转换

查看模型输入名称,此处用’convnextv2_nano.onnx’来示范

1
2
3
4
5
import onnx

model = onnx.load('convnextv2_nano.onnx')
for input in model.graph.input:
print(input.name)

此处输出”input”,因此于–input_shape中,填入的模型名称为”input”

atc模型转换

1
atc --model=./convnextv2_nano.onnx --framework=5 --output=./model --soc_version=Ascend310B1 --input_shape="input:1,3,224,224"

参考文献

  1. https://bbs.huaweicloud.com/blogs/344623
  2. https://bbs.huaweicloud.com/blogs/309707
  3. 华为官方CANN环境安装
  4. 华为官方atc参数说明