文档
注册

执行转换

模型转换和调优入口

前提条件

  • 使用MindStudio安装用户,将所转换模型的模型文件以及权重文件上传到Ascend-cann-toolkit开发套件包所在的开发环境。
  • 进行AOE调优时,避免由于环境配置太低或者内存不足的情况导致AOE调优失败,建议开启NCS服务,在开发环境和运行环境之间建立通信,具体操作请参见CANN 6.3.RC2 AOE工具使用指南配置密钥证书章节。

    开启NCS服务后,进行AOE调优时需在“Advanced Options Preview”高级选项配置页签的“Additional Arguments”参数中配置“--ip=xx.xx.xx.xx --port=xxx”与运行环境建立通信,IP和Port为运行环境的IP和端口号。

操作步骤

以下操作以ATC工具为例:

  1. 打开模型转换和调优页面,在“Model Information”页签中上传模型文件和权重文件,界面参考如图1图2所示。
    图1 配置模型信息(Linux系统示例)
    图2 配置模型信息(Windows系统示例)

    参数解释如表1所示。

    表1 Model Information界面参数配置

    参数

    说明

    备注

    Mode Type

    运行模式,默认ATC。

    必选。

    • ATC:将开源框架的网络模型转换为适配昇腾AI处理器的离线模型,此模式不会对模型进行调优。
    • AOE:充分利用有限的硬件资源,对模型进行算子调优或者子网调优,以满足算子和整网的性能要求。

    CANN Machine

    远程连接CANN所在环境的SSH地址。

    必选。

    仅Windows系统支持此参数,表现格式为<username>@localhost:端口号

    Model File

    模型文件,该模型文件需要取消其他用户写的权限。

    必选。

    • Linux环境:单击右侧的或直接输入本地服务器上需要转换的模型文件路径。
    • Windows环境:
      • 选择“remote path”,在后台服务器路径选择需要转化的模型文件并上传;
      • 选择“local path”,单击右侧的,在Windows本地选择或直接输入需要转化的模型文件路径并上传。

    选择好模型文件后,单击右侧的按钮,可以查看该模型的原始网络结构图,详情请参见•Model File:查看原始模型网络结构图

    说明:
    • 当导入超大模型时,如果提示报错“Failed to get model input shape.”,请在菜单栏选择“Help > Change Memory Settings”,在弹出的Memory Settings窗口中增大内存。
    • 配置界面只支持对单个模型进行AOE调优,如需对目录下多个模型进行调优,请在MindStudio界面下方的Terminal窗口执行AOE调优命令。例如:aoe --job_type=1 --model_path=$home/xxx/

      $home/xxx/为待调优模型所在路径,用户根据实际路径自行替换。

    Weight File

    权重文件。

    当原始框架是Caffe时,该参数存在且必选。

    • Windows环境中:

      模型文件和权重文件需要放在同一目录下,单击选择模型文件时,权重文件将会自动填充。

    • Linux环境中:
      • 如果模型文件和权重文件存在于后台服务器同一目录下,且名称和模型文件名称相同,则选择模型文件后,权重文件会自动填充。
      • 如果模型文件和权重文件存在于后台服务器不同目录或者在同一目录下,但名称和模型文件名称不相同。单击右侧的选择模型文件对应的权重文件或在输入框中自行输入*.caffemodel权重文件在后台服务器的路径。

    Model Name

    输出的模型文件名称。

    必选。

    • 选择模型文件后,该参数会自动填充,用户可以自行修改。
    • 如果模型的输出路径已经存在相同名称模型文件,单击“Next”后会提示覆盖原有文件或重命名当前Model Name的信息。

    Job Type

    调优模式。

    Mode Type选择AOE时必选。

    取值如下所示,默认为1-Subgraph Auto Tune(SGAT)。

    • 1-Subgraph Auto Tune(SGAT):表示子图调优。
    • 2-Operator Auto Tune(OPAT):表示算子调优。

    Target SoC Version

    模型转换时指定芯片型号。

    Mode Type选择ATC时必选。

    请根据板端环境具体芯片形态进行选择,默认为Ascend310。

    Output Path

    模型文件输出路径。

    必选

    默认输出路径为$HOME/modelzoo/${Model Name}/${Target SoC Version}/,也可手动输入或单击可单击右侧进行自定义。

    Input Format

    输入数据格式。

    必选。

    该参数只支持设置为单个取值。

    • 当原始框架是Caffe时,取值为NCHW、ND(表示支持任意维度格式,N<=4),默认为NCHW。
    • 当原始框架是ONNX时,取值为NCHW、NCDHW、ND(表示支持任意维度格式,N<=4),默认为NCHW。
    • 当原始框架是MindSpore时,取值为NCHW。
    • 当原始框架是TensorFlow时,取值为NCHW、NHWC、ND、NCDHW、NDHWC,默认为NHWC。

    Input Nodes

    模型输入节点信息。

    必选。

    • 如果选择模型文件并且解析成功,则该参数下方会展示模型输入节点的Shape信息以及Type信息。
    • 如果选择模型文件后,无法解析“Input Nodes”,该场景下,需要用户根据模型文件中的相关信息手动输入:单击该参数右侧的,在弹出界面中输入模型输入节点的Name、Shape信息和输入节点的数据类型Type。
    • 如果模型有多个输入,解析成功后,“Input Nodes”参数下方会展示每一个输入节点的Shape信息和Type信息。
      说明:
      • 若原始框架为MindSpore,Input Nodes不会自动解析对应模型中的输入信息,需要用户自行查看相应的网络模型输入,手动填写。如果不填,后台使用atc命令进行转换时,ATC工具会自动解析网络模型中的相关参数。
      • 模型转换工具目前不支持删除模型中默认带动态Shape的节点。

    Shape

    模型输入的shape信息。

    例如图1中的数值分别代表输入数据的N(模型一次处理的图片个数),C(Channel,例如彩色RGB图像的Channel数为3),H(Height),W(Width)。若开启AIPP功能,则此处的H,W取值即为AIPP输出数据的高和宽。

    更多输入数据格式设置请参见•Shape:根据输入数据格式分为以下两种设置情...

    Type

    指定输入节点的数据类型。

    必选。

    如果模型有多个输入,只有Type取值不为FP16的节点,才可以配置“Data Pre-Processing”页签;如果Type取值不为FP16的节点无法获取Shape中的H,W信息,也无法配置“Data Pre-Processing”页签。

    更多原始框架支持的数据类型以及是否可配置“Data Pre-Processing”页签情况请参见•Type:支持的数据类型

    Output Nodes

    指定输出节点信息。

    可选。

    如果用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,详细操作请参见•Output Nodes:指定输出节点信息。模型转换后,在相应.om模型文件可以看到该层算子的输出直接作为模型的输出。详细信息请参见模型可视化

    “Output Nodes”参数下方Select层的算子,默认为全部选中。

    Load Configuration

    导入上次模型转换的配置文件。

    可选。

    如果用户之前转换过模型,无论成功与否,在$HOME/modelzoo/${Model Name}/${Target SoC Version}/路径都会生成${Model Name}_config.json配置文件,该文件记录用户模型转换时所选择的配置信息,包括所用模型路径、模型名称、输入输出配置,数据预处理配置等,下次重新转换模型时,通过单击“Load Configuration”选择相应路径下的配置文件,则相应的配置信息会自动填充,用户自行决定是否沿用上次配置还是修改配置后重新进行模型转换。

    Model Information界面参数详细说明:

    • Model File:查看原始模型网络结构图。

      “Model File”栏选择好模型文件后,单击右侧的按钮,弹出生成模型网络结构图进度条,之后会弹出该模型的原始网络结构图,在模型网络结构图中可以进行以下操作,具体操作方法请参见可视化界面说明(MindSpore框架的原始网络模型,不支持查看网络结构图。)。

      • 查看算子信息
      • 查看算子输出维度和shape信息

        如果用户选择的模型中包括不支持的算子,MindStudio界面“Output”窗口会提示哪些算子不支持并提示shape信息无法获取等信息,在弹出的网络结构图中该算子呈现红色,该场景下无法获取算子的输出维度和shape信息。该场景下的处理方法请参见异常处理

      • 搜索算子
      • 搜索算子内部信息
    • Shape:根据输入数据格式分为以下两种设置情况。
      • 当“Input Format”参数是具有固定形状的输入数据格式,如NCHW、NCDHW等。
        • 设置动态batch:适用于执行推理时,每次处理图片数量不固定的场景。

          将解析的shape中的N设置为-1,会在shape下方出现Dynamic Batch Size参数。在其中的编辑框中输入具体的档位数,每一档通过英文逗号分隔。最多支持100档配置,每个档位数值建议限制为:[1~2048],例如输入1,2,4,8。

          如果模型转换时设置了Dynamic Batch Size参数,则使用应用工程进行模型推理时,需要在aclmdlExecute接口之前,增加aclmdlSetDynamicBatchSize接口,用于设置真实的batch档位。关于aclmdlSetDynamicBatchSize接口的具体使用方法,请参见CANN 6.3.RC2 应用软件开发指南(C&C++)》或《CANN 6.2.RC2 应用软件开发指南(C&C++)中的AscendCL API参考 > 模型加载与执行章节。

        • 设置输入图片的动态分辨率:适用于执行推理时,每次处理图片宽和高不固定的场景。

          将解析的shape中的H和W设置为-1,会在shape下方出现Dynamic Image Size参数。在其中的编辑框中输入具体的动态分辨率参数,最少输入两组,每一组参数通过英文分号分隔,组内参数使用英文逗号分隔。最多支持100档配置,例如输入112,112;224,224。

          如果模型转换时设置了Dynamic Image Size参数,则使用应用工程进行模型推理时,需要在aclmdlExecute接口之前,增加aclmdlSetDynamicHWSize接口,用于设置真实的分辨率。关于aclmdlSetDynamicHWSize接口的具体使用方法,请参见CANN 6.3.RC2 应用软件开发指南(C&C++)》或《CANN 6.2.RC2 应用软件开发指南(C&C++)中的AscendCL API参考 > 模型加载与执行章节。

          如果模型转换时设置了动态分辨率,并且要使用“Data Pre-Processing”中的数据预处理功能,该场景下不能设置数据预处理的Crop和Padding功能。

          设置动态batch和动态分辨率不能同时使用,一次只能设置其中一个参数。

      • 当“Input Format”参数为ND,设置ND格式下的动态维度:适用于执行推理时,每次处理任意维度的场景。

        根据需要设置-1在Shape中数量及位置,会在Shape下方出现Dynamic Dims参数。在其中的编辑框中输入具体的动态维度参数,最少输入2组,最多100组。组与组之间使用英文分号分隔,组内参数使用英文逗号分隔。组与组之间的内容不能重复,组内的最小维度为1。每组中的参数值与Shape参数中的-1标识的参数依次对应,Shape参数中有几个-1,则每组必须设置几个参数值。例如输入shape信息为“-1,-1,-1,-1”,输入Dynamic Dims参数可以为“1,224,224,3;2,448,448,6”。

    • Type:支持的数据类型。
      • 支持的数据类型:
        • 若原始框架类型为Caffe、ONNX,支持的数据类型为FP32、FP16、UINT8。
        • 若原始框架类型为MindSpore,支持的数据类型为FP32、UINT8。
        • 若原始框架类型为TensorFlow,支持的输入数据类型为FP32、FP16、UINT8、Int32、Int64、Bool。
      • 根据Type数据类型判断“Data Pre-Processing”页签是否可配置:
        • 当原始框架为Caffe、ONNX和MindSpore时,只有Type取值为UINT8,2“Data Pre-Processing”页签才支持配置,其他类型不支持配置。如果模型有多个输入,只有Type取值为UINT8的节点,才可以配置“Data Pre-Processing”页签;如果Type取值为UINT8的节点无法获取Shape中的H,W信息,也无法配置“Data Pre-Processing”页签。
        • 当原始框架为TensorFlow时,只有Type取值不为FP16,2“Data Pre-Processing”页签才支持配置:
          • 如果Type取值为UINT8,则“Data Pre-Processing”页签默认开启,且不可以关闭。
          • 如果Type取值为FP32、Int32、Int64、Bool中的一种,则“Data Pre-Processing”页签默认关闭,可手动开启。
    • Output Nodes:指定输出节点信息。
      单击“Select”在弹出的网络拓扑结构中,选中某层节点,右击选择Select,该层由蓝色标签进行标记,单击“OK”后,在“Output Nodes”参数下面会看到标记层的算子,右击选择Deselect取消选中。
      • Op Name:标记层的算子名称。
      • Data Type:算子输出的数据类型,包括FP32、UINT8、FP16,通过该参数用户可以设置单个算子的输出数据类型。
      • 如果不标记某层算子或标记后Output Nodes节点下方不选中某个算子,则模型的输出默认为最后一层的算子信息。
      • 如果标记某层算子,并且标记后Output Nodes节点下方选中某个或多个算子,则模型输出为Output Nodes节点下方选中的算子。
      • 如果模型转换过程中该算子被融合掉,则该算子不能作为输出节点。
      • 如果用户选择的模型中包括不支持的算子,则单击“Select”后,MindStudio界面“Output”窗口会提示哪些算子不支持并提示shape信息无法获取等信息,在弹出的网络结构图中该算子呈现红色,该场景下无法获取算子的输出维度和shape信息。
      • 若原始框架为MindSpore,该参数无法编辑,不支持指定输出节点信息。
  2. 单击“Next”,进入“Data Pre-Processing”配置数据预处理页签,界面参考如图3所示。
    数据预处理是昇腾AI处理器提供的硬件图像预处理模块,包括色域转换,图像归一化(减均值/乘系数)和抠图(指定抠图起始点,抠出神经网络需要大小的图片)等功能。
    图3 配置数据预处理功能

    参数说明如表2所示。

    表2 Data Pre-Processing界面参数配置

    参数

    说明

    备注

    Image Pre-processing Mode

    图片预处理模式, 包括如下两种:

    • Static:静态AIPP。
    • Dynamic:动态AIPP。

    -

    Image Pre-processing Mode取值为Static,如下参数需要配置:

    Load Aipp Configuration

    AIPP配置加载功能。动态AIPP不支持此功能。

    此功能默认关闭,开启此功能后,在“Aipp Configuration File”输入框中选择对应的配置文件。

    加载配置文件后,所有“Input Node: (data)”和“Input Node: (im_info)”下的参数按照配置文件自动设置。如有需要,打开“Aipp Configuration File”右侧的开关,界面下方将会展示“Input Node: (data)”和“Input Node: (im_info)”中的所有参数,用户可对其进行自定义修改。

    Input Node: (data)

    节点配置开关,可以控制是否对该节点开启AIPP。

    • 图1中Input Nodes参数对应data节点的Type取值为UINT8,并且能获取模型的宽和高,该参数才会自动开启。
    • 当模型为TensorFlow时,图1中Input Nodes参数对应data节点的Type取值为FP32、Int32、Int64、Bool,并且能获取模型的宽和高时,可以手动开启该参数。

    Input Node: (im_info)

    模型有两个输入时,该参数才出现,表示对模型的第二个输入开启AIPP。

    只有图1中Input Nodes参数对应im_info节点的Type取值为UINT8,并且能获取模型的宽和高,该参数才会自动开启。Input Node: (im_info)中的im_info根据解析的模型不同而变化。

    Input Image Format

    输入图片格式。

    更多图片输入格式详情请参见•Input Image Format:根据图片...

    Input Image Resolution

    原始图片大小。

    • 如果“Input Image Format”取值为“YUV420 sp”,要求原始图片的宽和高取值是偶数。
    • 如果1“Shape”设置了动态分辨率参数,即原始图片的宽和高不确定,要求其宽和高取值为0。

    Model Image Format

    模型处理图片格式。该参数同时也是色域转换开关,默认开启。当输入图片格式与模型处理文件格式不一致时需要开启。

    输入图片格式不同,模型处理图片格式不同,更多格式说明请参见•Model Image Format:根据图片...

    Crop

    抠图开关,若开启,则表示启用抠图功能。默认关闭。

    开启该参数后,下方会出现如下两个参数,参数说明以及抠图约束请参见•Crop:抠图开关开启后,参数解释以及抠图约束...

    Padding

    Padding使能开关,若开启,则表示启用补边功能。默认关闭。

    Padding Area [L][R][B][T]取值范围为[0,32]。AIPP经过Padding后,输出的图片的高和宽要与模型需要的高和宽保持一致。

    Normalization

    归一化开关。

    开启后,其中“Conversion Type”表示计算规则,包括Mean、Min、Variance三个配置项。

    Mean

    每个通道的均值。

    当开启“Normalization”参数时才呈现,该参数的具体显示以及值的详情请参见•Mean:根据“Model Image For...

    Min

    每个通道的最小值。

    当开启“Normalization”参数时才呈现,该参数的具体显示以及值的详情请参见•Min:根据“Input Image Form...

    1/Variance

    每个通道的方差的倒数。

    当开启“Normalization”参数时才呈现,该参数的具体显示以及值的详情请参见•1/Variance:根据“Input Ima...

    Image Pre-processing Mode取值为Dynamic,如下参数需要配置:

    Input Node: (data)

    动态AIPP节点配置开关,可以控制是否对该节点开启动态AIPP。

    • 图1中Input Nodes参数对应data节点的Type取值为UINT8,并且能获取模型的宽和高,该参数才会自动开启。
    • 当模型为TensorFlow时,图1中Input Nodes参数对应data节点的Type取值为FP32、Int32、Int64、Bool,并且能获取模型的宽和高时,可以手动开启该参数。

    Input Node: (im_info)

    模型有两个输入时,该参数才出现,表示对模型的第二个输入开启动态AIPP。

    只有图1中Input Nodes参数对应im_info节点的Type取值为UINT8,并且能获取模型的宽和高,该参数才会自动开启。Input Node: (im_info)中的im_info根据解析的模型不同而变化。

    Max Image Size (Byte)

    输入图像最大的size,动态AIPP必须配置(如果为动态batch场景,N为最大档位数的取值)。

    根据输入图像格式确定该参数的取值,详情请参见•Max Image Size (Byte):根...

    Data Pre-Processing界面参数详细说明:

    • Input Image Format:根据图片输入格式,分为以下几种情况。
      • 若取值为YUV420 sp、YVU420 sp、YUV422 sp、YVU422 sp,则右侧会出现输入数据类型选项:

        BT.601(Video Range)、BT.601(Full Range)、BT.709(Video Range)、BT.709(Full Range)

        不同的类型,对应不同的色域转换配置(色域转换,用于将输入的数据格式,转换为模型需要的格式,具体色域转换系数会在模型转换完成后生成在insert_op.cfg配置文件中)其中:

        • BT.601是标准清晰度视频的格式,定义于SDTV标准中。
        • BT.709是标准化高清晰度视频的格式,定义于HDTV标准中。

        两种标准又分为NARROW(Video Range)和WIDE(Full Range),其中:

        NARROW取值范围为:;WIDE取值范围为:,关于如何判断输入数据的标准,请参见CANN 6.3.RC2 ATC工具使用指南》或《CANN 6.2.RC2 ATC工具使用指南“FAQ > 使用AIPP色域转换模型时如何判断视频流的格式标准”章节

      • 若取值为YUV400,不支持色域转换。
      • 若取值为RGB package、BGR package、ARGB package、RGBA package、ABGR package、BGRA package,则不会出现右侧的输入数据类型选项,根据输出(Model Image Format)参数的取值不同,模型转换完成后,数据预处理配置文件insert_op.cfg中如下参数的取值不同:
        • 若取值为BGR package,输出为RGB;或取值为RGB package,输出为BGR:
          #色域转换前,R通道与B通道交换开关/U通道与V通道交换开关
          rbuv_swap_switch : true
        • 若取值为BGR package,输出为BGR;或取值为RGB package,输出为RGB:
          #色域转换前,R通道与B通道交换开关/U通道与V通道交换开关
          rbuv_swap_switch : false
        • 若取值为ARGB package,输出为RGBA;或取值为ABGR package,输出为BGRA:
          #色域转换前,R通道与B通道交换开关/U通道与V通道交换开关
          rbuv_swap_switch : false     
          #色域转换前,RGBA->ARGB, YUVA->AYUV交换开关
          ax_swap_switch : true
        • 若取值为ARGB package,输出为BGRA;或取值为ABGR package,输出为RGBA:
          rbuv_swap_switch : true 
          ax_swap_switch : true
        • 若取值为RGBA package,输出为RGBA;或取值为BGRA package,输出为BGRA:
          rbuv_swap_switch : false 
          ax_swap_switch : false
        • 若取值为RGBA package,输出为BGRA;或取值为BGRA package,输出为RGBA:
          rbuv_swap_switch : true 
          ax_swap_switch : false
    • Model Image Format:根据图片格式输入不同,模型处理图片格式不同,分为以下几种情况。
      • “Input Image Format”取值为YUV420 sp、YVU420 sp、YUV422 sp、YVU422 sp、BGR package,则“Model Image Format”取值为RGB、BGR。
      • “Input Image Format”取值为RGB package,则“Model Image Format”取值为RGB、BGR、GRAY。
      • “Input Image Format”取值为YUV400,则“Model Image Format”取值只能为GRAY。
      • “Input Image Format”取值为ARGB package、RGBA package、ABGR package、BGRA package,则“Model Image Format”取值为RGBA、BGRA。
      • 2“Aipp Configuration File”选择的AIPP配置文件是读不出RGB数据的异常文件,则“Model Image Format”默认取值为GRAY。
    • Crop:抠图开关开启后,参数解释以及抠图约束如下所示。
      • 开启该参数后,下方会出现如下两个参数:
        • Cropping Start:抠图开始位置。Cropping Start [H][W]的取值范围要小于Input Image Resolution [H][W](原始图片的高和宽)。
        • Cropping Area:抠图大小,默认抠图大小的宽和高来自图1“Input Nodes”参数中Shape参数取值的宽和高,修改的宽和高取值不能超过原始图片Input Image Resolution对应参数的取值。
      • 抠图约束如下:
        • “Input Image Format”取值为YUV420 sp、YVU420 sp,则Cropping Start [H][W]都必须为偶数。
        • “Input Image Format”取值为YUV422 sp、YVU422 sp,则Cropping Start [W]必须为偶数。
        • “Input Image Format”取值为其他值,对Cropping Start [H][W]没有约束。
        • 若开启抠图功能,则Input Image Resolution >= Cropping Area + Cropping Start。

        若开启抠图功能,并且没有开启Padding,该场景下Cropping Area [H][W]才能取值为0或不配置,此时抠图大小Cropping Area [H][W]取值来自图1Input Nodes中shape取值的高和宽(模型文件input shape中的高和宽)。

    • Mean:根据“Model Image Format”参数的取值,该参数的具体显示和值如下所示。
      • “Model Image Format”为RGB时,则该参数显示为Mean: [R][G][B],每个通道的默认值为104、117、123,可根据需要手动修改默认值。
      • “Model Image Format”为BGR时,则该参数显示为Mean: [B][G][R],每个通道的默认值为104、117、123,可根据需要手动修改默认值。
      • “Model Image Format”为GRAY时,则该参数显示的默认值为104,可根据需要手动修改默认值。
      • “Model Image Format”为RGBA时,则该参数显示为Mean: [R][G][B][A],每个通道的默认值为104、117、123、0,可根据需要手动修改默认值。
      • “Model Image Format”为BGRA时,则该参数显示为Mean: [B][G][R][A],每个通道的默认值为104、117、123、0,可根据需要手动修改默认值。
    • Min:根据“Input Image Format”参数的取值,该参数的具体显示和值如下所示。
      • “Input Image Format”为YUV420 sp、YVU420 sp、YUV422 sp、YVU422 sp、YUV400、RGB package、BGR package,则该参数显示为Min: [R][G][B],每个通道的默认值都为0。
      • “Input Image Format”为ARGB package、RGBA package、ABGR package、BGRA package,则该参数显示为Min: [R][G][B][A],每个通道的默认值都为0。
    • 1/Variance:根据“Input Image Format”参数的取值,该参数的具体显示和值如下所示。
      • “Input Image Format”为YUV420 sp、YVU420 sp、YUV422 sp、YVU422 sp、YUV400、RGB package、BGR package,则该参数显示为1/Variance: [R][G][B],每个通道的默认值都为1.0。
      • “Input Image Format”为ARGB package、RGBA package、ABGR package、BGRA package,则该参数显示为1/Variance: [R][G][B][A],每个通道的默认值都为1.0。
    • Max Image Size (Byte):根据图像输入格式的不同,该参数的取值也不同,该参数的具体取值如下所示。
      • 若输入图像格式为YUV400_U8,则Max Image Size>=N * Input Image Resolution [W] * Input Image Resolution [H] * 1。
      • 若输入图像格式为YUV420SP_U8,则Max Image Size>=N * Input Image Resolution [W] * Input Image Resolution [H] * 1.5。
      • 若输入图像格式为XRGB8888_U8,则Max Image Size>=N * Input Image Resolution [W] * Input Image Resolution [H] * 4。
      • 若输入图像格式为RGB888_U8,则Max Image Size>=N * Input Image Resolution [W] * Input Image Resolution [H] * 3。

    模型转换是否开启AIPP功能,执行推理业务时,对输入图片数据的要求:

    模型转换时开启AIPP,在进行推理业务时,输入图片数据要求为NHWC排布,该场景下最终与AIPP连接的输入节点的格式被强制改成NHWC,该场景下可能与1“Model Information”页签中“Input Format”参数指定的数据格式不一致。

  3. 单击“Next”,进入“Advanced Options Preview”高级选项配置页签,界面参考如图4所示。
    图4 高级选项配置

    参数说明如表3所示。

    表3 Advanced Options Preview界面参数配置

    参数

    说明

    备注

    Operator Fusion

    是否关闭融合功能。
    • 打开表示关闭融合功能。打开该项将显示“Fusion Passes”。
    • 关闭表示开启融合功能。参数默认关闭,即默认打开融合功能。

    如果使用昇腾模型压缩工具量化后的模型通过模型转换得到.om离线模型,然后进行精度比对,则需要打开该开关。打开后,模型转换完毕,在生成om模型的同级目录下,会生成fusion_switch.cfg配置文件,该文件记录哪些功能被关闭。

    说明:

    关闭融合功能时,仅关闭配置文件中指定的融合规则,当前可以关闭的融合规则请参见CANN 6.3.RC2 图融合和UB融合规则参考》或《CANN 6.2.RC2 图融合和UB融合规则参考,但是由于系统机制,其他融合规则无法关闭。

    Fusion Passes

    需要关闭的融合规则。

    打开“Operator Fusion”功能,会显示该项。默认关闭的融合规则以及如何添加需要关闭的融合规则详情请参见•Fusion Passes:默认关闭的融合规则...

    Log Print Level

    日志级别配置开关,可以控制是否打印模型转换过程中对应级别的日志信息。

    • 打开表示可以设置日志级别并打印对应级别的日志信息;
    • 关闭表示不打印日志信息。参数默认关闭。

    日志级别:

    • error:输出error/event级别的运行信息。
    • warning:输出warning/error/event级别的运行信息。
    • info:输出info/warning/error/event级别的运行信息。
    • debug:输出debug/info/warning/error/event级别的运行信息。

    Additional Arguments

    扩展转换参数。

    • 模型转换界面不支持配置,但是ATC或者AOE工具支持的参数,均可通过此选项进行扩展。最多支持输入2048个字符。
    • 在下方编辑框中输入ATC或者AOE工具可用的参数,用户根据实际情况进行填写,多个参数使用空格分隔。详细参数请参见CANN 6.3.RC2 ATC工具使用指南》或《CANN 6.2.RC2 ATC工具使用指南的“参数说明”章节或者CANN 6.3.RC2 AOE工具使用指南》或《CANN 6.2.RC2 AOE工具使用指南的“AOE参数说明”章节,例如:--log=info。
    • 如果界面已经有模型转换支持的参数,例如该页签中的设置模型转换过程中日志的级别参数“Log Print Level”,对应ATC工具中的“--log”参数,则在“Additional Arguments”再次配置“--log”参数为其他数值,例如配置为“--log="info"”,则“Log Print Level”参数中指定的模式不生效。

    Environment Variables

    环境变量。可选参数,请根据实际自行配置。

    • 在文本框中添加环境变量。环境变量_1=值1;环境变量_2=值2,多个环境变量用英文分号隔开。

      例如:TE_PARALLEL_COMPILER=8;REPEAT_TUNE=False

      环境变量解释:

      • TE_PARALLEL_COMPILER:AOE场景下,算子编译所需环境变量。
      • REPEAT_TUNE:AOE场景下,是否重新发起调优所需环境变量。
    • 单击文本框后的图标,在弹出的对话框中单击填写。
      • 在Name中输入环境变量名称:PATH_1
      • 在Value中输入环境变量值:值1

    环境变量的详细配置请参见CANN 6.3.RC2 AOE工具使用指南离线推理场景下调优(其他推理设备) > 配置环境变量章节。

    Command Preview

    模型转换和调优使用的ATC或者AOE参数预览。不支持修改。

    • 在所有页签配置完相关参数后,该区域会给出界面参数转换成ATC或者AOE命令的结果预览,例如“Log Print Level”参数配置为“error”,则“Command Preview”区域展示的atc命令为“--log=error”
    • 如果“Additional Arguments”中再次配置界面已有的参数,例如配置为“--log="info"”,则“Command Preview”区域会追加相应的参数,模型转换和调优时,“Command Preview”区域后面的参数取值会覆盖前面已有的参数。

    Advanced Options Preview界面参数详细说明:

    • Fusion Passes:默认关闭的融合规则以及如何添加需要关闭的融合规则如下所示。
      • 默认关闭的融合规则:

        V100RequantFusionPass、V200RequantFusionPass、ConvConcatFusionPass、SplitConvConcatFusionPass、TbeEltwiseQuantFusionPass、TbeConvDequantVaddReluQuantFusionPass、TbeConvDequantVaddReluFusionPass、TbeConvDequantQuantFusionPass、TbeDepthwiseConvDequantFusionPass、TbeFullyconnectionElemwiseDequantFusionPass、TbeConv2DAddMulQuantPass、TbePool2dQuantFusionPass、TbeAippConvReluQuantFusion、TbeCommonRules0FusionPass、TbeCommonRules2FusionPass。

      • 添加需要关闭的融合规则:
        • 在文本框中输入需要关闭的融合规则。融合规则名称1:off;融合规则名称2:off,多个融合规则之间用英文分号隔开。
        • 单击文本框后的图标,在弹出的对话框中单击填写。
          • 在Name中输入融合规则名称:融合规则名称1
          • 在Value中输入环境变量值:off

        用户需要确保输入的融合规则的正确性。

  4. 单击“Finish”,开始进行模型转换。

    在MindStudio界面下方,“Output”窗口会显示模型转换过程中的日志信息,如果提示“Model converted successfully”,则表示模型转换成功。“Output”窗口会显示模型转换所用的命令、所设置的环境变量、模型转换的结果、模型输出路径以及模型转换日志路径等信息。

    图5 模型转换成功
  5. 模型转换完毕,在服务器后台路径“$HOME/modelzoo/resnet50/$Soc_Version ”下会生成用于运行环境运行的.om模型文件,以及模型转换所用的配置信息文件${modelname}_config.json和日志文件ModelConvert.txt。
    • 如果开启数据预处理功能,在.om同级目录下,还会生成数据预处理的配置信息文件(insert_op.cfg)。
    • 如果勾选关闭融合功能,在.om同级目录下,还会生成融合开关配置文件(fusion_switch.cfg),用于记录哪些功能被关闭。
    • 如果开启日志级别配置功能,当模型转换完毕后,无论转换成功或者失败,在MindStudio界面右下方都会弹出“ModelConvert Detail”弹窗,如下图所示。
      图6 转换成功弹窗
      图7 转换失败弹窗
      • 单击“show model”可以在MindStudio界面打开转换成功后的模型可视化界面,模型可视化界面的操作方法请参见可视化界面说明
      • 单击“show log”可以在MindStudio界面打开日志文件ModelConvert.txt,显示的日志内容由“Log Print Level”参数选择的级别类型决定。

    当Mode Type为ATC时,模型转换的日志文件(ModelConvert.txt)所在路径为:“$HOME/modelzoo/resnet50/$Soc_Version”。回显信息示例如下:

    dggphicprd32833:~/modelzoo/resnet50/Ascend310$ ll
    total 50780
    drwxr-x--- 2       4096 Mar 10 16:46 ./
    drwx------ 3       4096 Mar 10 16:45 ../
    -rw------- 1       127 Mar 10 15:55 fusion_switch.cfg         --融合开关配置文件
    -rw------- 1       453 Mar 10 16:45 insert_op.cfg              --数据预处理配置文件
    -rw-r----- 1       453 Mar 10 16:45 ModelConvert.txt          --日志文件
    -rw------- 1       2095 Mar 10 18:03 resnet50_config.json    --模型转换所用的配置信息文件,下次模型转换时,可以通过选择该文件沿用上次模型转换的配置数据
    -rw------- 1       51581408 Mar 10 16:46 resnet50.om           --上板运行的模型文件         

    当Mode Type为AOE时,模型调优的日志文件(ModelConvert.txt)所在路径为:“$HOME/modelzoo/resnet50/aoe_type$Job Type”。回显信息示例如下:

    dggphicprd32833:~/modelzoo/resnet50/aoe_type1$ ll
    total 51416
    drwxr-x--- 3       4096 Feb 24 16:16 ./
    drwxr-x--- 4       4096 Feb 24 16:10 ../
    -r-------- 1       475 Feb 24 16:16 aoe_result_sgat_20230224161101211040_pid57522.json        --调优结果文件(子图调优是sgat,算子调优是opat)
    drwxr-x--- 3       4096 Feb 24 16:11 aoe_workspace/                   
    -rw-r----- 1       6732 Feb 24 16:15 fusion_result.json           
    -rw------- 1       454 Feb 24 16:10 fusion_switch.cfg                             
    -rw------- 1       577 Feb 24 16:10 insert_op.cfg           
    -rw-r----- 1       849212 Feb 24 16:16 ModelConvert.txt
    -rw------- 1       3025 Feb 24 16:16 resnet50_config.json
    -rw------- 1       51752967 Feb 24 16:15 resnet50.om

