最近的深度学习(DL)应用主要建立在DL库的顶部。这些库的质量保证对于可靠的DL应用程序的可靠部署至关重要。因此,提出了一些技术来通过生成DL模型作为测试输入来测试DL库。然后,这些技术将这些DL模型馈送到DL库进行推断,以便行使与DL模型执行相关的DL库模块。但是,这些技术的测试有效性受生成的DL模型的多样性的限制。我们的研究发现,这些技术最多可以覆盖层对的11.7%(即,在两个层API之间调用序列)和层参数的55.8%(例如,在Conv2d中的“ Padding”)。结果,我们发现现有技术可能会错过特定层对和参数引起的许多错误。鉴于现有DL库测试技术的局限性,我们建议备忘录通过探索层类型,层对和层参数来有效地生成不同的DL模型。备忘录:(1)设计一种初始模型还原技术,以提高测试效率而不损害模型多样性; (2)为定制的Markov链蒙特卡洛(MCMC)算法设计一组突变操作员,以探索新的层类型,层对和层参数。我们在七个流行的DL库上评估了备忘录,其中包括四个用于模型执行(Tensorflow,Pytorch和MXNET和ONNX)和三个用于模型转换的备忘录(KERAS-MXNET,TF2ONNX,ONNX2PYTORCH)。评估结果表明,备忘录的表现优于最近的作品,覆盖了10.3%的层对,多15.3%的层参数和2.3%的库分支。此外,备忘录在最新版本的DL库中检测到29个新错误,其中17个由DL库开发人员确认,其中5个已确认的错误已修复。
translated by 谷歌翻译
越来越多地用于优化深度神经网络(DNN)模型,以满足性能,资源利用和其他要求,越来越多地使用深入学习(DL)编译器(例如TVM和Tensorrt)。这些编译器中的错误可以产生优化的模型,其语义与原始模型不同,并产生不正确的结果,影响了下流应用程序的正确性。但是,由于其复杂性,在这些编译器中找到错误是具有挑战性的。在这项工作中,我们提出了一种新的模糊测试方法,用于在深入学习编译器中查找错误。我们的核心方法使用(i)轻重量操作员规范来生成多样化但有效的DNN模型,使我们能够行使编译器的大部分转换逻辑; (ii)基于梯度的搜索过程,用于查找模型输入,该过程避免在模型执行过程中避免任何浮点异常值,从而减少了错过错误或错误警报的机会; (iii)差异测试以识别错误。我们在NNSmith中实施了这种方法,该方法在过去的七个月中为TVM,Tensorrt,OnxRuntime和Pytorch发现了65个新错误。在这52个已得到证实,项目维护者已确定了44个。
translated by 谷歌翻译
模型压缩可以显着降低深度神经网络(DNN)模型的大小,以便在资源限制的移动和物联网设备上部署压缩后大型复杂的模型。但是,模型压缩通常将偏离的行为引入压缩模型:原始和压缩模型输出相同输入的不同预测结果。因此,警告开发人员至关重要,并帮助他们全面评估部署前的这种行为的可能后果。为此,我们提出了TriggerFinder,一种新颖,有效和有效的测试方法来自动识别输入以触发压缩模型中的偏离行为。给出一个作为种子的输入I,触发器采用迭代地应用一系列突变操作以改变I,直到得到的输入触发偏离的行为。但是,压缩模型通常隐藏其架构和梯度信息;没有这样的内部信息作为指导,它变得难以有效且有效地触发偏离的行为。为了解决这一挑战,我们提出了一种新颖的健身功能来确定更接近能够触发偏移预测的输入的突变输入。此外,TriggerFinder将该搜索问题模拟作为Markov链过程,并利用了Metropolis-Hasting算法来指导突变运算符的选择。我们在具有两个数据集的18个压缩模型上评估了TriggerFinder。实验结果表明,在某些情况下,基线在基线发生故障时,触发器可以成功找到所有种子输入的触发输入。至于效率,TriggerFinder为5.2x-115.8x,与基线一样快。此外,TriggerFinder要求找到一个触发输入的查询仅为51.8x-535.6x,作为基线。
translated by 谷歌翻译
深度学习(DL)越来越多地应用于各种域。从传统系统到DL系统的编程范式转移在工程DL系统中造成独特的挑战。性能是DL系统中的挑战之一,性能错误(PBS)可能导致严重后果,例如资源消耗过多和财务损失。虽然DL系统中的错误已被广泛调查,但DL系统中的PBS几乎没有探讨。为了弥合这一差距,我们展示了第一个综合研究,以表征症状,根本原因和引入和引入PBS在Tensorflow和Cheras中的DL系统中的阶段,共收集来自225个Sackoverflow Post的238个PBS。我们的调查结果阐明了对开发高性能DL系统的影响,以及DL系统中的PBS检测和定位PBS。我们还在DL系统中建立了56个PBS的第一个基准,并评估了解决它们的现有方法的能力。此外,我们开发了一个静态检查器DeadPerf来检测三种类型的PBS,并在130个GitHub项目中识别488个新PBS.62和18分别被开发人员确认和修复。
translated by 谷歌翻译
Deep learning (DL) systems are increasingly deployed in safety-and security-critical domains including self-driving cars and malware detection, where the correctness and predictability of a system's behavior for corner case inputs are of great importance. Existing DL testing depends heavily on manually labeled data and therefore often fails to expose erroneous behaviors for rare inputs.We design, implement, and evaluate DeepXplore, the first whitebox framework for systematically testing real-world DL systems. First, we introduce neuron coverage for systematically measuring the parts of a DL system exercised by test inputs. Next, we leverage multiple DL systems with similar functionality as cross-referencing oracles to avoid manual checking. Finally, we demonstrate how finding inputs for DL systems that both trigger many differential behaviors and achieve high neuron coverage can be represented as a joint optimization problem and solved efficiently using gradientbased search techniques.DeepXplore efficiently finds thousands of incorrect corner case behaviors (e.g., self-driving cars crashing into guard rails and malware masquerading as benign software) in stateof-the-art DL models with thousands of neurons trained on five popular datasets including ImageNet and Udacity selfdriving challenge data. For all tested DL models, on average, DeepXplore generated one test input demonstrating incorrect behavior within one second while running only on a commodity laptop. We further show that the test inputs generated by DeepXplore can also be used to retrain the corresponding DL model to improve the model's accuracy by up to 3%.
translated by 谷歌翻译
量化是在嵌入式系统或手机上部署训练有素的DNN模型时,是最应用的深神经网络(DNN)压缩策略之一。这是由于其对广泛的应用和情况的简单性和适应性,而不是特定的人工智能(AI)加速器和编译器,这些加速器和编译器通常仅用于某些特定的硬件(例如Google Coral Edge TPU)。随着对量化的需求不断增长,确保该策略的可靠性成为一个关键挑战。传统的测试方法收集越来越多的真实数据以进行更好的评估,通常是不切实际的,因为输入空间的尺寸很大,并且原始DNN及其量化的对应物之间的相似性很高。结果,高级评估策略已变得至关重要。在本文中,我们提出了Diverget,这是一个基于搜索的测试框架,用于量化评估。 Diverget定义了变质关系的空间,该空间模拟了输入上的自然扭曲。然后,它最佳地探索了这些关系,以揭示不同算术精度的DNN之间的分歧。我们评估了应用于高光谱遥感图像的最先进的DNN上的Diverget的性能。我们选择了遥感DNN,因为它们越来越多地部署在诸如气候变化研究和天文学之类的关键领域中的边缘(例如,高级无人机)。我们的结果表明,Diverget成功地挑战了已建立的量化技术的鲁棒性,以防止自然变化的数据,并胜过其最新的并发,Diffchaser,其成功率(平均)是四倍。
translated by 谷歌翻译
Mutation-based fuzzing has become one of the most common vulnerability discovery solutions over the last decade. Fuzzing can be optimized when targeting specific programs, and given that, some studies have employed online optimization methods to do it automatically, i.e., tuning fuzzers for any given program in a program-agnostic manner. However, previous studies have neither fully explored mutation schemes suitable for online optimization methods, nor online optimization methods suitable for mutation schemes. In this study, we propose an optimization framework called SLOPT that encompasses both a bandit-friendly mutation scheme and mutation-scheme-friendly bandit algorithms. The advantage of SLOPT is that it can generally be incorporated into existing fuzzers, such as AFL and Honggfuzz. As a proof of concept, we implemented SLOPT-AFL++ by integrating SLOPT into AFL++ and showed that the program-agnostic optimization delivered by SLOPT enabled SLOPT-AFL++ to achieve higher code coverage than AFL++ in all of ten real-world FuzzBench programs. Moreover, we ran SLOPT-AFL++ against several real-world programs from OSS-Fuzz and successfully identified three previously unknown vulnerabilities, even though these programs have been fuzzed by AFL++ for a considerable number of CPU days on OSS-Fuzz.
translated by 谷歌翻译
大多数自动化软件测试任务可以从测试用例的抽象表示中受益。传统上,这是通过基于测试案例的代码覆盖范围来完成的。规范级别的标准可以替换代码覆盖范围以更好地表示测试用例的行为,但通常不具有成本效益。在本文中,我们假设测试用例的执行痕迹可以使其在自动测试任务中抽象其行为的好选择。我们提出了一种新颖的嵌入方法Test2VEC,该方法将测试执行映射到潜在空间。我们在测试案例的优先级(TP)任务中评估了此表示形式。我们的默认TP方法基于嵌入式向量与历史失败测试向量的相似性。我们还根据测试向量的多样性研究了一种替代方案。最后,我们提出了一种决定给定测试套件的方法,以决定选择哪种TP。该实验基于几个真实和种子故障,具有超过一百万个执行痕迹。结果表明,就第一个失败测试案例(FFR)的中位数等级而言,我们提议的TP将最佳替代品提高了41.80%。就中位数APFD和中位数归一化FFR而言,它的表现优于传统代码覆盖范围的方法25.05%和59.25%。
translated by 谷歌翻译
Recent advances in deep learning (dl) have led to the release of several dl software libraries such as pytorch, Caffe, and TensorFlow, in order to assist machine learning (ml) practitioners in developing and deploying state-of-the-art deep neural networks (DNN), but they are not able to properly cope with limitations in the dl libraries such as testing or data processing. In this paper, we present a qualitative and quantitative analysis of the most frequent dl libraries combination, the distribution of dl library dependencies across the ml workflow, and formulate a set of recommendations to (i) hardware builders for more optimized accelerators and (ii) library builder for more refined future releases. Our study is based on 1,484 open-source dl projects with 46,110 contributors selected based on their reputation. First, we found an increasing trend in the usage of deep learning libraries. Second, we highlight several usage patterns of deep learning libraries. In addition, we identify dependencies between dl libraries and the most frequent combination where we discover that pytorch and Scikit-learn and, Keras and TensorFlow are the most frequent combination in 18% and 14% of the projects. The developer uses two or three dl libraries in the same projects and tends to use different multiple dl libraries in both the same function and the same files. The developer shows patterns in using various deep-learning libraries and prefers simple functions with fewer arguments and straightforward goals. Finally, we present the implications of our findings for researchers, library maintainers, and hardware vendors.
translated by 谷歌翻译
深度学习(DL)框架现在被广泛使用,简化了复杂模型的创建以及它们对各种应用的集成甚至到非DL专家。但是,就像任何其他程序一样,他们容易发生错误。本文与命名静默错误的错误分类:它们会导致错误的行为,但它们不会导致系统崩溃或挂起,也不会向用户显示错误消息。这种错误在DL应用程序和框架中更危险,因为系统的“黑匣子”和系统的随机性质(最终用户无法理解模型如何做出决定)。本文介绍了Keras和Tensorflow Silent错误的第一个实证研究,以及它们对用户节目的影响。从Tensorflow Github存储库中提取与KERA相关的封闭问题。在我们收集的1,168个问题中,77个影响了影响用户程序的可重复静音错误。我们根据“用户程序的影响”和“发生问题”的“发生问题的组件”归类错误。然后,我们根据用户程序的影响,我们为每个问题派生威胁级别。为了评估所确定的类别和影响规模的相关性,我们使用103个DL开发人员进行了在线调查。参与者普遍同意DL库中静音错误的重大影响,并承认了我们的研究结果(即,沉默错误的类别和拟议的影响量表)。最后,利用我们的分析,我们提供了一套指导方针,以促进对DL框架中的这些错误的保护。
translated by 谷歌翻译
网络协议实现的状态属性对测试和验证技术构成了独特的挑战,包括模糊。通过利用状态模型来分区状态空间并帮助测试生成过程来解决这一挑战。由于并非所有国家都同样重要和模糊运动,因此模糊需要有效的状态选择算法,以优先考虑逐行的州。已经提出了几种状态选择算法,但它们在不同的平台上单独实施和评估,使其难以实现决定性的结果。在这项工作中,我们在与网络服务器的最先进的模糊组中评估了一组广泛的状态选择算法。网络服务器的最先进的模糊。该算法集包括AFLNET支持的现有算法和我们的新颖和原则性算法,称为AFLNetLEGION。关于Profuiczbench基准的实验结果表明,(i)AFLNET的现有状态选择算法实现了非常相似的代码覆盖,(ii)AFLNETLEGION在所选案例研究中显然优于这些算法,但(iii)整体改善显得微不足道。这些是出乎意料但有趣的发现。我们确定问题并分享可能开放未来研究本主题的机会的见解。
translated by 谷歌翻译
背景:机器学习(ML)可以实现有效的自动测试生成。目的:我们表征了新兴研究,检查测试实践,研究人员目标,应用的ML技术,评估和挑战。方法:我们对97个出版物的样本进行系统文献综述。结果:ML生成系统,GUI,单位,性能和组合测试的输入或改善现有生成方法的性能。 ML还用于生成测试判决,基于属性的和预期的输出序列。经常基于神经网络和强化学习的监督学习通常是基于Q学习的 - 很普遍,并且某些出版物还采用了无监督或半监督的学习。使用传统的测试指标和与ML相关的指标(例如准确性)评估(半/非 - )监督方法,而经常使用与奖励功能相关的测试指标来评估强化学习。结论:工作到尽头表现出巨大的希望,但是在培训数据,再探术,可伸缩性,评估复杂性,所采用的ML算法以及如何应用 - 基准和可复制性方面存在公开挑战。我们的发现可以作为该领域研究人员的路线图和灵感。
translated by 谷歌翻译
对深度学习的有效部署的强烈需求(DL)应用促使丰富的DL生态系统的快速发展。为了跟上其快速进步,对于DL框架来说至关重要,以有效地将各种优化的库和运行时作为其后端集成,并通过正确使用它们来生成最快的可执行文件。但是,当前的DL框架需要重大的手动努力来整合多样化的后果,并且通常无法提供高性能。在本文中,我们提出了一个用于集成DL后端的自动框架的拼贴画。拼贴提供后端注册界面,允许用户精确指定各个后端的功能。通过利用可用后端的规范,拼贴搜索给定工作负载和执行环境的优化后端放置。我们的评估表明,拼贴画在没有手动干预的情况下将多个后端集成在一起,并且分别在两个不同的NVIDIA GPU和英特尔CPU上以1.21倍,1.39倍,1.40倍的现有框架。
translated by 谷歌翻译
深度神经网络(DNN)应用越来越多地成为我们日常生活的一部分,从医疗应用到自动车辆。 DNN的传统验证依赖于准确度措施,然而,对抗示例的存在突出了这些准确度措施的局限性,特别是当DNN集成到安全关键系统中时提出担忧。在本文中,我们呈现HOMRS,一种通过自动构建从一组初始变质关系构建小型优化的高阶变质关系来提振变质测试的方法。 Homrs的骨干是一个多目标搜索;它利用传统系统测试中绘制的想法,例如代码覆盖,测试用例,路径分集以及输入验证。我们将HOMRS应用于MNIST / LENET和SVHN / VGG,我们报告了它的证据表明它建立了一个小而有效的高阶变换,概括到输入数据分布很好。此外,与诸如DeepXplore的类似的生成技术相比,我们表明我们的分发的方法更有效,从不确定量化的观点产生有效的变换,同时通过利用方法的泛化能力来实现更少的计算时间。
translated by 谷歌翻译
深度神经网络(DNN)已成为移动设备上许多主要应用的核心推动因素。为实现高精度,DNN模型越来越深,数百甚至数千个操作层,导致高记忆和推理的计算要求。操作员融合(或内核/层融合)是许多最先进的DNN执行框架中的关键优化,例如Tensorflow,TVM和MNN。然而,这些框架通常根据某些模式采用融合方法,这些模式过于限制,以涵盖运营商和层连接的多样性。另一方面,基于多面体的循环融合技术,在没有运营商级信息的情况下对计算的低级视图工作,并且也可能错过潜在的融合机会。为了解决这一挑战,本文提出了一种名为DNNFusion的新颖和广泛的环路融合框架。这项工作的基本思想是在DNN的操作员视图下工作,但通过开发个人运营商及其组合的分类来扩展融合机会。此外,DNNFusion包括1)基于新的基于数学 - 性能的图形重写框架,以降低评估成本,并促进后续操作员融合,2)一种集成的融合计划,利用高级分析和精确的轻量级分析,以及3 )融合代码生成期间的附加优化。在15个DNN模型中广泛评估DNNFusion,具有各种任务,模型尺寸和图层计数。评估结果表明,DNNFusion最高达到8.8倍的融合机会,优于具有9.3倍的最先进的DNN执行框架。记忆要求减少和加速可以在移动设备上执行许多目标模型,甚至可以使它们成为实时应用程序的一部分。
translated by 谷歌翻译
Performance debugging in production is a fundamental activity in modern service-based systems. The diagnosis of performance issues is often time-consuming, since it requires thorough inspection of large volumes of traces and performance indices. In this paper we present DeLag, a novel automated search-based approach for diagnosing performance issues in service-based systems. DeLag identifies subsets of requests that show, in the combination of their Remote Procedure Call execution times, symptoms of potentially relevant performance issues. We call such symptoms Latency Degradation Patterns. DeLag simultaneously searches for multiple latency degradation patterns while optimizing precision, recall and latency dissimilarity. Experimentation on 700 datasets of requests generated from two microservice-based systems shows that our approach provides better and more stable effectiveness than three state-of-the-art approaches and general purpose machine learning clustering algorithms. DeLag is more effective than all baseline techniques in at least one case study (with p $\leq$ 0.05 and non-negligible effect size). Moreover, DeLag outperforms in terms of efficiency the second and the third most effective baseline techniques on the largest datasets used in our evaluation (up to 22%).
translated by 谷歌翻译
软件测试可能是一个漫长且昂贵的过程,尤其是如果无法测试的软件进行测试。重构技术可以通过改善影响可检验性的软件指标来增强可检验性。在构建回归模型学习如何将计算的源代码计算指标与其可检验性相关联的指标时,确定了指标。我们确定了15个软件指标,在解释我们的可检测性预测模型的同时,高度影响可检验性。我们使用42个Java类的实验表明,除了改善其他一些质量属性外,改善这15个指标的重构平均可以提高可测试性15.57%。我们的可测试性预测模型经过训练,可以映射源代码指标,以测试有效性和效率,作为可测试软件的两种重要成分。随着测试套件获得的覆盖范围的增加,测试有效性会提高。另一方面,随着测试套件的大小增加,测试效率会降低。本文提供了一个数学模型,以根据测试套件的大小和覆盖范围来计算类可检验性。我们使用此数学模型来计算可测试性作为我们可检测性预测模型的目标。数学模型要求执行正在测试的类以计算测试覆盖范围,而我们的回归模型在静态上测量了测试性。在测试性方面的测试结果预测应在测试之前,以避免不必要的成本。我们的可测试性预测模型已在23,886个Java类和262个软件指标上进行了培训和测试。学习的模型以R2为0.68,平均平方误差为0.03,可预测可验证性。
translated by 谷歌翻译
在各个领域采用深度学习(DL)的行业和学术界都有日益增长的需求,以解决现实世界的问题。深度加强学习(DRL)是DL在加固学习领域(RL)的应用。与任何软件系统一样,由于其程序中的故障,DRL应用程序可能会失败。在本文中,我们介绍了第一次尝试在DRL程序中分类故障。我们手动分析了使用众所周知的DRL框架(Openai健身房,多巴胺,Keras-RL,TensoRForce)和开发人员/用户报告的错误开发的DRL程序的761个文物(来自Stack Overflow帖子和GitHub问题)。我们通过几轮讨论标记和分类为已识别的故障。使用与19名开发人员/研究人员的在线调查验证了产生的分类法。为了允许在DRL程序中自动检测故障,我们已经确定了DRL程序的元模型,并开发了DRLINTER,一种利用静态分析和图形转换的基于模型的故障检测方法。 DRLINTINT的执行流程在于解析DRL程序,以生成符合我们元模型的模型,并在模型上应用检测规则以识别故障出现。使用15种合成DRLPRAGIONS评估DRLINTER的有效性,其中我们在分析的分析伪影中观察到的故障。结果表明,Drlinter可以在所有合成错误程序中成功检测故障。
translated by 谷歌翻译
深度神经网络(DNN)用于各种应用中。但是,与任何软件应用程序一样,基于DNN的应用程序受到错误的影响。以前的工作观察到DNN错误修复模式与传统错误修复模式不同。此外,由于具有多种选项来修复它们,因此由于具有多种选项的错误错误,那些错误模型是非微不足道的。为了支持开发人员在定位和修复错误中,我们提出DeepDiagnosis,一种定位故障的新型调试方法,报告错误症状,并提出了DNN程序的修复。在第一阶段,我们的技术监视培训模型,定期检查八种类型的错误条件。然后,在问题的情况下,它报告包含足够信息的消息来对模型执行可操作的维修。在评估中,我们通过GitHub和Stack Overflow彻底检查444型号-53现实世界,并由Autotrainer策划391。与UMLUAT和Deeplocalize相比,DeepDiagnosis提供卓越的准确性。我们的技术比Autotrainer更快,用于故障定位。结果表明,我们的方法可以支持其他类型的模型,而最先进的人才能够处理分类。我们的技术能够在培训期间报告在训练期间不明显作为数值错误的错误。此外,它可以提供用于修复的可操作的见解,而Deeplocalize只能在训练期间报告导致数值误差的故障。与其他方法相比,DeepDiagnosis表现出故障检测,错误本地化和症状的最佳能力。
translated by 谷歌翻译
深度神经网络(DNN)已广泛用于许多领域,包括图像处理,医疗诊断和自主驾驶。然而,DNN可以表现出可能导致严重错误的错误行为,特别是在安全关键系统中使用时。灵感来自传统软件系统的测试技术,研究人员提出了神经元覆盖标准,作为比喻源代码覆盖率,以指导DNN模型的测试。尽管对DNN覆盖范围非常积极的研究,但最近的几项研究质疑此类标准在指导DNN测试中的有用性。此外,从实际的角度来看,这些标准是白盒,因为它们需要访问DNN模型的内部或培训数据,这在许多情况下不可行或方便。在本文中,我们将黑盒输入分集度量调查为白盒覆盖标准的替代品。为此,我们首先以受控方式选择和适应三个分集指标和学习它们在输入集中测量实际分集的能力。然后,我们使用两个数据集和三个DNN模型分析其与故障检测的统计关联。我们进一步比较了与最先进的白盒覆盖标准的多样性。我们的实验表明,依赖于测试输入集中嵌入的图像特征的多样性是比覆盖标准更可靠的指示,以有效地指导DNN的测试。事实上,我们发现我们选定的黑盒子分集度量的一个远远超出了现有的覆盖范围,以便在发生故障泄露能力和计算时间方面。结果还确认了疑似,最先进的覆盖度量指标不足以指导测试输入集的构建,以检测尽可能多的自然输入的故障。
translated by 谷歌翻译