基于QL-UE算法与多测试预言的算子缺陷检测方法技术

技术编号:38745776 阅读:13 留言:0更新日期:2023-09-08 23:27
本发明专利技术公开基于QL

【技术实现步骤摘要】
基于QL

UE算法与多测试预言的算子缺陷检测方法


[0001]本专利技术属于深度学习库算子缺陷检测的
,具体涉及一种基于QL

UE算法与多测试预言的算子缺陷检测方法。

技术介绍

[0002]目前已经开始进行的深度学习库的测试工作,这些测试工作大致可以分为两类。第一类是基于模型的测试,它从模型的角度出发,对深度学习库进行测试。在这种测试方法中,模型的构建、训练和推理过程都是基于深度学习库开展的。如果对模型进行测试时发现了某些缺陷,那么就可以间接推出深度学习库存在缺陷。基于模型的测试方法需要一系列的模型以及这些模型的输入数据,将这些模型在不同的深度学习库中运行,并根据运行的结果来判断深度学习库是否存在缺陷。第二类测试方法是基于深度学习库的接口进行的。深度学习库向用户暴露的是一系列已经封装完善的接口,如果这些接口存在缺陷,那么使用这些接口构建的模型也可能存在缺陷。基于接口的测试方法无需模型的辅助,只需要输入测试样本,并根据运行结果直接判断深度学习库是否存在缺陷。
[0003]与本专利技术最接近的现有方案主要是FreeFuzz方法。FreeFuzz是一种用于深度学习接口的自动化测试方法。它通过从深度学习库文档、深度学习库开发人员测试代码以及深度学习模型三个来源收集与深度学习接口相关的代码,并跟踪每个接口的动态信息,包括参数的类型、值和输入张量的形状,从而形成值空间和参数值空间,并将其存储到数据库中。接着,对每个接口进行模糊测试。模糊测试的具体过程包括从数据库中挑选若干条数据作为种子测试样本,对这些种子测试样本随机选择一条变异策略,并以固定的概率生成新的测试样本,将新生成的测试样本输入深度学习库接口并在不同的后端运行,比较运行结果来判断深度学习库是否存在缺陷。
[0004]模型驱动的方法在触发深度学习库缺陷方面存在一些缺陷。首先,为了更有效地触发深度学习库的缺陷,需要大量的模型。尽管已有的模型在不同的领域和问题上都有着广泛的应用,但这些模型的搭建、训练和推理过程中所涉及的深度学习库代码较为固定。其次,训练模型需要耗费相当长的时间,以获取模型权重和梯度等信息。第三,模型中的缺陷只能间接反映深度学习库的缺陷。如果需要溯源缺陷,则需要检查模型并定位到相应的接口,再检查接口的代码段,才能发现缺陷源头。已有的基于接口的深度学习库测试方法测试效率不高,每个接口需要大量的测试样本才能暴露深度学习库代码存在的缺陷,而且对于被测接口在给定测试输入下的执行结果是否符合预期的判断不够准确。

技术实现思路

[0005]有鉴于此,本专利技术提供了一种基于QL

UE算法与多测试预言的算子缺陷检测方法,能够使测试样本的生成尽可能朝着放大深度学习库接口缺陷的方向发展,在有限的测试样本生成次数中,尽可能多生成有效测试样本,提高测试效率,并且提出新的方法来解决测试预言问题,提高对测试结果判断的准确性,从而减少程序运行时产生的误报。
[0006]实现本专利技术的技术方案如下:
[0007]基于QL

UE算法与多测试预言的算子缺陷检测方法,在实验准备阶段,收集测试用例、算子功能文档描述、参数数据类型的数据,构成多个算子实例,并存入数据库;在实验阶段,取出设定数量算子实例作为输入数据,并将算子实例加入种子队列中;依次从种子队列取出所有算子实例,对算子的参数构建参数空间,包括算子值空间、类型空间与参数值空间,基于所述的三个空间对算子参数进行变异策略的设计,QL

UE算法根据变异策略对算子实例的参数进行变异,得到变异算子实例样本;然后使用相似参数测试、同库差分测试、文档测试三种测试预言方案对算子实例进行测试,生成潜在缺陷文件、成功文件,并对Q表进行更新;通过对潜在缺陷文件进行分析,就有可能发现缺陷;最后判断变异次数是否达到上限,如果没有达到上限,就接着使用QL

