CANN/GE ATC精度模式参数
--precision_mode_v2【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge产品支持情况全量芯片支持功能说明设置网络模型的精度模式。关联参数该参数不能与--precision_mode参数同时使用建议使用--precision_mode_v2参数--precision_mode_v2是新版本中新增的选项值语义更清晰便于理解。当取值为mixed_float16或者mixed_bfloat16或mixed_hif8时如果用户想要在内置优化策略基础上进行调整自行指定哪些算子允许降精度哪些算子不允许降精度则需要参见--modify_mixlist参数设置。推理场景下使用--precision_mode_v2参数设置整个网络模型的精度模式可能会有个别算子存在性能或精度问题该场景下可以使用--keep_dtype参数使原始网络模型编译时保持个别算子的计算精度不变但--precision_mode_v2参数取值为origin时--keep_dtype不生效。参数取值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。xxx请根据实际产品进行选择。参数值约束该版本不支持bfloat16、hif8类型对应选项也不支持。bfloat16数据类型仅支持以下产品型号Atlas A2 训练系列产品/Atlas A2 推理系列产品Atlas A3 训练系列产品/Atlas A3 推理系列产品Atlas 200I/500 A2 推理产品Ascend 950PR/Ascend 950DThif8数据类型仅支持以下产品型号Ascend 950PR/Ascend 950DT该参数默认为性能优先后续推理时可能会导致精度溢出问题。如果推理时出现精度问题可以参见《应用开发 (CC)》中的“模型推理 精度/性能优化 模型推理精度提升建议”进行定位。如果用户聚焦精度问题可以修改为其他取值比如origin。推荐配置及收益所配置的精度模式不同网络模型精度以及性能有所不同具体为精度高低排序originmixed_float16fp16mixed_bfloat16mixed_hif8性能优劣排序mixed_hif8mixed_bfloat16fp16mixed_float16origin示例atc --precision_mode_v2fp16 ...使用约束混合精度场景下如果版本升级后出现推理性能下降建议使用AOE工具重新进行调优调优完成后通过--op_bank_path参数加载算子调优后自定义知识库的路径然后重新进行模型转换。算子调优详情请参见《AOE调优工具》。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考