Bootstrap

ATC模型转换环境问题案例

ATC(Ascend Tensor Compiler)是异构计算架构CANN体系下的模型转换工具:它可以将开源框架的网络模型(如TensorFlow等)以及Ascend IR定义的单算子描述文件转换为昇腾AI处理器支持的离线模型;模型转换过程中,ATC会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够高效执行在昇腾AI处理器上。

本期就分享几个关于ATC环境搭建问题的典型案例,并给出原因分析及解决方法:

  1. 未设置环境变量,导致ATC工具无法使用
  2. 模型转换时,Python版本不匹配,导致模型转换失败

01 未设置环境变量,导致ATC工具无法使用

问题现象描述

输入模型转换的命令后,按回车,提示如下信息:

bash: atc: command not found

原因分析

ATC工具在CANN软件包中以二进制形式存在,使用该工具前,必须通过环境变量使能二进制才可以运行工具;若使用atc --help命令回车,仍旧回显上述信息,则说明ATC工具无法使用。

解决措施

ATC工具运行前,先设置运行所需环境变量。

  • 以root用户安装Ascend-cann-toolkit包
. /usr/local/Ascend/ascend-toolkit/set_env.sh
#若开发套件包Ascend-cann-toolkit在非昇腾设备上安装,则如下环境变量必须执行,用于设置动态链接库所在路径,否则无需执行
export LD_LIBRARY_PATH=/usr/local/Ascend/ascend-toolkit/latest/<arch>-linux/devlib:$LD_LIBRARY_PATH
  • 以非root用户安装Ascend-cann-toolkit包

. $HOME/Ascend/ascend-toolkit/set_env.sh
#若开发套件包Ascend-cann-toolkit在非昇腾设备上安装,则如下环境变量必须执行,用于设置动态链接库所在路径,否则无需执行
export LD_LIBRARY_PATH=$HOME/Ascend/ascend-toolkit/latest/<arch>-linux/devlib:$LD_LIBRARY_PATH

其中,<arch>请替换为操作系统具体架构。

设置环境变量后,使用atc --help命令回车,若回显了atc相关参数信息,则说明工具可以正常使用,可以进行后续的模型转换。

02 模型转换时,Python版本不匹配,导致模型转换失败

问题现象描述

输入模型转换的命令后,按回车,提示如下信息:

ATC run failed, Please check the detail log, Try 'atc --help' for more information
E40002: The current Python version is [Python 3.6.9]. The system supports only [Python 3.7] or later.
        TraceBack (most recent call last):
        [GraphOpt][InitializeInner][InitTbeFunc] Failed to init tbe.[FUNC:InitializeInner][FILE:tbe_op_store_adapter.cc][LINE:1585]
        [SubGraphOpt][PreCompileOp][InitAdapter] InitializeAdapter adapter [tbe_op_adapter] failed! Ret [4294967295][FUNC:InitializeAdapter][FILE:op_store_adapter_manager.cc][LINE:86]
        [SubGraphOpt][PreCompileOp][Init] Initialize op store adapter failed, OpsStoreName[tbe-custom].[FUNC:Initialize][FILE:op_store_adapter_manager.cc][LINE:133]
        [FusionMngr][Init] Op store adapter manager init failed.[FUNC:Initialize][FILE:fusion_manager.cc][LINE:109]
        PluginManager InvokeAll failed.[FUNC:Initialize][FILE:ops_kernel_manager.cc][LINE:101]
        OpsManager initialize failed.[FUNC:InnerInitialize][FILE:gelib.cc][LINE:238]        GELib::InnerInitialize failed.[FUNC:Initialize][FILE:gelib.cc][LINE:167]

原因分析

ATC工具进行模型编译或者单算子编译时,依赖Python版本,当前要求的Python版本为:Python3.7.x(3.7.0~3.7.11)、Python3.8.x(3.8.0~3.8.11)、Python3.9.x(3.9.0~3.9.7)。查看报错信息,发现当前使用的Python版本,比如上述的Python 3.6.9并不在版本要求范围内。

解决措施

若还未安装符合要求的Python版本,则优先安装对应的Python版本;若已安装,则执行如下环境变量,指定需要使用的版本,以Python3.7.5为例,设置相关环境变量:

#如果用户环境存在多个python3版本,则指定使用python3.7.5版本
export PATH=/usr/local/python3.7.5/bin:$PATH
#设置python3.7.5库文件路径
export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH

 03 更多介绍

[1]昇腾文档中心:昇腾社区-官网丨昇腾万里 让智能无所不及

[2]昇腾社区在线课程:开发者主页-昇腾社区

[3]昇腾论坛:https://www.hiascend.com/forum

;