一种深度神经网络推理方法及计算设备与流程

文档序号:16631578发布日期:2019-01-16 06:37阅读:209来源:国知局
一种深度神经网络推理方法及计算设备与流程

本申请涉及神经网络领域,具体涉及一种深度神经网络推理方法及计算设备。



背景技术:

随着计算机和信息技术的迅猛发展和普及应用,行业应用数据呈爆炸性增长。动辄达到数万亿字节(terabyte,简称tb)甚至数千万亿字节(petabyte,简称pb)规模的行业、企业大数据往往隐含着很多在小数据量时不具备的深度知识和价值,大规模机器学习(包含深度学习)引领的数据分析是将大数据转换成有用知识的关键技术。深度神经网络作为引领当前人工智能(artificialintelligence,简称ai)发展方向的关键技术,该技术在人脸识别、图像分类、目标检测、视频分析、语音识别、机器翻译等许多领域都取得了显著的效果,深度神经网络正在迅速被各互联网厂商所采用用于无人驾驶、语音助手、同声翻译等领域。

深度神经网络是一种包含多层隐层的机器学习模型,其理论上可以模拟任何非线性复杂模型,深度神经网络通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。深度神经网络推理过程中,每个隐层都包含大量的浮点计算,浮点计算规模可达百亿规模以上,深度神经网络的推理速度较慢,目前深度神经网络的推理速度与真实场景的诉求相差甚远,无法满足一些实际场景的需求,如无人驾驶等。

目前的一些对深度神经网络推理的加速方式的加速有限,例如,利用深度神经网络模型参数冗余对模型进行量化,即将模型参数进行量化,减少一部分计算量,但是该方式仅基于参数量化压缩深度神经网络模型较小,且该方法推理加速效果一般,仍旧难以满足如无人驾驶等实际场景的推理速度的需求。



技术实现要素:

本申请实施例提供了一种深度神经网络推理方法及计算设备来解决目前的深度神经网络的加速效果难以满足如无人驾驶等实际场景的推理速度的需求的问题。

本申请实施例的第一方面提供一种深度神经网络推理方法,该方法中,第一深度神经网络模型会接收到向第一深度神经网络模型的运算层输入的输入特征,接着会确定输入了输入特征的运算层的索引值,该索引值能够对应码本,且一个索引值对应一个运算层的码本,该码本实际上是由多个码字组成的集合,单个码字的构成可以是单个量化模型参数与单个量化输入特征的乘积,从而运算层的每个量化模型参数分别与所述运算层的每个量化输入特征的乘积得到的码字的集合为所述运算层的码本,其中,每个量化模型参数为将第二深度神经网络模型的模型参数按照预设的第二量化规则进行量化得到,而每个量化输入特征为将所述第二深度神经网络模型对应所述运算层的输入特征按照所述预设的第一量化规则进行量化得到,此外,第一深度神经网络模型为根据所述每个量化模型参数和所述每个量化输入特征对所述第二深度神经网络模型重训练得到;在确定索引值后,便会根据索引值确定出码本,接着将输入特征按照预设的第一规则进行量化,以满足第一深度神经网络模型的输入特征的要求,最后,在具体的运算层中,很据量化后的输入特征查询码本中对应这些量化后的输入特征的码字,即可完成该运算层对输入特征的运算。

可以看出,首先会对第二深度神经网络模型进行重训练得到第一深度神经网络模型,而重训练所要用到的量化模型参数和量化输入特征则是根据第二深度神经网络模型的输入参数和模型参数量化得到,除了重训练得到第一深度神经网络模型之外,还会将每个量化模型参数和每个量化输入特征进行乘积得到码本,最后,在进行计算时,只要将实际输入的输入特征量化成量化量化输入特征,则直接查码本获得该量化输入特征的浮点乘结果,从而快速完成运算,由于无需实质的浮点乘运算,而是通过类似查表的方式直接获得浮点乘的结果,能够大大加速深度神经网络的推理速度。

在一些实施例中,运算层分为两种,一种是卷积层,一种是全连接层,本申请实施例中的第一深度神经网络模型包括至少一个卷积层和/或至少一个全连接层。即该第一深度神经网络模型可以仅有卷积层或全连接层的简单模型,也可以是同时具有全连接层和卷积层的复杂模型。

