System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于软件测试领域,涉及到一种用于加速深度学习编译器测试的技术,具体为一种基于强化学习的深度学习编译器测试加速方法。
技术介绍
1、深度学习编译器在现代深度学习技术中发挥着关键的作用。随着深度学习模型日益复杂,传统的解释执行方式已经无法满足性能和效率的需求。深度学习编译器(例如tvm,glow,ngraph)的出现,使得深度学习模型可以被优化并转换为针对特定硬件平台的高效代码,从而实现高性能和低能耗的计算。但是,如果深度学习编译器本身存在错误的逻辑处理或数值计算不准确,可能导致错误的模型编译结果,在很多领域尤其是涉及到安全问题的领域中(例如自动驾驶,航空航天等)会带来灾难性的后果。
2、因此,确保深度学习编译器的质量是至关重要的。为了能够全面的测试深度学习编译器,现有的深度学习模型生成工具(例如nnsmith、hirgen、gencog)通过生成大量的深度学习模型进行深度学习编译器的测试,发现潜在的错误。然而,并不是所有的测试用例都具备发现潜在的深度学习编译器错误的能力,并且存在多个测试用例发现相同错误的情况,导致在测试过程中造成资源的浪费。所以,必须提高深度学习编译器的测试效率。提高深度学习编译器的测试效率不仅能更快发现编译器的潜在错误,保证安全性,还能节约空间和时间开销。编译过程中的代码覆盖率信息,一定程度上可以体现出模型检测错误的能力。可利用覆盖率信息,引导深度学习模型生成工具生成更有可能发现潜在错误的测试模型,实现深度学习编译器测试的加速。
3、现有的一些相关专利技术专利中,如基于机器学习
技术实现思路
1、为解决上述问题,本专利技术提供了一种基于机器学习的深度学习编译器测试加速方法。通过预测模型在使用深度学习编译器编译过程中的不同模块的代码覆盖率,使用强化学习算法促进深度学习模型生成工具探索新的覆盖率生成更有价值的测试模型,进而提高深度学习编译器测试的效率。
2、本专利技术的技术方案:
3、一种基于强化学习的深度学习编译器测试加速方法,由特征提取、多回归覆盖率模型、强化学习引导模型生成和编译器测试四个模块组成。其中,特征提取模块负责从收集到的深度学习模型进行特征分析,提取深度学习模型的节点特征和边特征,并收集模型编译过程中的不同模块的覆盖率作为阶段的目标结果;多回归覆盖率模型利用提取出来的特征信息和覆盖率进行训练,该模型负责从模型的特征信息中预测该模型在编译过程中的模块覆盖率;强化学习引导模型生成是本专利技术中的核心模块,主要负责利用强化学习算法和覆盖率模型,使深度学习模型生成工具具有主动探索并生成具备高模块覆盖率的模型用于编译器的测试;编译器测试模块负责利用生成的深度学习模型进行编译器测试,发现潜在的编译器错误。具体步骤如下:
4、步骤1:收集深度学习模型,构建数据集;
5、收集的深度学习模型中,一部分模型利用深度学习模型生成工具随机生成;另一部分模型从github中的开源项目onnx_model_zoo中选择,onnx_model_zoo汇集了当前最优的各类深度学习预训练模型。收集的深度学习模型均以onnx(open neural networkexchange)格式保存。
6、步骤2:onnx模型特征提取;
7、用于深度学习编译器测试的深度学习模型,可以看作是有向的计算图。通过手动研究大量深度学习模型之后,可将深度学习模型识别为两类特征。第一类特征是节点特征,包括深度学习模型中每个节点的各种属性。不同的节点类型涉及到不同的代码覆盖信息。因此,节点属性可以用于预测测试模型在编译过程中的代码覆盖率。具体而言,节点类型分为以下两类:
8、1)算子类型:节点的算子类型是最基本也是最关键的特征,它描述了节点执行的操作,如卷积,池化,全连接等。不同的算子类型对应于不同的数学运算或逻辑处理,涉及到不同的编译器代码。
9、2)数据类型:不同的数据类型可能会触发不同的代码路径。具体来说,节点的数据类型特征包含两类:标量类型:如整型、浮点型、布尔型。张量类型:多维数组,常用于表示深度学习中的数据和参数,其类型可以是浮点型张量、整型张量。
10、第二类特征是边特征,在深度学习模型中,边特征是一种重要的表示方式,它用于描述模型中不同节点之间的连接关系。这些边特征对于表达深度学习模型中的计算逻辑和数据流至关重要,因为不同的节点组合会涉及到不同的计算操作,从而影响代码的覆盖率。具体而言,每一组边特征包含入节点和出节点的属性。通过细致地描述这些边特征,可以更准确地捕捉模型的结构和行为,从而为模型的分析和优化提供更丰富的信息。
11、步骤3:收集训练集中的模型使用深度学习编译器进行编译时的代码覆盖率;
12、在onnx模型输入深度学习编译器进行编译的过程中,通过python中的coverage库方法,可以捕获onnx模型在编译过程中的深度学习编译器代码覆盖率报告,该覆盖率报告包括模型在编译的过程中对深度学习编译器中所有的方法的覆盖情况。然后,对覆盖率情况进行统一处理,按照深度学习编译器源码中的模块划分,计算模型在编译过程中对每个模块的覆盖率。因为深度学习编译器的错误大多与各阶段的优化相关,因此,选用对应的模块覆盖信息将作为多回归模型的目标任务用于训练。
13、步骤4:训练多回归覆盖率预测模型;
14、结合步骤2中提取的模型特征和步骤3中的模块覆盖率结果,训练多回归覆盖率预测模型。考虑到深度学习模型中包含多种类型的节点和边,因此使用异构图卷积神经网络(heterogeneous graph convolutional neural network,hgcn)构建覆盖率预测模型。
15、异构图卷积神经网络是一种用于处理异构图数据的深度学习模型。在构建异构图数据的表示时,可以将其表示为一个r+1维的张量,其中r维对应不同类型的边,另一维对应节点。每一维对应于一种边的类型,每条边的本文档来自技高网...
【技术保护点】
1.一种基于强化学习的深度学习编译器测试加速方法,其特征在于,所述的步骤主要由特征提取、多回归覆盖率模型、强化学习引导模型生成和编译器测试四个模块组成;其中,特征提取模块负责从收集到的深度学习模型进行特征分析,提取深度学习模型的节点特征和边特征,并收集模型编译过程中的不同模块的覆盖率作为阶段的目标结果;多回归覆盖率模型利用提取出来的特征信息和覆盖率进行训练,该模型负责从模型的特征信息中预测该模型在编译过程中的模块覆盖率;强化学习引导模型生成是本专利技术中的核心模块,主要负责利用强化学习算法和覆盖率模型,使深度学习模型生成工具具有主动探索并生成具备高模块覆盖率的模型用于编译器的测试;编译器测试模块负责利用生成的深度学习模型进行编译器测试,发现潜在的编译器错误;具体步骤如下:
2.根据权利要求1所述的一种基于强化学习的深度学习编译器测试加速方法,其特征在于,节点类型分为以下两类:
【技术特征摘要】
1.一种基于强化学习的深度学习编译器测试加速方法,其特征在于,所述的步骤主要由特征提取、多回归覆盖率模型、强化学习引导模型生成和编译器测试四个模块组成;其中,特征提取模块负责从收集到的深度学习模型进行特征分析,提取深度学习模型的节点特征和边特征,并收集模型编译过程中的不同模块的覆盖率作为阶段的目标结果;多回归覆盖率模型利用提取出来的特征信息和覆盖率进行训练,该模型负责从模型的特征信息中预测该模型...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。