CN110673802B - 数据存储方法、装置、芯片、电子设备和板卡 - Google Patents
数据存储方法、装置、芯片、电子设备和板卡 Download PDFInfo
- Publication number
- CN110673802B CN110673802B CN201910944353.XA CN201910944353A CN110673802B CN 110673802 B CN110673802 B CN 110673802B CN 201910944353 A CN201910944353 A CN 201910944353A CN 110673802 B CN110673802 B CN 110673802B
- Authority
- CN
- China
- Prior art keywords
- data
- bit width
- neuron
- quantized
- quantization
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Semiconductor Memories (AREA)
Abstract
本申请涉及一种数据存储方法、装置、芯片、电子设备和板卡。该方法包括:获取目标网络层的量化神经元位宽和量化权值位宽;根据所述量化神经元位宽和所述量化权值位宽确定存储数据位宽;按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储。采用本方法能够降低数据存储的复杂性,提高数据处理的效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据存储方法、装置、芯片、电子设备和板卡。
背景技术
通常在神经网络模型进行数据处理的过程中,采用16位定点格式表示深度学习算法的神经元和权值数据,以此来节省数据带宽和存储器容量。
当神经网络模型是可变位宽的模型时,每个网络层的神经元和权值的位宽可能不同,因此按照传统的方式将每个网络层按照各自原有的数据位宽依次进行存储,则运算单元在读取一组神经元时,可能是从中央叶结构(central tile)的一行中的任意位置开始,或者运算单元进行一次计算的时候,读取的神经元数据可能分布在central tile的两行,使得计算的复杂性较高,造成运算器的资源浪费,降低了资源利用率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够降低计算复杂度的数据存储方法、装置、芯片、电子设备和板卡。
第一方面,本申请实施例提供一种数据存储方法,所述方法包括:
获取目标网络层的量化神经元位宽和量化权值位宽;其中,所述量化神经元位宽为神经元数据经过量化后的数据位宽,所述量化权值位宽为权值数据经过量化后的数据位宽;其中,所述神经元数据包括语音数据、文本数据和图像数据中的至少一种;
在所述量化神经元位宽和所述量化权值位宽中选择数据位宽大的作为目标数据位宽;
根据所述目标数据位宽,从预设的待选位宽集合中确定存储数据位宽;其中,所述待选位宽集合中包括多个待选位宽;
按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储。
在其中一个实施例中,所述根据所述目标数据位宽,从预设的待选位宽集合中确定存储数据位宽,包括:
将所述待选位宽集合中的每个待选位宽与所述目标数据位宽进行比较,将大于或等于所述目标数据位宽的所述待选位宽作为第一待选位宽集合;
将所述第一待选位宽集合中最小的所述待选位宽作为所述存储数据位宽。
在其中一个实施例中,所述待选位宽集合包括:2比特、4比特、8比特和16比特。
在其中一个实施例中,所述按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储,包括:
当所述存储数据位宽为16比特时,将量化后的所述神经元数据和量化后的所述权值数据按照整行对齐的方式进行存储。
在其中一个实施例中,所述按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储,包括:
当所述存储数据位宽为8比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/2对齐的方式进行存储。
在其中一个实施例中,所述按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储,包括:
当所述存储数据位宽为4比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/4对齐的方式进行存储。
在其中一个实施例中,所述按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储,包括:
当所述存储数据位宽为2比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/8对齐的方式进行存储。
第二方面,本申请实施例提供一种数据存储装置,所述装置包括:
获取模块,用于获取目标网络层的量化神经元位宽和量化权值位宽;其中,所述量化神经元位宽为神经元数据经过量化后的数据位宽,所述量化权值位宽为权值数据经过量化后的数据位宽;其中,所述神经元数据包括语音数据、文本数据和图像数据中的至少一种;
处理模块,用于在所述量化神经元位宽和所述量化权值位宽中选择数据位宽大的作为目标数据位宽,并根据所述目标数据位宽,从预设的待选位宽集合中确定存储数据位宽;其中,所述待选位宽集合中包括多个待选位宽;
存储模块,用于按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储。
第三方面,本申请实施例提供一种神经网络芯片,所述芯片包括如上述实施例中所述的数据存储装置。
第四方面,本申请实施例提供一种电子设备,所述电子设备包括上述实施例中所述的芯片。
第五方面,本申请实施例提供一种板卡,所述板卡包括:存储器件、接收装置和控制器件以及如上述实施例所述的芯片;
其中,所述芯片与所述存储器件、所述控制器件以及所述接收装置分别连接;
所述存储器件,用于存储数据;
所述接收装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
在其中一个实施例中,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接收装置为:标准PCIE接口。
上述数据存储方法、装置、芯片、电子设备和板卡,通过处理器获取目标网络层的量化神经元位宽和量化权值位宽;并在量化神经元位宽和量化权值位宽中选择数据位宽大的作为目标数据位宽,然后根据目标数据位宽,从预设的包括多个待选位宽的待选位宽集合中确定出能够覆盖数据存储需求的存储数据位宽,最后按照存储数据位宽对量化后的神经元数据和量化后的权值数据进行存储,从而实现数据的正确存储的基础上,最大化的减少存储空间,极大程度地节约了存储空间,能够使得运算单元进行一次计算的时候,相比按照各自原有的数据位宽依次进行存储的方式,该方法读取的神经元数据的复杂性大大降低,因此大大提高了数据处理的效率,节约了运算资源且提高了资源利用率。
附图说明
图1为一个实施例中计算机设备的内部结构图;
图2为一个实施例提供的数据存储方法的流程示意图;
图3为另一个实施例提供的数据存储方法的流程示意图;
图4为一个实施例提供的数据存储示意图;
图5为一个实施例提供的数据存储装置的结构示意图;
图6为一个实施例提供的神经网络芯片的结构示意图;
图7为一个实施例提供的数据打包单元的结构示意图;
图8为一个实施例提供的数据解压单元的结构示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了更清楚的表述本披露,现将本披露中所使用的部分技术术语统一描述如下:
浮点数:IEEE浮点标准用V=(-1)∧sign*mantissa*2∧E的形式表示一个数。其中,sign为符号位,0表示正数,1代表负数;E表示阶码,通常为整数;mantissa表示尾数,mantissa是一个二进制小数。
定点数:由共享指数(exponent)、符号位(sign)、尾数(mantissa)三部分构成。其中,共享指数是说指数在需要量化的一个浮点数集合内共享;符号位标志了定点数的正负。尾数决定了定点数的有效数字位数,即精度。
量化:将占用较多内存空间的浮点数转换成占用较少内存空间的定点数的过程,高精度数转换为定点数的过程就会在精度上引起一定的损失。
本申请实施例提供的数据存储方法,可以应用于如图1所示的计算机设备,该计算机设备可以包括处理器。可选地,该处理器可以为人工智能处理器,本申请实施例对处理器的类型并不做限定。需要说明的是,本申请实施例提供的数据存储方法,其执行主体可以包含数据存储装置的处理器,也可以是包含处理器的主板,还可以是包含上述主板的电子设备。下述方法实施例中,均以执行主体是处理器为例来进行说明。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
下面以具体的实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为一个实施例所提供的数据存储方法。该方法应用于包括处理器的计算平台中,本实施例涉及的是处理器按照网络层的量化神经元位宽和量化权值位宽,确定出能够覆盖数据存储需求的合理的存储数据位宽,并以此进行数据存储的具体过程。如图2所示,该方法包括:
S11、获取目标网络层的量化神经元位宽和量化权值位宽;其中,所述量化神经元位宽为神经元数据经过量化后的数据位宽,所述量化权值位宽为权值数据经过量化后的数据位宽;其中,所述神经元数据包括语音数据、文本数据和图像数据中的至少一种。
具体的,处理器能够获取当前的目标网络层的量化神经元位宽和量化权值位宽,可以是处理器直接读取的目标网络层的量化神经元位宽和量化权值位宽。需要说明的是,量化神经元位宽为将目标网络层中为浮点数形式的神经元数据,如语音数据、文本数据或图像数据进行量化,得到量化后的定点数形式的数据位宽,量化权值位宽为将目标网络层中权值数据经过量化后的数据位宽。
S12、在所述量化神经元位宽和所述量化权值位宽中选择数据位宽大的作为目标数据位宽。
具体的,处理器将量化神经元位宽和量化权值位宽进行大小比较,并从中选择大的数据位宽的作为目标数据位宽。当量化神经元位宽大于量化权值位宽时,则处理器将量化神经元位宽作为目标数据位宽;当量化神经元位宽小于量化权值位宽时,则处理器将量化权值位宽作为目标数据位宽;当量化神经元位宽等于量化权值位宽时,则处理器可以将量化神经元位宽或量化权值位宽作为目标数据位宽。
S13、根据所述目标数据位宽,从预设的待选位宽集合中确定存储数据位宽;其中,所述待选位宽集合中包括多个待选位宽。
需要说明的是,待选位宽集合中包括多个大小不等的待选位宽。具体的,处理器根据目标数据位宽,在预设的待选位宽集合中进行筛选,例如可以选择大于或等于目标数据位宽的任意一个待选位宽,或者选择大于或等于目标数据位宽的最小的待选位宽,从而选出能够满足目标数据位宽的处理要求的一个待选位宽作为存储数据位宽。
S14、按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储。
具体的,处理器按照存储数据位宽,对量化后的神经元数据和量化后的权值数据进行存储。可选地,处理器可以按照存储数据位宽,将量化后的神经元数据和量化后的权值数据,按照一定的对齐规则进行存储。
可选地,该步骤S14的可能的实现方式可以参见下述实施例中的描述,此处暂不赘述。
本实施例中,处理器获取目标网络层的量化神经元位宽和量化权值位宽;并在量化神经元位宽和量化权值位宽中选择数据位宽大的作为目标数据位宽,然后根据目标数据位宽,从预设的包括多个待选位宽的待选位宽集合中确定出能够覆盖数据存储需求的存储数据位宽,最后按照存储数据位宽对量化后的神经元数据和量化后的权值数据进行存储,从而实现数据的正确存储的基础上,最大化的减少存储空间,极大程度地节约了存储空间,能够使得运算单元进行一次计算的时候,相比按照各自原有的数据位宽依次进行存储的方式,该方法读取的神经元数据的复杂性大大降低,因此大大提高了数据处理的效率,节约了运算资源且提高了资源利用率。
可选地,在上述图2的实施例的基础上,步骤S13的一种可能的方式包括:将所述待选位宽集合中的每个待选位宽与所述目标数据位宽进行比较,将大于或等于所述目标数据位宽的所述待选位宽作为第一待选位宽集合;将所述第一待选位宽集合中最小的所述待选位宽作为所述存储数据位宽。
具体的,处理器将待选位宽集合中的每个待选位宽与所述目标数据位宽进行比较,选出大于目标数据位宽的至少一个待选位宽,形成第一待选位宽集合,此时该第一待选位宽集合中的数据均能够满足数据存储的需求。然后处理器将第一待选位宽集合中最小的待选位宽,作为存储数据位宽。例如,当待选位宽集合中包括的待选位宽包括:2比特、4比特、8比特和16比特的时候,目标数据位宽为8比特,则处理器可以首先从待选位宽集合中选出8比特和16比特两种待选位宽,并形成第一待选位宽集合。然后处理器将第一待选位宽集合,即8比特和16比特中最小的8比特,作为存储数据位宽。本实施例中,由于处理器能够将待选位宽集合中的每个待选位宽与目标数据位宽进行比较,将大于或等于目标数据位宽的待选位宽作为第一待选位宽集合,然后将第一待选位宽集合中最小的待选位宽作为存储数据位宽,因而能够实现数据的正确存储的基础上,以较低数据位宽进行数据存储,进而最大化的节约了存储空间。
在一个实施例中,所述待选位宽集合包括:2比特、4比特、8比特和16比特。本实施例中,通过设置待选位宽集合包括:2比特、4比特、8比特和16比特,使得数据的存储的复杂性大大降低的同时,能够满足不同的数据位宽的合理存储,因此实现了计算复杂度和运算量之间更好的平衡。
在一个实施例中,步骤S14的一种可能的实现方式还可以参见图3所示,包括:
S14A、当所述存储数据位宽为16比特时,将量化后的所述神经元数据和量化后的所述权值数据按照整行对齐的方式进行存储。
可选地,步骤S14的另一种可能的实现方式可以包括:
S14B、当所述存储数据位宽为8比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/2对齐的方式进行存储。
可选地,步骤S14的又一种可能的实现方式可以包括:
S14C、当所述存储数据位宽为4比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/4对齐的方式进行存储。
可选地,步骤S14的又一种可能的实现方式可以包括:
S14D、当所述存储数据位宽为2比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/8对齐的方式进行存储。
具体的,上述数据存储的方式可以参见图4所示的数据存储示意图。采用图3实施例所示的方法,将上述量化后的神经元数据和量化后的权值数据按照对应的方式进行对齐并存储,使得数据的存储大大简化,进一步节约了存储资源和运算资源。
上述实施例所描述的数据存储方法中,由于深度学习网络神经元数据和权值数据的量化位宽可以为1-16比特的任意值,为了简化数据存储和数据处理,可以设置存储器中存储位宽和神经运算单元(Neural Functional Unit,NFU)支持2比特、4比特、8比特和16比特四种情况。神经元数据或者权值数据进行量化后,处理器选择比数据量化位宽大且硬件支持的最近位宽作为数据存储位宽。基于此,存储器的一行能够实现存储1组、2组、4组或8组神经元数据或权值数据,每组数据均按照整行对齐进行存储。需要说明的是,在卷积层或者全连接层进行运算时,central tile或者SB在一个时钟周期能够分别读取N组神经元数据和权值数据,并将其输入NFU进行计算,其中,N可以为16与运算器操作数据位宽的比值。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种数据存储装置,包括:
获取模块100,用于获取目标网络层的量化神经元位宽和量化权值位宽;其中,所述量化神经元位宽为神经元数据经过量化后的数据位宽,所述量化权值位宽为权值数据经过量化后的数据位宽;其中,所述神经元数据包括语音数据、文本数据和图像数据中的至少一种。
处理模块200,用于在所述量化神经元位宽和所述量化权值位宽中选择数据位宽大的作为目标数据位宽,并根据所述目标数据位宽,从预设的待选位宽集合中确定存储数据位宽;其中,所述待选位宽集合中包括多个待选位宽。
存储模块300,用于按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储。
在一个实施例中,处理模块200,具体用于将所述待选位宽集合中的每个待选位宽与所述目标数据位宽进行比较,将大于所述目标数据位宽的所述待选位宽作为第一待选位宽集合,并将所述第一待选位宽集合中最小的所述待选位宽作为所述存储数据位宽。
在一个实施例中,所述待选位宽集合包括:2比特、4比特、8比特和16比特。
在一个实施例中,处理模块200,具体用于当所述存储数据位宽为16比特时,将量化后的所述神经元数据和量化后的所述权值数据按照整行对齐的方式进行存储。
在一个实施例中,处理模块200,具体用于当所述存储数据位宽为8比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/2对齐的方式进行存储。
在一个实施例中,处理模块200,具体用于当所述存储数据位宽为4比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/4对齐的方式进行存储。
在一个实施例中,处理模块200,具体用于当所述存储数据位宽为2比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/8对齐的方式进行存储。
关于数据存储装置的具体限定可以参见上文中对于数据存储方法的限定,在此不再赘述。上述数据存储装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,还提供了一种深度学习处理器,可以包括上述任意实施例中的数据存储装置,用于实现以下步骤:
获取目标网络层的量化神经元位宽和量化权值位宽;其中,所述量化神经元位宽为神经元数据经过量化后的数据位宽,所述量化权值位宽为权值数据经过量化后的数据位宽;其中,所述神经元数据包括语音数据、文本数据和图像数据中的至少一种;
在所述量化神经元位宽和所述量化权值位宽中选择数据位宽大的作为目标数据位宽;
根据所述目标数据位宽,从预设的待选位宽集合中确定存储数据位宽;其中,所述待选位宽集合中包括多个待选位宽;
按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储。
在一个实施例中,所述处理器具体用于实现以下步骤:
将所述待选位宽集合中的每个待选位宽与所述目标数据位宽进行比较,将大于所述目标数据位宽的所述待选位宽作为第一待选位宽集合;
将所述第一待选位宽集合中最小的所述待选位宽作为所述存储数据位宽。
在一个实施例中,所述待选位宽集合包括:2比特、4比特、8比特和16比特。
在一个实施例中,所述处理器具体用于实现以下步骤:
当所述存储数据位宽为16比特时,将量化后的所述神经元数据和量化后的所述权值数据按照整行对齐的方式进行存储。
在一个实施例中,所述处理器具体用于实现以下步骤:
当所述存储数据位宽为8比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/2对齐的方式进行存储。
在一个实施例中,所述处理器具体用于实现以下步骤:
当所述存储数据位宽为4比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/4对齐的方式进行存储。
在一个实施例中,所述处理器具体用于实现以下步骤:
当所述存储数据位宽为2比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/8对齐的方式进行存储。
在一个实施例中,还提供了一种神经网络芯片,所述芯片包括上述任一实施例中的数据存储装置。
在一个实施例中,还提供了一种电子设备,所述电子设备包括上述实施例中的所述芯片。
电子设备可以为数据处理器、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
在一个实施例中,还提供了一种板卡,所述板卡可以如图6所示,包括:存储器件390、接收装置391和控制器件392以及上述实施例中的芯片389;
其中,所述芯片389与所述存储器件390、所述控制器件392以及所述接收装置分别连接;
所述存储器件,用于存储数据;
所述接收装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
上述板卡除了包括上述芯片389以外,还可以包括其它的配套部件,该配套部件包括但不限于:存储器件390、接收装置391和控制器件392;
所述存储器件与所述芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
在一个实施例中,所述存储器件包括:多组存储单元,每一组所述存储单元与所述芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接收装置为:标准PCIE接口。
所述接收装置与所述芯片电连接。所述接收装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接收装置可以为标准快速外部设备互连接口。比如,待处理的数据由服务器通过标准快速外部设备互连接口传递至所述芯片,实现数据转移。优选的,当采用快速外部设备互连3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接收装置还可以是其它的接口,本申请并不限制上述其它的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接收装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
本申请还涉及一种数据存取装置,包括数据打包单元和数据解压单元;
所述数据打包单元,用于在对待存储数据进行存储时,将所述待存储数据进行数据位宽转换,并按照转换后的数据位宽对所述待存储数据进行存储;
所述数据解压单元,用于将在对待读取数据进行取用时,选择所述待读取数据的低比特位并进行符号位扩展,得到扩展之后的待运算数据。
在一个实施例中,所述数据打包单元还可以如图7所示,包括:多个数据转换子单元410、移位器420和第一缓存寄存器430;
每个所述数据转换子单元410,用于按照输出神经元数据的初始数据位宽确定目标数据位宽,并按照所述目标数据位宽将所述输出神经元数据进行输出;
所述移位器420,用于将所述输出神经元数据进行移位和拼接,得到综合数据;
所述第一缓存寄存430,用于在所述综合数据全部有效时,将所述综合数据写入输出缓存单元。
在一个实施例中,所述数据转换子单元410,用于在所述输出神经元数据发生溢出时,对所述输出神经元进行溢出处理并输出。
在一个实施例中,所述数据转换子单元410,用于在所述输出神经元数据未发生溢出时,将所述输出神经元数据按照所述初始数据位宽或少于所述初始数据位宽的数据位宽进行符号位扩展后输出。
在一个实施例中,所述数据解压单元,可以如图8所示,包括:第二缓存寄存器510、选择器520和多个数据拓展子单元530;
所述第二缓存寄存器510,用于获取互联总线广播的所述待存储数据;
所述选择器520,用于将所述第二缓存寄存器510的低16*M比特的所述待存储数据输入多个所述数据拓展子单元530;
每个所述数据拓展子单元530,用于将输入的M比特数据按照符号位进行扩展并输入神经运算单元以进行运算。
由上述运算器操作的数据位宽是由量化后的神经元数据和量化后的权值数据的较大值确定的,因此,NFU进行运算时神经元数据或权值数据的单个分量的数据位宽可能会小于乘法器阵列中的乘法器运算数据位宽。如果NFU运算数据位宽是N比特,神经元的数据存储位宽是M比特,且N大于M,权值数据的存储位宽为N。处理器采用数据解压单元,将互联总线广播到叶结构的神经元向量中M比特的单个神经元转化为N比特的单个神经元。
上述数据存储装置中的数据解压单元中的第二缓存寄存器可以为一组256位宽的寄存器,用来缓存互联总线广播到叶结构的权值数据。当处理器只支持2比特、4比特、8比特和16比特的存储数据或运算数据时,M和M满足关系式N=k*M,则神经元数据或者权值数据可以被解压缩成多和数据用于计算。上述选择器可以有16个八选一的合路器(mux)组成的选择器,实现对第二缓存寄存器的低16*M比特输入15个数据拓展单元。每个数据拓展单元将输入的M比特的数据按照符号位拓展成N比特的数据后,输入NFU进行运算。需要说明的是,选择器的选择控制信号由k生成。数据解压单元解压16*M比特数据输入NFU后,数据缓存寄存器右移16*M比特,或者接收下一组256比特的神经元数据缓存至寄存器。由此可以实现叶结构每16/M个时钟周期处理完central tile广播的256比特神经元。该数据解压单元可以包括用于解压神经元数据的单元,也可以包括用于解压权值数据的单元。
上述数据存储装置中的数据打包单元的执行逻辑与数据压缩单元相反,如果输出神经元的数据位宽为P比特,NFU在加法阶段的累加和的数据位宽为固定的Q比特,且Q大于P。P比特的输出神经元数据能够表示的数据范围为A=[-2P-1,2P-1],累加和能够表示的数据范围为B=[-2AQ-1,2Q-1]。当NFU将Q比特的累加和转换为P比特的输出神经元数据时,可能存在溢出的情况。因此,数据打包单元的格式转换单元会在数据溢出时进行溢出处理;当不存在溢出的情况是,则直接将Q比特累加和所得到的P比特或者更少比特的数据进行符号位扩展后输出。完成数据转换之后,数据打包单元将16个P位元素进行移位和拼接,并缓存至256比特的缓存寄存器中。缓存寄存器中的256比特输出结果全部有效后,则将数据写入输出缓存单元NBout,NFU每次输出的运算结果可以无需立即写入NBout,然后通过互联总线返回central tile,处理器对互联总线返回的运算结果的单款需求为P/16。可以理解,输出神经元量化的位宽越窄,卷积核或全连接层规模的要求越低。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的电路组合,但是本领域技术人员应该知悉,本申请并不受所描述的电路组合方式的限制,因为依据本申请,某些电路可以采用其它方式或者结构实现。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的器件和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据存储方法,其特征在于,应用于包括处理器的计算平台中,所述方法包括:
获取目标网络层的量化神经元位宽和量化权值位宽;其中,所述量化神经元位宽为神经元数据经过量化后的数据位宽,所述量化权值位宽为权值数据经过量化后的数据位宽;其中,所述神经元数据包括语音数据、文本数据和图像数据中的至少一种;
在所述量化神经元位宽和所述量化权值位宽中选择数据位宽大的作为目标数据位宽;
将待选位宽集合中的每个待选位宽与所述目标数据位宽进行比较,将大于或等于所述目标数据位宽的所述待选位宽作为第一待选位宽集合;其中,所述待选位宽集合中包括多个待选位宽;
将所述第一待选位宽集合中最小的所述待选位宽作为所述存储数据位宽;
按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储。
2.根据权利要求1所述的方法,其特征在于,所述待选位宽集合包括:2比特、4比特、8比特和16比特。
3.根据权利要求2所述的方法,其特征在于,所述按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储,包括:
当所述存储数据位宽为16比特时,将量化后的所述神经元数据和量化后的所述权值数据按照整行对齐的方式进行存储。
4.根据权利要求2所述的方法,其特征在于,所述按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储,包括:
当所述存储数据位宽为8比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/2对齐的方式进行存储。
5.根据权利要求2所述的方法,其特征在于,所述按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储,包括:
当所述存储数据位宽为4比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/4对齐的方式进行存储。
6.根据权利要求2所述的方法,其特征在于,所述按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储,包括:
当所述存储数据位宽为2比特时,将量化后的所述神经元数据和量化后的所述权值数据按照1/8对齐的方式进行存储。
7.一种数据存储装置,其特征在于,所述装置包括:
获取模块,用于获取目标网络层的量化神经元位宽和量化权值位宽;其中,所述量化神经元位宽为神经元数据经过量化后的数据位宽,所述量化权值位宽为权值数据经过量化后的数据位宽;其中,所述神经元数据包括语音数据、文本数据和图像数据中的至少一种;
处理模块,用于在所述量化神经元位宽和所述量化权值位宽中选择数据位宽大的作为目标数据位宽,并将待选位宽集合中的每个待选位宽与所述目标数据位宽进行比较,将大于或等于所述目标数据位宽的所述待选位宽作为第一待选位宽集合,以及将所述第一待选位宽集合中最小的所述待选位宽作为所述存储数据位宽;其中,所述待选位宽集合中包括多个待选位宽;
存储模块,用于按照所述存储数据位宽对量化后的所述神经元数据和量化后的所述权值数据进行存储。
8.一种神经网络芯片,其特征在于,所述芯片包括如权利要求7所述的数据存储装置。
9.一种电子设备,其特征在于,所述电子设备包括如所述权利要求8所述的芯片。
10.一种板卡,其特征在于,所述板卡包括存储器件、接收装置和控制器件,以及如所述权利要求8所述的芯片,其中,所述芯片与所述存储器件、所述控制器件以及所述接收装置分别连接;
所述存储器件,用于存储数据;
所述接收装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910944353.XA CN110673802B (zh) | 2019-09-30 | 2019-09-30 | 数据存储方法、装置、芯片、电子设备和板卡 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910944353.XA CN110673802B (zh) | 2019-09-30 | 2019-09-30 | 数据存储方法、装置、芯片、电子设备和板卡 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110673802A CN110673802A (zh) | 2020-01-10 |
CN110673802B true CN110673802B (zh) | 2023-04-07 |
Family
ID=69078755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910944353.XA Active CN110673802B (zh) | 2019-09-30 | 2019-09-30 | 数据存储方法、装置、芯片、电子设备和板卡 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110673802B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112308226B (zh) * | 2020-08-03 | 2024-05-24 | 北京沃东天骏信息技术有限公司 | 神经网络模型的量化、用于输出信息的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107480770A (zh) * | 2017-07-27 | 2017-12-15 | 中国科学院自动化研究所 | 可调节量化位宽的神经网络量化与压缩的方法及装置 |
CN108229648A (zh) * | 2017-08-31 | 2018-06-29 | 深圳市商汤科技有限公司 | 卷积计算方法和装置、电子设备、计算机存储介质 |
CN109740754A (zh) * | 2018-12-29 | 2019-05-10 | 北京中科寒武纪科技有限公司 | 神经网络计算装置、神经网络计算方法及相关产品 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190050710A1 (en) * | 2017-08-14 | 2019-02-14 | Midea Group Co., Ltd. | Adaptive bit-width reduction for neural networks |
-
2019
- 2019-09-30 CN CN201910944353.XA patent/CN110673802B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107480770A (zh) * | 2017-07-27 | 2017-12-15 | 中国科学院自动化研究所 | 可调节量化位宽的神经网络量化与压缩的方法及装置 |
CN108229648A (zh) * | 2017-08-31 | 2018-06-29 | 深圳市商汤科技有限公司 | 卷积计算方法和装置、电子设备、计算机存储介质 |
CN109740754A (zh) * | 2018-12-29 | 2019-05-10 | 北京中科寒武纪科技有限公司 | 神经网络计算装置、神经网络计算方法及相关产品 |
Non-Patent Citations (1)
Title |
---|
面向"边缘"应用的卷积神经网络量化与压缩方法;蔡瑞初等;《计算机应用》;20180423(第09期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110673802A (zh) | 2020-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110515589B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111008003B (zh) | 数据处理器、方法、芯片及电子设备 | |
WO2021232422A1 (zh) | 神经网络的运算装置及其控制方法 | |
CN110515587B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN114003198B (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
CN110673802B (zh) | 数据存储方法、装置、芯片、电子设备和板卡 | |
CN113031912B (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN111258633B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111260042B (zh) | 数据选择器、数据处理方法、芯片及电子设备 | |
CN109740730B (zh) | 运算方法、装置及相关产品 | |
CN111260043B (zh) | 数据选择器、数据处理方法、芯片及电子设备 | |
CN111258541B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN116882475A (zh) | 应用于神经网络的训练方法及装置以及相关产品 | |
CN111381875B (zh) | 数据比较器、数据处理方法、芯片及电子设备 | |
CN209895329U (zh) | 乘法器 | |
CN113031915B (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN210006031U (zh) | 乘法器 | |
CN113031916B (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN109582279B (zh) | 数据运算装置及相关产品 | |
CN111382853B (zh) | 数据处理装置、方法、芯片及电子设备 | |
CN111260070B (zh) | 运算方法、装置及相关产品 | |
CN111381806A (zh) | 数据比较器、数据处理方法、芯片及电子设备 | |
CN112395003A (zh) | 运算方法、装置及相关产品 | |
CN111381802B (zh) | 数据比较器、数据处理方法、芯片及电子设备 | |
CN210006084U (zh) | 乘法器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |