CN108628807B - 浮点数矩阵的处理方法、装置、设备及计算机可读存储介质 - Google Patents
浮点数矩阵的处理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN108628807B CN108628807B CN201710165155.4A CN201710165155A CN108628807B CN 108628807 B CN108628807 B CN 108628807B CN 201710165155 A CN201710165155 A CN 201710165155A CN 108628807 B CN108628807 B CN 108628807B
- Authority
- CN
- China
- Prior art keywords
- point number
- floating
- matrix
- model matrix
- fixed
- 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.)
- Active
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 521
- 238000003672 processing method Methods 0.000 title abstract description 8
- 238000007667 floating Methods 0.000 claims abstract description 108
- 238000012545 processing Methods 0.000 claims abstract description 50
- 238000000034 method Methods 0.000 claims abstract description 47
- 238000013135 deep learning Methods 0.000 claims abstract description 26
- 239000013598 vector Substances 0.000 claims description 72
- 230000006835 compression Effects 0.000 claims description 29
- 238000007906 compression Methods 0.000 claims description 29
- 230000015654 memory Effects 0.000 claims description 20
- 239000000126 substance Substances 0.000 claims description 11
- 230000006837 decompression Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 230000003068 static effect Effects 0.000 claims description 5
- 238000013136 deep learning model Methods 0.000 abstract description 20
- 230000006870 function Effects 0.000 abstract description 5
- 230000004913 activation Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 17
- 238000004364 calculation method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 239000002699 waste material Substances 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000010129 solution processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/044—Recurrent networks, e.g. Hopfield networks
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Abstract
本发明提供一种浮点数矩阵的处理方法、装置、设备及计算机可读存储介质。本发明实施例通过根据待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,进而根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵,通过采用定点化方法,对深度学习模型的浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵,从而降低了深度学习模型的存储空间和运算量,同时提出该装置在深度学习网络中的实现框架以最大化深度学习网络精度,即矩阵乘法部分用该装置,其它部分例如激活函数等操作保留浮点操作。
Description
【技术领域】
本发明涉及模型压缩技术,尤其涉及一种浮点数矩阵的处理方法、装置、设备及计算机可读存储介质。
【背景技术】
深度学习模型被越来越广泛地应用于众多应用中,例如语音识别、图像识别、语义分析、自动驾驶等,其通过对不同层的节点之间的线性层和非线性层,对数据进行映射、运算等处理,并在处理中对模型进行训练、修正、更新,从而最终提升分类或预测的准确性。在实际处理过程中,深度学习模型会占用较大的存储空间,且运算量较大。
深度学习模型中有两类运算,一个是矩阵乘法,一个是激活函数等element-wise的操作,两类操作组合构成深度学习的基本单元;其中矩阵乘法部分是存储和运算的关键模块,为了降低深度学习模型的存储空间和运算量,亟需提供一种适用于深度学习模型的矩阵压缩方法,同时为了保证深度学习模型的精度,除矩阵乘法外的element-wise类操作保留浮点处理方式。
【发明内容】
本发明的多个方面提供一种浮点数矩阵的处理方法、装置、设备及计算机可读存储介质,用以降低深度学习模型的存储空间和运算量。
本发明的一方面,提供一种浮点数矩阵的处理方法,包括:
根据待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值;
根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,包括:
对所述浮点数模型矩阵的全部元素进行极值求解处理,以获得所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值;或者
对所述浮点数模型矩阵的每列元素进行极值求解处理,以获得该列元素的最小值和该列元素的最大值;将所述浮点数模型矩阵的每列元素的最小值组成最小值向量,以作为所述浮点数模型矩阵的最小值,将所述浮点数模型矩阵的每列元素的最大值组成最大值向量,以作为所述浮点数模型矩阵的最大值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵,包括:
根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,利用公式Xint=2K*(X-XMin)/(XMax-XMin),对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵;其中,
Xint为所述定点数模型矩阵中的元素;
X为所述浮点数模型矩阵中的元素;
K为所述数位宽度;
XMin为所述浮点数模型矩阵的最小值;以及
XMax为所述浮点数模型矩阵的最大值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述方法还包括:
根据待压缩的浮点数输入矩阵,获取所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值;
根据所述数位宽度、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,对所述浮点数输入矩阵进行压缩处理,以获得定点数输入矩阵。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述方法还包括:
根据所述定点数输入矩阵和所述定点数模型矩阵,获得所述浮点数输入矩阵与所述浮点数模型矩阵相乘的定点数输出矩阵;
根据所述定点数输入矩阵、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,以及所述定点数模型矩阵、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述定点数输出矩阵进行解压缩处理,以获得浮点数输出矩阵。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据所述定点数输入矩阵、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,以及所述定点数模型矩阵、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述定点数输出矩阵进行解压缩处理,以获得浮点数输出矩阵,包括:
根据所述定点数输入矩阵、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,以及所述定点数模型矩阵、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,利用公式Xvec*Yvec=α*β*Xvecint*Yvecint+Ymin*ΣXint+Xmin*ΣYint+N*XMin*YMin,对所述定点数输出矩阵进行解压缩处理,以获得所述浮点数输出矩阵;其中,
Xvec为所述浮点数模型矩阵的列向量;
Yvec为所述浮点数输入矩阵的行向量;
Xvec*Yvec为所述浮点数输出矩阵;
N为所述浮点数模型矩阵的列向量中元素的个数,或者所述浮点数输入矩阵的行向量中元素的个数;
α=(XMax-XMin)/2k,K为所述数位宽度,XMin为所述浮点数模型矩阵的最小值,XMax为所述浮点数模型矩阵的最大值;
β=(YMax-YMin)/2k,YMin为所述浮点数输入矩阵的最小值,YMax为所述浮点数输入矩阵的最大值;
Xvecint为所述定点数模型矩阵的列向量;
Yvecint为所述定点数输入矩阵的行向量;
ΣXint为所述定点数模型矩阵的行向量中每个元素之和;以及
ΣYint为所述定点数输入矩阵的列向量中每个元素之和。
本发明的另一方面,提供一种浮点数矩阵的处理装置,包括:
极值单元,用于根据待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值;
压缩单元,用于根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述极值单元,具体用于
对所述浮点数模型矩阵的全部元素进行极值求解处理,以获得所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值;或者
对所述浮点数模型矩阵的每列元素进行极值求解处理,以获得该列元素的最小值和该列元素的最大值;将所述浮点数模型矩阵的每列元素的最小值组成最小值向量,以作为所述浮点数模型矩阵的最小值,将所述浮点数模型矩阵的每列元素的最大值组成最大值向量,以作为所述浮点数模型矩阵的最大值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述压缩单元,具体用于
根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,利用公式Xint=2K*(X-XMin)/(XMax-XMin),对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵;其中,
Xint为所述定点数模型矩阵中的元素;
X为所述浮点数模型矩阵中的元素;
K为所述数位宽度;
XMin为所述浮点数模型矩阵的最小值;以及
XMax为所述浮点数模型矩阵的最大值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,
极值单元,用于根据待压缩的浮点数输入矩阵,获取所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值;
压缩单元,用于根据所述数位宽度、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,对所述浮点数输入矩阵进行压缩处理,以获得定点数输入矩阵。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述装置还包括:
运算单元,用于根据所述定点数输入矩阵和所述定点数模型矩阵,获得所述浮点数输入矩阵与所述浮点数模型矩阵相乘的定点数输出矩阵;
解压缩单元,用于根据所述定点数输入矩阵、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,以及所述定点数模型矩阵、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述定点数输出矩阵进行解压缩处理,以获得浮点数输出矩阵。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述运算单元,具体用于
根据所述定点数输入矩阵、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,以及所述定点数模型矩阵、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,利用公式Xvec*Yvec=α*β*Xvecint*Yvecint+Ymin*ΣXint+Xmin*ΣYint+N*XMin*YMin,对所述定点数输出矩阵进行解压缩处理,以获得所述浮点数输出矩阵;其中,
Xvec为所述浮点数模型矩阵的列向量;
Yvec为所述浮点数输入矩阵的行向量;
Xvec*Yvec为所述浮点数输出矩阵;
N为所述浮点数模型矩阵的列向量中元素的个数,或者所述浮点数输入矩阵的行向量中元素的个数;
α=(XMax-XMin)/2k,K为所述数位宽度,XMin为所述浮点数模型矩阵的最小值,XMax为所述浮点数模型矩阵的最大值;
β=(YMax-YMin)/2k,YMin为所述浮点数输入矩阵的最小值,YMax为所述浮点数输入矩阵的最大值;
Xvecint为所述定点数模型矩阵的列向量;
Yvecint为所述定点数输入矩阵的行向量;
ΣXint为所述定点数模型矩阵的行向量中每个元素之和;以及
ΣYint为所述定点数输入矩阵的列向量中每个元素之和。
本发明的另一方面,提供一种设备,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述一方面所提供的浮点数矩阵的处理方法。
本发明的另一方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述一方面所提供的浮点数矩阵的处理方法。
由上述技术方案可知,本发明实施例通过根据待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,进而根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵,通过采用定点化方法,对深度学习模型的浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵,从而降低了深度学习模型的存储空间和运算量。
另外,采用本发明所提供的技术方案,通过对深度学习模型相关的每个浮点数矩阵即浮点数模型矩阵和浮点数输入矩阵,进行独立的动态定点化,这样,能够获得更高的压缩精度。
另外,采用本发明所提供的技术方案,由于浮点数矩阵即浮点数模型矩阵和浮点数输入矩阵的最大值和最小值都是随着数据更新动态更新的,因此,能够充分利用位宽,既不会出现数位溢出,又不会出现位宽浪费。
另外,采用本发明所提供的技术方案,无需区分小数位与整数位,因此,能够消除小数点定标过程中所引入的误差,能够进一步提高压缩精度。
【附图说明】
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的浮点数矩阵的处理方法的流程示意图;
图2为本发明另一实施例提供的浮点数矩阵的处理装置的结构示意图;
图3为本发明另一实施例提供的浮点数矩阵的处理装置的结构示意图;
图4为适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图;
图5为基于本发明提出的装置所提出的深度学习模型压缩框架的结构示意图。
【具体实施方式】
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本发明保护的范围。
需要说明的是,本发明实施例中所涉及的终端可以包括但不限于手机、个人数字助理(Personal Digital Assistant,PDA)、无线手持设备、平板电脑(Tablet Computer)、个人电脑(Personal Computer,PC)、MP3播放器、MP4播放器、可穿戴设备(例如,智能眼镜、智能手表、智能手环等)等。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1为本发明一实施例提供的浮点数矩阵的处理方法的流程示意图,如图1所示。
101、根据待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值。
102、根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵。
需要说明的是,101~102的执行主体的部分或全部可以为位于本地终端的应用,或者还可以为设置在位于本地终端的应用中的插件或软件开发工具包(SoftwareDevelopment Kit,SDK)等功能单元,或者还可以为位于网络侧服务器中的处理引擎,或者还可以为位于网络侧的分布式系统,本实施例对此不进行特别限定。
可以理解的是,所述应用可以是安装在终端上的本地程序(nativeApp),或者还可以是终端上的浏览器的一个网页程序(webApp),本实施例对此不进行特别限定。
这样,通过根据待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,进而根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵,通过采用定点化方法,对深度学习模型的浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵,从而降低了深度学习模型的存储空间和运算量。
可选地,在本实施例的一个可能的实现方式中,在101中,可以采用多种方法,获得浮点数模型矩阵的极值。
在一个具体的实现过程中,可以对浮点数模型矩阵,求一个最小值和一个最大值。具体来说,具体可以对所述浮点数模型矩阵的全部元素进行极值求解处理,以获得所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值。
在另一个具体的实现过程中,因为矩阵乘法的基本计算单元是向量点乘,所以可以对浮点数输入矩阵的每一行分别求一对极值(最大值,最小值),然后对浮点数模型矩阵的每一列求一对极值(最大值,最小值),也就是说对每一个向量进行动态的定点化,这样,定点数描述的值域范围更小,精度会更高。具体来说,具体可以对所述浮点数模型矩阵的每列元素进行极值求解处理,以获得该列元素的最小值和该列元素的最大值;将所述浮点数模型矩阵的每列元素的最小值组成最小值向量,以作为所述浮点数模型矩阵的最小值,将所述浮点数模型矩阵的每列元素的最大值组成最大值向量,以作为所述浮点数模型矩阵的最大值。
通常,深度学习的参数大部分分部在0附近,因此,在该实现方式中,对于深度学习这一类的应用,也可以把浮点数模型矩阵的最小值默认为0,这样,整个计算会简化很多,而且对最终的精度也不会有太多损失。
可选地,在本实施例的一个可能的实现方式中,在102中,具体可以根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,利用公式Xint=2K*(X-XMin)/(XMax-XMin),对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵;其中,
Xint为所述定点数模型矩阵中的元素;
X为所述浮点数模型矩阵中的元素;
K为所述数位宽度,例如,假设要进行16比特(bit)的定点化,K是16;
XMin为所述浮点数模型矩阵的最小值;以及
XMax为所述浮点数模型矩阵的最大值。
可以看出,定点数描述的相对值,而不是静态定点化得到的绝对值,需要*(XMax-XMin)/2k+XMin才能得到原来的值。通过对浮点数模型矩阵(XMax-XMin)的值域范围进行划分成2k份,如果X大小落在第j分,则Xint=j,0≤j<≤2k。这种方法能最有效的利用位宽,因此,能够充分利用位宽,既不会出现数位溢出,又不会出现位宽浪费。
对于浮点数输入矩阵,也可以用同样的方法进行定点化处理,来实现压缩目的。具体来说,具体可以根据待压缩的浮点数输入矩阵,获取所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,进而,则可以根据所述数位宽度、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,对所述浮点数输入矩阵进行压缩处理,以获得定点数输入矩阵。
类似地,具体可以根据所述数位宽度、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,利用公式Yint=2K*(Y-YMin)/(YMax-YMin),对所述浮点数输入矩阵进行压缩处理,以获得定点数输入矩阵;其中,
Yint为所述定点数输入矩阵中的元素;
Y为所述浮点数输入矩阵中的元素;
K为所述数位宽度,例如,假设要进行16比特(bit)的定点化,K是16;
YMin为所述浮点数输入矩阵的最小值;以及
YMax为所述浮点数输入矩阵的最大值。
同样可以看出,定点数描述的相对值,而不是静态定点化得到的绝对值,需要*(YMax-YMin)/2k+YMin才能得到原来的值。通过对浮点数输入矩阵(YMax-YMin)的值域范围进行划分成2k份,如果Y大小落在第j分,则Yint=j,0≤j<≤2k。这种方法能最有效的利用位宽,因此,能够充分利用位宽,既不会出现数位溢出,又不会出现位宽浪费。
可选地,在本实施例的一个可能的实现方式中,在102之后,还可以进一步包括定点数输入矩阵与定点数模型矩阵相乘的步骤。具体来说,具体可以根据所述定点数输入矩阵和所述定点数模型矩阵,获得所述浮点数输入矩阵与所述浮点数模型矩阵相乘的定点数输出矩阵,进而,则可以根据所述定点数输入矩阵、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,以及所述定点数模型矩阵、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述定点数输出矩阵进行解压缩处理,以获得浮点数输出矩阵。
在一个具体的实现过程中,具体可以根据所述定点数输入矩阵、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,以及所述定点数模型矩阵、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,利用公式Xvec*Yvec=α*β*Xvecint*Yvecint+Ymin*ΣXint+Xmin*ΣYint+N*XMin*YMin,对所述定点数输出矩阵进行解压缩处理,以获得所述浮点数输出矩阵;其中,
Xvec为所述浮点数模型矩阵的列向量;
Yvec为所述浮点数输入矩阵的行向量;
Xvec*Yvec为所述浮点数输出矩阵;
N为所述浮点数模型矩阵的列向量中元素的个数,或者所述浮点数输入矩阵的行向量中元素的个数;
α=(XMax-XMin)/2k,K为所述数位宽度,XMin为所述浮点数模型矩阵的最小值,XMax为所述浮点数模型矩阵的最大值;
β=(YMax-YMin)/2k,YMin为所述浮点数输入矩阵的最小值,YMax为所述浮点数输入矩阵的最大值;
Xvecint为所述定点数模型矩阵的列向量;
Yvecint为所述定点数输入矩阵的行向量;
ΣXint为所述定点数模型矩阵的行向量中每个元素之和;以及
ΣYint为所述定点数输入矩阵的列向量中每个元素之和。
可以看到,经过动态的压缩处理即定点化之后,原来浮点数的两个向量的点乘,可以转化成定点数的向量点乘,再加上其他的一些计算。其中,α和β都是常数,预先可以计算好,ΣXint和ΣYint及N*XMin*YMin也可以预先计算好,在浮点数输入矩阵和浮点数模型矩阵计算的时候,这些预先计算好的参数可以复用,因此不会增加太多额外的计算量。
进一步地,本发明中,深度学习的输入矩阵元素和模型矩阵元素分布范围是对称的,因此,可以基于元素数据的绝对值的Min和Max进行定点化,则相应的Min为0,Max为元素数据的绝对值的Max。由于采用绝对值的方法,需要单独1bit来表示符号位,因此,(K-1)bit表示元素数据的绝对值的范围,那么,
在定点化处理的过程中,定点数模型矩阵中的元素可以简化为Xint=2K-1*X/XMax;
在定点化处理的过程中,定点数输入矩阵中的元素可以简化为Yint=2K-1*Y/YMax;
在逆定点化处理的过程中,浮点数输出矩阵中的元素可以简化为Xvec*Yvec=XMax/2k-1*YMax/2k-1*Xvecint*Yvecint。
这样,可以简化定点化处理的过程,以及定点化处理之后的矩阵乘法计算,而且,对最终的精度也不会有太多损失。
本实施例中,通过根据待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,进而根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵,通过采用定点化方法,对深度学习模型的浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵,从而降低了深度学习模型的存储空间和运算量。
另外,采用本发明所提供的技术方案,通过对深度学习模型相关的每个浮点数矩阵即浮点数模型矩阵和浮点数输入矩阵,进行独立的动态定点化,这样,能够获得更高的压缩精度。
另外,采用本发明所提供的技术方案,由于浮点数矩阵即浮点数模型矩阵和浮点数输入矩阵的最大值和最小值都是随着数据更新动态更新的,因此,能够充分利用位宽,既不会出现数位溢出,又不会出现位宽浪费。
另外,采用本发明所提供的技术方案,无需区分小数位与整数位,因此,能够消除小数点定标过程中所引入的误差,能够进一步提高压缩精度。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图2为本发明另一实施例提供的浮点数矩阵的处理装置的结构示意图,如图2所示。本实施例的浮点数矩阵的处理装置可以包括极值单元21和压缩单元22。其中,极值单元21,用于根据待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值;压缩单元22,用于根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵。
需要说明的是,本实施例所提供的浮点数矩阵的处理装置的部分或全部可以为位于本地终端即指定交通工具上的终端设备的应用,或者还可以为设置在位于本地终端的应用中的插件或软件开发工具包(Software Development Kit,SDK)等功能单元,或者还可以为位于网络侧服务器中的处理引擎,或者还可以为位于网络侧的分布式系统,本实施例对此不进行特别限定。
可以理解的是,所述应用可以是安装在终端上的本地程序(nativeApp),或者还可以是终端上的浏览器的一个网页程序(webApp),本实施例对此不进行特别限定。
可选地,在本实施例的一个可能的实现方式中,在硬件实现方面,极值单元21,可以采用比较器实现,比较器消耗资源较少,实现简单。进一步地,还可以进一步采用二分多级流水的结构,针对多个数据并行输入,能够满足数据吞吐率要求。
可选地,在本实施例的一个可能的实现方式中,所述极值单元21,具体可以用于对所述浮点数模型矩阵的全部元素进行极值求解处理,以获得所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值;或者对所述浮点数模型矩阵的每列元素进行极值求解处理,以获得该列元素的最小值和该列元素的最大值;将所述浮点数模型矩阵的每列元素的最小值组成最小值向量,以作为所述浮点数模型矩阵的最小值,将所述浮点数模型矩阵的每列元素的最大值组成最大值向量,以作为所述浮点数模型矩阵的最大值。
可选地,在本实施例的一个可能的实现方式中,所述压缩单元22,具体可以用于根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,利用公式Xint=2K*(X-XMin)/(XMax-XMin),对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵;其中,
Xint为所述定点数模型矩阵中的元素;
X为所述浮点数模型矩阵中的元素;
K为所述数位宽度;
XMin为所述浮点数模型矩阵的最小值;以及
XMax为所述浮点数模型矩阵的最大值。
相应地,在硬件实现方面,为了简化硬件实现,可以采用预先计算好的2K/(XMax-XMin),目的是可以使耗资源的除法转换成乘法操作,在float维度进行运算后,再采用float2int单元进行定点化表示转换。在实际的硬件实现中,可能会存在多个数据并行的情况,具体可以根据并行数据数目,保证数据的吞吐率。
可选地,在本实施例的一个可能的实现方式中,
极值单元21,还可以进一步用于根据待压缩的浮点数输入矩阵,获取所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值;
压缩单元22,还可以进一步用于根据所述数位宽度、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,对所述浮点数输入矩阵进行压缩处理,以获得定点数输入矩阵。
相应地,在硬件实现方面,为了简化硬件实现,可以采用预先计算好的2K/(YMax-YMin),目的是可以使耗资源的除法转换成乘法操作,在float维度进行运算后,再采用float2int单元进行定点化表示转换。在实际的硬件实现中,可能会存在多个数据并行的情况,具体可以根据并行数据数目,保证数据的吞吐率。
可选地,在本实施例的一个可能的实现方式中,如图3所示,本实施例所提供的浮点数矩阵的处理装置还可以进一步包括:
运算单元31,用于根据所述定点数输入矩阵和所述定点数模型矩阵,获得所述浮点数输入矩阵与所述浮点数模型矩阵相乘的定点数输出矩阵;
解压缩单元32,用于根据所述定点数输入矩阵、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,以及所述定点数模型矩阵、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述定点数输出矩阵进行解压缩处理,以获得浮点数输出矩阵。
在一个具体的实现过程中,所述解压缩单元32,具体可以用于根据所述定点数输入矩阵、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,以及所述定点数模型矩阵、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,利用公式Xvec*Yvec=α*β*Xvecint*Yvecint+Ymin*ΣXint+Xmin*ΣYint+N*XMin*YMin,对所述定点数输出矩阵进行解压缩处理,以获得所述浮点数输出矩阵;其中,
Xvec为所述浮点数模型矩阵的列向量;
Yvec为所述浮点数输入矩阵的行向量;
Xvec*Yvec为所述浮点数输出矩阵;
N为所述浮点数模型矩阵的列向量中元素的个数,或者所述浮点数输入矩阵的行向量中元素的个数;
α=(XMax-XMin)/2k,K为所述数位宽度,XMin为所述浮点数模型矩阵的最小值,XMax为所述浮点数模型矩阵的最大值;
β=(YMax-YMin)/2k,YMin为所述浮点数输入矩阵的最小值,YMax为所述浮点数输入矩阵的最大值;
Xvecint为所述定点数模型矩阵的列向量;
Yvecint为所述定点数输入矩阵的行向量;
ΣXint为所述定点数模型矩阵的行向量中每个元素之和;以及
ΣYint为所述定点数输入矩阵的列向量中每个元素之和。
类似地,在硬件实现方面,同样为了简化硬件实现,可以采用预先计算好的(XMax-XMin)/2K、(YMax-YMin)/2k、ΣXint、ΣYint、以及N*XMin*YMin,在int维度进行运算后,再采用int2float单元进行逆定点化表示转换。
在深度学习的计算过程中,大部分采用加速器进行实现,则需要将模型矩阵和输入矩阵通过直接内存存取(Direct Memory Access,DMA)单元从主机(Host)端搬运到深度学习加速器端例如,图形处理器(Graphic Processing Unit,GPU)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者专用集成电路(ApplicationSpecificIntegrated Circuit,ASIC)等,在深度学习加速器内部完成深度学习核心的计算例如矩阵相乘及向量相乘等,也就是对应于,本发明实施例所提供的浮点数矩阵的处理装置。
基于本发明提出的装置,提出了相应的深度学习模型压缩框架,如图5所示。在Host端,向深度学习加速器端的DMA单元输入通路上增加对数据进行Min和Max求取的极值单元,这样,能够消除浮点数矩阵的压缩处理所需要的额外的数据访问代价。通过DMA单元的搬运,带有极值信息的模型和输入数据存储在加速器端的片外存储单元中。该结构是在直接内存存取(Direct Memory Access,DMA)单元的传输通路上增加极值单元21所采用的硬件电路,得到输入数据的Min和Max,而相应输入数据内容保持不变,该过程由深度学习加速器的芯片内部完成,对上层应用透明。
在完成数据从Host端到深度学习加速器的传输之后,从加速器端的片外存储单元获取相应的模型和输入数据,先根据之前获取的Min和Max,采用压缩单元22所采用的硬件电路,进行定点化操作。然后,根据定点数据的类型分别存储到相应的片上静态随机存取存储器(Static Random Access Memory,SRAM)存储中,主要是模型SRAM存储单元和输入SRAM存储单元。接着,采用运算单元31对定点化的模型矩阵和输入矩阵进行定点化运算,定点化运算过程需要考虑定点化方案对算法流程的修改,定点化计算完成之后,需要对输出结果数据采用解压缩单元32所采用的硬件电路,进行逆定点化操作,以获得浮点数结果。然后对浮点数结果进行相应的激活函数等操作,进而将操作之后的浮点数结果写入结果SRAM存储单元中。最后,还可以进一步对结果SRAM存储单元中的数据采用极值单元21进行求取Min和Max操作,由于在深度神经网络中,上一层模型的输出是下一层模型的输入,上一层模型的Min和Max,会作为下一层模型的输入定点化参数。在深度学习加速器中可以进行多层网络计算完成深度学习的计算,计算后结果存在深度学习加速器的片外存储单元,最后的结果从加速器的片外存储单元通过DMA模块传输到Host端。
这样,浮点数模型矩阵经过定点化后数据量大大降低,对于某些模型可以一直存放在片上SRAM存储中,这样能大大降低矩阵乘法过程中对片外存储的访问,尤其是对线上应用同时请求数量少的情况,以及长短时记忆(Long Short-Term Memory,LSTM)算法、递归神经网络(Recurrent Neural Network,RNN)算法等算法中向量乘矩阵的操作非常高效。
需要说明的是,图1对应的实施例中方法,可以由本实施例提供的浮点数矩阵的处理装置实现。详细描述可以参见图1对应的实施例中的相关内容,此处不再赘述。
本实施例中,通过极值单元根据待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,进而由压缩单元根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵,通过采用定点化方法,对深度学习模型的浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵,从而降低了深度学习模型的存储空间和运算量。
另外,采用本发明所提供的技术方案,通过对深度学习模型相关的每个浮点数矩阵即浮点数模型矩阵和浮点数输入矩阵,进行独立的动态定点化,这样,能够获得更高的压缩精度。
另外,采用本发明所提供的技术方案,由于浮点数矩阵即浮点数模型矩阵和浮点数输入矩阵的最大值和最小值都是随着数据更新动态更新的,因此,能够充分利用位宽,既不会出现数位溢出,又不会出现位宽浪费。
另外,采用本发明所提供的技术方案,无需区分小数位与整数位,因此,能够消除小数点定标过程中所引入的误差,能够进一步提高压缩精度。
图4示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图4显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,存储装置或者系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器46。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图3未显示,通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口44进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现图1所对应的实施例所提供的浮点数矩阵的处理方法。
本发明另一实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图1所对应的实施例所提供的浮点数矩阵的处理方法。
具体来说,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种浮点数矩阵的处理方法,其特征在于,包括:
采用深度学习加速器内的极值单元,根据所述深度学习加速器内的直接内存存取DMA单元输出的待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值;
采用所述深度学习加速器内的压缩单元,根据数位宽度、所述极值单元输出的所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵;
采用所述深度学习加速器内的静态随机存取存储器SRAM,存储所述压缩单元输出的所述定点数模型矩阵;
采用所述深度学习加速器内的运算单元,从所述SRAM中获取所述定点数模型矩阵,对所述定点数模型矩阵的列向量以及所述压缩单元输出的定点数输入矩阵的行向量进行点乘运算,以获得定点数输出矩阵,所述定点数输入矩阵基于浮点数输入矩阵获得;
采用所述深度学习加速器内的解压缩单元,根据预先计算的参数以及所述运算单元输出的所述定点数输出矩阵进行解压缩处理,以获得浮点数输出矩阵,其中,所述预先计算的参数是基于所述极值单元输出的所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,以及所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值确定的;
其中,所述根据预先计算的参数以及所述运算单元输出的所述定点数输出矩阵进行解压缩处理,以获得浮点数输出矩阵,包括:
利用公式Xvec*Yvec=α*β*Xvecint*Yvecint+Ymin*ΣXint+Xmin*ΣYint+N*XMin*YMin,对所述定点数输出矩阵进行解压缩处理,以获得所述浮点数输出矩阵;其中,
Xvec为所述浮点数模型矩阵的列向量;
Yvec为所述浮点数输入矩阵的行向量;
Xvec*Yvec为所述浮点数输出矩阵;
Xvecint*Yvecint为所述定点数输出矩阵;
所述预先计算的参数包括:α、β、ΣXint和ΣYint及N*XMin*YMin;
N为所述浮点数模型矩阵的列向量中元素的个数,或者所述浮点数输入矩阵的行向量中元素的个数;
α=(XMax-XMin)/2k,K为所述数位宽度,XMin为所述浮点数模型矩阵的最小值,XMax为所述浮点数模型矩阵的最大值;
β=(YMax-YMin)/2k,YMin为所述浮点数输入矩阵的最小值,YMax为所述浮点数输入矩阵的最大值;
Xvecint为所述定点数模型矩阵的列向量;
Yvecint为所述定点数输入矩阵的行向量;
ΣXint为所述定点数模型矩阵的行向量中每个元素之和;以及
ΣYint为所述定点数输入矩阵的列向量中每个元素之和。
2.根据权利要求1所述的方法,其特征在于,所述根据所述深度学习加速器内的直接内存存取DMA单元输出的待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,包括:
对所述浮点数模型矩阵的全部元素进行极值求解处理,以获得所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值;或者
对所述浮点数模型矩阵的每列元素进行极值求解处理,以获得该列元素的最小值和该列元素的最大值;将所述浮点数模型矩阵的每列元素的最小值组成最小值向量,以作为所述浮点数模型矩阵的最小值,将所述浮点数模型矩阵的每列元素的最大值组成最大值向量,以作为所述浮点数模型矩阵的最大值。
3.根据权利要求1所述的方法,其特征在于,所述根据数位宽度、所述极值单元输出的所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵,包括:
根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,利用公式Xint=2K*(X-XMin)/(XMax-XMin),对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵;其中,
Xint为所述定点数模型矩阵中的元素;
X为所述浮点数模型矩阵中的元素;
K为所述数位宽度;
XMin为所述浮点数模型矩阵的最小值;以及
XMax为所述浮点数模型矩阵的最大值。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
采用所述极值单元,根据所述DMA单元输出的待压缩的浮点数输入矩阵,获取所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值;
采用所述压缩单元,根据所述数位宽度、极值单元输出的所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,对所述浮点数输入矩阵进行压缩处理,以获得所述定点数输入矩阵。
5.一种浮点数矩阵的处理装置,其特征在于,包括:
极值单元,用于根据深度学习加速器内的直接内存存取DMA单元输出的待压缩的浮点数模型矩阵,获取所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值;
压缩单元,用于根据数位宽度、所述极值单元输出的所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵;
存储单元,用于采用所述深度学习加速器内的静态随机存取存储器SRAM,存储所述压缩单元输出的所述定点数模型矩阵;
运算单元,用于从所述存储单元中获取所述定点数模型矩阵,对所述定点数模型矩阵的列向量以及所述压缩单元输出的定点数输入矩阵的行向量进行点乘运算,以获得定点数输出矩阵,所述定点数输入矩阵基于浮点数输入矩阵获得;
解压缩单元,用于采用所述深度学习加速器内的解压缩单元,根据预先计算的参数以及所述运算单元输出的所述定点数输出矩阵进行解压缩处理,以获得浮点数输出矩阵,其中,所述预先计算的参数是基于所述极值单元输出的所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,以及所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值确定的;
所述解压缩单元,具体用于
利用公式Xvec*Yvec=α*β*Xvecint*Yvecint+Ymin*ΣXint+Xmin*ΣYint+N*XMin*YMin,对所述定点数输出矩阵进行解压缩处理,以获得所述浮点数输出矩阵;其中,
Xvec为所述浮点数模型矩阵的列向量;
Yvec为所述浮点数输入矩阵的行向量;
Xvec*Yvec为所述浮点数输出矩阵;
Xvecint*Yvecint为所述定点数输出矩阵;
所述预先计算的参数包括:α、β、ΣXint、ΣYint及N*XMin*YMin;
N为所述浮点数模型矩阵的列向量中元素的个数,或者所述浮点数输入矩阵的行向量中元素的个数;
α=(XMax-XMin)/2k,K为所述数位宽度,XMin为所述浮点数模型矩阵的最小值,XMax为所述浮点数模型矩阵的最大值;
β=(YMax-YMin)/2k,YMin为所述浮点数输入矩阵的最小值,YMax为所述浮点数输入矩阵的最大值;
Xvecint为所述定点数模型矩阵的列向量;
Yvecint为所述定点数输入矩阵的行向量;
ΣXint为所述定点数模型矩阵的行向量中每个元素之和;以及
ΣYint为所述定点数输入矩阵的列向量中每个元素之和。
6.根据权利要求5所述的装置,其特征在于,所述极值单元,具体用于
对所述浮点数模型矩阵的全部元素进行极值求解处理,以获得所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值;或者
对所述浮点数模型矩阵的每列元素进行极值求解处理,以获得该列元素的最小值和该列元素的最大值;将所述浮点数模型矩阵的每列元素的最小值组成最小值向量,以作为所述浮点数模型矩阵的最小值,将所述浮点数模型矩阵的每列元素的最大值组成最大值向量,以作为所述浮点数模型矩阵的最大值。
7.根据权利要求6所述的装置,其特征在于,所述压缩单元,具体用于根据所述数位宽度、所述浮点数模型矩阵的最小值和所述浮点数模型矩阵的最大值,利用公式Xint=2K*(X-XMin)/(XMax-XMin),对所述浮点数模型矩阵进行压缩处理,以获得定点数模型矩阵;其中,
Xint为所述定点数模型矩阵中的元素;
X为所述浮点数模型矩阵中的元素;
K为所述数位宽度;
XMin为所述浮点数模型矩阵的最小值;以及
XMax为所述浮点数模型矩阵的最大值。
8.根据权利要求5所述的装置,其特征在于,
所述极值单元,进一步用于根据待压缩的浮点数输入矩阵,获取所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值;
所述压缩单元,进一步用于根据所述数位宽度、所述浮点数输入矩阵的最小值和所述浮点数输入矩阵的最大值,对所述浮点数输入矩阵进行压缩处理,以获得所述定点数输入矩阵。
9.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1~4中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1~4中任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710165155.4A CN108628807B (zh) | 2017-03-20 | 2017-03-20 | 浮点数矩阵的处理方法、装置、设备及计算机可读存储介质 |
US15/628,455 US9912349B1 (en) | 2017-03-20 | 2017-06-20 | Method and apparatus for processing floating point number matrix, an apparatus and computer-readable storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710165155.4A CN108628807B (zh) | 2017-03-20 | 2017-03-20 | 浮点数矩阵的处理方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108628807A CN108628807A (zh) | 2018-10-09 |
CN108628807B true CN108628807B (zh) | 2022-11-25 |
Family
ID=61257905
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710165155.4A Active CN108628807B (zh) | 2017-03-20 | 2017-03-20 | 浮点数矩阵的处理方法、装置、设备及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9912349B1 (zh) |
CN (1) | CN108628807B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10346944B2 (en) | 2017-04-09 | 2019-07-09 | Intel Corporation | Machine learning sparse computation mechanism |
US10592208B2 (en) | 2018-05-07 | 2020-03-17 | International Business Machines Corporation | Very low precision floating point representation for deep learning acceleration |
US11501135B2 (en) * | 2018-05-29 | 2022-11-15 | British Cayman Islands Intelligo Technology Inc. | Smart engine with dynamic profiles |
KR102382186B1 (ko) * | 2018-10-10 | 2022-04-05 | 삼성전자주식회사 | 딥 러닝을 위한 고성능 컴퓨팅 시스템 |
US11526759B2 (en) | 2018-11-05 | 2022-12-13 | International Business Machines Corporation | Large model support in deep learning |
CN111353517B (zh) * | 2018-12-24 | 2023-09-26 | 杭州海康威视数字技术股份有限公司 | 一种车牌识别方法、装置及电子设备 |
US11604647B2 (en) | 2019-09-03 | 2023-03-14 | International Business Machines Corporation | Mixed precision capable hardware for tuning a machine learning model |
US20210064976A1 (en) * | 2019-09-03 | 2021-03-04 | International Business Machines Corporation | Neural network circuitry having floating point format with asymmetric range |
CN110888992A (zh) * | 2019-11-15 | 2020-03-17 | 北京三快在线科技有限公司 | 多媒体数据处理方法、装置、计算机设备和可读存储介质 |
CN110943744B (zh) * | 2019-12-03 | 2022-12-02 | 嘉楠明芯(北京)科技有限公司 | 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 |
CN111291876B (zh) * | 2020-01-21 | 2023-03-28 | 星宸科技股份有限公司 | 运算装置、运算方法和运算芯片 |
US11249684B2 (en) * | 2020-05-22 | 2022-02-15 | Raytheon Company | Computation of solution to sparse matrix |
CN111783957A (zh) * | 2020-07-02 | 2020-10-16 | 厦门美图之家科技有限公司 | 模型量化训练方法、装置、机器可读存储介质及电子设备 |
US20220147808A1 (en) * | 2020-11-06 | 2022-05-12 | Micron Technology, Inc. | Compiler configurable to generate instructions executable by different deep learning accelerators from a description of an artificial neural network |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6240431B1 (en) * | 1998-10-31 | 2001-05-29 | Hewlett-Packard Company | Decompression of limited range floating point numbers |
CN1355623A (zh) * | 2000-11-13 | 2002-06-26 | 日本电气株式会社 | 用于产生定点数据的电路和方法 |
CN101019325A (zh) * | 2004-09-13 | 2007-08-15 | 易斯普维 | 压缩和解压缩数字序列的方法 |
CN105184369A (zh) * | 2015-09-08 | 2015-12-23 | 杭州朗和科技有限公司 | 用于深度学习模型的矩阵压缩方法和装置 |
CN105760933A (zh) * | 2016-02-18 | 2016-07-13 | 清华大学 | 卷积神经网络的逐层变精度定点化方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
-
2017
- 2017-03-20 CN CN201710165155.4A patent/CN108628807B/zh active Active
- 2017-06-20 US US15/628,455 patent/US9912349B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6240431B1 (en) * | 1998-10-31 | 2001-05-29 | Hewlett-Packard Company | Decompression of limited range floating point numbers |
CN1355623A (zh) * | 2000-11-13 | 2002-06-26 | 日本电气株式会社 | 用于产生定点数据的电路和方法 |
CN101019325A (zh) * | 2004-09-13 | 2007-08-15 | 易斯普维 | 压缩和解压缩数字序列的方法 |
CN105184369A (zh) * | 2015-09-08 | 2015-12-23 | 杭州朗和科技有限公司 | 用于深度学习模型的矩阵压缩方法和装置 |
CN105760933A (zh) * | 2016-02-18 | 2016-07-13 | 清华大学 | 卷积神经网络的逐层变精度定点化方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108628807A (zh) | 2018-10-09 |
US9912349B1 (en) | 2018-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108628807B (zh) | 浮点数矩阵的处理方法、装置、设备及计算机可读存储介质 | |
CN106951962B (zh) | 用于神经网络的复合运算单元、方法和电子设备 | |
CN109086075B (zh) | 人工智能处理器及使用处理器执行矩阵乘向量指令的方法 | |
CN109284130B (zh) | 神经网络运算装置及方法 | |
US11593658B2 (en) | Processing method and device | |
CN113887701B (zh) | 生成用于神经网络输出层的输出的方法、系统和存储介质 | |
US10204289B2 (en) | Hieroglyphic feature-based data processing | |
CN109032670B (zh) | 神经网络处理装置及其执行向量复制指令的方法 | |
CN108229648B (zh) | 匹配存储器中数据位宽的卷积计算方法和装置、设备、介质 | |
US11314842B1 (en) | Hardware implementation of mathematical functions | |
JP2022501665A (ja) | 8ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置 | |
US20200265300A1 (en) | Processing method and device, operation method and device | |
CN108415939B (zh) | 基于人工智能的对话处理方法、装置、设备及计算机可读存储介质 | |
CN114187317B (zh) | 图像抠图的方法、装置、电子设备以及存储介质 | |
CN111985831A (zh) | 云计算资源的调度方法、装置、计算机设备及存储介质 | |
CN111045728A (zh) | 一种计算装置及相关产品 | |
CN114490116A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
WO2019076095A1 (zh) | 处理方法及装置 | |
US11861452B1 (en) | Quantized softmax layer for neural networks | |
CN110222777B (zh) | 图像特征的处理方法、装置、电子设备及存储介质 | |
CN114065915A (zh) | 网络模型的构建方法、数据处理方法、装置、介质及设备 | |
CN114139693A (zh) | 神经网络模型的数据处理方法、介质和电子设备 | |
Panwar et al. | M2DA: a low-complex design methodology for convolutional neural network exploiting data symmetry and redundancy | |
CN113379038A (zh) | 数据处理方法和电子设备 | |
KR20220022480A (ko) | 증가된 정밀도의 뉴럴 프로세싱 요소 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20181009 Assignee: Kunlun core (Beijing) Technology Co.,Ltd. Assignor: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd. Contract record no.: X2021980009778 Denomination of invention: Processing method, device, equipment and computer-readable storage medium of floating point matrix License type: Common License Record date: 20210923 |
|
GR01 | Patent grant | ||
GR01 | Patent grant |