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 进一步探索研究根因、症状、位置三者之间的内

