System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于大语言模型的深度学习编译器模糊测试方法及系统技术方案_技高网

基于大语言模型的深度学习编译器模糊测试方法及系统技术方案

技术编号:40542299 阅读:7 留言:0更新日期:2024-03-05 18:58
本发明专利技术提供一种基于大语言模型的深度学习编译器模糊测试方法及系统,所述方法包括:基于大语言模型生成多段能够调用一个或多个指定深度学习API的代码片段,以构成模糊测试的初始代码种子集合;根据指定深度学习API的文档进行传参的约束提取,得到API约束文件;基于API约束文件对初始代码种子进行变异,得到测试代码片段;通过比较测试代码片段在待测深度学习编译器与参考编译器的编译结果,得到待测深度学习编译器的测试结果。本发明专利技术可以发现深度学习编译器中的漏洞,保证深度学习模型的变异后语义与原始模型相同,进而保障下游应用程序的正确性。

【技术实现步骤摘要】

本专利技术属于计算机,涉及一种基于大语言模型的深度学习编译器模糊测试方法及系统


技术介绍

1、在过去的10年中,深度学习(deep learning,dl)系统被广泛应用于自然语言处理、医疗保健、活动识别和自动驾驶等各种领域,为我们的生活带来的高效和便利。但与此同时,由于深度学习系统内在的不确定性,确保其正确性是极具挑战性的,深度学习系统中的错误会造成严重后果,甚至可能威胁到人类的生命安全。在过去的研究中,研究人员探索了各种技术来测试、分析和验证深度学习模型,因为它们的质量直接影响相应的系统行为。最近,研究人员还提出了测试底层操作符级深度学习库(如tensorflow和pytorch)的新技术,深度学习库为每个高级深度学习操作符提供了通用的二进制实现,是在不同硬件平台上运行深度学习模型的基础。然而,针对新兴的深度学习编译器(又称张量编译器)的可靠性的工作仍然有限,其目的是自动将高级张量计算图直接编译为高性能的二进制文件,以获得比传统操作符级库更好的效率、可移植性和可扩展性。

2、目前,尽管现有的一些模糊测试技术可以用于测试深度学习编译器,但它们不能很好地解析复杂的编译器基础结构,并且也过于粗粒度,无法生成轻量级但有价值的输入,只能发现非常浅层的前端漏洞,其代码覆盖率增长在早期就收敛。同时,由于输入的深度学习程序需要同时满足输入语言(例如python)的语法/语义和张量计算的深度学习api输入/形状约束,传统的模糊测试技术很难有效地处理这样一个具有挑战性的领域。


技术实现思路>

1、本专利技术的目的在于提供一种基于大语言模型的深度学习编译器模糊测试方法及系统,该方法通过使用大语言模型进行深度学习代码生成,并针对深度学习api文档提取api的参数约束,利用约束对生成的代码进行变异,并进行差分测试,从而可以有效地辅助安全分析人员发现深度学习编译器中的漏洞,提高安全人员进行漏洞检测的准确度,并且保障深度学习下游应用的安全性与可靠性。

2、为实现上述目的,本专利技术采用如下技术方案:

3、一种基于大语言模型的深度学习编译器模糊测试方法,包括:

4、基于大语言模型生成多段能够调用一个或多个指定深度学习api的代码片段,以构成模糊测试的初始代码种子集合;

5、根据指定深度学习api的文档进行传参的约束提取,得到api约束文件;

6、基于api约束文件对初始代码种子进行变异,得到测试代码片段;

7、通过比较测试代码片段在待测深度学习编译器与参考编译器的编译结果,得到待测深度学习编译器的测试结果。

8、进一步地,所述基于大语言模型生成多段调用指定深度学习api的代码片段,以构成模糊测试的初始代码种子集合,包括:

9、使用html crawler爬虫自动获取api文档中的api签名;

10、结合tensorflow和pytorch两个不同的指定深度学习库,构造能够调用一个或者多个指定深度学习api的提示prompt;其中,所述提示prompt中包括指定深度学习库和指定深度学习库的api签名,

11、以逐步提示的方式,基于所述提示prompt来引导codex模型进行代码生成,得到生成多段调用指定深度学习api的代码片段。

12、进一步地,所述提示prompt对应的任务包括:导入深度学习库、生成输入数据和调用一个或多个指定深度学习api。

13、进一步地,训练所述codex模型的损失函数其中,n表示令牌训练序列t={t1,t2,…,tn}的长度,ti表示第i个令牌,t<i表示到目前为止生成的令牌序列,p为输出令牌生成概率的codex模型。

14、进一步地,所述根据指定深度学习api的文档进行传参的约束提取,得到api约束文件,包括:

15、从深度学习库的开源文档仓库中,得到约束文档;

16、针对约束文档的注释部分,通过自然语言文本块中的标签进行深度学习api归类后,根据文本块的缩进规范进行参数属性描述文案的提取,得到api约束预处理文件;

17、基于stanford解析库将api约束预处理文件规范化为依赖树后,将所述依赖树分割为子树;

18、通过设计优化问题来识别子树和参数约束之间的最优映射,以得到约束提取规则;

19、根据预设阈值对约束提取规则进行筛选,将获取的频繁树约束集合作为置信度较高的约束提取规则;

