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

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


                 hardware  platforms,  AutoConfig  builds  interpretable  performance  analysis  models,  conducts  a  thorough  assessment  via  static  information
                 extraction  and  dynamic  overhead  measurement,  and  automates  algorithm  selection  and  configuration  tuning  for  code  generation.  The  key
                 innovation  of  this  study  is  combining  the  optimization  analysis  model  and  a  configurable  code  generation  strategy,  which  ensures  a
                 performance  acceleration  effect  and  reduces  repeated  development  overheads  with  the  simplified  tuning  process.  Furthermore,  this  study
                 integrates  AutoConfig  into  a  deep  learning  compiler  Buddy  Compiler,  builds  analysis  models  for  convolution  and  matrix  multiplication
                 optimization,  and  evaluates  the  optimization  on  multiple  SIMD  hardware  platforms.  Experimental  results  indicate  that  AutoConfig
                 effectively  completes  parameter  configuration  and  algorithm  selection  in  the  code  generation  strategy.  Additionally,  compared  with  the
                 codes  by  manual  or  automatic  optimization,  the  codes  generated  by  AutoConfig  can  yield  comparable  performance  without  both  the
                 repeated manual tuning implementation overheads and auto-tuning search overheads.
                 Key words:  deep learning compiler; compilation optimization; code generation; automatic configuration mechanism

                    深度学习在处理图像        [1] 、语音  [2] 、文本  [3] 等各个场景中得到了越来越广泛的应用. 为了取得更优异的表现性
                 能, 深度学习模型的设计日益精妙和复杂. 举例而言, 早期经典的图像分类模型                       AlexNet 有 [1]  600  万参数, 如今流行
                                   [4]
                 的大语言模型     ChatGPT 的参数量已经达到        1 750  亿, 参数量的飞跃式增长为深度学习模型在硬件设备中高效落
                 地带来重要挑战.
                                 的实现所依托的编译基础设施. 第
                    目前支持深度学习模型落地主要有两类技术. 一类是通过开发高性能算子库来加速模型                             [5−7] . 这些算子库通常
                 使用编译器内建函数或汇编级别指令来手动实现算子的核心逻辑, 可以在特定的计算场景中提供充分的算子优化
                 机会. 然而要在大部分计算场景中都获得较好的性能, 需要在算子库中为不同规模的算子输入重复编写程序逻辑,
                 这个开发流程费时费力. 而且程序逻辑中对优化算法和优化参数的选择也与硬件平台强相关, 这使得一套程序逻
                 辑无法被不同的硬件平台直接复用, 因此这类技术依赖于手动调优, 通常不具有跨平台的普适性.
                    另一类技术是构建支持深度学习模型的编译优化框架. 这些框架的优化流程与处理高级语言程序的传统编译
                           [8]
                 器  (如  LLVM ) 有共通之处, 它们将深度学习模型的落地视作一个编译优化的过程: 首先采用某种高层抽象的语言
                 来表示模型, 然后将高层抽象逐步下降到硬件级别中间表示, 同时在下降的不同阶段结合多种策略对模型进行优化.
                 与调用高性能算子库相比, 深度学习编译优化技术能够从全局的角度发掘模型的优化空间, 发挥跨硬件平台做自动
                 调优的潜力. 然而现有深度学习编译优化框架的自动调优方式通常基于搜索策略. 当面对程序逻辑复杂且具有大量
                 调优参数的算法时, 庞大的搜索空间会导致调优过程的开销变得难以承受, 而且参数选取的过程也不具备可解释性.
                    针对上述问题, 本文提出了         AutoConfig, 一种面向深度学习编译优化的自动配置机制. AutoConfig            由重写模
                 式  (rewrite pattern) 和优化分析模型两个部分组成. 重写模式提供可配置的代码生成策略, 以驱动优化分析模型进
                 行参数选取和算法选择. 优化分析模型可以根据硬件平台信息确定调优参数范围, 并使用基准程序从计算、访存
                 和特殊指令开销等多个方面量化模型中的权重系数, 以指导优化算法的选择. 通过综合考虑计算负载特点和硬件
                 特征等要素, AutoConfig  能够完成调优参数选取、优化算法选择和自动代码生成, 只需一次优化实现就能适配多
                 种硬件平台. 本文将      AutoConfig  集成在深度学习编译器      Buddy Compiler 中, 并针对实际的深度学习计算负载场
                                                                         [9]
                 景, 在多种  SIMD  平台上对   AutoConfig  的参数配置及优化算法的选择进行探究, 并将基于优化分析模型的代码生
                 成策略与   TVM [10] 的自动调优策略进行跨平台的性能比较. 实验结果验证了                AutoConfig  作为全新的深度学习编译
                 优化开发范式的实用性和有效性.
                    本文第 1 节介绍相关工作. 第       2  节介绍基础知识, 包括深度学习计算负载及其优化方法、深度学习编译优化的基
                 本流程和   AutoConfig                         3  节介绍  AutoConfig  的设计思路、模块组成、使用方式和生
                 态集成. 第  4  节介绍  AutoConfig  中的优化分析模型, 并以矩阵乘法和卷积为例, 针对不同的优化算法进行建模和分析.
                 第     5 节介绍  AutoConfig 中的静态信息提取和动态开销测量策略. 第      6 节呈现实验设计、结果和分析. 第         7 节给出结论.

                 1   相关工作

                                                                                         [5]
                    在深度学习模型诞生的早期, 人们通过开发高性能算子库来加速模型的推理过程. cuDNN 是一个由                              NVIDIA
                 开发的深度学习加速库, 它提供了一系列深度学习计算负载实现, 采用启发式方法为负载实现选择最佳的算法, 并
                                                                                  [6]
                 使用  CUDA  技术来加速, 可以在     NVIDIA GPU  上实现高效的深度学习推理. oneDNN 是由           Intel 开发的用于深度
                 神经网络的数学内核库, 它可以发挥           Intel 处理器体系结构和多核处理器的优势, 实现深度学习计算负载的高性能
   88   89   90   91   92   93   94   95   96   97   98