大家好,我是极智视界,本文 再来谈谈昇腾 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,希望我的分享能对你的学习有一点帮助。