快速入门
本章节以各框架下模型转换为例,演示如何快速转换一个模型。
- Atlas A2训练系列产品/Atlas 800I A2推理产品不支持Caffe框架。
- 版本兼容性说明:
动态shape场景和静态算力切分场景:若用户使用6.0.1之前的CANN版本进行的模型转换,无法在6.0.1及之后CANN版本进行推理,需要使用6.0.1及之后匹配的CANN版本重新进行模型转换。如果用于想查看已有离线模型使用的ATC工具等基础版本信息,则请参见借助离线模型查看软件基础版本号。
- 如果用户使用的网络模型中有自定义算子,则请优先参见《TBE&AI CPU算子开发指南》手册开发部署好自定义算子,模型转换时会优先去查找自定义算子库匹配模型文件中的算子;若匹配失败,则会去查找内置算子库。
- 如果用户使用Faster RCNN、YOLOv3、YOLOv2、SSD等Caffe框架网络模型进行模型转换,由于此类网络中包含了一些原始Caffe框架中没有定义的算子结构,如ROIPooling、Normalize、PSROI Pooling和Upsample等。为了使昇腾AI处理器能支持这些网络,需要对原始的Caffe框架网络模型进行扩展,降低开发者开发自定义算子/开发后处理代码的工作量,详细扩展方法请参见定制网络修改(Caffe)。
- 针对TensorFlow原始网络模型,如果存在控制流算子,该类网络模型不能直接使用ATC工具进行模型转换,需要先将控制流算子的网络模型转成函数类算子的网络模型,然后利用ATC工具转换成适配昇腾AI处理器的离线模型,详细转换方式请参见定制网络修改(TensorFlow)。
开源框架的TensorFlow网络模型转换成离线模型
- 获取TensorFlow网络模型。
- 执行如下命令生成离线模型。(如下命令中使用的目录以及文件均为样例,请以实际为准)
atc --model=$HOME/module/resnet50_tensorflow*.pb --framework=3 --output=$HOME/module/out/tf_resnet50 --soc_version=<soc_version>
关于参数的详细解释以及使用方法请参见参数说明,请使用与芯片名相对应的<soc_version>取值进行模型转换,然后再进行推理,具体使用芯片查询方法请参见--soc_version。
- 若提示如下信息,则说明模型转换成功,若模型转换失败,则请参见《故障处理》进行定位。
1
ATC run success
成功执行命令后,在--output参数指定的路径下,可查看离线模型(如:tf_resnet50.om)。
模型编译时,若遇到AI CPU算子不支持某种数据类型导致编译失败的场景,可通过启用Cast算子自动插入特性快速将输入转换为算子支持的数据类型,从而实现网络的快速打通,详细流程请参见开启AI CPU Cast算子自动插入特性。
- (后续处理)如果想快速体验直接使用转换后的om离线模型文件进行推理,请准备好环境、om模型文件、符合模型输入要求的*.bin格式的输入数据,单击Link,获取msame工具,参考该工具配套的README,进行体验。
ONNX网络模型转换成离线模型
- 获取ONNX网络模型。
- 执行如下命令生成离线模型。(如下命令中使用的目录以及文件均为样例,请以实际为准)
atc --model=$HOME/module/resnet50*.onnx --framework=5 --output=$HOME/module/out/onnx_resnet50 --soc_version=<soc_version>
关于参数的详细解释以及使用方法请参见参数说明,请使用与芯片名相对应的<soc_version>取值进行模型转换,然后再进行推理,具体使用芯片查询方法请参见--soc_version。
- 若提示如下信息,则说明模型转换成功,若模型转换失败,则请参见《故障处理》进行定位。
1
ATC run success
成功执行命令后,在--output参数指定的路径下,可查看离线模型(如:onnx_resnet50.om)。
模型编译时,若遇到AI CPU算子不支持某种数据类型导致编译失败的场景,可通过启用Cast算子自动插入特性快速将输入转换为算子支持的数据类型,从而实现网络的快速打通,详细流程请参见开启AI CPU Cast算子自动插入特性。
- (后续处理)如果想快速体验直接使用转换后的om离线模型文件进行推理,请准备好环境、om模型文件、符合模型输入要求的*.bin格式的输入数据,单击Link,获取msame工具,参考该工具配套的README,进行体验。
开源框架的Caffe网络模型转换成离线模型
- 获取Caffe网络模型。
- 执行如下命令生成离线模型。(如下命令中使用的目录以及文件均为样例,请以实际为准)
atc --model=$HOME/module/resnet50.prototxt --weight=$HOME/module/resnet50.caffemodel --framework=0 --output=$HOME/module/out/caffe_resnet50 --soc_version=<soc_version>
关于参数的详细解释以及使用方法请参见参数说明,请使用与芯片名相对应的<soc_version>取值进行模型转换,然后再进行推理,具体使用芯片查询方法请参见--soc_version。
- 若提示如下信息,则说明模型转换成功,若模型转换失败,则请参见《故障处理》进行定位。
1
ATC run success
成功执行命令后,在--output参数指定的路径下,可查看离线模型(如:caffe_resnet50.om)。
模型编译时,若遇到AI CPU算子不支持某种数据类型导致编译失败的场景,可通过启用Cast算子自动插入特性快速将输入转换为算子支持的数据类型,从而实现网络的快速打通,详细流程请参见开启AI CPU Cast算子自动插入特性。
- (后续处理)如果想快速体验直接使用转换后的om离线模型文件进行推理,请准备好环境、om模型文件、符合模型输入要求的*.bin格式的输入数据,单击Link,获取msame工具,参考该工具配套的README,进行体验。
MindSpore框架的网络模型转换成离线模型
- 获取MindSpore框架的网络模型。
- 执行如下命令生成离线模型。(如下命令中使用的目录以及文件均为样例,请以实际为准)
atc --model=$HOME/module/ResNet50.air --framework=1 --output=$HOME/module/out/ResNet50_mindspore --soc_version=<soc_version>
关于参数的详细解释以及使用方法请参见参数说明,请使用与芯片名相对应的<soc_version>取值进行模型转换,然后再进行推理,具体使用芯片查询方法请参见--soc_version。
- 若提示如下信息,则说明模型转换成功,若模型转换失败,则请参见《故障处理》进行定位。
1
ATC run success
成功执行命令后,在--output参数指定的路径下,可查看离线模型(如:ResNet50_mindspore.om)。
模型编译时,若遇到AI CPU算子不支持某种数据类型导致编译失败的场景,可通过启用Cast算子自动插入特性快速将输入转换为算子支持的数据类型,从而实现网络的快速打通,详细流程请参见开启AI CPU Cast算子自动插入特性。
- (后续处理)如果想快速体验直接使用转换后的om离线模型文件进行推理,请准备好环境、om模型文件、符合模型输入要求的*.bin格式的输入数据,单击Link,获取msame工具,参考该工具配套的README,进行体验。