ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CANN/GE精度调优配置参数

CANN/GE精度调优配置参数 精度调优【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/gePRECISION_MODE设置算子的精度模式。同一张图中不能与PRECISION_MODE_V2同时使用建议使用PRECISION_MODE_V2参数。此参数实际对应的options参数为ge.exec.precision_mode。参数取值force_fp32/cube_fp16in_fp32out配置为force_fp32或cube_fp16in_fp32out效果等同该选项用来表示AI Core中该算子既支持float32又支持float16数据类型时系统内部都会根据算子类型不同选择不同的处理方式。cube_fp16in_fp32out为新版本中新增的对于矩阵计算类算子该选项语义更清晰。对于矩阵计算类算子系统内部会按算子实现的支持情况处理 1. 优先选择输入数据类型为float16且输出数据类型为float32 2. 如果1中的场景不支持则选择输入数据类型为float32且输出数据类型为float32 3. 如果2中的场景不支持则选择输入数据类型为float16且输出数据类型为float16 4. 如果3中的场景不支持则报错。对于矢量计算类算子表示原图中算子精度为float16或bfloat16强制选择float32。如果原图中存在部分算子在AI Core中该算子的实现不支持float32比如某算子仅支持float16类型则该参数不生效仍然使用支持的float16如果在AI Core中该算子的实现不支持float32且又配置了黑名单precision\_reduce false则会使用float32的AI CPU算子如果AI CPU算子也不支持则执行报错。force_fp16默认值表示原图中算子精度为float16、bfloat16和float32时强制选择float16。allow_fp32_to_fp16对于矩阵类算子如果原图中算子精度为float32优先降低精度到float16如果AI Core中算子不支持float16则继续选择float32如果AI Core中算子不支持float32则使用AI CPU算子进行计算如果AI CPU算子也不支持则执行报错。如果原图中算子精度为bfloat16则优先使用原图精度bfloat16如果AI Core中算子不支持bfloat16则选择float32如果AI Core中算子不支持float32则直接降低精度到float16如果AI Core中算子不支持float16则使用AI CPU算子进行计算如果AI CPU算子也不支持则执行报错。对于矢量类算子优先保持原图精度如果原图中算子精度为float32则优先使用原图精度float32如果AI Core中算子不支持float32则直接降低精度到float16如果AI Core中算子不支持float16则使用AI CPU算子进行计算如果AI CPU算子也不支持则执行报错。如果原图中算子精度为bfloat16则优先使用原图精度bfloat16如果AI Core中算子不支持bfloat16则选择float32如果AI Core中算子不支持float32则直接降低精度到float16如果AI Core中算子不支持float16则使用AI CPU算子进行计算如果AI CPU算子也不支持则执行报错。must_keep_origin_dtype保持原图精度。如果原图中某算子精度为float16AI Core中该算子的实现不支持float16、仅支持float32和bfloat16则系统内部会自动采用高精度float32。如果原图中某算子精度为float16AI Core中该算子的实现不支持float16、仅支持bfloat16则会使用float16的AI CPU算子如果AI CPU算子也不支持则执行报错。如果原图中某算子精度为float32AI Core中该算子的实现不支持float32类型、仅支持float16类型则会使用float32的AI CPU算子如果AI CPU算子也不支持则执行报错。allow_mix_precision/allow_mix_precision_fp16配置为allow_mix_precision或allow_mix_precision_fp16效果等同均表示使用混合精度float16、bfloat16和float32数据类型来处理神经网络的过程。allow_mix_precision_fp16为新版本中新增的语义更清晰便于理解。针对原始模型中float32和bfloat16数据类型的算子按照内置的优化策略自动将部分float32和bfloat16的算子降低精度到float16从而在精度损失很小的情况下提升系统性能并减少内存使用。若配置了该种模式则可以在${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info-*.json内置优化策略文件中查看“precision_reduce”参数的取值若取值为true白名单则表示允许将当前float32和bfloat16类型的算子降低精度到float16。若取值为false黑名单则不允许将当前float32和bfloat16类型的算子降低精度到float16相应算子仍旧使用float32或bfloat16精度。若网络模型中算子没有配置该参数灰名单当前算子的混合精度处理机制和前一个算子保持一致即如果前一个算子支持降精度处理当前算子也支持降精度如果前一个算子不允许降精度当前算子也不支持降精度。allow_mix_precision_bf16表示使用混合精度bfloat16和float32数据类型来处理神经网络的过程。针对原始模型中float32数据类型的算子按照内置的优化策略自动将部分float32的算子降低精度到bfloat16从而在精度损失很小的情况下提升系统性能并减少内存使用如果AI Core中算子不支持bfloat16和float32则使用AI CPU算子进行计算如果AI CPU算子也不支持则执行报错。若配置了该种模式则可以在${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info-*.json内置优化策略文件中查看“precision_reduce”参数的取值若取值为true白名单则表示允许将当前float32类型的算子降低精度到bfloat16。若取值为false黑名单则不允许将当前float32类型的算子降低精度到bfloat16相应算子仍旧使用float32精度。若网络模型中算子没有配置该参数灰名单当前算子的混合精度处理机制和前一个算子保持一致即如果前一个算子支持降精度处理当前算子也支持降精度如果前一个算子不允许降精度当前算子也不支持降精度。allow_fp32_to_bf16如果原图中算子精度为float32则优先使用原图精度float32如果AI Core中算子不支持float32则降低精度到bfloat16如果AI Core中算子不支持bfloat16则使用AI CPU算子进行计算如果AI CPU算子也不支持则执行报错。如果原图中算子精度为bfloat16则优先使用原图精度bfloat16如果AI Core中算子不支持bfloat16则选择float32如果AI Core中算子不支持float32则使用AI CPU算子进行计算如果AI CPU算子也不支持则执行报错。上述路径中的${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例安装后文件默认存储路径为/usr/local/Ascend/cann。参数值约束IPV350不支持bfloat16类型对应选项也不支持。bfloat16数据类型仅支持以下产品类型Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品Atlas 200I/500 A2 推理产品该参数默认为性能优先后续推理时可能会导致精度溢出问题。如果推理时出现精度问题可以参见《应用开发 (CC)》中的“模型推理 精度/性能优化 模型推理精度提升建议”进行定位。如果用户聚焦精度问题可以修改为其他取值比如must_keep_origin_dtype。配置示例{ge::ir_option::PRECISION_MODE, force_fp16}产品支持情况全量芯片支持。PRECISION_MODE_V2设置算子的精度模式。同一张图中不能与PRECISION_MODE同时使用建议使用PRECISION_MODE_V2参数。此参数实际对应的options参数为ge.exec.precision_mode_v2。参数取值fp16默认值表示原图中算子精度为float16、bfloat16或float32时强制选择float16。origin保持原图精度。如果原图中某算子精度为float16AI Core中该算子的实现不支持float16、仅支持float32和bfloat16则系统内部会自动采用高精度float32。如果原图中某算子精度为float16AI Core中该算子的实现不支持float16、仅支持bfloat16则会使用float16的AI CPU算子如果AI CPU算子也不支持则执行报错。如果原图中某算子精度为float32AI Core中该算子的实现不支持float32类型、仅支持float16类型则会使用float32的AI CPU算子如果AI CPU算子也不支持则执行报错。cube_fp16in_fp32outAI Core中该算子既支持float32又支持float16数据类型时系统内部根据算子类型不同选择不同的处理方式。对于矩阵计算类算子系统内部会按算子实现的支持情况处理 1. 优先选择输入数据类型为float16且输出数据类型为float32 2. 如果1中的场景不支持则选择输入数据类型为float32且输出数据类型为float32 3. 如果2中的场景不支持则选择输入数据类型为float16且输出数据类型为float16 4. 如果3中的场景不支持则报错。对于矢量计算类算子表示原图中算子精度为float16或bfloat16强制选择float32。如果原图中存在部分算子在AI Core中该算子的实现不支持float32比如某算子仅支持float16类型则该参数不生效仍然使用支持的float16如果在AI Core中该算子的实现不支持float32且又配置了黑名单precision\_reduce false则会使用float32的AI CPU算子如果AI CPU算子也不支持则执行报错。mixed_float16表示使用混合精度float16、bfloat16和float32数据类型来处理神经网络。针对原图中float32和bfloat16数据类型的算子按照内置的优化策略自动将部分float32和bfloat16的算子降低精度到float16从而在精度损失很小的情况下提升系统性能并减少内存使用。若配置了该种模式则可以在${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info-*.json内置优化策略文件中查看“precision_reduce”参数的取值若取值为true白名单则表示允许将当前float32和bfloat16类型的算子降低精度到float16。若取值为false黑名单则不允许将当前float32和bfloat16类型的算子降低精度到float16相应算子仍旧使用float32或bfloat16精度。若网络模型中算子没有配置该参数灰名单当前算子的混合精度处理机制和前一个算子保持一致即如果前一个算子支持降精度处理当前算子也支持降精度如果前一个算子不允许降精度当前算子也不支持降精度。mixed_bfloat16表示使用混合精度bfloat16和float32数据类型来处理神经网络。针对原图中float32数据类型的算子按照内置的优化策略自动将部分float32的算子降低精度到bfloat16从而在精度损失很小的情况下提升系统性能并减少内存使用如果算子不支持bfloat16和float32则使用AI CPU算子进行计算如果AI CPU算子也不支持则执行报错。若配置了该种模式则可以在${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info-*.json内置优化策略文件中查看“precision_reduce”参数的取值若取值为true白名单则表示允许将当前float32类型的算子降低精度到bfloat16。若取值为false黑名单则不允许将当前float32类型的算子降低精度到bfloat16相应算子仍旧使用float32精度。若网络模型中算子没有配置该参数灰名单当前算子的混合精度处理机制和前一个算子保持一致即如果前一个算子支持降精度处理当前算子也支持降精度如果前一个算子不允许降精度当前算子也不支持降精度。mixed_hif8开启自动混合精度功能表示混合使用hifloat8此数据类型介绍可参见Link、float16、bfloat16和float32数据类型来处理神经网络。针对原图中float16、bfloat16和float32数据类型的算子按照内置的优化策略自动将部分float16、bfloat16和float32的算子降低精度到hifloat8从而在精度损失很小的情况下提升系统性能并减少内存使用。若配置了该种模式则可以在${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info-*.json内置优化策略文件中查看“precision_reduce”参数的取值若取值为true白名单则表示允许将当前float16、bfloat16和float32类型的算子降低精度到hifloat8。若取值为false黑名单则不允许将当前float16、bfloat16和float32类型的算子降低精度到hifloat8相应算子仍旧使用float16、bfloat16或float32精度。若原图中算子没有配置该参数灰名单当前算子的混合精度处理机制和前一个算子保持一致即如果前一个算子支持降精度处理当前算子也支持降精度如果前一个算子不允许降精度当前算子也不支持降精度。cube_hif8表示若原图中的cube算子既支持hifloat8又支持float16、bfloat16或float32数据类型时强制选择hifloat8数据类型。上述路径中的${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例安装后文件默认存储路径为/usr/local/Ascend/cann。参数值约束IPV350不支持bfloat16、hif8类型对应选项也不支持。bfloat16数据类型仅支持以下产品型号Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品Atlas 200I/500 A2 推理产品hif8数据类型仅支持以下产品型号Ascend 950PR/Ascend 950DT该参数默认为性能优先后续推理时可能会导致精度溢出问题。如果推理时出现精度问题可以参见《应用开发 (CC)》中的“模型推理 精度/性能优化 模型推理精度提升建议”进行定位。如果用户聚焦精度问题可以修改为其他取值比如origin。配置示例{ge::ir_option::PRECISION_MODE_V2, fp16}产品支持情况全量芯片支持。MODIFY_MIXLIST混合精度场景下通过此参数指定混合精度黑白灰名单的路径以及文件名自行指定哪些算子允许降精度哪些算子不允许降精度。此参数实际对应的options参数为ge.exec.modify_mixlist。参数取值配置为路径以及文件名文件为JSON格式。黑白灰名单可从${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/xxx/aic-xxx-ops-info-*.json内置优化策略文件中查看“precision_reduce”参数下的flag参数值其中${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例安装后文件默认存储路径为/usr/local/Ascend/cann。_xxx_请根据实际产品进行选择。若取值为true白名单表示混合精度模式下允许降低精度。若取值为false黑名单表示混合精度模式下不允许降低精度。不配置该参数灰名单表示混合精度模式下当前算子的混合精度处理机制和前一个算子保持一致即如果前一个算子支持降精度处理当前算子也支持降精度如果前一个算子不允许降精度当前算子也不支持降精度。开启混合精度方式PRECISION_MODE参数设置为allow_mix_precision、allow_mix_precision_fp16、allow_mix_precision_bf16。PRECISION_MODE_V2参数设置为mixed_float16、mixed_bfloat16、mixed_hif8与PRECISION_MODE参数不能同时配置建议使用PRECISION_MODE_V2。bf16仅在如下产品型号支持Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品Atlas 200I/500 A2 推理产品hif8仅在Ascend 950PR/Ascend 950DT支持。配置示例{ge::ir_option::MODIFY_MIXLIST, /home/test/ops_info.json}ops_info.json中可以指定算子类型多个算子使用英文逗号分隔样例如下{ black-list: { // 黑名单 to-remove: [ // 黑名单算子转换为灰名单算子配置该参数时请确保被转换的算子已经存在于黑名单中 Xlog1py ], to-add: [ // 白名单或灰名单算子转换为黑名单算子 Matmul, Cast ] }, white-list: { // 白名单 to-remove: [ // 白名单算子转换为灰名单算子配置该参数时请确保被转换的算子已经存在于白名单中 Conv2D ], to-add: [ // 黑名单或灰名单算子转换为白名单算子 Bias ] } }上述配置文件样例中展示的算子仅作为参考请基于实际硬件环境和具体的算子内置优化策略进行配置黑白灰名单查询样例如下Conv2D:{ precision_reduce:{ flag:true } },true白名单。false黑名单。不配置灰名单。产品支持情况全量芯片支持。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表