下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

设置算子编译选项

用于配置算子编译过程中的属性,可用于提升性能,通过ACL接口实现。

import torch
import torch_npu
option = {key: val}
torch_npu.npu.set_option(option) # 以dict方式进行设置

使用样例如下,以配置ACL_PRECISION_MODE为例。

import torch
import torch_npu
option = {"ACL_PRECISION_MODE":"must_keep_origin_dtype"}
torch_npu.npu.set_option(option)
表1 key值和其对应val值的含义与说明

可选值

含义

可设置的val值

说明

ACL_PRECISION_MODE

选择算子精度模式。

  • force_fp32:算子既支持float16又支持float32数据类型时,系统内部根据算子类型的不同,选择合适的处理方式。配置为force_fp32或cube_fp16in_fp32out,效果等同,cube_fp16in_fp32out为新版本中新增配置,对于矩阵计算类算子,该选项语义更清晰。
    • 对于矩阵计算类算子,系统内部会按算子实现的支持情况处理:
      1. 优先选择输入数据类型为float16且输出数据类型为float32。
      2. 如果1中的场景不支持,则选择输入数据类型为float32且输出数据类型为float32。
      3. 如果2中的场景不支持,则选择输入数据类型为float16且输出数据类型为float16。
      4. 如果以上场景都不支持,则报错。
    • 对于矢量计算类算子,如果网络模型中算子同时支持float16和float32,强制选择float32,若原图精度为float16,也会强制转为float32。如果网络模型中存在部分算子,并且该算子实现不支持float32,比如某算子仅支持float16类型,则该参数不生效,仍然使用支持的float16;如果该算子不支持float32,且又配置了混合精度黑名单(precision_reduce = false),则会使用float32的AI CPU算子。
  • force_fp16:算子既支持float16又支持float32数据类型时,强制选择float16。
  • allow_fp32_to_fp16:对于矩阵类算子,使用float16;对于矢量类算子,优先保持原图精度,如果网络模型中算子支持float32,则保留原始精度float32,如果网络模型中算子不支持float32,则直接降低精度到float16。
  • must_keep_origin_dtype:保持原图精度。如果原图中某算子精度为float16,但NPU中该算子实现不支持float16、仅支持float32,则系统内部自动采用高精度float32;如果原图中某算子精度为float32,但NPU中该算子实现不支持float32、仅支持float16,此场景下不能使用此参数值,系统不支持使用低精度。
  • allow_mix_precision:开启自动混合精度功能,表示混合使用float16和float32数据类型来处理神经网络的过程

    配置为allow_mix_precision或allow_mix_precision_fp16,效果等同,其中allow_mix_precision_fp16为新版本中新增配置,语义更清晰,便于理解。针对全网中float32数据类型的算子,系统会按照内置优化策略自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。开启该功能开关后,用户可以同时使能Loss Scaling,从而补偿降低精度带来的精度损失。

如果不配置该编译选项,默认采用allow_fp32_to_fp16。

ACL_AICORE_NUM

设置模型编译时使用的AI Core数量。

当前版本设置无效。

ACL_OP_SELECT_IMPL_MODE

选择算子是高精度实现还是高性能实现。

  • high_precision:表示网络模型中算子采用高精度实现模式。

    该参数采用系统内置的配置文件设置算子精度模式,内置配置文件路径为${install_path}/opp/op_impl/built-in/ai_core/tbe/impl_mode/high_precision.ini。

    为保持兼容,该参数仅对high_precision.ini文件中算子列表生效,通过该列表可以控制算子生效的范围并保证之前版本的网络模型不受影响。如果新的软件包中有算子新增了精度模式,若仍旧使用high_precision设置,则会导致之前版本使用该配置方式的网络模型性能下降。

  • high_performance:表示网络模型中算子采用高性能实现模式。

    该参数采用系统内置的配置文件设置算子精度模式,内置配置文件路径为${install_path}/opp/op_impl/built-in/ai_core/tbe/impl_mode/high_performance.ini。

    为保持兼容,该参数仅对high_performance.ini文件中算子列表生效,通过该列表可以控制算子生效的范围并保证之前版本的网络模型不受影响。如果新的软件包中有算子新增了精度模式,若仍旧使用high_performance设置,则会导致之前版本使用该配置方式的网络模型精度下降。

  • high_precision_for_all:表示网络模型中算子采用高精度实现模式。

    该参数采用系统内置的配置文件设置算子精度模式,内置配置文件路径为${install_path}/opp/op_impl/built-in/ai_core/tbe/impl_mode/high_precision_for_all.ini,该文件中列表后续可能会跟随版本更新。

    该实现模式不保证兼容,如果后续新的软件包中有算子新增了精度模式,之前版本使用high_precision_for_all的网络模型,在新版本上性能可能会下降。

  • high_performance_for_all:表示网络模型中算子采用高性能实现模式。

    该参数采用系统内置的配置文件设置算子精度模式,内置配置文件路径为${install_path}/opp/op_impl/built-in/ai_core/tbe/impl_mode/high_performance_for_all.ini,该文件中列表后续可能会跟随版本更新。

    该实现模式不保证兼容,如果后续新的软件包中有算子新增了精度模式,之前版本使用high_performance_for_all的网络模型,在新版本上精度可能会下降。