在一些实施例中,按照第二量化规则可以是采用线性量化或非线性量化将所述卷积层的模型参数量化为第二预设数量的量化模型参数,采用线性量化或非线性量化将所述全连接层的模型参数量化为第三预设数量的量化模型参数。第二预设数量和第三预设数量是与量化规则相关的,不同的量化规则下,量化出的量化模型参数的数量也不一定相同。

在一些实施例中,第二预设数量与第三预设数量相同或者不同,例如,第二预设数量为b,即卷积层的模型参数量化为b个量化模型参数,第三预设数量为c,即全连接层的模型参数量化为c个量化模型参数,此时,b和c可以为同一值,也可以是互不相同的值。此设置的目的在于尽量压缩对原本的模型参数的量化后的量化模型参数的数量,更少的量化后模型参数的数量会带来更短的计算时长,提高深度神经网络的推理速度。

在一些实施例中,第一量化规则是,采用线性量化或非线性量化将所述卷积层和/或全连接层的输入特征量化为第一预设数量的量化输入特征。即,在第一深度神经网络模型同时具有卷积层和全连接层时,两者的输入特征可以量化为相同的数量,如都量化为a个,这样使得输入特征对于各层来说是可以通用的,一定程度上加快运算速度。

在一些实施例中,第二深度神经网络模型包括至少一个卷积层和至少一个全连接层,具体的生成第一深度神经网络的过程可以是,对所述第二深度神经网络模型的至少一个卷积层和至少一个全连接层中的至少一个运算层的输入特征和模型参数进行量化,并根据所述至少一个运算层的输入特征和模型参数对所述第二深度神经网络模型重训练得到所述第一深度神经网络模型。由于对输入特征和模型参数量化后,用量化模型参数和量化输入特征输入到原本的模型中,会出现运算的偏差,因此需要用量化模型参数和量化输入特征对原本的模型进行重训练,即将第二深度神经网络模型重训练得到第一深度神经网络模型。

在一些实施例中,所述第一深度神经网络模型中的至少一两个卷积层中两个卷积层的量化模型参数的数量相同或者不同,所述第一深度神经网络模型中的至少一个全连接层的量化模型参数的数量相同或者不同。即,在第一深度神经网络模型中具有多个卷积层时,每个卷积层的量化模型参数的数量可以是相同的,也可以是不同的,此外,在有多个全连接层时,每个全连接层的量化模型参数可以是相同的,也可以是不相同。此设置的目的在于,对于较为复杂的模型,各运算层运算的内容的侧重可能有所不同。

本申请实施例第二方面还提供一种深度神经网络推理方法,该方法中,首先会采用第一数据对第二深度深佳网络模型训练直至收敛,该第二深度神经网络包括卷积层和全连接层;接着将第二深度神经网络模型的卷积层的模型参数和输入特征分别进行量化得到所述卷积层的第一量化模型参数集合和第一量化输入特征集合;同时,将第二深度神经网络模型的全连接层的的模型参数和输入特征分别进行量化,得到所述全连接层的第二量化模型参数集合和第二量化输入特征集合,随后再根据所述第一量化模型参数集合、第一量化输入特征集合、第二量化模型参数集合和第二量化输入特征集合对所述第二深度神经网络模型进行重训练得到第一深度神经网络模型;在完成模型的训练后,再构建第一深度神经网络模型的卷积层和全连接层的码本和所述码本对应的索引值,其中,所述卷积层的码本为所述卷积层的码字的集合,所述卷积层的码本中单个码字为所述第一量化模型参数集合中的单个量化模型参数与所述第一量化输入特征集合中的单个量化输入特征的乘积,所述第一量化模型参数集合中的每个量化模型参数分别与所述第一量化输入特征集合中的每个量化输入特征的乘积得到的码字的集合为所述卷积层的码本;所述全连接层的码本为所述全连接层的码字的集合,所述全连接层的码本中单个码字为所述第二量化模型参数集合中的单个量化模型参数与所述第二量化输入特征集合中的单个量化输入特征的乘积,所述第二量化模型参数集合中的每个量化模型参数分别与所述第二量化输入特征集合中的每个量化输入特征的乘积得到的码字的集合为所述全连接层的码本。从而完成整个深度神经网络模型的重训练过程以及运算加速的准备阶段。

可以看出,对第二深度神经网络模型进行重训练得到第一深度神经网络模型,而重训练所要用到的量化模型参数和量化输入特征则是根据第二深度神经网络模型的输入参数和模型参数量化得到,除了重训练得到第一深度神经网络模型之外,还会将每个量化模型参数和每个量化输入特征进行乘积得到码本,最后,在进行计算时,只要将实际输入的输入特征量化成量化量化输入特征,则直接查码本获得该量化输入特征的浮点乘结果,从而快速完成运算,由于无需实质的浮点乘运算,而是通过类似查表的方式直接获得浮点乘的结果,能够大大加速深度神经网络的推理速度。

