Page 105 - 《软件学报》2024年第6期
P. 105

张洪滨 等: AutoConfig: 面向深度学习编译优化的自动配置机制                                            2681


                 AutoConfig  基于  Buddy Compiler 实现, 在代码生成阶段使用了开源编译器框架         LLVM, 版本为   17.0.0; 在对比实验
                 中采用的   TVM  版本为   v0.14.0.

                 6.1   优化场景的选择
                    本文选取了一个经典的卷积神经网络              EfficientNet (模型文件来自  https://coral.ai/models/image-classification/),
                 并针对其中的关键深度学习计算负载即不同输入尺寸的卷积层进行优化. 卷积神经网络是以卷积层作为主要模块
                 的深度学习模型. 对于卷积神经网络而言, 靠近输入部分的卷积层其功能主要在于从输入中提取初步特征, 因此卷
                 积的输入尺寸较大而通道数较少. 处于模型中间部分或靠近输出部分的卷积层其功能主要在于从上一层输出的特
                 征中进一步提取深层信息, 因此卷积的输入尺寸较小而通道数较多.
                    EfficientNet 是经典的卷积神经网络模型, 本节基于         EfficientNet 完成实验探究. 表  5  对该模型文件中与计算和
                 访存相关的粗粒度计算负载进行了统计, 可以看出卷积                   (conv_2d_nhwc_hwcf) 的计算占所有计算负载的大多数
                 (38/64), 可见通过从模型中的不同部分选取了尺寸多样的卷积作为优化对象具有一定的代表性, 能够反映优化算
                 法的选择对整体性能的影响.

                                              表 5 EfficientNet 高层计算负载统计
                                                   平台, 向量化长度为

                                         高层计算负载                               出现次数
                                         batch_matmul                           1
                                   depthwise_conv_2d_nhwc_hwcm                  11
                                       conv_2d_nhwc_hwcf                        38
                                         collapse_shape                         12
                                         expand_shape                           2

                 6.2   基于硬件信息的参数配置

                    为了验证硬件信息对优化算法参数选取的影响, 在                 AVX512  和  ARM Neon  平台中分别以   {16,32,64,128,256}
                 的数值设置向量化长度, 并在不同的卷积优化场景中计算优化加速比, 随后对于这两个平台分别选取平均实际加
                 速比最大的向量化长度设置, 将相关数据记录在表                 6  和表  7  中. 为了方便对比, 也将适合    AVX512  的向量化长度
                 配置应用于    ARM Neon  平台中进行测试, 将相关数据记录在表            8  中. 图  4  是面向  ARM Neon  平台时, 选取不同向
                 量化参数   vs 的  Broadcast 算法优化卷积的执行时间比较.

                                  表 6 基于   AVX512  平台, 向量化长度为     64  时的最佳算法选择探究

                                           标量执行时间      Im2Col执行  Broadcast执行                 算法选择结果
                           卷积尺寸                                            实际加速比 预测加速比
                                               (ms)     时间 (ms)   时间 (ms)                      是否正确
                    (1×1536×7×7, 192×1536×1×1)  75.3      2.2       14.5      6.74    2.51        √
                    (1×192×7×7, 1536×192×1×1)  76.9       2.1       14.7      7.14    2.83        √
                     (1×48×30×30, 384×48×3×3)  647       16.9       32.5      1.91    1.58        √
                    (1×32×114×114, 96×32×3×3)  1 726     76.9       46.6      0.66    0.83        √
                     (1×64×58×58, 64×64×3×3)   581       19.9       18.0      9.91    1.84        √

                                  表 7 基于   ARM Neon                16  时的最佳算法选择探究

                                           标量执行时间      Im2Col执行  Broadcast执行                 算法选择结果
                           卷积尺寸                                            实际加速比 预测加速比
                                               (ms)     时间 (ms)   时间 (ms)                      是否正确
                    (1×1536×7×7, 192×1536×1×1)  53        2.9       28.0     10.00    1.51        √
                    (1×192×7×7, 1536×192×1×1)  49.2       4.5       26.7      5.88    1.57        √
                     (1×48×30×30, 384×48×3×3)  461       15.4       63.9      4.17    1.15        √
                    (1×32×114×114, 96×32×3×3)  1 229     49.7       47.8      0.97    0.94        √
                     (1×64×58×58, 64×64×3×3)   1 211     50.1       47.7      0.95    0.94        √

                    一方面, 从图    4  中可以看出, 在   ARM Neon  平台上选择   16  作为向量化长度能够获得更小的执行时间和更准
                 确的预测结果, 这说明向量化长度参数的选取会对优化性能产生关键影响. 另一方面, 根据表                            6, 在  AVX512  平台
   100   101   102   103   104   105   106   107   108   109   110