【技术实现步骤摘要】
一种TensorFlow程序漏洞检测方法、装置及电子设备
本专利技术涉及漏洞检测领域,具体涉及一种TensorFlow程序漏洞检测方法、装置及电子设备。
技术介绍
深度学习已在工业中得到了广泛应用。有了开源框架,开发者们就可有效地为各个领域的应用设计新的深度学习模型(例如图像识别、自然语言处理、自动驾驶汽车等)。为帮助开发者们有效测试和训练模型,企业已搭建了各种专门的平台(例如谷歌云人工智能、微软Azure机器学习、AmazanSageMake等)。这些平台都拥有丰富的计算资源,包括GPU和人工智能加速器,每天都运行着数以千计的深度学习任务。与其他软件一样,深度学习程序也会产生漏洞。在现实工业环境中,这些漏洞会导致任务失败并造成时间和资源浪费。关于如何解决深度学习程序错误,目前已开展了多项研究。比如,Zhang等人在微软的Philly平台上对深度学习中的失败任务程序进行了广泛的实证研究。Sifis等人开发了一种新的静态分析方法来检测TensorFlow程序中的形状错误。通过静态分析检测“形状错误”漏洞时,需要在数据日志中对张量算子建模,将张量形状推导为具体的形状。因此,静态分析方法对于程序中已知的形状,可有效地检测出形状漏洞。但是,根据对工业TensorFlow应用的研究,在很多情况下,并不能完全得到张量的秩或维度大小,也即,不能得到完整的形状信息,此时,静态分析检测就无法有效完成形状漏洞的检测。
技术实现思路
有鉴于此,本专利技术实施例提供了一种TensorFlow程序漏洞检测方法、装置 ...
【技术保护点】
1.一种TensorFlow程序漏洞检测方法,其特征在于,包括如下步骤:/n遍历每一条程序路径,并根据每一条程序路径构建形状流图,所述形状流图表征程序中函数的调用关系以及张量信息的传递过程,所述张量信息包括未知张量信息;/n根据所述形状流图,建立约束关系式;/n根据目标约束求解器,对所述约束关系式进行求解,得到求解结果,根据所述求解结果,得到相应的检测结果。/n
【技术特征摘要】
1.一种TensorFlow程序漏洞检测方法,其特征在于,包括如下步骤:
遍历每一条程序路径,并根据每一条程序路径构建形状流图,所述形状流图表征程序中函数的调用关系以及张量信息的传递过程,所述张量信息包括未知张量信息;
根据所述形状流图,建立约束关系式;
根据目标约束求解器,对所述约束关系式进行求解,得到求解结果,根据所述求解结果,得到相应的检测结果。
2.根据权利要求1所述的方法,其特征在于,所述根据每一条程序路径构建形状流图,包括:
通过赋值或参数传递规则以及节点属性,对所述目标调用函数向后切片,得到所述程序路径上的调用关系;
采集所述调用关系之间的形状信息;
根据所述程序路径上的调用关系以及所述调用关系之间的形状信息,构建所述形状流图。
3.根据权利要求1所述的方法,其特征在于,所述根据所述形状流图,建立约束关系式,包括:
提取所述形状流图中的每一个张量运算符和/或标量指令;
根据所述张量运算符和/或标量指令,得到相应约束关系;
根据所述约束关系,形成约束关系式。
4.根据权利要求3所述的方法,其特征在于,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:
当张量T的秩为常数C,具体化张量T时,相应约束关系为:
其中,T[i]为第i个形状维度的大小,|T|为T的元素总数量,T[-1]为T的最后一个形状维度的大小,T[c-1]为T的C-1个形状维度的大小,为T的秩。
5.根据权利要求4所述的方法,其特征在于,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:
当所述张量运算符为Y=reshape(A,B)时,所述约束关系为:
其中,Y[i]表征张量的第i维形状,Bi表征矢量B的第i个元素的数值,表征张量的秩,|B|表征张量B的元素数量,|A|表征张量A的元素数量,concretize(Y,|B|)表征通过|B|实现对张量Y的具体化。
6.根据权利要求4所述的方法,其特征在于,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:
当所述张量运算符为Broadcast(D,E,Fi,j)时,所述约束关系为:
((D[i]==E[j])∧(F[i]==D[i]))∨((D[i]==1)∧(F[i]==E[j]))∨((E[j]==1)∧F[i]==D[i]);
其中,D[i]表示张量D的第i维度大小,E[j]表示张量E的第j维度大小,F[i]表示张量F的第i维度大小。
7.根据权利要求6所述的方法,其特征在于,所述根据所述张量运算符和/或标量指令,得到...
【专利技术属性】
技术研发人员:刘晨,陆杰,李昊峰,李炼,
申请(专利权)人:北京中科天齐信息技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。