UE算法选择变异策略,进行后续工作;如果已经达到上限,选择一定数量的潜在缺陷文件、成功文件进行版本测试与环境测试两种测试预言方案,检测出深度学习库潜在的缺陷。
[0008]进一步地,所述相似参数测试是在设备测试基础上提出的测试预言方案,通过设备测试检测到某个算子存在缺陷,然后寻找与该算子拥有相似参数的算子,并对相似算子进行测试,从而发现相似算子的缺陷;具体过程如下:
[0009]Step1:使用设备测试对算子实例进行测试,如果算子在CPU与GPU上表现行为不一致,就生成一个潜在缺陷文件,后期会对该文件进行分析,检测算子是否存在缺陷;
[0010]Step2:寻找所有与原算子拥有相似参数的其它算子,主要寻找两种类型的算子;第一种是覆盖原算子实例中参数数据类型的相似算子,两个算子需要具备相同的参数数量和顺序,且在每个参数的数据类型上,相似算子都需要包含原算子实例所对应的参数数据类型;第二种是参数总个数多于原算子,必选参数个数少于原算子,数据类型覆盖原算子实例中参数数据类型,这种情况允许删除相似算子的非必选参数,从而实现两个算子的参数完全匹配;
[0011]Step3:将原算子的名称、参数名称替换成相似参数的,参数值保持不变,得到相似算子实例;
[0012]Step4:相似算子实例在CPU与GPU设备上同时运行,将两个运行结果输入到双模态比较器进行比较,以此来发现相似算子是否也存在缺陷。
[0013]进一步地,所述同库差分测试基于设备测试发现某个算子生成了潜在缺陷文件,然后寻找与该算子具备相同功能的新算子,对参数和输入数据都进行替换;新算子在CPU与GPU设备上生成两个结果,将结果输入到双模态比较器进行比较,以此来发现新算子在同样的参数值和输入数据下,是否会暴露出缺陷;
[0014]其中,寻找相同功能的算子具体为:计算所有算子文档描述信息的相似度;当相似度大于指定阈值,初步判断两个算子功能一致;最后对两种方法匹配的结果取并集,每个算子都将得到一个相同功能的算子集合,检查集合内的算子是否符合要求,把功能不同的算子移出集合。
[0015]进一步地,文档测试分为两个部分:第一部分测试文档描述参数的数据类型是否都可以运行;第二部分验证解释器抛出的异常信息中,关于描述参数的数据类型是否与文档中描述的一致;
[0016]解释器会根据不同的触发条件抛出不同的异常信息,为了尽量让异常信息描述的
是关于参数的数据类型信息,先准备一个包含全部数据类型的集合,再对参数的数据类型取差集,得到不是该参数的数据类型集合,替换成这些数据类型去测试算子,就有较大概率抛出和数据类型相关的异常信息。
[0017]进一步地,所述版本测试是对于同一个算子实例,在不同版本的深度学习库上运行,比较它们的结果是否一致,结果一致说明大概率没有缺陷,但也有一定概率是两个版本存在相同缺陷,因此结果一致;结果不一致则需要判断原因是新版本修复了老版本的缺陷,还是新版本引入了新的缺陷,亦或是新版本的算子功能进行了改造。
[0018]进一步地,所述环境测试首先挑本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于QL

UE算法与多测试预言的算子缺陷检测方法,其特征在于,在实验准备阶段,收集测试用例、算子功能文档描述、参数数据类型的数据,构成多个算子实例,并存入数据库;在实验阶段,取出设定数量算子实例作为输入数据,并将算子实例加入种子队列中;依次从种子队列取出所有算子实例,对算子的参数构建参数空间,包括算子值空间、类型空间与参数值空间,基于所述的三个空间对算子参数进行变异策略的设计,QL

UE算法根据变异策略对算子实例的参数进行变异,得到变异算子实例样本;使用相似参数测试、同库差分测试、文档测试三种测试预言方案对算子实例进行测试,生成潜在缺陷文件、成功文件,并对Q表进行更新;通过对潜在缺陷文件进行分析,就有可能发现缺陷;最后判断变异次数是否达到上限,若未达到上限,就接着使用QL

UE算法选择变异策略,进行后续工作;若已达到上限,选择一定数量的潜在缺陷文件、成功文件进行版本测试与环境测试两种测试预言方案,检测出深度学习库潜在的缺陷。2.如权利要求1所述的算子缺陷检测方法,其特征在于,所述相似参数测试是在设备测试基础上提出的测试预言方案,通过设备测试检测到某个算子存在缺陷,然后寻找与该算子拥有相似参数的算子,并对相似算子进行测试,从而发现相似算子的缺陷;具体过程如下:Step1:使用设备测试对算子实例进行测试,如果算子在CPU与GPU上表现行为不一致,就生成一个潜在缺陷文件,后期会对该文件进行分析,检测算子是否存在缺陷;Step2:寻找所有与原算子拥有相似参数的其它算子,主要寻找两种类型的算子;第一种是覆盖原算子实例中参数数据类型的相似算子,两个算子需要具备相同的参数数量和顺序,且在每个参数的数据类型上,相似算子都需要包含原算子实例所对应的参数数据类型;第二种是参数总个数多于原算子,必选参数个数少于原算子,数据类型覆盖原算子实例中参数数据类型,这种情况允许删除相似算子的非必选参数,从而实现两个算子的参数完全匹配;Step3:将原算子的名称、参数名称替换成相似参数的,参数值保持不变,得到相似算子实例;Step4:相似算子实例在CPU与GPU设备上同时运行,将两个运行结果输入...

【专利技术属性】
技术研发人员:单纯王余阳胡立国廖书妍吴沛丰
申请(专利权)人:北京理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1