在一些实施例中,第一量化模型参数集合与第二量化模型参数集合的数量相同或者不同,所述第一量化输入特征集合与所述第二量化输入特征集合的数量相同或者不同。即卷积层和全连接层的量化模型参数集合可以是相同的,也可以是不相同的,卷积层和全连接层的输入特征集合也可以是相同或者不同。此设置方式能够使得本申请实施能够用在简单或者复杂的模型上,增强深度神经网络推理方法可实现性。

在一些实施例中,所述第一量化输入特征集合与所述第二量化输入特征集合为相同的集合。在第一深度神经网络模型同时具有卷积层和全连接层时,两者的输入特征可以量化为相同的量化输入特征集合,这样使得输入特征对于各层来说是可以通用的,一定程度上加快运算速度。

本申请实施例第三方面还提供一种计算设备,该计算设备包括处理器和与处理器连接的存储器,存储器中存储有计算机程序指令,处理器用于执行所述计算机程序指令以执行第一方面或第一方面的任意一种实现方式。

本申请实施例第四方面还提供一种计算设备,该计算设备包括处理器和与处理器连接的存储器,存储器中存储有计算机程序指令,处理器用于执行所述计算机程序指令以执行第二方面或第二方面的任意一种实现方式。

本申请实施例第五方面还提供一种计算设备,包括:

收发模块,接收向第一深度神经网络模型中的运算层输入的输入特征;

处理模块,用于确定所述运算层对应的索引值,一个运算层的索引值对应一个运算层的码本,所述运算层的码本为所述运算层的码字的集合,所述运算层的码本中单个码字为所述运算层的单个量化模型参数与单个量化输入特征的乘积,所述运算层的每个量化模型参数分别与所述运算层的每个量化输入特征的乘积得到的码字的集合为所述运算层的码本;所述运算层的每个量化模型参数为将第二深度神经网络模型的模型参数按照预设的第二量化规则进行量化得到,所述运算层的每个量化输入特征为将所述第二深度神经网络模型对应所述运算层的输入特征按照所述预设的第一量化规则进行量化得到,所述第一深度神经网络模型为根据所述每个量化模型参数和所述每个量化输入特征对所述第二深度神经网络模型重训练得到;

所述处理模块还用于根据所述运算层的索引值确定所述运算层的码本;

量化模块,用于将所述输入特征按照预设的第一量化规则进行量化;

所述处理模块还用于在所述运算层中,根据量化后的所述输入特征查询所述码本中对应所述量化后的输入特征的码字完成所述运算层对所述输入特征的运算。

在一些实施例中,所述运算层为卷积层或全连接层,所述第一深度神经网络模型包括至少一个卷积层和/或至少一个全连接层。

在一些实施例中,所述量化模块执行第二量化规则包括:

采用线性量化或非线性量化将所述卷积层的模型参数量化为第二预设数量的量化模型参数;和/或。

采用线性量化或非线性量化将所述全连接层的模型参数量化为第三预设数量的量化模型参数。

在一些实施例中,所述第二预设数量与所述第三预设数量相同或者不同。

在一些实施例中,所述量化模块第一量化规则包括:

采用线性量化或非线性量化将所述卷积层和/或全连接层的输入特征量化为第一预设数量的量化输入特征。

在一些实施例中,所述第二深度神经网络模型包括至少一个卷积层和至少一个全连接层,所述量化模块还具体用于对所述第二深度神经网络模型的至少一个卷积层和至少一个全连接层中的至少一个运算层的输入特征和模型参数进行量化;

所述处理模块还用于根据所述至少一个运算层的输入特征和模型参数对所述第二深度神经网络模型重训练得到所述第一深度神经网络模型。

在一些实施例中,所述第一深度神经网络模型中的至少两个卷积层中两个卷积层的量化模型参数的数量相同或者不同,所述第一深度神经网络模型中的至少两个全连接层的量化模型参数的数量相同或者不同。

本申请实施例第六方面还提供一种计算设备,包括:

处理模块,用于使用第一数据训练第二深度神经网络模型至收敛,所述第二深度神经网络模型包括卷积层和全连接层;

