CN110196734A - 一种计算装置及相关产品 - Google Patents
一种计算装置及相关产品 Download PDFInfo
- Publication number
- CN110196734A CN110196734A CN201810161816.0A CN201810161816A CN110196734A CN 110196734 A CN110196734 A CN 110196734A CN 201810161816 A CN201810161816 A CN 201810161816A CN 110196734 A CN110196734 A CN 110196734A
- Authority
- CN
- China
- Prior art keywords
- data
- input
- unit
- input data
- mentioned
- 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.)
- Pending
Links
- 210000002364 input neuron Anatomy 0.000 claims abstract description 154
- 230000006835 compression Effects 0.000 claims abstract description 105
- 238000007906 compression Methods 0.000 claims abstract description 105
- 238000003860 storage Methods 0.000 claims abstract description 43
- 238000012545 processing Methods 0.000 claims description 154
- 238000000034 method Methods 0.000 claims description 88
- 210000002569 neuron Anatomy 0.000 claims description 30
- 238000013138 pruning Methods 0.000 claims description 30
- 238000011002 quantification Methods 0.000 claims description 20
- 238000013528 artificial neural network Methods 0.000 claims description 16
- 210000004027 cell Anatomy 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 8
- 235000013399 edible fruits Nutrition 0.000 claims 1
- 230000008569 process Effects 0.000 description 70
- 210000004205 output neuron Anatomy 0.000 description 53
- 238000010586 diagram Methods 0.000 description 20
- 239000011159 matrix material Substances 0.000 description 14
- 238000009826 distribution Methods 0.000 description 10
- 230000004913 activation Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 8
- 238000003672 processing method Methods 0.000 description 7
- 238000013139 quantization Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 230000005611 electricity Effects 0.000 description 6
- 241001269238 Data Species 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000005012 migration Effects 0.000 description 4
- 238000013508 migration Methods 0.000 description 4
- 210000005036 nerve Anatomy 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 238000005481 NMR spectroscopy Methods 0.000 description 2
- 238000004378 air conditioning Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011773 genetically engineered mouse model Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000032258 transport Effects 0.000 description 2
- 238000002604 ultrasonography Methods 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013497 data interchange Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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 or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开提供了一种计算装置,所述计算装置包括:指令控制单元用于获取运算指令,将所述运算指令译码为第一微指令和第二微指令,并将所述第一微指令发送给所述压缩单元,将所述第二微指令发送给所述运算单元;存储单元用于存储输入数据、处理后的输入数据、运算指令以及运算结果,所述输入数据包括至少一个输入神经元和/或至少一个权值,所述处理后的输入数据包括处理后的输入神经元和/或处理后的权值;压缩单元用于根据所述第一微指令对所述输入数据进行处理,以得到所述处理后的输入数据;运算单元用于根据所述第二微指令对所述处理后的输入数据进行处理,以得到所述运算结果。
Description
技术领域
本申请涉及信息处理技术领域,具体涉及一种计算装置及相关产品。
背景技术
随着信息技术的不断发展和人们日益增长的需求,人们对信息及时性的要求越来越高了。目前,终端对信息的获取以及处理均是基于通用处理器获得的。
在实践中发现,这种基于通用处理器运行软件程序来处理信息的方式,受限于通用处理器的运行速率,特别是在通用处理器负荷较大的情况下,信息处理效率较低、时延较大。
申请内容
本申请实施例提供了一种数据处理方法及相关产品,可提升计算装置的处理速度,提高效率。
第一方面,提供一种使用计算装置进行数据处理的方法,所述计算装置包括运算单元、指令控制单元、存储单元以及压缩单元,所述方法包括:
所述指令控制单元获取运算指令,将所述运算指令译码为第一微指令和第二微指令,并将所述第一微指令发送给所述压缩单元,将所述第二微指令发送给所述运算单元;
所述压缩单元根据所述第一微指令对获取的输入数据进行处理,得到处理后的输入数据;其中,所述输入数据包括至少一个输入神经元和/或至少一个输入数据,所述处理后的输入数据包括处理后的输入神经元和/或处理后的输入数据;
所述运算单元根据所述第二微指令对所述处理后的输入数据进行处理,得到运算结果。
第二方面,提供一种计算装置,所述计算装置包括用于执行上述第一方面的方法的硬件单元。
第三方面,提供一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面提供的方法。
第四方面,提供了一种芯片,所述芯片包括如上第二方面提供的计算装置。
第五方面,提供了一种芯片封装结构,所述芯片封装结构包括如上第四方面提供的芯片。
第六方面,提供了一种板卡,所述板卡包括如上第五方面提供的芯片封装结构。
第七方面,提供了一种电子设备,所述电子设备包括如上第六方面提供的板卡。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本申请提供的计算装置设置了压缩单元,该压缩单元根据运算指令对输入数据进行压缩处理,后续利用该处理后的输入数据进行计算处理,可减少数据计算量,提高数据处理效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A-1C是本申请实施例提供的几种计算装置的结构示意图。
图1D是本发明实施例提供的一种压缩单元的结构示意图。
图1E是本发明实施例提供的一种控制单元控制状态迁移的示意图。
图2为本发明实施例提供的一种压缩单元的局部结构示意图。
图3为本发明实施例提供的一种神经网络结构示意图。
图4为本发明实施例提供的另一种压缩单元的局部结构示意图。
图5为本发明实施例提供的另一种压缩单元的局部结构示意图。
图6为本发明实施例提供的一种使用计算装置的数据处理方法的流程示意图。
图7a是本披露提供的一种芯片装置的结构示意图。
图7b是本披露提供的一种主处理电路的结构示意图。
图7c是本披露提供的芯片装置的数据分发示意图。
图7d为一种芯片装置的数据回传示意图。
附图中“/”表示“或”。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
请参见图1A是本发明实施例提供的一种计算装置的结构示意图。如图1A 所示,该计算装置包括:压缩单元101、存储单元102、指令控制单元107以及运算单元108。可选的,如图1B所述计算装置还可包括第一输入缓存单元105、第二输入缓存单元106。进一步可选的,所述计算装置还可包括直接存储访问 (Direct Memory Access,DMA)单元103、指令缓存单元104以及输出缓存单元 109。下面结合图1A和1B示出的计算装置,具体阐述本申请实施例。其中,
所述存储单元102用于存储输入数据、运算指令(具体可包括但不限于神经网络运算指令、非神经网络运算指令、加法指令、卷积指令等等)、处理后的输入数据、输入数据的位置关系数据、运算结果以及其他神经网络运算中产生的中间数据等等,本申请不做限定。所述输入数据包括但不限于输入权值和输入神经元,且所述输入数据的数量本申请也不做限定,即所述输入数据包括至少一个输入权值和/或至少一个输入神经元。
所述输入数据的位置关系数据用于表征输入数据的位置,例如输入数据为一个矩阵A,则以数据Aij为例,该数据Aij的位置信息为位于矩阵A中的第i 行第j列。
可选的本申请中,所述输入数据的位置关系数据还可表示所述输入数据中绝对值大于或等于预设阈值的输入数据的位置关系,该输入数据可为输入神经元或输入权值。其中,所述预设阈值可为用户侧或设备侧自定义设置的阈值,例如0.2、0.5等等。所述输入数据的位置关系数据可用直接索引或者步长索引的方式表示,具体将在后文进行详细阐述。
以直接索引为例,假设输入数据为矩阵预设阈值为0.5,则所述输入数据的位置关系数据为
可选实施例中,本申请为节省存储空间,所述计算装置可根据所述输入数据的位置关系数据来存储所述输入数据。具体的,缓存输入数据的位置关系数据以及缓存绝对值大于或等于预设阈值的输入数据,其他位置的输入数据默认为是:绝对值小于该预设阈值的数据,或默认为0,本申请不做限定。即是本申请采用稠密方式来存储数据,例如在第一/二缓存单元中以稠密方式缓存输入神经元或输入权值等等。
所述直接存储访问DMA单元103用于在上述存储单元102与上述指令缓存单元104、上述映射单元101、上述第一输入缓存单元105和上述输出缓存单元 109之间进行数据读写。
例如,DMA单元103从所述存储单元102中读取运算指令,并将该运算指令发送给指令控制单元107,或缓存至指令缓存单元104等。
又如,DMA单元103还可从所述存储单元102中读取输入权值或处理后的输入权值,以发送至第一输入存储单元105或第二输入存储单元106中进行缓存。相应地,DMA单元103还可从所述存储单元102中读取输入神经元或处理后的输入神经元,以发送至第一输入存储单元105或第二输入存储单元106中。其中,所述第一输入存储单元105和第二输入存储单元106中缓存的数据不同,例如第一输入缓存单元105存储有输入神经元或处理后的输入神经元,则第二输入缓存单元106中存储输入权值或处理后的权值;反之亦然。
所述指令缓存单元104用于缓存运算指令。所述第一输入缓存单元用于缓存第一缓存数据,所述第二输入缓存数据用于缓存第二缓存数据。所述第一缓存数据和第二缓存数据不同,关于所述第一缓存数据和第二缓存数据可参见前文所述。例如,如果所述第一缓存数据为处理后的输入权值,则第二缓存数据可为未处理的输入神经元,也可为处理后的输入神经元等等。
所述指令控制单元107可用于从所述指令缓存单元或存储单元中获取运算指令,进一步地可将所述运算指令译码为相应地的微指令,以便所述计算单元中的相关部件能够识别和执行。例如,本申请中指令控制单元可将运算单元译码为第一微指令和第二微指令。其中,第一微指令用于指示所述压缩单元采用所述第一微指令所指示的处理方式进行对应的数据处理。第二微指令用于指示所述运算单元执行所述第二微指令对应的运算处理,例如乘法运算、卷积运算等等。
所述输出缓存单元可用于缓存所述运算单元输出的运算结果。所述运算单元用于根据指令控制单元发送的指令进行相应的数据运算处理,以获得运算结果。所述压缩单元用于对数据进行压缩处理,以降低数据维度,减少运算单元中的数据运算量,提高数据处理效率。
在可选实施例中,所述计算装置还可包括预处理模块110,具体如图1C所示。所述预处理模块可用于对数据进行预处理,以获得预处理后的数据。相应地,可将处理后的数据存储至存储单元中。例如本申请中,所述存储单元中缓存的输入数据即可为经过该预处理模块处理后的输入数据等。所述预处理包括但不限于以下处理中的任一项或多项的组合:高斯滤波、二值化、归一化、正则化、异常数据筛选等等,本申请不做限定。
在可选实施例中,本申请中的第一输入缓存单元和第二输入缓存单元均可被拆分为两个缓存单元,其中一个缓存单元用于存储输入权值或输入神经元,另一个缓存单元对应用于存储输入权值的位置关系数据或输入神经元的位置关系数据等等,本申请图未示。
在可选实施例中,所述压缩单元101的设计位置本申请并不做限定。如图 1B所示,所述压缩单元可放在所述第一输入缓存单元和第二输入缓存单元的后面。可选的,所述所述压缩单元可放在所述第一输入缓存单元和第二输入缓存单元的前面,位于DMA单元的后面。可选的,所述压缩单元还可放在所述运算单元内等等,不做限定。
如图1D是本发明提供的一种压缩单元的结构示意图。如图1D,所述压缩单元101可包括以下中的任一项或多项的组合:剪枝单元201、量化单元202以及编码单元203。可选的,所述压缩单元101还可包括控制单元204。其中,所述剪枝单元201具体用于对接收的数据进行剪枝处理,关于所述剪枝处理的具体实现将在下文详述。所述量化单元202具体用于对接收的数据进行量化处理,关于所述量化处理的具体实现将在下文详述。所述编码单元203具体用于对接收的数据进行编码处理,关于所述编码处理的具体实现将在下文详述。所述控制单元204具体用于根据接收指令的指示利用上述三个单元中的至少一个单元完成对应的数据的处理方式,具体实现将在下文详述。
下面阐述所述压缩单元和所述运算单元涉及的具体实施例。具体的,所述压缩单元101在接收到所述指令控制单元107发送的第一微指令后,可获取输入数据,根据所述第一微指令所指示的处理方式对所述输入数据进行处理,以获得处理后的输入数据。
其中,所述处理方式包括但不限于以下中的任一项或多项的组合:剪枝处理、量化处理、编码处理或者其他用于降低数据维度或减少数据量的处理方式,本申请不做限定。
具体的,如果所述处理方式为剪枝处理,则所述压缩单元可采用剪枝单元将绝对值大于或等于第一阈值的输入数据进行保留,将绝对值小于第一阈值的输入数据进行删除,从而获得处理后的输入数据。所述输入数据包括但限于至少一个输入神经元、至少一个输入权值等等。所述第一阈值为用户侧或设备侧自定义设置的,例如0.5等。
例如,输入数据为向量P(0.02,0.05,1,2,0.07,2.1,0.89),如果所述第一微指令指示所述压缩单元采用剪枝处理来处理数据,则所述压缩单元将对向量P进行剪枝处理,删除向量P中绝对值小于0.5的数据,从而获得处理后的输入数据 (即处理后的向量P)为(0,0,1,2,0,2.1,0.89)。
如果所述处理方式为量化处理,则所述压缩单元可采用量化单元将所述输入数据进行聚类和量化,从而获得处理后的输入数据。其中所述量化是指将原数据量化至接近该原数据的新数据,该新数据可为用户侧自定义设置的,或者保证所述原数据和新数据之间的误差小于预设值,例如将0.5量化至1等等。所述量化处理方式具体所采用的量化和聚类算法本申请不做限定,例如采用 K-means算法对神经网络模型中的每一层输入权值或输入神经元进行聚类等。
例如输入数据为矩阵采用量化处理方式后可获得处理后的输入数据,例如可为
如果所述处理方式为编码处理,则所述压缩单元可通过编码单元采用预设编码格式对所述输入数据进行编码,从而获得处理后的输入数据。所述预设编码格式为用户侧或设备侧自定义设置的,其可包括但不限于霍夫曼huffman编码、非归零码、曼切斯特编码等等。
本申请中,当所述第一微指令所指示的处理方式包括多种处理方式时,所述多种处理方式的执行顺序本申请可以不做限定,也可在所述第一微指令中定义。即,所述第一微指令中指示有所述压缩单元所需采用的处理方式以及所述处理方式的执行顺序等。
例如,所述第一微指令所指示的处理方式包括:剪枝处理、量化处理以及编码处理,如果所述第一微指令指示有上述三种处理方式的执行顺序,则所述压缩单元将按照所述第一微指令所指示的执行顺序以及处理方式,对所述输入数据进行处理。如果所述第一微指令中没有规定所述处理方式的执行顺序,则所述压缩单元可按照任意执行顺序执行上述三种处理方式,对所述输入数据进行处理,以获得处理后的输入数据。
在所述压缩单元内部,为支持多种处理方式的数据处理,设计了控制单元来控制各种处理方式间的迁移。具体的,控制单元可利用控制单元的概念,提出多种运算状态,每一种运算状态对应一种处理方式。例如,用第一状态表示控制单元的初始状态,不进行任何数据处理;用第二状态表示/指示进行数据的剪枝处理;用第三状态指示进行数据的量化处理,第四状态指示进行数据的编码处理。可选的,还可用第五状态指示依次执行数据的剪枝、量化以及编码处理,用第六状态指示依次执行数据的剪枝和量化状态,用第七状态指示依次执行数据的剪枝和编码处理等等,所述运算状态的数量以及所指示的数据的处理方式均可由用户侧或装置侧自定义设置的,本申请并不做限定。
下面以所述运算状态包括四个状态为例,阐述所述控制单元实现多种处理方式的具体实施。具体的,所述运算状态具体可为第一状态至第四状态。所述状态可用预设数值或预设数值表示,例如第一状态用00表示,第二状态用01 表示,第三状态用10表示,第四状态用11表示。如图1E示出利用控制单元实现各种状态之间的迁移示意图。在实际应用中,所述控制单元具体可为控制器、累加器、或者其他用于指示多种数据处理方式的物理元器件,本申请不做限定。
其中,所述运算状态与所述处理方式关联。具体的,本申请中,所述第一状态00可表示为初始状态,不进行任何数据处理。第二状态01与所述剪枝处理关联,用于表示所述压缩单元可采用剪枝处理方式进行数据的处理。第三状态10与所述量化处理关联,用于表示所述压缩单元可采用量化处理方式进行数据的处理。第四状态11与所述编码处理关联,用于表示所述压缩单元可采用预设编码格式进行数据的编码处理。
应理解的,在所述压缩单元进行数据处理之前,所述控制单元处于第一状态(即初始状态);当所述压缩单元接收到所述第一微指令后,可根据所述第一微指令所指示的处理方式利用控制单元重新设置该控制单元的状态,使得所述压缩单元处于该状态下完成所述处理方式所对应的数据处理。即是,本申请中在所述压缩单元内部可通过所述控制单元重新设置/修改所述运算状态,以在所述压缩单元中完成所述处理方式对应的数据处理。
例如,所述第一微指令用于指示在所述压缩单元中依次采用剪枝处理、量化处理以及编码处理进行数据的处理。相应地所述压缩单元接收到所述第一微指令后,利用控制单元(如累加器)将第一(初始)状态00设置为第二状态01,在所述处理单元完成所述剪枝处理(即根据剪枝处理,对所述输入数据进行处理后),可利用该控制单元将第二状态01设置为第三状态10。相应地,在所述压缩单元完成所述量化处理后,可通过控制单元将第三状态10设置为第四状态 11。相应地,在所述压缩单元完成所述第四状态关联的编码处理后,可通过控制单元将所述第四状态11设置为第一(初始)状态00,可结束流程。在本例中,如果所述控制单元为累加器,在状态改变过程中,通过累加器依次加1可实现四个状态之间的相互迁移,在完成第四状态后可将累加器重置为00,即恢复至初始状态。
需要说明的,所述控制单元涉及的运算状态的数量本申请不做限定,其取决于数据的处理方式。例如,当运算指令所指示的数据处理方式包括剪枝处理和量化处理,则所述控制单元涉及的运算状态可对应包括3个状态,上例中对应为第一状态至第三状态。相应地,所述计算装置接收所述运算指令后,根据所述控制单元的控制,依次完成所述第二状态和第三状态所指示的剪枝处理和量化处理,在数据处理完成后,可将所述控制单元的运算状态设置为第一状态 (初始状态)等。
需要说明的,本申请所述压缩单元对输入数据的处理,具体可为对输入权值和/或输入神经元的处理,以减少运算单元中对输入权值或者输入神经元的计算量,从而提高数据处理效率。
相应地,在所述运算单元中可根据接收的第二微指令对所述处理后的输入数据执行相应地的运算处理,以获得运算结果。具体存在以下几种具体实施方式。
在一种实施方式中,当所述处理后的输入数据包括处理后的输入神经元时,所述运算单元可根据第二微指令对所述处理后的输入神经元和输入权值执行相应地的运算操作,从而获得运算结果。
在又一种实施方式中,当所述处理后的输入数据包括处理后的输入权值时,所述运算单元可根据第二微指令对所述处理后的输入权值以及输入神经元执行相应地的运算操作,以获得运算结果。
在又一种实施方式中,当所述处理后的输入数据包括处理后的输入神经元和处理后的输入权值,则所述运算单元可根据第二微指令对所述处理后的输入权值和处理后的输入神经元执行相应的运算操作,以获得运算结果。
可选的,所述压缩单元可将该运算结果存储到上述输出缓存单元109中,该输出缓存单元109通过上述直接存储访问单元103将该运算结果存储到上述存储单元102中。
需要指出的是,上述指令缓存单元104、上述第一输入缓存单元105、上述第二输入缓存单元106和上述输出缓存单元109均可为片上缓存。
进一步地,上述运算单元108包括但不限定于三个部分,分别为乘法器、一个或多个加法器(可选地,多个加法器组成加法树)和激活函数单元/激活函数运算器。上述乘法器将第一输入数据(in1)和第二输入数据(in2)相乘得到第一输出数据(out1),过程为:out1=in1*in2;上述加法树将第三输入数据(in3) 通过加法树逐级相加得到第二输出数据(out2),其中in3是一个长度为N的向量,N大于1,过称为:out2=in3[1]+in3[2]+...+in3[N],和/或将第三输入数据 (in3)通过加法树累加之后得到的结果和第四输入数据(in4)相加得到第二输出数据(out2),过程为:out2=in3[1]+in3[2]+...+in3[N]+in4,或者将第三输入数据(in3)和第四输入数据(in4)相加得到第二输出数据(out2),过称为: out2=in3+in4;上述激活函数单元将第五输入数据(in5)通过激活函数(active) 运算得到第三输出数据(out3),过程为:out3=active(in5),激活函数active可以是sigmoid、tanh、relu、softmax等函数,除了做激活操作,激活函数单元可以实现其他的非线性函数运算,可将输入数据(in)通过函数(f)运算得到输出数据(out),过程为:out=f(in)。
上述运算单元108还可以包括池化单元,池化单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool 为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
可以看出,在本发明实施例的方案中,上述压缩单元可对输入神经元和权值进行处理,剔除绝对值小于或等于上述阈值的输入神经元和权值,减少了输入神经元和权值的数量,减少了额外的开销,运算单元根据处理后的输入神经元和权值进行人工神经网络运算,提高了运算的效率。
需要说明的是,上述计算装置不仅可以进行稀疏神经网络运算,还可以进行稠密神经网络运算。上述神经网络运算模块特别适用于稀疏神经网络的运算,是因为稀疏神经网络里0值数据或者绝对值很小的数据非常多。通过压缩单元可以提出这些数据,在保证运算精度的情况下,可提高运算的效率。
在可选实施例中,在上述剪枝处理过程中,所述压缩单元还可根据位置关系数据,对所述输入数据进行处理,以获得所述处理后的输入数据。具体存在以下几种具体实施方式。
在一种具体实施方式中,所述输入数据包括第一输入数据和第二输入数据。具体如图2,上述压缩单元101包括:
第一稀疏处理单元1011,用于对第二输入数据进行处理,以得到第三输出数据和第二输出数据,并将所述第三输出数据传输至第一数据处理单元1012。
第一数据处理单元1012,用于接收第一输入数据和接收所述第三输出数据,并根据上述第三输出数据和第一输入数据输出第一输出数据。
其中,当所述第一输入数据包括至少一个输入神经元,所述第二输入数据包括至少一个权值时,所述第一输出数据为处理后的输入神经元,所述第二输出数据为处理后的权值,所述第三输出数据为权值的位置关系数据;当所述第一输入数据包括至少一个权值,所述第二输入数据包括至少一个输入神经元时,所述第一输出数据为处理后的权值,所述第二输出数据为处理后的输入神经元,所述第三输出数据为输入神经元的位置关系数据。
具体地,当上述第二输入数据为权值时,且权值的形式为wij,该wij表示第 i个输入神经元与第j个输出神经元之间的权值;上述第一稀疏处理单元1011根据权值确定上述位置关系数据(即上述第三输出数据),并将上述权值中绝对值小于或者等于第二阈值的权值删除,得到处理后的权值(即上述第二输出数据);当上述第二输入数据为输入神经元时,上述第一稀疏处理单元1011根据输入神经元得到位置关系数据,并将该输入神经元中的绝对值小于或等于上述第一阈值的输入神经元删除,以得到处理后的输入神经元。
可选地,上述第一阈值可为0.1、0.08、0.05、0.02、0.01、0或者其他值。上述第二阈值可为0.1、0.08、0.06、0.05、0.02、0.01、0或者其他值。需要指出的是,上述第一阈值和上述第二阈值可以一致,也可以不一致。
其中,上述位置关系数据可以步长索引或者直接索引的形式表示。
具体地,以直接索引形式表示的位置关系数据为由0和1组成的字符串,当上述第二输入数据为权值时,0表示该权值的绝对值小于或者等于上述第二阈值,即该权值对应的输入神经元与输出神经元之间没有连接,1表示该权值的绝对值大于上述第二阈值,即该权值对应的输入神经元与输出神经元之间有连接。以直接索引形式表示的位置关系数据有两种表示顺序:以每个输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示权值的连接关系;或者每个输入神经元与所有输出神经元的连接状态组成一个0和1的字符串来表示权值的连接关系。当上述第二输入数据为输入神经元时,0表示该输入神经元的绝对值小于或者等于上述第一阈值,1表示该输入神经元的绝对值大于上述第一阈值。
当上述第二输入数据为权值时,以步长索引形式表示的位置关系数据为与输出神经元有连接的输入神经元与上一个与该输出神经元有连接的输入神经元之间的距离值组成的字符串;当上述第二输入数据为输入神经元时,以步长索引表示的数据以当前绝对值大于上述第一阈值的输入神经元与上一个绝对值大于上述第一阈值的输入神经元之间的距离值组成的字符串表示。
举例说明,假设上述第一阈值和上述第二阈值均为为0.01,参见图3,图3 为本发明实施例提供的一种神经网络的示意图。如图3中的a图所示,上述第一输入数据为输入神经元,包括输入神经元i1、i2、i3和i4,上述第二输入数据为权值。对于输出神经元o1,权值为w11,w21,w31和w41;对于输出神经元o2,权值w12,w22,w32和w42,其中权值w21,w12和w42的值为0,其绝对值均小于上述第一阈值0.01,上述第一稀疏处理单元1011确定上述输入神经元i2和输出神经元o1没有连接,上述输入神经元i1和i4与输出神经元o2没有连接,上述输入神经元i1、i3和i4与上述输出神经元o1有连接,上述输入神经元i2和i3 与输出神经元o2有连接。以每个输出神经元与所有输入神经元的连接状态表示上述位置关系数据,则上述输出神经元o1的位置关系数据为“1011”,输出神经元o2的位置关系数据为“0110”(即上述位置关系数据为“10110110”);以每个输入神经元与所有输出神经元的连接关系,则输入神经元i1的位置关系数据为“10”,输入神经元i2的位置关系数据为“01”,输入神经元i3的位置关系数据为“11”,输入神经元i4的位置关系数据为“10”(即上述位置关系数据为“10011110”)。
对于上述输出神经元o1,上述压缩单元101将上述i1与w11,i3与w31和 i4与w41分别作为一个数据集,并将该数据集存储到上述存储单元102中;对于输出神经元o2,上述压缩单元101将上述i2与w22和i3与w32分别作为一个数据集,并将该数据集存储到上述存储单元102中。
针对上述输出神经元o1,上述第二输出数据为w11,w31和w41;针对上述输出神经元o2,上述第二输出数据为w22和w32。
当上述第二输入数据为输入神经元i1、i2、i3和i4,且该输入神经元的值分别为1,0,3,5则上述位置关系数据(即上述第三输出数据)为“1011”,上述第二输出数据为1,3,5。
如图3中的b图所示,上述第一输入数据包括输入神经元i1、i2、i3和i4,上述第二输入数据为权值。对于输出神经元o1,权值为w11,w21,w31和w41;对于输出神经元o2,权值w12,w22,w32和w42,其中权值w21,w12和w42的值为0,上述稀疏处理单元1011确定上述输入神经元i1、i3和i4与上述输出神经元o1有连接,上述输入神经元i2和i3与输出神经元o2有连接。上述输出神经元o1与输入神经元之间的位置关系数据为“021”。其中,该位置关系数据中第一个数字“0”表示第一个与输出神经元o1有连接的输入神经元与第一个输入神经元之间的距离为0,即第一个与输出神经元o1有连接的输入神经元为输入神经元i1;上述位置关系数据中第二个数字“2”表示第二个与输出神经元o1有连接的输入神经元与第一个与输出神经元o1有连接的输入神经元(即输入神经元i1) 之间的距离为2,即第二个与输出神经元o1有连接的输入神经元为输入神经元 i3;上述位置关系数据中第三个数字“1”表示第三个与输出神经元o1有连接的输入神经元与第二个与该输出神经元o1有连接的输入神经元之间的距离为1,即第三个与输出神经元o1有连接的输入神经元为输入神经元i4。
上述输出神经元o2与输入神经元之间的位置关系数据为“11”。其中,该位置关系数据中的第一数字“1”表示第一个与输出神经元o2有连接的输入神经元与第一个输入神经元(即输入神经元i1)之间的距离为,即该第一个与输出神经元o2有连接关系的输入神经元为输出神经元i2;上述位置关系数据中的第二数字“1”表示第二个与输出神经元o2有连接的输入神经元与第一个与输出神经元o2有连接的输入神经元的距离为1,即第二个与输出神经元o2有连接的输入神经元为输入神经元i3。
对于上述输出神经元o1,上述压缩单元101将上述i1与w11,i3与w31和 i4与w41分别作为一个数据集,并将该数据集存储到上述存储单元102中;对于输出神经元o2,上述压缩单元101将上述i2与w22和i3与w32分别作为一个数据集,并将该数据集存储到上述存储单元102中。
针对上述输出神经元o1,上述第二输出数据为w11,w31和w41;针对上述输出神经元o2,上述第二输出数据为w22和w32。
当上述第二输入数据为输入神经元i1、i2、i3和i4,且该输入神经元的值分别为1,0,3,5则上述位置关系数据即上述第三输出数据为“021”,上述第二输出数据为1,3,5。
当上述第一输入数据为输入神经元时,则上述第二输入数据为权值,上述第三输出数据为输出神经元与上述输入神经元之间的位置关系数据。上述第一数据处理单元1012接收到上述输入神经元后,将该输入神经元中绝对值小于或等于上述第二阈值的输入神经元剔除,并根据上述位置关系数据,从剔除后的输入神经元中选择与上述权值相关的输入神经元,作为第一输出数据输出。
举例说明,假设上述第一阈值为0,上述输入神经元i1、i2、i3和i4,其值分别为1,0,3和5,对于输出神经元o1,上述第三输出数据(即位置关系数据)为“021”,上述第二输出数据为w11,w31和w41。上述第一数据处理单元1012 将上述输入神经元i1、i2、i3和i4中值为0的输入神经元剔除,得到输入神经元i1、i3和i4。该第一数据处理单元1012根据上述第三输出数据“021”确定上述输入神经元i1、i3和i4均与上述输出神经元均有连接,故上述数据处理单元 1012将上述输入神经元i1、i3和i4作为第一输出数据输出,即输出1,3,5。
当上述第一输入数据为权值,上述第二输入数据为输入神经元时,上述第三输出数据为上述输入神经元的位置关系数据。上述第一数据处理单元1012接收到上述权值w11,w21,w31和w41后,将该权值中绝对值小于上述第一阈值的权值剔除,并根据上述位置关系数据,从上述剔除后的权值中选择与该上述输入神经元相关的权值,作为第一输出数据并输出。
举例说明,假设上述第二阈值为0,上述权值w11,w21,w31和w41,其值分别为1,0,3和4,对于输出神经元o1,上述第三输出数据(即位置关系数据) 为“1011”,上述第二输出数据为i1,i3和i5。上述第一数据处理单元1012将上述权值w11,w21,w31和w41中值为0的输入神经元剔除,得到权值w11,w21, w31和w41。该第一数据处理单元1012根据上述第三输出数据“1011”确定上述输入神经元i1、i2,i3和i4中的输入神经元i2的值为0,故上述第一数据处理单元1012将上述输入神经元1,3和4作为第一输出数据输出。
在一种可行的实施例中,第三输入数据和第四输入数据分别为至少一个权值和至少一个输入神经元,上述压缩单元101确定上述至少一个输入神经元中绝对值大于上述第一阈值的输入神经元的位置,并获取输入神经元的位置关系数据;上述压缩单元101确定上述至少一个权值中绝对值大于上述第二阈值的权值的位置,并获取权值的位置关系数据。上述压缩单元101根据上述权值的位置关系数据和输入神经元的位置关系数据得到一个新的位置关系数据,该位置关系数据表示上述至少一个输入神经元中绝对值大于上述第一阈值的输入神经元与输出神经元之间的关系和对应的权值的值。101压缩单元101根据该新的位置关系数据、上述至少一个输入神经元和上述至少一个权值获取处理后的输入神经元和处理后的权值。
进一步地,上述压缩单元101将上述处理后的输入神经元和处理后的权值按照一一对应的格式存储到上述存储单元102中。
具体地,上述压缩单元101对上述处理后的输入神经元和上述处理后的权值按照一一对应的格式进行存储的具体方式是将上述处理后的输入神经元中的每个处理后的输入神经元和与其对应的处理后的权值作为一个数据集,并将该数据集存储到上述存储单元102中。
对于压缩单元101包括第一稀疏处理单元1011和第一数据处理单元1012 的情况,压缩单元101中的稀疏处理单元1011对输入神经元或者权值进行稀疏化处理,减小了权值或者输入神经元的数量,进而减小了运算单元进行运算的次数,提高了运算效率。
在又一种具体实施方式中,所述输入数据包括第一输入数据和第二输入数据。具体如图4,上述压缩单元101包括:
第二稀疏处理单元1013,用于接收到第三输入数据后,根据所述第三输入数据得到第一位置关系数据,并将该第一位置关系数据传输至连接关系处理单元1015;
第三稀疏处理单元1014,用于接收到第四输入数据后,根据所述第四输入数据得到第二位置关系数据,并将该第二位置关系数据传输至所述连接关系处理单元1015;
所述连接关系处理单元1015,用于根据所述第一位置关系数据和所述第二位置关系数据,以得到第三位置关系数据,并将该第三位置关系数据传输至第二数据处理单元1016;
所述第二数据处理单元1016,用于在接收到所述第三输入数据,所述第四输入数据和所述第三位置关系数据后,根据所述第三位置关系数据对所述第三输入数据和所述第四输入数据进行处理,以得到第四输出数据和第五输出数据;
其中,当所述第三输入数据包括至少一个输入神经元,第四输入数据包括至少一个权值时,所述第一位置关系数据为输入神经元的位置关系数据,所述第二位置关系数据为权值的位置关系数据,所述第四输出数据为处理后的输入神经元,所述第五输出数据为处理后的权值;当所述第三输入数据包括至少一个权值,所述第四输入数据包括至少一个输入神经元时,所述第一位置关系数据为权值的位置关系数据,所述第二位置关系数据为输入神经元的位置关系数据,所述第四输出数据为处理后的权值,所述第五输出数据为处理后的输入神经元。
当上述第三输入数据包括至少一个输入神经元时,上述第一位置关系数据为用于表示该至少一个输入神经元中绝对值大于上述第一阈值的输入神经元的位置的字符串;当上述第三输入数据包括至少一个权值时,上述第一位置关系数据为用于表示输入神经元与输出神经元之间是否有连接的字符串。
当上述第四输入数据包括至少一个输入神经元时,上述第二位置关系数据为用于表示该至少一个输入神经元中绝对值大于上述第一阈值的输入神经元的位置的字符串;当上述第四输入数据包括至少一个权值时,上述第二位置关系数据为用于表示输入神经元与输出神经元之间是否有连接的字符串。
需要说明的是,上述第一位置关系数据、第二位置关系数据和第三位置关系数据均可以步长索引或者直接索引的形式表示,具体可参见上述相关描述。换句话说,上述连接关系处理单元1015对上述第一位置关系数据和上述第二位置关系数据进行处理,以得到第三位置关系数据。该第三位置关系数据可以直接索引或者步长索引的形式表示。
具体地,上述当上述第一位置关系数据和上述第二位置关系数据均以直接索引的形式表示时,上述连接关系处理单元1015对上述第一位置关系数据和上述第二位置关系数据进行与操作,以得到第三位置关系数据,该第三位置关系数据是以直接索引的形式表示的。需要说明的是,表示上述第一位置关系数据和第二位置关系数据的字符串在内存中是按照物理地址高低的顺序存储的,可以是由高到低的顺序存储的,也可以是由低到高的顺序存储的。
当上述第一位置关系数据和上述第二位置关系数据均以步长索引的形式表示,且表示上述第一位置关系数据和第二位置关系数据的字符串是按照物理地址由低到高的顺序存储时,上述连接关系处理单元1015将上述第一位置关系数据的字符串中的每一个元素与存储物理地址低于该元素存储的物理地址的元素进行累加,得到的新的元素组成第四位置关系数据;同理,上述连接关系处理单元1015对上述第二位置关系数据的字符串进行同样的处理,得到第五位置关系数据。然后上述连接关系处理单元1015从上述第四位置关系数据的字符串和上述第五位置关系数据的字符串中,选取相同的元素,按照元素值从小到大的顺序排序,组成一个新的字符串。上述连接关系处理单元1015将上述新的字符串中将每一个元素与其相邻且值小于该元素值的元素进行相减,以得到一个新的元素。按照该方法,对上述新的字串中的每个元素进行相应的操作,以得到上述第三位置关系数据。
举例说明,假设以步长索引的形式表示上述第一位置关系数据和上述第二位置关系数据,上述第一位置关系数据的字符串为“01111”,上述第二位置关系数据的字符串为“022”,上述连接关系处理单元1015将上述第一位置关系数据的字符串中的每个元素与其相邻的前一个元素相加,得到第四位置关系数据“01234”;同理,上述连接关系处理单元1015对上述第二位置关系数据的字符串进行相同的处理后得到的第五位置关系数据为“024”。上述连接关系处理单元 1015从上述第四位置关系数据“01234”和上述第五位置关系数据“024”选组相同的元素,以得到新的字符串“024”。上述连接关系处理单元1015将该新的字符串中的每个元素与其相邻的前一个元素进行相减,即0,(2-0),(4-2),以得到上述第三连接数据“022”。
当上述第一位置关系数据和上述第二位置关系数据中的任意一个以步长索引的形式表示,另一个以直接索引的形式表示时,上述连接关系处理单元1015 将上述以步长索引表示的位置关系数据转换成以直接索引的表示形式或者将以直接索引表示的位置关系数据转换成以步长索引表示的形式。然后上述连接关系处理单元1015按照上述方法进行处理,以得到上述第三位置关系数据(即上述第五输出数据)。
可选地,当上述第一位置关系数据和上述第二位置关系数据均以直接索引的形式表示时,上述连接关系处理单元1015将上述第一位置关系数据和上述第二位置关系数据均转换成以步长索引的形式表示的位置关系数据,然后按照上述方法对上述第一位置关系数据和上述第二位置关系数据进行处理,以得到上述第三位置关系数据。
具体地,上述第三输入数据可为输入神经元或者权值、第四输入数据可为输入神经元或者权值,且上述第三输入数据和第四输入数据不一致。上述第二数据处理单元1016根据上述第三位置关系数据从上述第三输入数据(即输入神经元或者权值)中选取与该第三位置关系数据相关的数据,作为第四输出数据;上述第二数据处理单元1016根据上述第三位置关系数据从上述第四输入数据中选取与该第三位置关系数据相关的数据,作为第五输出数据。
进一步地,上述第二数据处理单元1016将上述处理后的输入神经元中的每个处理后的输入神经元与其对应的处理后的权值作为一个数据集,将该数据集存储出上述存储单元102中。
举例说明,假设上述第三输入数据包括输入神经元i1,i2,i3和i4,上述第四输入数据包括权值w11,w21,w31和w41,上述第三位置关系数据以直接索引方式表示,为“1010”,则上述第二数据处理单元1016输出的第四输出数据为输入神经元i1和i3,输出的第五输出数据为权值w11和w31。上述第二数据处理单元1016将输入神经元i1与权值w11和输入神经元i3与权值w31分别作为一个数据集,并将该数据集存储到上述存储单元102中。
对于压缩单元101包括第二稀疏处理单元1013,第三稀疏处理单元1014、连接关系处理单元1015和第二数据处理单元1016的情况,压缩单元101中的稀疏处理单元对输入神经元和权值均进行稀疏化处理,使得输入神经元和权值的数量进一步减小,进而减小了运算单元的运算量,提高了运算效率。
在又一种具体实施方式中,所述输入数据包括至少一个输入权值或至少一个输入神经元。如图5,上述压缩单元601包括:
输入数据缓存单元6011,用于缓存所述输入数据,该输入数据包括至少一个输入神经元或者至少一个权值。
连接关系缓存单元6012,用于缓存输入数据的位置关系数据,即上述输入神经元的位置关系数据或者上述权值的位置关系数据。
其中,上述输入神经元的位置关系数据为用于表示该输入神经元中绝对值是否小于或者等于第一阈值的字符串,上述权值的位置关系数据为表示该权值绝对值是否小于或者等于上述第一阈值的字符串,或者为表示该权值对应的输入神经元和输出神经元之间是否有连接的字符串。该输入神经元的位置关系数据和权值的位置关系数据可以直接索引或者步长索引的形式表示。
第四稀疏处理单元6013,用于根据所述输入数据的位置关系数据对所述输入数据进行处理,以得到处理后的输入数据,并将该处理后的输入数据存储到上述第一输入缓存单元中605。
在上述三个具体实施方式中,在所述压缩单元101对所述输入数据进行处理之前,所述压缩单元101还用于:
对所述至少一个输入神经元进行分组,以得到M组输入神经元,所述M为大于或者等于1的整数;
判断所述M组输入神经元的每一组输入神经元是否满足第一预设条件,所述第一预设条件包括一组输入神经元中绝对值小于或者等于第三阈值的输入神经元的个数小于或者等于第四阈值;
当所述M组输入神经元任意一组输入神经元不满足所述第一预设条件时,将该组输入神经元删除;
对所述至少一个权值进行分组,以得到N组权值,所述N为大于或者等于 1的整数;
判断所述N组权值的每一组权值是否满足第二预设条件,所述第二预设条件包括一组权值中绝对值小于或者等于第五阈值的权值的个数小于或者等于第六阈值;
当所述N组权值任意一组权值不满足所述第二预设条件时,将该组权值删除。
可选地,上述第三阈值可为0.5,0.2,0.1,0.05,0.025,0.0,0或者其他值。其中,上述第四阈值与上述一组输入神经元中输入神经元的个数相关。可选地,该第四阈值=一组输入神经元中的输入神经元个数-1或者该第四阈值为其他值。可选地,上述第五阈值可为0.5,0.2,0.1,0.05,0.025,0.01,0或者其他值。其中,上述第六阈值与上述一组权值中的权值个数相关。可选地,该第六阈值=一组权值中的权值个数-1或者该第六阈值为其他值。需要说明的是,上述第三阈值和上述第五阈值可相同或者不同,上述第四阈值和上述第六阈值可相同或者不同。
需要说明的是,本申请中涉及的位置关系数据的表示方式除了直接索引和步长索引之外,还可为以下几种情况:列表的列表(List of Lists,LIL)、坐标列表(Coordinatelist,COO)、压缩稀疏行(Compressed Sparse Row,CSR)、压缩稀疏列(Compressed SparseColumn,CSC)、(ELL Pack,ELL)以及混合(Hybird, HYB)。
需要指出的是,本发明实施例中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中的神经元和输出层中的神经元,而是对于神经网络中任意相邻的两层神经元,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,假设一个卷积神经网络有L层,K=1,2,3…L-1,对于第K层和第K+1层来说,第 K层被称为输入层,该层中的神经元为上述输入神经元,第K+1层被称为输入层,该层中的神经元为上述输出神经元,即除了顶层之外,每一层都可以作为输入层,其下一层为对应的输出层。
此外,本申请还提供了使用上述计算装置的数据处理方法,具体如图6所示,所述方法包括:
步骤S601、所述指令控制单元获取运算指令,将所述运算指令译码为第一微指令和第二微指令,并将所述第一微指令发送给所述压缩单元,将所述第二微指令发送给所述运算单元;
步骤S602、所述压缩单元根据所述第一微指令对获取的输入数据进行处理,得到处理后的输入数据;其中,所述输入数据包括至少一个输入神经元和/或至少一个输入数据,所述处理后的输入数据包括处理后的输入神经元和/或处理后的输入数据;
步骤S603、所述运算单元根据所述第二微指令对所述处理后的输入数据进行处理,得到运算结果。
关于本发明未示出或未描述的部分可具体参见前述所有或者部分实施例中的相关阐述,这里不再赘述。
此外本申请上述实施例阐述的压缩单元,还可应用到如下芯片装置(也可称为运算电路或计算单元)中,以实现数据的压缩处理,降低电路中数据的传输量以及数据的计算量,从而提升数据处理效率。
参阅图7a,图7a为一种芯片装置的结构示意图,如图7a所示,该运算电路包括:主处理电路、基本处理电路和分支处理电路。具体的,主处理电路与分支处理电路连接,分支处理电路连接至少一个基本处理电路。
该分支处理电路,用于收发主处理电路或基本处理电路的数据。
参阅图7b,图7b为主处理电路的一种结构示意图,如图7b所示,主处理电路可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、ALU(arithmetic and logic unit,算数逻辑电路)电路、累加器电路、DMA(Direct MemoryAccess,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其他的电路。
主处理电路还包括数据发送电路、数据接收电路或接口,该数据发送电路可以集成数据分发电路以及数据广播电路,当然在实际应用中,数据分发电路以及数据广播电路也可以分别设置;在实际应用中上述数据发送电路以及数据接收电路也可以集成在一起形成数据收发电路。对于广播数据,即需要发送给每个基础处理电路的数据。对于分发数据,即需要有选择的发送给部分基础处理电路的数据,具体的选择方式可以由主处理电路依据负载以及计算方式进行具体的确定。对于广播发送方式,即将广播数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将广播数据发送至每个基础处理电路,也可以通过多次广播的方式将广播数据发送至每个基础处理电路,本申请具体实施方式并不限制上述广播的次数),对于分发发送方式,即将分发数据有选择的发送给部分基础处理电路。
在实现分发数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据(该数据可以相同,也可以不同,具体的,如果采用分发的方式发送数据,各个接收数据的基础处理电路收到的数据可以不同,当然也可以有部分基础处理电路收到的数据相同;
具体地,广播数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据,各个接收数据的基础处理电路可以收到相同的数据,即广播数据可以包括所有基础处理电路均需要接收到的数据。分发数据可以包括:部分基础处理电路需要接收到的数据。主处理电路可以通过一次或多次广播将该广播数据发送给所有分支处理电路,分支处理电路该广播数据转发给所有的基础处理电路。
可选的,上述主处理电路的向量运算器电路可以执行向量运算,包括但不限于:两个向量加减乘除,向量与常数加、减、乘、除运算,或者对向量中的每个元素执行任意运算。其中,连续的运算具体可以为,向量与常数加、减、乘、除运算、激活运算、累加运算等等。
每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。
分支处理电路和基础电路的连接结构可以是任意的,不局限在图7a的H型结构。可选的,主处理电路到基础电路是广播或分发的结构,基础电路到主处理电路是收集(gather)的结构。广播,分发和收集的定义如下:
所述主处理电路到基础电路的数据传递方式可以包括:
主处理电路与多个分支处理电路分别相连,每个分支处理电路再与多个基础电路分别相连。
主处理电路与一个分支处理电路相连,该分支处理电路再连接一个分支处理电路,依次类推,串联多个分支处理电路,然后,每个分支处理电路再与多个基础电路分别相连。
主处理电路与多个分支处理电路分别相连,每个分支处理电路再串联多个基础电路。
主处理电路与一个分支处理电路相连,该分支处理电路再连接一个分支处理电路,依次类推,串联多个分支处理电路,然后,每个分支处理电路再串联多个基础电路。
分发数据时,主处理电路向部分或者全部基础电路传输数据,各个接收数据的基础电路收到的数据可以不同;
广播数据时,主处理电路向部分或者全部基础电路传输数据,各个接收数据的基础电路收到相同的数据。
收集数据时,部分或全部基础电路向主处理电路传输数据。需要说明的,如图7a所示的芯片装置可以是一个单独的物理芯片,当然在实际应用中,该芯片装置也可以集成在其他的芯片内(例如CPU,GPU),本申请具体实施方式并不限制上述芯片装置的物理表现形式。
参阅图7c,图7c为一种芯片装置的数据分发示意图,如图7c的箭头所示,该箭头为数据的分发方向,如图7c所示,主处理电路接收到外部数据以后,将外部数据拆分以后,分发至多个分支处理电路,分支处理电路将拆分数据发送至基本处理电路。
参阅图7d,图7d为一种芯片装置的数据回传示意图,如图7d的箭头所示,该箭头为数据的回传方向,如图7d所示,基本处理电路将数据(例如内积计算结果)回传给分支处理电路,分支处理电路在回传至主处理电路。
对于输入数据,具体的可以为向量、矩阵、多维(三维或四维及以上)数据,对于输入数据的一个具体的值,可以称为该输入数据的一个元素。
本披露实施例还提供一种如图7a所示的计算单元的计算方法,该计算方法应用与神经网络计算中,具体的,该计算单元可以用于对多层神经网络中一层或多层的输入数据与权值数据执行运算。
具体的,上述所述计算单元用于对训练的多层神经网络中一层或多层的输入数据与权值数据执行运算;
或所述计算单元用于对正向运算的多层神经网络中一层或多层的输入数据与权值数据执行运算。
上述运算包括但不限于:卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏执运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
GEMM计算是指:BLAS库中的矩阵-矩阵乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*op(P)+beta*C,其中,S和P为输入的两个矩阵,C 为输出矩阵,alpha和beta为标量,op代表对矩阵S或P的某种操作,此外,还会有一些辅助的整数作为参数来说明矩阵的S和P的宽高;
GEMV计算是指:BLAS库中的矩阵-向量乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*P+beta*C,其中,S为输入矩阵,P为输入的向量, C为输出向量,alpha和beta为标量,op代表对矩阵S的某种操作。
在实际应用中,本申请上述压缩单元具体可设计或应用至本申请实施例中以下电路中的任一个或多个中:主处理电路、分支处理电路连接以及基础处理电路。关于所述压缩单元以及所述压缩单元涉及的数据处理具体可参见前述实施例中所述,这里不再赘述。
申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种数据处理方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种数据处理方法的部分或全部步骤。
在一些实施例里,还公开了一种芯片,其包括了上述用于执行数据处理方法所对应的神经网络处理器。
在一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。
在一些实施例里,公开了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
以上所述的具体实施例,对本发明实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。
Claims (18)
1.一种计算装置,其特征在于,包括运算单元、指令控制单元、存储单元以及压缩单元;
所述指令控制单元,用于获取运算指令,将所述运算指令译码为第一微指令和第二微指令,并将所述第一微指令发送给所述压缩单元,将所述第二微指令发送给所述运算单元;
所述存储单元,用于存储输入数据、处理后的输入数据、运算指令以及运算结果,所述输入数据包括至少一个输入神经元和/或至少一个权值,所述处理后的输入数据包括处理后的输入神经元和/或处理后的权值;
所述压缩单元,用于根据所述第一微指令对所述输入数据进行处理,以得到所述处理后的输入数据;
所述运算单元,用于根据所述第二微指令对所述处理后的输入数据进行处理,以得到所述运算结果。
2.根据权利要求1所述的计算装置,其特征在于,
所述运算单元,具体用于获取第一缓存数据和第二缓存数据,根据所述第二微指令对所述第一缓存数据和第二缓存数据进行处理,得到所述运算结果;
其中,所述第一缓存数据和/或所述第二缓存数据与所述处理后的输入数据相关,且所述第一缓存数据和所述第二缓存数据不同。
3.根据权利要求1所述的计算装置,其特征在于,
所述压缩单元,具体用于根据所述第一微指令,确定针对所述输入数据的处理方式,所述处理方式包括以下中的至少一项:剪枝处理、量化处理以及编码处理;
所述压缩单元,还用于根据所述处理方式,对所述输入数据进行对应的处理,以得到处理后的输入数据。
4.根据权利要求3所述的计算装置,其特征在于,所述压缩单元还包括控制单元,在所述压缩单元内部通过所述控制单元对所述处理方式对应的运算状态进行修改,以实现多种处理方式的数据处理;所述运算状态包括以下中的至少一项:第一状态、第二状态、第三状态以及第四状态,其中,
所述第一状态,用于指示所述压缩单元处于初始状态,不进行任何数据处理;
所述第二状态与所述剪枝处理关联,用于指示所述压缩单元将进行数据的剪枝处理;
所述第三状态与所述量化处理关联,用于指示所述压缩单元将进行数据的量化处理;
所述第四状态与所述编码处理关联,用于指示所述压缩单元将进行数据的编码处理。
5.根据权利要求3所述的计算装置,其特征在于,当所述处理方式为剪枝处理时,
所述压缩单元,具体用于根据所述剪枝处理,将绝对值大于第一阈值的所述输入数据进行删除,以得到处理后的输入数据。
6.根据权利要求5所述的计算装置,其特征在于,
所述压缩单元,具体用于根据位置关系数据,采用所述剪枝处理将绝对值大于第一阈值的所述输入数据进行删除,以得到处理后的输入数据;
其中,所述位置关系数据包括以下中的任一项:输入神经元的位置关系数据、输入权值的位置关系数据、由输入神经元的位置关系数据和输入权值的位置关系确定而得的位置关系数据。
7.根据权利要求6所述的计算装置,其特征在于,所述位置关系数据可用直接索引或步长索引的形式表示。
8.根据权利要求3所述的计算装置,其特征在于,当所述处理方式为量化处理时,
所述压缩单元,具体用于根据所述量化处理,将所述输入数据进行聚类和量化,以得到处理后的输入数据。
9.根据权利要求3所述的计算装置,其特征在于,当所述处理方式为编码处理时,
所述压缩单元,具体用于根据所述编码处理,将所述输入数据进行预设编码格式的编码,以得到处理后的输入数据;其中,所述预设编码格式为用户侧或装置侧自定义设置的。
10.根据权利要求2-9中任一项所述的计算装置,其特征在于,所述计算装置还包括指令缓存单元、直接存储访问单元、第一输入缓存单元和第二输入缓存单元;
所述指令缓存单元,用于缓存所述运算指令;
所述直接存储访问单元,用于在所述存储单元与所述指令缓存单元、所述第一输入缓存单元、所述第二输入缓存单元和所述输出缓存单元之间进行数据的读写;
所述指令缓存单元,用于缓存所述直接存储访问单元读取所述神经网络指令;
所述第一输入缓存单元,用于缓存所述直接存储访问单元读取的第一缓存数据;
所述第二输入缓存单元,用于缓存所述直接存储访问单元读取的第二缓存数据,所述第一缓存数据和/或所述第二缓存数据与所述处理后的输入数据相关,且所述第一缓存数据和所述第二缓存数据不同。
11.根据权利要求10所述的计算装置,其特征在于,所述计算装置还包括输出缓存单元;
所述输出缓存单元,用于缓存所述运算结果。
12.一种使用计算装置进行数据处理的方法,其特征在于,所述计算装置包括运算单元、指令控制单元、存储单元以及压缩单元,所述方法包括:
所述指令控制单元获取运算指令,将所述运算指令译码为第一微指令和第二微指令,并将所述第一微指令发送给所述压缩单元,将所述第二微指令发送给所述运算单元;
所述压缩单元根据所述第一微指令对获取的输入数据进行处理,得到处理后的输入数据;其中,所述输入数据包括至少一个输入神经元和/或至少一个输入数据,所述处理后的输入数据包括处理后的输入神经元和/或处理后的输入数据;
所述运算单元根据所述第二微指令对所述处理后的输入数据进行处理,得到运算结果。
13.根据权利要求12所述的方法,其特征在于,所述运算单元根据所述第二微指令对所述处理后的输入数据进行处理,得到运算结果包括:
所述运算单元获取第一缓存数据和第二缓存数据,并根据所述第二微指令对所述第一缓存数据和第二缓存数据进行处理,得到运算结果;
其中,所述第一缓存数据和/或所述第二缓存数据与所述处理后的输入数据相关,且所述第一缓存数据和所述第二缓存数据不同。
14.根据权利要求12或13所述的方法,其特征在于,
所述压缩单元根据所述第一微指令对所述输入数据进行处理,得到处理后的输入数据包括:
所述压缩单元根据所述第一微指令,确定针对所述输入数据的处理方式;所述处理方式包括以下中的至少一项:剪枝处理、量化处理以及编码处理;
所述压缩单元根据所述处理方式,对所述输入数据进行对应的处理,以得到处理后的输入数据。
15.根据权利要求14所述的方法,其特征在于,所述压缩单元还包括控制单元,在所述压缩单元内部通过所述控制单元对所述处理方式对应的运算状态进行修改,以实现多种处理方式的数据处理;所述运算状态包括以下中的至少一项:第一状态、第二状态、第三状态以及第四状态,其中,
所述第一状态,用于指示所述压缩单元处于初始状态,不进行任何数据处理;
所述第二状态与所述剪枝处理关联,用于指示所述压缩单元将进行数据的剪枝处理;
所述第三状态与所述量化处理关联,用于指示所述压缩单元将进行数据的量化处理;
所述第四状态与所述编码处理关联,用于指示所述压缩单元将进行数据的编码处理。
16.一种芯片,其特征在于,所述芯片包括如上权利要求12-15任意一项所述的计算装置。
17.一种电子设备,其特征在于,所述电子设备包括如上权利要求16所述的芯片。
18.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求12-15任意一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810161816.0A CN110196734A (zh) | 2018-02-27 | 2018-02-27 | 一种计算装置及相关产品 |
PCT/CN2019/075975 WO2019165939A1 (zh) | 2018-02-27 | 2019-02-23 | 一种计算装置及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810161816.0A CN110196734A (zh) | 2018-02-27 | 2018-02-27 | 一种计算装置及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110196734A true CN110196734A (zh) | 2019-09-03 |
Family
ID=67751215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810161816.0A Pending CN110196734A (zh) | 2018-02-27 | 2018-02-27 | 一种计算装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110196734A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112244853A (zh) * | 2020-10-26 | 2021-01-22 | 生物岛实验室 | 边缘计算节点的制造方法和边缘计算节点 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106682650A (zh) * | 2017-01-26 | 2017-05-17 | 北京中科神探科技有限公司 | 基于嵌入式深度学习技术的移动终端人脸识别方法和*** |
CN106779075A (zh) * | 2017-02-16 | 2017-05-31 | 南京大学 | 一种计算机中采用剪枝方法改进的神经网络 |
CN106991477A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种人工神经网络压缩编码装置和方法 |
CN107301453A (zh) * | 2016-04-15 | 2017-10-27 | 北京中科寒武纪科技有限公司 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
CN107316078A (zh) * | 2016-04-27 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 用于执行人工神经网络自学习运算的装置和方法 |
CN107491811A (zh) * | 2017-09-01 | 2017-12-19 | 中国科学院计算技术研究所 | 用于加速神经网络处理器的方法和***及神经网络处理器 |
-
2018
- 2018-02-27 CN CN201810161816.0A patent/CN110196734A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106991477A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种人工神经网络压缩编码装置和方法 |
CN107301453A (zh) * | 2016-04-15 | 2017-10-27 | 北京中科寒武纪科技有限公司 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
CN107316078A (zh) * | 2016-04-27 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 用于执行人工神经网络自学习运算的装置和方法 |
CN106682650A (zh) * | 2017-01-26 | 2017-05-17 | 北京中科神探科技有限公司 | 基于嵌入式深度学习技术的移动终端人脸识别方法和*** |
CN106779075A (zh) * | 2017-02-16 | 2017-05-31 | 南京大学 | 一种计算机中采用剪枝方法改进的神经网络 |
CN107491811A (zh) * | 2017-09-01 | 2017-12-19 | 中国科学院计算技术研究所 | 用于加速神经网络处理器的方法和***及神经网络处理器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112244853A (zh) * | 2020-10-26 | 2021-01-22 | 生物岛实验室 | 边缘计算节点的制造方法和边缘计算节点 |
CN112244853B (zh) * | 2020-10-26 | 2022-05-13 | 生物岛实验室 | 边缘计算节点的制造方法和边缘计算节点 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109086076B (zh) | 神经网络处理装置及其执行向量点积指令的方法 | |
CN109284823A (zh) | 一种运算装置及相关产品 | |
CN109740739A (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN109032670A (zh) | 神经网络处理装置及其执行向量复制指令的方法 | |
CN107957976A (zh) | 一种计算方法及相关产品 | |
CN109740754A (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN110163353A (zh) | 一种计算装置及方法 | |
CN109858613A (zh) | 一种深度神经网络的压缩方法、***及终端设备 | |
CN110276447A (zh) | 一种计算装置及方法 | |
CN110163350A (zh) | 一种计算装置及方法 | |
CN110196735A (zh) | 一种计算装置及相关产品 | |
CN107957977A (zh) | 一种计算方法及相关产品 | |
CN109993291A (zh) | 集成电路芯片装置及相关产品 | |
CN108960420B (zh) | 处理方法及加速装置 | |
CN109389218A (zh) | 数据压缩方法及压缩装置 | |
CN110196734A (zh) | 一种计算装置及相关产品 | |
CN108108189A (zh) | 一种计算方法及相关产品 | |
CN109389209A (zh) | 处理装置及处理方法 | |
US20200125937A1 (en) | Integrated circuit chip device and related product | |
CN110490317A (zh) | 神经网络运算装置及运算方法 | |
CN109993292A (zh) | 集成电路芯片装置及相关产品 | |
CN109740729A (zh) | 运算方法、装置及相关产品 | |
CN110197268A (zh) | 集成电路芯片装置及相关产品 | |
CN112580772B (zh) | 卷积神经网络的压缩方法及装置 | |
CN109102074B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190903 |
|
RJ01 | Rejection of invention patent application after publication |