模型推理
什么是AscendCL?
AscendCL(Ascend Computing Language)是一套用于在昇腾平台上开发深度神经网络推理应用的C语言API库,提供运行资源管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等API,能够实现利用昇腾硬件计算资源、在昇腾CANN平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。简单来说,就是统一的API框架,实现对所有资源的调用。
学习AscendCL需要哪些知识储备?
具备C++/C语言程序开发能力、对机器学习或深度学习有一定了解的开发者,可以更好地理解本文档。
什么是ATC?
昇腾张量编译器(Ascend Tensor Compiler,简称ATC)是异构计算架构CANN体系下的模型转换工具,对于Caffe,TensorFlow等开源框架网络模型,需要使用该工具将开源模型转换为适配昇腾AI处理器的模型。
- 它可以将开源框架的网络模型(如Caffe、TensorFlow等)以及Ascend IR定义的单算子描述文件转换为昇腾AI处理器支持的离线模型。
- 模型转换过程中,ATC会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够高效执行在昇腾AI处理器上。
ATC有哪些主要功能?
ATC工具主要有以下功能:
- 初级功能:原始模型文件或离线模型转成json文件、离线模型支持动态BatchSize/动态分辨率、离线模型支持动态维度、自定义离线模型的输入输出数据类型以及借助离线模型查看软件基础版本号。
- 高级功能:AIPP使能和单算子模型转换。
如何使用ATC?
ATC工具执行模型转换命令如下所示。
示例:
atc --model=$HOME/module/resnet50.prototxt --weight=$HOME/module/resnet50.caffemodel --framework=0 --output=$HOME/module/out/caffe_resnet50 --soc_version=<soc_version>
ATC转换流程是怎样的?
- 使用ATC工具之前,请先在开发环境安装CANN软件包,获取相关路径下的ATC工具,详细说明请参见如何获取ATC工具?。
- 准备要进行转换的模型或单算子描述文件,并上传到开发环境。
- 使用ATC工具进行模型转换,并根据需要配置相关参数。
如何获取ATC工具?
ATC工具集成在开发套件包Ascend-cann-toolkit中,请参考如何获取CANN软件包?获取软件包,ATC工具安装在“Ascend-cann-toolkit安装目录/ascend-toolkit/latest/bin”下。
如何配置ATC转换的环境?
- 必选环境变量
- 设置公共环境变量。
- 设置Python相关环境变量。
- 设置环境变量,指定是否开启单线程或多线程编译。
- 可选环境变量
- 日志落盘、打屏与重定向。
- 开启算子并行编译功能。
- 打印模型转换过程中各个阶段的图描述信息。
哪些场景下推荐使用ATC?
如何验证ATC转换是否成功?
转换完成后,若回显信息如下所示,则说明转换成功。
ATC run success
什么是AMCT?
AMCT是昇腾模型压缩工具,提供了一系列的模型压缩方法,对模型进行压缩处理后,生成的部署模型在昇腾AI处理器上可使能一系列性能优化操作,提高性能。
AMCT支持哪些框架模型?
AMCT支持的框架模型有:Caffe、TensorFlow、ONNX、PyTorch、MindSpore。