量化模块,将所述第二深度神经网络模型的卷积层的模型参数和输入特征分别进行量化,得到所述卷积层的第一量化模型参数集合和第一量化输入特征集合;

所述量化模块还用于将所述第二深度神经网络模型的全连接层的的模型参数和输入特征分别进行量化,得到所述全连接层的第二量化模型参数集合和第二量化输入特征集合;

根据所述第一量化模型参数集合、第一量化输入特征集合、第二量化模型参数集合和量化输入特征集合对所述第二深度神经网络模型进行重训练得到第一深度神经网络模型;

所述处理模块还用于构建所述第一深度神经网络模型的卷积层和全连接层的码本和所述码本对应的索引值,所述卷积层的码本为所述卷积层的码字的集合,所述卷积层的码本中单个码字为所述第一量化模型参数集合中的单个量化模型参数与所述第一量化输入特征集合中的单个量化输入特征的乘积,所述第一量化模型参数集合中的每个量化模型参数分别与所述第一量化输入特征集合中的每个量化输入特征的乘积得到的码字的集合为所述卷积层的码本;所述全连接层的码本为所述全连接层的码字的集合,所述全连接层的码本中单个码字为所述第二量化模型参数集合中的单个量化模型参数与所述第二量化输入特征集合中的单个量化输入特征的乘积,所述第二量化模型参数集合中的每个量化模型参数分别与所述第二量化输入特征集合中的每个量化输入特征的乘积得到的码字的集合为所述全连接层的码本。

在一些实施例中,所述第一量化模型参数集合与所述第二量化模型参数集合的数量相同或者不同,所述第一量化输入特征集合与所述第二量化输入特征集合的数量相同或者不同。

在一些实施例中,所述第一量化输入特征集合与所述第二量化输入特征集合为相同的集合。

本申请的又一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

本申请的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

附图说明

图1是大数据挖掘应用场景示意图;

图2是本申请实施例的神经网络推理的架构图;

图3是本申请实施例的深度神经网络推理方法的一个实施例图;

图4是本申请实施例的深度神经网络推理方法的一个实施例图;

图5是本申请实施例的深度神经网络推理方法的一个实施例图;

图6是本申请实施例的深度神经网络推理方法的一个实施例图;

图7是本申请实施例的计算设备的一个实施例图;

图8是本申请实施例的计算设备的一个实施例图;

图9是本申请实施例的计算设备的一个实施例图。

具体实施方式

本申请实施例提供了一种深度神经网络推理方法及相关设备,能够通过对模型的输入特征以及模型参数进行量化,并预先配置码本消除需要大量计算的问题,解决目前深度神经网络推理速度较慢的问题。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例进行描述。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

本申请实施例的深度神经网络推理方法的应用场景有多种,下面对大数据挖掘的场景进行说明,如图1所示,图1是大数据挖掘应用场景示意图,其中,该大数据挖掘平台中,采集的数据类型可以是电信数据、金融数据、消费者数据或者是其他类型的数据,之后会采用大数据架构对采集的这些数据进行数据计算、数据存储和数据采集等,接着会采用一些数据挖掘模型对这些大批量数据进行处理,如逻辑回归(logisticregression,简称lr)、文档主题生成模型(latentdirichletallocation,简称lda)等大规模传统机器学习模型,又例如卷积神经网络(deepconvolutionalneuralnetworks,简称cnn)、循环神经网络(recurrentneuralnetworks,rnn)等深度神经网络模型。接着通过这些模型挖掘好的数据便可以提供给各个领域进行应用,例如电信数据应用于电信领域大数据分析,金融数据应用于金融领域大数据分析,消费者数据应用于消费者领域大数据分析,其他领域大数据则应用于该领域的大数据分析,当然对于一些领域来说,需要两个以上领域的大数据进行支撑。

本申请实施例的深度神经网络可以运行在计算设备上,该计算设备可以是中央处理器(centralprocessingunit,简称cpu)、图像处理器(graphicsprocessingunit,gpu)、现场可编程门阵列(fieldprogrammablegatearray,fpga)或者是芯片等组建的单机或者是集群环境下,该单机可以是终端也可以是服务器。

由于深度神经网络理论上可以模拟任何非线性复杂模型,其通过隐层的组合,每个隐层包括大量的卷积或者内积的计算,对于卷积,其定义是,设:f(x),g(x)是r1上的两个可积函数,作积分:

