CN109858623B - 用于执行人工神经网络正向运算的装置和方法 - Google Patents

用于执行人工神经网络正向运算的装置和方法 Download PDF

Info

Publication number
CN109858623B
CN109858623B CN201910154720.6A CN201910154720A CN109858623B CN 109858623 B CN109858623 B CN 109858623B CN 201910154720 A CN201910154720 A CN 201910154720A CN 109858623 B CN109858623 B CN 109858623B
Authority
CN
China
Prior art keywords
point data
floating point
bit
bit floating
short
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
Application number
CN201910154720.6A
Other languages
English (en)
Other versions
CN109858623A (zh
Inventor
陈天石
刘少礼
郭崎
陈云霁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201910154720.6A priority Critical patent/CN109858623B/zh
Publication of CN109858623A publication Critical patent/CN109858623A/zh
Application granted granted Critical
Publication of CN109858623B publication Critical patent/CN109858623B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Nonlinear Science (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

一种运算装置和方法,该装置包括:浮点数据统计模块,用于对所需各类型数据进行统计分析,得到指数位偏移量offset及指数位的长度EL;浮点数据转换模块,用于根据指数位偏移量offset及指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据类型的转换;浮点数据运算模块,用于对短位数浮点数据进行人工神经网络正向运算。本发明的运算装置通过对多层人工神经网络正向运算中的数据使用短位数浮点表示,并使用相对应的浮点运算模块,实现人工神经网络短位数浮点的正向运算,从而极大提高硬件的性能功耗比。

Description

用于执行人工神经网络正向运算的装置和方法
技术领域
本发明涉及人工神经网络技术领域,更具体地涉及一种用于执行人工神经网络正向运算的装置和方法。
背景技术
多层人工神经网络被广泛应用于模式识别、图像处理、函数逼近和优化计算等领域,多层人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。
传统的人工神经网络正向运算对数据的存储通常采用的是32位浮点数据类型,但在大部分人工神经网络的正向运算中,同一类型的数据都会集中在某一数据范围之内,而32位浮点所能表示的数据范围远远大于正向运算同一类型数据的数据范围,采用 32位浮点数据类型存在着大量的冗余,增加了硬件的面积开销。
发明内容
有鉴于此,本发明的一个目的在于提供一种用于执行人工神经网络正向运算的装置,本发明的另一个目的在于提供一种执行人工神经网络正向运算的方法,以解决上述技术问题中的至少之一。
为了实现上述目的,作为本发明的一个方面,本发明提供了一种用于执行人工神经网络正向运算的装置,包括
浮点数据统计模块,用于对所述人工神经网络正向运算所需的各个类型的数据进行统计分析,得到指数位偏移量offset及指数位的长度EL;
所述浮点数据转换单元,用于根据所述指数位偏移量offset及指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据类型的转换;
浮点数据运算模块,用于在所述浮点数据转换单元将所有所述人工神经网络正向运算中所需的输入、权值和/或偏置数据均采用短位数浮点数据类型表示之后,对所述短位数浮点数据进行人工神经网络正向运算。
其中,所述浮点数据统计模块包括:
数据提取单元,用于提取基于长位数浮点数据的正向运算中各不同类型的数据;
统计单元,用于统计同一类型数据的数据范围及各数据段的数据分布情况;
分析单元,用于根据所述统计单元统计的结果,得出用短位数浮点数据表示各个类型数据时设定的指数位长度EL及指数位偏移offset。
其中,所述用于执行人工神经网络正向运算的装置还包括:
舍入单元,用于在运算结束后,对超出短位数浮点精度范围的数据进行舍入操作。
其中,所述舍入单元为随机舍入单元、四舍五入单元、向上舍入单元、向下舍入单元和截断舍入单元中的任一种;
其中,所述随机舍入单元执行如下操作:
Figure GDA0003213224600000021
其中,y表示随机舍入后的短位数浮点数据,x表示随机舍入前的长位数浮点数据,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL)
Figure GDA0003213224600000022
表示对所述x直接截得短位数浮点数据所得的数,w.p.表示概率,即随机舍入获得的数据y为
Figure GDA0003213224600000023
的概率为
Figure GDA0003213224600000024
Figure GDA0003213224600000025
的概率为
Figure GDA0003213224600000026
所述四舍五入单元执行如下操作:
Figure GDA0003213224600000027
其中,y表示四舍五入后的短位数浮点数据,x表示四舍五入前的长位数浮点数据,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL)
Figure GDA0003213224600000028
为ε的整数倍,其值为小于或等于x的最大数;
所述向上舍入单元执行如下操作:
Figure GDA0003213224600000029
其中,y表示向上 舍入后的短位数浮点数据,x表示向上舍入前的长位数浮点数据,
Figure GDA00032132246000000210
为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL)
所述向下舍入单元执行如下操作:
Figure GDA00032132246000000211
其中,y表示向下舍入后的短位数浮点数据,x表示向下 舍入前的长位数浮点数据,
Figure GDA00032132246000000212
为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL)
所述截断舍入单元执行如下操作:
y=[x];
其中,y表示截断舍入后的短位数浮点数据,x表示截断舍入前的长位数浮点数据,[x]表示对原数据x直接截得短位数浮点数据所得的数。
其中,所述浮点数据转换单元先通过所述舍入单元对待处理的数据进行舍入操作,再根据浮点数据统计模块得到的指数位偏移量offset及指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据类型的转换。
其中,所述装置还包括:
运算缓存单元,用于采用长位数浮点数据类型存储正向运算中加法运算和乘法运算产生的中间运算结果。
作为本发明的另一个方面,本发明还提供了一种执行人工神经网络正向运算的方法包括以下步骤:
获取所述人工神经网络各个层的长位数浮点数据,包括每一层的权值、偏置和/或输入输出值;
对获得的所述长位数浮点数据进行分析,获得存储所述长位数浮点数据所需的指数位偏移量offset及指数位的长度EL;
根据所述指数位偏移量offset及指数位的长度EL,将所有所述长位数浮点数据采用短位数浮点数据类型表示;
对所述短位数浮点数据执行人工神经网络正向运算。
其中,所述对获得的长位数浮点数据进行分析的步骤中,对所述人工神经网络不同层、不同类型的数据分别进行分析,获得相对于所述人工神经网络不同类型的数据的指数位偏移量offset及指数位的长度EL。
其中,所述对短位数浮点数据执行人工神经网络正向运算的步骤中,对于正向运算中的加法运算和乘法运算产生的中间计算结果采用长位数浮点数据类型存储。
其中,在执行完所述人工神经网络正向运算之后,将参与反向运算的权值和偏置数据采用在正向运算时保留的长位数浮点数据类型表示的副本、其余数据由短位数浮点数据类型转换成的长位数浮点数据类型后再进行反向运算。
基于上述技术方案可知,本发明的运算装置和方法具有如下有益效果:可以实现多层人工神经网络的短位数浮点数据类型的正向运算,从而极大地减少了存储参与神经网络运算的数据所需的空间,减少硬件的面积开销,优化了硬件的面积功耗比;训练完成的神经网络模型参数可用于专用神经网络加速器,由于采用了短位数浮点数据类型表示数据,所以可以降低对专用神经网络加速器传输带宽的要求,同时,减少计算带来的功耗。
附图说明
图1为根据本发明一实施例的用于存储数据的短位数浮点数据类型的具体表示方法;
图2为根据本发明一实施例的用于执行人工神经网络正向运算的装置中浮点数据统计模块的示例框图;
图3为根据本发明一实施例的用于执行人工神经网络正向运算的装置中正向运算模块的短位数浮点计算部分的示例框图;
图4为根据本发明一实施例的神经网络正向运算过程的示例框图;
图5示意性示出了根据本发明一实施例的用于执行人工神经网络正向运算装置的运算流程示例框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。通过以下详细描述,本发明的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。
在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不悖离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同附图标记用于相似功能和操作。
本发明公开了一种用于执行人工神经网络正向运算的装置,包括浮点数据统计模块、浮点数据转换单元以及相应的浮点数据运算模块。其中,上述浮点数据统计模块用于统计及计算,以获得在人工神经网络正向运算中存储各个类型数据所需的指数位偏移offset及指数位所需的比特位数;浮点数据转换单元用于根据所述指数位偏移 offset和指数位实现短位数浮点数据类型与长位数浮点数据类型,例如32位浮点数据类型的转换;浮点运算模块用于完成针对短位数浮点数据所需的各类运算。
其中,“长位数浮点数据”表示原来的浮点数据,例如32位浮点数据,也可以是针对标准的64位或者16位浮点数等,这里只是以32位为具体实施例进行说明;“较少位数浮点数据”,又名“短位数浮点数据”,表示相对于原来的浮点数据来说,采用更少的位数来表示的浮点数据。
根据本发明实施例的多层人工神经网络的正向运算,包括两层或者两层以上的多个神经元。对于正向运算中所需的输入神经元、权值、偏置等数据,均采用短位数浮点数据类型表示,并用短位数浮点数据类型参与各个层之间的运算。
图1示出了根据本发明一实施例的用于存储数据的短位数浮点数据类型的具体表示方法。其中,1位bit位用于表示符号,M位用于表示指数部分,N位用于表示有效位部分,由于浮点表示法要求第一位有效数字不能为0,对于二进制来说,只能为1,因此有效位的最高位1可以作为隐藏位,不写入内存,所以实际表示的浮点数有效位数为(N+1)位;相比于32位浮点数据表示形式,本发明采用的短位数浮点数据类型除了占用比特位数更少外,对于神经网络中同一层、同一类型的数据,如第一个卷积层的所有权值数据,还另外设置了两个标志位,其中标志位offset用于记录指数位的初始偏移,实际指数位表示数据=指数位表示数据+偏移量(offset)表示数据,标志位 EL用于记录指数位所占用的比特数M,则有效位所占比特数N=X-1-M。
图2示出了浮点数据统计模块的示例框图。包括数据提取单元21、统计单元22 和分析单元23。该模块的目的是,通过提取采用32位浮点数据类型的神经网络中的所有32位浮点数据,并通过分析这些数据得到神经网络中采用短位数浮点数据类型表示的各个不同类型数据所需的指数位偏移(offset)及指数位长度(EL),以便在之后的短位数浮点正向运算中有更好的效果。其中,数据提取单元21用于提取正向训练中以32位浮点数据类型表示的各个不同类型的数据;统计单元22用于统计同一类型数据的数据范围及在各个数据段的分布情况;分析单元23根据统计单元22统计的结果,得出用短位数浮点数据类型表示各个类型数据应当设定的指数位长度(EL)及指数位偏移(offset),其中,指数位长度(EL)的设定使得可表示的数据范围尽可能包含该类型的所有数据。
图3示出了正向运算模块的短位数浮点数据计算部分的示例框图。包括运算缓存单元31、数据转换单元32、舍入单元33。其中:运算缓存单元31用精度较高的数据类型存储正向运算过程中产生的中间结果,这是由于在正向运算时,加法运算或者乘法运算可能会导致数据范围扩大;运算结束后,对超出短位数浮点数据类型的精度范围的数据,进行舍入操作,接着通过数据转换单元32将运算缓存单元31的数据转换为短位数浮点数据类型表示的数据。
舍入单元33可以完成对超出短位数浮点数据类型的精度范围的数据进行舍入操作,该单元可以为随机舍入单元、四舍五入单元、向上舍入单元、向下舍入单元、截断舍入单元中的任一种,通过不同的舍入单元可以实现对超出短位数浮点数据类型的精度范围数据进行不同的舍入操作。
随机舍入单元执行如下操作:
Figure GDA0003213224600000051
其中,y表示随机舍入后的短位数浮点数据,x表示随机舍入前的32位数浮点数据,ε为上述短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL)
Figure GDA0003213224600000052
表示对原数据x直接截得短位数浮点数据所得的数(类似于对小数做向下取整操作),w.p.表示概率,即随机舍入获得的数据y为
Figure GDA0003213224600000053
的概率为
Figure GDA0003213224600000054
Figure GDA0003213224600000055
的概率为
Figure GDA0003213224600000056
四舍五入单元执行如下操作:
Figure GDA0003213224600000057
其中,y表示四舍五入后的短位数浮点数据,x表示四舍五入前的长位数浮点数据,ε为短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL)
Figure GDA0003213224600000058
为ε的整数倍,其值为小于或等于x的最大数。
向上舍入单元执行如下操作:
Figure GDA0003213224600000059
其中,y表示向上舍入后的短位数浮点数据,x表示向上舍入前的长位数浮点数据,
Figure GDA00032132246000000510
为ε的整数倍,其值为大于或等于x的最小数,ε为短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL)
向下舍入单元执行如下操作:
Figure GDA00032132246000000511
其中,y表示向下舍入后的短位数浮点数据,x表示向下舍入前的长位数浮点数据,
Figure GDA00032132246000000512
为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL)
截断舍入单元执行如下操作:
y=[x];
其中,y表示截断舍入后的短位数浮点数据,x表示截断舍入前的长位数浮点数据,[x]表示对原数据x直接截得短位数浮点数据所得的数。
本发明还公开了一种执行人工神经网络正向运算的方法,具体实施步骤为:
通过已训练好的神经网络32位浮点模型获取神经网络各个层的32位浮点数据,包括每一层的权值、偏置、输入神经元、输出神经元及其它数据。
对不同层,不同类型数据单独进行分析,获得各类型数据采用短位数浮点类型表示时所需要的参数,包括需要多少位作为指数位,多少位作为有效位数,以及指数位所需表示的范围等。
对统计得到的短位数浮点数据类型表示的数据用于神经网络正向运算,即神经网络正向运算中所有数据采用短位数浮点数据类型表示,同时,对神经网络的权值和偏置数据保留一份以32位浮点数据类型表示的副本,然后做正向训练。对于正向运算中,某些运算的中间计算结果的数据范围扩大,如加法运算、乘法运算等,需要用缓存空间存储中间计算结果,中间计算结果采用32位浮点数据类型存储,计算完后再转换为相应的以短位数浮点数据类型表示的数据。32位浮点数据转换为短位数浮点数据的过程需要用舍入方式,其中包括随机舍入、四舍五入舍入、向上舍入、向下舍入和截断舍入等,分别表示如下:
随机舍入的具体操作如下式所示:
Figure GDA0003213224600000061
其中,y表示随机舍入后的短位数浮点数据,x表示随机舍入前的32位浮点数据,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL)
Figure GDA0003213224600000062
表示对x直接截得短位数浮点数据所得的数(类似于对小数做向下取整操作),w.p.表示概率,即随机舍入获得的数据y为
Figure GDA0003213224600000063
的概率为
Figure GDA0003213224600000064
Figure GDA0003213224600000065
的概率为
Figure GDA0003213224600000066
四舍五入的具体操作如下式所示:
Figure GDA0003213224600000067
其中,y表示四舍五入后的短位数浮点数据,x表示四舍五入前的长位数浮点数据,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL)
Figure GDA0003213224600000068
为ε的整数倍,其值为小于或等于x的最大数。向上舍入的具体操作如下式所示:
Figure GDA0003213224600000069
其中,y表示向上舍入后的短位数浮点数据,x表示向上舍入前的长位数浮点数据,
Figure GDA00032132246000000610
为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL)
向下舍入的具体操作如下式所示:
Figure GDA00032132246000000611
其中,y表示向下舍入后的短位数浮点数据,x表示向下舍入前的长位数浮点数据,
Figure GDA0003213224600000071
为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL)
截断舍入的具体操作如下式所示:
y=[x];
其中,y表示截断舍入后的短位数浮点数据,x表示截断舍入前的长位数浮点数据,[x]表示对原数据x直接截得短位数浮点数据所得的数。
正向运算结束后,做反向运算时,需要通过短位数转32位浮点数据转换单元将正向运算中的数据转换为以32位浮点数据类型表示的数据,然后参与反向运算,其中,参与反向运算的权值和偏置数据用正向运算中保留的32位浮点数据类型表示的副本,反向运算结束后,在通过32位转短位数浮点数据转换单元转为以短位数浮点数据类型表示的数据参与之后的正向运算,同时,保留以32位浮点数据类型表示的神经网络的权值和偏置数据为副本,转换过程中需要做舍入操作,操作同正向运算中的舍入操作。
重复进行如上所述的正向及反向运算直到神经网络训练完成。
图4为根据本发明一实施例的单层人工神经网络正向运算流程图。该流程图描述利用本发明的装置和指令集实现的一种单层神经网络正向运算的过程。对于每一层来说,首先对输入神经元向量进行加权求和计算出本层的中间结果向量。该中间结果向量加偏置并激活得到输出神经元向量。将输出神经元向量作为下一层的输入神经元向量。
图5示意性示出了根据本发明一实施例的运算流程示例框图。其中,正向运算模块51包含了图3所示的短位数浮点数据计算部分,正向运算得到的除权值、偏置外的数据在进行反向传播时要先通过短位数-32位浮点转换单元53转换成以32位浮点数据类型表示的数据进行反向传播运算,反向运算模块53进行的反向传播运算结束后,需要通过32位-短位数浮点数据转换单元54转换成以短位数浮点数据类型表示的数据,在转换过程中,需对超出短位数浮点数据类型精度范围的数据进行舍入操作,此处舍入操作由舍入单元55完成,具体过程同图3中的舍入操作。
通过将正向运算的数据采用短位数浮点数据类型表示,充分利用了短位数浮点数据类型的数据范围空间,相对于32位浮点数据类型,极大地减少了存储参与神经网络运算数据所需的空间,优化了硬件的面积功耗比。
前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被承载在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种用于执行人工神经网络正向运算的装置,其特征在于,所述装置包括:
浮点数据转换单元,用于根据指数位偏移量offset及指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据类型的转换;其中,所述神经网络中同一层、同一类型的数据均对应一组所述指数位偏移量offset及指数位的长度EL;
浮点数据运算模块,用于在所述浮点数据转换单元将所有所述人工神经网络正向运算中所需的输入、权值和/或偏置数据均采用短位数浮点数据类型表示之后,对所述短位数浮点数据进行人工神经网络正向运算;所述装置还包括:
浮点数据统计模块,用于对所述人工神经网络正向运算所需的各个类型的数据进行统计分析,得到所述指数位偏移量offset及指数位的长度EL;所述浮点数据统计模块包括:
数据提取单元,用于提取基于长位数浮点数据的正向运算中各不同类型的数据;
统计单元,用于统计同一类型数据的数据范围及各数据段的数据分布情况;
分析单元,用于根据所述统计单元统计的结果,得出用短位数浮点数据表示各个类型数据时设定的指数位长度EL及指数位偏移offset。
2.如权利要求1所述的用于执行人工神经网络正向运算的装置,其特征在于,所述用于执行人工神经网络正向运算的装置还包括:
舍入单元,用于在运算结束后,对超出短位数浮点精度范围的数据进行舍入操作。
3.如权利要求2所述的用于执行人工神经网络正向运算的装置,其特征在于,所述舍入单元为随机舍入单元、四舍五入单元、向上舍入单元、向下舍入单元和截断舍入单元中的任一种;
其中,所述随机舍入单元执行如下操作:
Figure FDA0003213224590000011
其中,y表示随机舍入后的短位数浮点数据,x表示随机舍入前的长位数浮点数据,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL),X表示浮点数据的位数;
Figure FDA0003213224590000012
表示对所述x直接截得短位数浮点数据所得的数,w.p.表示概率,即随机舍入获得的数据y为
Figure FDA0003213224590000013
的概率为
Figure FDA0003213224590000014
Figure FDA0003213224590000015
的概率为
Figure FDA0003213224590000016
所述四舍五入单元执行如下操作:
Figure FDA0003213224590000017
其中,y表示四舍五入后的短位数浮点数据,x表示四舍五入前的长位数浮点数据,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL),X表示浮点数据的位数;
Figure FDA0003213224590000018
为ε的整数倍,其值为小于或等于x的最大数;
所述向上舍入单元执行如下操作:
Figure FDA0003213224590000021
其中,y表示向上舍入后的短位数浮点数据,x表示向上舍入前的长位数浮点数据,
Figure FDA0003213224590000022
为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL);X表示浮点数据的位数;
所述向下舍入单元执行如下操作:
Figure FDA0003213224590000023
其中,y表示向下舍入后的短位数浮点数据,x表示向下舍入前的长位数浮点数据,
Figure FDA0003213224590000024
为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL);X表示浮点数据的位数;
所述截断舍入单元执行如下操作:
y=[x];
其中,y表示截断舍入后的短位数浮点数据,x表示截断舍入前的长位数浮点数据,[x]表示对原数据x直接截得短位数浮点数据所得的数。
4.如权利要求3所述的用于执行人工神经网络正向运算的装置,其特征在于,所述浮点数据转换单元先通过所述舍入单元对待处理的数据进行舍入操作,再根据所述浮点数据统计模块得到的指数位偏移量offset及指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据类型的转换。
5.如权利要求2或3所述的用于执行人工神经网络正向运算的装置,其特征在于,所述装置还包括:
运算缓存单元,用于采用长位数浮点数据类型存储正向运算中加法运算和乘法运算产生的中间运算结果。
6.根据权利要求5所述的用于执行人工神经网络正向运算的装置,其特征在于,所述装置还包括数据转换单元,所述数据转换单元用于:
在所述舍入单元对超出短位数浮点精度范围的数据进行舍入操作后,将所述运算缓存单元中的数据转换为短位数浮点数据类型表示的数据。
7.一种执行人工神经网络正向运算的方法,其特征在于,包括以下步骤:
通过已训练好的神经网络32位浮点模型获取所述人工神经网络各个层的长位数浮点数据,包括每一层的权值、偏置、输入神经元和输出神经元;
对获得的所述长位数浮点数据进行分析,获得存储所述长位数浮点数据采用短位数浮点数据类型表示时所需的指数位偏移量offset及指数位的长度EL;
根据所述指数位偏移量offset及指数位的长度EL,将所有所述长位数浮点数据采用短位数浮点数据类型表示;
对所述短位数浮点数据执行人工神经网络正向运算;所述对获得的长位数浮点数据进行分析的步骤中,对所述人工神经网络不同层、不同类型的数据分别进行分析,获得相对于所述人工神经网络不同类型的数据的指数位偏移量offset及指数位的长度EL。
8.如权利要求7所述的方法,其特征在于,所述对短位数浮点数据执行人工神经网络正向运算的步骤中,对于正向运算中的加法运算和乘法运算产生的中间计算结果采用长位数浮点数据类型存储。
9.如权利要求7所述的方法,其特征在于,在执行完所述人工神经网络正向运算之后,将参与反向运算的权值和偏置数据采用在正向运算时保留的长位数浮点数据类型表示的副本,其余数据由短位数浮点数据类型转换成的长位数浮点数据类型后再进行反向运算。
10.如权利要求7-9任一项所述的方法,其特征在于,将所述长位数浮点数据转换为短位数浮点数据的过程中需要对所述长位数浮点数据进行舍入操作,
其中所述舍入操作为随机舍入、四舍五入舍入、向上舍入、向下舍入和截断舍入中的任一种;
其中,所述随机舍入执行如下操作:
Figure FDA0003213224590000031
其中,y表示随机舍入后的短位数浮点数据,x表示随机舍入前的长位数浮点数据,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL),X表示浮点数据的位数;
Figure FDA0003213224590000032
表示对所述x直接截得短位数浮点数据所得的数,w.p.表示概率,即随机舍入获得的数据y为
Figure FDA0003213224590000033
的概率为
Figure FDA0003213224590000034
Figure FDA0003213224590000035
的概率为
Figure FDA0003213224590000036
所述四舍五入舍入执行如下操作:
Figure FDA0003213224590000037
其中,y表示四舍五入后的短位数浮点数据,x表示四舍五入前的长位数浮点数据,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL),X表示浮点数据的位数;
Figure FDA0003213224590000038
为ε的整数倍,其值为小于或等于x的最大数;
所述向上舍入执行如下操作:
Figure FDA0003213224590000039
其中,y表示向上舍入后的短位数浮点数据,x表示向上舍入前的长位数浮点数据,
Figure FDA00032132245900000310
为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL);X表示浮点数据的位数;
所述向下舍入执行如下操作:
Figure FDA00032132245900000311
其中,y表示向下舍入后的短位数浮点数据,x表示向下舍入前的长位数浮点数据,
Figure FDA00032132245900000312
为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数据类型所能表示的最小正整数,即2offset-(X-1-EL);X表示浮点数据的位数;
所述截断舍入执行如下操作:
y=[x];
其中,y表示截断舍入后的短位数浮点数据,x表示截断舍入前的长位数浮点数据,[x]表示对原数据x直接截得短位数浮点数据所得的数。
CN201910154720.6A 2016-04-28 2016-04-28 用于执行人工神经网络正向运算的装置和方法 Active CN109858623B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910154720.6A CN109858623B (zh) 2016-04-28 2016-04-28 用于执行人工神经网络正向运算的装置和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610274809.2A CN107340993B (zh) 2016-04-28 2016-04-28 运算装置和方法
CN201910154720.6A CN109858623B (zh) 2016-04-28 2016-04-28 用于执行人工神经网络正向运算的装置和方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201610274809.2A Division CN107340993B (zh) 2016-04-28 2016-04-28 运算装置和方法

