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