可以证明,关于几乎所有的实数x,上述积分是存在的。这样,随着x的不同取值,这个积分就定义了一个新函数h(x),称为函数f与g的卷积,记为h(x)=(f*g)(x)。

而内积则是设二维空间内有两个向量定义它们的数量积(又叫内积、点积)为以下实数:

可以看出,内积运算可以包括大量的浮点乘和浮点加的运算,其运算规模可以达到百亿规模以上,从而会使得深度神经网络的推理速度慢,与当前的实际情景的诉求相差甚远,例如无人驾驶要求的推理速度等,因此,提升深度神经网络的推理速度是深度神经网络领域中亟待解决的。

为了解决这些问题,目前有三种不同的解决方向,第一种是低秩分解技术,即利用深度神经网络模型参数冗余这一重要特征,对深度神经网络中每一运算层的模型参数矩阵进行低秩分解,从而使得计算维度降低,从而实现2倍左右加速;第二种是比特压缩技术,深度神经网络中常见的权重参数为32位,比特压缩技术将32位的权重参数近似用8bit、2bit、1bit表达,降低计算规模,特定场景下,1bit可以加速7倍,但是深度神经网络的精度损耗异常严重,导致最终模型效果不佳。第三种是权重量化技术,利用深度神经网络模型参数冗余这一重要特征,将大批次的权重矢量通过聚类等方式聚合成小批次的权重矢量,深度神经网络模型的输入特征仅需要与聚合后的小批次权重矢量进行内积计算,之后基于码本重组卷积计算、全连接计算的最终结果,实际能实现3倍左右加速。

为了解决上述各种方式实现深度神经网络加速出现的问题,本申请实施例提供一种深度神经网络推理方法来实现深度神经网络的加速过程,该技术的具体架构可参见图2,图2是本申请实施例的神经网络推理的架构图。其中,该架构中包括量化装置、模型重训练装置以及索引库构建装置,其具体的过程可以是,首先对模型参数进行量化,同时对模型的输入特征进行量化,接着根据量化后的模型参数以及输入特征对该模型进行重训练,并且针对量化后的模型参数和输入特征建立索引库,该索引库中包括量化后的模型参数与输入特征的乘积,以及乘积对应的索引值;该计算过程是将后续推理过程中需要进行的内积计算提前计算好,在后续推理过程中仅需按照索引值查找对应的乘积即可完成乘积运算。从而将实际推理过程中的内积运算变为快速索引查找乘积运算加上求和运算。

下面对本申请实施例的深度神经网络推理方法进行介绍,请参阅图3,图3是本申请实施例的深度神经网络推理方法的一个实施例图,其中,该方法可包括:

301、接收向第一深度神经网络模型中的运算层输入的输入特征。

其中,该深度神经网络模型可以包括多个运算层,而接收的输入特征可以是针对该深度神经网络模型中一层运算层,也可以是多层运算层。

302、确定所述运算层对应的索引值。

其中,一个所述运算层的索引值对应一个运算层的码本,而运算层的码本为运算层的码字的集合,码本中单个码字为所述运算层的单个量化模型参数与单个量化输入特征的乘积,因此,由运算层的每个量化模型参数分别与所述运算层的每个量化输入特征的乘积得到的码字的集合便是该运算层的码本;此外,运算层的每个量化模型参数为将第二深度神经网络模型的模型参数按照预设的第二量化规则进行量化得到,运算层的每个量化输入特征为将所述第二深度神经网络模型对应所述运算层的输入特征按照所述预设的第一量化规则进行量化得到,所述第一深度神经网络模型为根据所述每个量化模型参数和所述每个量化输入特征对所述第二深度神经网络模型重训练得到。

其中,将第二深度神经网络模型重训得到第一深度神经网络模型原因是由于将第二深度神经网络模型对应的输入特征以及该模型的模型参数进行了量化,第二深度神经网络模型的参数变化后会对输出精度产生影响,而对该第二深度神经网络模型重训即是为了纠正该精度的影响。

对于运算层的码本和码字,举例来说,第一深度神经网络模型的运算层的量化模型参数有m个,对应的量化输入特征有n个,m个量化模型参数中任一个与n个量化输入特征中任一个的乘积构成一个码字,而m个量化模型参数与n个量化输入特征可以得到m*n个码字,m*n个码字构成该运算层的码本,最后为该码本关联一个索引值,使得根据该索引值便能够获取到该码本。而在实际输入特征的量化时,可能仅仅n个量化输入特征中的部分或者全部。

