CN113033757A - 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质 - Google Patents

用于测试神经网络中算子精度的方法、装置和计算机可读存储介质 Download PDF

Info

Publication number
CN113033757A
CN113033757A CN201911251611.2A CN201911251611A CN113033757A CN 113033757 A CN113033757 A CN 113033757A CN 201911251611 A CN201911251611 A CN 201911251611A CN 113033757 A CN113033757 A CN 113033757A
Authority
CN
China
Prior art keywords
operator
test
data
result
difference
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
Application number
CN201911251611.2A
Other languages
English (en)
Other versions
CN113033757B (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201911251611.2A priority Critical patent/CN113033757B/zh
Publication of CN113033757A publication Critical patent/CN113033757A/zh
Application granted granted Critical
Publication of CN113033757B publication Critical patent/CN113033757B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

本披露公开了用于测试神经网络中算子精度的方法、测试装置和存储介质,其中该测试装置可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述测试装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与设备和其他处理装置连接,用于该设备和其他处理装置的数据。本披露的方案可以对神经网络的算子精度进行有效的评估,从而确定神经网络整体网络的效能。

Description

用于测试神经网络中算子精度的方法、装置和计算机可读存 储介质
技术领域
本披露一般地涉及人工智能领域。更具体地,涉及一种用于测试神经网络中算子的精度的方法、装置和存储介质。
背景技术
近年来,得益于数据量的增多、计算能力的增强、学习算法的成熟以及应用场景的丰富,以机器学习和知识图谱为代表的人工智能技术逐渐愈发普及。特别是最近这几年,越来越多的人开始关注于以神经网络为主要模型的深度学习。深度学习不仅可以用来解决机器学习中的表示学习问题,还由于其强大的能力而越来越多地用来解决一些通用人工智能问题,比如推理或决策等。深度学习框架是整个深度学习生态体系中的第一层,其核心思想是将神经网络计算进一步拆分为各类常见的面向向量数据或矩阵数据的算子。
算子在神经网络中是一个函数空间到函数空间上的映射。广义上来讲,对任何函数进行某一项操作都可以认为是一个算子。简言之,算子可以是映射、关系或者变换。深度学习框架需要将神经网络映射的计算图结构所表达的深度学习任务具体化成可以在中央处理器(“CPU”)或者人工智能处理器执行的指令和数据。在这个过程中,深度学习框架采用算子作为落实计算任务的具体元素,为每个算子都提供了在CPU或者人工智能处理器上执行的核函数。根据计算图,深度学习框架调度执行计算图中每个算子对应的核函数,完成整个神经网络的计算。
由上述可知,在神经网络的计算过程中,算子的精度水平对神经网络的优劣起着重要的作用。在实际的神经网络各层的设计中,可以采用不同的硬件或者硬件平台来实现各层算子的计算,比如可以采用图像处理单元(“GPU”)、中央处理单元(“CPU”)、机器学习单元(“MLU”)、张量处理单元(“TPU”)或者现场可编程门阵列(“FPGA”)等硬件。对于神经网络中的卷积层和全连接层等的线性层,以及激活层和批归一化层等的非线性层的算子来说,当使用前述不同的硬件或硬件平台时可能会由于算子精度水平的优劣而导致运算结果存在差异,或者由于数据转换(例如数据类型的变换)而导致各种算子的输出会存在差异。对于这种差异的监测和度量可以判断算子的精度是否符合要求,进而对整个神经网络的设计进行评价。然而,目前现有技术中并没有针对这方面的测试方法或者装置。
发明内容
为了至少解决在上述背景技术部分所描述的问题,对神经网络的算子精度进行有效的评估,从而确定神经网络整体网络的效能,本披露提出如下的技术方案及其多个实施例。
在一个方面中,本披露提出了一种用于通过硬件平台测试神经网络中算子的精度的方法,该方法包括利用测试数据对所述神经网络中的算子执行运算,以获得针对所述算子的测试结果,其中所述算子与所述神经网络中的层相关联。该方法还包括将所述测试结果与针对所述算子的基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异。该方法进一步包括根据评价标准对所述差异进行评价,以确定所述算子的精度水平。
在另一方面中,本披露还公开了一种用于测试神经网络中算子的精度的装置,包括:处理器,其配置用于执行程序指令;以及存储器,其配置用于存储所述程序指令,当所述程序指令由所述处理器加载并执行时,使得所述装置执行:利用测试数据对所述神经网络中的算子执行运算,以获得针对所述算子的测试结果,其中所述算子与所述神经网络中的层相关联;将所述测试结果与针对所述算子的基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异;以及根据评价标准对所述差异进行评价,以确定所述算子的精度水平。
在又一方面中,本披露进一步公开了一种计算机可读存储介质,其中存储有程序指令,所述程序指令适于由处理器加载并执行:利用测试数据对所述神经网络中的算子执行运算,以获得针对所述算子的测试结果,其中所述算子与所述神经网络中的层相关联;将所述测试结果与针对所述算子的基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异;以及根据评价标准对所述差异进行评价,以确定所述算子的精度水平。
在一个方面中,本披露公开了一种用于测试神经网络中算子的精度的芯片,包括:输入端,其配置用于接收针对所述算子的测试数据;处理器,其配置用于:利用测试数据对所述算子执行运算,以获得针对所述算子的测试结果,其中所述算子与所述神经网络中的层关联;将所述测试结果与基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异;以及根据评价标准对所述差异进行评价,以确定所述算子的精度水平。
在又一个方面中,本披露公开了一种用于测试神经网络中算子的精度的集成电路,包括前述的芯片。
在一个方面中,本披露公开了一种用于测试神经网络中算子精度的系统,包括:接收端,其配置用于接收针对所述算子的测试数据;至少一个基准运算设备,其配置用于利用测试数据对所述算子执行运算,以获得针对所述算子的基准结果;至少一个测试运算设备,其配置用于利用测试数据对所述算子执行运算,以获得针对所述算子的测试结果;以及所述至少一个基准运算设备或测试运算设备之一还配置用于:将所述测试结果与所述基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异;以及根据评价标准对所述差异进行评价,以确定所述算子的精度水平。
在又一个方面中,本披露公开了一种用于测试神经网络中算子的精度的集成电路,包括前述的系统。
通过利用本披露所提出的方法、装置、芯片、系统和计算机可读存储介质,可以对神经网络的算子精度进行评估,由此确定神经网络的整体性能并有针对性进行提高。特别地,本披露的方案不但可以通过不同硬件平台上的运行来确定算子的精度水平,还可以通过测试数据的数据转换来对相同硬件平台上运行的算子进行评估,从而提供了灵活的评估方式,确保神经网络的算子满足所需的精度水平。
附图说明
通过结合附图,可以更好地理解本披露的上述特征,并且其众多目的、特征和优点对于本领域技术人员而言是显而易见的。下面描述中的附图仅仅是本披露的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可根据这些附图获得其他的附图,其中:
图1是示出根据本披露实施例的神经网络的结构示意图;
图2是示出根据本披露实施例的通过硬件平台测试神经网络中算子的精度的方法的流程图;
图3是示出根据本披露实施例的基于不同硬件平台的测试方法的流程图;
图4是示出根据本披露实施例的基于不同硬件平台的测试架构的示意框图;
图5是示出根据本披露实施例的基于数据转换的测试方法的流程图;
图6是示出根据本披露实施例的基于数据转换的测试架构的示意框图;
图7是示出根据本披露实施例的一种组合处理装置的结构图;以及
图8是示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
本披露的技术方案提供了一种用于测试神经网络中的算子的精度的方法、装置和计算机可读存储介质。具体地,本披露提出利用针对待测算子所获得的基准结果和测试结果之间的差异来评价该算子的精度水平,从而可以在一定程度上反应算子的容错性。在本披露的上下文中,这里所述对算子精度的评价可以不仅示例性地包括评测算子在不同硬件平台上本身运算所带来的精度,也可以包括评测算子由于数据类型的转换所带来的在相同或不同硬件平台上的精度,或者是评测算子在硬件平台和数据类型转换二者结合的基础上所带来的精度。
在一个实施例中,本披露的基准结果可以获得自公知或标准的硬件平台(例如中央处理单元“CPU”)上算子的运行结果,而测试结果可以获得来自测试硬件平台上算子的运行结果。在另一个实施例中,本披露的基准结果可以是在测试硬件平台上针对算子、利用测试数据进行初次测试所获得的结果,而测试结果可以是在前述测试硬件平台上针对算子、利用数据转换后的测试数据进行再次测试所获得的结果。通过判断基准结果和测试结果二者之间的差异,例如通过判断差异结果是否在阈值范围内,本披露的方案成功地实现了对神经网络中算子精度的有效度量。
应当理解,本申请关于上述的精度测试方案阐述了许多具体细节以便提供对本披露所述多个实施例的透彻理解。然而,本领域普通技术人员在本申请公开内容的教导下,可以在没有这些具体细节的情况下实践本披露描述的多个实施例。在其他情况下,本申请公开的内容并没有详细描述公知的方法、过程和组件,以避免不必要地模糊本披露描述的实施例。进一步,该描述也不应被视为限制本披露的多个实施例的范围。
下面将结合附图,对本披露的多个实施例中的技术方案进行清楚和完整地描述。
图1是示出根据本披露实施例的神经网络100的结构示意图。正如本领域技术人员所知,神经网络(或称人工神经网络“ANN”)被广泛运用于图像处理、语音识别等领域,其包含数百、数千甚至数百万个称为“神经元”的处理单元(就像人脑中的神经元一样),这些神经元分布于不同的层,并且协同工作以解决具体问题。
如图1中示意性示出的,神经网络100可以包括三个层,即输入层、隐藏层和输出层。输入层的神经元(如图中所示出的三个垂直排列的方框) 被称为输入神经元。作为神经网络中的第一层,输入层的神经元接受需要输入的信号并将它们传递到下一层,如图中所示出的隐藏层中的第一层(以“F1”标识出)。输入层通常不对输入信号做操作,并且没有关联的权值和偏置。
处于神经网络100中间位置的隐藏层,其根据应用场景的不同可以进一步细分为卷积层、池化层、批归一化层、激活层和全连接层等各类线性层和非线性层。此处的各类层都可以设置有与该层相关联的算子以执行相对应的计算操作。例如,对于卷积层存在卷积算子,该卷积算子可以具体化为一个或多个卷积计算公式的表达。通过利用该卷积算子将输入数据与卷积核进行计算,可以获得卷积操作后的结果值。下面将对这些线性层和非线性层中的一些层做简要的描述,以便于对本披露方案的进一步理解。
作为隐藏层之一的卷积层,其可以对输入数据进行特征提取。卷积层内部包含多个卷积核,每个卷积核可以包括多个权重。卷积层参数包括卷积核大小、步长和填充尺寸,三者均会影响卷积层输出特征图的尺寸,是卷积神经网络的超参数。卷积层内每个神经元都与前一层中位置接近的区域的多个神经元相连,该区域的大小取决于卷积核的大小。
对于隐藏层中的池化层,其主要用于特征降维、压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。池化方法主要包括最大池化和平均池化。在一种应用场景中,在卷积层进行特征提取后,输出的特征图会被传递至池化层进行特征选择和信息过滤。池化层包含预设定的池化函数,该池化函数可以认为是本披露的池化层算子。池化层选取池化区域与卷积核扫描特征图步骤相同,该步骤由池化大小、步长和填充进行控制。
激活层的功能实际上是利用激励函数对线性层的输出结果做非线性映射。如果不使用激励函数的话,神经网络每层都只做线性变换,则多层输入叠加后还是线性变化。考虑到线性模型的表达力不够,激励函数的使用可以引入非线性因素。常用的激励函数有:Sigmoid函数、Tanh 函数、ReLU函数、Leaky ReLU函数、ELU函数及Maxout函数等。类似地,根据本披露的方案,这些示例性的激励函数也可以认为是与激活层相关的激活层算子。
批归一化层有两个作用:防止梯度爆炸和梯度消失。从字面上来理解,批归一化就是对每一批数据进行归一化(注意这个数据是可以输入也可以是网络中间的某一层输出)。批归一化层的使用可以加快神经网络模型的收敛速度和提高模型训练精度,而且在一定程度缓解了深层网络中“梯度弥散”的问题,从而使得训练深层网络模型更加容易和稳定。在批归一化层出现之前,归一化操作一般都在数据输入层,对输入的数据进行求均值以及求方差做归一化,但是批归一化可以在网络中任意一层进行归一化处理,例如在激活层前进行。该批归一化层中可能涉及的对均值或方值做归一化处理的函数表达也可以认为是与批归一化层相关的批归一化层算子。
经过上述隐藏层(例如前面若干次卷积+激活+池化)的处理后,数据处理流程到达可以位于神经网络隐藏层最后部分的全连接层和整个神经网络的输出层。全连接层中的每个神经元与其前一层的所有神经元进行全连接,以整合卷积层或者池化层中具有类别区分性的局部信息。为了提升神经网络的网络性能,全连接层每个神经元的激励函数一般可以采用ReLU函数。在一些应用场景中,全连接层还可以进行局部归一化、数据增强等操作,以便增加神经网络的鲁棒性。作为神经网络100最后一层的输出层,其通常将Softmax函数作为激活函数,并定义log似然代价函数,通过求解似然函数梯度,结合反向传播算法来更新网络参数以此训练神经网络。与前述的其他层类似,该全连接层中的一个或多个应用到的函数也可以是本披露的算子。
上面结合图1描述了可以实施本披露技术方案的神经网络的示例结构图。可以理解的是,上文关于神经网络的介绍仅仅是示例性的,并且神经网络的结构并不受图中所示结构的限制,本领域技术人员根据需要可以对图中所示结构做出修改,例如在隐藏层中增加一个或多个新的层和对应算子。在对神经网络的实际应用中,可以预先通过大量的样本数据(包含输入数据和输出数据)对初始神经网络进行训练,并在训练完成后获得训练后的神经网络。经过训练后的神经网络对于将来真实环境的输入数据能尝试给出一个正确的输出结果。
图2是示出根据本披露实施例的通过硬件平台测试神经网络中算子的精度的方法200的流程图。如本领域技术人员所理解的,图2所涉及的神经网络可以是结合图1所描述的神经网络,并且包括一个或多个层和与之关联的算子。
如图2所示,在步骤201处,本披露提出的测试方法200利用测试数据对神经网络中的算子执行运算,以获得针对所述算子的测试结果,其中所述算子与所述神经网络中的层相关联。在一个实施例中,此处的测试结果可以是在测试硬件平台上利用测试数据获得的。例如,在针对于卷积算子精度水平的测试场景中,可以将测试数据输入到前述的卷积层的卷积算子中进行计算,以获得针对于卷积算子的测试结果。
接着,在步骤202处,方法200将所述测试结果与针对所述算子的基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异。在一个实施例中,此处的基准结果可以是在基准硬件平台上利用测试数据对待测算子执行运算来获得,该基准硬件平台例如可以是公知的硬件平台(如“CPU”或“GPU”)或用户指定的硬件平台,例如是用户的前一代硬件平台。在另一个实施例中,可以在测试硬件平台或前述的基准硬件平台上、针对未经数据转换的测试数据执行待测算子来获得基准结果。与之相对应,可以在测试硬件平台上、针对经数据转换的测试数据执行待测算子来获得测试结果。
关于基准结果和测试结果之间的差异,在一个实施例中,该差异可以是基准结果和测试结果之间的差值(例如为了区分,可以称为第一差值),或者是差值与所述基准结果或测试结果之一的比值(例如为了区分,可以称为第一比值),或者是对所述基准结果、测试结果、差值或比值中的一项或多项应用相同或不同的数学函数后所获得的差值(例如称为第二差值)或比值(例如第二比值)。这里,差值可以是正值、负值或绝对值,而该数学函数可以例如是与差值或均方差相关的函数。由此,可以对所述基准结果、测试结果或差值应用相同或不同的数学函数,并且将所述比值确定为所述差异。另外,还可以对所述基准结果、测试结果、差值或比值应用相同或不同的数学函数,并且将所述比值的函数值确定为所述差异。可以看出,本披露的方案提供了多种方式来确定基准结果和测试结果之间的差异。
在一个或多个实施例中,上述的差异可以通过下面的数学函数式 (1)-(3)之一来确定:
diff=abs(f(output1)–f(output2))/f(output1) (1);
diff=(f(output1)–f(output2))/f(output1) (2);或
diff=abs(f(output1)–f(output2))/f(output2) (3)
其中diff表示所述差异,output1表示所述基准结果,output2表示所述测试结果,函数abs(x)表示对x求绝对值,并且在一个示例中,函数f(x)=mean(abs(x)),表示对x的绝对值求平均值,或者函数f(x) 表示对x求均方差。
最后,在步骤203处,方法200根据评价标准对所述差异进行评价,以确定所述算子的精度水平。在一个实施例中,此处根据评价标准对所述差异进行评价可以包括将所述差异与预定的阈值或阈值范围进行比较;以及当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,则确定所述算子的精度水平符合要求。
例如,在确定所述算子的精度水平过程中,首先给出一个经验值或阈值,当通过上述不同方式获得的差异diff小于或等于该值时,表示达到标准,即该算子符合精度要求;否则,则表示未达到精度要求。例如,当前述的经验值或阈值为2%时,diff小于或等于2%时,则可以确定当前测试的算子在测试硬件平台上满足精度要求。反之,当所确定的diff大于2%时,则可以确定当前测试的算子在测试硬件平台上并未满足精度的要求。又例如,当前述的阈值范围为2%~5%时, diff等于3%时,则可以确定当前测试的算子在测试硬件平台上满足精度要求。反之,当所确定的diff小于2%或大于5%时,则可以确定当前测试的算子在测试硬件平台上并未满足精度的要求。
上文结合图2对本披露的测试方法200及其多个实施例进行了描述。下面将参考图3-图7进一步描述本披露的测试方式200的多个实施例及其变形方案。
图3是示出根据本披露实施例的基于不同硬件平台的测试方法300 的流程图。通过前文和下面的描述,本领域技术人员能够理解图3的测试方法主要是基于不同的硬件平台来对待测算子进行测试,以评估其精度水平。
如图3中所示,在步骤301处,方法300将测试数据分别输入到不同的硬件平台,例如本披露的基准硬件平台(例如公认标准硬件CPU) 和测试硬件平台。接着,流程分别进入到步骤302和303,此处方法 300分别在基准硬件平台和测试硬件平台上利用测试数据,针对待测算子进行测试。例如,当测试的算子是卷积算子时,可以在基准硬件平台和测试硬件平台上将前述的测试数据作为输入数据输入到卷积层的卷积算子。通过这样的运算,可以在步骤304和305处输出在基准硬件平台上获得的基准结果和在测试硬件平台上获得的测试结果。
接着,在步骤306处,方法300可以执行对输出结果进行差异确定和评价。正如前面结合图2所描述的,本披露可以采用各种方式来确定基准结果和测试结果之间的差异,例如求取二者之间的差值作为差异,将该差值与基准结果和测试结果之一的比值作为差异,或者将以基准结果和测试结果作为参数的函数的函数值作为差异等。对所述差异的评价可以涉及与经验值和阈值或阈值范围的比较。鉴于前文已经对确定差异的方法和评价方式作出详细的描述,此处不再赘述。
最后,方法300可以前进到步骤307,此处可以输出算子的精度评价结果。例如,可以以可听或可视的方式向用户指示该算子的精度水平如何。具体地,当算子的精度水平没有达到预期的水平时,可以向用户指示该情形,由此促使技术人员对该算子或神经网络进行调整以适应新的硬件平台的要求。反之,当算子的精度水平满足预期水平,则表明该算子通过该测试硬件平台的测试,可以应用于该测试硬件平台上。
图4是示出根据本披露实施例的基于不同硬件平台的测试架构400 的示意框图。通过下文的描述,本领域技术人员可以理解图4的测试架构支持本披露结合图3描述的方案,并且关于图3描述的技术细节同样也适用于图4所示出的内容。
如图4中所示,与图1结构类似的神经网络分别运行于基准硬件平台401和测试硬件平台402上,该神经网络示例性地包括输入层、卷积层、池化层、激活层、全连接层和输出层。输入数据(例如像素数据)经由输入层输入进神经网络中,并分别经过卷积层、池化层、激活层、全连接层的处理,最终经由输出层的处理后输出。对于本披露的方案来说,其可以测试与上述各层关联的算子的精度。例如,假设卷积算子是待测试的算子,可以将卷积算子执行测试数据后所获得的结果作为输出。具体地,基准硬件平台上的卷积算子的输出为基准结果而测试硬件平台上的卷积算子的输出为测试结果。
在获得上述的基准数据和测试数据后,可以将二者在比较模块 403处进行比较,以确定二者之间的差异。然后,可以将该差异送入到评价模块404中进行详价。例如,如前所述,可以通过确定差异是否小于或等于预定的阈值或处于预定的阈值范围来对算子进行评价。
为了便于进一步理解本披露的方案,下面结合图4来描述对卷积算子进行测试的过程。本领域技术人员通过此处的示例性描述,也可以想到对神经网络中的其他层算子(例如全连接层或池化层)进行类似的测试。
首先,假设输入数据为X,权值为W,则在经过卷积算子的运算之后,结果为Y=X*W(“*”表示卷积运算)。当图4的基准硬件平台401 是标准公知的GPU时,在GPU上做卷积运算,可以得到输出 Y_GPU=X*W,即本披露的基准结果。接着,保持X和W不变(即测试数据保持不变),在测试硬件平台402上做卷积运算,可以得到输出Y_2=X*W,即本披露的测试结果。然后,可以在比较模块处对两个输出结果Y_GPU和Y_2进行比较以获得差异,例如可以利用前述的公式(1):diff=abs(f(output1)–f(output2))/f(output1)来获得。在获得差异后,可以在评价模块404处进行具体评价。例如,对于一个给定的经验值,当差异小于该值时,表示算子精度达到标准;否则,表示算子精度未达到标准。
具体地,首先算出diff=abs(f(Y_GPU)–f(Y_2))/f(Y_GPU),然后将diff与给出的经验阈值2%做比较和判断。当diff小于2%时,可以确定算子通过精度测试,表明该层算子在该硬件上的处理正常;相反,当diff大于2%时,可以确定算子未通过精度测试,表明在新的硬件平台上,该算子的精度并不符合要求。需要注意的是,这样的经验阈值2%仅仅是示例性或说明性的,本领域技术人员可以根据实际操作需要设定不同的阈值或阈值范围,以确定算子的精度水平。
进一步,根据上文结合图4的描述,本领域技术人员也可以想到图4所示的架构也可以用于构建一种用于测试神经网络中算子精度的系统。该用于测试的系统可以包括接收端,其配置用于接收针对所述算子的测试数据。该系统还可以包括至少一个基准运算设备,其配置用于利用测试数据对所述算子执行运算,以获得针对所述算子的基准结果。在一个实施例中,该至少一个基准运算设备可以实施为或者包括例如图4中所示出的基准硬件平台,其例如可以包括标准的CPU 或GPU等芯片或处理器。进一步,该系统还可以包括至少一个测试运算设备,其配置用于利用测试数据对所述算子执行运算,以获得针对所述算子的测试结果。在一个实施例中,该至少一个测试运算设备可以实施为或包括例如图4中的测试硬件平台,其例如可以是任意的需要测试算子在其上运行时的精度的人工智能芯片或处理器。
在上述的系统中,前述的至少一个基准运算设备或测试运算设备之一还可以配置用于:将所述测试结果与所述基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异;以及根据评价标准对所述差异进行评价,以确定所述算子的精度水平。在此,本领域技术人员可以理解在所述系统中,基准运算设备或测试运算设备中的任意一个可以执行图4中的比较模块和评价模块的操作并实现同样的功能,即得以对算子在测试运算设备上的精度水平进行确定。由于图4中关于基准硬件平台、测试硬件平台、比较模块或评价模块的描述也同样适用于所述系统中的基准运算设备和测试运算设备,因此在此将不再赘述。进一步,本领域技术人员可以理解这里所述的系统也可以实现于集成电路上,因此本披露在此也就公开了一种具有如上特征的系统的集成电路,该集成电路可以用于测试神经网络中算子的精度。
图5是示出根据本披露实施例的基于数据转换的测试方法500的流程图。通过前文和下面的描述,本领域技术人员能够理解图5的测试方法主要是基于相同硬件平台对待测算子进行测试,以评估其精度水平。
如图5中所示,在步骤501处,方法500接收输入的测试数据。在一个实施例中,该测试数据可以具有多种数据类型,例如整型8位数据(表示为int8)、定点型8位数据(表示为fix8)、浮点型32位数据(表示为float32)等。在另一个实施例中,此处的测试数据可以包括多个测试子数据,并且每个所述测试子数据具有所述多种数据类型中的至少一种数据类型,其中所述第一数据类型包括与每个所述测试子数据关联的数据类型的第一多个数据类型,而所述第二数据类型包括与每个所述测试子数据关联的数据类型的第二多个数据类型。例如,针对卷积算子的测试数据,其可以包括float32数据类型(即前述的第一数据类型)的输入数据(即,第一测试子数据)和float32数据类型的权值 (即,第二测试子数据)。在一个实施例中,当测试的权值的数据类型为fix8时,该fix8数据类型即为前述的第二数据类型。
接着,方法500前进到步骤502处,在该处可以执行对测试数据的数据转换。例如,通过各种数据变化,可以将测试数据变换成另一类的数据。根据本披露的一个实施例,可以通过数据类型的转换来执行此处的数据转换。例如,在针对卷积算子的测试中,例如可以将包括float32型的输入数据和权值的测试数据转换为fix8型的测试数据。替代地,还可以将包括float32型的输入数据和fix8型的权值的测试数据转换为包括fix8型的输入数据和float32型的权值的测试数据。
在步骤503处,方法500执行在硬件平台上的测试。具体地,该步骤利用未经数据转换的测试数据(来自于步骤501)在测试硬件平台或基准硬件平台上对所述算子执行运算,以获得针对所述算子的所述基准结果。顺序地或者并行地,利用经过上述数据转换的测试数据在所述测试硬件平台上对所述算子执行运算,以获得针对所述算子的所述测试结果。接着,分别在步骤504和505处,方法500输出基准结果和测试结果。
在获得基准结果和测试结果后,方法500前进到步骤506,此处执行对两种输出结果进行评价,并且在步骤507处,输出算子的精度评价结果。在步骤506中,方法500将获得的基准结果和测试结果进行比较,以获得二者的差异,并且基于该差异对算子的精度进行评价。本领域技术人员可以理解此处的比较和评价操作与结合图2-图4描述的比较和评价操作相同或类似,因此本文在此不再赘述。通过图5所示的方法,本披露的方案可以通过对测试数据进行数据转换,由此获得基准结果和测试结果,从而对算子精度进行有效评价。
另外,需要指出的是前述的数据转换步骤502可以在算子的外部执行。换句话说,算子接收的数据是已经转换过的。替代地,也可以在算子内部执行前述的数据转换502。也即是说,算子本身包括了数据类型转换的操作和运算。例如,当算子接收到原始数据后,其先执行数据类型转换,而后在执行该算子指定的运算。进一步,当在测试硬件平台上获得所述的基准结果时,所获得的差异结果可以用来比较数据类型转换所带来的精度问题。与之相比,当利用未转换数据类型的测试数据在测试硬件平台上获得基准结果时,所获得的差异结果可以用来比较数据类型和平台二者的差异所带来的精度问题。
图6是示出根据本披露实施例的基于数据转换的测试架构600的示意框图。通过下文的描述,本领域技术人员可以理解图6的测试架构支持本披露结合图5描述的方案,并且关于图5描述的技术细节同样也适用于图6所示出的内容。
如图6中所示,与图4结构类似的神经网络运行于相同的测试硬件平台601上。输入数据经由输入层输入进神经网络中,并分别经过卷积层、池化层、激活层、全连接层的处理,最终经由输出层的处理后输出。对于本披露的方案来说,其可以测试与上述各层关联的算子的精度。例如,针对卷积层,可以将卷积算子执行测试数据后所获得的结果作为输出。与图3和图4所示出的方案不同,此处在待测算子上运行测试数据(如图6中所示出的数据1)所获得的结果是基准结果,而在待测算子上运行经数据转换(例如数据类型转换)后的测试数据(如图6中所示出的数据2)所获得的结果是测试结果。另外,通过上文的描述,本领域技术人员可以理解的是未经数据转换的测试数据(如图6中所示出的数据1)也可以输入到基准硬件平台上以获得基准结果,即,图6上部所示出的测试硬件平台601可以由基准硬件平台来替换。
在获得上述的基准结果和测试结果后,可以将二者在比较模块 603处进行比较,以确定二者之间的差异。这里,与前面描述的类似,差异可以是基准结果和测试结果之间的差值或者是利用数学函数表达所获得的数值。然后,可以将该差异送入到评价模块604中进行详价。例如,可以通过确定差异是否小于或等于预定的阈值或处于预定的阈值范围来对算子进行评价。当小于或等于预定的阈值时,可以确定该算子在测试硬件平台上满足精度要求,否则可以确定算子未达到预期的精度要求。
为了便于进一步理解本披露的方案,下面结合图6来描述对卷积算子进行测试的过程。本领域技术人员通过此处的示例性描述,也可以想到对神经网络中的其他层算子进行类似的测试。
首先,假设输入数据X的数据类型为float32,并且权值W也为 float32型数据,经过卷积层处的卷积算子的运算得到结果:out_fp= X_fp32*W_fp32(*表示卷积运算),以此作为基准数据output1。然后,将输入数据和权值都转换成fix8的数据类型,即X_fp32—>X_fix8,W_fp32—>W_fix8,经过卷积算子的运算,得到的输出 out_fix8=X_fix8*W_fix8作为测试数据output2。由于output1和 output2的计算结果是在同一硬件平台上实现的,因此可以保证判别的科学性。然后,可以在比较模块603处比较基准数据和测试数据,以获得二者的差异。并且,接着可以在评价模块604处对算子是否满足精度要求进行评价。例如,可以根据前述的公式(1): diff=abs(f(output1)–f(output2))/f(output1)的取值进行判断。
具体地,首先算出diff=abs(f(out_fp)–f(out_fix8))/f(out_fp),即,确定基准结果和测试结果二者的差异diff,然后将diff与给出的经验阈值进行比较和判断。例如,当diff小于经验阈值2%时,表示待测算子通过精度测试,即表示该层算子在数据由float32转换为fix8 后的运算是正常的。相反地,当diff大于或等于经验阈值2%时,表示算子精度不满足要求,表明在数据转换后该算子运算精度不合格。
基于上文结合图6的描述,本领域技术人员也可以理解图6所示出的测试架构也可以实现于一种芯片中。该用于测试算子的精度的芯片可以包括输入端,其配置用于接收针对所述算子的测试数据。进一步,该芯片可以包括一个或多个处理器,其配置用于利用测试数据对所述算子执行运算,以获得针对所述算子的测试结果,其中所述算子与所述神经网络中的层关联;将所述测试结果与基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异;以及根据评价标准对所述差异进行评价,以确定所述算子的精度水平。
通过借助于所述输入端,在一个实施例中,该输入端可以从基准硬件平台接收在基准硬件平台上获得针对所述算子的基准结果。在另一个实施例中,替代于从基准硬件平台接收所述基准结果,所述芯片的处理器可以配置用于利用未经数据转换的测试数据对所述算子执行运算,以获得针对所述算子的所述基准结果。另外,在一个或多个实施例中,图6中所示出的比较模块和评价模块所执行的操作和实现的功能也可以由所述芯片中的处理器来替代。因此,关于图6所描述的测试硬件平台、比较模块和评价模块的细节也同样适用于此处的芯片及其处理器,因此不再赘述。另外,鉴于此处的芯片可以包括在一种集成电路中,因此本披露也就同样公开了一种用于测试神经网络中算子的精度的集成电路,其包括前述用于测试的芯片。
尽管上文结合图2-图6对神经网络的单层算子的精度测试进行了描述,本领域技术人员可以理解本披露的方案并不限于单层算子的测试,而是可以针对不同的层进行改变。例如,在一个实施例中,本披露的层可以是所述神经网络中的多个层经过融合后获得的层。在该情况下,本披露的算子就是与所述多个层的每个层相关联的算子经过融合后获得的算子。例如,基于本披露的公开和教导,本领域技术人员可以想到将卷积层和批归一化层进行融合以获得新的算子M。当根据前述的技术方案,在融合得到的算子M上对测试数据进行运算时,可以得到基准结果和测试结果,从而通过二者的差异来对该融合后的算子M的精度水平进行评价。
作为进一步的实施例,上述基于数据类型变换的算子精度的测试方法中,各层之间数据格式可以相同,也可以不同。例如,对于基准数据:输入为fp32格式的数据,然后进行卷积算子和批归一化算子的运算,最终得到融合的输出output1作为基准结果。对于测试数据:先将测试数据由fp32格式转换为fix8格式,然后将fix8格式的数据作为输入给卷积层进行卷积算子的运算,卷积后的结果转换为fp16,再作为批归一化层的输入进行批归一化算子的运算,最终得到输出output2作为测试结果。通过这样的方式,本披露的方案不仅可以确定单个的算子精度,还可以确定多个算子的融合后的算子精度。
图7是示出根据本披露实施例的一种组合处理装置700的结构图。如图所示,该组合处理装置700包括具有前述测试架构的测试装置(或也称测试设备)702,其可以配置用于执行前述结合附图所描述的测试方法。在一个或多个实施例中,该测试装置也可以是前述的用于测试的芯片、集成电路或测试运算装置。另外,该组合处理装置还包括通用互联接口704和其他处理装置706。根据本披露的测试装置702可以通过通用互联接口704与其他处理装置706进行交互,共同完成用户指定的操作。
根据本披露的方案,该其他处理装置可以包括中央处理器 (“CPU”)、图形处理器(“GPU”)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器,其数目可以不做限制而是根据实际需要来确定。在一个或多个实施例中,该其他处理装置可以包括前述的基准硬件平台或基准运算装置,从而其可以与包括测试硬件平台的测试装置形成一个测试的系统。在一个或多个实施例中,该其他处理装置可以作为本披露的测试装置(其可以具体化为人工智能相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运,完成对本机器学习运算装置的开启、停止等的基本控制;其他处理装置也可以和机器学习相关运算装置协作共同完成运算任务。
根据本披露的方案,该通用互联接口可以用于在测试装置与其他处理装置间传输数据和控制指令。例如,该测试装置可以经由所述通用互联接口从其他处理装置中获取所需的输入数据,写入该测试装置片上的存储装置(或称存储器)。进一步,该测试装置可以经由所述通用互联接口从其他处理装置中获取控制指令,写入测试装置片上的控制缓存。替代地或可选地,通用互联接口也可以读取测试装置的存储模块中的数据并传输给其他处理装置。
可选的,该组合处理装置还可以包括存储装置708,其可以分别与所述测试装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述测试装置和所述其他处理装置的数据,尤其那些在测试装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
根据应用场景的不同,本披露的组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。在此情况下,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件例如摄像头、显示器、鼠标、键盘、网卡或wifi接口。
在一些实施例里,本披露还公开了一种芯片,其包括了上述测试装置或组合处理装置。在另一些实施例里,本披露还公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,本披露还公开了一种板卡,其包括了上述芯片封装结构。参阅图8,其提供了前述的示例性板卡,上述板卡除了包括上述芯片802以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件804、接口装置806和控制器件808。
所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元810。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(“Double Data Rate SDRAM,双倍速率同步动态随机存储器”)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR 允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准 SDRAM的两倍。在一个实施例中,所述存储器件可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备812(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。在另一个实施例中,所述接口装置还可以是其他的接口,本披露并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体地,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit, MCU)。在一个或多个实施例中,所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,本披露还公开了一种电子设备或装置,其包括了上述板卡。根据不同的应用场景,电子设备或装置可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/ 或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本披露所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本披露的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在本披露的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款A1、一种用于通过硬件平台测试神经网络中算子的精度的方法,包括:
利用测试数据对所述神经网络中的算子执行运算,以获得针对所述算子的测试结果,其中所述算子与所述神经网络中的层关联;
将所述测试结果与针对所述算子的基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异;以及
根据评价标准对所述差异进行评价,以确定所述算子的精度水平。
条款A2、根据条款A1所述的方法,其中在基准硬件平台上获得针对所述算子的所述基准结果,而在测试硬件平台上获得针对所述算子的所述测试结果,所述方法进一步包括:
利用所述测试数据在所述基准硬件平台上对所述算子执行运算,以获得针对所述算子的所述基准结果。
条款A3、根据条款A1或条款A2所述的方法,其中在基准硬件平台或测试硬件平台上获得针对所述算子的所述基准结果,而在测试硬件平台上获得针对所述算子的所述测试结果,所述方法进一步包括:
利用未经数据转换的测试数据在所述基准硬件平台或所述测试硬件平台上对所述算子执行运算,以获得针对所述算子的所述基准结果;以及
利用经数据转换的测试数据在所述测试硬件平台上对所述算子执行运算,以获得针对所述算子的所述测试结果。
条款A4、根据条款A1-A3任一项所述的方法,其中所述测试数据具有多种数据类型,并且所述数据转换是数据类型的转换,所述方法进一步包括:
利用第一数据类型的所述测试数据在所述测试硬件平台上对所述算子执行运算,以获得针对所述算子的所述基准结果;以及
利用第二数据类型的所述测试数据在所述测试硬件平台对所述算子执行运算,以获得针对所述算子的所述测试结果。
条款A5、根据条款A1-A4任一项所述的方法,其中所述测试数据包括多个测试子数据,并且每个所述测试子数据具有所述多种数据类型中的至少一种数据类型,其中所述第一数据类型包括与每个所述测试子数据关联的数据类型的第一多个数据类型,而所述第二数据类型包括与每个所述测试子数据关联的数据类型的第二多个数据类型,其中获得所述基准结果和所述测试结果包括:
利用所述第一多个数据类型的所述多个测试子数据对所述算子执行运算,以获得针对所述算子的所述基准结果;以及
利用所述第二多个数据类型的所述多个测试子数据对所述算子执行运算,以获得针对所述算子的所述测试结果。
条款A6、根据条款A1-A5任一项所述的方法,其中所述测试结果和所述基准结果之间的差异包括以下中的一项:
所述基准结果和测试结果之间的第一差值;
所述第一差值与所述基准结果或测试结果之一的第一比值;以及
对所述基准结果和测试结果中的至少一个应用相同或不同数学函数后,获得的第二差值;以及
所述第二差值与应用所述相同或不同数学函数后的基准结果和测试结果之一的第二比值。
条款A7、根据条款A1-A6任一项所述的方法,其中根据所述评价标准对所述差异进行评价包括:
将所述差异与预定的阈值或阈值范围进行比较;以及
当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述算子的精度水平符合要求。
条款A8、根据条款A1-A7任一项所述的方法,其中所述层包括线性层或非线性层中的至少一个层,所述线性层至少包括卷积层和全连接层,而所述非线性层至少包括激活层和批归一化层。
条款A9、根据条款A1-A8任一项所述的方法,其中所述层是所述神经网络中的单个层,所述算子是与所述单个层关联的算子。
条款A10、根据条款A1-A9任一项所述的方法,其中所述层是所述神经网络中的多个层经过融合后获得的层,所述算子是与所述多个层的每个层关联的算子经过融合后获得的算子。
条款A11、一种用于测试神经网络中算子的精度的装置,包括:
处理器,其配置用于执行程序指令;以及
存储器,其配置用于存储所述程序指令,当所述程序指令由所述处理器加载并执行时,使得所述装置执行根据条款A1-A10的任一项所述的方法。
条款A12、一种计算机可读存储介质,其中存储有程序指令,所述程序指令适于由处理器加载并执行根据条款A1-A10的任一项所述的方法。
条款A13、一种用于测试神经网络中算子的精度的芯片,包括:输入端,其配置用于接收针对所述算子的测试数据;
处理器,其配置用于:
利用测试数据对所述算子执行运算,以获得针对所述算子的测试结果,其中所述算子与所述神经网络中的层关联;
将所述测试结果与基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异;以及
根据评价标准对所述差异进行评价,以确定所述算子的精度水平。
条款A14、根据条款A13所述的芯片,其中在基准硬件平台上获得针对所述算子的所述基准结果,并且所述输入端配置用于从所述基准硬件平台接收所述基准结果。
条款A15、根据条款A13或A14所述的芯片,其中所述处理器配置用于利用未经数据转换的测试数据对所述算子执行运算,以获得针对所述算子的所述基准结果。
条款A16、根据条款A13-A15的任一项所述的芯片,其中所述测试数据具有多种数据类型,并且所述数据转换是数据类型的转换,所述处理器进一步配置用于:
利用第一数据类型的所述测试数据对所述算子执行运算,以获得针对所述算子的所述基准结果;以及
利用第二数据类型的所述测试数据对所述算子执行运算,以获得针对所述算子的所述测试结果。
条款A17、根据条款A13-A16的任一项所述的芯片,其中所述测试数据包括多个测试子数据,并且每个所述测试子数据具有所述多种数据类型中的至少一种数据类型,其中所述第一数据类型包括与每个所述测试子数据关联的数据类型的第一多个数据类型,而所述第二数据类型包括与每个所述测试子数据关联的数据类型的第二多个数据类型,其中所述处理器进一步配置用于:
利用所述第一多个数据类型的所述多个测试子数据对所述算子执行运算,以获得针对所述算子的所述基准结果;以及
利用所述第二多个数据类型的所述多个测试子数据对所述算子执行运算,以获得针对所述算子的所述测试结果。
条款A18、根据条款A13-A17的任一项所述的芯片,其中所述测试结果和所述基准结果之间的差异包括以下中的一项:
所述基准结果和测试结果之间的第一差值;
所述第一差值与所述基准结果或测试结果之一的第一比值;以及
对所述基准结果和测试结果中的至少一个应用相同或不同数学函数后,获得的第二差值;以及
所述第二差值与应用所述相同或不同数学函数后的基准结果和测试结果之一的第二比值。
条款A19、根据条款A13-A18的任一项所述的芯片,其中所述处理器配置用于:
将所述差异与预定的阈值或阈值范围进行比较;以及
当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述算子的精度水平符合要求。
条款A20、根据条款A13-A19的任一项所述的芯片,其中所述层是所述神经网络中的单个层,所述算子是与所述单个层关联的算子。
条款A21、根据条款A13-A20的任一项所述的芯片,其中所述层是所述神经网络中的多个层经过融合后获得的层,所述算子是与所述多个层的每个层关联的算子经过融合后获得的算子。
条款A22、一种用于测试神经网络中算子的精度的集成电路,包括根据条款A13-A21的任意一项所述的芯片。
条款A23、一种用于测试神经网络中算子精度的系统,包括:接收端,其配置用于接收针对所述算子的测试数据;
至少一个基准运算设备,其配置用于利用测试数据对所述算子执行运算,以获得针对所述算子的基准结果;
至少一个测试运算设备,其配置用于利用测试数据对所述算子执行运算,以获得针对所述算子的测试结果;以及
所述至少一个基准运算设备或测试运算设备之一还配置用于:
将所述测试结果与所述基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异;以及
根据评价标准对所述差异进行评价,以确定所述算子的精度水平。
条款A24、根据条款A23所述的系统,其中所述至少一个基准运算设备还配置用于利用未经数据转换的测试数据来对所述算子执行运算,以获得针对所述算子的所述基准结果,并且所述至少一个测试运算设备还配置用于利用经数据转换的测试数据对所述算子执行运算,以获得针对所述算子的所述测试结果。
条款A25、根据条款A23或A24所述的系统,其中所述测试数据包括多个测试子数据,并且每个所述测试子数据具有所述多种数据类型中的至少一种数据类型,其中所述第一数据类型包括与每个所述测试子数据关联的数据类型的第一多个数据类型,而所述第二数据类型包括与每个所述测试子数据关联的数据类型的第二多个数据类型,
其中所述至少一个基准运算设备配置用于利用所述第一多个数据类型的所述多个测试子数据对所述算子执行运算,以获得针对所述算子的所述基准结果;以及
其中所述至少一个测试运算设备配置用于利用所述第二多个数据类型的所述多个测试子数据对所述算子执行运算,以获得针对所述算子的所述测试结果。
条款A26、根据条款A23-A25的任一项所述的系统,其中所述测试结果和所述基准结果之间的差异包括以下中的一项:
所述基准结果和测试结果之间的差值;
所述差值与所述基准结果或测试结果之一的比值;以及
对所述基准结果、测试结果、差值或比值中的一项或多项应用数学函数后所获得的差值或比值。
条款A27、根据条款A23-A26的任一项所述的系统,其中所述至少一个基准运算设备或测试运算设备之一配置用于:
将所述差异与预定的阈值或阈值范围进行比较;以及
当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述算子的精度水平符合要求。
条款A28、根据条款A23-A27的任一项所述的系统,其中所述层是所述神经网络中的单个层,所述算子是与所述单个层关联的算子。
条款A29、根据条款A23-A27的任一项所述的系统,其中所述层是所述神经网络中的多个层经过融合后获得的层,所述算子是与所述多个层的每个层关联的算子经过融合后获得的算子。
条款A30、一种用于测试神经网络中算子的精度的集成电路,包括根据条款A23-A29的任意一项所述的系统。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

Claims (30)

1.一种用于通过硬件平台测试神经网络中算子的精度的方法,包括:
利用测试数据对所述神经网络中的算子执行运算,以获得针对所述算子的测试结果,其中所述算子与所述神经网络中的层关联;
将所述测试结果与针对所述算子的基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异;以及
根据评价标准对所述差异进行评价,以确定所述算子的精度水平。
2.根据权利要求1所述的方法,其中在基准硬件平台上获得针对所述算子的所述基准结果,而在测试硬件平台上获得针对所述算子的所述测试结果,所述方法进一步包括:
利用所述测试数据在所述基准硬件平台上对所述算子执行运算,以获得针对所述算子的所述基准结果。
3.根据权利要求1所述的方法,其中在基准硬件平台或测试硬件平台上获得针对所述算子的所述基准结果,而在测试硬件平台上获得针对所述算子的所述测试结果,所述方法进一步包括:
利用未经数据转换的测试数据在所述基准硬件平台或所述测试硬件平台上对所述算子执行运算,以获得针对所述算子的所述基准结果;以及
利用经数据转换的测试数据在所述测试硬件平台上对所述算子执行运算,以获得针对所述算子的所述测试结果。
4.根据权利要求3所述的方法,其中所述测试数据具有多种数据类型,并且所述数据转换是数据类型的转换,所述方法进一步包括:
利用第一数据类型的所述测试数据在所述测试硬件平台上对所述算子执行运算,以获得针对所述算子的所述基准结果;以及
利用第二数据类型的所述测试数据在所述测试硬件平台对所述算子执行运算,以获得针对所述算子的所述测试结果。
5.根据权利要求4所述的方法,其中所述测试数据包括多个测试子数据,并且每个所述测试子数据具有所述多种数据类型中的至少一种数据类型,其中所述第一数据类型包括与每个所述测试子数据关联的数据类型的第一多个数据类型,而所述第二数据类型包括与每个所述测试子数据关联的数据类型的第二多个数据类型,其中获得所述基准结果和所述测试结果包括:
利用所述第一多个数据类型的所述多个测试子数据对所述算子执行运算,以获得针对所述算子的所述基准结果;以及
利用所述第二多个数据类型的所述多个测试子数据对所述算子执行运算,以获得针对所述算子的所述测试结果。
6.根据权利要求1所述的方法,其中所述测试结果和所述基准结果之间的差异包括以下中的一项:
所述基准结果和测试结果之间的第一差值;
所述第一差值与所述基准结果或测试结果之一的第一比值;
对所述基准结果和测试结果中的至少一个应用相同或不同数学函数后,获得的第二差值;以及
所述第二差值与应用所述相同或不同数学函数后的基准结果和测试结果之一的第二比值。
7.根据权利要求1所述的方法,其中根据所述评价标准对所述差异进行评价包括:
将所述差异与预定的阈值或阈值范围进行比较;以及
当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述算子的精度水平符合要求。
8.根据权利要求1所述的方法,其中所述层包括线性层或非线性层中的至少一个层,所述线性层至少包括卷积层和全连接层,而所述非线性层至少包括激活层和批归一化层。
9.根据权利要求1-8的任意一项所述的方法,其中所述层是所述神经网络中的单个层,所述算子是与所述单个层关联的算子。
10.根据权利要求1-8的任意一项所述的方法,其中所述层是所述神经网络中的多个层经过融合后获得的层,所述算子是与所述多个层的每个层关联的算子经过融合后获得的算子。
11.一种测试神经网络中算子的精度的装置,包括:
处理器,其配置用于执行程序指令;以及
存储器,其配置用于存储所述程序指令,当所述程序指令由所述处理器加载并执行时,使得所述装置执行根据权利要求1-10的任意一项所述的方法。
12.一种计算机可读存储介质,其中存储有程序指令,所述程序指令适于由处理器加载并执行根据权利要求1-10的任意一项所述的方法。
13.一种用于测试神经网络中算子的精度的芯片,包括:
输入端,其配置用于接收针对所述算子的测试数据;
处理器,其配置用于:
利用测试数据对所述算子执行运算,以获得针对所述算子的测试结果,其中所述算子与所述神经网络中的层关联;
将所述测试结果与基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异;以及
根据评价标准对所述差异进行评价,以确定所述算子的精度水平。
14.根据权利要求13所述的芯片,其中在基准硬件平台上获得针对所述算子的所述基准结果,并且所述输入端配置用于从所述基准硬件平台接收所述基准结果。
15.根据权利要求13所述的芯片,其中所述处理器配置用于利用未经数据转换的测试数据对所述算子执行运算,以获得针对所述算子的所述基准结果。
16.根据权利要求15所述的芯片,其中所述测试数据具有多种数据类型,并且所述数据转换是数据类型的转换,所述处理器进一步配置用于:
利用第一数据类型的所述测试数据对所述算子执行运算,以获得针对所述算子的所述基准结果;以及
利用第二数据类型的所述测试数据对所述算子执行运算,以获得针对所述算子的所述测试结果。
17.根据权利要求16所述的芯片,其中所述测试数据包括多个测试子数据,并且每个所述测试子数据具有所述多种数据类型中的至少一种数据类型,其中所述第一数据类型包括与每个所述测试子数据关联的数据类型的第一多个数据类型,而所述第二数据类型包括与每个所述测试子数据关联的数据类型的第二多个数据类型,其中所述处理器进一步配置用于:
利用所述第一多个数据类型的所述多个测试子数据对所述算子执行运算,以获得针对所述算子的所述基准结果;以及
利用所述第二多个数据类型的所述多个测试子数据对所述算子执行运算,以获得针对所述算子的所述测试结果。
18.根据权利要求13所述的芯片,其中所述测试结果和所述基准结果之间的差异包括以下中的一项:
所述基准结果和测试结果之间的第一差值;
所述第一差值与所述基准结果或测试结果之一的第一比值;以及
对所述基准结果和测试结果中的至少一个应用相同或不同数学函数后,获得的第二差值;以及
所述第二差值与应用所述相同或不同数学函数后的基准结果和测试结果之一的第二比值。
19.根据权利要求13所述的芯片,其中所述处理器配置用于:
将所述差异与预定的阈值或阈值范围进行比较;以及
当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述算子的精度水平符合要求。
20.根据权利要求13-19的任意一项所述的芯片,其中所述层是所述神经网络中的单个层,所述算子是与所述单个层关联的算子。
21.根据权利要求13-19的任意一项所述的芯片,其中所述层是所述神经网络中的多个层经过融合后获得的层,所述算子是与所述多个层的每个层关联的算子经过融合后获得的算子。
22.一种用于测试神经网络中算子的精度的集成电路,包括根据权利要求13-21的任意一项所述的芯片。
23.一种用于测试神经网络中算子精度的系统,包括:
接收端,其配置用于接收针对所述算子的测试数据;
至少一个基准运算设备,其配置用于利用测试数据对所述算子执行运算,以获得针对所述算子的基准结果;
至少一个测试运算设备,其配置用于利用测试数据对所述算子执行运算,以获得针对所述算子的测试结果;以及
所述至少一个基准运算设备或测试运算设备之一还配置用于:
将所述测试结果与所述基准结果进行比较,以确定所述测试结果和所述基准结果之间的差异;以及
根据评价标准对所述差异进行评价,以确定所述算子的精度水平。
24.根据权利要求23所述的系统,其中所述至少一个基准运算设备还配置用于利用未经数据转换的测试数据来对所述算子执行运算,以获得针对所述算子的所述基准结果,并且所述至少一个测试运算设备还配置用于利用经数据转换的测试数据对所述算子执行运算,以获得针对所述算子的所述测试结果。
25.根据权利要求24所述的系统,其中所述测试数据包括多个测试子数据,并且每个所述测试子数据具有所述多种数据类型中的至少一种数据类型,其中所述第一数据类型包括与每个所述测试子数据关联的数据类型的第一多个数据类型,而所述第二数据类型包括与每个所述测试子数据关联的数据类型的第二多个数据类型,
其中所述至少一个基准运算设备配置用于利用所述第一多个数据类型的所述多个测试子数据对所述算子执行运算,以获得针对所述算子的所述基准结果;以及
其中所述至少一个测试运算设备配置用于利用所述第二多个数据类型的所述多个测试子数据对所述算子执行运算,以获得针对所述算子的所述测试结果。
26.根据权利要求23所述的系统,其中所述测试结果和所述基准结果之间的差异包括以下中的一项:
所述基准结果和测试结果之间的第一差值;
所述第一差值与所述基准结果或测试结果之一的第一比值;以及
对所述基准结果和测试结果中的至少一个应用相同或不同数学函数后,获得的第二差值;以及
所述第二差值与应用所述相同或不同数学函数后的基准结果和测试结果之一的第二比值。
27.根据权利要求23所述的系统,其中所述至少一个基准运算设备或测试运算设备之一配置用于:
将所述差异与预定的阈值或阈值范围进行比较;以及
当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述算子的精度水平符合要求。
28.根据权利要求23-27的任意一项所述的系统,其中所述层是所述神经网络中的单个层,所述算子是与所述单个层关联的算子。
29.根据权利要求23-27的任意一项所述的系统,其中所述层是所述神经网络中的多个层经过融合后获得的层,所述算子是与所述多个层的每个层关联的算子经过融合后获得的算子。
30.一种用于测试神经网络中算子的精度的集成电路,包括根据权利要求23-29的任意一项所述的系统。
CN201911251611.2A 2019-12-09 2019-12-09 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质 Active CN113033757B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911251611.2A CN113033757B (zh) 2019-12-09 2019-12-09 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911251611.2A CN113033757B (zh) 2019-12-09 2019-12-09 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN113033757A true CN113033757A (zh) 2021-06-25
CN113033757B CN113033757B (zh) 2024-05-07

Family

ID=76451345

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911251611.2A Active CN113033757B (zh) 2019-12-09 2019-12-09 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN113033757B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114818600A (zh) * 2022-04-29 2022-07-29 上海阵量智能科技有限公司 一种芯片验证方法、装置、电子设备以及存储介质
CN115934346A (zh) * 2022-12-28 2023-04-07 北京大学 算子的自动检测方法、装置、电子设备及介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326984A (zh) * 2016-08-09 2017-01-11 北京京东尚科信息技术有限公司 用户意图识别方法和装置、自动应答系统
WO2017176384A2 (en) * 2016-02-24 2017-10-12 Sri International Low precision neural networks using subband decomposition
US20180268256A1 (en) * 2017-03-16 2018-09-20 Aquifi, Inc. Systems and methods for keypoint detection with convolutional neural networks
CN109670578A (zh) * 2018-12-14 2019-04-23 北京中科寒武纪科技有限公司 神经网络首层卷积层数据处理方法、装置及计算机设备
WO2019143026A1 (ko) * 2018-01-16 2019-07-25 한국과학기술원 특징맵 압축을 이용한 이미지 처리 방법 및 장치
CN110210605A (zh) * 2019-05-31 2019-09-06 Oppo广东移动通信有限公司 硬件算子匹配方法及相关产品
CN110309911A (zh) * 2019-07-05 2019-10-08 北京中科寒武纪科技有限公司 神经网络模型验证方法、装置、计算机设备和存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017176384A2 (en) * 2016-02-24 2017-10-12 Sri International Low precision neural networks using subband decomposition
CN106326984A (zh) * 2016-08-09 2017-01-11 北京京东尚科信息技术有限公司 用户意图识别方法和装置、自动应答系统
US20180268256A1 (en) * 2017-03-16 2018-09-20 Aquifi, Inc. Systems and methods for keypoint detection with convolutional neural networks
WO2019143026A1 (ko) * 2018-01-16 2019-07-25 한국과학기술원 특징맵 압축을 이용한 이미지 처리 방법 및 장치
CN109670578A (zh) * 2018-12-14 2019-04-23 北京中科寒武纪科技有限公司 神经网络首层卷积层数据处理方法、装置及计算机设备
CN110210605A (zh) * 2019-05-31 2019-09-06 Oppo广东移动通信有限公司 硬件算子匹配方法及相关产品
CN110309911A (zh) * 2019-07-05 2019-10-08 北京中科寒武纪科技有限公司 神经网络模型验证方法、装置、计算机设备和存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114818600A (zh) * 2022-04-29 2022-07-29 上海阵量智能科技有限公司 一种芯片验证方法、装置、电子设备以及存储介质
CN115934346A (zh) * 2022-12-28 2023-04-07 北京大学 算子的自动检测方法、装置、电子设备及介质
CN115934346B (zh) * 2022-12-28 2023-10-20 北京大学 算子的自动检测方法、装置、电子设备及介质

Also Published As

Publication number Publication date
CN113033757B (zh) 2024-05-07

Similar Documents

Publication Publication Date Title
KR102362532B1 (ko) 신경망 기반의 배터리 잔존 수명 예측 방법 및 장치
CN113837596B (zh) 一种故障确定方法、装置、电子设备及存储介质
KR20220038907A (ko) 생성적 대립 신경망(gan) 기반의 데이터 예측 방법, 그리고 이를 구현하기 위한 장치
CN109739703B (zh) 调错方法及相关产品
CN111027691A (zh) 用于神经网络运算的计算装置及其集成电路板卡
WO2019176989A1 (ja) 検査システム、識別システム、及び学習データ生成装置
CN110377472B (zh) 定位芯片运行错误的方法及装置
CN113033757B (zh) 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质
JP7056259B2 (ja) 検査システム、識別システム、及び識別器評価装置
CN113869496A (zh) 一种神经网络的获取方法、数据处理方法以及相关设备
CN115526882A (zh) 一种医学图像的分类方法、装置、设备及存储介质
CN109143053A (zh) 温度补偿校验方法及终端设备
CN113554624B (zh) 异常检测方法、装置及计算机存储介质
CN113033762B (zh) 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质
US20210142171A1 (en) Electronic apparatus and method of controlling thereof
CN113033760B (zh) 用于测试神经网络中算子精度的方法、测试装置及其系统
CN114492742A (zh) 神经网络结构搜索、模型发布方法、电子设备和存储介质
CN111126566B (zh) 基于gan模型的异常家具布局数据检测方法
CN113112009B (zh) 用于神经网络数据量化的方法、装置和计算机可读存储介质
CN111258537B (zh) 一种防止数据溢出的方法、装置和芯片
CN110020720B (zh) 算子拼接方法及装置
US20190172583A1 (en) Method and system to improve clinical workflow
CN113191477A (zh) 碱式电解槽的温度传感器故障诊断方法与装置
JP2003050631A (ja) 異常診断システムの学習データ生成方法、異常診断システムの構築プログラム、異常診断プログラム、異常診断システムの構築装置および異常診断システム
KR102646887B1 (ko) 이미지 픽셀의 위치 가중치 설정을 포함하는 이상 탐지 방법 및 장치

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