Publications (2)

Publication Number Publication Date
CN109858623A CN109858623A (zh) 2019-06-07
CN109858623B true CN109858623B (zh) 2021-10-15

Family

ID=60160590

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910154720.6A Active CN109858623B (zh) 2016-04-28 2016-04-28 用于执行人工神经网络正向运算的装置和方法
CN201610274809.2A Active CN107340993B (zh) 2016-04-28 2016-04-28 运算装置和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201610274809.2A Active CN107340993B (zh) 2016-04-28 2016-04-28 运算装置和方法

Country Status (4)

Country Link
US (2) US10936284B2 (zh)
EP (1) EP3451165B1 (zh)
CN (2) CN109858623B (zh)
WO (1) WO2017185414A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109858623B (zh) 2016-04-28 2021-10-15 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
WO2019114842A1 (zh) * 2017-12-14 2019-06-20 北京中科寒武纪科技有限公司 一种集成电路芯片装置
CN109978157B (zh) * 2017-12-28 2020-06-02 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109978147A (zh) * 2017-12-27 2019-07-05 北京中科寒武纪科技有限公司 集成电路芯片装置及相关产品
CN109978148B (zh) * 2017-12-28 2020-06-23 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109993284B (zh) * 2017-12-29 2020-08-04 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN110163360B (zh) * 2018-02-13 2021-06-25 上海寒武纪信息科技有限公司 一种计算装置及方法
CN108345938A (zh) * 2018-03-01 2018-07-31 中国科学院计算技术研究所 一种包括比特转换装置的神经网络处理器及其方法
US11562208B2 (en) * 2018-05-17 2023-01-24 Qualcomm Incorporated Continuous relaxation of quantization for discretized deep neural networks
US20200082269A1 (en) * 2018-09-12 2020-03-12 Nvidia Corporation Memory efficient neural networks
US20200210838A1 (en) * 2018-12-31 2020-07-02 Microsoft Technology Licensing, Llc Neural network activation compression with narrow block floating-point
US12045724B2 (en) 2018-12-31 2024-07-23 Microsoft Technology Licensing, Llc Neural network activation compression with outlier block floating-point
US11562247B2 (en) 2019-01-24 2023-01-24 Microsoft Technology Licensing, Llc Neural network activation compression with non-uniform mantissas
CN111222629B (zh) * 2019-12-31 2023-05-05 暗物智能科技(广州)有限公司 一种基于自适应批规范化的神经网络模型剪枝方法及系统
TW202141290A (zh) 2020-01-07 2021-11-01 韓商愛思開海力士有限公司 記憶體中處理(pim)系統和pim系統的操作方法
US20220229633A1 (en) 2020-01-07 2022-07-21 SK Hynix Inc. Multiplication and accumulation(mac) operator and processing-in-memory (pim) device including the mac operator
US11663000B2 (en) 2020-01-07 2023-05-30 SK Hynix Inc. Multiplication and accumulation(MAC) operator and processing-in-memory (PIM) device including the MAC operator
CN111738427B (zh) * 2020-08-14 2020-12-29 电子科技大学 一种神经网络的运算电路
US11947828B2 (en) * 2020-08-27 2024-04-02 Taiwan Semiconductor Manufacturing Company, Ltd. Memory device
CN116235124A (zh) * 2020-10-30 2023-06-06 株式会社小松制作所 数据发送系统、作业机械以及作业机械的数据发送方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101685383A (zh) * 2008-09-28 2010-03-31 杨高祥 计算器、基于直接对阶的自由精度浮点数的运算电路
CN102314697A (zh) * 2011-07-20 2012-01-11 张行清 基于数据类型的数值型数据压缩及解压缩方法
CN102981854A (zh) * 2012-11-16 2013-03-20 天津市天祥世联网络科技有限公司 基于浮点数运算内联函数库的神经网络优化方法
CN104166535A (zh) * 2013-07-19 2014-11-26 郑州宇通客车股份有限公司 定点处理器及其防溢方法
CN105468331A (zh) * 2014-09-26 2016-04-06 Arm有限公司 独立的浮点转换单元

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627050B2 (en) * 2007-10-08 2014-01-07 International Business Machines Corporation Executing perform floating point operation instructions
CN101419245B (zh) 2008-12-16 2011-02-16 北京市产品质量监督检验所 数字音频信号标准测试源生成方法
CN101692202B (zh) * 2009-09-27 2011-12-28 龙芯中科技术有限公司 一种64比特浮点乘加器及其浮点运算流水节拍处理方法
US8732679B2 (en) * 2010-03-16 2014-05-20 Qualcomm Incorporated Loop transformation for computer compiler optimization
US8745111B2 (en) * 2010-11-16 2014-06-03 Apple Inc. Methods and apparatuses for converting floating point representations
CN102122240B (zh) * 2011-01-20 2013-04-17 东莞市泰斗微电子科技有限公司 一种数据类型转换电路
GB2488322B (en) * 2011-02-22 2017-09-20 Advanced Risc Mach Ltd Number format pre-conversion instructions
JP5734717B2 (ja) * 2011-03-24 2015-06-17 セミコンダクター・コンポーネンツ・インダストリーズ・リミテッド・ライアビリティ・カンパニー 浮動小数点数のビット長変換回路およびそれを用いた振動補正制御回路
CN103838844B (zh) * 2014-03-03 2018-01-19 珠海市君天电子科技有限公司 一种键值对数据存储、传输方法及装置
CN104679719B (zh) * 2015-03-17 2017-11-10 成都金本华科技股份有限公司 一种基于fpga的浮点运算方法
CN109858623B (zh) 2016-04-28 2021-10-15 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
CN109934331B (zh) 2016-04-29 2020-06-19 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101685383A (zh) * 2008-09-28 2010-03-31 杨高祥 计算器、基于直接对阶的自由精度浮点数的运算电路
CN102314697A (zh) * 2011-07-20 2012-01-11 张行清 基于数据类型的数值型数据压缩及解压缩方法
CN102981854A (zh) * 2012-11-16 2013-03-20 天津市天祥世联网络科技有限公司 基于浮点数运算内联函数库的神经网络优化方法
CN104166535A (zh) * 2013-07-19 2014-11-26 郑州宇通客车股份有限公司 定点处理器及其防溢方法
CN105468331A (zh) * 2014-09-26 2016-04-06 Arm有限公司 独立的浮点转换单元

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TRAINING DEEP NEURAL NETWORKS WITH LOW PRECISION MULTIPLICATIONS;Matthieu Courbariaux等;《ICLR 2015》;20150923;第1-10页 *