如果不配置该编译选项,默认采用high_precision。

ACL_OPTYPELIST_FOR_IMPLMODE

列举算子类型列表,该列表中算子的实现方式使用ACL_OP_SELECT_IMPL_MODE指定的模式。

该参数当前仅支持设置某个具体算子的实现方式,不支持设置多个算子。当前仅支持配置的算子为Pooling、SoftmaxV2、LRN、ROIAlign。

ACL_OP_DEBUG_LEVEL

配置TBE算子编译debug功能开关。

  • 0:不开启算子debug功能。在执行atc命令当前路径算子编译生成的kernel_meta文件夹中不保留.o(算子二进制文件)和.json文件(算子描述文件)。
  • 1:开启算子debug功能,在执行atc命令当前路径算子编译生成的kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce和python-cce映射文件*_loc.json),用于后续工具进行AICore Error问题定位。
  • 2:开启算子debug功能,在执行atc命令当前路径算子编译生成的kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce和python-cce映射文件*_loc.json),并关闭编译优化开关并且开启ccec调试功能(ccec编译器选项设置为-O0-g),用于后续工具进行AICore Error问题定位。
  • 3:不开启算子debug功能,在执行atc命令当前路径算子编译生成的kernel_meta文件夹中保留.o(算子二进制文件)和.json文件(算子描述文件)。
  • 4:不开启算子debug功能,在执行atc命令当前路径算子编译生成的kernel_meta文件夹中保留.o(算子二进制文件)和.json文件(算子描述文件),并生成TBE指令映射文件(算子cce文件*.cce)和UB融合计算描述文件({$kernel_name}_compute.json)。

无。

ACL_DEBUG_DIR

配置保存模型转换、网络迁移过程中算子编译生成的调试相关过程文件的路径。

相关过程文件包括算子.o/.json/.cce等文件。具体生成哪些文件以ACL_OP_DEBUG_LEVEL选项设置的取值为准。

路径支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。

ACL_OP_COMPILER_CACHE_MODE

配置算子编译磁盘缓存模式。

  • enable:启用算子编译缓存。启用后可以避免针对相同编译参数及算子参数的算子重复编译,从而提升编译速度。
  • disable:禁用算子编译缓存。
  • force:强制刷新缓存。当用户的Python或者依赖库等发生变化时,需要指定为force用于清理已有的缓存。

该编译选项需要与ACL_OP_COMPILER_CACHE_DIR配合使用。

ACL_OP_COMPILER_CACHE_DIR

配置算子编译磁盘缓存的目录。

默认目录为$HOME/atc_data。该编译选项需要与ACL_OP_COMPILER_CACHE_MODE配合使用。

如果设置了ACL_OP_DEBUG_LEVEL编译选项,则只有编译选项值为0或3才会启用编译缓存功能,其它取值禁用编译缓存功能。

路径支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。

MM_BMM_ND_ENABLE

开启MatMul、BatchMatMul算子支持ND模式

  • enable:MatMul、BatchMatMul算子输入输出Shape每个维度都是16的整数倍时,会支持ND格式输入,不满足则使用算子内部私有格式并视情况结合插入转换算子。
  • disable:MatMul、BatchMatMul算子使用私有格式。

默认采用enable模式。

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

当前产品无相关内容

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