中文

两个深度学习城市间的故事:当库存测试遇上编译器

软件工程 2024-08-15 v2

摘要

深度学习(DL)编译器通常会加载深度学习模型并对其进行中间表示的优化。现有的 DL 编译器测试技术主要关注模型优化阶段,很少探索模型加载阶段的 bug 检测。有效地测试模型加载阶段需要覆盖来自各种 DL 库的每个 DL 算子的多样化用法,而这与 DL 库测试具有共同的目标,表明 DL 库测试中嵌入的知识对测试 DL 编译器的模型加载阶段是有益的。在本文中,我们提出了 OPERA 从 DL 库的测试输入中提取此类领域知识。OPERA 构造来自各种 DL 库测试输入的测试用例(包括来自 DL 库文档的测试输入以及由最近模糊测试器生成的测试输入)。此外,它融入了基于多样性的测试优先级策略,将更可能更早检测出多样化 bug 的测试输入迁移和执行。我们考虑了三个来源的 DL 库测试用于迁移,并使用八个来自三个 DL 编译器(如 TVM、TensorRT 和 OpenVINO)的前端进行评估。OPERA 检测到总计 170 个之前未知的 bug,其中 90 个已被开发者确认/修复,证明了此种迁移方法的有效性。OPERA 的测试优先级策略比通用测试优先级策略在迁移测试用例方面提高了 11.9%~47.4% 的测试效率。

关键词

引用

@article{arxiv.2407.16626,
  title  = {A Tale of Two DL Cities: When Library Tests Meet Compiler},
  author = {Qingchao Shen and Yongqiang Tian and Haoyang Ma and Junjie Chen and Lili Huang and Ruifeng Fu and Shing-Chi Cheung and Zan Wang},
  journal= {arXiv preprint arXiv:2407.16626},
  year   = {2024}
}

备注

This paper has been accepted by ICSE'2025