异常处理

  • 问题描述

    如果用户选择的模型文件中包括昇腾AI处理器不支持的算子,则模型转换时会弹出图8所示整网支持度评估报告。

    图8 模型整网支持度报告

    其中左侧的“Summary”区域中:

    • All Operator:显示本次转换的模型所包括所有算子个数,包括不支持的算子个数。

      单击All Operator,在右侧的“Result Details”区域,会展示模型所有的算子详细信息,包括算子类型,算子名称,是否解析成功的结果;如果算子解析失败,在“Description”处还会展示解析失败的原因。

    • UnSupported Operator:本次转换的模型不支持的算子个数。下方会列出不支持算子的原因,以及每种原因下不支持的算子个数。

      单击UnSupported Operator,右侧会筛选出所有不支持的算子。

  • 解决方法
    1. 图8所示整网支持度评估报告界面中,选中右侧“Result Details”区域“Result”“failed”的算子,则该算子整行被选中。单击最右侧“Operation”下面的解决方法,例如“Creator Operator”,创建自定义算子工程。

      如果当前已经打开了算子工程,则会弹出图9提示框,可以选择在当前算子工程添加算子或新建算子工程;如果当前不存在算子工程,则会直接弹出新建算子工程界面。

      关于创建自定义算子工程的详细操作请参见创建算子工程
      图9 创建算子工程时提示信息
    2. 根据引导完成自定义算子工程的创建。

      New Project > Ascend Operator中的“Operator Type”自定义算子的类型,会根据模型支持度评估界面选中的算子类型自动填充。创建完成后,新建工程的默认存储路径为“$HOME/AscendProjects”

      算子工程目录结构以及主要文件如下:
      ├── .idea
      ├── build                                  //编译生成的中间文件
      ├── cmake                                  //编译相关公共文件存放目录
      ├── framework                              //算子插件实现文件目录
      │   ├── tf_plugin                         //存放tensorflow框架的算子插件文件及编译规则文件
      │   │   ├── tensorflow_add_plugin.cpp 
      ......
      ......
    3. 进行自定义算子的开发,详细信息请参见算子开发

      自定义算子开发完成后,重新进行模型转换。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词