--modify_mixlist
功能说明
混合精度场景下,修改算子使用的混合精度黑白灰名单,自行指定哪些算子允许降精度,哪些算子不允许降精度。
黑白灰名单,可从“OPP软件包安装路径${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/<soc_version>/aic-<soc_version>-ops-info.json”内置优化策略文件中查看“precision_reduce”参数下的flag参数值:
- 若取值为true(白名单),表示混合精度模式下,允许降低精度。
- 若取值为false(黑名单),表示混合精度模式下,不允许降低精度。
- 不配置该参数(灰名单),表示混合精度模式下,当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。
关联参数
开启混合精度方式:
- --precision_mode参数设置为allow_mix_precision、allow_mix_precision_fp16、allow_mix_precision_bf16。
- --precision_mode_v2参数设置为mixed_float16、mixed_bfloat16。
与--precision_mode参数不能同时配置,建议使用--precision_mode_v2。
参数取值
参数值:混合精度名单路径以及文件名。
参数值格式:路径和文件名:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、短横线(-)、句点(.)、中文汉字。
参数值约束:
- 名单格式为*.json格式,文件中的算子列表由用户指定,多个算子使用英文逗号分隔。
- 配置的算子类型必须为基于Ascend IR定义的算子的OpType,算子类型查看方法请参见如何确定原始框架网络模型中的算子与昇腾AI处理器支持的算子的对应关系。
推荐配置及收益
无。
示例
黑白灰名单查询示例如下,flag参数值为true表示白名单,为false表示黑名单,不配置flag参数表示灰名单:
"Conv2D":{ "precision_reduce":{ "flag":"true" }
混合精度名单样例如下,ops_info.json为文件名示例,OpTypeA、OpTypeB、OpTypeC、OpTypeD为算子示例。
{ "black-list": { // 黑名单 "to-remove": [ // 黑名单算子转换为灰名单算子,配置该参数时,请确保被转换的算子已经存在于黑名单中 "OpTypeA" ], "to-add": [ // 白名单或灰名单算子转换为黑名单算子 "OpTypeB" ] }, "white-list": { // 白名单 "to-remove": [ // 白名单算子转换为灰名单算子,配置该参数时,请确保被转换的算子已经存在于白名单中 "OpTypeC" ], "to-add": [ // 黑名单或灰名单算子转换为白名单算子 "OpTypeD" ] } }
- 假设算子A默认在白名单中,如果您希望将该算子配置为黑名单算子,则配置示例和系统处理逻辑为:
- 将该算子添加到黑名单中:
{ "black-list": { "to-add": [A] } }
则系统会将该算子从白名单中删除,并添加到黑名单中,最终该算子在黑名单中。
- 将该算子从白名单中删除,同时添加到黑名单中:
{ "black-list": { "to-add": [A] } "white-list": { "to-remove": [A] } }
则系统会将该算子从白名单中删除,并添加到黑名单中,最终该算子在黑名单中。
- 将该算子添加到黑名单中:
- 对于只从黑/白名单中删除,而不添加到白/黑名单的场景,系统会将该算子添加到灰名单中,配置示例如下(例如,从白名单删除某个算子):
{ "white-list": { "to-remove": [A] } }
则系统会将该算子从白名单中删除,然后添加到灰名单中,最终该算子在灰名单中。
将配置好的ops_info.json文件上传到ATC工具所在服务器任意目录,例如上传到$HOME/module,使用示例如下:
--precision_mode=allow_mix_precision --modify_mixlist=$HOME/module/ops_info.json
支持的型号
Atlas 200/300/500 推理产品
Atlas 推理系列产品
Atlas 训练系列产品
Atlas 200/500 A2推理产品
Atlas A2训练系列产品/Atlas 800I A2推理产品
依赖约束
无。