20、在对一个指定深度学习api进行约束提取时,生成该指定深度学习api的解析树,将所述置信度较高的约束提取规则中的树模式与所述指定深度学习api的解析树进行匹配,将匹配结果映射到相应抽象约束中,并结合该指定深度学习api描述的上下文实例化,得到该指定深度学习api的api约束文件。

21、进一步地,所述api约束文件包含参数的数据结构约束、数据类型约束、参数形状约束、有效值范围约束以及指定深度学习api的上下文信息约束。

22、进一步地,所述变异包括:符合约束的变异和违背约束的变异;其中,所述符合约束的变异是指所有变异的参数都满足提取的结构、数据类型、形状和有效值约束,所述违背约束的变异是指随机选择一个参数并违反该参数一个或多个相关约束的值进行变异。

23、进一步地,所述基于api约束文件对初始代码种子进行变异,得到测试代码片段,包括:

24、对初始代码种子进行maxiter次变异,每次迭代iteration中进行一次变异;

25、在进行符合约束的变异时,如果api约束文件中指定了具体的值,则该次变异从该具体的值中进行选择,否则,从api约束文件中指定的dtype列表中选择一个dtype,并根据api约束文件创建一个形状;

26、在进行违背约束的变异时,随机选择一个参数并违反该参数一个或多个相关约束的值进行变异;其中,针对违背约束变异的参数以外的其它参数,可以在后续迭代中进行符合约束的变异或违背约束的变异;

27、对变异后代码片段进行模糊测试,根据对待测深度学习编译器的代码覆盖率设计适应度函数,并根据该变异后代码片段的适应度得分,通过softmax操作,作为后续进行变异选择的概率。

28、进一步地,所述通过比较测试代码片段在待测深度学习编译器与参考编译器的编译结果,得到待测深度学习编译器的测试结果,包括:

29、将测试代码片段在待测深度学习编译器上运行,得到第一运行结果;

30、将测试代码片段在参考编译器上运行,得到第二运行结果;

31、计算第一运行结果与第二运行结果之间的差距,并当差距大于阈值则进行人工审查阶段,否则判定该测试代码片段没有发现待测深度学习编译器的漏洞;

32、在人工审查阶段分析导致运行结果差异较大的具体代码位置,若确定为待测深度学习编译器存在bug,通过github上报给待测深度学习编译器开发者,若被开发者接受则认为发现待测深度学习编译器本文档来自技高网...

【技术保护点】

1.一种基于大语言模型的深度学习编译器模糊测试方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述基于大语言模型生成多段调用指定深度学习API的代码片段,以构成模糊测试的初始代码种子集合,包括:

3.根据权利要求2所述的方法,其特征在于,所述提示prompt对应的任务包括:导入深度学习库、生成输入数据和调用一个或多个指定深度学习API。

4.根据权利要求2所述的方法,其特征在于,训练所述Codex模型的损失函数其中,n表示令牌训练序列T={t1,t2,…,tn}的长度,ti表示第i个令牌,T<i表示到目前为止生成的令牌序列,P为输出令牌生成概率的Codex模型。

5.根据权利要求1所述的方法,其特征在于,所述根据指定深度学习API的文档进行传参的约束提取,得到API约束文件,包括:

6.根据权利要求1所述的方法,其特征在于,所述API约束文件包含参数的数据结构约束、数据类型约束、参数形状约束、有效值范围约束以及指定深度学习API的上下文信息约束。

7.根据权利要求1所述的方法,其特征在于,所述变异包括:符合约束的变异和违背约束的变异;其中,所述符合约束的变异是指所有变异的参数都满足提取的结构、数据类型、形状和有效值约束,所述违背约束的变异是指随机选择一个参数并违反该参数一个或多个相关约束的值进行变异。

8.根据权利要求7所述的方法,其特征在于,所述基于API约束文件对初始代码种子进行变异,得到测试代码片段,包括:

9.根据权利要求1所述的方法,其特征在于,所述通过比较测试代码片段在待测深度学习编译器与参考编译器的编译结果,得到待测深度学习编译器的测试结果,包括:

10.一种基于大语言模型的深度学习编译器模糊测试系统,其特征在于,所述系统包括:

...

【技术特征摘要】

1.一种基于大语言模型的深度学习编译器模糊测试方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述基于大语言模型生成多段调用指定深度学习api的代码片段,以构成模糊测试的初始代码种子集合,包括:

3.根据权利要求2所述的方法,其特征在于,所述提示prompt对应的任务包括:导入深度学习库、生成输入数据和调用一个或多个指定深度学习api。

4.根据权利要求2所述的方法,其特征在于,训练所述codex模型的损失函数其中,n表示令牌训练序列t={t1,t2,…,tn}的长度,ti表示第i个令牌,t<i表示到目前为止生成的令牌序列,p为输出令牌生成概率的codex模型。

5.根据权利要求1所述的方法,其特征在于,所述根据指定深度学习api的文档进行传参的约束提取,得到api约束文件,包括:

6.根据权利要求1...

【专利技术属性】
技术研发人员:李志远吴敬征凌祥陈驰罗天悦武延军
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:

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

1