可以理解的是,在完成输入特征的接收后,便会知晓该输入特征对应的运算层,接着便能够以该运算层为基础确定出该运算层的索引值。

其中,运算层可以是全连接层也可以是卷积层,当第一深度神经网络模型中包含多个运算层时,可以同时具有卷积层和全连接层。

下面对第二深度神经网络模型的模型参数和输入特征的量化进行说明,请参阅图4,图4是本申请实施例的深度神经网络推理方法的一个实施例图,该实施例中包括多个卷积层和多个全连接层,其中,对于模型参数来说,首先将模型参数输入到第二深度神经网络模型中的各个卷积层和全连接层,然后在各个卷积层和全连接层中对模型参数进行量化,如将上万个模型参数量化为几百个量化模型参数。此外,对于模型参数的量化,采用的是第一量化规则,该第一量化规则即采用线性量化也可以是采用非线性量化方式将模型参数量化为第二预设数量的量化模型参数或者第三预设数量的量化模型参数;例如,对于每一个全连接层或者卷积层的模型参数的量化可以是量化为同样数量的量化模型参数,各运算层也可以量化为各自不同数量的量化模型参数。其中,采用线性量化可以是将这些模型参数进行均匀量化,即对于原模型参数,选取每隔固定数量的原模型参数作为量化模型参数,或者是将每隔固定数量的模型参数进行一定的计算得到一个量化模型参数。

上面对模型参数的量化进行了说明,下面对输入特征的量化进行说明,如图5所示,图5是本申请实施例的深度神经网络推理方法的一个实施例图,可以看出,与模型参数的量化不同,输入特征的量化是顺序方式的量化,如首先针对第一卷积层的输入特征进行量化,然后再针对第二卷积层的输入特征进行量化等,直到完成所有卷积层和全连接层的输入特征的量化。与模型参数的量化类似,对于输入特征的量化,按照第二量化规则量化出的各运算层的量化输入特征的数量不相同。

303、根据运算层的索引值确定所述运算层的码本。

其中,在确定出索引值之后,便可以根据索引值确定对应的码本,从步骤302的说明中可知一个码本对应到一个索引值,因此根据索引值可以唯一确定一个码本。其中,码本中存储了一个码本对应的运算层的码字的集合,即,一个码字是该运算层的一个量化模型参数乘以一个量化输入特征的乘积,因此,一个码本即是该运算层的每一个量化模型参数分别乘以每个量化输入特征得到的乘积的集合。

304、将输入特征按照预设的第一量化规则进行量化。

其中,该输入特征在输入到该深度神经网络模型中后,首先会按照预设的第一量化规则对该输入特征进行量化,该第一量化规则可以是采用线性量化或非线性量化将所述卷积层和/或全连接层的输入特征量化为第一预设数量的量化输入特征。即对于所有的卷积层或者全连接层来说,量化输入特征的数量可以是相同的。

305、运算层根据量化后的输入特征查询码本中对应量化后的输入特征的码字完成运算层对所述输入特征的运算。

其中,由于码本是运算层的每一个量化模型参数分别乘以每个量化输入特征得到的乘积的集合,再完成输入特征和模型参数的量化后,再完成模型的训练后,即可对该模型输入特征进行推理,该第一深度神经网络模型在中的运算层会根据量化后的输入特征查询码本中对应该量化后的输入特征的码字,从而使得针对该量化后的输入特征的浮点乘运算变为查表获得结果的方式,从而达到对推理过程加速的效果。在完成所有的运算层的运算后,即可输出对应的推理结果。

举例来说,请参阅图6,图6是本申请实施例的深度神经网络推理方法的一个实施例图,其中,在向第一深度神经网络模型输入输入特征后,首先对该输入特征进行量化,而后对于第一卷积层,获取该第一卷积层的码本,而后根据该输入特征查询码本中的对应码字,完成第一卷积层的计算;而后再对第二卷积层进行处理,类似的,首先对输入特征进行量化,而后获取第二卷积层的码本,而后根据该输入特征查询码本中的对应码字,完成第二卷积层的计算,然后依此方式完成该第一深度神经网络模型的各卷积层和全连接层的计算过程,最后完成推理的输出。

下面以一个实际的例子对本申请实施例的深度神经网络推理方法进行说明,应用场景:用深度神经网络对图像数据集进行分类;

数据集(输入特征):imagenet,1000类,128万张图像;

深度神经网络模型:vgg16,属于大规模机器学习模型的一种。

