文档
注册

功能介绍

本节介绍如何通过接口对Graph进行自动量化。

功能介绍

通过调用aclgrphCalibration接口对非量化的Graph进行自动量化。量化过程中会对模型中的某些结构做算子融合,融合后图结构得到优化,从而提升网络推理性能。具体支持的融合功能请参见支持的融合功能

使用约束

支持量化的层及约束请参考支持量化的层及约束

调用示例

本章节以Caffe框架网络模型量化为例进行说明。

  1. 添加头文件。
    1
    2
    3
    #include "amct/acl_graph_calibration.h"
    #include "amct/acl_calibration_configs.h"
    #include "amct/amct_error_code.h"
    
  2. 通过解析或手动构造方式创建Graph对象。
    1
    2
    3
    4
    5
    6
    #include "parser/caffe_parser.h"
     
    ge::Graph graph("origin");
    std::map<ge::AscendString, ge::AscendString> parseOptions;
    auto ret = ge::aclgrphParseCaffe("./path/to/resnet50.prototxt",
        "./path/to/resnet50.caffemodel", parseOptions, graph);
    
  3. 定义aclgrphCalibration接口所需配置参数。
    1
    2
    3
    4
    std::map<ge::AscendString, ge::AscendString> quantizeConfigs = {};
    quantizeConfigs[ge::AscendString(amct::aclCaliConfigs::INPUT_DATA_DIR)] = ge::AscendString("./path/to/cali_data.bin");
    quantizeConfigs[ge::AscendString(amct::aclCaliConfigs::INPUT_SHAPE)] = ge::AscendString("input:16,224,224,3");
    quantizeConfigs[ge::AscendString(amct::aclCaliConfigs::SOC_VERSION)] = ge::AscendString("SOC_VERSION"); // SOC_VERSION请配置为实际的昇腾AI处理器型号
    

    如果需要自行控制量化过程,可以使用CONFIG_FILE参数项传入控制量化过程的简易配置文件。配置文件的示例请参考简易配置文件

    CONFIG_FILE参数的配置示例如下:

    1
    quantizeConfigs[ge::AscendString(amct::aclCaliConfigs::CONFIG_FILE)]=ge::AscendString("./calibration.cfg");
    
  4. 调用接口执行量化改图。
    1
    2
    3
    4
    5
    ret = ge::aclgrphCalibration(graph, quantizeConfigs);
    if (ret != ge::GRAPH_SUCCESS) {
        return FAILED;
    }
    return SUCCESS;
    

编译上述程序的脚本时需要链接libamctacl.so,并添加链接时动态库的搜索路径${ASCEND_PATH}/compiler/lib64,其中ASCEND_PATH为“Ascend-cann-toolkit安装目录/ascend-toolkit/latest/”路径。

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

当前产品无相关内容

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