ACETest:面向深度学习算子测试的约束自动提取
软件工程
2023-06-06 v2 密码学与安全
摘要
深度学习(DL)应用如今十分普遍,因为它们可以辅助完成多种任务。DL 库对于构建 DL 应用至关重要。此外,DL 算子是 DL 库的重要构建模块,用于计算多维数据(张量)。因此,DL 算子中的缺陷会产生重大影响。测试是检测 DL 算子缺陷的实用方法。为了有效测试 DL 算子,测试用例必须通过输入有效性检查,并能够到达算子的核心函数逻辑。因此,提取输入验证约束对于生成高质量测试用例是必要的。现有技术要么依赖人工,要么依赖 DL 库 API 文档来提取约束,无法提取复杂约束,且提取的约束可能与实际代码实现不符。为应对这一挑战,我们提出 ACETest,一种从代码中自动提取输入验证约束以构建有效且多样测试用例的技术,可有效地揭示 DL 算子核心函数逻辑中的缺陷。为此,ACETest 能自动识别 DL 算子中的输入验证代码,提取相关约束,并根据约束生成测试用例。在流行 DL 库 TensorFlow 和 PyTorch 上的实验结果表明,ACETest 提取约束的质量优于当前最优(SOTA)技术。此外,ACETest 能多提取 96.4% 的约束,并比 SOTA 技术多检测出 1.95 至 55 倍的缺陷。我们共使用 ACETest 在 TensorFlow 和 PyTorch 上检测到 108 个先前未知的缺陷,其中 87 个已被开发者确认。最后,其中 5 个缺陷因其安全影响被分配了 CVE 编号。
引用
@article{arxiv.2305.17914,
title = {ACETest: Automated Constraint Extraction for Testing Deep Learning Operators},
author = {Jingyi Shi and Yang Xiao and Yuekang Li and Yeting Li and Dongsong Yu and Chendong Yu and Hui Su and Yufeng Chen and Wei Huo},
journal= {arXiv preprint arXiv:2305.17914},
year = {2023}
}
备注
Accepted by ISSTA 2023