运行系统:1块k80gpu卡(由英伟达公司推出的一款具有12g显存的计算卡),每个服务器对应一块intelxeone5-2620cpu(英特尔公司推出的服务器专用cpu)。

vgg16是目前一种比较常见的、分类精准度较高的图像分类网络。本申请深度神经网络推理的方法实例化如下:

a、在k80上,基于imagnet数据训练vgg16模型直至收敛;

接着对vgg16的前14个卷积层的模型参数进行均匀量化处理,每一个卷积层的模型参数均被均匀量化为256个值,每一个卷积层的模型参数两花钱可能具有几万到几十万个,具体的卷积层的模型参数量化为:

b、每一个全连接层的模型参数均被均匀量化为16个值:

c、在量化的过程中,还会对输入深度神经网络全连接层和卷积层的输入特征进行量化,可以都均匀量化为256个值,即输入所有全连接层和卷积层的量化输入特征是相同的。

d、按照上述完成的量化模型参数和量化输入特征进行模型的重训练,使得重训练后的模型与在具有量化模型参数和量化输入特征的情况下输出精度与训练前的模型基本相同。

e、准备量化输入特征与量化模型参数的浮点乘的码本以及该码本对应的索引值,具体的,每个卷积层形成256×256=65536个码字,即卷积层的量化输入特征的数量乘以卷积层的量化模型参数的数量的码字;每个全连接层形成256×16=4096个码字,即全连接层的量化输入特征的数量乘以全连接层的量化模型参数的数量的码字。

f、深度神经网络推理计算过程中,对深度神经网络每个运算层的输入特征按照步骤c进行量化,并依据步骤e形成的码本以及码本对应的索引值进行快速浮点乘运算。

上面对本申请实施例的深度神经网络推理方法进行了介绍,下面对本申请实施例的计算设备进行说明,请参阅图7,图7是本申请实施例的计算设备的一个实施例图。其中,该计算设备可包括:

收发模块701,接收向第一深度神经网络模型中的运算层输入的输入特征;

处理模块702,用于确定所述运算层对应的索引值,一个运算层的索引值对应一个运算层的码本,所述运算层的码本为所述运算层的码字的集合,所述运算层的码本中单个码字为所述运算层的单个量化模型参数与单个量化输入特征的乘积,所述运算层的每个量化模型参数分别与所述运算层的每个量化输入特征的乘积得到的码字的集合为所述运算层的码本;所述运算层的每个量化模型参数为将第二深度神经网络模型的模型参数按照预设的第二量化规则进行量化得到,所述运算层的每个量化输入特征为将所述第二深度神经网络模型对应所述运算层的输入特征按照所述预设的第一量化规则进行量化得到,所述第一深度神经网络模型为根据所述每个量化模型参数和所述每个量化输入特征对所述第二深度神经网络模型重训练得到;

所述处理模块702还用于根据所述运算层的索引值确定所述运算层的码本;

量化模块703,用于将所述输入特征按照预设的第一量化规则进行量化;

所述处理模块702还用于在所述运算层中,根据量化后的所述输入特征查询所述码本中对应所述量化后的输入特征的码字完成所述运算层对所述输入特征的运算。

其中,收发模块701能实现图3所示实施例中的步骤301;处理模块702能实现图3所示实施例中的步骤302、步骤304和步骤305;量化模块703能实现图3所示实施例中的步骤304。

可选的,所述运算层为卷积层或全连接层,所述第一深度神经网络模型包括至少一个卷积层和/或至少一个全连接层。

其中,采用全连接层和卷积层的方式可参见图3所示实施例的说明,此处不再赘述。

可选的,所述量化模块703执行第二量化规则包括:

采用线性量化或非线性量化将所述卷积层的模型参数量化为第二预设数量的量化模型参数;和/或。

采用线性量化或非线性量化将所述全连接层的模型参数量化为第三预设数量的量化模型参数。

其中,对于全连接层和卷积层的模型参数和输入特征的量化可参见图3所示实施例中针对步骤302和步骤304的说明,此处不再赘述。

可选的,所述第二预设数量与所述第三预设数量相同或者不同。

其中,对于全连接层和卷积层的模型参数和输入特征的量化可参见图3所示实施例中针对步骤302和步骤304的说明,此处不再赘述。

可选的,所述量化模块703第一量化规则包括:

采用线性量化或非线性量化将所述卷积层和/或全连接层的输入特征量化为第一预设数量的量化输入特征。

