Page 104 - 《软件学报》2025年第7期
P. 104

沈庆超 等: 深度学习编译器缺陷实证研究: 现状与演化分析                                                   3025


                 (High-level IR). DL  模型是一个有向无环图, 其节点表示运算符        (即张量的计算函数), 计算图的边代表数据流. 这
                 种  High-level IR (也称为计算图级别  IR) 有助于隐藏来自不同      DL  框架构造的    DL  模型的差异, 从而简化优化执行.
                 DL  模型中的每个运算符都会转换为语义上等效的一个或多个                   IR  表达式. 例如, Keras 模型中的   Conv2D  运算符以
                 及所有参数设置      (例如, filters 和  strides) 都将转换为  TVM  的  High-level IR  中的  nn.conv2d. (b) High-level IR  转换
                 阶段: DL  编译器对   High-level IR 执行与硬件无关的优化     (例如, 算子融合), 以提高计算效率. (c) Low-level IR   转换
                 阶段: High-level IR  被转换为  Low-level IR, 在此期间执行特定于硬件的优化      (例如, 内存延迟隐藏). 最后, DL 编译
                 器基于   Low-level IR  生成指定目标硬件上的可执行代码.
























                                                    图 1 DL  编译器架构

                    在研究   DL  编译器缺陷特征时, 症状、根因与位置是             3  个关键的分析维度. 缺陷症状是指编译器在运行过程
                 中表现出的异常行为, 通常为用户或开发者可以直接观察到的现象                      (如, 崩溃). 根因则是引起缺陷的深层次根本原
                 因  (如, API 误用). 位置则指存在缺陷的代码所处的编译阶段             (如, 模型加载阶段). 除了缺陷本身特征, 本文还从触
                 发缺陷的回归测试用例和修复缺陷的补丁两个维度挖掘缺陷的特征. 基于这                         5  个维度对缺陷分布及其演化方向进
                 行全面分析, 有助于指导研究人员更有效地设计缺陷检测、定位和自动修复的方法.
                                                                   [9]
                    本工作选择了当前       3  款主流  DL  编译器  (即  Apache 的  TVM 、Facebook  的  Glow [10] 和华为的  AKG [14] ) 作为
                 实验研究对象. 鉴于      nGraph  仓库已停止维护, 本文不再研究        nGraph, 而是新增了当前主流的       AKG  编译器作为新
                 的研究对象. 这    3  款编译器在结构和实现上具有多样性. 例如, TVM             在  Low-level IR  转换阶段使用机器学习的方
                 法实现自动调优      (auto tuning). Glow  将  High-level IR  的每个算子转化成多个  Low-level IR  的原语以实现算子空间
                 的缩减, 使得新的目标硬件平台只需专注于少量的线性代数原语. AKG                     不包含模型加载阶段, 而是在其上游程序
                         [30]
                 MindSpore  中进行模型加载. 这种多样性有助于我们更全面地了解和研究                   DL  编译器缺陷的特性.

                 3   研究方法与分类

                 3.1   研究问题

                    DL  编译器的快速发展带来了新功能的引入和老旧功能的淘汰, 然而这种快速迭代也伴随着不同类型的缺陷
                 的产生. 了解这些缺陷的分布及其变化趋势, 可以为未来的缺陷检测、定位与修复提供指导                             [31] . 此外, 回归测试用
                 例和补丁中包含丰富的缺陷特征           [32] , 然而已有的研究工作仅仅关注了        DL  编译器缺陷本身的特征, 忽略了触发缺
                 陷的回归测试用例和修复缺陷的补丁角度的研究. 因此, 本工作设计了以下                        6  个研究问题其中    RQ1  到  RQ3  关注
                 DL  编译器缺陷的分布情况与缺陷分布随时间的变化情况, RQ4                 进一步探索研究根因、症状、位置三者之间的内
   99   100   101   102   103   104   105   106   107   108   109