近日,9001cc金沙首页王新教授、周扬帆副教授带领博士生顾嘉臻、硕士生罗旭川针对新兴人工智能软件系统测试方法的不足,提出了一种针对人工智能基础软件库的新测试方法,该方法提出构造多样化的神经网络作为测试用例,突破了目前主流方法测试效率低下的技术瓶颈,在TensorFlow等关键深度学习基础软件库新发现了39个之前未知的深度学习运算故障;该研究以“Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing“为题发表于软件工程旗舰会议IEEE/ACM International Conference on Software Engineering(ICSE 2022),博士生顾嘉臻为该论文的第一作者,博士研究生期间致力于软件可靠性方向的研究,在学期间发表4篇CCF A类论文,3篇CCF B类论文,并获第四届CCF大数据会议最佳学术论文奖。
近年来,基于人工智能技术的软件系统已经被广泛应用到了各个领域,如自动驾驶、虚拟助手、系统智能运维等,人工智能系统中的潜在故障可能会引起严重的后果,例如自动驾驶系统错误导致的交通事故。因此,保障人工智能系统的可靠性至关重要。
一般来说,一个人工智能系统可以划分为应用、中间件和硬件设施三个部分。现有大量研究工作关注人工智能应用的可靠性研究。然而,研究团队发现,由于系统中间基础软件库的广泛使用,基础软件库中的故障会对人工智能系统的可靠性产生更广泛的影响。因此,对人工智能基础软件库中的潜在故障进行全面的检测非常重要。然而,目前主流的深度学习基础软件库测试方法多采用现成的模型或其变体,并且使用不同的深度学习软件库得到模型的预测结果来执行差分测试,这样的方法难以全面检测软件库中的深度学习相关的计算功能的可靠性。
团队的研究旨在突破现有深度学习基础软件库测试方法的不足,提出针对深度学习基础软件库的多样化测试用例生成方法和针对深度学习模型训练过程的差分测试方法,从而实现深度学习基础软件库更全面的测试。具体而言,研究团队所提出的测试方法包含模型生成和不一致性检测两个部分。在模型生成部分,方法使用有向无环图(DAG)来表示模型的结构信息,并通过启发式的生成策略来产生多样化的测试用例;在不一致性检测部分,方法针对模型训练中的三个具体的计算过程(前向计算、损失值计算和反向计算),通过动态数据流追踪的方法分别采集模型训练过程中的中间计算结果,然后比较不同软件库在模型训练过程中计算结果后出现的不一致来对训练阶段的库代码完成差分测试。
基于上述方法,研究团队实现并开源发布了针对深度学习基础软件库的测试工具Muffin。研究团队使用该工具对三个常用深度学习基础软件库(TensorFlow、CNTK、Theano)进行测试,并在这些基础软件库的发行版本中发现了39个新故障。