CN111563578A - 基于TensorFlow的卷积神经网络故障注入系统 - Google Patents
基于TensorFlow的卷积神经网络故障注入系统 Download PDFInfo
- Publication number
- CN111563578A CN111563578A CN202010349927.1A CN202010349927A CN111563578A CN 111563578 A CN111563578 A CN 111563578A CN 202010349927 A CN202010349927 A CN 202010349927A CN 111563578 A CN111563578 A CN 111563578A
- Authority
- CN
- China
- Prior art keywords
- error
- layer
- injection
- neural network
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/263—Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Abstract
本发明公开了一种基于TensorFlow的卷积神经网络故障注入系统,包括训练模块、注错模块和解析模块;训练模块用于获取目标神经网络参数,计算神经网络内部网络层浮点数运算次数,生成神经网络模型,以及训练所生成的神经网络模型;注错模块用于执行注错任务,包括网络层输入注错、权重注错和全局注错;解析模块用于根据注错任务的执行结果,分析被测试神经网络内在网络层的滤错能力、整体错误恢复能力和权重参数对神经网络的影响。本发明基于网络层浮点数运算次数实现权重注错、网络层输入注错和计算注错,使得故障注入系统能模拟不同的硬件平台的故障注入。
Description
技术领域
本发明涉及可靠性测试技术领域,具体涉及一种基于TensorFlow的卷积神经网络故障注入系统。
背景技术
深度学习系统在处理各种复杂的现实生活问题方面显示出非比寻常的性能。尤其,卷积神经网络(CNN)在图像识别领域展现出了广阔的市场前景,被广泛应用于自动驾驶、航天航空领域等安全相关的领域。然而,在这些应用场景中,复杂的辐照环境会造成CNN网络工作异常,因此,对于CNN网络的可靠性测试是必不可少的一个步骤。
按错误模型,现有的CNN网络错误注入方式主要有两类,静态错误注错和瞬态错误注错。对于前者,按具体实现方式,可以分为网络层输入注错和权重注错,它们的研究对象为SRAM中的错误。传统的注错中,这两种方式主要采取随机注错,例如,在权重注错中,某层网络的权重错误的概率由本层权重数量占总的权重数量的比率决定。然而,在实际工作中,SRAM中错误的出现是一个时间积累的过程,换言之,只有在数据使用结束前出现的错误才会对CNN网络造成影响,所以,随机注错会造成靠前的网络层的注错结果偏离实际的结果,越是靠前,结果误差越大。对于后者,它的研究对象主要是处理器,常用的注错方式是基于硬件平台的指令级注错。然而,不同的处理器的指令执行周期是不同的,其中包括了乘法指令和加法指令,而在CNN网络中,80%以上的执行指令为加法指令和乘法指令,所以,这种注错方式的注错结果只适用于对应的硬件平台,换言之,对于不同的硬件平台的瞬态错误注错,需要对应的不同的硬件故障注入系统才能完成。
发明内容
本发明的目的是提供一种基于TensorFlow的卷积神经网络故障注入系统,通过网络层的浮点数运算次数(FLOPs),合理地分配故障注入点,更加精准地模拟软错误对神经网络的影响。
本发明采取的技术方案为:
基于TensorFlow的卷积神经网络故障注入系统,包括训练模块、注错模块和解析模块;
所述训练模块用于获取目标神经网络参数,以及基于目标神经网络参数计算神经网络内部网络层浮点数运算次数,生成神经网络模型,以及基于目标神经网络参数训练所生成的神经网络模型并保存;
所述注错模块用于基于训练所得的神经网络模型执行注错任务,包括网络层输入注错、权重注错和全局注错;
所述解析模块用于根据注错任务的执行结果,分析注错结果并导出;所述注错结果包括被测试神经网络内在网络层的滤错能力、整体错误恢复能力和权重参数对神经网络的影响。
进一步的,所述训练模块具体用于,
判断目标神经网络模型是否已经存在,如果存在,则直接调用注错模块;否则,从注错任务配置文件中读取目标神经网络参数文件,并解析神经网络参数。
进一步的,所述训练模块具体用于,
FLOPsc=(Pa+Pm)*(Ci*K*K)*H*W*Co
FLOPsf=(Pa+Pm)*(inputs)*outputs
FLOPsm=Pcmp*H*W*K*K*Co
FLOPsa=Pactivate*inputs
pwai=TPi*pwi
其中,Pa表示完成一次加法使用的指令周期,Pm表示完成一次乘法使用的指令周期,Pcmp表示完成一次比较的指令周期,Pactivate表示完成一次激活函数的指令周期,Ci代表输入数据的通道数量,H代表输入数据的高度,W代表输入数据的宽度,Co代表输出数据的通道数量,K代表卷积核的尺寸大小,inputs代表输入数据的节点数量,outputs代表输出数据的节点数量,FLOPsc表示卷积网络的浮点数运算次数,FLOPsf表示全连接层的浮点数运算次数,FLOPsm表示最大池化层的浮点数运算次数,FLOPsa表示激活层的浮点数运算次数,pi表示第i层网络的错误率,FLOPsi表示对应网络层的浮点数运算次数,n表示神经网络的深度,TPi表第i层网络的时间占空比,pwi表示第i层网络的权重错误率,wi表示第i层的权重参数数量,pwai表示第i层网络的有效权重错误率。
进一步的,所述注错模块具体用于,
获取预先训练好的神经网络模型,并获取注错空间;
基于注错空间中的注错模式,生成对应的注错列表;所述注错列表中的每一条列表表示一个错误注入点表示为<layer,position,fault_model>,其中,fault_model表示错误类型,layer和position分别表示注错的网络层和对应的位置;
基于注错列表,对神经网络逐条执行注错任务。
进一步的,对于网络层输入注错,注错空间为对应网络层的输入集合;对于权重注错,注错空间为对应区域的权重集合;对于计算注错,注错空间为神经网络中神经元计算的集合。
进一步的,所述错误类型包括:单位翻转,双位翻转和多位翻转。
进一步的,
对于网络层输入注错,分为全局的网络层输入注错和单层输入注错,对于单层输入注错,layer从注错任务配置文件中的fault_layer获取对应层的输入注错;对于全局的网络输入注错,layer的取值范围为神经网络中的所有网络,注入的错误会交叉的分配到不同的网络层输入,每层网络被错误击中的概率为pi;两种类型的position均从输入数据中随机选择;
对于权重注错,分为单层权重注错和全局权重注错,对于单层权重注错,layer从注错任务配置文件中的fault_area获取对应层的权重注错,每层网络的权重错误数由注错任务配置文件中的fault_rate确定;对于全局权重注错,layer的取值范围为神经网络中的所有网络,每层网络的错误击中率为pwai;两种类型的position均从对应层的权重参数中随机选择;
对于计算注错中,layer的取值范围为神经网络中的所有网络,每层网络被错误击中的概率为pi,position从对应层的神经元中随机选择。
进一步的,所述注错模块具体用于,
执行权重注错中,每执行一条注错列表,首先使用新的输入数据,恢复神经网络模型,生成无错结果,再用新的错误权重空间覆盖神经网络,推理并保存结果;
执行网络层输入注错中,每执行一条注错列表,首先使用新的输入数据,生成无错的推理结果,再基于注错子列表,逐层执行注错,推理并保存结果;
执行计算注错中,每执行一条注错列表,首先使用新的输入数据,生成无错的推理结果,再基于注错子列表,逐层执行注错,推理并保存结果。
进一步的,所述解析模块具体用于,
计算交叉熵平均差值ΔLoss和不匹配度量Mismatch:
其中,Lg和Li分别对应同一数据的无注入错误情况下的结果交叉熵和注入错误情况下的结果交叉熵,N表示注错的次数,critical_SDC_num表示分类错误次数,H(pr,q)为交叉熵的计算公式,m表示神经网络中分类的数量,pr代表正确概率值,q代表预测概率值,SDCi表示第i层网络的输出被污染的次数,SDC_ratei表示在错误的干扰下,第i层网络输出被污染的概率;
在权重注错中,对于单层权重注错,ΔLoss和Mismatch用来评估网络层内部参数对卷积神经网络可靠性的影响;对于全局权重注错,ΔLoss和Mismatch用来评估误码率对卷积神经网络可靠性的影响;
在网络层输入注错中,对于单层输入注错,ΔLoss和Mismatch用来评估网络层内部参数对滤错能力的影响;对于全局的网络层输入注错,ΔLoss和Mismatch用来评估不同拓扑结构的卷积神经网络对SRAM中非权重参数的错误的容错能力,采用SDC_ratei表示SRAM中的错误在卷积神经网络中的传播情况,找出网络中最脆弱的层;
在计算注错中,ΔLoss和Mismatch用来评估卷积神经网络对软错误的容错能力,采用SDC_ratei表示软错误在卷积神经网络中的传播规律,找出网络中最脆弱的层。
本发明的有益效果为:
本发明所提出的基于TensorFlow的卷积神经网络故障注入系统,在理想情况下,能部署在所有支持Python3.5.x和TensorFlow1.5.以上的系统平台上,对于CNN网络,无需考虑它的权重类型、输入数据类型、网络层的拓扑结构,可根据要求自定义。
本发明是在应用层实现注入故障,不受硬件限制,能实现多种注错方式和模型;注错方式包括:权重注错、网络层输入注错和计算注错;注错模型包括单位翻转、多位翻转。
本发明基于FLOPs实现权重注错、网络层输入注错和计算注错,对于权重注错和网络层输入注错,引入FLOPs的影响,将时间因素对注错结果的影响考虑了进去,在FLOPs计算中,引入了指令执行周期的影响,使得故障注入系统能模拟不同的硬件平台的故障注入。
附图说明
图1所示为本发明的基于TensorFlow的卷积神经网络故障注入系统的结构示意图。
图2所示为本发明的故障注入系统中训练模块的流程示意图。
图3所示为本发明的故障注入系统中注错模块的流程示意图。
图4所示为本发明的计算注错修改计算单元的示意图。
图5所示为本发明的一种CNN网络关于误码率的注错结果。
图6所示为本发明的一种CNN网络的错误传播。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步详细的解释说明,但应当理解为本发明的保护范围并不受具体实施方式的限制。
本发明的发明构思为:TensorFlow能部署于各类服务器和电脑终端,并提供主流的神经网络接口,因此,不但能解决跨平台的问题,还易于实现CNN网络。对于CNN网络,网络层的时间复杂度和它的算法复杂度正相关,即浮点数运算次数(FLOPs)。在权重注错和网络层输入注错中,引入FLOPs的相关公式,使得注错结果受到相关的时间因素的影响,更加逼近真实环境中SRAM错误的影响。在FLOPs的计算中,引入指令执行周期的影响,使故障注入系统独立于硬件,能模拟不同硬件平台的故障注入。
参见图1,本发明提供一种基于TensorFlow的卷积神经网络故障注入系统,包括训练模块、注错模块和解析模块。
用户向故障注入系统送入注错任务配置文件,注错任务配置文件包含神经网络参数文件存放地址、注错模式(包括输入层注错,权重注错和计算注错)、故障模型(包括单位翻转,双位翻转和多位翻转)、错误率(应用于权重注错模式,代表权重空间的错误率)、故障数量、注错执行总次数、训练完成后神经网络模型的存放地址和注错结果存放地址等。下面给出任务配置文件的示例:
task_config为任务配置文件的json形式。其中,mode代表注错模式,以整数表示,1表示输入层注错,2表示权重注错,3表示计算注错;fault_model表示错误模型,以字符串表示,singble_bit_flip表示单位翻转,double_bit_filp表示双位翻转,multi_bit_flip表示多位翻转;fault_rate是错误率,以浮点数表示,应用于权重注错模式,代表权重空间的错误率,例如0.01,代表对权重空间1%的参数注错;fault_nums是错误数,应用于网络层输入注错和计算注错,代表每次注错中注入的错误数量;fault_area用于权重注错,表示对哪部分的权重参数注错,以整数表示,0代表对所有权重参数注错,大于1表示对对应的网络层的权重参数注错,例如,1表示对第一层的权重参数注错,其次,对于没有权重参数的网络层,则跳过;fault_layer用于输入注错,表示对哪一层网络的输入注错,以整数表示,例如,0表示对所有的网络层的输入注错,1表示对第一层的输入注错;injection_times表示注错执行的总次数,例如1000,代表执行1000次对应模式的注错;data_path表示注错采用的数据集;model_cfg_path表示注错目标神经网络的参数文件存放地址,这个文件用于生成模型和计算FLOPs;saved_model_path表示训练完成后神经网络模型的存放地址,这个模型用于注错;results_path表示注错结果的存放地址,这个结果文件由解析模块统计注错结果后导出。
基于注错任务配置文件,故障注入系统会依次调用训练模块、注错模块和解析模块。
训练模块用于获取目标神经网络参数、计算FLOPs、生成神经网络模型、训练神经网络和保存神经网络权重参数。
注错模块用于进行网络层输入注错、权重注错和全局注错。
解析模块用于分析注错结果和导出目标测试神经网络的分析报告,分析报告包含目标测试神经网络内在网络层的滤错能力、整体错误恢复能力和权重参数对神经网络的影响。
如图2所示,训练模块首先判断目标神经网络模型是否已经存在,如果存在,就直接结束,调用注错模块;否则,读取model_cfg_path指定的神经网络的参数文件,并解析神经网络参数,以供计算FLOPs和训练使用。以下给出神经网络的参数文件示例:
[input]
input_shape=28,28,1
[conv]
filter_num=8
strides=1
filter_size=3
padding=same
[activation]
activation=relu
[maxpooling]
pool_size=2
padding=valid
strides=1
[flatten]
[dense]
outputs=256
[activation]
activation=softmax
参数文件采用.ini格式存放。[input]标识神经网络的输入,input_shape表示输入的维度尺寸;[conv]标识卷积网络层,filter_num标识卷积核数量,strides标识步长,filter_size标识卷积核尺寸,padding标识填充方式,支持valid和same;[maxpooling]标识最大池化层,pool_size是池化层的窗口大小,[flatten]是转化层,将多维数据转化为1维数据,使得数据可以被全连接层使用;[activation]标识激活函数层,activation标识激活函数,目前支持linear、relu、selu、sigmoid、softmax、tanh、softplus和softsign等主流激活函数。
解析完神经网络的参数后,将计算内部网络层对应的FLOPs,这些参数用于计算对应网络层的错误率。
以下给出计算方式:
FLOPsc=(Pa+Pm)*(Ci*K*K)*H*W*Co (1)
FLOPsf=(Pa+Pm)*(inputs)*outputs (2)
FLOPsm=Pcmp*H*W*K*K*Co (3)
FLOPsa=Pactivate*inputs (4)
pwai=TPi*pwi (8)
上述公式(1)-(4)中,Pa表示完成一次加法使用的指令周期,Pm表示完成一次乘法使用的指令周期,Pcmp表示完成一次比较的指令周期,Pactivate表示完成一次激活函数的指令周期,默认都为1,可根据需要自定义,这些操作消耗的指令周期可以查询对应芯片的汇编资料计算得到;Ci代表输入数据的通道数量;H代表输入数据的高度;W代表输入数据的宽度;Co代表输出数据的通道数量;K代表卷积核的尺寸大小;inputs代表输入数据的节点数量;outputs代表输出数据的节点数量;FLOPsc表示卷积网络的FLOPs;FLOPsf表示全连接层的FLOPs;FLOPsm表示最大池化层的FLOPs;FLOPsa表示激活层的FLOPs。
在公式(5)中,pi=表示第i层网络的错误率;FLOPsi表示对应网络层的FLOPs,根据网络类型,选择公式(1)-(4)中的其中一项计算;分母表示神经网络中所有网络层的FLOPs的和,n表示神经网络的深度。
公式(6)-(8)中,TPi表第i层网络的时间占空比;pwi表示第i层网络的权重错误率;wi表示第i层的权重参数数量;pwai表示第i层网络的有效权重错误率。
FLOPs计算完毕后,基于神经网络的参数,调用TensorFlow提供的接口生成神经网络模型;接着训练神经网络;训练完毕后,将训练好的神经网络模型和相关的FLOPs值保存至saved_model_path指定的地址。
下面给出伪代码表示形式:
ifnot exist(saved_model_path):#判断模型是否已经存在
cfg=parse(model_cfg_path)#解析神经网络参数
FLOPS_Map=ca1_FLOPs(cfg)#计算FLOPs,以Map的形式保存
model=create_model(cfg)#按照神经网络数生成模型
trained_model=train(model)#训练神经网络模型
save(trained_model,FLOPS_Map,saved_model_path)#根据任务配置文件的参数,将神经网络模型和相关的FLOPs保存
next_step()#进入注错模块
训练模块结束后,进入注错模块,如图3所示。在注错模块中,首先,获取预先训练好的神经网络模型,并获取注错空间。对于网络层输入注错,注错空间为对应网络层的输入集合;对于权重注错,注错空间为对应区域的权重集合;对于计算注错,注错空间为神经网络中神经元计算的集合。接着,基于注错模式,生成对应的注错列表。对于这个注错列表,它的长度由injection_times决定,在这个列表内,它的每个元素也是一条列表,称为子列表,以示区分。在这子列表内,包含n个元素,这里称为子元素,对于权重注错,这个n由fault_rate和权重参数总数相乘得到;对于输入注错和计算注错,这个n由fault_nums决定。
每个子元素表示一个错误注入点,表示为<layer,position,fault_model>。其中,fault_model由任务配置文件中的fault_model决定;layer和position分别表示注错的网络层和对应的位置。例如,<5,6,single_bit_flip>,对于网络层输入注错,表示对第5层网络的第6个输入注入单位翻转错误;对于权重注错,表示对第5层网络的第6个权重参数注入单位翻转错误;在计算注错中,表示对第5层网络的第6个计算单元注入单位翻转错误。
在网络层输入注错中,分为全局的网络层输入注错(fault_layer=0)和单层输入注错(fault_layer>0),position从输入数据中随机选择。对于单层输入注错,layer由fault_layer确定,表示对对应层的输入注错;对于全局的网络输入注错,layer的取值范围为神经网络中的所有网络,注入的错误会交叉的分配到不同的网络层输入,每层网络被错误击中的概率由公式(5)确定,例如,第一层的错误率为0.5,注入10个错误,理论上,落入第一层的错误为5个。
在权重注错中,分为单层权重注错(fault_area>0)和全局权重注错(fault_area=0)。对于单层权重注错,layer由fault_area确定,表示对对应层的权重注错,每层网络的权重错误数由fault_rate确定,例如,fault_rate为0.5,第一层网络的权重参数为10,则第一层的权重错误数为5;对于全局权重注错,layer的取值范围为神经网络中的所有网络,每层网络的错误击中率由公式(8)决定,例如,注入错误数为10,第一层网络的有效权重错误率为0.1,理论上,第一层网络实际读取到的错误数为1个;对于position,无论是单层权重注错还是全局权重注错,position是从对应层的权重参数中随机选择。
在计算注错中,layer的取值范围为神经网络中的所有网络,position是从对应层的神经元中随机选择,至于每层网络被错误击中的概率由公式(5)确定。
基于注错列表,系统会对神经网络注错。每次注错,会读取下一条注错子列表,然后将神经网络恢复至无错状态,然后,基于注错子列表的内容执行具体的注错动作。注错完成后,保存注错结果,以此反复执行,直至耗尽所有的注错子列表。由于网络层输入注错、权重注错和计算注错的实现方式不一致,下面分别以伪代码的形式说明。
上面是关于权重注错的伪代码说明。权重注错中,1)读取无错的神经网络模型,2)获取对应神经网络的权重空间,3)基于任务配置文件和权重空间,生成对应注错列表,4)基于注错列表,执行注错,每次注错中,会使用新的输入数据,恢复神经网络模型,生成无错结果,再用新的错误权重空间覆盖神经网络,然后推理,保存推理结果。
上面是关于网络层输入注错的伪代码说明。输入注错中,1)读取无错的神经网络模型,2)获取对应神经网络的网络层集合,3)基于任务配置文件和网络层集合,生成对应注错列表,4)基于注错列表,执行注错,每次注错中,会使用新的输入,由于没有修改神经网络参数,因此,这里不需要恢复神经网络模型。接着,生成无错的推理结果,然后,基于注错子列表,逐层执行注错。推理完毕后,保存结果。
上面是关于计算注错的伪代码说明。在TensorFlow中,数据的操作是以计算图的形式表现的。这些图,在神经网络形成之后就会静态生成,类似于程序中的指令,因此,通过修改对应的计算图,就能模拟软错误打击神经元,如图4所示。但是,由于这些图在生成后无法被直接修改,因此,在这个注错中,通过人为的生成一个对应计算单元一样的计算图,例如,一次卷积核操作,并在这个计算图中注入错误,然后将注错后计算图的结果覆盖对应神经元无错的结果,从而实现计算注错。
计算注错中,执行过程如下,1)读取无错的神经网络模型,2)获取对应神经网络的计算空间,3)基于任务配置文件和计算空间,生成对应注错列表,4)基于注错列表,执行注错,每次注错中,会使用新的输入数据,由于没有修改神经网络参数,因此,这里不需要恢复神经网络模型。接着,生成无错的推理结果,然后,基于注错子列表,逐层执行注错。推理完毕后,保存结果。
注错模块完成任务后,系统会调用解析模块分析注错的结果。对于分析结果,会计算出两个指标,分别为交叉熵平均差值ΔLoss和不匹配度量Mismatch:
在公式(9)中,Lg和Li分别对应同一数据的无注入错误情况下的结果交叉熵和注入错误情况下的结果交叉熵,可用公式(11)计算,N表示注错的次数,即injection_times,ΔLoss表示在注入错误的情况下,错误导致网络泛化能力的变化情况,ΔLoss越大,表示对错误越敏感。
在公式(10)中,critical_SDC_num表示分类错误次数,Mismatch表示软错误导致神经网络分类错误的概率,Mismatch越大,表示对软错误越敏感。
公式(11)为交叉熵的计算公式,m表示神经网络中分类的数量,pr代表正确概率值,q代表预测概率值。例如,对一个分类数量为3的神经网络注错,采用one-hot编码,输入为[0 1 0]。无错情况下,预测结果为[0.1 0.5 02],则Lg=H([0 1 0],[0.1 0.5 0.2])=-ln0.5。类似地,对于Li,注错情况下,预测结果为[0.3 0.3 0.4],则Li=H([0 1 0],[0.30.3 0.4])=-ln0.3。
公式(12)表示在错误的干扰下,第i层网络输出被污染的概率。其中,SDCi表示第i层网络的输出被污染的次数,例如,注错1000次,其中第i层的输出有700次被污染,则N为1000,SDCi为700。
在权重注错中,使用公式(9)和(10)表示权重错误对神经网络可靠性的影响。对于单层权重注错,注错结果用来估算网络层内部参数对CNN网络可靠性的影响。例如,对于一个CNN网络中的一个卷积层,设置两种不同的卷积核尺寸,然后分别对它们进行单层权重注错。通过注错结果对比,分析出卷积核尺寸对卷积层关于权重错误的容错能力的影响。对于全局权重注错,这两个指标用来评估误码率对CNN网络可靠性的影响。
图5是一种CNN网络关于误码率的注错结果,从图5可知,当误码率达到0.0001的时候,CNN网络的分类错误概率突然变大。
在输入注错中,对于单层输入注错,使用公式(9)和(10)估算网络层内部参数对滤错能力的影响。例如,对于CNN网络中一个最大池化层,设置两种不同的池化尺寸,分别对它们进行注错。通过注错结果对比,分析出池化尺寸对于最大池化层关于滤错能力的影响。
对于全局的网络层输入注错,使用公式(9)和(10)用来评估不同拓扑结构的CNN网络对SRAM中非权重参数的错误的容错能力。此外,在每次输入注错中保存了每一层的输出数据,因此,使用公式(12)可以逐层得到SRAM中的错误在CNN网络中的传播情况,通过传播规律,可以找出网络中最脆弱的层。图6为一种CNN网络的错误传播,图中x轴代表网络层的位置,Mismatch使用公式(10)得到,从图6可知,第3层网络的输出错误率突然增大,因此,应该在这一层进行加固。
在计算注错中,使用公式(9)和(10)用来评估CNN网络对软错误的容错能力,使用公式(12)得到软错误在CNN网络中的传播规律,类似于网络层输入注错。
由于神经网络自身可靠性比较高,因此,要得到明显的Mismatch值,需要执行非常多的注错,因此,ΔLoss用来辅助Mistmatch来评估神经网络的可靠性。例如,两个网络的Mistmatch差值比较明显,此时,Mistmatch大的神经网络对软错误更敏感;如果两个网络的Mistmatch接近甚至相等,此时,ΔLoss越大的神经网络对软错误越敏感。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (9)
1.基于TensorFlow的卷积神经网络故障注入系统,其特征在于,包括训练模块、注错模块和解析模块;
所述训练模块用于获取目标神经网络参数,以及基于目标神经网络参数计算神经网络内部网络层浮点数运算次数,生成神经网络模型,以及基于目标神经网络参数训练所生成的神经网络模型并保存;
所述注错模块用于基于训练所得的神经网络模型执行注错任务,包括网络层输入注错、权重注错和全局注错;
所述解析模块用于根据注错任务的执行结果,分析注错结果并导出;所述注错结果包括被测试神经网络内在网络层的滤错能力、整体错误恢复能力和权重参数对神经网络的影响。
2.根据权利要求1所述的基于TensorFlow的卷积神经网络故障注入系统,其特征在于,所述训练模块具体用于,
判断目标神经网络模型是否已经存在,如果存在,则直接调用注错模块;否则,从注错任务配置文件中读取目标神经网络参数文件,并解析神经网络参数。
3.根据权利要求1所述的基于TensorFlow的卷积神经网络故障注入系统,其特征在于,所述训练模块具体用于,
FLOPsc=(Pa+Pm)*(Ci*K*K)*H*W*Co
FLOPsf=(Pa+Pm)*(inputs)*outputs
FLOPsm=Pcmp*H*W*K*K*Co
FLOPsa=Pactivate*inputs
pwai=TPi*pwi
其中,Pa表示完成一次加法使用的指令周期,Pm表示完成一次乘法使用的指令周期,Pcmp表示完成一次比较的指令周期,Pactivate表示完成一次激活函数的指令周期,Ci代表输入数据的通道数量,H代表输入数据的高度,W代表输入数据的宽度,Co代表输出数据的通道数量,K代表卷积核的尺寸大小,inputs代表输入数据的节点数量,outputs代表输出数据的节点数量,FLOPsc表示卷积网络的浮点数运算次数,FLOPsf表示全连接层的浮点数运算次数,FLOPsm表示最大池化层的浮点数运算次数,FLOPsa表示激活层的浮点数运算次数,pi表示第i层网络的错误率,FLOPsi表示对应网络层的浮点数运算次数,n表示神经网络的深度,TPi表第i层网络的时间占空比,pwi表示第i层网络的权重错误率,wi表示第i层的权重参数数量,pwai表示第i层网络的有效权重错误率。
4.根据权利要求3所述的基于TensorFlow的卷积神经网络故障注入系统,其特征在于,所述注错模块具体用于,
获取预先训练好的神经网络模型,并获取注错空间;
基于注错空间中的注错模式,生成对应的注错列表;所述注错列表中的每一条列表表示一个错误注入点表示为<layer,position,fault_model>,其中,fault_model表示错误类型,layer和position分别表示注错的网络层和对应的位置;
基于注错列表,对神经网络逐条执行注错任务。
5.根据权利要求4所述的基于TensorFlow的卷积神经网络故障注入系统,其特征在于,对于网络层输入注错,注错空间为对应网络层的输入集合;对于权重注错,注错空间为对应区域的权重集合;对于计算注错,注错空间为神经网络中神经元计算的集合。
6.根据权利要求4所述的基于TensorFlow的卷积神经网络故障注入系统,其特征在于,所述错误类型包括:单位翻转,双位翻转和多位翻转。
7.根据权利要求4所述的基于TensorFlow的卷积神经网络故障注入系统,其特征在于,
对于网络层输入注错,分为全局的网络层输入注错和单层输入注错,对于单层输入注错,layer从注错任务配置文件中的fault_layer获取对应层的输入注错;对于全局的网络输入注错,layer的取值范围为神经网络中的所有网络,注入的错误会交叉的分配到不同的网络层输入,每层网络被错误击中的概率为pi;两种类型的position均从输入数据中随机选择;
对于权重注错,分为单层权重注错和全局权重注错,对于单层权重注错,layer从注错任务配置文件中的fault_area获取对应层的权重注错,每层网络的权重错误数由注错任务配置文件中的fault_rate确定;对于全局权重注错,layer的取值范围为神经网络中的所有网络,每层网络的错误击中率为pwai;两种类型的position均从对应层的权重参数中随机选择;
对于计算注错中,layer的取值范围为神经网络中的所有网络,每层网络被错误击中的概率为pi,position从对应层的神经元中随机选择。
8.根据权利要求4所述的基于TensorFlow的卷积神经网络故障注入系统,其特征在于,所述注错模块具体用于,
执行权重注错中,每执行一条注错列表,首先使用新的输入数据,恢复神经网络模型,生成无错结果,再用新的错误权重空间覆盖神经网络,推理并保存结果;
执行网络层输入注错中,每执行一条注错列表,首先使用新的输入数据,生成无错的推理结果,再基于注错子列表,逐层执行注错,推理并保存结果;
执行计算注错中,每执行一条注错列表,首先使用新的输入数据,生成无错的推理结果,再基于注错子列表,逐层执行注错,推理并保存结果。
9.根据权利要求3所述的基于TensorFlow的卷积神经网络故障注入系统,其特征在于,所述解析模块具体用于,
计算交叉熵平均差值ΔLoss和不匹配度量Mismatch:
其中,Lg和Li分别对应同一数据的无注入错误情况下的结果交叉熵和注入错误情况下的结果交叉熵,N表示注错的次数,critical_SDC_num表示分类错误次数,H(pr,q)为交叉熵的计算公式,m表示神经网络中分类的数量,pr代表正确概率值,q代表预测概率值,SDCi表示第i层网络的输出被污染的次数,SDC_ratei表示在错误的干扰下,第i层网络输出被污染的概率;
在权重注错中,对于单层权重注错,ΔLoss和Mismatch用来评估网络层内部参数对卷积神经网络可靠性的影响;对于全局权重注错,ΔLoss和Mismatch用来评估误码率对卷积神经网络可靠性的影响;
在网络层输入注错中,对于单层输入注错,ΔLoss和Mismatch用来评估网络层内部参数对滤错能力的影响;对于全局的网络层输入注错,ΔLoss和Mismatch用来评估不同拓扑结构的卷积神经网络对SRAM中非权重参数的错误的容错能力,采用SDC_ratei表示SRAM中的错误在卷积神经网络中的传播情况,找出网络中最脆弱的层;
在计算注错中,ΔLoss和Mismatch用来评估卷积神经网络对软错误的容错能力,采用SDC_ratei表示软错误在卷积神经网络中的传播规律,找出网络中最脆弱的层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010349927.1A CN111563578B (zh) | 2020-04-28 | 2020-04-28 | 基于TensorFlow的卷积神经网络故障注入系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010349927.1A CN111563578B (zh) | 2020-04-28 | 2020-04-28 | 基于TensorFlow的卷积神经网络故障注入系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111563578A true CN111563578A (zh) | 2020-08-21 |
CN111563578B CN111563578B (zh) | 2022-09-23 |
Family
ID=72070786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010349927.1A Active CN111563578B (zh) | 2020-04-28 | 2020-04-28 | 基于TensorFlow的卷积神经网络故障注入系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111563578B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112613254A (zh) * | 2020-11-30 | 2021-04-06 | 天津飞腾信息技术有限公司 | 一种处理器内部镜像控制模块注错验证系统及方法 |
CN112766503A (zh) * | 2021-03-10 | 2021-05-07 | 电子科技大学 | 基于关键层回滚机制的卷积神经网络模型容错方法 |
CN114821082A (zh) * | 2022-06-15 | 2022-07-29 | 中科物栖(北京)科技有限责任公司 | 一种winograd卷积神经网络脆弱性评估方法及装置 |
WO2023184188A1 (zh) * | 2022-03-29 | 2023-10-05 | 华为技术有限公司 | 一种自动驾驶系统中神经网络模型故障监测方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341518A (zh) * | 2017-07-07 | 2017-11-10 | 东华理工大学 | 一种基于卷积神经网络的图像分类方法 |
US20190220737A1 (en) * | 2018-01-17 | 2019-07-18 | Hengshuai Yao | Method of generating training data for training a neural network, method of training a neural network and using neural network for autonomous operations |
CN110084794A (zh) * | 2019-04-22 | 2019-08-02 | 华南理工大学 | 一种基于注意力卷积神经网络的皮肤癌图片识别方法 |
-
2020
- 2020-04-28 CN CN202010349927.1A patent/CN111563578B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341518A (zh) * | 2017-07-07 | 2017-11-10 | 东华理工大学 | 一种基于卷积神经网络的图像分类方法 |
US20190220737A1 (en) * | 2018-01-17 | 2019-07-18 | Hengshuai Yao | Method of generating training data for training a neural network, method of training a neural network and using neural network for autonomous operations |
CN110084794A (zh) * | 2019-04-22 | 2019-08-02 | 华南理工大学 | 一种基于注意力卷积神经网络的皮肤癌图片识别方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112613254A (zh) * | 2020-11-30 | 2021-04-06 | 天津飞腾信息技术有限公司 | 一种处理器内部镜像控制模块注错验证系统及方法 |
CN112613254B (zh) * | 2020-11-30 | 2022-01-25 | 飞腾信息技术有限公司 | 一种处理器内部镜像控制模块注错验证系统及方法 |
CN112766503A (zh) * | 2021-03-10 | 2021-05-07 | 电子科技大学 | 基于关键层回滚机制的卷积神经网络模型容错方法 |
CN112766503B (zh) * | 2021-03-10 | 2022-09-20 | 电子科技大学 | 基于关键层回滚机制的卷积神经网络模型容错方法 |
WO2023184188A1 (zh) * | 2022-03-29 | 2023-10-05 | 华为技术有限公司 | 一种自动驾驶系统中神经网络模型故障监测方法及装置 |
CN114821082A (zh) * | 2022-06-15 | 2022-07-29 | 中科物栖(北京)科技有限责任公司 | 一种winograd卷积神经网络脆弱性评估方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111563578B (zh) | 2022-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111563578B (zh) | 基于TensorFlow的卷积神经网络故障注入系统 | |
CN107977704B (zh) | 权重数据存储方法和基于该方法的神经网络处理器 | |
Nelson | Estimating software reliability from test data | |
WO2015118686A1 (ja) | 階層型ニューラルネットワーク装置、判別器学習方法および判別方法 | |
Xu et al. | Asymmetric bidirectional associative memories | |
CN111027686A (zh) | 一种滑坡位移的预测方法、装置及设备 | |
CN113850389B (zh) | 一种量子线路的构建方法及装置 | |
Goldstein et al. | Reliability evaluation of compressed deep learning models | |
CN112068798A (zh) | 一种实现网络节点重要性排序的方法及装置 | |
US11294763B2 (en) | Determining significance levels of error values in processes that include multiple layers | |
WO2021050590A1 (en) | Systems and methods for modifying neural networks for binary processing applications | |
Joardar et al. | Learning to train CNNs on faulty ReRAM-based manycore accelerators | |
Bautista-Gomez et al. | Detecting silent data corruption for extreme-scale MPI applications | |
Eldebiky et al. | Correctnet: Robustness enhancement of analog in-memory computing for neural networks by error suppression and compensation | |
CN110750945B (zh) | 一种芯片的仿真方法、装置、仿真芯片以及相关产品 | |
CN112348174A (zh) | 一种可容错的循环神经网络架构搜索方法及系统 | |
CN115860113A (zh) | 一种自对抗神经网络模型的训练方法及相关装置 | |
CN115640825A (zh) | 智能体的多样性行为强化学习方法、装置、智能体及介质 | |
Dyer et al. | Bounded verification of sparse matrix computations | |
US20110257943A1 (en) | Node-based transient acceleration method for simulating circuits with latency | |
KR102255470B1 (ko) | 인공신경망 모델의 검증 방법 및 장치 | |
CN115222054B (zh) | 量子噪声模型的训练方法、量子测量错误抑制方法及装置 | |
TWI812365B (zh) | 故障減輕方法及資料處理電路 | |
CN114692885A (zh) | 基于拓扑量子纠错码的错误信息传输校正方法 | |
CN110096384B (zh) | 高可靠航天数据及中间变量的保护方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |