--customize_dtypes
功能说明
模型编译时自定义某个或某些算子的计算精度。
关联参数
- 该参数需要与--precision_mode配合使用。
- 若同时使用了--customize_dtypes参数与--keep_dtype参数,则以--customize_dtypes参数设置的精度为准。
参数取值
参数值:算子配置文件路径以及文件名,配置文件中列举需要自定义计算精度的算子名称或算子类型,每个算子单独一行。
参数值约束:
- 若为算子名称,以Opname::InputDtype:dtype1,...,OutputDtype:dtype1,...格式进行配置,每个Opname单独一行,dtype1,dtype2..需要与可设置计算精度的算子输入,算子输出的个数一一对应。其中算子名称Opname取值为原始模型算子名称。
- 若为算子类型,以OpType::TypeName:InputDtype:dtype1,...,OutputDtype:dtype1,...格式进行配置,每个OpType单独一行,dtype1,dtype2..需要与可设置计算精度的算子输入,算子输出的个数一一对应,且算子OpType必须为基于Ascend IR定义的算子的OpType,算子类型查看方法请参见如何确定原始框架网络模型中的算子与昇腾AI处理器支持的算子的对应关系。
- 对于同一个算子,如果同时配置了Opname和OpType的配置项,编译时以Opname的配置项为准。
- 使用该参数指定某个算子的计算精度时,如果模型转换过程中该算子被融合掉,则该算子指定的计算精度不生效。
参数值格式:路径和文件名:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、英文冒号(:)、中文汉字。
推荐配置及收益
无。
示例
- 若配置文件中为算子名称,则配置样例为(文件名举例为customize_dtypes.cfg):
Opname1::InputDtype:dtype1,dtype2,...,OutputDtype:dtype1,... Opname2::InputDtype:dtype1,dtype2,...,OutputDtype:dtype1,...
- 若配置文件中为算子类型,则配置样例为(文件名举例为customize_dtypes.cfg):
OpType::TypeName1:InputDtype:dtype1,dtype2,...,OutputDtype:dtype1,... OpType::TypeName2:InputDtype:dtype1,dtype2,...,OutputDtype:dtype1,...
以TensorFlow ResNet50网络模型中的Relu算子为例,其对应的Ascend IR定义的算子类型为Relu,该算子输入和输出只有一个,该配置样例如下:
- 算子名称配置样例:
fp32_vars/Relu::InputDtype:float16,OutputDtype:int8
- 算子类型配置样例:
OpType::Relu:InputDtype:float16,OutputDtype:int8
将配置好的customize_dtypes.cfg文件上传到AOE工具所在服务器任意目录,例如上传到${HOME},使用示例如下:
--customize_dtypes=${HOME}/customize_dtypes.cfg --precision_mode=force_fp16
模型编译时,customize_dtypes.cfg文件中的算子,使用指定的计算精度,其余网络模型中的算子以--precision_mode参数指定的精度模式进行编译。
使用约束
- 使用该参数指定算子的计算精度,由于其优先级高于--precision_mode和--keep_dtype参数,可能会导致后续推理精度或者性能的下降。
- 使用该参数指定算子的计算精度,如果指定的精度算子本身不支持,则会导致模型编译失败。
父主题: 高级功能