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

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


                    根据图   5, 结合表  6–表  8  对算法选择结果的正确性验证, 可以看出           AutoConfig  在多种硬件平台和不同向量化
                 长度配置下, 能够有效地完成代码生成策略中的算法选择, 这体现在对于大部分卷积优化场景, AutoConfig
                 能够预测得到实际性能更好的优化算法. 尽管如此, AutoConfig              的分析模型也有其局限性, 这会导致它在某些情况
                 下  (如处理表  8  中后两个卷积尺寸时) 的算法选择结果存在偏差. 具体而言, 在第                  4.1  节的建模中笼统地将各种访
                                                             Cost Memory  还应包括  Cache 未命中的代价、从内存中预取
                 存操作带来的开销视为同一类开销            Cost Memory  , 但实际上,
                 数据的代价、数据从寄存器中溢出的代价等. 在实际的访存中预取数据的操作是穿插在运算操作之间来隐藏延迟
                 的, 它与读取   Cache 操作的频率共同反映了算法对内存和缓存的利用程度, 而寄存器溢出的代价则反映了算法对
                 寄存器组的使用情况. 由此可见, 提高优化分析模型对硬件行为的抽象程度和描述精度是实现更加实用的自动配
                 置机制的关键.

                 6.4   AutoConfig  的代码生成性能验证
                    TVM  采用搜索的方式进行自动调优, 搜索的过程中需要通过枚举优化参数并实际执行程序来确定最佳的优
                 化策略. 与  TVM  相比, AutoConfig  进行配置的所需开销主要体现在动态开销的测量上. 基于静态硬件信息和动态
                 开销测量的结果, AutoConfig   能够直接借助代价模型完成参数配置和算法选择, 实现代码生成的过程. 针对深度学
                 习计算负载场景, 本节将       AutoConfig  与基于自动调优策略的      TVM  进行跨平台的性能比较.
                    在  AVX512  平台和  ARM Neon  平台上, 对不同尺寸的矩阵乘法        (Matmul) 和卷积  (Conv) 实施调优的实验结果
                 如表  9 和表  10 所示. 可以看出  AutoConfig 和  TVM  的优化相比于原始程序取得了较明显的性能提升, 且             AutoConfig
                 的优化加速比和所生成优化代码的绝对执行时间与                  TVM  的优化在一个数量级内, 具有可比性.

                                    表 9 AVX512  平台下   AutoConfig  与其他调优机制的性能对比

                                          TVM基准性能 TVM调优性能       TVM调优    AutoConfig基 AutoConfig调 AutoConfig调
                          负载尺寸
                                             (ms)       (ms)     加速比      准性能 (ms)  优性能 (ms)    优加速比
                   Matmul(64×65536, 65536×256)  2 518   189       13.3      4 248      242        17.6
                  Matmul(1024×1024, 1024×1024)  3 483   95        36.7      3 801      218        17.4
                 Conv(1×1536×7×7, 192×1536×1×1)  160    2.8       57.1       75.3       2.2       34.2
                                                                                        2.1
                                                        0.9
                  Conv(1×192×7×7, 1536×192×1×1)  159.5 AutoConfig
                                                                             76.9
                                                                                                  36.6
                                                                  177.2
                  Conv(1×48×30×30, 384×48×3×3)  184     2.4       76.7       647       16.9       38.3
                  Conv(1×32×114×114, 96×32×3×3)  445.1  10.3      43.2      1 726      46.6       37.0
                  Conv(1×64×58×58, 64×64×3×3)  153      1.4       109.3      581        18        32.3

                    进一步的, 为了评估      AutoConfig  相比  TVM  在调优时的性能优势, 本文定义单位加速比所需调优开销, 表示优
                 化算法在与标量算法相比实现性能提升时, 平均每单位倍数的性能提升所需的调优开销, 该指标直观反映了调优
                 行为对生成代码加速的贡献力度. 基于表             10  使用单位加速比所需调优开销, 对         AutoConfig  和  TVM  在卷积优化场
                 景进行描述, 实验结果如图        6  所示. 结果表明, 与   TVM  的自动调优方式相比, AutoConfig     无需通过耗时较长的搜
                 索方式确定最优参数, 只需要完成硬件信息提取和动态开销测量, 即可依托代价模型实现可自动配置的代码生成,
                 且由生成的代码可达到与自动调优相似的执行性能.

                                   表 10 ARM Neon  平台下            与其他调优机制的性能对比

                                           TVM基准性能 TVM调优性能 TVM调优加 AutoConfig基 AutoConfig调 AutoConfig调
                           负载尺寸
                                               (ms)      (ms)      速比     准性能 (ms)  优性能 (ms)    优加速比
                    Matmul(64×65536, 65536×256)  6 194    134      46.2     6 455      140        46.1
                   Matmul(1024×1024, 1024×1024)  1 300    76       17.1     3 889      127        30.6
                  Conv(1×1536×7×7, 192×1536×1×1)  234.1   8.2      28.5      53        11.5       4.6
                   Conv(1×192×7×7, 1536×192×1×1)  228.6   7.4      30.9      49.2      11.2       4.4
                   Conv(1×48×30×30, 384×48×3×3)  299.5    3.1      96.6      461       19.9       23.2
                   Conv(1×32×114×114, 96×32×3×3)  349.4   9.4      37.2     1 229      45.9       26.8
                   Conv(1×64×58×58, 64×64×3×3)  125.6     4.6      27.3      412       16.8       24.5
   102   103   104   105   106   107   108   109   110   111   112