Also Published As

Publication number Publication date
WO2017185414A1 (zh) 2017-11-02
US20190079727A1 (en) 2019-03-14
US20210132904A1 (en) 2021-05-06
CN109858623A (zh) 2019-06-07
CN107340993B (zh) 2021-07-16
EP3451165B1 (en) 2022-07-27
EP3451165A4 (en) 2019-12-25
US10936284B2 (en) 2021-03-02
CN107340993A (zh) 2017-11-10
US11797269B2 (en) 2023-10-24
EP3451165A1 (en) 2019-03-06

Similar Documents

Publication Publication Date Title
CN109858623B (zh) 用于执行人工神经网络正向运算的装置和方法
CN109934331B (zh) 用于执行人工神经网络正向运算的装置和方法
US10096134B2 (en) Data compaction and memory bandwidth reduction for sparse neural networks
CN111684473B (zh) 提高神经网络阵列的性能
CN109214509B (zh) 一种用于深度神经网络高速实时量化结构和运算实现方法
CN107729989B (zh) 一种用于执行人工神经网络正向运算的装置及方法
WO2022166199A1 (zh) 量子纠错解码系统、方法、容错量子纠错系统及芯片
US20190332945A1 (en) Apparatus and method for compression coding for artificial neural network
CN110163358B (zh) 一种计算装置及方法
US20210349692A1 (en) Multiplier and multiplication method
CN110276447B (zh) 一种计算装置及方法
Chervyakov et al. Residue number system-based solution for reducing the hardware cost of a convolutional neural network
KR20220114519A (ko) 양자 오류 정정 디코딩 시스템 및 방법, 내결함성 양자 오류 정정 시스템 및 칩
CN110555516A (zh) 基于FPGA的YOLOv2-tiny神经网络低延时硬件加速器实现方法
CN112561050B (zh) 一种神经网络模型训练方法及装置
CN113902109A (zh) 一种神经网络规则化位串行计算的压缩方法及装置
CN113283591A (zh) 基于Winograd算法和近似乘法器的高效卷积实现方法及装置
US11297127B2 (en) Information processing system and control method of information processing system
CN109416757B (zh) 用于处理数值数据的方法、设备和计算机可读存储介质
CN110321816B (zh) 图像识别方法及装置
CN116151340B (zh) 并行随机计算神经网络系统及其硬件压缩方法、系统
EP4318315A1 (en) A computer implemented method for transforming a pre-trained neural network and a device therefor
CN117993452A (zh) 一种基于深度学习的ai加速器混合量化方法及硬件设计
CN117669497A (zh) 基于渐进校准和激活放松的文生图模型量化方法及产品
CN114548415A (zh) 基于neqr表达的量子fast角点检测方法

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
CB02 Change of applicant information

Address after: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences

Applicant after: Zhongke Cambrian Technology Co., Ltd

Address before: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences

Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant