CN110457068A - 用于深度学习加速的非常低精度浮点表示 - Google Patents
用于深度学习加速的非常低精度浮点表示 Download PDFInfo
- Publication number
- CN110457068A CN110457068A CN201910352202.5A CN201910352202A CN110457068A CN 110457068 A CN110457068 A CN 110457068A CN 201910352202 A CN201910352202 A CN 201910352202A CN 110457068 A CN110457068 A CN 110457068A
- Authority
- CN
- China
- Prior art keywords
- format
- bit
- computer
- indicated
- mantissa
- 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
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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
-
- 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/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及用于深度学习加速的非常低精度浮点表示。一种专用电路被配置为使用由非常低精度格式(VLP格式)表示的数字进行浮点计算。VLP格式包括少于十六位并且分配为符号位、指数位(e)和尾数位(p)。经配置的专用电路被操作以存储VLP格式的数值的近似,其中该近似被表示为分数的倍数的函数,其中分数是能够仅使用尾数位表示的离散值的数量的倒数。
Description
技术领域
本发明一般而言涉及用于优化在训练神经网络中涉及的计算的方法、系统和计算机程序产品。更具体而言,本发明涉及用于非常低精度浮点表示的方法、系统和计算机程序产品。
背景技术
由于计算机存储器是有限的,因此无论数字是使用二进制分数还是小数分数,都不可能以无限精度存储数字。在一些时候,必须切断或舍入数字以在计算机存储器中表示。
如何在存储器中表示数字取决于期望表示有多大的准确度。一般而言,用二进制位表示数字的单一固定方式不适于使用那些数字的各种应用。物理学家可能在一些应用中一起需要使用表示光速(大约300000000)的数字以及表示牛顿引力常数(大约为0.0000000000667)的数字。
为了满足不同类型的应用及其各自的准确度需求,必须设计通用数字格式,使得该格式可以以非常不同的量值提供数字的准确性。但是,只需要相对准确性。为此,用于表示数字的固定位格式不是很有用。浮点表示解决了这个问题。
浮点表示将给定数字解析为三个主要部分-(i)包含该数字的数位(digit)的有效数字,(ii)设置相对于有效数字的开头放置十进制(或二进制)点的位置的指数。负指数表示非常小(即,接近零)的数字,以及(iii)与数字相关联的符号(正或负)。
浮点单元(FPU)是执行浮点计算的、被实现为硬件电路的处理器或处理器的一部分。虽然早期的FPU是独立的处理器,但现在大多数都集成在计算机的CPU中。现代CPU中的集成FPU非常复杂,因为它们执行高精度浮点计算,同时确保符合管理这些计算的规则,如IEEE浮点标准(IEEE 754)中所阐述的。
深度学习神经网络,也称为深度神经网络(DNN),是一种类型的神经网络。DNN的配置和训练是计算密集的。在DNN训练过程中,必须在训练的每次迭代或循环中执行许多浮点计算。DNN可以包括数千甚至数百万个节点。DNN训练所需的浮点计算的次数随着DNN中节点的数量呈指数级增长。此外,DNN训练中的不同浮点计算可能必须精确到不同数量的小数位。
机器学习工作负载往往在计算上要求很高。用于流行的深度学习基准的训练算法需要数周时间才能在由多个处理器组成的系统上收敛。可以为浮点计算提供大吞吐量密度的专用加速器,无论是在面积(area)(每平方毫米处理器空间的计算吞吐量)还是功耗(每瓦耗电量的计算吞吐量)方面,都是未来深度学习系统的关键指标。
发明内容
说明性实施例提供了方法、系统和计算机程序产品。实施例包括一种方法,其使用由非常低精度格式(VLP格式)表示的数字来配置用于浮点计算的专用电路,其中该VLP格式包括少于十六位。该实施例进一步配置专用电路以将该VLP格式分配为符号位、指数位(e)和尾数位(p)。该实施例操作进一步配置的专用电路以表示VLP格式的数值的近似,其中该近似被表示为分数的倍数的函数,其中该分数是能够仅使用尾数位表示的离散值的数量的倒数。
实施例包括计算机可用程序产品。该计算机可用程序产品包括计算机可读存储设备,以及存储在存储设备上的程序指令。
实施例包括计算机系统。该计算机系统包括处理器、计算机可读存储器和计算机可读存储设备,以及存储在存储设备上以供处理器经由存储器执行的程序指令。
附图说明
在所附权利要求中阐述了被认为是本发明特点的某些新颖特征。但是,当结合附图阅读时,通过参考说明性实施例的以下详细描述,将最好地理解本发明本身以及优选的使用模式、其进一步的目的和优点,其中:
图1描绘了其中可以实现说明性实施例的数据处理系统的网络的框图;
图2描绘了其中可以实现说明性实施例的数据处理系统的框图;
图3描绘了根据说明性实施例的、用于非常低精度浮点表示的示例配置的框图;
图4描绘了根据说明性实施例的、解释非常低精度浮点格式的示例方式的框图;
图5描绘了以说明性实施例的方式使用非常低精度浮点格式的比较实验的曲线图;以及
图6描绘了根据说明性实施例的、用于非常低精度浮点表示的示例处理的流程图。
具体实施方式
FPU具有位宽。在用于表示浮点格式(以下称为“格式”或“浮点格式”)的数字的二进制位的数量方面,位宽是尺寸。一个或多个组织,诸如电气和电子工程师协会(IEEE),已经创建了与浮点格式有关的标准。目前使用的格式提供了使用16位、32位、64位和128位格式表示数字的标准方法。
说明性实施例认识到,在半导体制造电路的物理尺寸以及消耗的电量方面,位宽越大,FPU越复杂且越大。此外,FPU越大,产生计算输出所消耗的时间越多。
专用计算电路,尤其是FPU,是公认的努力技术领域。这个努力领域中的技术的现状具有某些缺点和局限性。说明性实施例的操作和配置赋予了附加的或新的能力以改进这个努力技术领域中的现有技术,尤其是在提高FPU的计算效率方面。
专用电路硬件的这种优化导致改进另一个公认的努力技术领域,即,神经网络训练。具体而言,根据说明性实施例配置和操作的FPU减少了收敛神经网络的训练的时间,而没有显著损失结果所得的经训练的神经网络的准确度。
说明性实施例认识到,当前可用的浮点格式导致不期望的长计算时间、在功率和其它计算资源方面的不期望的昂贵计算,以及必须用于认知计算工作负载(包括但不限于训练神经网络)的不期望的复杂且大的硬件微体系架构。例如,与被设计为仅使用32位表示的微体系架构相比,使用128位表示的微体系架构必须具有足够大的寄存器来存储这样的表示。说明性实施例还认识到,当前在这种计算中使用的16位格式被认为是具有最低可用精度的格式,并且在期望权重值的高精度的神经网络权重训练中通常不受青睐。
说明性实施例还认识到,双精度(64位)和单精度(32位)格式表示在结构上是复杂的并且非常耗费资源以用于认知计算工作负载。说明性实施例认识到,在认知计算中改进面积和功耗度量的一种方式是使用小的位宽浮点表示来执行大多数计算。对舍入误差非常敏感的一小部分计算仍然可以执行单精度或双精度格式。小位宽浮点表示应当在非常低精度(VLP)计算引擎中实现,诸如被配置为使用比当前可用的最低浮点格式更少的位的FPU。例如,FPU应当被配置有8位格式,或者使用8位和15位之间的任何位的格式来执行大多数计算。
FPU的努力技术领域的当前状态目前不识别或实现这种非常低精度格式(一种或多种VLP格式)。需要减少可以在其中实现FPU的面积以改进认知计算的面积度量。需要以如下方式在硬件和固件中实现这种减少,即,该方式使得在使用非常低精度格式的神经网络的训练中使用的计算在经训练的网络表现出与利用目前使用的单或双精度格式实现的准确度基本相似的准确度的情况下仍然收敛。需要这种缓解也不会增加其它计算成本(诸如计算时间)但优选地也在认知计算中改进时间度量。
说明性实施例认识到,目前可用的工具或解决方案没有解决这些需求/问题或为这些需求/问题提供适当的解决方案。用于描述本发明的说明性实施例一般通过非常低精度浮点表示来解决和解答上述问题和其它相关问题。
可以将实施例实现为某些硬件部件和软件应用的组合。实施例或其一个或多个部件的实现可以被配置为经修改的FPU,其使用硬件、软件或固件操作部件来操作。实施例可以被配置为经修改的,具有在以下项的某种组合中执行的伴随软件应用:(i)经修改的FPU本身,(ii)通过合适的网络与经修改的FPU通信的数据处理系统,或(iii)(i)和(ii)的某种组合。
使用浮点格式的数字表示呈现出三个具体问题。首先,表示必须以某种方式表示无穷大的概念。其次,表示还必须具有表示“非数字”或“NaN”(诸如负数的平方根的结果)的方式。第三,表示必须有表示非正规或次正规数字的方式,这些数字是落在表示中的都处于二进制0的所有指数和分数位(不包括符号位)与表示中的处于二进制1的仅最低指数位和表示中的处于二进制0的所有其它指数和分数位(不包括符号位)之间的那些小值或数字。分数位在本文中也可互换地称为“尾数”位。
对“非常低精度”格式的任何引用是对使用少于16位的浮点格式的引用。仅作为非限制性示例,为了描述的清楚,本文描述的说明性实施例使用8位浮点格式。根据本公开,本领域普通技术人员将能够使实施例适应许多其它浮点格式,诸如使用范围从9位到15位的位数,或者对于一些应用甚至使用小于8位的位数,并且预期这些在说明性实施例的范围内。
实施例将FPU被配置为使用非限制性示例8位的非常低精度格式进行操作。在下文中,对FPU的任何引用是对FPU的引用,该FPU已由实施例配置为使用非常低精度格式,除非在使用时明确区分。
该实施例将8个可用位划分为如下三个部分-(i)保留1位用于指示符号,即,所表示的数字是正数还是负数。在说明性实施例中,这一位假设为8位中的最高位,但可以是适当配置的FPU中的8位中的任何位。(ii)保留剩余位中的n个位以表示指数,并且可以在适当配置的FPU中位于格式的总位中的任何位置。在本文描述和使用的一个非限制性示例格式中,n=5。(iii)保留p个剩余位(总位数减去n位再减去1位)以表示分数,其可以位于适当配置的FPU中的格式的总位中的任何位置。在本文描述和使用的一个非限制性示例格式中,p=2。
实施例将FPU配置为使用非限制性示例8位非常低精度格式。该实施例将8位格式分配为(符号,指数,分数)=(1,5,2)。
无论符号位的二进制值如何,当5个指数位和2个尾数位都被设置为二进制1时,该实施例将FPU配置为表示无穷大以及NaN。因此,该实施例不区分无穷大和NaN,因为这种区别在使用该实施例的应用类型中(诸如在训练神经网络中)具有有限的效用,如果有的话。
无论符号位的二进制值如何,当5个指数位和2个尾数位都被设置为二进制0时,该实施例将FPU配置为表示零。因此,该实施例不区分负零和正零,因为这种区别在使用该实施例的应用类型中(诸如在训练神经网络中)具有有限的效用,如果有的话。
实施例还将FPU配置为仅识别与仅使用尾数位可能的值的数量相同的非正规数的小值等同物。例如,如果仅使用两个尾数位,那么只能用2位表示四个值,即,二进制00、01、10和11。因而,仅识别数字零和直到并包括下一个最小数字之间的非正规数的四个小值等同物。使用“最近舍入”方法将小值四舍五入到四个小值等同物之一。
用于示例格式的一般等式可以写成
(-1)^s*2^(e-b)*(1+f/4)
其中:s=0或1(1位)
e从0到31(5位)
f从0到3(2位)
b是偏离率,例如15
根据这个等式的几个不同数字的表示变为:
00000 00-->0
00000 01-->2^(-15)*1.25
00000 10-->2^(-15)*1.5
00000 11-->2^(-15)*1.75
00001 00-->2^(-14)*1.00
00001 01-->2^(-14)*1.25
00001 10-->2^(-14)*1.5
00001 11-->2^(-14)*1.75
00010 00-->2^(-13)*1.00
00010 01-->2^(-13)*1.25
00010 10-->2^(-13)*1.5
00010 11-->2^(-13)*1.75
11111 00-->2^(16)*1.00
11111 01-->2^(16)*1.25
11111 10-->2^(16)*1.5
11111 11-->nan/无穷大
低7位不是(全0)或(全1)的所有情况都遵循上面的等式。
本文基于仅使用2个尾数位的非限制性示例格式来描述和使用以上示例。因而,分数的数字(numbers of fractions)、每个分数的尺寸以及结果所得的向上舍入表示的近似值的这些示例不是限制性的。根据本公开,本领域普通技术人员将能够使实施例适应于使用不同数量的尾数位的许多其它非常低精度格式。这种适应将导致分数的对应不同的数字、每个分数的尺寸,以及结果得到的舍入表示的近似值-以本文所述的方式向上或向下舍入,并且这些适应和结果被预期在说明性实施例的范围内。
对于9位格式,1,5,2格式可以被修改为使用5个指数位和3个尾数位,或6个指数位和2个尾数位。
对于1,6,2的情况,等式将是:
(-1)^s*2^(e-b)*(1+f/4)
其中:s=0或1(1位)
e从0到63(6位)
f从0到3(2位)
b是偏离率,例如31
对于1,5,3的情况,等式将是:
(-1)^s*2^(e-b)*(1+f/8)
其中:s=0或1(1位)
e从0到31(5位)
f从0到7(3位)
b是偏离率,例如15
此外,代替向上最近舍入(rounding nearest up),实现可以将实施例被配置为使用“向下最近舍入(rounding nearest down)”方法用于小数等同物。在说明性实施例的范围内预期这种适应。
在实验中,本文描述的实施例的实现操作一组利用非常低精度8位浮点格式配置的FPU。该实现基本上计算出具体神经网络的实验训练中的所有训练计算。该实验比较性地执行训练计算,使用被配置为使用低精度(16位)浮点格式的现有技术FPU从相同的初始条件开始相同的神经网络。在每种情况下,该实验都以神经网络的经训练的值(权重)收敛(当网络被认为是经训练的时)结束。该实验确定来自两次训练的经训练的网络具有相似的准确度(在可忽略的容差内),并且具有相似数量的时期(epoch)(相似的时间量)。由于与低精度FPU所需的面积相比,实现非常低精度FPU所需的面积几乎为一半,因此非常低精度FPU相对于现有技术的低精度FPU具有更好的面积度量,因此相比而言是有利的。由于与低精度FPU所需的功率相比,操作非常低精度FPU所需的功率几乎为一半,因此非常低精度FPU相对于现有技术的低精度FPU具有更好的功率度量,因此相比而言是有利的。
本文描述的非常低精度浮点表示的方式在与专用计算电路,尤其是FPU,有关的努力技术领域中的当前可用方法中是不可得的。当被实现为在设备或数据处理系统上执行时,本文描述的实施例的方法包括在提供不太复杂的经修改的FPU时那个设备或数据处理系统的功能的实质性进步,与现有技术的较大浮点格式FPU相比,其是更小的电路配置、产生与使用较大浮点格式训练的相同网络无显著偏差的神经网络训练,并且在相同的时间量或更少的时间内结束训练。
仅作为示例,关于某些类型的专用计算电路、FPU、存储器、位宽、格式、表示、特殊条件处理、分配、分数尺寸、分数的数字、容差、结果、算法、等式、神经网络配置、实施例的位置、附加数据、设备、数据处理系统、环境、部件和应用来描述说明性实施例。这些和其它类似工件的任何具体表现并不旨在限制本发明。可以在说明性实施例的范围内选择这些和其它类似工件的任何合适的表现形式。
此外,可以关于任何类型的数据、数据源或通过数据网络对数据源的访问来实现说明性实施例。在本发明的范围内,任何类型的数据存储设备可以在数据处理系统本地或经由数据网络向本发明的实施例提供数据。在使用移动设备描述实施例的情况下,在说明性实施例的范围内适合与移动设备一起使用的任何类型的数据存储设备可以或者在移动设备本地或者通过数据网络向这样的实施例提供数据。
仅作为示例使用具体的代码、设计、架构、协议、布局、示意图和工具来描述说明性实施例,并且不是对说明性实施例的限制。此外,在一些情况下,为了描述的清楚,仅作为示例使用特定软件、工具和数据处理环境来描述说明性实施例。说明性实施例可以与其它可比较或类似用途的结构、系统、应用或体系架构结合使用。例如,其它可比较的移动设备、结构、系统、应用或其架构可以在本发明的范围内与本发明的这种实施例结合使用。说明性实施例可以用硬件、软件或其组合来实现。
本公开中的示例仅仅是为了描述的清楚,并且不是对说明性实施例的限制。从本公开可以想到附加的数据、操作、动作、任务、活动和操纵,并且其预期是在说明性实施例的范围内。
本文列出的任何优点仅仅是示例,并且不旨在限制说明性实施例。通过具体的说明性实施例可以实现附加或不同的优点。此外,特定的说明性实施例可以具有上面列出的优点中的一些、全部或没有。
参考附图,特别是参考图1和2,这些图是可以在其中实现说明性实施例的数据处理环境的示例图。图1和2仅仅是示例,并非旨在声明或暗示关于可以在其中实现不同实施例的环境的任何限制。特定实现可以基于以下描述对所描绘的环境进行许多修改。
图1描绘了其中可以实现说明性实施例的数据处理系统的网络的框图。数据处理环境100是可以实现说明性实施例的计算机网络。数据处理环境100包括网络102。网络102是用于在数据处理环境100内连接在一起的各种设备和计算机之间提供通信链路的介质。网络102可以包括连接,诸如有线、无线通信链路或光纤电缆。
客户端或服务器仅仅是连接到网络102的某些数据处理系统的示例角色,并且不旨在排除这些数据处理系统的其它配置或角色。服务器104和服务器106与存储单元108一起耦合到网络102。软件应用可以在数据处理环境100中的任何计算机上执行。客户端110、112和114也耦合到网络102。诸如服务器104或106或客户端110、112或114之类的数据处理系统可以包含数据,并且可以具有在其上执行的软件应用或软件工具。
仅仅作为示例,并且不暗示对这种体系架构的任何限制,图1描绘了可用在实施例的示例实现中的某些部件。例如,仅作为示例,服务器104和106以及客户端110、112、114被描绘为服务器和客户端,而不是暗示对客户端-服务器体系架构的限制。作为另一个示例,如图所示,实施例可以分布在若干数据处理系统和数据网络上,而另一个实施例可以在说明性实施例的范围内的单个数据处理系统上实现。数据处理系统104、106、110、112和114还表示集群中的示例节点、分区以及适于实现实施例的其它配置。
设备132是本文描述的设备的示例。例如,设备132可以采取智能电话、平板计算机、膝上型计算机、固定或便携形式的客户端110、可穿戴计算设备或任何其它合适设备的形式。被描述为在图1中的另一个数据处理系统中执行的任何软件应用可以被配置为以类似方式在设备132中执行。在图1中的另一个数据处理系统中存储或产生的任何数据或信息可以被配置为以类似的方式在设备132中存储或产生。
假设FPU 103是根据实施例的经修改的FPU,并且被配置为在服务器104中操作。例如,服务器104可以参与训练或配置神经网络107。应用105实现操作部件以配置FPU 103,向FPU 103提供程序指令,或以其它方式操作FPU 103以用于训练神经网络107或用于其它浮点计算。应用105可以用硬件、软件或固件实现。应用105可以在FPU 103内、在FPU 103外但在服务器104中或甚至在服务器104外在数据网络102上的另一个数据处理系统中(例如,在服务器106中)实现。
服务器104和106、存储单元108以及客户端110、112和114以及设备132可以使用有线连接、无线通信协议或其它合适的数据连接耦合到网络102。客户端110、112和114可以是例如个人计算机或网络计算机。
在所描绘的示例中,服务器104可以向客户端110、112和114提供诸如引导文件、操作系统映像和应用之类的数据。在这个示例中,客户端110、112和114可以是服务器104的客户端。客户端110、112、114或其某种组合可以包括它们自己的数据、引导文件、操作系统映像和应用。数据处理环境100可以包括附加的服务器、客户端和未示出的其它设备。
在所描绘的示例中,数据处理环境100可以是互联网。网络102可以表示使用传输控制协议/网际协议(TCP/IP)和其它协议来彼此通信的网络和网关的集合。互联网的核心是主要节点或主机计算机(包括数千个路由数据和消息的商业、政府、教育和其它计算机系统)之间的数据通信链路的主干。当然,数据处理环境100也可以被实现为多个不同类型的网络,诸如例如内联网、局域网(LAN)或广域网(WAN)。图1旨在作为示例,而不是作为不同说明性实施例的体系架构限制。
除了其它用途,数据处理环境100尤其可以用于实现其中可以实现说明性实施例的客户端-服务器环境。客户端-服务器环境使软件应用和数据能够跨网络分布,使得应用通过使用客户端数据处理系统和服务器数据处理系统之间的交互来起作用。数据处理环境100还可以采用面向服务的体系架构,其中跨网络分布的可互操作软件部件可以作为一致的商业应用打包在一起。数据处理环境100还可以采取云的形式,并且采用服务递送的云计算模型,以便能够方便地按需网络访问可以通过最少的管理工作或与服务提供商的交互来快速供应和发布的可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储装置、应用、虚拟机和服务)的共享池。
参考图2,这个图描绘了其中可以实现说明性实施例的数据处理系统的框图。数据处理系统200是计算机(诸如图1中的服务器104和106,或客户端110、112和114)或其中可以定位实现说明性实施例的处理的计算机可用程序代码或指令的另一类型的设备的示例。
数据处理系统200还代表数据处理系统或其中的配置,诸如图1中的数据处理系统132,其中可以定位实现说明性实施例的处理的计算机可用程序代码或指令。数据处理系统200仅作为示例被描述为计算机,但不限于此。以其它设备的形式(诸如图1中的设备132)的实现可以修改数据处理系统200,诸如通过添加触摸界面,并且甚至从数据处理系统200中消除了某些所描绘的部件,而不脱离对本文描述的数据处理系统200的操作和功能的一般描述。
在所描绘的示例中,数据处理系统200采用集线器体系架构,包括北桥和存储器控制器集线器(NB/MCH)202以及南桥和输入/输出(I/O)控制器集线器(SB/ICH)204。处理单元206、主存储器208和图形处理器210耦合到北桥和存储器控制器集线器(NB/MCH)202。处理单元206可以包含一个或多个处理器,并且可以使用一个或多个异构处理器系统来实现。处理单元206可以是多核处理器。在某些实现中,图形处理器210可以通过加速图形端口(AGP)耦合到NB/MCH 202。
在所描绘的示例中,局域网(LAN)适配器212耦合到南桥和I/O控制器集线器(SB/ICH)204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、通用串行总线(USB)和其它端口232以及PCI/PCIe设备234通过总线238耦合到南桥和I/O控制器集线器204。硬盘驱动器(HDD)或固态驱动器(SSD)226和CD-ROM 230通过总线240耦合到南桥和I/O控制器集线器204。PCI/PCIe设备234可以包括例如用于笔记本计算机的以太网适配器、插入卡(add-in card)和PC卡。PCI使用卡总线控制器,而PCIe则不使用。ROM 224可以是例如闪存二进制输入/输出系统(BIOS)。硬盘驱动器226和CD-ROM 230可以使用例如集成驱动电子设备(IDE)、串行高级技术附件(SATA)接口,或诸如外部SATA(eSATA)和微型SATA(mSATA)之类的变体。超级I/O(SIO)设备236可以通过总线238耦合到南桥和I/O控制器集线器(SB/ICH)204。
诸如主存储器208、ROM 224或闪存(未示出)之类的存储器是计算机可用存储设备的一些示例。硬盘驱动器或固态驱动器226、CD-ROM 230和其它类似可用的设备是包括计算机可用存储介质的计算机可用存储设备的一些示例。
操作系统在处理单元206上运行。操作系统协调并提供对图2中数据处理系统200内的各种部件的控制。操作系统可以是用于任何类型的计算平台的商用操作系统,包括但不限于服务器系统、个人计算机和移动设备。面向对象的或其它类型的编程系统与操作系统一起操作,并且从在数据处理系统200上执行的程序或应用提供对操作系统的调用。
用于操作系统、面向对象的编程系统以及应用或程序(诸如图1中的应用105)的指令位于存储设备上,诸如以硬盘驱动器226上的代码226A的形式,并且可以被加载到一个或多个存储器中的至少一个当中(诸如主存储器208)以供处理单元206执行。说明性实施例的处理可以由处理单元206使用计算机实现的指令来执行,该指令可以位于存储器(诸如例如主存储器208、只读存储器224)中,或者位于一个或多个外围设备中。
此外,在一种情况下,代码226A可以通过网络201A从远程系统201B下载,其中类似的代码201C存储在存储设备201D上。在另一种情况下,代码226A可以通过网络201A下载到远程系统201B,其中下载的代码201C存储在存储设备201D上。
图1-2中的硬件可以取决于实现而变化。除了图1-2中所示的硬件之外或代替图1-2中所示的硬件,还可以使用其它内部硬件或外围设备,诸如闪存、等同的非易失性存储器或光盘驱动器等。此外,说明性实施例的处理可以应用于多处理器数据处理系统。
在一些说明性示例中,数据处理系统200可以是个人数字助理(PDA),其一般配置有闪存以提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器。总线系统可以包括一条或多条总线,诸如系统总线、I/O总线和PCI总线。当然,总线系统可以使用任何类型的通信架构或体系架构来实现,其提供数据在附连到架构或体系架构的不同部件或设备之间的传送。
通信单元可以包括用于发送和接收数据的一个或多个设备,诸如调制解调器或网络适配器。存储器可以是例如主存储器208或高速缓存,诸如在北桥和存储器控制器集线器202中找到的高速缓存。处理单元可以包括一个或多个处理器或CPU。
图1-2中描绘的示例和上述示例并不意味着暗示体系架构限制。例如,除了采取移动或可穿戴设备的形式之外,数据处理系统200还可以是平板计算机、膝上型计算机或电话设备。
在将计算机或数据处理系统描述为虚拟机、虚拟设备或虚拟部件的情况下,虚拟机、虚拟设备或虚拟部件以数据处理系统200使用数据处理系统200中描绘的一些或全部部件的虚拟化表现形式的方式来操作。例如,在虚拟机、虚拟设备或虚拟部件中,处理单元206表现为主机数据处理系统中可用的全部或一些数量的硬件处理单元206的虚拟化实例,主存储器208表现为可以在主机数据处理系统中可用的主存储器208的全部或某个部分的虚拟化实例,并且盘226表现为可以在主机数据处理系统中可用的盘226的全部或某个部分的虚拟化实例。在此类情况下的主机数据处理系统由数据处理系统200表示。
参考图3,这个图描绘了根据说明性实施例的、用于非常低精度浮点表示的示例配置的框图。FPU 300是图1中FPU 103的示例。应用302是图1中的应用105的示例。
应用302将FPU 300中的存储器位配置为非常低精度浮点格式304。使用8位将格式304配置为本文描述的非限制性示例。最高1位被保留作为符号位306,接下来的低5位被保留作为指数位308,并且最低2位被保留作为尾数位310。
参考图4,这个图描绘了根据说明性实施例的、解释非常低精度浮点格式的示例方式的框图。部分306、308和310是来自图3中的格式304的对应部分。
目前,忽略存储在符号位306中的二进制值。可以存储在指数位308和尾数位310中的最小二进制值分别是二进制00000和00,如行402中所示。如本文所述,应用302将FPU 300配置为将位308和310的这种情况识别为表示数字零。存储在符号位306中的二进制值与行402的表示无关。
可以存储在位308和310中的下一个最低二进制值分别是00001和00,如行410中所示。如本文所描述的,因为尾数位310使用2位,所以行402与行410的表示之间的数字空间被划分为四个四分之一。行404、406、408和410与这四个四分之一对应。
应用302对FPU 300进行编程以便以新颖的方式解释或识别位308和310中保持的二进制值00000 01。FPU 300解释位308和310–不是以将二进制0000001解释为十进制1的方式,或是以16位或更多位表示的浮点规范的方式–而以以下列方式。
行404是行402的下限数+一个四分之一分数,即,(行402的下限数)*1.25。位308可以设置为最小二进制00000(行402的下限数)。因此,由位308中的5个指数位表示的最小数字是2^(-15)。因此,行404中的位308和310表示值2^(-15)*1.25。
行406表示行404中表示的数字之上的一个附加四分之一分数。因此,行406中的位308和310表示值2^(-15)*1.50。同样,行408中的位308和310表示值2^(-15)*1.75;并且行410中的位308和310表示值2^(-15)*2.00=2^(-14)*1.00。
FPU 300被编程为以类似方式解释或计算位308和310的其它二进制内容的表示值。例如,行412中的位308和310表示值2^(-14)*1.25;行414中的位308和310表示值2^(-14)*1.50;等等。
可以将位308设置为的最大二进制内容是11111。因此,由位308中的5个指数位可表示的最大数字是2^(+16)。因此,在行416中,FPU 300分别将位308和310中的11111 10计算为2^(+16)*1.50。在行418中,如本文所述,应用302将FPU 300配置为将位308和310的这种情况识别为表示无穷大以及NaN。
因此,使用(1,5,2)的示例8位浮点格式的经修改的FPU可以用于表示从负2^(+16)*1.50直至负2^(-15)*1.25、直至正或负零、直至正2^(-15)*1.25、直至正2^(+16)*1.50、直至无穷大或NaN的数字。已经发现这个范围足以用于训练神经网络和其它认知系统,并且已经发现,与基于低精度或单精度或甚至更高精度的训练相比,其中表示的精度对训练的准确性具有不显著的影响。
参考图5,这个图描绘了以说明性实施例的方式使用非常低精度浮点格式的比较实验的曲线图。曲线图302是使用FPU 300在训练DNN时执行的计算的收敛图。曲线图304是在相同初始条件下训练相同DNN的另一个实例时使用全精度(32位)FPU执行的计算的收敛图。曲线图306是在训练DNN时预期的收敛的基线图。如可以看出的,朝着训练的结束,使用全准精度FPU与使用FPU 300执行的训练之间的训练损失差异(偏差)是不显著的。
参考图6,这个图描绘了根据说明性实施例的用于非常低精度浮点表示的示例处理的流程图。处理600可以在图3中的应用302中实现。
应用将FPU配置为使用非常低精度浮点格式,例如8-15位格式,并且优选地使用8位格式(方框602)。应用将格式配置为使用一些位作为符号位、一些位作为指数位、一些位作为尾数位,例如,用于8位格式的(1,5,2)(方框604)。
当所有指数位和所有尾数位被设置为二进制0时,应用将FPU编程为将值识别为零(方框606)。当所有指数位和所有尾数位都设置为二进制1时,应用将FPU编程为无差别地将值识别为NaN或无穷大(方框608)。应用将FPU编程为识别根据格式解释的方法重新表示的其它舍入值(方框610)。此后,该应用结束处理600。
因此,在说明性实施例中提供了用于非常低精度浮点表示和其它相关特征、功能或操作的计算机实现的方法、系统或装置以及计算机程序产品。在关于一种类型的设备描述实施例或其一部分的情况下,计算机实现的方法、系统或装置、计算机程序产品或其一部分适于或被配置为与那种类型的设备的适当且可比较的表现形式一起使用。
在将实施例描述为在应用中实现的情况下,在软件即服务(SaaS)模型中的应用的交付被预期在说明性实施例的范围内。在SaaS模型中,通过在云基础设施中执行应用来向用户提供实现实施例的应用的能力。用户可以通过诸如web浏览器(例如,基于web的电子邮件)的瘦客户端接口或其它轻量级客户端应用使用各种客户端设备来访问应用。用户不管理或控制底层云基础设施,其包括网络、服务器、操作系统或云基础设施的存储装置。在一些情况下,用户甚至不能管理或控制SaaS应用的功能。在一些其它情况下,应用的SaaS实现可以允许有限的特定于用户的应用配置设置的可能例外。
本发明可以是任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的包括但不限于计算机可读存储设备的计算机可读存储介质,不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (16)
1.一种方法,包括:
使用由非常低精度格式(VLP格式)表示的数字来配置用于浮点计算的专用电路,其中该VLP格式包括少于十六位;
进一步配置专用电路以将该VLP格式分配为符号位、指数位(e)和尾数位(p);以及
操作进一步配置的专用电路以存储VLP格式的数值的近似,其中该近似被表示为分数的倍数的函数,其中该分数是能够仅使用尾数位表示的离散值的数量的倒数。
2.如权利要求1所述的方法,其中VLP格式使用八个位,其中该格式使用五个位作为指数位并且使用两个位作为尾数位。
3.如权利要求2所述的方法,其中分数的倍数的函数是
(-1)^s*2^(e-b)*(1+f/4)
其中s是能由单个符号位表示的可能值并且是0或1,其中e是能由五个指数位表示的三十二个可能值之一并且是从0到31,其中b是偏离率,并且其中f是能由两个尾数位表示的四个可能值之一并且是从0到3。
4.如权利要求1所述的方法,其中VLP格式使用九个位,其中该格式使用六个位作为指数位并且使用两个位作为尾数位。
5.如权利要求4所述的方法,其中分数的倍数的函数是
(-1)^s*2^(e-b)*(1+f/4)
其中s是能由单个符号位表示的可能值并且是0或1,其中e是能由六个指数位表示的六十四个可能值之一并且是从0到63,其中b是偏离率,并且其中f是能由两个尾数位表示的四个可能值之一并且是从0到3。
6.如权利要求1所述的方法,其中VLP格式使用九个位,其中该格式使用五个位作为指数位并且使用三个位作为尾数位。
7.如权利要求6所述的方法,其中分数的倍数的函数是
(-1)^s*2^(e-b)*(1+f/8)
其中s是能由单个符号位表示的可能值并且是0或1,其中e是能由五个指数位表示的三十二个可能值之一并且是从0到31,其中b是偏离率,并且其中f是能由三个尾数位表示的八个可能值之一并且是从0到7。
8.如权利要求1所述的方法,其中VLP格式使用总共十五个位,其中该格式使用n个位作为指数位并且使用p个位作为尾数位,使得n+p等于十四,其中一个位被保留用于符号。
9.如权利要求1所述的方法,其中专用电路包括浮点单元(FPU)。
10.如权利要求1所述的方法,还包括:
附加地配置专用电路以用与“非数字”(NaN)值相同的方式用VLP格式表示无穷大。
11.如权利要求1所述的方法,还包括:
在VLP格式下,在操作专用电路时,当表示零、无穷大和NaN时,忽略符号位。
12.如权利要求1所述的方法,其中VLP格式仅保留两个表示,一个保留表示表示零,另一个保留表示表示NaN。
13.如权利要求1所述的方法,其中表示近似的函数被表述为(-1)^s*2^(e-bias)*(1+f/(2^p))
其中e是从0到2^(n)-1,
F是从0到2^(p)-1,
n=指数位的数量,以及
p=尾数位的数量。
14.一种计算机可用程序产品,包括计算机可读存储设备和存储在该存储设备上的程序指令,所存储的程序指令包括实现权利要求1-13之一所述的方法中的步骤的程序指令。
15.一种计算机系统,包括处理器、计算机可读存储器和计算机可读存储设备,以及存储在存储设备上以供处理器经由存储器执行的程序指令,所存储的程序指令包括实现权利要求1-13之一所述的方法中的步骤的程序指令。
16.一种计算机系统,包括用于实现权利要求1-13之一所述的方法中的步骤的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/973,511 US10592208B2 (en) | 2018-05-07 | 2018-05-07 | Very low precision floating point representation for deep learning acceleration |
US15/973,511 | 2018-05-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110457068A true CN110457068A (zh) | 2019-11-15 |
CN110457068B CN110457068B (zh) | 2023-03-14 |
Family
ID=68384847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910352202.5A Active CN110457068B (zh) | 2018-05-07 | 2019-04-29 | 用于深度学习加速的非常低精度浮点表示 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10592208B2 (zh) |
CN (1) | CN110457068B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11144316B1 (en) | 2018-04-17 | 2021-10-12 | Ali Tasdighi Far | Current-mode mixed-signal SRAM based compute-in-memory for low power machine learning |
US10656913B2 (en) * | 2018-06-05 | 2020-05-19 | International Business Machines Corporation | Enhanced low precision binary floating-point formatting |
US10963219B2 (en) * | 2019-02-06 | 2021-03-30 | International Business Machines Corporation | Hybrid floating point representation for deep learning acceleration |
US11556615B2 (en) * | 2019-05-03 | 2023-01-17 | Tesla, Inc. | Data path for scalable matrix node engine with mixed data formats |
US10915298B1 (en) | 2019-10-08 | 2021-02-09 | Ali Tasdighi Far | Current mode multiply-accumulate for compute in memory binarized neural networks |
US11610104B1 (en) | 2019-12-30 | 2023-03-21 | Ali Tasdighi Far | Asynchronous analog accelerator for fully connected artificial neural networks |
US11615256B1 (en) | 2019-12-30 | 2023-03-28 | Ali Tasdighi Far | Hybrid accumulation method in multiply-accumulate for machine learning |
CN111580481B (zh) * | 2020-05-21 | 2021-08-31 | 四川中烟工业有限责任公司 | 一种提高梗丝掺配累计精度的方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5506797A (en) * | 1994-03-09 | 1996-04-09 | Mitsubishi Denki Kabushiki Kaisha | Nonlinear function generator having efficient nonlinear conversion table and format converter |
US20080270506A1 (en) * | 2007-04-26 | 2008-10-30 | International Business Machines Corporation | Convert significand of decimal floating point data from packed decimal format |
US20080270495A1 (en) * | 2007-04-26 | 2008-10-30 | International Business Machines Corporation | Insert/extract biased exponent of decimal floating point data |
US20130212139A1 (en) * | 2012-02-09 | 2013-08-15 | International Business Machines Corporation | Mixed precision estimate instruction computing narrow precision result for wide precision inputs |
CN104025044A (zh) * | 2011-12-29 | 2014-09-03 | 国际商业机器公司 | 从区位格式转换为十进制浮点格式 |
CN104025043A (zh) * | 2011-12-29 | 2014-09-03 | 国际商业机器公司 | 从十进制浮点格式转换为区位格式 |
CN105634499A (zh) * | 2015-12-30 | 2016-06-01 | 广东工业大学 | 一种基于新短浮点型数据的数据转换方法 |
CN107038014A (zh) * | 2015-10-19 | 2017-08-11 | 想象技术有限公司 | 舍入反平方根结果 |
CN107273090A (zh) * | 2017-05-05 | 2017-10-20 | 中国科学院计算技术研究所 | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 |
CN107451658A (zh) * | 2017-07-24 | 2017-12-08 | 杭州菲数科技有限公司 | 浮点运算定点化方法及系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11170294B2 (en) | 2016-01-07 | 2021-11-09 | Intel Corporation | Hardware accelerated machine learning |
US10497089B2 (en) * | 2016-01-29 | 2019-12-03 | Fotonation Limited | Convolutional neural network |
US11676024B2 (en) | 2016-02-24 | 2023-06-13 | Sri International | Low precision neural networks using subband decomposition |
US9715656B1 (en) | 2016-09-12 | 2017-07-25 | International Business Machines Corporation | Killing asymmetric resistive processing units for neural network training |
CN108628807B (zh) | 2017-03-20 | 2022-11-25 | 北京百度网讯科技有限公司 | 浮点数矩阵的处理方法、装置、设备及计算机可读存储介质 |
KR20190044878A (ko) * | 2017-10-23 | 2019-05-02 | 삼성전자주식회사 | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 |
US11216250B2 (en) * | 2017-12-06 | 2022-01-04 | Advanced Micro Devices, Inc. | Dynamic, variable bit-width numerical precision on field-programmable gate arrays for machine learning tasks |
US11803734B2 (en) * | 2017-12-20 | 2023-10-31 | Advanced Micro Devices, Inc. | Adaptive quantization for neural networks |
-
2018
- 2018-05-07 US US15/973,511 patent/US10592208B2/en active Active
-
2019
- 2019-04-29 CN CN201910352202.5A patent/CN110457068B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5506797A (en) * | 1994-03-09 | 1996-04-09 | Mitsubishi Denki Kabushiki Kaisha | Nonlinear function generator having efficient nonlinear conversion table and format converter |
US20080270506A1 (en) * | 2007-04-26 | 2008-10-30 | International Business Machines Corporation | Convert significand of decimal floating point data from packed decimal format |
US20080270495A1 (en) * | 2007-04-26 | 2008-10-30 | International Business Machines Corporation | Insert/extract biased exponent of decimal floating point data |
CN104025044A (zh) * | 2011-12-29 | 2014-09-03 | 国际商业机器公司 | 从区位格式转换为十进制浮点格式 |
CN104025043A (zh) * | 2011-12-29 | 2014-09-03 | 国际商业机器公司 | 从十进制浮点格式转换为区位格式 |
US20130212139A1 (en) * | 2012-02-09 | 2013-08-15 | International Business Machines Corporation | Mixed precision estimate instruction computing narrow precision result for wide precision inputs |
CN107038014A (zh) * | 2015-10-19 | 2017-08-11 | 想象技术有限公司 | 舍入反平方根结果 |
CN105634499A (zh) * | 2015-12-30 | 2016-06-01 | 广东工业大学 | 一种基于新短浮点型数据的数据转换方法 |
CN107273090A (zh) * | 2017-05-05 | 2017-10-20 | 中国科学院计算技术研究所 | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 |
CN107451658A (zh) * | 2017-07-24 | 2017-12-08 | 杭州菲数科技有限公司 | 浮点运算定点化方法及系统 |
Non-Patent Citations (2)
Title |
---|
JAMES HRICA: "利用赛灵思Vivado HLS实现浮点设计", 《今日电子》 * |
ZHAOXIA DENG等: "Reduced-Precision Memory Value Approximation for Deep Learning", 《HEWLETT PACKARD LABS》 * |
Also Published As
Publication number | Publication date |
---|---|
CN110457068B (zh) | 2023-03-14 |
US20190339938A1 (en) | 2019-11-07 |
US10592208B2 (en) | 2020-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110457068A (zh) | 用于深度学习加速的非常低精度浮点表示 | |
US11521090B2 (en) | Collaborative distributed machine learning | |
Parvizi et al. | Utilization-aware energy-efficient virtual machine placement in cloud networks using NSGA-III meta-heuristic approach | |
JP2021505993A (ja) | 深層学習アプリケーションのための堅牢な勾配重み圧縮方式 | |
US20180240062A1 (en) | Collaborative algorithm development, deployment, and tuning platform | |
US11263052B2 (en) | Determining optimal compute resources for distributed batch based optimization applications | |
CN110070862B (zh) | 对话系统中基于本体的自动引导的方法和系统 | |
Tong et al. | A novel task scheduling scheme in a cloud computing environment using hybrid biogeography-based optimization | |
CN113906452A (zh) | 利用转移学习的低资源实体解析 | |
CN110390390A (zh) | 利用分块gemm的深度学习加速器架构 | |
CN114667507A (zh) | 使用基于应用的剖析的机器学习工作负载的弹性执行 | |
CN113661501A (zh) | 量子特征核对齐 | |
WO2019207376A1 (en) | Central scheduler and instruction dispatcher for a neural inference processor | |
CN110502739A (zh) | 结构化输入的机器学习模型的构建 | |
JP2022539090A (ja) | ニューラル・ネットワーク最適化における特徴エンジニアリング | |
JP2023036773A (ja) | データ処理方法、データ処理装置、電子機器、記憶媒体およびコンピュータプログラム | |
CN109891387A (zh) | 具有可选择比较属性的浮点指令 | |
US20230177337A1 (en) | Multi-objective driven refactoring of a monolith application using reinforcement learning | |
CN111538532A (zh) | 用于深度学习加速的混合浮点表示 | |
Ram et al. | Redefining teaching-and-learning-process in TLBO and its application in cloud | |
JP2023535669A (ja) | 大規模な深層学習ワークロードのハイパーパラメータをチューニングするためのリソース割当て | |
CN116235178A (zh) | 零次跨语言迁移学习 | |
CN116235141A (zh) | 用于混合格式的浮点计算 | |
CN116134419A (zh) | 软件容器的运行时环境确定 | |
US20240020536A1 (en) | Processor architecture and model exploration system for deep learning |
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 |