ATC简介和使用
对于开源框架的网络模型(如Caffe、TensorFlow等),不能直接在昇腾AI处理器上运行推理,需要先使用ATC(Ascend Tensor Compiler)工具将开源框架的网络模型转换为适配昇腾AI处理器的离线模型(*.om文件)。
当前支持在开发者套件和Ubuntu系统上转换模型,用户可以在开发者套件上进行模型转换,如果在开发者套件转换模型导致长时间不能运行(1小时以上),则请按照安装方案介绍的方法在Ubuntu系统上转换模型。
更多详情可参考“Atlas 200I DK A2 官网文档 -- 使用ATC命令转换模型”[1]
更多详情可参考“昇腾CANN文档 -- ATC log”[2]
常用命令参数
常用命令参数样例:
atc --model=model.onnx --framework=5 --output=model --soc_version=Ascend310B4
相关命令参数含义如下:
--model=model.onnx:model.onnx 是要被转换的模型的文件名称。
--framework=5:被转换的模型是什么类型。0:Caffe; 1:MindSpore; 3:Tensorflow; 5:ONNX。
--output=model:转换后的 om 格式的模型的文件名称。不用加 .om,会自动加。如果写成 model.om,则转换后的模型的文件名会是 model.om.om。
--soc_version=Ascend310B4:模型在哪种 NPU 上使用。昇腾/鲲鹏开发板的芯片就是 Ascend310B4。可以在开发板上执行命令
npu-smi info 查看确认。
查看更多日志信息
在开发板上转换模型可能耗时较多,好久没有输出也不知什么情况。因此如果希望查看 atc 执行时输出的更多信息,可按如下步骤操作:
先执行以下命令设置环境变量:
export ASCEND_SLOG_PRINT_TO_STDOUT=1
然后在执行 atc 命令时,增加 --log=xxx 参数
atc --model=model.onnx --framework=5 --output=model --soc_version=Ascend310B4 --log=warning
--log=xxx中 xxx 的取值如下:
info:输出info/warning/error级别的调试日志信息。
warning:输出warning/error级别的调试日志信息。
error:输出/error级别的调试日志信息。
null:(默认值)不输出调试日志。
在PC WSL 上转换模型
在 PC 机上运行 ATC 模型转换工具,应该比在开发板上快一些。可以考虑在 PC 机上转换模型。 需要先在 PC 机上安装 Linux,此处选用的是 WSL(Windows Subsystem for Linux)方式。更多详情可参考“WSL 安装Linux Ubuntu 22.04子系统”[3]。 安装好 Linux 之后,在 Linux 上安装 CANN 软件包,就可以在 PC 上运行 ATC 转换模型了。更多详情可参考“安装 CANN 软件包”[4]。
以下以 Windows 11 Pro 24H2 为例。重点描述一些注意点,其余请参考官网文档。
WSL 方式安装 Linux
先要启动 WSL 功能。在昇腾官网文档没有展开描述,可上网搜索,大致是:
选择
控制面板 | 程序 | 程序和功能,点击启用或关闭 Windows 功能,然后在出现的界面中,勾选2项:适用于 Linux 的 Windows 子系统
和 虚拟机平台。然后重启电脑。
更多描述可参考 “WSL2 最新最全帮助小白一步步详细安装教程”[5]。
电脑重启后,接下来就按照“WSL 安装Linux Ubuntu 22.04子系统”[3],一步步操作即可。
第2步,要求“管理员身份”运行 PowerShell,就照做吧。没试过普通用户执行 PowerShell 啥结果。先执行
wsl --update,再执行wsl --list --online。有可能连校园网执行 wsl --list --online
会报错,则考虑换个网络(比如手机热点)再尝试执行。
第3步、第4步,没有什么补充。
第5步。建议照做,把 apt 源换成华为源。
安装CANN
基本上就是参考“安装 CANN 软件包”[4],一步步操作。
第1步。可以按照昇腾官方文档操作。或者在 PC 机的 Linux 窗口执行:
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%207.0.RC1/Ascend-cann-toolkit_7.0.RC1_linux-x86_64.run
第2步,安装必要的依赖。
2.1 检查root用户的umask。没有做,似乎也OK的。
2.2 配置安装用户权限。WSL 安装 Linux 后的第一个账号,是有 sudo 权限的。因此也可跳过。
2.3 安装依赖
2.3.1 没有一个个检查 gcc 等是否存在,可以直接复昇腾官网文档后执行
sudo apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev libbz2-dev libxslt1-dev unzip pciutils net-tools libblas-dev gfortran libblas3
2.3.2 看看 python3 和 pip3 的版本。是满足要求的。
2.3.3 pip3 安装相关依赖
(1) 建议按文档操作,pip换成华为源。
(2) 建议执行命令 pip3 install --upgrade pip
(3) 复制文档一堆 pip3 install xxx 并执行。 pip3 install numpy 改成 pip3 install numpy==1.24.0,因为 CANN 软件包还不支持 1.24.0 以上版本。其余无变化,原样执行。(新版本CANN的文档中已明确了1.24.0)
第3步。没有要补充。会有warning 说没有找到 CANN 驱动包(驱动NPU的),可以忽略的。因为 PC 电脑上没有昇腾 NPU。
第4步。环境变量要设置。并可把这2行,放到 .bashrc 中(执行 vim ~/.bashrc,将 source / export
这2行复制粘贴到 .bashrc 文件的最后),这样就能被自动执行了。
参考资料:
1. Atlas 200I DK A2 官网文档 -- 使用ATC命令转换模型,链接。
2. 昇腾CANN官网文档 -- ATC离线模型编译工具 | 参数说明 | 高级功能参数 | 调试选项 | --log,链接。
3. Atlas 200I DK A2 官网文档 -- 使用 WSL 安装 Linux Ubuntu 22.04,链接
4. Atlas 200I DK A2 官网文档 -- 安装CANN,链接
5. CSDN文章 -- WSL2 最新最全帮助小白一步步详细安装教程,链接