其中,对于全连接层和卷积层的模型参数和输入特征的量化可参见图3所示实施例中针对步骤302和步骤304的说明,此处不再赘述。

可选的,所述第二深度神经网络模型包括至少一个卷积层和至少一个全连接层,所述量化模块703还具体用于对所述第二深度神经网络模型的至少一个卷积层和至少一个全连接层中的至少一个运算层的输入特征和模型参数进行量化;

所述处理模块702还用于根据所述至少一个运算层的输入特征和模型参数对所述第二深度神经网络模型重训练得到所述第一深度神经网络模型。

其中,对于全连接层和卷积层的模型参数和输入特征的量化可参见图3所示实施例中针对步骤302和步骤304的说明,此处不再赘述。

可选的,所述第一深度神经网络模型中的至少两个卷积层中两个卷积层的量化模型参数的数量相同或者不同,所述第一深度神经网络模型中的至少两个全连接层的量化模型参数的数量相同或者不同。

其中,对于全连接层和卷积层的模型参数和输入特征的量化可参见图3所示实施例中针对步骤302和步骤304的说明,此处不再赘述。

上面对本申请实施例的计算设备进行了介绍,下面对本申请实施例的计算设备的另一种实现方式进行说明,请参阅图8,图8是本申请实施例的计算设备的一个实施例图。

处理模块801,用于使用第一数据训练第二深度神经网络模型至收敛,所述第二深度神经网络模型包括卷积层和全连接层;

量化模块802,将所述第二深度神经网络模型的卷积层的模型参数和输入特征分别进行量化,得到所述卷积层的第一量化模型参数集合和第一量化输入特征集合;

所述量化模块802还用于将所述第二深度神经网络模型的全连接层的的模型参数和输入特征分别进行量化,得到所述全连接层的第二量化模型参数集合和第二量化输入特征集合;

根据所述第一量化模型参数集合、第一量化输入特征集合、第二量化模型参数集合和量化输入特征集合对所述第二深度神经网络模型进行重训练得到第一深度神经网络模型;

所述处理模块801还用于构建所述第一深度神经网络模型的卷积层和全连接层的码本和所述码本对应的索引值,所述卷积层的码本为所述卷积层的码字的集合,所述卷积层的码本中单个码字为所述第一量化模型参数集合中的单个量化模型参数与所述第一量化输入特征集合中的单个量化输入特征的乘积,所述第一量化模型参数集合中的每个量化模型参数分别与所述第一量化输入特征集合中的每个量化输入特征的乘积得到的码字的集合为所述卷积层的码本;所述全连接层的码本为所述全连接层的码字的集合,所述全连接层的码本中单个码字为所述第二量化模型参数集合中的单个量化模型参数与所述第二量化输入特征集合中的单个量化输入特征的乘积,所述第二量化模型参数集合中的每个量化模型参数分别与所述第二量化输入特征集合中的每个量化输入特征的乘积得到的码字的集合为所述全连接层的码本。

可选的,所述第一量化模型参数集合与所述第二量化模型参数集合的数量相同或者不同,所述第一量化输入特征集合与所述第二量化输入特征集合的数量相同或者不同。

可选的,所述第一量化输入特征集合与所述第二量化输入特征集合为相同的集合。

下面对本申请实施例中计算设备的结构进行描述,请参阅图9,图9是本申请实施例的计算设备的一个实施例图,其中,计算设备9可包括均与总线相连接的至少一个处理器901、至少一个收发器902和存储器903,本申请实施例涉及的计算设备可以具有比图9所示出的更多或更少的部件,可以组合两个或更多个部件,或者可以具有不同的部件配置或设置,各个部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件或硬件和软件的组合实现。

具体的,对于图7所示的实施例来说,该处理器901能实现图7所示实施例中的计算设备的处理模块702和量化模块703的功能,该收发器902能实现图7所示实施例中的计算设备的收发模块701的功能,该收发器902还用于接收输入特征以及输出推理结果,该存储器903有多种结构,用于存储程序指令,处理器901用于执行所述存储器903中的指令以实现图3所述实施例中的深度神经网络推理方法。

具体的,对于图8所示的实施例来说,该处理器901能实现图8所示实施例中的计算设备的处理模块802和量化模块803的功能,该收发器902用于接收输入特征以及输出推理结果,该存储器903有多种结构,用于存储程序指令,处理器901用于执行所述存储器903中的指令以实现图3所述实施例中的深度神经网络推理方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1