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 处理器体系结构和多核处理器的优势, 实现深度学习计算负载的高性能