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

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


                 试预言, 并检测到     9  个结果错误类型的缺陷. MT-DLComp      [12] 针对  DL  模型设计了等价的测试输入实现对         DL  编译
                 器的测试, 并检测到      4  个此类缺陷. 这些测试预言能够捕获一定量的引起模型预测结果发生改变的缺陷. 然而, 这
                 些测试预言无法检测到一些不会导致预测结果错误的缺陷. 因此, 设计一些细粒度的测试预言, 比如直接对比                                  IR
                 的结果是否正确可以暴露出更多此类缺陷.
                    发现  5. 崩溃和结果错误是      DL  编译器中两类最常见缺陷症状. 结果错误类型的缺陷难以检测, 且为此类缺陷
                 设计高质量的测试预言依然存在挑战.
                    由图  4  可知, 挂起和性能问题的症状占比很低, 和已有研究              [8] 对比发现, 这两种症状的缺陷所占用的比例提高
                 了  1.56  倍上. 性能缺陷具有隐蔽性和缺少合适的测试预言, 导致目前并没有针对                    DL  编译器性能缺陷设计的测试
                 方法. 由于提升模型性能为        DL  编译器的核心功能, 所以此类缺陷具有较大的危害性. 鉴于此类缺陷数量的快速增
                 多, 因此, 设计一种针对     DL  编译器性能缺陷的检测方法的重要性也逐渐提高.
                    发现  6. 在  DL  编译器中, 挂起和性能问题虽占比不高, 但增长迅速, 数量已增长了                 1.56  倍. 因此, 设计针对此
                 类缺陷的检测方法变得愈发重要.

                 4.3   RQ3: 位置
                    表  2  中展现了不同时期     DL  编译器在各阶段缺陷数量占比. 其中旧数据为已有工作                  [8] 中使用的  603  个早期
                 DL  编译器缺陷数据. 从表中可以发现, 和传统编译器缺陷分布不同, DL                  编译器在   3  个阶段均较多的缺陷占比. 与
                 传统编译器前端不同, DL       编译器需要处理来自各种         DL  框架的模型, 并将每个      DL  框架中支持的    DL  算子转换成
                 功能等价的    High-level IR. 由于  DL  框架中的算子也在快速迭代和发展, DL       编译器需要及时且准确地适配            DL  框
                 架中各种    DL  算子的修改逻辑. 不及时或不正确的算子转换逻辑更新以适配                    DL  框架最新的算子实现将会导致
                 DL  编译器前端出现新的缺陷. 需要注意的是, 由于             AKG  编译器缺少模型加载阶段, 其模型加载功能在另一前置
                 系统  MindSpore 中完成. 因此, AKG  并没有模型加载阶段.

                                          表 2 不同   DL  编译器各阶段缺陷数量占比 (%)

                                DL编译器      数据来源      模型加载      High-level IR转换  Low-level IR转换
                                            旧数据        25.50        38.26         36.24
                                  TVM
                                            本工作        14.65        30.81         54.55
                                            旧数据        27.34        35.16         37.50
                                  Glow
                                            本工作        44.30        26.58         29.11
                                 nGraph     旧数据        4.27         73.50         22.22
                                  AKG       本工作         -           28.74         71.26
                                            旧数据        21.36        45.12         33.52
                                  合计
                                            本工作        16.55        29.89         53.56

                    从整体上来看, Low-level IR   转换阶段的缺陷超过        High-level IR  转换阶段, 然而不同  DL  编译器之间缺陷位
                 置的分布有着显著的差异, 因此, 需要对每个编译器分别研究. 一方面, 本文研究的                        AKG  的  3  个核心功能: 规范
                 化、自动调度和后端优化中的后两个均是围绕                  Low-level IR  设计并实现的. 另一方面, 已有研究工作          [8] 中的
                 nGraph  则是围绕计算图优化      (即  High-level IR  优化) 进行设计实现的. 对于   TVM  来说, 相较于模型加载阶段和
                 High-level IR  转换阶段, Low-level IR  转换阶段的缺陷比例从之前的     36.24%  升至  54.55%. 其主要原因是  TVM  的
                 Low-level IR  转换阶段是一个极其复杂的任务. 同时, 相较于          High-level IR  转换阶段通用的图级别优化算法, Low-
                 level IR  转换阶段的优化任务需要结合特定的硬件特性, 从而需要不断地修改优化代码以提升底层算子原语在硬
                 件上的执行效率, 复杂的优化任务和适配各种硬件特性是导致                     Low-level IR  转换阶段缺陷比例不断上升的一个
                 主要原因.
                    发现  7. DL  编译器缺陷分布紧密关联于其架构设计. 其中, TVM             在  Low-level IR  转换阶段的缺陷比例快速上
                 升, 归因于该阶段频繁的代码变更所引入的新缺陷.
   105   106   107   108   109   110   111   112   113   114   115