--modify_mixlist
功能说明
混合精度场景下,修改算子使用混合精度名单,该文件包括黑名单,白名单和灰名单:
- 白名单:表示混合精度模式下,允许将当前float32类型的算子,降低精度到float16。
- 黑名单:表示混合精度模式下,不允许将当前float32类型的算子降低精度到float16,相应算子仍旧使用float32精度。
- 灰名单:表示混合精度模式下,当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。
关联参数
该参数需要与--precision_mode参数配合使用,并且该参数取值需要设置为“allow_mix_precision”,表示使用混合精度模式,该场景下网络模型中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16;而使用--modify_mixlist参数后,用户可以在内置优化策略基础上进行调整,自行指定哪些算子允许降精度,哪些算子不允许降精度。
参数取值
参数值:混合精度名单路径以及文件名。
参数值格式:路径和文件名:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。
参数值约束:
- 名单格式为*.json格式,文件中的算子列表由用户指定,多个算子使用英文逗号分隔。
- 配置的算子类型必须为基于Ascend IR定义的算子的OpType,算子类型查看方法请参见如何确定原始框架网络模型中的算子与昇腾AI处理器支持的算子的对应关系。
推荐配置及收益
无。
示例
混合精度名单样例如下,文件名举例为ops_info.json:
{ "black-list": { // 黑名单 "to-remove": [ // 黑名单算子转换为灰名单算子,配置该参数时,请确保被转换的算子已经存在于黑名单中 "Yolo" ], "to-add": [ // 白名单或灰名单算子转换为黑名单算子 "Matmul" ] }, "white-list": { // 白名单 "to-remove": [ // 白名单算子转换为灰名单算子,配置该参数时,请确保被转换的算子已经存在于白名单中 "Conv2D" ], "to-add": [ // 黑名单或灰名单算子转换为白名单算子 "Bias" ] } }
- 假设算子A默认在白名单中,如果您希望将该算子配置为黑名单算子,则配置示例和系统处理逻辑为:
- 将该算子添加到黑名单中:
{ "black-list": { "to-add": [A] } }
则系统会将该算子从白名单中删除,并添加到黑名单中,最终该算子在黑名单中。
- 将该算子从白名单中删除,同时添加到黑名单中:
{ "black-list": { "to-add": [A] } "white-list": { "to-remove": [A] } }
则系统会将该算子从白名单中删除,并添加到黑名单中,最终该算子在黑名单中。
- 将该算子添加到黑名单中:
- 对于只从黑/白名单中删除,而不添加到白/黑名单的场景,系统会将该算子添加到灰名单中,配置示例如下(例如,从白名单删除某个算子):
{ "white-list": { "to-remove": [A] } }
则系统会将该算子从白名单中删除,然后添加到灰名单中,最终该算子在灰名单中。
将配置好的ops_info.json文件上传到AOE工具所在服务器任意目录,例如上传到${HOME}/module,使用示例如下:
--precision_mode=allow_mix_precision --modify_mixlist=${HOME}/module/ops_info.json
依赖约束
无。
父主题: 高级功能