
支持量化的层及约束【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge本章节给出不同框架可量化的层以及相关约束。总体说明:若网络模型输入数据类型或权重数据类型为Float16或混合精度类型Float32/Float16共存会关闭如下算子的量化功能 AvgPool、Pooling、AvgPoolV2、MaxPool、MaxPoolV3、Add、Eltwise、BatchMatMulV2两路输入都为变量tensor。INT16数据量化过程中发现整网精度下降可以通过精度比对工具逐层比对原始模型和量化后模型输出误差例如以余弦相似度作为标准需要相似度达到0.99以上找到误差较大的层然后通过简易配置文件中的dst_type参数将该层修改为INT8量化重新进行量化。Caffe框架在如下产品形态已不演进不保证功能可用Atlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品IPV350全量化均匀量化支持的层及约束Caffe框架支持的层类型约束对应Ascend IR定义的层类型InnerProduct全连接层transpose属性为falseaxis为1FullyConnectionConvolution卷积层filter维度为4Conv2DDeconvolution反卷积层dilation为1、filter维度为4DeconvolutionPooling- mode为1全量化weighttensorglobal_pooling为false不支持移位N操作- mode为0只做tensor量化PoolingEltwise只做tensor量化且operation1Eltwise均匀量化支持的层及约束TensorFlow框架如下表格不适用于IPV350其约束请参见IPV350支持的层及约束。支持的层类型约束对应Ascend IR定义的层类型MatMul全连接层- transpose_a为Falsetranspose_b为Falseadjoint_a为Falseadjoint_b为False- weight的输入来源不含有placeholder等可动态变化的节点MatMulV2Conv2D卷积层weight的输入来源不含有placeholder等可动态变化的节点Conv2DDepthwiseConv2dNativeDepthwise卷积层weight的输入来源不含有placeholder等可动态变化的节点DepthwiseConv2DConv2DBackpropInputdilation为1weight的输入来源不含有placeholder等可动态变化的节点Conv2DBackpropInputBatchMatMulV2- adj_xFalse- 如果第二路输入为常量const则要求为2维- 当两路输入都为变量tensor时仅支持INT8对称量化BatchMatMulV2AvgPool不支持移位N操作AvgPoolConv3Ddilation_d为1Conv3DMaxPool只做tensor量化MaxPool、MaxPoolV3Add只做tensor量化且只支持单路输入的量化Add针对BatchMatMulV2量化层两路输入都为变量tensor量化场景只在以下产品能获得收益其他产品量化后精度会下降Atlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品Atlas 200I/500 A2 推理产品均匀量化支持的层及约束ONNX框架如下表格不适用于IPV350其约束请参见IPV350支持的层及约束。支持的层类型约束对应Ascend IR定义的层类型Conv卷积层- filter维度为5的情况下要求dilation_d为1- weight的输入来源不含有placeholder等可动态变化的节点Conv2D、Conv3DGemm广义矩阵乘- transpose_afalse- weight的输入来源不含有placeholder等可动态变化的节点MatMulV2ConvTranspose转置卷积- dilation为1、filter维度为4- weight的输入来源不含有placeholder等可动态变化的节点Conv2DTransposeMatMul- 如果第二路输入为常量const则要求为2维- 当两路输入都为变量tensor时仅支持INT8对称量化- weight的输入来源不含有placeholder等可动态变化的节点BatchMatMulV2AveragePoolglobal_pooling为false不支持移位N操作AvgPoolV2MaxPool只做tensor量化MaxPool、MaxPoolV3Add只做tensor量化且只支持单路输入的量化Add针对MatMul量化层两路输入都为变量tensor量化场景只在以下产品能获得收益其他产品量化后精度会下降Atlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品Atlas 200I/500 A2 推理产品均匀量化支持的层及约束IPV350框架支持的层类型约束对应Ascend IR定义的层类型TensorFlowMatMul全连接层- transpose_a为False, transpose_b为Falseadjoint_a为Falseadjoint_b为False- weight的输入来源不含有placeholder等可动态变化的节点MatMulV2TensorFlowConv2D卷积层weight的输入来源不含有placeholder等可动态变化的节点Conv2DTensorFlowConv2DBackpropInputdilation为1weight的输入来源不含有placeholder等可动态变化的节点Conv2DBackpropInputTensorFlowDepthwiseConv2dNativeweight的输入来源不含有placeholder等可动态变化的节点DepthwiseConv2DONNXConvTranspose- dilation为1、filter维度为4- weight的输入来源不含有placeholder等可动态变化的节点Conv2DTranspose仅权重量化该版本不支持仅权重量化特性。仅权重量化特性仅支持以下产品类型Atlas 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品表 2仅权重量化场景支持的层及约束|Ascend IR定义的层类型|仅权重量化权重ARQ中channel_wisetrue|仅权重量化权重ARQ中asymmetrictrue或false|权重和数据都量化权重ARQ中channel_wisetrue|权重和数据都量化权重ARQ中asymmetrictrue|约束| |--|--|--|--|--|--| |MatMulV2|√|true|×|×|第二路的输入来源不含有placeholder等可动态变化的节点。| |BatchMatMulV2|√|true|×|×|第二路的输入来源不含有placeholder等可动态变化的节点。| |FFN|√|true和false|×|×|- FFN算子的expert_tokens输入不为空。- FFN算子的两个权重为Float16的常量。- FFN算子的antiquant_scale1、antiquant_scale2、antiquant_offset1、antiquant_offset2四个输入为空。- 权重不支持权重共享。其中√表示支持×表示该场景量化会异常。权重ARQ中channel_wisetrue表示每个channel独立量化量化因子不同。权重ARQ中asymmetrictrue表示权重量化使用非对称量化false表示权重量化使用对称量化。true和false表示权重量化支持对称量化和非对称量化。FFN算子量化仅Atlas A2 训练系列产品/Atlas A2 推理系列产品支持。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考