香橙派AI pro开发环境:从芯片到Mindspore

总体开发环境如下图:

注意:本系列实验推荐配置为: CANN 8.0.0 beta1 + mindspore 2.2.14 + ACLLite
如果发现 mindspore 版本要求不一样,可以使用 jupyter 魔法指令来升级 mindspore,而不需要升级 CANN 。

芯片与操作系统

硬件规模参数
采用昇腾 320b1 NPU 芯片(4 核 64 位 Arm 处理器 + AI 处理器)
CPU 架构为 AArch64
本实验下载的操作系统镜像为 Ubuntu 22.04.3 LTS

固件与驱动

社区版-固件与驱动-昇腾社区

最新驱动版本为 1.0.0 alpha,他最高支持到 CANN 版本为 7.0.0.beta1 (实验中可以尝试升级 CANN 版本)
可以使用 npu-smi info 来查看当前驱动版本,例如下面显示驱动版本为 23.0.0

使用 sudo cat /usr/local/Ascend/firmware/version.info 来显示固件信息,例如下面显示固件版本为 7.1.0

本实验无须升级固件

CANN

昇腾异构计算架构CANN-昇腾社区
CANN (Compute Architecture for Neural Networks) 是华为公司针对 AI 场景推出的异构计算架构,通过提供多层次的编程接口,支持用户快速构建基于昇腾平台的 AI 应用和业务。 下面是几个重要概念:

  1. AscendCL:昇腾硬件的统一编程接口,包含了编程模型、硬件资源抽象、AI 任务及内核管理、内存管理、模型和算子调用、媒体预处理接口、加速库调用等一系列功能,充分释放昇腾系统多样化算力,使能开发者快速开发 AI 应用 (类似 CUDA、OpenCL,是昇腾平台的 API 库,只能调用已有算子,不能自定义内核运算,面向 " 调用 " 层,而非 " 计算 " 层。开发你自己的 AI 推理应用程序,控制 " 如何加载模型、准备数据、执行推理、取回结果 “,让模型在昇腾硬件上真正 " 跑起来 “)。
  2. Ascend C:面向算子开发场景的编程语言,原生支持 C 和 C++ 标准规范,最大化匹配用户开发习惯;通过多层接口抽象、自动并行计算、孪生调试等关键技术,极大提高算子开发效率,助力 AI 开发者低成本完成算子开发和模型调优部署(可以自己用 Ascend C 写算子,并编译为昇腾芯片能识别的格式**)。
  3. 算子库:基于昇腾处理器,深度协同优化的高性能算子库(华为官方已经为常见网络算子(如 Conv、MatMul、BN 等)做了优化,用户可以直接调用。)。
  4. ATC 工具:模型转换工具(将其他模型格式(例如 ONNX 网络模型)转成昇腾专用的 model.om 格式(离线模型)),用于 AsencdCL 进行推理应用的开发。
    本实验可以将 CANN 升级到 8.0.0 beta1 或者更高(固件支持最高为 7.0.0,高版本 CANN 工具包可能引起兼容性问题) 社区版资源下载-资源下载中心-昇腾社区

CANN 升级指南

注意:使用 root 用户来完成 CANN 的升级

su - root

查看当前 CANN 版本

使用如下命令查看,当前 CANN 版本,例如我已经升级到 8.0.0 版本

cd /usr/local/Ascend/ascend-toolkit/latest/aarch64-linux
cat ascend_toolkit_install.info

删除原来的 CANN(非必要不要删除)

打开 ascend-toolkit 所在目录

cd /usr/local/Ascend/ascend-toolkit

如果香橙派磁盘不足,可以把旧的 Toolkit 删除:

rm -rf *

下载 CANN 工具包并上传到香橙派

打开昇腾 CANN 官网访问社区版资源 下载地址,下载所需版本的 toolkit 包,例如这里选择 8.0.0 beta1 的 CANN 开发工具包。

将上面这个 CANN 软件上传到 香橙派对应的 /usr/local/Ascend/ascend-toolkit/

方法一:使用 scp 命令:

在下载的 Ascend-cann-toolkit_8.0.0_linux-aarch64.run 相应文件夹下,执行命令:

