CN111767980A - 模型优化方法、装置及设备 - Google Patents
模型优化方法、装置及设备 Download PDFInfo
- Publication number
- CN111767980A CN111767980A CN201910262674.1A CN201910262674A CN111767980A CN 111767980 A CN111767980 A CN 111767980A CN 201910262674 A CN201910262674 A CN 201910262674A CN 111767980 A CN111767980 A CN 111767980A
- Authority
- CN
- China
- Prior art keywords
- network layer
- layer
- convolution
- register
- critical point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 110
- 238000005457 optimization Methods 0.000 title claims abstract description 46
- 239000011159 matrix material Substances 0.000 claims abstract description 132
- 238000013135 deep learning Methods 0.000 claims abstract description 96
- 238000013139 quantization Methods 0.000 claims abstract description 94
- 230000008569 process Effects 0.000 claims abstract description 62
- 238000009825 accumulation Methods 0.000 claims description 99
- 230000006870 function Effects 0.000 claims description 29
- 238000012546 transfer Methods 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 19
- 230000004913 activation Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 6
- 238000001514 detection method Methods 0.000 description 37
- 238000010586 diagram Methods 0.000 description 19
- 238000004458 analytical method Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 10
- 238000013136 deep learning model Methods 0.000 description 9
- 238000011002 quantification Methods 0.000 description 8
- 230000001186 cumulative effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
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)
- Image Analysis (AREA)
Abstract
本发明实施例提供一种模型优化方法、装置及设备,本发明实施例在确定深度学习量化模型的目标网络层存在溢出风险时,确定目标网络层中卷积核的系数矩阵的分组临界点,并按照所述分组临界点对所述目标网络层进行处理,以使处理后的目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出寄存器允许存储的范围,从而确保平台正确、高效地运行优化后的量化模型。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及模型优化方法、装置及设备。
背景技术
随着深度学习的发展,网络性能虽然越来越强大。目前,训练好的模型的网络层可能存在大量的乘累加运算,运算过程中产生的中间结果会缓存到寄存器中。例如,卷积核可以包括C个通道,每个通道存在一个系数矩阵,每个通道的系数矩阵与该层网络的输入数据进行卷积运算,每个系数矩阵对应的运算结果会按预设累加顺序依次累加,并将累加结果存储到寄存器中,可以将卷积运算过程中需缓存到寄存器的值称为中间结果。各类芯片平台在使用模型时,会采用位宽固定的寄存器来保存模型应用阶段的中间结果,当乘累加运算的规模较大,对于一些特殊的输入,会出现中间结果所需位宽超出寄存器的位宽的情况,导致整个模型输出结果异常,影响整体性能,且无法预见。
发明内容
为克服相关技术中存在的问题,本发明提供了溢出风险检测方法、装置及设备/模型优化方法、装置及设备。
根据本发明实施例的第一方面,提供一种溢出风险检测方法,所述方法包括:
从深度学习量化模型的待检测网络层中获得卷积核;
确定中间结果的极端值,所述中间结果的极端值是在利用所述待检测网络层输入数据的极端值与所述卷积核进行卷积运算过程中产生的中间结果的极端值,极端值包括最大值和最小值,中间结果存储到寄存器;
在中间结果的极端值超出寄存器允许存储的数值范围的情况下,判定所述待检测网络层存在溢出风险。
根据本发明实施例的第二方面,提供一种溢出风险检测装置,所述装置包括:
数据获取模块,用于从深度学习量化模型的待检测网络层中获得卷积核;
极端值确定模块,用于确定中间结果的极端值,所述中间结果的极端值是在利用所述待检测网络层输入数据的极端值与所述卷积核进行卷积运算过程中产生的中间结果的极端值,极端值包括最大值和最小值,中间结果存储到寄存器;
风险检测模块,用于在中间结果的极端值超出寄存器允许存储的数值范围的情况下,判定所述待检测网络层存在溢出风险。
根据本发明实施例的第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现上述任一项所述溢出风险检测方法。
根据本发明实施例的第四方面,提供一种模型优化方法,所述方法包括:
在确定深度学习量化模型的目标网络层存在溢出风险时,确定所述目标网络层中卷积核的系数矩阵的分组临界点,所述卷积核包括C个系数矩阵;
按照所述分组临界点对所述目标网络层进行处理,得到处理后的所述目标网络层;其中,处理后的所述目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出所述寄存器允许存储的范围。
根据本发明实施例的第五方面,提供一种模型优化装置,所述装置包括:
临界点确定模块,用于在确定深度学习量化模型的目标网络层存在溢出风险时,确定所述目标网络层中卷积核的系数矩阵的分组临界点,所述卷积核包括C个系数矩阵;
模型优化模块,用于按照所述分组临界点对所述目标网络层进行处理,得到处理后的所述目标网络层;其中,处理后的所述目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出所述寄存器允许存储的范围。
根据本发明实施例的第六方面,提供一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现上述任一项所述模型优化方法。
本发明的实施例提供的技术方案可以包括以下有益效果:
本实施例溢出风险检测方案,先从深度学习量化模型的待检测网络层中获得卷积核,确定中间结果的极端值,由于中间结果的极端值是在利用待检测网络层输入数据的极端值与获得的卷积核进行卷积运算过程中产生的中间结果的极端值,因此,可以通过将中间结果的极端值与寄存器允许存储的数值范围进行比较,在中间结果的极端值超出寄存器允许存储的数值范围的情况下,判定待检测网络层存在溢出风险,从而实现对深度学习量化模型的溢出风险检测,以评估深度学习量化模型的好坏。
本实施例模型优化方案,在确定深度学习量化模型的目标网络层存在溢出风险时,确定目标网络层中卷积核的系数矩阵的分组临界点,并按照所述分组临界点对所述目标网络层进行处理,以使处理后的目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出寄存器允许存储的范围,从而确保平台正确、高效地运行优化后的量化模型。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入发明中并构成本发明的一部分,示出了符合本发明的实施例,并与发明一起用于解释本发明的原理。
图1是本发明根据一示例性实施例示出的一种基于卷积层介绍中间结果的示意图。
图2是本发明根据一示例性实施例示出的一种溢出风险检测方法的流程图。
图3a、图3b、图3c、图3d、图3e是本发明根据一示例性实施例示出的几种待检测网络层与位于其上层的网络层之间的关系示意图。
图4是本发明根据一示例性实施例示出的一种应用溢出风险检测方法的示意图。
图5是本发明根据一示例性实施例示出的一种模型优化方法的流程图。
图6中a和b是本发明根据一示例性实施例示出的一种网络层拆分前后对比示意图。
图7是本发明根据一示例性实施例示出的一种应用模型优化方法的示意图。
图8是本发明根据一示例性实施例示出的另一种应用模型优化方法的示意图。
图9是本发明根据一示例性实施例示出的一种溢出风险检测/模型优化装置所在计算机设备的一种硬件结构图。
图10是本发明根据一示例性实施例示出的一种溢出风险检测装置的框图。
图11是本发明根据一示例性实施例示出的一种模型优化装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
深度学习是指多层神经网络上运用各种机器学习算法解决图像,文本等各种问题的算法集合。深度学习从大类上可以归入神经网络,不过在具体实现上有许多变化。深度学习的核心可以是特征学习,旨在通过分层网络获取分层次的特征信息,从而解决以往需要人工设计特征的重要难题。深度学习是一个框架,包含多个重要算法。本说明书实施例主要应用于包含卷积运算的深度学习网络,如GoogleNet、ResNet、Yolo等。目前,训练好的模型的网络层在进行卷积运算时可能存在大量的乘累加运算,运算过程中产生的中间结果会缓存到寄存器中。
如图1所示,该图以卷积层为例进行示例说明。在该卷积层中包括N个卷积核,每个卷积核包括C个通道,每个通道有一个W*H大小的系数矩阵。该层卷积层的输入数据可以是C维特征图(即具有C个通道的特征图)。可以理解的是,本层卷积层输入数据的维度数量与上层网络层中卷积核个数相同。卷积核与输入数据的卷积运算可以是每个通道的特征图与对应通道系数矩阵进行卷积运算,并依次将各通道的运算结果进行累加,将累加结果缓存到寄存器中。如图1所示,针对特征图中同一像素点,按预设累加顺序,将第k维度特征图与第k通道的系数矩阵进行卷积运算,并将该运算结果与寄存器中已有累加结果进行累加,并利用计算获得的累加结果更新寄存器中已有累加结果,直到所有通道的系数矩阵执行完卷积运算,获得该像素点最终的计算结果。累加结果可以称为中间结果,换言之,中间结果是卷积运算过程中需缓存到寄存器的值。k的取值范围为[1,C]。图1中,针对-8位置处对应的像素点,每个通道都会与相应特征图卷积运算后有个运算结果。例如,在计算第k+1通道(下一通道)的卷积运算前,会将第k通道(当前通道)卷积运算获得的运算结果与寄存器中已有累加结果进行累加,并利用获得的累加结果更新寄存器中已有累加结果,以实现依次累加各通道的卷积运算的运算结果,在第C个通道卷积运算获得的运算结果累加到寄存器后,获得该像素点的最终结果。由于累加结果是在获得像素点最终结果期间的结果,因此可以称为中间结果,且该中间结果是运算过程中需缓存到寄存器的值。若k为1,则-8是利用第一个通道的系数矩阵进行卷积运算的运算结果,也是中间结果,将其缓存到寄存器中。若k大于1,则-8是利用第k个通道的系数矩阵进行卷积运算的运算结果,将该运算结果与寄存器中已有的累加结果进行累加,获得的累加结果为中间结果,并利用该累加结果更新寄存器中已有的累加结果。
在获得像素点的最终结果后,可以存储该结果,并将寄存器清空,以便缓存下一个像素点卷积运算过程中的中间结果,在获得所有像素点的最终结果后,得到特征图。然后再进行下一个卷积核的卷积运算,在该层网络中所有卷积核的卷积运算结束后,将所有特征图进行叠加,可以得到N维度(N个通道)的特征图。
可以理解的是,在进行卷积运算过程中,每次可以执行一个卷积核的卷积运算,也可以同时执行多个卷积核的卷积运算;针对同一个卷积核,每次可以利用一个通道的系数矩阵执行卷积运算,也可以同时利用多个通道的系数矩阵执行卷积运算(中间结果为多个通道运算结果的累加值),具体根据需求配置。寄存器允许存储一个数据或多个数据。例如,寄存器可以是向量寄存器,向量寄存器可以缓存多个卷积核的中间结果。
各类芯片平台在使用模型时,会采用位宽固定的寄存器来保存模型应用阶段的中间结果,可能会出现中间结果所需位宽超出寄存器的位宽的情况,导致整个模型输出结果异常,影响整体性能,且无法预见。因此,能事先检测出深度学习量化模型是否存在溢出风险显得尤为重要。
鉴于此,本发明实施例提供一种溢出风险检测方案,先从深度学习量化模型的待检测网络层中获得卷积核,确定中间结果的极端值,由于中间结果的极端值是在利用待检测网络层输入数据的极端值与获得的卷积核进行卷积运算过程中产生的中间结果的极端值,因此,可以通过将中间结果的极端值与寄存器允许存储的数值范围进行比较,在中间结果的极端值超出寄存器允许存储的数值范围的情况下,判定待检测网络层存在溢出风险,从而实现对深度学习量化模型的溢出风险检测,以评估深度学习量化模型的好坏。
接下来结合附图对溢出风险检测方案进行示例说明。
如图2所示,是本发明根据一示例性实施例示出的一种溢出风险检测方法的流程图,所述方法包括:
在步骤202中,从深度学习量化模型的待检测网络层中获得卷积核;
在步骤204中,确定中间结果的极端值,所述中间结果的极端值是在利用所述待检测网络层输入数据的极端值与所述卷积核进行卷积运算过程中产生的中间结果的极端值,极端值包括最大值和最小值,中间结果存储到寄存器;
在步骤206中,在中间结果的极端值超出寄存器允许存储的数值范围的情况下,判定所述待检测网络层存在溢出风险。
深度学习量化模型可以是对训练获得的深度学习模型进行量化处理后的模型。深度学习模型可以是对包含有卷积运算的深度学习网络进行训练获得的网络模型。深度学习不同的网络结构,构成不同的深度学习模型。例如,包含有卷积运算的神经网络可以是GoogleNet、ResNet、Yolo等。
量化处理作为一种网络压缩处理。量化模型可以是为了对深度学习模型进行精剪,可以通过将模型中的系数进行量化而得到的模型。例如,可以是将以往用32bit或者64bit表达的浮点数用8bit、2bit、1bit等占用较少内存空间的形式进行存储。而针对如何将深度学习网络模型进行量化处理获得深度学习量化模型,可以参考相关技术,在此不做限制。
深度学习量化模型包括具有连接关系的多个网络层,待检测网络层是深度学习量化模型中待进行溢出风险检测的网络层。在一个例子中,溢出风险往往是由于乘累加运算引起,深度学习量化模型涉及很多网络层,则,本实施例中的待检测网络层可以是包含有卷积核的网络层,例如,待检测网络层可以是待检测卷积层、待检测全连接层等。
从深度学习量化模型的待检测网络层中获得卷积核,并确定中间结果的极端值。所述中间结果的极端值是在利用所述待检测网络层输入数据的极端值与所述卷积核进行卷积运算过程中产生的中间结果的极端值,极端值包括最大值和最小值,中间结果存储到寄存器。
关于如何确定中间结果的极端值,示例性的,可以先构建输入数据中的最大输入数据和最小输入数据,再利用最大输入数据和最小输入数据分别与卷积核进行卷积运算,确定卷积运算过程中可能产生的中间结果的极端值。
在一个实施例中,所述中间结果的极端值的确定过程可以包括:
获取所述待检测网络层与所述深度学习量化模型包括的位于所述待检测网络上层的网络层之间的连接关系;
根据所述连接关系确定待检测网络层的输入数据中的最大输入数据和最小输入数据;
将所述最大输入数据和最小输入数据分别与卷积核内所有系数矩阵的正数累计值和负数累计值进行指定乘累加运算,获得中间结果的极端值。
在该实施例中,不考虑累加顺序,直接将卷积核内所有系数矩阵的正数进行累加获得正数累计值,将卷积核内所有系数矩阵的负载累加获得负数累计值,由于已经获得输入数据中的最大输入数据和最小输入数据,以及该卷积核内所有系数矩阵的正数累计值和负数累计值,而实际上卷积运算是乘累加运算,因此,可以将最大输入数据和最小输入数据分别与正数累计值和负数累计值进行指定乘累加运算,从而中间结果的极端值,并且,由于针对同一个卷积核仅需进行一次指定乘累加运算,从而提高计算效率。
以下以一种指定乘累加运算进行示例说明。
所述指定乘累加运算的公式如下:
rmax=sum_pos×Imax+sum_nat×Imin+bias
rmin=sum_nat×Imax+sum_pos×Imin+bias
卷积核包括C个系数矩阵,rmax表示中间结果的最大值,rmin表示中间结果的最小值,sum_pos表示卷积核内C个系数矩阵中所有正系数的累加值(即正数累计值),sum_nat表示卷积核内C个系数矩阵中所有负系数的累加值(即负数累计值),Imax表示最大输入数据,Imin表示最小输入数据,bias表示偏置值。
可见,在该实施例中,将正数累计值同最大输入数据的乘积,负数累计值与最小输入数据的乘积、以及偏置值相加,即可获得中间结果的最大值,将负数累计值同最大输入数据的乘积,正数累计值同最小输入数据的乘积,以及偏置值相加,即可获得中间结果的最小值。
可以理解的是,指定乘累加运算包括但不限于上述所示例的方式,只要能用于获得可能的中间结果极端值即可,在此不一一赘述。
在某些场景中,输入数据与卷积核进行卷积运算时,是沿着预设累加顺序依次将当前通道的系数矩阵与其对应的输入数据进行卷积运算,并将运算结果进行累加,而直接将最大输入数据和最小输入数据分别与卷积核内所有系数矩阵的正数累计值和负数累计值进行指定乘累加运算获得的中间结果的极端值,可能是极端情况下的极端值,而实际计算过程中产生的中间结果可能达不到极端情况下的极端值,鉴于此,还提供另一种计算中间结果的极端值的方法,该实施例按预设累加顺序依次累加,并将每次累加结果与寄存器允许存储的数值范围进行比较,以判断该网络层是否存在溢出风险。则,在另一个实施例中,中间结果的极端值的确定过程可以包括:
获取所述待检测网络层与所述深度学习量化模型包括的位于所述待检测网络上层的网络层之间的连接关系;
根据所述连接关系确定待检测网络层的输入数据中的最大输入数据和最小输入数据;
沿着预设累加顺序,依次将当前通道的系数矩阵的正数累计值和负数累计值分别与所述最大输入数据和最小输入数据进行指定乘累加运算,并将获得的运算结果的最大值和最小值分别累加到寄存器中,每次累加结果作为中间结果的极端值。
在该实施例中,考虑卷积核中各系数矩阵进行卷积运算后运算结果的累加顺序,沿着预设累加顺序,依次利用每个系数矩阵进行指定乘累加运算,并将获得的运算结果的最大值累加到已有的最大值累加结果,将获得的运算结果的最小值累加到已有的最小值累加结果,每次累加获得的最大值累加结果和最小值累加结果可以作为中间结果的极端值,以便判断每次获得的累加结果是否在寄存器允许存储的数值范围内,继而判断待检测网络层是否存在溢出风险,按预设累加顺序获得的中间结果极端值与实际可能产生的中间结果更贴近,因此,可以提高溢出风险检测的准确性。
以下以一种指定乘累加运算进行示例说明。
所述指定乘累加运算的公式如下:
rmax_temp(c)=sum_pos(c)×Imax+sum_nat(c)×Imin+bias
rmin_temp(c)=sum_nat(c)×Imax+sum_pos(c)×Imin+bias
卷积核包括C个系数矩阵,rmax_temp(c)表示第c个系数矩阵(即通道c的系数矩阵)的运算结果的最大值,rmin_temp(c)表示第c个系数矩阵的运算结果的最小值,sum_pos(c)表示第c个系数矩阵中所有正系数的累加值;sum_nat(c)表示第c个系数矩阵中所有负系数的累加值,Imax表示最大输入数据;Imin表示最小输入数据,bias表示偏置值,c∈[1,C]。
将第c个系数矩阵的运算结果的最大值累加到已有的最大值累加结果rmax,将第c个系数矩阵的运算结果的最小值累加到已有的最小值累加结果rmin,然后将rmax和rmin作为中间结果的极端值,以判断rmax是否在寄存器允许存储的数值范围内,以及rmin是否在寄存器允许存储的数值范围内,若其中任一不满足,则判定待检测网络层存在溢出风险。
可以理解的是,指定乘累加运算包括但不限于上述所示例的方式,只要能用于获得利用当前通道的系数矩阵进行卷积运算的运算结果中可能的极端值即可,在此不一一赘述。
而关于如何确定待检测网络层的输入数据中的最大输入数据和最小输入数据,在一个实施例中,为了使构建的输入数据与实际场景更贴近,还考虑与待检测网络层连接的其他层,并结合其他层,预测出输入待检测网络层中可能的最大输入数据和最小输入数据。例如,获取所述待检测网络层与所述深度学习量化模型包括的位于所述待检测网络上层的网络层之间的连接关系;根据所述连接关系确定待检测网络层的输入数据中的最大输入数据和最小输入数据。深度学习量化模型包括网络结构以及每层网络层上的参数。因此,可以通过分析深度学习量化模型,获得网络层间的关系。本实施例从深度学习量化模型中获取待检测网络层与位于该待检测网络上层的网络层之间的连接关系,进而根据连接关系确定待检测网络层的输入数据中的最大输入数据和最小输入数据。位于待检测网络层上层的网络层可以是激活层、中间层等。在一个实施例中,可以考虑待检测网络层与位于该待检测网络层上层的待检测网络层(简称上一层待检测网络层)之间的网络层,结合深度学习量化模型的量化位宽,以量化位宽构建上一层待检测网络层的输出数据的范围,即当前待检测网络层与上一层待检测网络层间网络层的输入数据的范围,继而通过当前待检测网络层与上一层待检测网络层间网络层的运算,推测出输入当前的待检测网络层的最大输入数据和最小输入数据。通过量化位宽所构建的数据范围,可以是:[(-2bw-1),(2bw-1-1)]。
以下以几种中间层不同的情况示例说明如何确定最大输入数据和最小输入数据。以待检测网络层为卷积层/全连接层为例,图3a、图3b、图3c、图3d和图3e是根据一示例性实施例示出的几种待检测网络层与位于其上层的网络层之间的关系示意图。该示意图列举几种位于待检测网络层上层的网络层的情况。
所述最大输入数据和最小输入数据为函数M(A(x))的函数值取值范围中的最大值和最小值,x∈[(-2bw-1),(2bw-1-1)],bw表示所述深度学习量化模型的量化位宽;
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间存在激活层、且激活层与所述待检测网络层间存在中间层(如图3b、图3c、图3d和图3e),则A(x)表示所述激活层的激活函数,M(A(x))表示所述中间层的中间层函数;
可以理解的是,图3d和图3e中,不同激活层上可能对应相同卷积层/全连接层,也可能对应不同卷积层/全连接层,图3d和图3e以卷积层/全连接层与激活层一一对应进行示例。
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间存在激活层、且激活层与所述待检测网络层间不存在中间层(如图3a),则A(x)表示所述激活层的激活函数,M(A(x))=A(x);
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间不存在激活层、但存在中间层,则A(x)=x,M(A(x))表示所述中间层的中间层函数;
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间不存在激活层和中间层,则M(A(x))=A(x)=x。
A(x)表示以x作为输入数据的函数,M(A(x))表示以A(x)的函数值作为输入数据的函数。
根据深度学习量化模型解析结果,检测卷积或全连接层的上层是否存在激活层,且卷积或全连接层和激活层之间是否存在为非卷积层和非全连接层的中间层,继而根据分析结果,结合通过量化位宽所构建的输入数据的范围[(-2bw-1),(2bw-1-1)],可以获得待检测网络层的最大输入数据和最小输入数据。
激活层可以对输入的特征图fm进行激活操作(函数变化),通常具有非线性、单调性、输出值范围可知等特性。
可以理解的是,最大输入数据和最小输入数据的计算方法包括但不限于上述所示方法,只要能构建可能输入待检测网络的输入数据中的最大输入数据和最小输入数据即可,在此不一一赘述。
在获得中间结果的极端值后,将中间结果的极端值与寄存器允许存储的数值范围进行比较,如果中间结果的极端值在寄存器允许存储的数值范围内,则继续进行下一个卷积核的判断。如果中间结果的极端值不在寄存器允许存储的数值范围内,则判定待检测网络层存在溢出风险。所述寄存器允许存储的数值范围可以为:[(-2rbw-1),(2rbw-1-1)],rbw表示寄存器的位宽。
在检测到待检测网络层存在溢出风险后,可以直接判定深度学习量化模型存在溢出风险,也可以依据存在溢出风险的待检测网络层的层数,来判断深度学习量化模型是否存在溢出风险等。如果深度学习量化模型中所有待检测网络层均不存在溢出风险,则判定深度学习量化模型不存在溢出风险。
在检测到待检测网络层存在溢出风险后,可以输出待检测网络层存在溢出风险的提醒信息或报警信息等,用户可以选择是否使用该模型,或者人工调节模型,或者直接选用位宽大的寄存器存储中间结果等处理手段。
如图4所示,是本发明根据一示例性实施例示出的一种应用溢出风险检测方法的示意图。在该实施例中,可涉及模型解析模块、风险检测模块以及模型应用模块。风险检测模块以及模型应用模块可以在同一个芯片平台上完成。风险检测模块可以根据模型解析模块解析出的数据,判断深度学习量化模型是否存在溢出风险,从而确定是输出溢出信息,还是触发模型应用模块运行深度学习量化模型。
如图4,在使用深度学习量化模型之前,将深度学习量化模型输入模型解析模块,通过模型解析模块对深度学习量化模型进行解析。例如,模型解析模块通过特定的协议完成对深度学习量化模型解析,提取深度学习量化模型应用阶段必要的网络模型图关系、参数、超参数、系数等,为后续深度学习量化模型溢出风险检测提供必要的数据。对深度学习量化模型进行解析后,风险检测模块可以采用上述任一项溢出风险检测方案检测深度学习量化模型是否存在溢出风险,在风险检测模块执行完成后,可以提供是否存在溢出风险的标志。如果存在溢出风险,则输出溢出信息,结束整个流程。如果深度学习量化模型不存在溢出风险,则模型应用模块使用深度学习量化模型进行推理,即模型应用模块用于执行深度学习量化模型应用阶段的操作。深度学习量化模型可以分为训练阶段和应用阶段,应用阶段又可以称为前向推理阶段。
以上实施方式中的各种技术特征可以任意进行组合,只要特征之间的组合不存在冲突或矛盾,但是限于篇幅,未进行一一描述,因此上述实施方式中的各种技术特征的任意进行组合也属于本发明公开的范围。
在深度学习量化模型存在溢出风险的情况下,一种方式,平台可以采用位宽较宽的寄存器来存储中间结果,以保证中间结果绝对不溢出,但这样做会严重影响平台效率。另一种方式,通过降低深度学习模型量化时的比特位宽,确保中间结果不会溢出,但这样会导致模型最终的精度下降或需要更大的研发投入及更长的研发周期。
鉴于此,本发明实施例还提供一种模型优化方案,通过对具有溢出风险的深度学习量化模型进行优化,从而确保平台正确、高效地运行各类深度学习量化模型。
接下来结合附图对模型优化方案进行示例说明。
如图5所示,是本发明根据一示例性实施例示出的一种模型优化方法的流程图,所述方法包括:
在步骤502中,在确定深度学习量化模型的目标网络层存在溢出风险时,确定所述目标网络层中卷积核的系数矩阵的分组临界点,所述卷积核包括C个系数矩阵;
在步骤504中,按照所述分组临界点对所述目标网络层进行处理,得到处理后的所述目标网络层;其中,处理后的所述目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出所述寄存器允许存储的范围。
本实施例中,为了进行区分,将存在溢出风险的待检测网络层称为目标网络层。在确定深度学习量化模型的目标网络层存在溢出风险时,确定目标网络层中卷积核的系数矩阵的分组临界点,并按照所述分组临界点对所述目标网络层进行处理,得到处理后的所述目标网络层,并且,处理后的所述目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出所述寄存器允许存储的范围,从而实现在优化模型的应用阶段,目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出所述寄存器允许存储的范围,从而避免溢出风险。
而关于如何确定深度学习量化模型的目标网络层存在溢出风险,可以采用上述任一项溢出风险检测方法进行确定,当然,也不限于采用上述手段确定目标网络层,例如,直接获得标记有溢出风险标识的目标网络层的深度学习量化模型等。
作为一种示例,所述确定深度学习量化模型的目标网络层存在溢出风险,包括:
从所述深度学习量化模型的待检测网络层中获得卷积核;
确定中间结果的极端值,所述中间结果的极端值是在利用所述待检测网络层输入数据的极端值与所述卷积核进行卷积运算过程中产生的中间结果的极端值,极端值包括最大值和最小值,中间结果存储到寄存器;
在中间结果的极端值超出寄存器允许存储的数值范围的情况下,判定所述待检测网络层为存在溢出风险的所述目标网络层。
作为一种示例,所述中间结果的极端值的确定过程包括:
获取所述待检测网络层与所述深度学习量化模型包括的位于所述待检测网络层上层的网络层之间的连接关系;
根据所述连接关系确定待检测网络层的输入数据中的最大输入数据和最小输入数据;
将所述最大输入数据和最小输入数据分别与卷积核内所有系数矩阵的正数累计值和负数累计值进行指定乘累加运算,获得中间结果的极端值。
作为一种示例,中间结果的极端值的确定过程包括:
获取所述待检测网络层与所述深度学习量化模型包括的位于所述待检测网络层上层的网络层之间的连接关系;
根据所述连接关系确定待检测网络层的输入数据中的最大输入数据和最小输入数据;
沿着预设累加顺序,依次将当前通道的系数矩阵的正数累计值和负数累计值分别与所述最大输入数据和最小输入数据进行指定乘累加运算,并将获得的运算结果的最大值和最小值分别累加到已有的最大值累加结果和已有的最小值累加结果,每次累加获得的最大值累加结果和最小值累加结果作为中间结果的极端值。
作为一种示例,所述最大输入数据和最小输入数据为函数M(A(x))的函数值取值范围中的最大值和最小值,x∈[(-2bw-1),(2bw-1-1)],bw表示所述深度学习量化模型的量化位宽;
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间存在激活层、且激活层与所述待检测网络层间存在中间层,则A(x)表示所述激活层的激活函数,M(A(x))表示所述中间层的中间层函数;
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间存在激活层、且激活层与所述待检测网络层间不存在中间层,则A(x)表示所述激活层的激活函数,M(A(x))=A(x);
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间不存在激活层、但存在中间层,则A(x)=x,M(A(x))表示所述中间层的中间层函数;
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间不存在激活层和中间层,则M(A(x))=A(x)=x。
可以理解的是,确定目标网络层过程中与上述溢出风险检测过程中相关技术相同,在此不一一赘述。
接下来对在确定存在溢出风险的目标网络层后,如何进行模型优化进行示例说明。
确定目标网络层中卷积核的系数矩阵的分组临界点,目的是为了将目标网络层进行处理,以使处理后的所述目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出所述寄存器允许存储的范围。
作为一种示例,采用很粗狂的分组临界点确定方式,如,直接将卷积核的每个系数矩阵确定为分组临界点,以对每个系数矩阵进行划分。或者直接将卷积核中固定个数的系数矩阵进行分组,以尽量降低每组中间结果存在溢出风险的可能性。
然而,这种分组方式准确性低、且会增加计算量,为此,在另一个示例中,还可以按预设累加顺序依次判断导致出现溢出的中间结果的系数矩阵,结合判断结果来确定分组临界点,从而实现按分组临界点处理后的目标网络层,在保证不会出现溢出风险的情况,还能减少计算量。
在一个实施例中,所述分组临界点的确定过程包括:
在按预设累加顺序利用卷积核的系数矩阵执行卷积运算获得中间结果的极端值的过程中,针对任一系数矩阵,若由该系数矩阵执行当前卷积运算产生的中间结果的极端值不在寄存器允许存储的数值范围内,则依据当前卷积运算所使用的系数矩阵确定所述卷积核的分组临界点;
其中,所述预设累加顺序为卷积核中各系数矩阵进行卷积运算后运算结果的累加顺序。
关于按预设累加顺序利用卷积核的系数矩阵执行卷积运算获得中间结果的极端值的过程,在一个实施例中,可以是沿着预设累加顺序,依次将当前通道的系数矩阵的正数累计值和负数累计值分别与所述最大输入数据和最小输入数据进行指定乘累加运算,并将获得的运算结果的最大值和最小值分别累加到已有的最大值累加结果和已有的最小值累加结果,每次累加获得的最大值累加结果和最小值累加结果作为中间结果的极端值。
针对同一个卷积核的任一系数矩阵,在利用任一系数矩阵执行当前卷积运算后,可以产生相应的中间结果的极端值,如果中间结果的极端值不在寄存器允许存储的数值范围内,则判定在该系数矩阵处可能存在溢出风险,则可以依据当前卷积运算所使用的系数矩阵确定所述卷积核的分组临界点,例如,将当前卷积运算所使用的系数矩阵的序号作为分组临界点,或者,按预设累加顺序,将排列在当前卷积运算所使用的系数矩阵之前的系数矩阵的序号作为分组临界点等。
该实施例在按预设累加顺序利用卷积核的系数矩阵执行卷积运算获得中间结果的极端值的过程中,依次判断每个系数矩阵所对应的中间结果的极端值是否不在寄存器允许存储的数值范围,如果不在,可以据实确定分组临界点,提高临界点的准确性。
例如,所述分组临界点的确定过程可以包括:
针对同一个卷积核的第c个通道的系数矩阵,采用以下公式计算第c个通道的系数矩阵的运算结果的最大值rmax_temp(c)和最小值rmin_temp(c),并将rmax_temp(c)累加到寄存器中已有的最大值累加结果rmax上,将rmin_temp(c)累加到寄存器中已有的最小值累加结果rmin上;
rmax_temp(c)=sum_pos(c)×Imax+sum_nat(c)×Imin+bias
rmin_temp(c)=sum_nat(c)×Imax+sum_pos(c)×Imin+bias
若rmax>(2rbw-1-1),或,rmin<-2rbw-1,则将Ci'=c-1确定为该卷积核的第i个分组临界点;
sum_pos(c)表示第c个系数矩阵中所有正系数的累加值;sum_nat(c)表示第c个系数矩阵中所有负系数的累加值,Imax表示最大输入数据;Imin表示最小输入数据,bias表示偏置值;i>1时,c的取值范围为(Ci-1'+1,C)。
在某些应用场景中,同一目标网络层可以包括多个卷积核,而每次不止能利用一个卷积核进行卷积运算,例如,向量寄存器中可以缓存多个卷积核的中间结果,鉴于此,可以统一不同卷积核的分组临界点,以便按照分组临界点对目标网络层进行处理后,处理后的目标网络层中仍可以实现多个卷积核同时运算。
在一个实施例中,所述目标网络层包括至少两个卷积核,所述分组临界点的确定过程包括:
在按预设累加顺序利用卷积核的系数矩阵执行卷积运算获得中间结果的过程中,针对任一卷积核,若由该卷积核的系数矩阵执行当前卷积运算产生的中间结果不在寄存器允许存储的数值范围内,则依据当前卷积运算所使用的系数矩阵所在位置确定所述卷积核的初始分组临界点;
在获得所述至少两个卷积核的初始分组临界点后,依据所述至少两个卷积核的第i个初始分组临界点中的最小初始分组临界值,确定每个卷积核的第i个分组临界点,以使所述不同卷积核具有相同分组临界点;
其中,所述预设累加顺序为卷积核中各系数矩阵进行卷积运算后运算结果的累加顺序。
关于按预设累加顺序利用卷积核的系数矩阵执行卷积运算获得中间结果的极端值的过程,在一个实施例中,可以是沿着预设累加顺序,依次将当前通道的系数矩阵的正数累计值和负数累计值分别与所述最大输入数据和最小输入数据进行指定乘累加运算,并将获得的运算结果的最大值和最小值分别累加到已有的最大值累加结果和已有的最小值累加结果,每次累加获得的最大值累加结果和最小值累加结果作为中间结果的极端值。
针对同一个卷积核的任一系数矩阵,在利用任一系数矩阵执行当前卷积运算后,可以产生相应的中间结果的极端值,如果中间结果的极端值不在寄存器允许存储的数值范围内,则判定在该系数矩阵处可能存在溢出风险,则可以依据当前卷积运算所使用的系数矩阵确定所述卷积核的初始分组临界点,例如,例如,将当前卷积运算所使用的系数矩阵的序号作为初始分组临界点,或者,按预设累加顺序,将排列在当前卷积运算所使用的系数矩阵之前的系数矩阵的序号作为初始分组临界点等。针对同一个卷积核,若当前卷积运算所使用的系数矩阵不是该卷积核的最后一个系数矩阵,则,继续以当前卷积运算所使用的系数矩阵的下一个系数矩阵进行卷积运算,并将中间结果的极端值与寄存器允许存储的数值范围进行比较,以判断该卷积核是否存在下一个初始分组临界点,直到卷积核内所有系数矩阵计算完成。
在计算完多个卷积核的所有初始分组临界点后,依据各卷积核的初始分组临界点中的最小初始分组临界点确定每个卷积核的分组临界点,以使所述不同卷积核具有相同分组临界点、且每个卷积核中分组临界点的个数为各卷积核中初始分组临界点的个数的最大值,实现分组临界点的统一。
例如,多个卷积核中,依据每个卷积核的第i个初始分组临界点中的最小初始分组临界点,确定每个卷积核的第i个分组临界点,以使所述不同卷积核具有相同分组临界点。假设单个卷积核中最多有m个初始临界点,则i∈[1,m]。
该实施例统一各卷积核的分组临界点,便于后续对目标网络层进行处理,同时能支持多个卷积核同时运算。
例如,若目标网络层包括N个卷积核,N大于或等于2,所述分组临界点的确定过程包括:
针对同一个卷积核的第c个通道的系数矩阵,采用以下公式计算第c个通道的系数矩阵的运算结果的最大值rmax_temp(c)和最小值rmin_temp(c),并将rmax_temp(c)累加到寄存器中已有的最大值累加结果rmax上,将rmin_temp(c)累加到寄存器中已有的最小值累加结果rmin上;
rmax_temp(c)=sum_pos(c)×Imax+sum_nat(c)×Imin+bias
rmin_temp(c)=sum_nat(c)×Imax+sum_pos(c)×Imin+bias
若rmax>(2rbw-1-1),或,rmin<-2rbw-1,则将Ci=c-1确定为该卷积核的第i个初始分组临界点;
针对所有卷积核的第i个初始分组临界点,依据目标网络层中所有卷积核的第i个初始分组临界点中的最小初始分组临界点Ci_min,确定每个卷积核的第i个实际分组临界点,记为Ci'。
sum_pos(c)表示第c个系数矩阵中所有正系数的累加值;sum_nat(c)表示第c个系数矩阵中所有负系数的累加值,Imax表示最大输入数据;Imin表示最小输入数据,bias表示偏置值;i>1时,c的取值范围为(Ci-1'+1,C)。
关于如何依据至少两个卷积核的第i个初始分组临界点中的最小初始分组临界点,确定每个卷积核的第i个分组临界点,在一个例子中,可以直接将各卷积核的第i个初始分组临界点中的最小初始分组临界点,作为每个卷积核的第i个分组临界点。即,Ci'为目标网络层的所有卷积核对应的第i个初始分组临界点中的最小值初始分组临界点。
在另一个例子中,为了适配某些芯片平台的计算要求,有些处理平台支持多个系数矩阵同时运算,为此,为了提高资源利用率,还将每组系数矩阵的个数配置为R的整数倍,R为当前处理平台能同时处理的计算资源的个数。例如,若m*R≤Ci_min<(m+1)*R,则,Ci'=m*R,Ci_min为目标网络层的所有卷积核对应的第i个初始分组临界点中的最小初始分组临界点,m为正整数。
可见,将分组临界点配置为R的整数倍,可以保证分组后每组系数矩阵的个数配置为R的整数倍,从而能尽可能实现R个计算资源被利用,提高资源利用率。
可以理解的是,还可以采用其他手段获得分组临界点,在此不一一赘述。
在获得分组临界点后,可以按照所述分组临界点对所述目标网络层进行处理,得到处理后的所述目标网络层;处理后的所述目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出所述寄存器允许存储的范围。
在一个实施例中,可以将目标网络层的卷积核中C个系数矩阵按所述分组临界点进行分组,获得优化模型,优化模型至少满足:利用每组系数矩阵执行卷积运算过程中产生的中间结果在寄存器允许存储的数值范围内。
作为一种示例,所述分组临界点用于将所述目标网络层的卷积核中的C个系数矩阵进行分组,所述按照所述分组临界点对所述目标网络层进行处理,包括:
根据所述分组临界点,将所述目标网络层的卷积核中的C个系数矩阵进行分组,按照分组情况将所述目标网络层拆分成多个子网络层,使得所述目标网络层的卷积核中的C个系数矩阵以分组方式分布在所述多个子网络层中;按照分组情况将所述目标网络层拆分成多个子网络层,包括:
为所述目标网络层配置数据拆分层和数据合并层;
所述数据拆分层用于按所述分组情况将所述目标网络层拆分成多个子网络层;所述数据合并层用于将所述多个子网络层的输出结果进行合并。
例如,数据拆分层可以是Slice层,数据合并层可以是Eltwise_sum层。如图6所示,是本发明根据一示例性实施例示出的一种网络层拆分前后对比示意图。图6中的(a)是网络层拆分前的示意图,示意出存在溢出风险的目标网络层,假设目标网络层的输入层为Layer_n,目标网络层的输出层为Layer_n+2,目标网络层中卷积核的大小(bottom_size)为:WxHxC。WxHx为系数矩阵的大小,C为系数矩阵的个数。图6中的(b)是优化后的网络层。假设采样上述实施例的方法确定单个卷积核中最多有m个初始临界点,m个初始临界点可以划分获得m+1个子网络层。通过在存在溢出风险的目标网络层前显式地增加Slice层,在存在溢出风险的目标网络层后显式地增加Eltwise层,得到新的深度学习量化模型。
Conv2-1表示:以第1个分组临界点进行划分获得第一个子网络层,该子网络层中卷积核的大小(bottom_size)为:WxHxC1,C1表示第一个子网络层中系数矩阵的个数(即通道数),第一个子网络层中包括:第一个系数矩阵到第1个分组临界点处的系数矩阵。
Conv2-2表示:以第2个分组临界点进行划分获得第二个子网络层,该子网络层中卷积核的大小(bottom_size)为:WxHxC2,C2表示第二个子网络层中系数矩阵的个数,第二个子网络层中包括:第1个分组临界点处的下一个系数矩阵到第2个分组临界点处的系数矩阵。
Conv2-(m+1)表示:以第m个分组临界点将剩余的系数矩阵划分获得的第(m+1)个子网络层,该子网络层中卷积核的大小(bottom_size)为:WxHxC(m+1),C(m+1)表示第m个子网络层中系数矩阵的个数,第m个子网络层中包括:第m个分组临界点处的下一个系数矩阵到该卷积核最后一个系数矩阵。
可以理解的是,不仅对卷积核中的C个系数矩阵进行分组,还根据分组临界点将输入数据按预设累加顺序进行切分,如根据分组临界点将C维特征图进行切分,以使分组后的系数矩阵能与对应的特征图进行卷积运算。
该实施例通过增加数据拆分层和数据合并层的方式将目标网络层的卷积核中的C个系数矩阵进行分组,以实现将目标网络层拆分成多个子网络层,可以实现对深度学习量化模型进行等效、快速、低成本的优化,从而确保平台正确、高效地运行各类深度学习量化模型。
在另一个实施例中,还可以通过增加位宽较大的寄存器的方式来解决溢出问题。例如,所述分组临界点用于将卷积核的系数矩阵执行卷积运算的中间结果进行分组存储,所述按照所述分组临界点对所述目标网络层进行处理,包括:
在所述目标网络层的卷积核中为每个分组临界点配置预设的数据转移参数,以生成具有预设的数据转移参数的目标网络层;
所述寄存器包括第一寄存器器和第二寄存器,所述第二寄存器的位宽大于所述第一寄存器的位宽;所述预设的数据转移参数用于在执行具有预设的数据转移参数的目标网络层的卷积运算过程中,执行到利用预设的数据转移参数表示的分组临界点时,将第一寄存器当前缓存的运算结果累加到第二寄存器中,并将所述第一寄存器清零,清零后的所述第一寄存器用于存储下一组系数矩阵卷积运算过程产生的中间结果。
数据转移参数可以是预定义的超参。在深度学习量化模型中,在存在溢出风险的目标网络层中,增加数据转移参数,生成具有数据转移参数的特殊卷积层(可以简称Conv_SE层),从而得到新的深度学习量化模型。Conv_SE层在深度学习量化模型前向推理实现时,执行到分组临界点,则将该点前得到的中间结果累加到更大位宽的中间寄存器中,清零计算下一段(两个分组临界点之间称为一段),直到结束输出量化结果。该实施例隐式地实现Slice层和Eltwise层的功能。
可以理解的是,还可以采用其他方式按照分组临界点对目标网络层进行处理,只要处理后的所述目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出所述寄存器允许存储的范围即可,在此不一一赘述。
以上实施方式中的各种技术特征可以任意进行组合,只要特征之间的组合不存在冲突或矛盾,但是限于篇幅,未进行一一描述,因此上述实施方式中的各种技术特征的任意进行组合也属于本发明公开的范围。
以下以其中一种组合进行示例说明。
如图7所示,是本发明根据一示例性实施例示出的一种应用模型优化方法的示意图。在该实施例中,可涉及模型解析模块和模型溢出处理模块。该实施例方案可以在拥有深度学习模型生成环境的平台上完成,也可以在深度学习量化模型前向推理(模型应用阶段)的芯片平台上完成。例如,适用于运行深度学习量化模型前向推理的芯片平台可以为:DSP、ARM、FPGA、GPU等。将深度学习量化模型输入模型解析模块,模型解析模块通过特定的协议完成对深度学习量化模型解析,提取深度学习量化模型前向推理时必要的参数、超参数、系数等,为模型溢出处理模块提供必要的数据。模型溢出处理模块采用上述任一项模型优化方案对深度学习量化模型进行优化,将优化后的深度学习量化模型(简称优化模型)输出。
接下来对模型溢出处理模块进行示例说明。如图8所示,是本发明根据一示例性实施例示出的另一种应用模型优化方法的示意图。所述方法包括:
在步骤802中,从所述深度学习量化模型的待检测网络层中获得卷积核;
在步骤804中,确定待检测网络层的输入数据中的最大输入数据和最小输入数据;
在步骤806中,按预设累加顺序,依次利用卷积核的系数矩阵执行卷积运算获得中间结果的极端值。
例如,沿着预设累加顺序,依次将当前通道的系数矩阵的正数累计值和负数累计值分别与所述最大输入数据和最小输入数据进行指定乘累加运算,并将获得的运算结果的最大值和最小值分别累加到已有的最大值累加结果和已有的最小值累加结果,本次累加获得的最大值累加结果和最小值累加结果作为利用当前通道的系数矩阵执行卷积运算获得中间结果的极端值。
在步骤808中,若中间结果的极端值不在寄存器允许存储的数值范围内时,判定待检测网络层为存在溢出风险的目标网络层。
在步骤810中,计算目标网络层中系数矩阵的分组临界点。
依据当前卷积运算所使用的系数矩阵确定所述卷积核的初始分组临界点。将已有的最大值累加结果和已有的最小值累加结果清零,并执行:利用下一个通道的系数矩阵执行卷积运算获得中间结果的极端值,若中间结果的极端值不在寄存器允许存储的数值范围内时,确定下一个初始分组临界点,若中间结果的极端值在寄存器允许存储的数值范围内时,再进行下一个通道的计算,直到该卷积核内所有系数矩阵被执行完成,该卷积核的初始分组临界点计算完成,则进行下一个卷积核的初始分组临界点的计算。在获得目标网络层中所有卷积核的初始分组临界点后,依据所有卷积核的第i个初始分组临界点中的最小初始分组临界点,确定每个卷积核的第i个分组临界点,以使所述不同卷积核具有相同分组临界点。
在步骤812中,按照所述分组临界点对所述目标网络层进行处理,得到处理后的所述目标网络层;处理后的所述目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出所述寄存器允许存储的范围。
可以理解的是,图8与图5相关技术相同,在此不一一赘述。
本实施例方案提出了一种不同芯片平台运行深度学习量化模型时的溢出检测及溢出解决方法,确保深度学习量化模型可应用于芯片平台且避免在运行过程中出现不可控的结果。采用分析深度学习量化模型上下层关系,有效提高溢出风险检测的准确率。对溢出模型采用显示或隐式的分组方法,解决深度学习量化模型的溢出问题,无需对深度学习模型进行重新训练、量化,加速深度学习模型应用。在优化模型时,设计各个分组临界点,使得处理后的深度学习量化模型较处理前更高效。另外,模型优化方案还可以延伸至卷积或全连接层的尺寸优化,使深度学习模型更适合芯片平台。
与前述溢出风险检测/模型优化方法的实施例相对应,本发明还提供了溢出风险检测/模型优化装置及其所应用的电子设备的实施例。
本发明溢出风险检测/模型优化装置的实施例可以应用在计算机设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在计算机设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图9所示,是本发明溢出风险检测/模型优化装置所在计算机设备的一种硬件结构图,除了图9所示的处理器910、网络接口920、内存930、以及非易失性存储器940之外,实施例中溢出风险检测/模型优化装置931所在的计算机设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。
如图10所示,是本发明根据一示例性实施例示出的一种溢出风险检测装置的框图,所述装置包括:
数据获取模块1020,用于从深度学习量化模型的待检测网络层中获得卷积核;
极端值确定模块1040,用于确定中间结果的极端值,所述中间结果的极端值是在利用所述待检测网络层输入数据的极端值与所述卷积核进行卷积运算过程中产生的中间结果的极端值,极端值包括最大值和最小值,中间结果存储到寄存器;
风险检测模块1060,用于在中间结果的极端值超出寄存器允许存储的数值范围的情况下,判定所述待检测网络层存在溢出风险。
作为一种示例,所述极端值确定模块1040用于:
获取所述待检测网络层与所述深度学习量化模型包括的位于所述待检测网络层上层的网络层之间的连接关系;
根据所述连接关系确定待检测网络层的输入数据中的最大输入数据和最小输入数据;
将所述最大输入数据和最小输入数据分别与卷积核内所有系数矩阵的正数累计值和负数累计值进行指定乘累加运算,获得中间结果的极端值。
作为一种示例,所述极端值确定模块1040用于:
获取所述待检测网络层与所述深度学习量化模型包括的位于所述待检测网络层上层的网络层之间的连接关系;
根据所述连接关系确定待检测网络层的输入数据中的最大输入数据和最小输入数据;
沿着预设累加顺序,依次将当前通道的系数矩阵的正数累计值和负数累计值分别与所述最大输入数据和最小输入数据进行指定乘累加运算,并将获得的运算结果的最大值和最小值分别累加到已有的最大值累加结果和已有的最小值累加结果,每次累加获得的最大值累加结果和最小值累加结果作为中间结果的极端值。
作为一种示例,所述最大输入数据和最小输入数据为函数M(A(x))的函数值取值范围中的最大值和最小值,x∈[(-2bw-1),(2bw-1-1)],bw表示所述深度学习量化模型的量化位宽;
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间存在激活层、且激活层与所述待检测网络层间存在中间层,则A(x)表示所述激活层的激活函数,M(A(x))表示所述中间层的中间层函数;
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间存在激活层、且激活层与所述待检测网络层间不存在中间层,则A(x)表示所述激活层的激活函数,M(A(x))=A(x);
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间不存在激活层、但存在中间层,则A(x)=x,M(A(x))表示所述中间层的中间层函数;
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间不存在激活层和中间层,则M(A(x))=A(x)=x。
如图11所示,是本发明根据一示例性实施例示出的一种模型优化装置的框图,所述装置包括:
临界点确定模块1120,用于在确定深度学习量化模型的目标网络层存在溢出风险时,确定所述目标网络层中卷积核的系数矩阵的分组临界点,所述卷积核包括C个系数矩阵;
模型优化模块1140,用于按照所述分组临界点对所述目标网络层进行处理,得到处理后的所述目标网络层;处理后的所述目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出所述寄存器允许存储的范围。
作为一种示例,所述临界点确定模块1120,用于:
在按预设累加顺序利用卷积核的系数矩阵执行卷积运算获得中间结果的极端值的过程中,针对任一系数矩阵,若由该系数矩阵执行当前卷积运算产生的中间结果的极端值不在寄存器允许存储的数值范围内,则依据当前卷积运算所使用的系数矩阵确定所述卷积核的分组临界点;
所述预设累加顺序为卷积核中各系数矩阵进行卷积运算后运算结果的累加顺序。
作为一种示例,所述目标网络层包括至少两个卷积核,临界点确定模块1120用于:
在按预设累加顺序利用卷积核的系数矩阵执行卷积运算获得中间结果的过程中,针对任一卷积核的任一系数矩阵,若由该卷积核的系数矩阵执行当前卷积运算产生的中间结果不在寄存器允许存储的数值范围内,则依据当前卷积运算所使用的系数矩阵确定所述卷积核的初始分组临界点;
在获得所述至少两个卷积核的初始分组临界点后,依据所述至少两个卷积核的第i个初始分组临界点中的最小初始分组临界点,确定每个卷积核的第i个分组临界点,以使不同卷积核具有相同分组临界点;
所述预设累加顺序为卷积核中各系数矩阵进行卷积运算后运算结果的累加顺序。
作为一种示例,所述分组临界点用于将所述目标网络层的卷积核中的C个系数矩阵进行分组,所述模型优化模块1140,用于:
根据所述分组临界点,将所述目标网络层的卷积核中的C个系数矩阵进行分组,按照分组情况将所述目标网络层拆分成多个子网络层,使得所述目标网络层的卷积核中的C个系数矩阵以分组方式分布在所述多个子网络层中;其中,按照分组情况将所述目标网络层拆分成多个子网络层,包括:
为所述目标网络层配置数据拆分层和数据合并层;
其中,所述数据拆分层用于按所述分组情况将所述目标网络层拆分成多个子网络层;所述数据合并层用于将所述多个子网络层的输出结果进行合并。
作为一种示例,所述分组临界点用于将卷积核的系数矩阵执行卷积运算的中间结果进行分组存储,所述模型优化模块1140用于:
在所述目标网络层的卷积核中为每个分组临界点配置预设的数据转移参数,以生成具有预设的数据转移参数的目标网络层;
其中,所述寄存器包括第一寄存器器和第二寄存器,所述第二寄存器的位宽大于所述第一寄存器的位宽;所述预设的数据转移参数用于在执行具有预设的数据转移参数的目标网络层的卷积运算过程中,执行到利用预设的数据转移参数表示的分组临界点时,将第一寄存器当前缓存的运算结果累加到第二寄存器中,并将所述第一寄存器清零,清零后的所述第一寄存器用于存储下一组系数矩阵卷积运算过程产生的中间结果。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如上所述任一种溢出风险检测/模型优化方法。
本发明中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
相应的,本发明实施例还提供一种计算机存储介质,所述存储介质中存储有程序指令,所述程序指令包括如上所述任一种溢出风险检测/模型优化方法。
本发明实施例可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可用存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本领域技术人员在考虑发明及实践这里申请的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (15)
1.一种模型优化方法,其特征在于,所述方法包括:
在确定深度学习量化模型的目标网络层存在溢出风险时,确定所述目标网络层中卷积核的系数矩阵的分组临界点,所述卷积核包括C个系数矩阵;
按照所述分组临界点对所述目标网络层进行处理,得到处理后的所述目标网络层;其中,处理后的所述目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出所述寄存器允许存储的范围。
2.根据权利要求1所述的方法,其特征在于,所述分组临界点的确定过程包括:
在按预设累加顺序利用卷积核的系数矩阵执行卷积运算获得中间结果的极端值的过程中,针对任一系数矩阵,若由该系数矩阵执行当前卷积运算产生的中间结果的极端值不在寄存器允许存储的数值范围内,则依据当前卷积运算所使用的系数矩阵确定所述卷积核的分组临界点;
所述预设累加顺序为卷积核中各系数矩阵进行卷积运算后运算结果的累加顺序。
3.根据权利要求1所述的方法,其特征在于,所述目标网络层包括至少两个卷积核,所述分组临界点的确定过程包括:
在按预设累加顺序利用卷积核的系数矩阵执行卷积运算获得中间结果的过程中,针对任一卷积核的任一系数矩阵,若由该卷积核的系数矩阵执行当前卷积运算产生的中间结果不在寄存器允许存储的数值范围内,则依据当前卷积运算所使用的系数矩阵确定所述卷积核的初始分组临界点;
在获得所述至少两个卷积核的初始分组临界点后,依据所述至少两个卷积核的第i个初始分组临界点中的最小初始分组临界点,确定每个卷积核的第i个分组临界点,以使不同卷积核具有相同分组临界点;
所述预设累加顺序为卷积核中各系数矩阵进行卷积运算后运算结果的累加顺序。
4.根据权利要求1所述的方法,其特征在于,所述分组临界点用于将所述目标网络层的卷积核中的C个系数矩阵进行分组,所述按照所述分组临界点对所述目标网络层进行处理,包括:
根据所述分组临界点,将所述目标网络层的卷积核中的C个系数矩阵进行分组,按照分组情况将所述目标网络层拆分成多个子网络层,使得所述目标网络层的卷积核中的C个系数矩阵以分组方式分布在所述多个子网络层中;其中,按照分组情况将所述目标网络层拆分成多个子网络层,包括:
为所述目标网络层配置数据拆分层和数据合并层;
其中,所述数据拆分层用于按所述分组情况将所述目标网络层拆分成多个子网络层;所述数据合并层用于将所述多个子网络层的输出结果进行合并。
5.根据权利要求1所述的方法,其特征在于,所述分组临界点用于将卷积核的系数矩阵执行卷积运算的中间结果进行分组存储,所述按照所述分组临界点对所述目标网络层进行处理,包括:
在所述目标网络层的卷积核中为每个分组临界点配置预设的数据转移参数,以生成具有预设的数据转移参数的目标网络层;
其中,所述寄存器包括第一寄存器器和第二寄存器,所述第二寄存器的位宽大于所述第一寄存器的位宽;所述预设的数据转移参数用于在执行具有预设的数据转移参数的目标网络层的卷积运算过程中,执行到利用预设的数据转移参数表示的分组临界点时,将第一寄存器当前缓存的运算结果累加到第二寄存器中,并将所述第一寄存器清零,清零后的所述第一寄存器用于存储下一组系数矩阵卷积运算过程产生的中间结果。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述确定深度学习量化模型的目标网络层存在溢出风险,包括:
从所述深度学习量化模型的待检测网络层中获得卷积核;
确定中间结果的极端值,所述中间结果的极端值是在利用所述待检测网络层输入数据的极端值与所述卷积核进行卷积运算过程中产生的中间结果的极端值,极端值包括最大值和最小值,中间结果存储到寄存器;
在中间结果的极端值超出寄存器允许存储的数值范围的情况下,判定所述待检测网络层为存在溢出风险的所述目标网络层。
7.根据权利要求6所述的方法,其特征在于,
所述中间结果的极端值的确定过程包括:
获取所述待检测网络层与所述深度学习量化模型包括的位于所述待检测网络层上层的网络层之间的连接关系;
根据所述连接关系确定待检测网络层的输入数据中的最大输入数据和最小输入数据;
将所述最大输入数据和最小输入数据分别与卷积核内所有系数矩阵的正数累计值和负数累计值进行指定乘累加运算,获得中间结果的极端值。
8.根据权利要求6所述的方法,其特征在于,中间结果的极端值的确定过程包括:
获取所述待检测网络层与所述深度学习量化模型包括的位于所述待检测网络层上层的网络层之间的连接关系;
根据所述连接关系确定待检测网络层的输入数据中的最大输入数据和最小输入数据;
沿着预设累加顺序,依次将当前通道的系数矩阵的正数累计值和负数累计值分别与所述最大输入数据和最小输入数据进行指定乘累加运算,并将获得的运算结果的最大值和最小值分别累加到已有的最大值累加结果和已有的最小值累加结果,每次累加获得的最大值累加结果和最小值累加结果作为中间结果的极端值。
9.根据权利要求7或8所述的方法,其特征在于,
所述最大输入数据和最小输入数据为函数M(A(x))的函数值取值范围中的最大值和最小值,x∈[(-2bw-1),(2bw-1-1)],bw表示所述深度学习量化模型的量化位宽;
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间存在激活层、且激活层与所述待检测网络层间存在中间层,则A(x)表示所述激活层的激活函数,M(A(x))表示所述中间层的中间层函数;
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间存在激活层、且激活层与所述待检测网络层间不存在中间层,则A(x)表示所述激活层的激活函数,M(A(x))=A(x);
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间不存在激活层、但存在中间层,则A(x)=x,M(A(x))表示所述中间层的中间层函数;
若待检测网络层与位于所述待检测网络层上层的卷积层或全连接层之间不存在激活层和中间层,则M(A(x))=A(x)=x。
10.一种模型优化装置,其特征在于,所述装置包括:
临界点确定模块,用于在确定深度学习量化模型的目标网络层存在溢出风险时,确定所述目标网络层中卷积核的系数矩阵的分组临界点,所述卷积核包括C个系数矩阵;
模型优化模块,用于按照所述分组临界点对所述目标网络层进行处理,得到处理后的所述目标网络层;其中,处理后的所述目标网络层的每一卷积核的系数矩阵执行卷积运算过程中产生的中间结果在寄存器中存储时不超出所述寄存器允许存储的范围。
11.根据权利要求10所述的装置,其特征在于,所述临界点确定模块,用于:
在按预设累加顺序利用卷积核的系数矩阵执行卷积运算获得中间结果的极端值的过程中,针对任一系数矩阵,若由该系数矩阵执行当前卷积运算产生的中间结果的极端值不在寄存器允许存储的数值范围内,则依据当前卷积运算所使用的系数矩阵确定所述卷积核的分组临界点;
所述预设累加顺序为卷积核中各系数矩阵进行卷积运算后运算结果的累加顺序。
12.根据权利要求10所述的方法,其特征在于,所述目标网络层包括至少两个卷积核,临界点确定模块,用于:
在按预设累加顺序利用卷积核的系数矩阵执行卷积运算获得中间结果的过程中,针对任一卷积核的任一系数矩阵,若由该卷积核的系数矩阵执行当前卷积运算产生的中间结果不在寄存器允许存储的数值范围内,则依据当前卷积运算所使用的系数矩阵确定所述卷积核的初始分组临界点;
在获得所述至少两个卷积核的初始分组临界点后,依据所述至少两个卷积核的第i个初始分组临界点中的最小初始分组临界点,确定每个卷积核的第i个分组临界点,以使不同卷积核具有相同分组临界点;
所述预设累加顺序为卷积核中各系数矩阵进行卷积运算后运算结果的累加顺序。
13.根据权利要求10至12任一项所述的方法,其特征在于,所述分组临界点用于将所述目标网络层的卷积核中的C个系数矩阵进行分组,所述模型优化模块,用于:
根据所述分组临界点,将所述目标网络层的卷积核中的C个系数矩阵进行分组,按照分组情况将所述目标网络层拆分成多个子网络层,使得所述目标网络层的卷积核中的C个系数矩阵以分组方式分布在所述多个子网络层中;其中,按照分组情况将所述目标网络层拆分成多个子网络层,包括:
为所述目标网络层配置数据拆分层和数据合并层;
其中,所述数据拆分层用于按所述分组情况将所述目标网络层拆分成多个子网络层;所述数据合并层用于将所述多个子网络层的输出结果进行合并。
14.根据权利要求10至12任一项所述的方法,其特征在于,所述分组临界点用于将卷积核的系数矩阵执行卷积运算的中间结果进行分组存储,所述模型优化模块,用于:
在所述目标网络层的卷积核中为每个分组临界点配置预设的数据转移参数,以生成具有预设的数据转移参数的目标网络层;
其中,所述寄存器包括第一寄存器器和第二寄存器,所述第二寄存器的位宽大于所述第一寄存器的位宽;所述预设的数据转移参数用于在执行具有预设的数据转移参数的目标网络层的卷积运算过程中,执行到利用预设的数据转移参数表示的分组临界点时,将第一寄存器当前缓存的运算结果累加到第二寄存器中,并将所述第一寄存器清零,清零后的所述第一寄存器用于存储下一组系数矩阵卷积运算过程产生的中间结果。
15.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至9任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910262674.1A CN111767980B (zh) | 2019-04-02 | 2019-04-02 | 模型优化方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910262674.1A CN111767980B (zh) | 2019-04-02 | 2019-04-02 | 模型优化方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111767980A true CN111767980A (zh) | 2020-10-13 |
CN111767980B CN111767980B (zh) | 2024-03-05 |
Family
ID=72718506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910262674.1A Active CN111767980B (zh) | 2019-04-02 | 2019-04-02 | 模型优化方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767980B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925644A (zh) * | 2021-02-26 | 2021-06-08 | 北京小米松果电子有限公司 | 深度学习算子优化方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150296193A1 (en) * | 2012-05-31 | 2015-10-15 | Apple Inc. | Systems and methods for rgb image processing |
CN107688849A (zh) * | 2017-07-28 | 2018-02-13 | 北京深鉴科技有限公司 | 一种动态策略定点化训练方法及装置 |
CN108009600A (zh) * | 2017-11-30 | 2018-05-08 | 北京小米移动软件有限公司 | 模型优化、质量检测方法、装置、设备及存储介质 |
CN108647779A (zh) * | 2018-04-11 | 2018-10-12 | 复旦大学 | 一种低位宽卷积神经网络可重构计算单元 |
US20180315399A1 (en) * | 2017-04-28 | 2018-11-01 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
CN109409514A (zh) * | 2018-11-02 | 2019-03-01 | 广州市百果园信息技术有限公司 | 卷积神经网络的定点运算方法、装置、设备和存储介质 |
CN109542512A (zh) * | 2018-11-06 | 2019-03-29 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置和存储介质 |
CN110826685A (zh) * | 2018-08-08 | 2020-02-21 | 华为技术有限公司 | 神经网络卷积计算的方法和装置 |
-
2019
- 2019-04-02 CN CN201910262674.1A patent/CN111767980B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150296193A1 (en) * | 2012-05-31 | 2015-10-15 | Apple Inc. | Systems and methods for rgb image processing |
US20180315399A1 (en) * | 2017-04-28 | 2018-11-01 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
CN107688849A (zh) * | 2017-07-28 | 2018-02-13 | 北京深鉴科技有限公司 | 一种动态策略定点化训练方法及装置 |
CN108009600A (zh) * | 2017-11-30 | 2018-05-08 | 北京小米移动软件有限公司 | 模型优化、质量检测方法、装置、设备及存储介质 |
CN108647779A (zh) * | 2018-04-11 | 2018-10-12 | 复旦大学 | 一种低位宽卷积神经网络可重构计算单元 |
CN110826685A (zh) * | 2018-08-08 | 2020-02-21 | 华为技术有限公司 | 神经网络卷积计算的方法和装置 |
CN109409514A (zh) * | 2018-11-02 | 2019-03-01 | 广州市百果园信息技术有限公司 | 卷积神经网络的定点运算方法、装置、设备和存储介质 |
CN109542512A (zh) * | 2018-11-06 | 2019-03-29 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置和存储介质 |
Non-Patent Citations (2)
Title |
---|
"《Ternary Neural Networks with Fine-Grained Quantization》", 《ARXIV》 * |
夏珺 等: "《基于FPGA的HEVC后处理CNN硬件加速器研究》", 《计算机工程与科学》, vol. 40, no. 12 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925644A (zh) * | 2021-02-26 | 2021-06-08 | 北京小米松果电子有限公司 | 深度学习算子优化方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111767980B (zh) | 2024-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3340129B1 (en) | Artificial neural network class-based pruning | |
US11704570B2 (en) | Learning device, learning system, and learning method | |
US20230196202A1 (en) | System and method for automatic building of learning machines using learning machines | |
CN111639230B (zh) | 一种相似视频的筛选方法、装置、设备和存储介质 | |
CN114049530A (zh) | 混合精度神经网络量化方法、装置及设备 | |
CN111709415B (zh) | 目标检测方法、装置、计算机设备和存储介质 | |
CN115392441A (zh) | 量化神经网络模型的片内适配方法、装置、设备及介质 | |
CN113934851A (zh) | 用于文本分类的数据增强方法、装置及电子设备 | |
CN114492601A (zh) | 资源分类模型的训练方法、装置、电子设备及存储介质 | |
CN114756680A (zh) | 一种文本分类方法、系统、电子设备及存储介质 | |
CN111767980B (zh) | 模型优化方法、装置及设备 | |
CN111767204A (zh) | 溢出风险检测方法、装置及设备 | |
CN117634586A (zh) | 扩散模型的轻量化方法、装置、电子设备和存储介质 | |
US11036980B2 (en) | Information processing method and information processing system | |
CN114529108B (zh) | 基于树模型的预测方法、装置、设备、介质及程序产品 | |
CN112418388A (zh) | 一种实现深度卷积神经网络处理的方法及装置 | |
CN113361621B (zh) | 用于训练模型的方法和装置 | |
CN117521737B (zh) | 网络模型的转换方法、装置、终端及计算机可读存储介质 | |
CN115827876B (zh) | 未标注文本的确定方法、装置和电子设备 | |
US20240095493A1 (en) | Desparsified convolution for sparse tensors | |
CN118378074B (zh) | 一种稀疏矩阵求解过程中进行排序算法调度的方法及系统 | |
US20240020517A1 (en) | Real-time inference of temporal down-sampling convolutional networks | |
CN115841136A (zh) | 神经网络的量化方法、装置、芯片、板卡及设备 | |
CN116881122A (zh) | 测试案例生成方法、装置、设备、存储介质和程序产品 | |
CN118550813A (zh) | 隐私计算算法的运行评估方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |