极智AI | 三谈昇腾 auto tune

Posted 极智视界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了极智AI | 三谈昇腾 auto tune相关的知识,希望对你有一定的参考价值。

欢迎关注我的公众号 [极智视界],获取我的更多笔记分享

  大家好,我是极智视界,本文 再来谈谈昇腾 auto tune

  写这篇主要是为了填这两篇《谈谈昇腾 auto tune》、《再谈昇腾 auto tune》自己留的坑,之前两篇其实主要在说昇腾 auto tune 的一些 由来,以及 auto tune 搜索算法的原理,感兴趣的同学可以去瞧瞧~

  这篇主要写昇腾 auto tune 怎么用。

  整个昇腾 auto tune 模块的运行流程如下:

  主要步骤如下:

  • (1) 首先最原始的开源框架模型传入GE、FE 进行图准备 (输入shape、dtype校验,算子选择等) 以及 图优化 (算子融合、常量折叠等);
  • (2) 然后进入调优选择,首先会判断是否匹配到知识库,若匹配到则判断是否重新调优,若没有匹配到则开始直接调优。不管怎么样,调优后的策略都会和内建策略或已经存在的策略进行性能比对,选择一个更加好的策略放到新的知识库里面;
  • (3) 使用知识库编译算子;
  • (4) 生成离线模型;

  那么 auto tune 调优怎么样操作呢,咱们来看。

########### 环境变量配置 ###########
#### 必选环境变量
# CANN基础环境变量
source .$install_path/set_env.sh
# python环境
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/python3.7.5/lib

#### 可选环境变量
# auto tune可选环境变量
export ASCEND_DEVICE_ID=0
export TE_PARALLEL_COMPILER=2
export TUNE_BANK_PATH=/path/custom_tune_bank
export REPEAT_TUNE=False
export TUNE_OPS_NAME=conv_layers/Pad_0   # 网络中需要调优的节点
export ENABLE_TUNE_BANK=True

# 离线调优环境变量
export ENABLE_TUNE_DUMP=True

# 离线调优场景可选环境变量
export TUNE_DUMP_PATH=/path/DumpData

  这里对 auto tune 可选环境变量进行一个说明。

  然后再执行 ATC 工具进行模型转换时,通过 --auto_tune_mode="xx" 开关来开启 auto tune,auto_tune_mode 有三种取值:“RL, GA”“RL”“GA”

  其中 RL 模式支持的算子有:Abs、AbsGrad、AcosGrad、Add、AsinGrad、AsinhGrad、AtanGrad、BiasAddGrad、BNTrainingUpdate、Cast、Ceil、ConcatD、Cos、Cosh、Div、DynamicRNN、Elu、EluGrad、Equal、Erf、Erfc、Exp、Expm1、Floor、Gelu、GeluGrad、Inv、InvGrad、L2Loss、L2Normalize、L2NormalizeGrad、Log、LogSoftmaxV2、LogSoftmaxGrad、Log1p、Maximum、Mod、Mul、Neg、OnesLike、Pow、PReluGrad、Reciprocal、ReciprocalGrad、ReduceAllD、ReduceAnyD、ReduceMaxD、ReduceMeanD、ReduceSumD、Relu、ReluGrad、Relu6、Relu6Grad、Rint、Round、Rsqrt、RsqrtGrad、Selu、Sigmoid、SigmoidCrossEntropyWithLogits、SigmoidGrad、Sign、Sinh、SmoothL1Loss、SoftmaxV2、SoftmaxGrad、Softplus、Softsign、SplitD、Sqrt、SqrtGrad、Square、StridedSliceD、Sub、Tanh、TanhGrad、SoftmaxCrossEntropyWithLogits、GNTrainingReduce、GNTrainingUpdate、CosineEmbeddingLoss、INTrainingReduceV2、INTrainingUpdateV2。

  GA 模式支持的算子有 (主要是 cube 类算子):AvgPool、Conv2D、Conv2DBackpropInput、Conv2DBackpropFilter、Conv2DCompress、Conv2DTranspose、Conv3D、Conv3DBackpropInput、Conv3DBackpropFilter、Deconvolution、GEMM、MatMul、MatMulV2、BatchMatMul、BatchMatMulV2、MatMulV2Compress、FullyConnection、FullyConnectionCompress、Pooling。

  调优完成后,如果满足自定义知识库生成条件,则会生成自定义知识库,并存储到相应路径下,同样会直接生成调优后的离线模型。下图是调优过程的部分日志:


  好了,以上分享了 三谈昇腾 auto tune,希望我的分享能对你的学习有一点帮助。


 【极智视界】

《极智AI | 三谈昇腾 auto tune)》


搜索关注我的微信公众号【极智视界】,获取我的更多经验分享,让我们用极致+极客的心态来迎接AI !


以上是关于极智AI | 三谈昇腾 auto tune的主要内容,如果未能解决你的问题,请参考以下文章

极智AI | 三谈昇腾CANN量化

极智AI | 谈谈昇腾 auto tune

极智AI | 谈谈昇腾 CANN AIPP

极智AI | 昇腾 CANN ATC 模型转换

极智AI | 谈谈昇腾CANN量化

极智AI | 多场景覆盖 看昇腾新推出的 Atlas300 系列新卡