CN113033760A - 用于测试神经网络中算子精度的方法、测试装置及其系统 - Google Patents

用于测试神经网络中算子精度的方法、测试装置及其系统 Download PDF

Info

Publication number
CN113033760A
CN113033760A CN201911251606.1A CN201911251606A CN113033760A CN 113033760 A CN113033760 A CN 113033760A CN 201911251606 A CN201911251606 A CN 201911251606A CN 113033760 A CN113033760 A CN 113033760A
Authority
CN
China
Prior art keywords
operators
test
difference
result
target
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
CN201911251606.1A
Other languages
English (en)
Other versions
CN113033760B (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 CN201911251606.1A priority Critical patent/CN113033760B/zh
Priority claimed from CN201911251606.1A external-priority patent/CN113033760B/zh
Publication of CN113033760A publication Critical patent/CN113033760A/zh
Application granted granted Critical
Publication of CN113033760B publication Critical patent/CN113033760B/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
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Debugging And Monitoring (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利用测试数据对所述神经网络的多个算子执行运算,以获得针对所述神经网络性能的基准结果,其中所述多个算子包括多个目标算子。在一个实施例中,可以在基准硬件平台上利用测试数据(例如测试样本数据集) 对神经网络的多个算子执行运算,以获得针对所述神经网络性能的所述基准结果。该基准硬件平台例如可以是公知的硬件平台(如“CPU”或“GPU”)或用户指定的硬件平台,例如是用户的前一代硬件平台。如前结合图1所描述的,多个目标算子可以是神经网络中的例如卷积层算子、全连接层算子、激活层算子,归一化层算子等算子。通过将包括这些目标算子的多个算子的神经网络布置于基准硬件平台上进行运算,可以获得针对所述神经网络性能的基准结果。
接着,在步骤202处,方法200利用测试数据对所述多个目标算子执行运算,以获得针对所述神经网络性能的第一测试结果。根据本披露的方案,可以通过在不同硬件平台上的布置和不同数据类型的运算,提供多种不同方式所获得的第一测试结果。
关于在不同硬件平台上的布置,在一个实施例中,当所述多个算子仅包括多个目标算子时,则获得第一测试结果可以包括在测试硬件平台上利用针对所述多个目标算子的测试数据来执行运算,以获得针对所述神经网络性能的所述第一测试结果。在另一个实施例中,当所述多个算子还包括至少一个非目标算子时,则获得第一测试结果可以包括将至少一个非目标算子布置于基准硬件平台上而将多个目标算子布置于测试硬件平台上,并且利用所述测试数据对所述至少一个非目标算子和多个目标算子执行运算,以获得第一测试结果。例如,这里的多个目标算子可以是神经网络中的例如卷积层算子、全连接层算子和激活层算子等算子,而至少一个非目标算子可以是归一化层算子,通过将归一化层算子布置于基准硬件平台(例如“CPU”),而将卷积层算子、全连接层算子和激活层算子等目标算子布置于测试硬件平台,通过对神经网络进行运算可以获得第一测试结果。
关于不同数据类型的运算,在一个实施例中,当多个算子仅包括多个目标算子时,可以在基准硬件平台或测试硬件平台上利用基准数据类型的测试数据对多个算子执行运算,以获得针对所述神经网络性能的所述基准结果,以及在所述测试硬件平台上利用测试数据类型的测试数据对多个算子执行所述运算,以获得针对神经网络的第一测试结果。例如,当多个目标算子是神经网络中的例如卷积层算子、全连接层算子、激活层算子,归一化层算子等算子时,可以将针对这些算子的测试数据设置为fix8(即,8位定点型数据)以在基准硬件平台上运算,从而获得基准结果。接着,可以将测试数据的数据类型转换成float32(即,32位浮点型数据),并且在测试硬件平台上针对前述的多个目标算子对神经网络执行运算,以获得第一测试结果。
类似地,在另一个实施例中,当多个算子还包括至少一个非目标算子时,则可以在基准硬件平台或测试硬件平台上利用基准数据类型的测试数据对多个算子执行所述运算,以获得针对所述神经网络性能的基准结果,以及在测试硬件平台上,将与至少一个非目标算子运算相关的数据以基准数据类型来表示以参与运算,而将与目标算子运算相关的数据以测试数据类型来表示以参与运算,从而获得针对所述神经网络性能的第一测试结果,其中针对于每个所述目标算子,与其相关的所述基准数据类型和所述测试数据类型不同。例如,当多个算子是神经网络中的例如卷积层算子、全连接层算子、激活层算子,归一化层算子等算子时,可以将针对这些算子的测试数据设置为 float32(即,32位浮点型数据)以在基准硬件平台或测试硬件平台上运算,从而获得基准结果。接着,在测试硬件平台上,可以将针对于非目标算子(如归一化层算子)的测试数据的数据类型保持在float32 型,而将针对前述的多个目标算子(例如卷积层算子、全连接层算子、激活层算子)的测试数据转换成fix8(即,8位定点型数据)对神经网络执行运算,以获得第一测试结果。
返回到图2的流程,在步骤203处,方法200将上述结合不同实施例所讨论的基准结果与第一测试结果进行比较,以确定基准结果和所述第一测试结果之间的差异。
关于基准结果和第一测试结果之间的差异,在一个实施例中,该差异可以是基准结果和第一测试结果之间的差值(例如为了区分,可以称为第一差值),或者是差值与所述基准结果或第一测试结果之一的比值(例如为了区分,可以称为第一比值),或者是对所述基准结果、第一测试结果、差值或比值中的一项或多项应用相同或不同的数学函数后所获得的差值(例如称为第二差值)或比值(例如称为第二比值)。这里,差值可以是正值、负值或绝对值,而该数学函数可以例如是与差值或均方差相关的函数。由此,可以对所述基准结果、第一测试结果或差值应用相同或不同的数学函数,并且将所述比值确定为所述差异。另外,还可以对所述基准结果、第一测试结果、差值或比值应用相同或不同的数学函数,并且将所述比值的函数值确定为所述差异。可以看出,本披露的方案提供了多种方式来确定基准结果和第一测试结果之间的差异。
在一个或多个实施例中,上述的差异可以通过下面的数学函数式(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求均方差。
最后,在步骤204处,方法200根据评价标准对所述差异进行评价,以确定所述多个目标算子是否满足精度要求。在一个实施例中,此处根据评价标准对所述差异进行评价可以包括将所述差异与预定的阈值或阈值范围进行比较;以及当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,则确定所述多个目标算子的精度水平符合要求。
例如,在确定所述多个目标算子的精度水平过程中,首先给出关于整个神经网络性能的一个经验值或阈值,当通过前述不同方式获得的差异diff小于或等于该值时,表示整个神经网络的性能达到标准,即该多个目标算子符合精度要求;否则,则表示整个神经网络的性能并未达到精度要求,即该多个目标算子并不符合精度要求。例如,当前述的经验值或阈值为2%时,diff小于或等于2%时,则可以确定当前测试的多个目标算子在测试硬件平台上满足精度要求。反之,当所确定的diff大于2%时,则可以确定当前测试的多个目标算子在测试硬件平台上并未满足精度的要求。又例如,当前述的阈值范围为 2%~5%时,diff等于3%时,则可以确定当前测试的多个目标算子在测试硬件平台上满足精度要求。反之,当所确定的diff小于2%或大于5%时,则可以确定当前测试的多个目标算子在测试硬件平台上并未满足精度的要求。
上文结合图2对本披露的测试方法200及其多个实施例进行了描述。通过结合图2的描述,本领域技术人员可以理解本披露的方案可以确定整个神经网络中的多个目标算子是否满足其性能的要求。附加地或可选地,可以在后续操作中对未满足精度要求的多个目标算子之一进行确定和校正,以使得整个神经网络的性能达到预期的水平。下面将参考图3-图7进一步描述本披露的测试方式200的多个实施例及其变形方案。
图3是示出根据本披露实施例的基于不同硬件平台的测试方法300 的流程图。通过前文和下面的描述,本领域技术人员能够理解图3的测试方法主要是基于不同的硬件平台来对多个目标算子进行测试,并且借助于神经网络的性能来评估其是否满足精度水平。
如图3中所示,在步骤301处,方法300将测试数据分别输入到不同的硬件平台,例如本披露的基准硬件平台(例如公认标准硬件CPU) 和测试硬件平台(例如人工智能芯片)。接着,流程分别进入到步骤 302和303,此处方法300分别在基准硬件平台和测试硬件平台上利用测试数据,针对包括多个目标算子的多个算子进行测试。例如,多个算子可以是前述的卷积层算子、池化层算子、批归一化层算子、激活层算子和全连接层算子,而多个目标算子可以是其中的卷积层算子和激活层算子,并且将神经网络的这些算子分别于基准硬件平台和测试硬件平台上进行运算。通过这样的运算,可以在步骤304和305处输出在基准硬件平台上获得的基准结果和在测试硬件平台上获得的第一测试结果。
接着,在步骤306处,方法300可以对基准结果和第一测试结果进行比较,以确定二者之间的差异。正如前面结合图2所描述的,本披露可以采用各种方式来确定基准结果和第一测试结果之间的差异,例如求取二者之间的差值作为差异,将该差值与基准结果和第一测试结果之一的比值作为差异,或者将以基准结果和第一测试结果作为参数的函数的函数值作为差异等。对所述差异的评价可以涉及与经验值和阈值或阈值范围的比较。鉴于前文已经对确定差异的方法和评价方式作出详细的描述,此处不再赘述。
在确定所述差异后,流程可以前进到步骤307,此处方法300根据评价标准对差异进行评价后,确定多个目标算子不满足要求。附加地或可选地,在具体实现中,可以以可听或可视的方式向用户指示该多个目标算子的精度水平如何。例如,在多个目标算子的精度水平没有达到预期的水平时,可以向用户指示该情形,由此促使技术人员对该多个目标算子或神经网络进行调整以适应新的硬件平台的要求,例如可以执行下面结合步骤308-311所描述的操作。反之,当多个目标算子的精度水平满足预期水平,例如包括该多个目标算子的神经网络的整体性能满足要求,则表明该多个目标算子通过该测试硬件平台的测试,可以应用于该测试硬件平台上。
在步骤308处,在确定多个目标算子不能满足精度要求时,方法 300将多个目标算子之一布置于测试硬件平台上而将多个算子中的剩余算子布置于基准硬件平台上,并且在步骤309处,利用所述测试数据对所述目标算子之一和剩余算子执行运算,以获得针对所述神经网络的第二测试结果。例如,当多个算子是前述的卷积层算子、池化层算子、批归一化层算子、激活层算子和全连接层算子,而多个目标算子可以是其中的卷积层算子和激活层算子,则结合步骤308和309,可以先将目标算子之一-卷积层算子布置于测试硬件平台,而将多个算子中剩余算子-池化层算子、批归一化层算子、激活层算子和全连接层算子布置于基准硬件平台,并且在该布置后,利用测试数据对整个神经网络执行运算,以获得所述的第二测试结果。
在获得所述第二测试结果后,在步骤310处,方法300将在步骤304 处获得的基准结果与第二测试结果进行比较,以确定基准结果和所述第二测试结果之间的差异,并且在步骤311处,方法300根据评价结果对差异进行评价,以确定目标算子之一是否满足精度要求。结合前述的例子,通过对作为目标算子之一的卷积层算子执行步骤310和311的操作,可以确定该卷积层算子是否是造成神经网络整体性能下降的原因。当确定该卷积算子的精度未达到要求而造成神经网络性能下降时,可以执行针对性的调整,例如对测试硬件平台与卷积算子运算相关的硬件架构进行调整,以使得卷积算子精度达到要求。当再次执行方法300的测试并确定整个神经网络在调整后的测试硬件平台上满足性能要求时,可以不再对多个目标算子中的其余目标算子执行如步骤308-311的操作。
关于基准结果和第二测试结果之间的差异,其确定方式与在前结合图2所描述的基准结果和第一测试结果之间的差异类似。例如,在一个实施例中,可以将所述基准结果和第二测试结果之间的差值与所述基准结果或第二测试结果之一的比值确定为差异。又例如,可以对基准结果、第二测试结果或差值应用相同或不同的数学函数,并且将比值确定为所述差异。再例如,可以对所述基准结果、第二测试结果、差值或比值应用相同或不同的数学函数,并且将所述比值的函数值确定为所述差异。进一步,步骤311也可以示例性的具体化为:将所述差异与预定的阈值或阈值范围进行比较;以及当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述目标算子之一的精度符合要求。
以上结合图3描述了本披露的测试方法300基于不同硬件平台对神经网络中多个算子(包括多个目标算子)进行测试,以确定多个目标算子是否满足其性能的要求。附加地或可选地,可以在后续操作中对未满足精度要求的多个目标算子之一进行确定和校正,以使得整个神经网络的整体性能符合预定的要求。
图4是示出根据本披露实施例的基于不同硬件平台的测试架构400 的示意框图。通过下文的描述,本领域技术人员可以理解图4的测试架构支持本披露结合图3描述的方案,并且关于图3描述的技术细节同样也适用于图4所示出的内容。
如图4中所示,与图1结构类似的神经网络分别运行于基准硬件平台401和测试硬件平台402上,该神经网络示例性地包括输入层、卷积层、池化层、激活层、全连接层和输出层。输入数据(例如像素数据)经由输入层输入进神经网络中,并分别经过卷积层、池化层、激活层、全连接层的处理,最终经由输出层的处理后输出。对于本披露的方案来说,其可以测试与上述各层关联的多个算子的精度。例如,当多个算子是卷积层算子、池化层算子、批归一化层算子、激活层算子和全连接层算子时,可以在基准硬件平台上利用测试数据对多个算子执行运算,以获得神经网络性能的基准结果。又例如,假设将池化层算子、批归一化层算子和全连接层算子作为非目标算子置于基准硬件平台上,而将卷积层算子、激活层算子作为目标算子置于测试硬件平台上利用测试数据执行运算,利用测试数据分别对多个目标算子和其他非目标算子执行运算,从而获得神经网络性能的第一测试结果。
为了进一步理解本披露的方案,下面结合图4以卷积层算子和激活层算子作为目标算子为例,做进一步的说明。本领域技术人员通过此处的示例性描述,也可以想到对神经网络中的其他层算子(例如全连接层或批归一化层)进行类似的测试。例如,对神经网络架构“resnet18”上多个算子精度进行正向测试的过程中,在基准硬件平台上,可以利用测试数据(例如测试样本数据集)输入到多个算子以进行多次推断(inference),从而获得针对整个神经网络的评价标准 output1,作为基准结果。该基准结果在一个应用场景中可以是“top1”错误率形式的结果,因此前述的output1可以标识为top1_1。进一步地,将多个非目标算子(例如池化层算子、批归一化层算子和全连接层算子)布置于基准硬件平台上,而将多个目标算子(例如卷积层算子、激活层算子)布置于测试硬件平台上,利用测试数据对多个目标算子和其他非目标算子执行运算,从而获得针对神经网络的评价标准 output2,作为第一测试结果。该第一测试结果在一个场景中也可以是“top1”错误率形式的结果,因此可以将前述的output2标识为top1_2。
接着,在比较模块403处,可以对基准结果top1_1和第一测试结果top1_2进行比较,以确定二者之间的差异。例如,首先可以参考前述的式(1)计算出diff=abs(f(top1_1)–f(top1_2))/f(top1_1),然后将 diff与给出的经验阈值1%做比较。在经过比较后,可以由评价模块 404根据比较的结果来进行相应的评价。例如,当差异diff小于或等于1%时,可以确定多个目标算子通过精度测试,则表明在该测试硬件平台上,神经网络的整体性能符合预定的要求;相反地,当diff大于1%时,可以确定多个目标算子未通过精度测试,表明在新的硬件平台上,多个目标算子的精度不符合要求。需要注意的是,这样的经验阈值1%仅仅是示例性或说明性的,本领域技术人员可以根据实际操作需要设定不同的阈值或阈值范围,从而确定多个目标算子精度是否能够满足要求。为了便于描述,将上述针对多个目标算子进行测试以确定多个目标算子是否符合精度要求的操作称为第一测试操作。
在经过上述的差异评价后,当确定多个目标算子不能满足精度要求时,附加地或可选地,可以执行基于测试硬件平台402、比较模块 403和评价模块404的第二测试操作,以进一步判断目标算子之一是否满足精度要求。
例如,在本发明的硬件架构400上,可以将多个目标算子之一布置于测试硬件平台402上,而将多个算子中的剩余算子布置于基准硬件平台上,利用所述测试数据对所述目标算子之一和剩余算子执行运算,以获得针对所述神经网络的第二测试结果。
在获得所述第二测试结果后,在比较模块403处可以将在基准硬件平台401上获得的基准结果与第二测试结果进行比较,以确定基准结果和所述第二测试结果之间的差异。然后,可以由评价模块404根据评价标准对差异进行评价,将所述差异与预定的阈值或阈值范围进行比较;以及当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,以确定目标算子之一是否满足精度要求。结合前述的例子,通过对作为目标算子之一的卷积层算子执行基于测试硬件平台402、比较模块403和评价模块404的第二测试操作,可以确定该卷积层算子是否是造成神经网络整体性能不满足要求的原因。当确定该卷积层算子的精度未达到要求而造成神经网络整体性能下降时,可以执行针对性的调整,例如进行与卷积层算子运算相关的测试硬件架构的调整,以使得卷积层算子精度符合要求。在经过所述测试硬件架构的调整后,可以再次执行针对多个目标算子的第一测试操作,当确定整个神经网络性能在调整后的测试硬件平台上可以符合要求时,可以不再对多个目标算子中的剩余目标算子单独评估精度水平。
进一步,根据上文结合图4的描述,本领域技术人员也可以想到图4所示的架构也可以用于构建一种用于通过硬件平台测试神经网络中算子精度的系统。该用于测试的系统可以包括接收端,其配置成接收针对所述神经网络多个算子的测试数据,其中所述多个算子包括多个目标算子。该系统还可以包括至少一个基准运算设备,其配置成利用测试数据对所述神经网络的多个算子执行运算,以获得针对所述神经网络性能的基准结果。在一个实施例中,该至少一个基准运算设备可以实施为或者包括例如图4中所示出的基准硬件平台,其例如可以包括标准的CPU或GPU等芯片或处理器。
更进一步,该系统还可以包括至少一个测试运算设备,其配置成与所述至少一个基准运算设备协作,以利用测试数据对所述多个目标算子执行运算,从而获得针对所述神经网络性能的第一测试结果。在一个实施例中,该至少一个测试运算设备可以实施为或包括例如图4 中的测试硬件平台,其例如可以是任意的目标算子在其上运行时测试精度的人工智能芯片或处理器。在另一个实施例中,所述多个算子还包括至少一个非目标算子,并且所述至少一个非目标算子布置于基准运算设备上,而所述多个目标算子布置于测试运算设备上,以利用测试数据分别对多个目标算子和非目标算子执行运算来获得第一测试结果。在上述的系统中,前述的至少一个基准运算设备或测试运算设备之一还可以配置成:将所述基准结果与所述第一测试结果进行比较,以确定所述基准结果和所述第一测试结果之间的差异;以及根据评价标准对所述差异进行评价,以确定所述多个目标算子是否满足精度要求。
当确定所述多个算子中的多个目标算子不满足精度要求时,附加地或可选地,还可以评估多个目标算子之一的算子,是否达到精度要求。具体地,对于所述多个目标算子之一,在所述系统中将所述目标算子之一布置于测试运算设备上,而将所述多个算子中的剩余算子布置于基准运算设备上,并且利用测试数据对所述目标算子之一和剩余算子执行运算,以获得针对神经网络性能的第二测试结果。并且,前述的至少一个基准运算设备或测试运算设备之一还可以配置成:将所述基准结果与所述第二测试结果进行比较,以确定所述基准结果和所述第二测试结果之间的差异;以及根据评价标准对所述差异进行评价,以确定所述目标算子之一是否满足精度要求。
在此,本领域技术人员可以理解在所述系统中,基准运算设备或测试运算设备中的任意一个可以执行图4中的比较模块和评价模块的操作并实现同样的功能,即得以对目标算子在测试运算设备上的精度水平进行确定。由于图4中关于基准硬件平台、测试硬件平台、比较模块或评价模块的描述也同样适用于所述系统中的基准运算设备和测试运算设备,因此在此将不再赘述。进一步,本领域技术人员可以理解这里所述的系统也可以实现于集成电路上,因此本披露在此也就公开了一种具有如上特征的系统的集成电路,该集成电路可以用于测试神经网络中算子的精度。
图5是示出根据本披露实施例的基于数据转换的测试方法500的流程图。通过前文和下面的描述,本领域技术人员能够理解图5的测试方法主要是基于相同硬件平台(例如基准硬件平台或测试硬件平台) 对神经网络的多个算子进行测试,以评估目标算子的精度水平,从而评估整个神经网络性能是否满足要求。
如图5中所示,在步骤501处,方法500接收输入的测试数据。在一个实施例中,该测试数据可以具有多种数据类型,例如整型8位数据(表示为int8)、定点型8位数据(表示为fix8)、浮点型16位数据(表示为float16)、浮点型32位数据(表示为float32)等。在另一个实施例中,此处的测试数据可以包括多个测试子数据,并且每个所述测试子数据具有所述多种数据类型中的至少一种数据类型。例如,针对卷积层算子的测试子数据,其可以包括float32数据类型的输入数据和权值或者fix8数据类型的输入数据和权值。
接着,方法500分别前进到步骤502和503处。具体地,在步骤 502处,方法500在基准硬件平台或测试硬件平台上利用基准数据类型的测试数据,针对包括多个目标算子的多个算子进行测试,以获得针对神经网络性能的基准结果。在一个实施例中,此处的基准数据类型可以是前述的多种数据类型(例如int8、fix8、float16、float32等)。进一步地,这里的多个算子可以是与神经网络的卷积层、池化层、批归一化层、激活层和全连接层中的多个层关联的算子。在步骤503处,方法500执行在测试硬件平台上利用测试数据类型的测试数据,针对多个目标算子进行测试,以获得针对所述神经网络性能的所述第一测试结果。接着,在步骤504和505处,方法500分别输出基准结果和第一测试结果。
关于上述的基准数据类型和测试数据类型,根据本披露的一个或多个实施例,针对每个目标算子,与其相关的所述基准数据类型和所述测试数据类型可以不同。例如,神经网络的多个算子(例如卷积层算子、池化层算子、批归一化层算子、激活层算子和全连接层算子) 可以在基准硬件平台上利用包括float32型(即本例中的基准数据类型)的输入数据和权值的测试数据,来针对神经网络的性能执行运算,以获得基准结果。接着,可以将上述与多个目标算子(例如卷积层算子和激活层算子)相关的测试数据由float32型转换为fix8型(即本例中的测试数据类型),并且保持其他非目标算子的基准数据类型不变,在测试硬件平台上执行运算,从而获得针对神经网络性能的第一测试结果。
在获得上述的基准结果和第一测试结果后,方法500前进到步骤 506,此处执行对两种输出结果进行比较,以确定二者的差异。接着,根据评价标准对差异进行评价,将所述差异与预定的阈值或阈值范围进行比较,以及当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,可以确定所述多个目标算子精度符合要求,可以表明在该测试数据类型下整个神经网络性能可以满足要求。反之,当确定所述多个目标算子不满足精度要求时,可以向用户指示该情形,由此促使技术人员对与多个目标算子相关的测试数据的数据类型进行调整,例如可以执行结合下面步骤507-510所描述的操作。
在步骤507处,在确定多个目标算子不满足精度要求时,方法500 将包括多个目标算子的多个算子布置于相同的硬件平台上(例如测试硬件平台),将与所述多个目标算子之一运算相关的数据以所述测试数据类型来表示以参与运算,而将多个算子中的剩余算子相关的数据以所述基准数据类型来表示以参与运算。接着,在步骤508处,利用所述测试数据对目标算子之一和剩余算子执行运算,以获得针对所述神经网络的第二测试结果。例如,当要评估的多个目标算子之一是卷积层算子,则结合步骤507和508,在所述系统中将卷积层算子以测试数据类型来表示以参与运算,而将所述多个算子中的剩余算子(例如池化层算子、批归一化层算子、激活层算子和全连接层算子)以基准数据类型来表示以参与运算,并且利用测试数据对卷积层算子和剩余算子执行运算,以获得针对神经网络性能的第二测试结果。
在获得所述第二测试结果后,在步骤509处,方法500将在步骤 504处获得的基准结果与第二测试结果进行比较,以确定基准结果和所述第二测试结果之间的差异。最后,在步骤510处,方法500根据评价标准对差异进行评价,以确定目标算子之一是否满足精度要求。
结合前述的例子,通过对作为目标算子之一的卷积层算子执行步骤509和510的操作,可以确定该卷积层算子是否是造成神经网络整体性能下降的原因。当确定该卷积算子的精度未达到要求而造成神经网络性能下降时,可以执行针对性的调整,例如对测试数据与卷积算子运算相关的数据类型进行调整,以使得卷积算子精度达到要求。当再次执行方法500的测试,并确定整个神经网络在调整后的测试数据类型上满足性能要求时,可以不再对多个目标算子中的其余目标算子执行如步骤507-510的操作。关于基准结果和第二测试结果之间的差异,其确定方式与在前结合图5描述的比较和评价操作相同或类似,因此本文在此不再赘述。
从图5所示的上述方法500及其多个实施例中可以看出,本披露的方案通过对测试数据进行数据类型的转换,由此获得转换前的基准结果和转换后的测试结果,并且通过二者的比较来确定目标算子精度是否满足要求。
另外,需要指出的是这里的数据类型转换可以在算子的外部执行。换句话说,算子接收的数据是已经转换过的。替代地,也可以在算子内部执行前述的数据类型转换。也即是说,算子本身包括了数据类型转换的操作和运算。例如,当目标算子接收到原始数据后,其先执行数据类型转换,而后再执行该目标算子指定的运算。进一步,当在测试硬件平台上通过数据类型的转换来获得所述的基准结果和测试结果时,所获得的差异结果可以用来比较数据类型转换所带来的精度问题。与之相比,当利用未转换数据类型的测试数据在在基准硬件平台上执行运算获得基准结果,而利用转换数据类型的测试数据在测试硬件平台上获得测试结果时,所获得的差异结果可以用来比较数据类型和平台二者的差异所带来的精度问题。
图6是示出根据本披露实施例的基于数据转换的测试架构600的示意框图。通过下文的描述,本领域技术人员可以理解图6的测试架构支持本披露结合图5描述的方案,并且关于图5描述的技术细节同样也适用于图6所示出的内容。
如图6中所示,与图4结构类似的神经网络运行于相同的测试硬件平台601上。在该测试硬件平台上,输入数据经由输入层输入进神经网络中,并分别经过卷积层、池化层、激活层、全连接层的处理,最终经由输出层的处理后输出。对于本披露的方案来说,其可以测试与上述各层关联的目标算子的精度。例如,当神经网络中具有卷积层算子、全连接层算子、批归一化层算子、激活层算子等多个算子,可以将卷积层算子和激活层算子作为本披露的目标算子来确定多个目标算子精度。
正如结合图5所描述的,本披露的方案也可以在测试硬件平台上获得基准结果和测试结果。例如,在图6左上部所示的测试硬件平台上、针对多个算子以基准数据类型来运行测试数据(如数据1),以获得神经网络的基准结果;对应地,在图6左下部所示出的测试硬件平台上、针对非目标算子以基准数据类型的测试数据来参与运算,而对目标算子以测试数据类型的测试数据(例如图6中所示出的数据2,其可以由基准数据类型的数据1经由数据类型转换获得)来参与运算,从而获得神经网络性能的第一测试结果。另外,通过上文的描述,本领域技术人员可以理解的是未经数据转换的测试数据(如图6中所示出的数据1,或者称基准数据类型的测试数据)也可以输入到基准硬件平台上以获得基准结果,即,图6左上部所示出的测试硬件平台601 可以由基准硬件平台来替换。
为了更清晰地理解针对多个目标算子的测试过程,下面将以卷积层算子和激活层算子作为多个目标算子为例来做进一步的说明。
例如,在神经网络架构“resnet18”上对作为目标算子的卷积层算子和激活层算子精度进行正向测试的过程中,在测试硬件平台上,可以利用所有数据类型都是float32的测试数据,输入到前述的多个算子中以进行多次推断(inference),从而获得针对神经网络的评价标准output1,作为基准结果。该基准结果在一个应用场景中可以是“top1”错误率形式的结果,因此前述的output1可以标识为top1_1。进一步地,在测试硬件平台上,对于多个算子中的非目标算子(即除卷积层和激活层算子以外的算子),仍利用float32的测试数据来执行运算,而对于卷积层算子、激活层算子使用fix8型测试数据来执行运算,经过多次推断后获得第一测试结果output2。该第一测试结果在一个场景中也可以是“top1”错误率形式的结果,因此可以将前述的output2 标识为top1_2。
接着,在比较模块603处可以对基准结果top1_1和第一测试结果 top1_2进行比较,得出差异。例如,可以参考前述的公式(1):diff= abs(f(output1)–f(output2))/f(output1)的取值进行判断。具体地,首先算出diff=abs(f(top1_1)–f(top1_2))/f(top1_1),即,确定基准结果和第一测试结果二者的差异diff。
在获得上述差异后,可以在评价模块604处将diff与给出的经验阈值进行比较来作出相应的评价。例如,当diff小于或等于经验阈值 1%时,表示目标算子通过精度测试,即表示多个目标算子在数据由 float32转换为fix8后的运算是正常的。相反地,当diff大于经验阈值 1%时,可以确定多个目标算子未通过精度测试,表明在新的数据类型情形下,多个目标算子的精度不符合要求。至此,借助于测试架构平台600完成了如结合图4的测试架构400所描述的第一测试操作。
在经过上述的第一测试操作后,当确定多个目标算子不能满足精度要求时,附加地或可选地,类似于结合图4所述的第二测试操作,测试架构600可以执行基于测试硬件平台601、比较模块603和评价模块604的第二测试操作,以进一步判断目标算子之一是否满足精度要求。
在图6左下部测试硬件平台601上,可以先将多个目标算子之一以测试数据类型的测试数据来参与运算,而将多个算子中的剩余算子以基准数据类型的测试数据来参与运算,从而获得神经网络性能的第二测试结果。接着,在比较模块603处,可以将在图6左上部测试硬件平台601处获得的神经网络性能的基准结果与第二测试结果进行比较,以确定二者之间的差异。然后,可以由评价模块604根据评价标准对差异进行评价。例如,评价模块604可以将所述差异与预定的阈值或阈值范围进行比较,并且当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定目标算子之一满足精度要求。结合前述的例子,通过针对作为目标算子之一的卷积层算子,执行图6中基于左下部测试硬件平台601、比较模块603和评价模块604的第二测试操作,可以确定该卷积层算子是否是造成神经网络整体性能不满足要求的原因。当确定该卷积层算子的精度未达到要求而造成神经网络性能下降时,可以执行针对性的调整。例如,可以进行与卷积算子运算相关的测试数据类型的调整,以使得卷积算子精度达到要求。经过上述的测试数据类型调整后,可以再次执行所述的第一测试操作,用以评估整个神经网络在调整后的测试数据类型上是否满足性能要求。当确定整个神经网络性能已经符合要求时,可以不再对多个目标算子中的其余目标算子之一单独执行所述的第二测试操作。
以上结合图6对本披露的另一种测试架构进行了描述。基于上面的描述,本领域技术人员也可以理解图6所示出的测试架构也可以实现于一种芯片中。具体地,该用于测试算子的精度的芯片可以包括输入端,其配置成接收针对所述神经网络的多个算子的测试数据,其中所述多个算子包括多个目标算子。进一步,该芯片可以包括一个或多个处理器,其配置成:利用测试数据对所述神经网络的多个算子执行运算,以获得针对所述神经网络性能的基准结果;利用测试数据对所述多个目标算子执行运算,以获得针对所述神经网络的第一测试结果;将所述基准结果与第一测试结果进行比较,以确定所述基准结果和第一测试结果之间的差异;以及根据评价标准对所述差异进行评价,以确定所述多个目标算子是否满足精度要求。
在一个或多个实施例中,图6中所示出的比较模块和评价模块所执行的操作和实现的功能也可以由上述芯片中的处理器来实现。因此,关于图6所描述的测试硬件平台、比较模块和评价模块的细节也同样适用于此处的芯片及其处理器,因此不再赘述。
另外,鉴于此处的芯片可以包括在一种集成电路中,因此本披露也就同样公开了一种用于测试神经网络中算子的精度的集成电路,其包括前述用于测试的芯片,用于执行本披露结合附图所描述的测试方案。
尽管上文结合图2-图6对神经网络的目标算子的精度测试进行了描述,本领域技术人员可以理解本披露的方案并不限于单层或多层目标算子的测试,而是可以针对不同的层进行改变。例如,在一个实施例中,本披露的层可以是所述神经网络中的多个层经过融合后获得的层。在该情况下,本披露的算子就是与所述多个层的每个层相关联的算子经过融合后获得的算子。例如,基于本披露的公开和教导,本领域技术人员可以想到将卷积层和批归一化层进行融合以获得新的算子M。当根据前述的技术方案,在融合得到的算子M上对测试数据进行运算时,可以得到基准结果和测试结果,从而通过二者的差异来对该融合后的算子M的精度水平进行评价。由此,本披露的方案不仅可以评估单个或多个目标算子的精度,还可以评估多个算子融合后的目标算子精度。
图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、根据条款A2所述的方法,其中所述多个算子仅包括多个目标算子,并且其中获得所述第一测试结果包括:
在测试硬件平台上利用针对所述多个目标算子的测试数据来执行运算,以获得针对所述神经网络性能的所述第一测试结果。
条款A4、根据条款A2所述的方法,其中所述多个算子还包括至少一个非目标算子,并且其中获得所述第一测试结果包括:
将所述至少一个非目标算子布置于所述基准硬件平台上而将所述多个目标算子布置于所述测试硬件平台上;以及
利用所述测试数据对所述至少一个非目标算子和所述多个目标算子执行运算,以获得所述第一测试结果。
条款A5、根据条款A1所述的方法,其中所述多个算子仅包括多个目标算子,并且其中获得针对所述神经网络性能的所述基准结果和所述第一测试结果包括:
在基准硬件平台或测试硬件平台上利用基准数据类型的所述测试数据对所述多个算子执行所述运算,以获得针对所述神经网络性能的所述基准结果;以及
在所述测试硬件平台上利用测试数据类型的测试数据对所述多个算子执行所述运算,以获得针对所述神经网络的所述第一测试结果。
条款A6、根据条款A1所述的方法,其中所述多个算子还包括至少一个非目标算子,并且其中获得所述基准结果和所述第一测试结果包括:
在测试硬件平台上利用基准数据类型的所述测试数据对所述多个算子执行所述运算,以获得针对所述神经网络性能的基准结果;
在所述测试硬件平台上,将与所述至少一个非目标算子运算相关的数据以所述基准数据类型来表示以参与运算,而将与所述目标算子运算相关的数据以所述测试数据类型来表示以参与运算,从而获得针对所述神经网络性能的第一测试结果,其中针对于每个所述目标算子,与其相关的所述基准数据类型和所述测试数据类型不同。
条款A7、根据条款A1所述的方法,其中确定所述基准结果和所述第一测试结果之间的差异包括:
将所述基准结果和第一测试结果之间的差值与所述基准结果或第一测试结果之一的比值确定为所述差异;或者
对所述基准结果、第一测试结果或差值应用相同或不同的数学函数,并且将所述比值确定为所述差异;或者
对所述基准结果、第一测试结果、差值或比值应用相同或不同的数学函数,并且将所述比值的函数值确定为所述差异。
条款A8、根据条款A7所述的方法,其中根据所述评价标准对所述差异进行评价包括:
将所述差异与预定的阈值或阈值范围进行比较;以及
当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述多个目标算子的精度符合要求。
条款A9、根据条款A1-A4任意一项所述的方法,其中当确定所述多个算子中的多个目标算子不满足精度要求时,所述方法还包括:
将所述多个目标算子之一布置于所述测试硬件平台上而将所述多个算子中的剩余算子布置于所述基准硬件平台上;
利用所述测试数据对所述目标算子之一和剩余算子执行运算,以获得针对所述神经网络性能的第二测试结果;
将所述基准结果与所述第二测试结果进行比较,以确定所述基准结果和所述第二测试结果之间的差异;以及
根据所述评价标准对所述差异进行评价,以确定所述目标算子之一是否满足精度要求。
条款A10、根据条款A9所述的方法,其中确定所述基准结果和所述第二测试结果之间的差异包括:
将所述基准结果和第二测试结果之间的差值与所述基准结果或第二测试结果之一的比值确定为所述差异;或者
对所述基准结果、第二测试结果或差值应用相同或不同的数学函数,并且将所述比值确定为所述差异;或者
对所述基准结果、第二测试结果、差值或比值应用相同或不同的数学函数,并且将所述比值的函数值确定为所述差异。
条款A11、根据条款A10所述的方法,其中根据所述评价标准对所述差异进行评价包括:
将所述差异与预定的阈值或阈值范围进行比较;以及
当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述目标算子之一的精度符合要求。
条款A12、根据条款A5或条款A6的任意一项所述的方法,其中当确定所述多个算子中的多个目标算子不满足精度要求时,所述方法还包括:
在所述测试硬件平台上,将与所述多个目标算子之一运算相关的数据以所述测试数据类型来表示以参与运算,而将与所述多个算子中的剩余算子相关的数据以所述基准数据类型来表示以参与运算,从而获得针对所述神经网络性能的所述第二测试结果;
将所述基准结果与所述第二测试结果进行比较,以确定所述基准结果和所述第二测试结果之间的差异;以及
根据所述评价标准对所述差异进行评价,以确定所述目标算子之一是否满足精度要求。
条款A13、根据条款A12所述的方法,其中确定所述基准结果和所述第二测试结果之间的差异包括:
将所述基准结果和所述第二测试结果之间的差值与所述基准结果或测试结果之一的比值确定为所述差异;或者
对所述基准结果、第二测试结果或差值应用相同或不同的数学函数,并且将所述比值确定为所述差异;或者
对所述基准结果、第二测试结果、差值或比值应用相同或不同的数学函数,并且将所述比值的函数值确定为所述差异。
条款A14、根据条款A13所述的方法,其中根据所述评价标准对所述差异进行评价包括:
将所述差异与预定的阈值或阈值范围进行比较;以及
当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述目标算子之一的精度符合要求。
条款A15、根据条款A1所述的方法,其中所述多个目标算子包括卷积层算子、全连接层算子、激活层算子、归一化层算子和池化层算子中的多个算子或经过算子融合操作后所获得的算子。
条款A16、一种测试神经网络中算子的精度的装置,包括:
至少一个处理器;以及
至少一个存储器,其用于存储程序指令,当所述程序指令由所述至少一个处理器加载并执行时,使得所述装置执行根据条款A1-A15 的任意一项所述的方法。
条款A17、一种计算机可读存储介质,其中存储有程序指令,所述程序指令适于由处理器加载并执行根据条款A1-A15的任意一项所述的方法。
条款A18、一种用于测试神经网络中算子的精度的芯片,包括:
输入端,其配置成接收针对所述神经网络的多个算子的测试数据,其中所述多个算子包括多个目标算子;
处理器,其配置成:
利用测试数据对所述神经网络的多个算子执行运算,以获得针对所述神经网络性能的基准结果;
利用测试数据对所述多个目标算子执行运算,以获得针对所述神经网络性能的第一测试结果;
将所述基准结果与所述第一测试结果进行比较,以确定所述基准结果和所述第一测试结果之间的差异;以及
根据评价标准对所述差异进行评价,以确定所述多个目标算子是否满足精度要求。
条款A19、根据条款A18所述的芯片,其中所述多个算子仅包括多个目标算子,所述处理器配置成:
利用基准数据类型的所述测试数据对所述多个算子执行所述运算,以获得针对所述神经网络性能的基准结果;以及
利用测试数据类型的测试数据对所述多个算子执行所述运算,以获得针对所述神经网络的第一测试结果。条款A20、根据条款A18 所述的芯片,其中所述多个算子还包括至少一个非目标算子,所述处理器配置成:
利用基准数据类型的所述测试数据对所述多个算子执行所述运算,以获得针对所述神经网络性能的基准结果;以及
将与所述至少一个非目标算子运算相关的数据以基准数据类型来表示以参与运算,而将与所述目标算子运算相关的数据以测试数据类型来表示以参与运算,从而获得针对所述神经网络性能的第一测试结果,其中针对于每个所述目标算子,与其相关的所述基准数据类型和所述测试数据类型不同。
条款A21、根据条款A19或A20的任意一项所述的芯片,其中当确定所述多个算子中的多个目标算子不满足精度要求时,所述处理器配置成:
将与所述多个目标算子之一运算相关的数据以所述测试数据类型来表示以参与运算,而将与所述多个算子中的剩余算子相关的数据以所述基准数据类型来表示以参与运算,从而获得针对所述神经网络性能的所述第二测试结果;
将所述基准结果与所述第二测试结果进行比较,以确定所述基准结果和所述第二测试结果之间的差异;以及
根据所述评价标准对所述差异进行评价,以确定所述目标算子之一是否满足精度要求。
条款A22、根据条款A21所述的芯片,其中在确定所述基准结果和所述第二测试结果之间的差异中,所述处理器配置成:
将所述基准结果和第二测试结果之间的差值与所述基准结果或测试结果之一的比值确定为所述差异;或者
对所述基准结果、第二测试结果或差值应用相同或不同的数学函数,并且将所述比值确定为所述差异;或者
对所述基准结果、第二测试结果、差值或比值应用相同或不同的数学函数,并且将所述比值的函数值确定为所述差异。
条款A23、根据条款A22所述的芯片,其中在根据所述评价标准对所述差异进行评价中,所述处理器配置成:
将所述差异与预定的阈值或阈值范围进行比较;以及
当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述目标算子之一的精度符合要求。
条款A24、根据条款A18所述的芯片,其中所述多个目标算子包括卷积层算子、全连接层算子、激活层算子、归一化层算子和池化层算子中的多个算子或经过算子融合操作后所获得的算子。
条款A25、一种用于测试神经网络中算子精度的集成电路,包括根据条款A18-A24的任意一项所述的芯片。
条款A26、一种用于通过硬件平台测试神经网络中算子精度的系统,包括:
接收端,其配置成接收针对所述神经网络的多个算子的测试数据,其中所述多个算子包括多个目标算子;
至少一个基准运算设备,其配置成利用测试数据对所述神经网络的多个算子执行运算,以获得针对所述神经网络性能的基准结果;
至少一个测试运算设备,其配置成与所述至少一个基准运算设备协作,以利用所述测试数据对所述多个目标算子执行运算,从而获得针对所述神经网络性能的第一测试结果;以及
所述至少一个基准运算设备或测试运算设备之一还配置成:
将所述基准结果与所述第一测试结果进行比较,以确定所述基准结果和所述第一测试结果之间的差异;以及
根据评价标准对所述差异进行评价,以确定所述多个目标算子是否满足精度要求。
条款A27、根据条款A26所述的系统,其中所述多个算子还包括至少一个非目标算子,并且所述至少一个非目标算子布置于所述基准运算设备上而所述多个目标算子布置于所述测试运算设备上,以便利用所述测试数据来获得所述第一测试结果。
条款A28、根据条款A26所述的系统,其中所述多个算子仅包括多个目标算子,并且其中:
所述基准运算设备配置成利用基准数据类型的所述测试数据对所述多个算子执行所述运算,以获得针对所述神经网络性能的基准结果;以及
所述测试运算设备配置成利用测试数据类型的测试数据对所述多个算子执行所述运算,以获得针对所述神经网络的第一测试结果。
条款A29、根据条款A26所述的系统,其中在确定所述基准结果和所述第一测试结果之间的差异中,所述至少一个基准运算设备或测试运算设备之一还配置成:
将所述基准结果和第一测试结果之间的差值与所述基准结果或第一测试结果之一的比值确定为所述差异;或者
对所述基准结果、第一测试结果或差值应用相同或不同的数学函数,并且将所述比值确定为所述差异;或者
对所述基准结果、第一测试结果、差值或比值应用相同或不同的数学函数,并且将所述比值的函数值确定为所述差异。
条款A30、根据条款A29所述的系统,其中在根据所述评价标准对所述差异进行评价中,所述至少一个基准运算设备或测试运算设备之一还配置成:
将所述差异与预定的阈值或阈值范围进行比较;以及
当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述多个算子的精度符合要求。
条款A31、根据条款A26-A30的任意一项所述的系统,其中当确定所述多个算子中的多个目标算子不满足精度要求时,对于所述多个目标算子之一,在所述系统中将所述目标算子之一布置于所述测试运算设备上而将所述多个算子中的剩余算子布置于所述基准运算设备上,并且利用所述测试数据对所述目标算子之一和剩余算子执行运算,以获得针对所述神经网络性能的第二测试结果,并且其中所述至少一个基准运算设备或测试运算设备之一还配置成:
将所述基准结果与所述第二测试结果进行比较,以确定所述基准结果和所述第二测试结果之间的差异;以及
根据所述评价标准对所述差异进行评价,以确定所述目标算子之一是否满足精度要求。
条款A32、根据条款A31所述的系统,其中在确定所述基准结果和所述第二测试结果之间的差异中,所述至少一个基准运算设备或测试运算设备之一还配置成:
将所述基准结果和第二测试结果之间的差值与所述基准结果或第二测试结果之一的比值确定为所述差异;或者
对所述基准结果、第二测试结果或差值应用相同或不同的数学函数,并且将所述比值确定为所述差异;或者
对所述基准结果、第二测试结果、差值或比值应用相同或不同的数学函数,并且将所述比值的函数值确定为所述差异。
条款A33、根据条款A32所述的系统,其中在根据所述评价标准对所述差异进行评价中,所述至少一个基准运算设备或测试运算设备之一还配置成:
将所述差异与预定的阈值或阈值范围进行比较;以及
当所述差异小于或等于所述阈值,或者当所述差异落入所述阈值范围内,确定所述目标算子之一的精度符合要求。
条款A34、根据条款A26所述的系统,其中所述多个目标算子包括卷积层算子、全连接层算子、激活层算子、归一化层算子和池化层算子中的多个算子或经过算子融合操作后所获得的算子。
条款A35、一种用于测试神经网络中算子精度的集成电路设备,包括根据条款A26-A34的任意一项所述的系统。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

Claims (35)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911251606.1A CN113033760B (zh) 2019-12-09 用于测试神经网络中算子精度的方法、测试装置及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911251606.1A CN113033760B (zh) 2019-12-09 用于测试神经网络中算子精度的方法、测试装置及其系统

Publications (2)

Publication Number Publication Date
CN113033760A true CN113033760A (zh) 2021-06-25
CN113033760B CN113033760B (zh) 2024-05-10

Family

ID=

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115113528A (zh) * 2022-07-06 2022-09-27 昆仑芯(北京)科技有限公司 神经网络模型的运行控制方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108805258A (zh) * 2018-05-23 2018-11-13 北京图森未来科技有限公司 一种神经网络训练方法及其装置、计算机服务器
CN109670578A (zh) * 2018-12-14 2019-04-23 北京中科寒武纪科技有限公司 神经网络首层卷积层数据处理方法、装置及计算机设备
US20190179795A1 (en) * 2017-12-12 2019-06-13 Amazon Technologies, Inc. Fast context switching for computational networks
CN110334802A (zh) * 2019-05-23 2019-10-15 腾讯科技(深圳)有限公司 一种神经网络模型的构建方法、装置、设备及存储介质
CN110515626A (zh) * 2019-08-20 2019-11-29 Oppo广东移动通信有限公司 深度学习计算框架的代码编译方法及相关产品

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190179795A1 (en) * 2017-12-12 2019-06-13 Amazon Technologies, Inc. Fast context switching for computational networks
CN108805258A (zh) * 2018-05-23 2018-11-13 北京图森未来科技有限公司 一种神经网络训练方法及其装置、计算机服务器
CN109670578A (zh) * 2018-12-14 2019-04-23 北京中科寒武纪科技有限公司 神经网络首层卷积层数据处理方法、装置及计算机设备
CN110334802A (zh) * 2019-05-23 2019-10-15 腾讯科技(深圳)有限公司 一种神经网络模型的构建方法、装置、设备及存储介质
CN110515626A (zh) * 2019-08-20 2019-11-29 Oppo广东移动通信有限公司 深度学习计算框架的代码编译方法及相关产品

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115113528A (zh) * 2022-07-06 2022-09-27 昆仑芯(北京)科技有限公司 神经网络模型的运行控制方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
CN111008640B (zh) 图像识别模型训练及图像识别方法、装置、终端及介质
US20160239592A1 (en) Data-driven battery aging model using statistical analysis and artificial intelligence
US11449790B2 (en) Artificial intelligence device and method for executing an operation based on predicted biometric state of a user
CN110956202B (zh) 基于分布式学习的图像训练方法、系统、介质及智能设备
CN111027691A (zh) 用于神经网络运算的计算装置及其集成电路板卡
US20190138929A1 (en) System and method for automatic building of learning machines using learning machines
CN112639833A (zh) 可自适应神经网络
KR20220038907A (ko) 생성적 대립 신경망(gan) 기반의 데이터 예측 방법, 그리고 이를 구현하기 위한 장치
CN110750351A (zh) 多核任务调度器、多核任务调度方法、装置及相关产品
CN113887845A (zh) 极端事件预测方法、装置、设备、介质和计算机程序产品
AU2017208235A1 (en) Relative position encoding based networks for action recognition
CN111144564A (zh) 对神经网络执行训练的设备及其集成电路板卡
CN114492742A (zh) 神经网络结构搜索、模型发布方法、电子设备和存储介质
CN113033757B (zh) 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质
JP7056259B2 (ja) 検査システム、識別システム、及び識別器評価装置
CN113033760A (zh) 用于测试神经网络中算子精度的方法、测试装置及其系统
CN113033760B (zh) 用于测试神经网络中算子精度的方法、测试装置及其系统
CN112101438A (zh) 一种左右眼分类方法、装置、服务器和存储介质
CN113112009B (zh) 用于神经网络数据量化的方法、装置和计算机可读存储介质
CN109740746B (zh) 运算方法、装置及相关产品
CN113033762B (zh) 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质
CN112308201A (zh) 神经网络量化方法、装置、芯片、电子设备及板卡
CN113033762A (zh) 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质
CN113516185B (zh) 模型训练的方法、装置、电子设备及存储介质
CN110009100A (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