昇腾社区首页
中文
注册
开发者
下载

模型构建

对于开源框架的网络模型(如Caffe、TensorFlow等),不能直接在昇腾AI处理器上做推理,需要先使用ATC(Ascend Tensor Compiler)工具将开源框架的网络模型转换为适配昇腾AI处理器的离线模型(*.om文件)。

此处以ONNX框架的ResNet-50网络为例,说明如何使用ATC工具进行模型转换,详细说明请参见ATC离线模型编译工具用户指南

  1. 以运行用户登录开发环境。
  2. 执行模型转换。

    执行以下命令,将原始模型转换为昇腾AI处理器能识别的*.om模型文件。请注意,执行命令的用户需具有命令中相关路径的可读、可写权限。以下命令中的“<SAMPLE_DIR>”请根据实际样例包的存放目录替换。“<soc_version>”请根据实际昇腾AI处理器的版本进行替换。

    cd <SAMPLE_DIR>/MyFirstApp_ONNX/model
    wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx
    atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224"  --soc_version=<soc_version>

    各参数的解释如下,详细约束说明请参见ATC离线模型编译工具用户指南

    • --model:ResNet-50网络的模型文件的路径。
    • --framework:原始框架类型。5表示ONNX。
    • --output:resnet50.om模型文件的路径。请注意,记录保存该om模型文件的路径,后续开发应用时需要使用。
    • --input_shape:模型输入数据的shape。
    • --soc_version:昇腾AI处理器的版本。

      如果无法确定当前设备的soc_version,可按如下方法查询:

      • 针对如下产品型号:在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,获取Name信息。实际配置值为AscendName,例如Name取值为xxxyy,实际配置值为Ascendxxxyy

        Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

        Atlas 200I/500 A2 推理产品

        Atlas 推理系列产品

        Atlas 训练系列产品

      • 针对如下产品型号,在安装昇腾AI处理器的服务器执行npu-smi info -t board -i id -c chip_id命令进行查询,获取Chip NameNPU Name信息,实际配置值为Chip Name_NPU Name。例如Chip Name取值为AscendxxxNPU Name取值为1234,实际配置值为Ascendxxx_1234。其中:
        • id:设备id,通过npu-smi info -l命令查出的NPU ID即为设备id。
        • chip_id:芯片id,通过npu-smi info -m命令查出的Chip ID即为芯片id。

        Atlas A3 训练系列产品/Atlas A3 推理系列产品

  • 如果模型转换时,提示有不支持的算子,请先参见Ascend C算子开发指南先完成自定义算子,再重新转换模型。
  • 如果模型转换时,提示有算子编译相关问题,但根据报错信息无法定位问题、需要联系技术支持时(您可以获取日志后单击Link联系技术支持。),则需设置DUMP_GE_GRAPH、DUMP_GRAPH_LEVEL环境变量,再重新模型转换,收集模型转换过程中各个阶段的图描述信息。关于环境变量以及图描述信息的说明,请参见ATC离线模型编译工具用户指南中的“参考 > dump图详细信息”。
  • 如果模型的输入Shape是动态,关于模型构建、模型推理的说明请参见模型动态Shape输入推理
  • 如果现有网络不满足您的需求,您可以使用昇腾AI处理器支持的算子、调用构图接口自行构建自己的网络,再编译成om离线模型文件。详细说明请参见图模式开发指南