scp Ascend-cann-toolkit_8.0.0_linux-aarch64.run root@192.168.137.100:/usr/local/Ascend/ascend-toolkit/

方法二:使用 MobaXterm ftp 上传:

安装 CANN

/usr/local/Ascend/ascend-toolkit 路径下执行:

chmod +x Ascend-cann-toolkit_8.0.0_linux-aarch64.run
./Ascend-cann-toolkit_8.0.0_linux-aarch64.run --install

安装时弹出此提示后输入 Y,然后按回车键继续安装,该过程约需要 10-15 分钟,请耐心等待。
安装成功如下:

重启加载环境变量:

sudo reboot

安装 CANN kernels 包

打开昇腾 CANN 官网访问社区版资源 下载地址,下载所需版本的 kernels 包,例如这里选择 8.0.0 beta1 的 CANN 开发工具包。

同理上传文件到指定香橙派目录:

scp Ascend-cann-kernels-310b_8.0.0_linux-aarch64.run root@192.168.137.100:/usr/local/Ascend/ascend-toolkit/

/usr/local/Ascend/ascend-toolkit 路径下执行:

chmod +x Ascend-cann-kernels-310b_8.0.0_linux-aarch64.run
./Ascend-cann-kernels-310b_8.0.0_linux-aarch64.run --install

安装时弹出此提示后输入 Y,然后按回车键继续安装,该过程约需要 10-15 分钟,请耐心等待。
安装成功如下:

深度学习框架:mindspore

介绍


mindspore 的硬件平台支持:Ascend、CPU 和 GPU。
可以在不同操作系统中安装:

  1. Linux:Ascend、CPU、cuda
  2. Windows:cpu
  3. macOS:cpu

安装或升级 Mindspore

MindSpore安装 | 昇思MindSpore社区
开发板的 Ubuntu 系统中已经预装了 MindSpore 2.2.12,实验中可以安装新版本的 mindspore,具体依照实验,注意 mindspore 版本和 cann toolkit 的兼容关系,可以在 历史版本 | 昇思MindSpore社区 中查看,mindspore 版本和 cann 的兼容关系。例如 CANN 7.0.0.beta1 最高支持到 cann2.2.14。

查看当前 Mindspore 版本

使用如下命令,可以查看当前安装的 mindspore 版本:

python -c \
"import mindspore;mindspore.set_context(device_target='Ascend');mindspore.run_check()"

安装或升级 Mindspore

使用如下命令安装 mindspore,例如这里安装

pip install mindspore==2.4.10

注意:从 MindSpore 1.x 升级到 MindSpore 2.x 版本时,需要先手动卸载旧版本,再安装新版本:

pip uninstall mindspore-ascend

ACLLite

ACLLite 库是对 CANN 提供的 ACL 接口进行的高阶封装,简化用户调用流程,为用户提供一组简易的公共接口。当前主要针对边缘场景设计。

软件架构

命名空间模块说明
acllite common 资源管理及公共函数模块
DVPPLite DVPP高阶封装模块
OMExecute 离线模型执行高阶封装模块
Media 媒体功能高阶封装模块

安装教程

配套 版本 环境准备指导
CANN 8.0RC2 CANN软件包安装准备
Python 3.7.5 Python安装准备
硬件设备型号 310B 系列;310P 系列;910B 系列 -

安装依赖 Ffmpeg

通过如下命令查询 OS 版本

lsb_release -a

根据查询结果选择安装方式 Ubuntu 22.04 及以上版本的用户建议使用 apt 安装

sudo apt-get install ffmpeg libavcodec-dev libswscale-dev libavdevice-dev

更新 ACLLite 仓库

拉取 ACLLite 仓库,并进入目录

git clone https://gitee.com/ascend/ACLLite.git
cd ACLLite


设置环境变量,其中 DDK_PATH 中/usr/local 请替换为实际 CANN 包的安装路径

export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub

安装,编译过程中会将库文件安装到/lib 目录下,所以会有 sudo 命令,需要输入密码

bash build_so.sh


最终会在 /usr/local/Ascend/thirdpart/aarch64/acllite 中看到使用 python 封装过的 api,如下: