CN110197270A - 集成电路芯片装置及相关产品 - Google Patents

集成电路芯片装置及相关产品 Download PDF

Info

Publication number
CN110197270A
CN110197270A CN201810164332.1A CN201810164332A CN110197270A CN 110197270 A CN110197270 A CN 110197270A CN 201810164332 A CN201810164332 A CN 201810164332A CN 110197270 A CN110197270 A CN 110197270A
Authority
CN
China
Prior art keywords
data block
circuit
data
treated
broadcast
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
Application number
CN201810164332.1A
Other languages
English (en)
Other versions
CN110197270B (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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201810164332.1A priority Critical patent/CN110197270B/zh
Priority to PCT/CN2019/075979 priority patent/WO2019165940A1/zh
Publication of CN110197270A publication Critical patent/CN110197270A/zh
Application granted granted Critical
Publication of CN110197270B publication Critical patent/CN110197270B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)

Abstract

本披露提供一种集成电路芯片装置及相关产品,所述装置用于执行的神经网络的训练,该神经网络包含n层,所述n取值范围为大于等于2的整数,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括第一映射电路,所述多个基础处理电路中至少一个电路包括第二映射电路,所述第一映射电路以及所述第二映射电路均用于执行神经网络运算中的各个数据的压缩处理。本披露提供的技术方案具有计算量小,功耗低的优点。

Description

集成电路芯片装置及相关产品
技术领域
本披露涉及神经网络领域,尤其涉及一种集成电路芯片装置及相关产品。
背景技术
人工神经网络(Artificial Neural Network,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于CPU (Central Processing Unit,中央处理器)或GPU(英文:Graphics Processing Unit,图形处理器) 来实现神经网络的正向运算,此种正向运算的计算量大,功耗高。
发明内容
本披露实施例提供了一种集成电路芯片装置及相关产品,可提升计算装置的处理速度,提高效率。
第一方面,提供一种执行的神经网络的训练集成电路芯片装置,所述装置用于执行的神经网络的训练,该神经网络包含n层,所述n取值范围为大于等于2的整数,其特征在于,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括第一映射电路,所述多个基础处理电路中至少一个电路(即部分或全部基础处理电路)包括第二映射电路,所述第一映射电路以及所述第二映射电路均用于执行神经网络运算中的各个数据的压缩处理;
所述集成电路芯片装置,用于接收训练指令,依据该训练指令确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果;
所述主处理电路,还用于依据所述第n输出结果得到第n输出结果梯度,依据所述训练指令获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为广播数据块和分发数据块;依据所述第n反向运算指令的运算控制确定启动第一映射电路对第一数据块进行处理,得到处理后的第一数据块;所述第一数据块包括所述分发数据块和/或所述广播数据块;依据所述第n反向运算指令将处理后的第一数据块发送至与所述主处理电路相连的基础处理电路中的至少一个基础处理电路;
所述多个基础处理电路,用于依据所述第n反向运算指令的运算控制确定是否启动第二映射电路对第二数据块进行处理,依据处理后的第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;所述第二数据块为所述基础处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;
所述主处理电路,还用于对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;
所述集成电路芯片装置,还用于将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括至少二个权值。
第二方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第一方面提供的集成电路芯片装置。
第三方面,提供一种组合处理装置,所述组合处理装置包括:第二方面提供的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
第四方面,提供一种芯片,所述芯片集成第一方面的装置、第二方面的装置或第三方面的装置。
第五方面,提供一种电子设备,所述电子设备包括第四方面的芯片。
可以看出,通过本披露实施例,提供映射电路将数据块压缩处理后再进行运算,节省了传输资源以及计算资源,所以其具有功耗低,计算量小的优点。
附图说明
图1是一种神经网络的训练方法示意图。
图1a是一种神经网络的正向运算示意图。
图1b是一种神经网络运算的示意图。
图2a为卷积输入数据示意图。
图2b为卷积核示意图。
图2c为输入数据的一个三维数据块的运算窗口示意图。
图2d为输入数据的一个三维数据块的另一运算窗口示意图。
图2e为输入数据的一个三维数据块的又一运算窗口示意图.
图3是一种神经网络芯片的结构示意图。
图4a为矩阵乘以矩阵示意图。
图4b为矩阵乘以矩阵的方法流程图。
图4c为矩阵乘以向量示意图。
图4d为矩阵乘以向量的方法流程图。
图4e为一种神经网络训练示意图。
图4f为另一种神经网络训练示意图。
图4g为神经网络正向与反向运算示意图。
图4h为神经网络训练多层结构示意图。
图5为本披露实施例流提供的一种神经网络芯片的结构示意图;
图6a-图6b为本申请实施例提供的两种映射电路的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本披露方案,下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
在第一方面提供的装置中,所述集成电路芯片装置,用于接收训练指令,依据该训练指令确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n 层正向运算得到正向运算的第n输出结果;
所述主处理电路,还用于依据所述第n输出结果得到第n输出结果梯度,依据所述训练指令获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为广播数据块和分发数据块;依据所述第n反向运算指令的运算控制确定启动第一映射电路对第一数据块进行处理,得到处理后的第一数据块;所述第一数据块包括所述分发数据块和/或所述广播数据块;依据所述第n反向运算指令将处理后的第一数据块发送至与所述主处理电路相连的基础处理电路中的至少一个基础处理电路;
所述多个基础处理电路,用于依据所述第n反向运算指令的运算控制确定是否启动第二映射电路对第二数据块进行处理,依据处理后的第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;所述第二数据块为所述基础处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;
所述主处理电路,还用于对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;
所述集成电路芯片装置,还用于将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括至少二个权值。
在第一方面提供的装置中,当所述第一数据块包括分发数据块和广播数据块时,所述主处理电路,具体用于启动所述第一映射电路对所述分发数据块和所述广播数据块进行处理得到处理后的分发数据块以及该分发数据块关联的标识数据块,处理后的广播数据块以及该广播数据块关联的标识数据块;将所述处理后的分发数据块以及该分发数据块关联的标识数据块进行拆分处理得到多个基本数据块以及所述基本数据块各自关联的标识数据块,将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路,将所述处理后的广播数据块以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路;其中,所述标识数据块具体可用直接索引或者步长索引的方式来表示,可选的还可用列表的列表(List of Lists,LIL)、坐标列表(Coordinatelist,COO)、压缩稀疏行(Compressed Sparse Row,CSR)、压缩稀疏列 (Compressed SparseColumn,CSC)、(ELL Pack,ELL)以及混合(Hybird,HYB)等方式表示,本申请不做限定。
以所述标识数据块用直接索引的方式表示为例,所述标识数据块具体可为是由0和1构成的数据块,其中,0表示数据块中包含的数据(如权值或输入神经元)的绝对值小于或等于第一阈值,1表示数据块中包含的数据(如权值或输入神经元)的绝对值大于第一阈值,第一阈值为用户侧或装置侧自定义随机设置的,例如0.05、0等等。
为节省数据传输量、提高数据传输效率,在所述主处理电路向所述基础处理电路发送数据的过程中,具体可将所述多个基本数据块中的目标数据以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路;可选,还可将所述处理后的广播数据块中的目标数据以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路。其中,所述目标数据是指数据块中绝对值大于第一阈值的数据,或者是指数据块(这里具体可为处理后的分发数据块或处理后的广播数据块)中的非0数据。
相应地,所述基础处理电路,具体用于启动所述第二映射电路根据所述广播数据块关联的标识数据块和所述基本数据块关联的标识数据获得连接标识数据块,并根据所述连接标识数据块对所述广播数据块和所述基本数据块进行处理得到处理后的广播数据块和基本数据块;对所述处理后的广播数据块和基本数据块执行反向运算得到运算结果,将所述运算结果发送至所述主处理电路;其中。所述反向运算包括但不限于以下中的任一项或多项的组合:卷积运算(即内积运算)、乘积运算、偏执运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合;
所述主处理电路,用于对所述运算结果处理得到所述指令结果。
例如,分发数据块为M1行N1列的矩阵,基本数据块为M2行N2列的矩阵,其中M1>M2,N1>N2。相应地,该分发数据块关联的标识数据块同样也为M1行N1列的矩阵,该基本数据块关联的标识数据块同样为M2行N2列的矩阵。以基本数据块为2*2的矩阵为例,设为第一阈值为0.05,则该基本数据块关联的标识数据块为关于第一映射电路和第二映射电路对数据块的处理将在后文进行具体阐述。
在第一方面提供的装置中,当所述第一数据块包括分发数据块时,所述主处理电路,具体用于启动所述第一映射电路对所述分发数据块进行处理得到处理后的分发数据块以及该分发数据块关联的标识数据块,或者启动所述第一映射电路根据预存的所述分发数据块关联的标识数据块对所述分发数据块进行处理得到处理后的分发数据块;将所述处理后的分发数据块以及该分发数据块关联的标识数据块进行拆分处理得到多个基本数据块以及所述基本数据块各自关联的标识数据块,将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路,将所述广播数据块广播至与其连接的基础处理电路;
所述基础处理电路,具体用于启动所述第二映射电路根据所述基本数据块关联的标识数据块对所述广播数据块进行处理,得到处理后的广播数据块;对所述处理后的广播数据块和所述处理后的基本数据块执行反向运算得到运算结果,将所述运算结果发送至所述主处理电路。
在可选实施例中,所述主处理电路,还具体用于将所述广播数据块或处理后的广播数据块以及该广播数据块关联的标识数据块进行拆分处理得到多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块;将所述多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块通过一次或多次广播给所述基础处理电路;其中,所述多个部分广播数据块组合形成所述广播数据块或处理后的广播数据块。
相应地,所述基础处理电路,具体用于启动所述第二映射电路根据所述部分广播数据块关联的标识数据块以及所述基本数据块关联的标识数据块得到连接标识数据块;根据所述连接标识数据对所述部分广播数据块以及所述基本数据块进行处理得到处理后的部分广播数据块以及处理后的基本数据块;对所述处理后的部分广播数据块以及所述处理后的基本数据块执行反向运算。
其中,该连接标识数据块是通过对所述基本数据块关联的标识数据块和所述部分广播数据块关联的标识数据块进行逐元素与操作而获得的数据块。可选的,该连接标识数据块用于表示两个数据块(具体为基本数据块以及广播数据块)中数据均大于绝对值的数据。具体在后文进行详述。
例如,分发数据块关联的标识数据块为2*3的矩阵部分广播数据块关联的标识数据块为2*2的矩阵则对应获得的连接标识数据块为
在第一方面提供的装置中,当所述第一数据块包括广播数据块时,所述主处理电路,具体用于启动所述第一映射电路对所述广播数据块进行处理,得到处理后的广播数据块以及该广播数据块关联的标识数据块,或者启动所述第一映射电路根据预存的所述广播数据块关联的标识数据块对所述广播数据块进行处理得到处理后的广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块;将所述多个基本数据块分发至与其连接的基础处理电路,将所述处理后的广播数据块以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路;
所述基础处理电路,具体用于启动所述第二映射电路根据所述广播数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的广播数据块和所述处理后的基本数据块执行反向运算得到运算结果,将所述运算结果发送至所述主处理电路。
在可选实施例中,所述主处理电路,还具体用于将所述处理后的广播数据块和该广播数据块关联的标识数据块进行拆分处理得到多个部分广播数据块以及所述多个部分广播数据块关联的标识数据块;将所述多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块通过一次或多次广播给所述基础处理电路;其中,所述多个部分广播数据块组合形成所述广播数据块或处理后的广播数据块。
相应地,所述基础处理电路具体用于根据所述部分广播数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的基本数据块以及所述部分广播数据块执行反向运算。
在第一方面提供的装置中,所述主处理电路,具体用于将该广播数据块(具体可为所述广播数据块或者处理后的广播数据块)通过一次广播发送至与其连接的所述基础处理电路。
在第一方面提供的装置中,所述基础处理电路,具体用于将该基本数据块(同理可为所述基本数据块或处理后的基本数据块)与该广播数据块执行反向运算处理得到反向运算结果,将所述反向运算结果累加得到运算结果,将所述运算结果发送至所述主处理电路。
在第一方面提供的装置中,所述基础处理电路,具体用于该基本数据块与该广播数据块执行反向运算处理得到处理结果,将所述处理结果累加得到运算结果,将所述运算结果发送至所述主处理电路;
所述主处理电路,用于对所述运算结果累加后得到累加结果,将该累加结果排列得到所述指令结果。
在第一方面提供的装置中,所述主处理电路,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至所述基础处理电路;所述多个部分广播数据块组合形成所述广播数据块。
在第一方面提供的装置中,所述主处理电路,具体用于如所述第一运算指令的类型为乘法指令,确定所述输入数据为分发数据块,所述权值数据为广播数据块;如所述第一运算指令的类型为卷积指令,确定所述输入数据为广播数据块,所述权值数据为分发数据块。
在第一方面提供的装置中,所述基础处理电路,具体用于将该部分广播数据块(具体可为部分广播数据块或者处理后的部分广播数据块)与该基本数据块执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主处理电路。
在第一方面提供的装置中,所述基础处理电路,具体用于复用n次该部分广播数据块执行该部分广播数据块与该n个基本数据块内积运算得到n个部分处理结果,将n个部分处理结果分别累加后得到n个部分运算结果,将所述n个部分运算结果发送至主处理电路,所述n为大于等于2 的整数。
在第一方面提供的装置中,所述n层的反向运算还包括:偏执运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
在第一方面提供的装置中,所述主处理电路包括:主寄存器或主片上缓存电路;
所述基础处理电路包括:基本寄存器或基本片上缓存电路。
在第一方面提供的装置中,所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路或数据重排电路中的一种或任意组合。
在第一方面提供的装置中,所述第n输出结果梯度为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合;
所述第n层输入数据可用张量表示,其具体可为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合;
所述n层权值组数据可用张量表示,其具体可为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。
如图1所示,神经网络训练的步骤包括:
一个(多层)神经网络中的各层依次执行正向运算;
按照相反的层的顺序依次执行反向运算得到权值梯度;
用计算得到的权值的梯度去更新正向运算的权值;
这就是神经网络的训练的依次迭代,整个训练过程需要重复执行(即多次迭代计算)这个过程多次。
参阅图3,图3为一种集成电路芯片装置,所述装置用于执行的神经网络的训练,该神经网络包含n层,所述n取值范围为大于等于2的整数,其特征在于,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括第一映射电路,所述多个基础处理电路中至少一个电路包括第二映射电路,所述第一映射电路以及所述第二映射电路均用于执行神经网络运算中的各个数据的压缩处理;
所述集成电路芯片装置,用于接收训练指令,依据该训练指令确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果;
所述主处理电路,还用于依据所述第n输出结果得到第n输出结果梯度,依据所述训练指令获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为广播数据块和分发数据块;依据所述第n反向运算指令的运算控制确定启动第一映射电路对第一数据块进行处理,得到处理后的第一数据块;所述第一数据块包括所述分发数据块和/或所述广播数据块;依据所述第n反向运算指令将处理后的第一数据块发送至与所述主处理电路相连的基础处理电路中的至少一个基础处理电路;
所述多个基础处理电路,用于依据所述第n反向运算指令的运算控制确定是否启动第二映射电路对第二数据块进行处理,依据处理后的第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;所述第二数据块为所述基础处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;
所述主处理电路,还用于对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;
所述集成电路芯片装置,还用于将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括至少二个权值。
如图1a所示,为本披露实施例提供的一种神经网络的正向运算,每一层使用自己的输入数据和权值按照层的类型所指定的运算规则计算得到相应的输出数据;
神经网络的正向运算过程(也叫推理,inference)是逐层处理各层的输入数据,经过一定的计算,得到输出数据的过程,具有如下特征:
某一层的输入:
某一层的输入可以是神经网络的输入数据;
某一层的输入可以是其他层的输出;
某一层的输入可以是本层上一时刻的输出(对应于循环神经网络的情况);
某一层可以同时从多个上述输入源获取输入;
某一层的输出:
某一层的输出可以作为神经网络的输出结果;
某一层的输出可以是其它层的输入;
某一层的输出可以是下一时刻本层的输入(循环神经网络的情况);
某一层的输出可以向上述多个输出方向输出结果;
具体地,所述神经网络中的层的运算的类型包括但不限于以下几种:
卷积层(即执行卷积运算);
全连接层(即执行全连接运算);
归一化(规则化)层:包括LRN(Local Response Normalization)层,BN(BatchNormalization) 层等类型;
池化层;
激活层:包括但不限于以下类型Sigmoid层,ReLU层,PReLu层,LeakyReLu层,Tanh层;
层的反向运算,每一层的反向运算需要执行两部分运算:一部分是使用可能是稀疏表示的输出数据梯度和可能是稀疏表示的输入数据计算出权值的梯度(用于在“权值更新”步骤更新本层的权值),另一部分是使用可能是稀疏表示的输出数据梯度和可能是稀疏表示的权值,计算出输入数据梯度(用于作为反向运算中下一层的输出数据梯度以供其进行反向运算);
反向运算按照与正向运算相反的顺序,从最后一层开始反向传递梯度。
在一种可选方案中,某一层反向计算得到的输出数据梯度可以来自:
神经网络最后的损失函数(lost function或者cost function)回传的梯度;
其它层的输入数据梯度;
本层上一时刻的输入数据梯度(对应于循环神经网络的情况);
某一层可以同时从多个上述源获取输出数据梯度;
在执行完神经网络的反向运算之后,就计算出了各层的权值的梯度,在这个步骤中,所述装置的第一输入缓存和第二输入缓存分别用于存储本层的权值和权值的梯度,然后在运算单元中使用权值梯度对权值进行更新;
上文中提到的运算都是神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出数据作为下一层的输入数据进行运算(或者是对该输出数据进行某些操作再作为下一层的输入数据),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入数据梯度作为下一层的输出数据梯度进行运算(或者是对该输入数据梯度进行某些操作再作为下一层的输出数据梯度),同时将权值替换为下一层的权值;具体如图1b所示,图中虚线的箭头表示反向运算,实线的箭头表示正向运算,各图下面的标注表示图的含义。
本申请涉及的数据(即数据块中的数据)为压缩处理后的数据,具体可在第一映射电路和第二映射电路中实现。应理解的,由于神经网络是一个高计算量和高访存的算法,权值越多,计算量和访存量都会增大。特别是,针对权值较小(如为0,或小于设定数值的权值)的情况下,为提高计算速率、减小开销需对这些权值较小的数据进行压缩处理。在实际应用中,数据压缩处理在稀疏神经网络中应用,效果最为明显,如减小数据计算的工作量、减小数据额外开销,提高数据计算速率等。
以输入数据为例,阐述数据压缩处理涉及的具体实施例。所述输入数据包括但不限于至少一个输入神经元和/或至少一个权值。
第一实施例中:
第一映射电路接收到第一输入数据(具体可为主处理电路发送的待计算的数据块,如横向数据块或者竖向数据块等)后,所述第一映射电路可对所述第一输入数据进行处理,以获得处理后的第一输入数据以该第一输入数据关联的标识mask数据,该mask数据用于指示该第一输入数据的绝对值是否大于第一阈值,如0.5、0等等。
具体的,当所述第一输入数据的绝对值大于第一阈值,则保留该输入数据;否则删除该第一输入数据或将该第一输入数据置为0。例如,输入的矩阵数据块为第一阈值为0.05,则经过第一映射电路处理后可获得处理后的矩阵数据块与该矩阵数据块关联的标识数据块(也可称为mask矩阵)为
进一步地,为减少数据传输量,所述主处理电路再向与其连接的基础处理电路中分发数据时,可发送所述处理后的矩阵数据块中的目标数据(本例中即为1,0.06和0.5)以及该矩阵数据块关联的标识数据块。具体实施时,所述主处理电路可按照设定规则将所述处理后的矩阵数据块中的目标数据分发至基础处理电路中,例如按照行顺序依次发送或者按照列顺序依次等等,本申请不做限定。相应地,基础处理电路在接收到所述目标数据以及该目标数据对应关联的标识数据块后,按照设定规则(例如行顺序)将其还原为处理后的矩阵数据块。例如本例中,基础处理电路可根据接收的数据(1,0.06和0.5)以及标识数据块可获知该数据对应的矩阵数据块(即主处理电路中第一映射电路处理后的矩阵数据块)为
在本发明实施例中,该第一输入数据可为横向数据块和/或竖向数据块。
相应地,第二映射电路可利用第一输入数据关联的标识数据对第二输入数据进行处理,从而获得处理后的第二输入数据;其中第一输入数据与所述第二输入数据不同。例如当所述第一输入数据为至少一个权值时,则所述第二输入数据可为至少一个输入神经元;或者,当所述第一输入数据为至少一个输入神经元时,则所述第二输入数据可为至少一个权值。
在本发明实施例中,该第二输入数据与所述第一输入数据不同,所述第二输入数据可为以下中的任一个:横向数据块、基本数据块、竖向数据块以及部分竖向数据块。
例如,当所述第一输入数据为横向数据块时,则第二输入数据为部分竖向数据块。假设第二输入数据为矩阵数据块相应地利用上例中mask矩阵处理后,获得处理后的部分竖向数据块为由于在实际应用中,输入数据涉及的矩阵数据块维数较大,本申请这里仅为示意,本不构成限定。
第二实施例中:
所述第一映射电路可用于对第一输入数据和第二输入数据进行处理,以得到处理后的第一输入数据以及所述第一输入数据关联的第一标识mask数据、处理后的第二输入数据以及所述第二输入数据关联的第二标识mask数据。其中,所述第一mask数据或者第二mask数据用于指示第一或第二输入数据的绝对值是否大于第二阈值,该第二阈值为用户侧或装置侧自定义设置的,例如0.05、0等等。
所述处理后的第一输入数据或第二输入数据可为处理后的输入数据,也可为未处理前的输入数据。例如,第一输入数据为横向数据块,如上述例子中的矩阵数据块经过第一映射电路处理后可获得处理后的横向数据块,这里处理后的横向数据块可为原矩阵数据块也可为压缩处理后的矩阵数据块应理解的,本申请为减少数据量的传输以及基础处理电路中数据处理效率,优选地所述处理后的输入数据(如处理后的基本数据块或部分竖向数据块等)应为压缩处理后的数据。优选地,主处理电路向基础处理电路中发送的数据,具体可为所述处理后的输入数据中的目标数据,该目标数据具体可为绝对值大于预设阈值的数据,也可为非0数据等等。
相应地在基础处理电路中,第二映射电路可根据所述第一输入数据关联的第一标识数据以及所述第二输入数据关联的第二标识数据得到连接标识数据;该连接标识数据用于指示所述第一输入数据和所述第二输入数据中绝对值均大于第三阈值的数据,其中第三阈值为用户侧或装置侧自定义设置的,如0.05、0等。进一步地,所述第二映射电路可根据所述连接标识数据分别对接收的第一输入数据和第二输入数据进行处理,从而获得处理后的第一输入数据和处理后的第二输入数据。
例如,第一输入数据为矩阵数据块第二输入数据块同样也为矩阵数据块经过第一映射电路处理后可获得该第一输入数据关联的第一标识数据块以及处理后的第一输入数据块相应地获得该第二输入数据关联的第二标识数据块处理后的第二输入数据块为相应地,为提高数据传输速率,主处理电路中仅可将处理后的第一输入数据块中的目标数据1,0.06 和0.5、以及该第一输入数据块关联的第一标识数据块发送给基础处理电路;同时,将处理后的第二输入数据块中的目标数据1,1.1,0.6,0.3和0.5,以及该第二输入数据块关联的第二标识数据块发送给基础处理电路。
相应地,基础处理电路在接收到上述数据后,可通过第二映射电路对上述第一标识数据块和第二标识数据块进行逐元素与操作,得到连接标识数据块相应地,第二映射电路利用该连接标识数据块分别对所述处理后的第一输入数据块和处理后的第二输入数据块分别进行处理,从而获得处理后的第一输入数据块为处理后的第二输入数据块为其中,在基础处理电路中可根据第一标识数据块以及接收的第一数据块中的目标数据,确定出该目标数据对应所在的第一数据块(即经过第一映射电路处理后的第一数据块);相应地,根据第二标识数据块以及接收的第二数据块中的目标数据,确定出该目标数据对应所在的第二数据块(即经过第一映射电路处理后的第二数据块);然后,在第二映射电路获知连接标识数据块后,利用该连接标识数据块分别与确定的第一数据块和确定的第二数据块进行逐元素与操作,以获得经由第二映射电路处理后的第一数据块和处理后的第二数据块。
第三实施例中:
所述主处理电路中并不会设置第一映射电路,但所述主处理电路可将第三输入数据以及预存的所述第三输入数据关联的第三标识数据发送至与其连接的基础处理电路中。该基础处理电路中设置有第二映射电路。下面阐述第二映射电路涉及的数据压缩处理的具体实施例。
应理解的,所述第三输入数据包括但不限于基础数据块、部分竖向数据块、竖向数据块等。同样地,在神经网络处理器中,该第三输入数据也可为至少一个权值,和/或至少一个输入神经,本申请不做限定。
在第二映射电路中,所述第二映射电路可根据接收的第三输入数据关联的第三标识数据对所述第三输入数据进行处理,从而获得处理后的第三输入数据,以便后续对处理后的第三输入数据执行相关运算操作,如内积运算等。
例如,第二映射电路接收的第三输入数据为矩阵数据块相应地预存的该第三输入数据关联的第三标识数据块(也成mask矩阵数据块)为进一步地,第二映射电路根据第三标识数据块对第三输入数据块进行处理得到处理后的第三输入数据块具体为
此外,本发明实施例中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中的神经元和输出层中的神经元,而是对于神经网络中任意相邻的两层神经元,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,假设一个卷积神经网络有L层,K=1,2,3…L-1,对于第K层和第K+1层来说,第K层被称为输入层,该层中的神经元为上述输入神经元,第K+1层被称为输入层,该层中的神经元为上述输出神经元,即除了顶层之外,每一层都可以作为输入层,其下一层为对应的输出层。
第四实施中:
所述主处理电路中并不设置映射电路,在所述基础处理电路中设置有第一映射电路和第二映射电路。关于所述第一映射电路和第二映射电路的数据处理具体可参见前述第一实施例至第三实施例所述,这里不再赘述。
可选的,还存在第五实施例。第五实施例中,所述基础处理电路中并不设置映射电路,将所述第一映射电路和第二映射电路均设置在主处理电路中,关于所述第一映射电路和第二映射电路的数据处理具体可参见前述第一实施例至第三实施例所述,这里不再赘述。即是,主处理电路中完成数据的压缩处理,将处理后的输入数据发送给基础处理电路,以便基础处理电路利用处理后的输入数据(具体可为处理后的神经元和处理后权值)执行相应地的运算操作。
下面阐述本申请涉及映射电路的具体结构示意图。如图6a和6b示出两种可能的映射电路。其中,如图6a所示的映射电路包括比较器和选择器。关于所述比较器和选择器的数量本申请不做限定。如图6a示出一个比较器和两个选择器,其中,所述比较器用于判定输入数据是否满足预设条件。该预设条件可为用户侧或设备侧自定义设置的,例如本申请上述的所述输入数据的绝对值大于或等于预设阈值。如果满足预设条件,则比较器可确定允许输出该输入数据,该输入数据对应关联的标识数据为1;否则可确定不输出该输入数据,或者默认该输入数据为0。相应地,此时该输入数据对应关联的标识数据为0。也即是,经过该比较器后,可获知输入数据关联的标识数据。
进一步地,所述比较器对输入数据进行预设条件的判定后,可将获得的标识数据输入至选择器中,以便选择器利用该标识数据来决定是否输出相应地的输入数据,即获得处理后的输入数据。
如图6a,以所述输入数据为矩阵数据块为例,经过比较器可对该矩阵数据块中的每个数据进行预设条件的判定,从而可获得该矩阵数据块关联的标识数据块(mask矩阵)。进一步地,在第一选择器中可利用该标识数据块对所述矩阵数据块进行筛选,将所述矩阵数据块中绝对值大于或等于预设阈值(即满足预设条件)的数据进行保留,其余数据进行删除,以输出处理后的矩阵数据块。可选的,在第二选择器中还可利用该标识数据块对其他输入数据(例如第二矩阵数据块)进行处理,例如进行逐元素与操作,以将该第二矩阵数据块中绝对值大于或等于预设阈值的数据进行保留,以输出处理后的第二矩阵数据块。
应理解的,对应于上述第一和第二实施例中,所述第一映射电路的具体结构可包括至少一个比较器和至少一个选择器,例如上例中图6a中的比较器和第一选择器;所述第二映射电路的具体结果可包括一个或多个选择器,例如上例中图6a的第二选择器。
如图6b,示出另一种映射电路的结构示意图。如图6b,所述映射电路包括选择器,所述选择器的数量不做限定,可为一个,也可为多个。具体的,所述选择器用于根据输入的输入数据所关联的标识数据来对输入的所述输入数据进行选择,以将所述输入数据中绝对值大于或等于预设阈值的数据进行输出,其余数据进行删除/不输出,从而获得处理后的输入数据。
以所述输入数据为矩阵数据块为例,向所述映射电路输入该矩阵数据块以及该矩阵数据块关联的标识数据块,选择器可根据该标识数据块对所述矩阵数据块进行选择,将其绝对值大于或等于0的数据进行输出,其余数据不予输出,从而输出处理后的矩阵数据块。
应理解的,如图6b所示的结构可应用于上述第三实施例中的第二映射电路,即是上述第三实施例中的第二映射电路的具体结果可包括至少一个选择器。同理,对于主处理电路和基础处理电路中设计的第一映射电路和第二映射电路可按照如图6a和图6b所示的功能部件进行交叉组合或部件拆分,本申请不做限定。
基于前述实施例,下面示例性地给出几种神经网络正向运算的具体实现方法。当第一运算指令为卷积指令时,所述输入数据块(即输入数据块中的数据)为卷积输入数据,所述权值数据(块) 为卷积核。下面描述卷积运算,下面的图中一个方块表示一个数据,输入数据用图2a表示(N个样本,每个样本有C个通道,每个通道的特征图的高为H,宽为W),权值也即卷积核用图2b表示(有M个卷积核,每个卷积核有C个通道,高和宽分别为KH和KW)。对于输入数据的N个样本,卷积运算的规则都是一样的,下面解释在一个样本上进行卷积运算的过程,在一个样本上, M个卷积核中的每一个都要进行同样的运算,每个卷积核运算得到一张平面特征图,M个卷积核最终计算得到M个平面特征图,(对一个样本,卷积的输出是M个特征图),对于一个卷积核,要在一个样本的每一个平面位置进行内积运算,然后沿着H和W方向进行滑动,例如,图2c表示一个卷积核在输入数据的一个样本中右下角的位置进行内积运算的对应图;图2d表示卷积的位置向左滑动一格和图2e表示卷积的位置向上滑动一格。
具体的,该卷积处理的方式可以采用如图3所示的芯片结构处理,主处理电路的第一映射电路可将权值的部分或全部卷积核中的数据进行处理,得到对应的mask数据以及处理后的权值数据 (即是处理后权值的部分或全部卷积核中的数据)。
主处理电路的控制电路将权值的部分或全部卷积核中的数据(该数据可为原来的权值数据或者处理后的权值数据)发送到通过横向数据输入接口直接与主处理电路相连的那些基础处理电路 (也可以称为基础单元);同时,控制电路将与该数据对应关联的mask数据也一起发送给与主处理电路连接的基础处理电路中;
在一种可选方案中,主处理电路的控制电路将权值中某个卷积核的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3行第1个数,第2次发送第3行数据中的第2个数,第3次发送第3行的第3个数……,或者第1次发送第3 行前两个数,第二次发送第3行第3和第4个数,第三次发送第3行第5和第6个数……;)同时,控制电路将该权值中某个卷积核对应的mask数据也采用上述每次发生一个数或一部分数据给那个基础处理电路;
在一种可选方案中另一种情况是,主处理电路的控制电路将权值中某几个卷积核的数据每次各发送一个数者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第 3,4,5行每行的第1个数,第2次发送第3,4,5行每行的第2个数,第3次发送第3,4,5行每行的第 3个数……,或者第1次发送第3,4,5行每行前两个数,第二次发送第3,4,5行每行第3和第4个数,第三次发送第3,4,5行每行第5和第6个数……;)相应地,控制电路将与该权值中某几个卷积核所对应关联的mask数据也采用上述相同的方法每次发生一个数或一部分数据给那个基础处理电路;
主处理电路的控制电路把输入数据按照卷积的位置进行划分,主处理电路的控制电路将输入数据中的部分或全部卷积位置中的数据发送到通过竖向数据输入接口直接与主处理电路相连的那些基础处理电路;相应地,控制电路同样也会按照卷积的位置对于所述输入数据关联的mask数据进行划分,相应地控制电路同时也会将所述输入数据中的部分或全部卷积位置中的数据所对应的 mask数据也一起发送给与主处理电路电性连接的基础处理电路中;
在一种可选方案中,主处理电路的控制电路将输入数据中某个卷积位置的数据以及与该数据对应关联的mask数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3列第1个数,第2次发送第3列数据中的第2个数,第3次发送第3 列的第3个数……,或者第1次发送第3列前两个数,第二次发送第3列第3和第4个数,第三次发送第3列第5和第6个数……;)
在一种可选方案中另一种情况是,主处理电路的控制电路将输入数据中某几个卷积位置的数据以及与该数据对应关联的mask数据每次各发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5列每列的第1个数,第2次发送第3,4,5列每列的第2个数,第3次发送第3,4,5列每列的第3个数……,或者第1次发送第3,4,5列每列前两个数,第二次发送第3,4,5列每列第3和第4个数,第三次发送第3,4,5列每列第5和第6个数……;)
基础处理电路接收到权值的数据(具体可为权值中卷积核的数据(简称权值数据)或者与该权值数据对应关联的mask数据)之后,将该数据通过其横向的数据输出接口传输给其相连接下一个基础处理电路;基础处理电路接收到输入数据的数据(该数据可为主处理电路发送的输入数据以及该输入数据关联的标识mask数据)后,将该数据通过其竖向的数据输出接口传输给与其相连接的下一个基础处理电路;
具体的,主处理电路的控制电路可将输入数据以及该输入数据关联的mask数据一起发送给基处理电路,基础处理电路接收该输入数据以及该输入数据关联的mask数据;
每一个基础处理电路对接收到的数据进行运算;具体的,基础处理电路可启用第二映射电路根据输入数据关联的mask数据以及权值数据关联的mask数据(即权值中卷积核所关联的mask数据)得到连接标识数据;再利用连接标识数据选择输入数据以及权值数据中绝对值大于预设阈值的数据进行乘法运算;
在一种可选方案中,每个基础处理电路中若接收的数据(具体可为待计算的数据块,如权值中卷积核中的数据以及该数据关联的mask数据、输入数据或者该输入数据关联的mask数据)的数据量超过预设阈值时,该基础处理电路将不再接收新的输入数据,如主处理电路将后续发送的权值中某几个卷积核中的数据以及该数据对应关联的mask数据等等,直至基础处理电路中拥有足够的缓存/存储空间,再接收主处理电路新发送的数据。
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和/或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和/或片上缓存上;
基础处理电路计算出结果后,可以将结果从数据输出接口传输出去;
在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
具体地,如果该基础处理电路有直接与主处理电路相连接的输出接口则从该接口传输结果,如果没有,则向着能够直接向主处理电路输出的基础处理电路的方向输出结果(例如图3中,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果)。
基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
向着能够直接向主处理电路输出的方向输出结果(例如,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果);
主处理电路接收到各个基础处理电路内积运算的结果,即可得到输出结果。
使用如图3所示装置可完成张量乘张量的运算,所述张量和前文所述的数据块相同,其可为矩阵、向量、三维数据块、四位数据块以及高维数据块中的任一项或多项的组合;下面如图4b和 4d分别示出矩阵乘向量和矩阵乘矩阵运算的具体实现方法。
参阅图4a,图4a为一种矩阵乘以矩阵的运算,当所述第一运算指令所指示的正向运算为矩阵乘矩阵运算,所述输入数据为所述矩阵乘矩阵运算的第一矩阵,所述权值为所述矩阵乘矩阵运算的第二矩阵。
参阅图4b,使用如图3所示的装置完成矩阵乘矩阵的运算;
下面描述计算尺寸是M行L列的矩阵S和尺寸是L行N列的矩阵P的乘法的运算,(矩阵S 中的每一行与矩阵P的每一列长度相同,如图2d所示)所述神经网络计算装置拥有K个基础处理电路:
步骤S401b、主处理电路的控制电路将矩阵S中的每一行数据分发到K个基础处理电路中的某一个上,基础处理电路将接收到的数据保存在片上缓存和/或寄存器中;
在一种可选的方案中,所述矩阵S的数据为处理后的数据。具体的,主处理电路启用第一映射电路对矩阵S进行处理,从而获得处理后的矩阵S以及该矩阵S关联的第一标识(mask)矩阵。或者,主处理电路的第一映射电路根据预存的矩阵S关联的第一mask矩阵对矩阵S进行处理,得到处理后的矩阵S。进一步地,通过控制电路将处理后的矩阵S中的每一行数据以及该行数据对应在第一mask矩阵中对应关联的标识数据一起发送给K个基础处理电路中的某一个或多个中。在主处理电路向基础处理电路发送数据时,具体可将处理后的矩阵S中绝对值大于预设阈值的数据,或者非0数据发送给基础处理电路,以减少数据传输量。
在一种可选方案中,如果S的行数M<=K则,主处理电路的控制电路给M个基础处理电路分别分发S矩阵的一行;可选的,同时还发送由该行对应在第一标识矩阵中的行的标识数据;
在一种可选方案中,如果S的行数M>K,主处理电路的控制电路给每个基础处理电路分别分发S矩阵中一行或多行的数据。可选的,同时还发送由该一行或几行对应在第一标识矩阵中的行的标识数据;
S中有Mi行分发到第i个基础处理电路,这Mi行的集合称为Ai,如图2e表示第i个基础处理电路上将要执行的计算。
在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中:
接收的由主处理电路分发的矩阵Ai,将矩阵Ai保存在第i个基础处理电路寄存器和/或片上缓存中;优点是减少了之后的数据传输量,提高了计算效率,降低了功耗。
步骤S402b、主处理电路的控制电路将矩阵P中各部分以广播的方式传输给各个基础处理电路;
在一种可选方案中,所述矩阵P的数据(各部分)可为处理后的数据。具体的,主处理电路启用第一映射电路对矩阵P进行处理,从而获得处理后的矩阵P以及该矩阵P关联的第二标识 (mask)矩阵。或者,主处理电路的第一映射电路根据预存的矩阵P关联的第二mask矩阵对矩阵 P进行处理,得到处理后的矩阵P。进一步地,通过控制电路将处理后的矩阵P中的数据(即各部分)以及该数据对应在第二mask矩阵中对应关联的标识数据一起发送给K个基础处理电路中的某一个或多个中。在主处理电路向基础处理电路发送数据时,具体可将处理后的矩阵P中绝对值大于预设阈值的数据,或者非0数据发送给基础处理电路,以减少数据传输量。
在一种可选方案中,可以将矩阵P中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的矩阵P的数据进行充分地复用,完成对应与矩阵 Ai中每一行的内积运算;本实施例中的复用具体可以为基础处理电路在计算中重复使用,例如矩阵P的数据的复用,可以是对矩阵P的数据在多次使用。
在一种可选方案中,主处理电路的控制电路可以将矩阵P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵P的数据不进行复用,分次完成对应于矩阵Ai中的每一行的内积运算;
在一种可选方案中,主处理电路的控制电路可以将矩阵P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵P的数据进行部分复用,完成对应于矩阵Ai中的每一行的内积运算;
在一种可选方案中,每个基础处理电路,例如第i个基础处理电路,计算矩阵Ai的数据和矩阵P的数据的内积;
步骤S403b、每个基础处理电路的累加器电路将内积运算的结果进行累加并传输回主处理电路。
可选的,步骤S403b之前,基础处理电路的内积运算器需计算矩阵S和矩阵P的数据的内积,具体存在以下几种实施方案。
在一种具体实施方案中,所述基础处理电路接收到处理后的矩阵S中的数据以及该数据对应在第一mask矩阵中关联的标识数据;同时还接收到处理后的矩阵P中的数据。相应地,基础处理电路启用第二映射电路根据接收的第一mask矩阵中的标识数据对接收的矩阵P的数据进行处理,得到处理后的矩阵P的数据。进一步地,该基础处理电路启用内积运算器电路对接收的处理后的矩阵S中的数据和处理后的矩阵P的数据执行内积运算,得到内积运算的结果。
在一种具体实施方案中,所述基础处理电路接收到处理后的矩阵P中的数据以及该数据对应在第二mask矩阵中关联的标识数据;同时还接收到处理后的矩阵S中的数据。相应地,基础处理电路启用第二映射电路根据接收的第二mask矩阵中的标识数据对接收的矩阵S的数据进行处理,得到处理后的矩阵S的数据。进一步地,该基础处理电路启用内积运算器电路对接收的处理后的矩阵P的数据和处理后的矩阵S中的数据执行内积运算,得到内积运算的结果。
在一种具体实施方案中,所述基础处理电路接收到处理后的矩阵S中的数据以及该数据对应在第一mask矩阵中关联的标识数据;同时还接收到处理后的矩阵P中的数据以及该数据对应在第二mask矩阵中关联的标识数据。相应地,基础处理电路启用第二映射电路根据接收的第一mask 矩阵中的标识数据和第二mask矩阵中的标识数据得到关系标识矩阵;然后利用关系标识矩阵中的标识数据分别对接收的矩阵S中的数据和矩阵P中的数据进行处理,得到处理后的矩阵S的数据和处理后的矩阵P的数据。进一步地,启用内积运算器电路对处理后的矩阵S中的数据和处理后的矩阵P的数据执行内积运算,得到内积运算的结果。例如,第i个基础处理电路,接收到矩阵 Ai、该Ai关联的标识矩阵Bi、矩阵P以及矩阵P关联的第二标识矩阵;此时可启用第二映射电路利用Bi和第二标识矩阵获得关系标识矩阵,再利用该关系标识矩阵同时或分别对矩阵Ai和矩阵P 进行处理,得到处理后的矩阵Ai和处理后的矩阵P。接着,启用内积运算器电路对处理后的矩阵 Ai和处理后的矩阵P进行内积运算。
在一种可选方案中,基础处理电路可以将每次执行内积运算得到的部分和传输回主处理电路进行累加;
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路。
参阅图4c,为一种矩阵乘以向量的运算示意图。当所述第一运算指令所指示的正向运算为:矩阵乘向量运算,所述输入数据为所述矩阵乘向量运算的第一矩阵,所述权值为所述矩阵乘向量运算的向量。参阅图4d,图4d提供了一种矩阵乘向量的实现方法,具体可以包括:
步骤S401、主处理电路的控制电路将矩阵S中的每一行数据分发到K个基础处理电路中的某一个上,基础处理电路将接收到的分发数据保存在基础处理电路的片上缓存和/或寄存器中;
在一种可选的方案中,所述矩阵S的数据为处理后的数据。具体的,主处理电路启用第一映射电路对矩阵S进行处理,从而获得处理后的矩阵S以及该矩阵S关联的第一标识(mask)矩阵。或者,主处理电路的第一映射电路根据预存的矩阵S关联的第一mask矩阵对矩阵S进行处理,得到处理后的矩阵S。进一步地,通过控制电路将处理后的矩阵S中的每一行数据以及该行数据对应在第一mask矩阵中对应关联的标识数据一起发送给K个基础处理电路中的某一个或多个中。在主处理电路向基础处理电路发送数据时,具体可将处理后的矩阵S中绝对值大于预设阈值的数据,或者非0数据发送给基础处理电路,以减少数据传输量。例如,分发到第i个基础处理电路中处理后的矩阵S中的行的集合为Ai,共有Mi行;相应地,同时也分发有与Ai对应的标识矩阵Bi,Bi 为第一mask矩阵的一部分,共有大于或等于Mi行。
在一种可选方案中,如果矩阵S的行数M<=K则,主处理电路的控制电路给K个基础处理电路分别分发S矩阵的一行;可选的,同时还发送由该行对应在第一标识矩阵中的行的标识数据;
在一种可选方案中,如果矩阵S的行数M>K,则主处理电路的控制电路给每个基础处理电路分别分发S矩阵中一行或多行的数据。可选的,同时还发送由该一行或几行对应在第一标识矩阵中的行的标识数据;
分发到第i个基础处理电路的S中的行的集合为Ai,共有Mi个行,如图2c表示第i个基础处理电路上将要执行的计算。
在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中,可以将接收到的分发数据例如矩阵Ai保存在第i个基础处理电路的寄存器和/或片上缓存中;优点是减少了之后的分发数据的数据传输量,提高了计算效率,降低了功耗。
步骤S402、主处理电路的控制电路将向量P中的各部分以广播的方式传输给K个基础处理电路;
在一种可选方案中,所述向量P的数据(各部分)可为处理后的数据。具体的,主处理电路启用第一映射电路对向量P进行处理,从而获得处理后的向量P以及该向量P关联的第二标识 (mask)矩阵。或者,主处理电路的第一映射电路根据预存的向量P关联的第二mask矩阵对向量 P进行处理,得到处理后的向量P。进一步地,通过控制电路将处理后的向量P中的数据(即各部分)以及该数据对应在第二mask矩阵中对应关联的标识数据一起发送给K个基础处理电路中的某一个或多个中。在主处理电路向基础处理电路发送数据时,具体可将处理后的向量P中绝对值大于预设阈值的数据,或者非0数据发送给基础处理电路,以减少数据传输量。
在一种可选方案中,主处理电路的控制电路可以将向量P中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的向量P的数据进行充分地复用,完成对应与矩阵Ai中每一行的内积运算。优点是,减少从主处理电路到基础处理电路的向量 P的重复传输的数据传输量,提高执行效率,降低传输功耗。
在一种可选方案中,主处理电路的控制电路可以将向量P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量P的数据不进行复用,分次完成对应于矩阵Ai中的每一行的内积运算;优点是,减少基础处理电路内部的单次传输的向量P 的数据传输量,并可以降低基础处理电路缓存和/或寄存器的容量,提高执行效率,降低传输功耗,降低成本。
在一种可选方案中,主处理电路的控制电路可以将向量P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量P的数据进行部分复用,完成对应于矩阵Ai中的每一行的内积运算;优点是,减少从主处理电路到基础处理电路的数据传输量,也减少基础处理电路内部的数据传输量,提高执行效率,降低传输功耗。
步骤S403、K个基础处理电路的内积运算器电路计算矩阵S和向量P的数据的内积,例如第 i个基础处理电路,计算矩阵Ai的数据和向量P的数据的内积;
在一种具体实施方案中,所述基础处理电路接收到处理后的矩阵S中的数据以及该数据对应在第一mask矩阵中关联的标识数据;同时还接收到处理后的向量P中的数据。相应地,基础处理电路启用第二映射电路根据接收的第一mask矩阵中的标识数据对接收的向量P的数据进行处理,得到处理后的向量P的数据。进一步地,该基础处理电路启用内积运算器电路对接收的处理后的矩阵S中的数据和处理后的向量P的数据执行内积运算,得到内积运算的结果。例如,第i个基础处理电路,接收到矩阵Ai、该Ai关联的标识矩阵Bi以及向量P;此时可启用第二映射电路利用 Bi对向量P进行处理得到处理后的向量P;再启用内积运算器电路对矩阵Ai和处理后的向量P进行内积运算。
在一种具体实施方案中,所述基础处理电路接收到处理后的向量P中的数据以及该数据对应在第二mask矩阵中关联的标识数据;同时还接收到处理后的矩阵S中的数据。相应地,基础处理电路启用第二映射电路根据接收的第二mask矩阵中的标识数据对接收的矩阵S的数据进行处理,得到处理后的矩阵S的数据。进一步地,该基础处理电路启用内积运算器电路对接收的处理后的向量P的数据和处理后的矩阵S中的数据执行内积运算,得到内积运算的结果。例如,第i个基础处理电路,接收到矩阵Ai、处理后的向量P以及该向量P关联的第二标识矩阵;此时可启用第二映射电路利用第二标识矩阵对Ai进行处理得到处理后的矩阵Ai;再启用内积运算器电路对处理后的矩阵Ai和处理后的向量P进行内积运算。
在一种具体实施方案中,所述基础处理电路接收到处理后的矩阵S中的数据以及该数据对应在第一mask矩阵中关联的标识数据;同时还接收到处理后的向量P中的数据以及该数据对应在第二mask矩阵中关联的标识数据。相应地,基础处理电路启用第二映射电路根据接收的第一mask 矩阵中的标识数据和第二mask矩阵中的标识数据得到关系标识矩阵;然后利用关系标识矩阵中的标识数据分别对接收的矩阵S中的数据和向量P中的数据进行处理,得到处理后的矩阵S的数据和处理后的向量P的数据。进一步地,启用内积运算器电路对处理后的矩阵S中的数据和处理后的向量P的数据执行内积运算,得到内积运算的结果。例如,第i个基础处理电路,接收到矩阵 Ai、该Ai关联的标识矩阵Bi、向量P以及向量P关联的第二标识矩阵;此时可启用第二映射电路利用Bi和第二标识矩阵获得关系标识矩阵,再利用该关系标识矩阵同时或分别对矩阵Ai和向量P 进行处理,得到处理后的矩阵Ai和处理后的向量P。接着,启用内积运算器电路对处理后的矩阵 Ai和处理后的向量P进行内积运算。
步骤S404、K个基础处理电路的累加器电路将内积运算的结果进行累加得到累加结果,将累加结果以定点类型形式传输回主处理电路。
在一种可选方案中,可以将每次基础处理电路执行内积运算得到的部分和(部分和即累加结果的一部分,例如累加结果为:F1*G1+F2*G2+F3*G3+F4*G4+F5*G5,那么部分和可以为:F1*G1+ F2*G2+F3*G3的值)传输回主处理电路进行累加;优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
神经网络训练方法
在神经网络训练过程中所涉及到所有或部分数据可以是处理后的数据,具体可参见前述实施例由第一映射电路和/或第二映射电路处理获得,这里不在赘述。
需要说明的是,训练过程的不同时刻(具体来说就是不同的迭代次数或者初始化的时刻)、训练过程中的不同阶段(即正向或者反向运算)、不同的层、同一层中的不同数据块(即多个输入数据块,输出数据块),或者同一个数据块中划分的不同部分的子数据块,都可以是指处理后的数据块。
下面以一个实际的例子来说明神经网络训练的具体实现方法,如图1b所示为单层运算的神经网络训练的具体的计算示意图,如图1b实线示出单层神经网络的正向运算,如图1b虚线示出单层神经网络的反向运算。具体的,先根据输入数据与权值或参数执行本层的正向运算,得到输出数据,再根据输出数据进行预设规则的运算(该预设规则可以由厂家根据自身需要自行设定,这里并不限定该预设规则运算的具体运算步骤)得到本层的输出数据梯度。接着,可根据本层的输入数据、权值或参数、输出数据梯度执行本层神经网络的反向运算,得到本层的输入数据梯度和权值或参数的梯度,可利用计算获得的权值或参数的梯度对应更新本层的权值或参数,即完成了本层神经网络训练。
在具体实现过程中,在正向运算或反向运算过程中涉及的数据可为处理后的数据,以正向运算为例,本申请实施例提供的技术方案可为依据本层的反向运算指令确定是否启动相关映射电路 (具体可为第一映射电路和/或第二映射电路)对输入数据和/或权值进行处理,然后利用处理后的输入数据和/或权值执行本层运算。对于上述数据处理的原理可参见前述实施例中的相关阐述,这里不再赘述。应理解的,利用上述处理后的数据来执行神经网络运算,可以极大的减少计算器之间的传输开销,另外,对于计算器来说,较少比特位的数据存储的空间也较小,即存储开销会较小,计算量也会减少,即计算开销会减少,所以能够减少计算开销以及存储的开销。
下面以图4e和图4f为例,具体给出矩阵乘法和卷积的神经网络训练的结构示意图。其中,图 4e展示的本层运算方式为矩阵乘法,图4f展示的本层运算方式为卷积运算,假设本层的输入数据以及权值均为矩阵,为了方便说明这里的输入数据以矩阵I为例,权值以矩阵W为例,其中输出数据=矩阵I*矩阵W;如果矩阵I和矩阵W均为维数较大的稀疏矩阵,这里的稀疏矩阵是指矩阵中包括有绝对值小于等于预设阈值,或者为0的数据较多。维数较大可以理解为矩阵I以及矩阵W 的列数量以及行数量之和较大,即可以认为上述矩阵I以及矩阵W在存储器和/或寄存器所占空间较大以及计算量也较大,此时如果按照常规矩阵乘法处理,数据计算量较大;为提高数据处理效率,需将矩阵I以及矩阵W进行处理,然后再执行矩阵乘法的运算。
例如,矩阵I为1000*1000的稀疏矩阵,矩阵W也为1000*1000的稀疏矩阵,那么对于列数量以及行数量之和为2000,其数量很大,对应的计算量就更大,矩阵乘以矩阵的内积运算的乘法运算即109次,对于此技术方案,由于矩阵I以及矩阵W的数量很大,不可能一次将所有的数据全部传输和计算,这样同一数据可能会多次传输和计算,如果此时采用数据处理方法,对两个稀疏矩阵进行数据处理,能够很大程度上的降低矩阵I以及矩阵W的维度(即数据量),就可以极大的减少传输的数据量和计算量,进而减少传输开销和计算开销。
如图4g和4h示出多层神经网络训练的具体结构示意图。如图4g所示,虚线箭头方向示出一种反向运算。对于反向运算,其反向运算的输出为输出数据梯度;当所述输出数据梯度为多层神经网络迭代计算的最后一层,则该输出数据梯度具体为本次迭代计算的最后一层的输出数据经过预设运算(该预设运算可以由厂家根据自身需要自行设定,这里并不限定该预设运算的具体运算步骤)所得到;如过该输出数据梯度并非为多层神经网络迭代计算的最后一层,例如该输出数据梯度为本次迭代计算的第n层,那么该第n层的输出数据梯度可为第n+1层反向运算计算得到的输入数据梯度。同理可理解图4h,图4h具体可为多层卷积神经网络训练的示意图(包括正向运算和反向运算),图示中的其他操作可表示为除了卷积层之外的其他层或者层之间的操作,不做限定。
本披露还提供一种集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的训练,所述神经网络包含多层,所述集成电路芯片装置包括:处理电路以及外部接口;
所述外部接口,用于接收训练指令;
所述处理电路,用于依据该训练指令确定第一层输入数据和第一层权值数据,通过第一层输入数据和第一层权值数据执行神经网络的n层正向运算得到第n输出结果;
所述处理电路,还用于依据第n输出结果得到第n输出结果梯度,依据所述训练指令获取第n 层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;依据第n反向运算指令、第n输出结果梯度、第n层输入数据以及第n层权值组数据执行神经网络的n层反向运算得到n层运算的n个权值梯度;
所述处理电路,还用于将应用所述n个权值梯度对n层运算的n个权值进行更新。
本披露还揭露了一个神经网络运算装置,其包括一个或多个在如图3所示的芯片,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上神如图3所示的芯片时,如图3所示的芯片间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。可选的,该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
在一个实施例里,本发明公开了一种芯片(如图5),用于执行如上所述方法实施例中提供的所有或部分实施方式。
在一个实施例里,本发明公开了一种电子装置,其包括用于执行如上所述方法实施例中的所有或部分实施方式的功能单元。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。

Claims (12)

1.一种集成电路芯片装置,所述装置用于执行的神经网络的训练,该神经网络包含n层,所述n取值范围为大于等于2的整数,其特征在于,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括第一映射电路,所述多个基础处理电路中至少一个电路包括第二映射电路,所述第一映射电路以及所述第二映射电路均用于执行神经网络运算中的各个数据的压缩处理;
所述集成电路芯片装置,用于接收训练指令,依据该训练指令确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果;
所述主处理电路,还用于依据所述第n输出结果得到第n输出结果梯度,依据所述训练指令获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为广播数据块和分发数据块;依据所述第n反向运算指令的运算控制确定启动第一映射电路对第一数据块进行处理,得到处理后的第一数据块;所述第一数据块包括所述分发数据块和/或所述广播数据块;依据所述第n反向运算指令将处理后的第一数据块发送至与所述主处理电路相连的基础处理电路中的至少一个基础处理电路;
所述多个基础处理电路,用于依据所述第n反向运算指令的运算控制确定是否启动第二映射电路对第二数据块进行处理,依据处理后的第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;所述第二数据块为所述基础处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;
所述主处理电路,还用于对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;
所述集成电路芯片装置,还用于将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括至少二个权值。
2.根据权利要求1所述的集成电路芯片装置,其特征在于,当所述第一数据块包括分发数据块和广播数据块时,
所述主处理电路,具体用于启动所述第一映射电路对所述分发数据块和所述广播数据块进行处理得到处理后的分发数据块以及该分发数据块关联的标识数据块、处理后的广播数据块以及该广播数据块关联的标识数据块;将所述处理后分发数据块和该分发数据块关联的标识数据块进行拆分得到多个基本数据块以及所述多个基本数据块各自关联的标识数据块;将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路,将所述广播数据块以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路;
所述基础处理电路,用于启动所述第二映射电路依据所述基本数据块关联的标识数据块以及所述广播数据块关联的标识数据块得到连接标识数据块;根据所述连接标识数据块对所述基本数据块以及所述广播数据块进行处理,对处理后的基本数据块以及处理后的广播数据块执行反向运算得到运算结果,将所述运算结果发送至所述主处理电路。
3.根据权利要求1所述的集成电路芯片装置,其特征在于,当所述第一数据块包括分发数据块时,
所述主处理电路,具体用于启动所述第一映射电路对所述分发数据块进行处理得到处理后的分发数据块以及该分发数据块关联的标识数据块,或者启动所述第一映射电路根据预存所述分发数据块关联的标识数据块对所述分发数据块进行处理得到处理后的分发数据块;将所述处理后的分发数据块以及该分发数据块关联的标识数据块进行拆分得到多个基本数据块以及所述多个基本数据块各自关联的标识数据块;将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路;将所述广播数据块广播至与其连接的基础处理电路;
所述基础处理电路,用于启动所述第二映射电路依据所述基本数据块关联的标识数据块对所述广播数据块进行处理,对处理后的广播数据块以及所述基本数据块执行反向运算得到运算结果,将所述运算结果发送至所述主处理电路。
4.根据权利要求1所述的集成电路芯片装置,其特征在于,当所述第一数据块包括广播数据块时,
所述主处理电路,具体用于启动所述第一映射电路对所述广播数据块进行处理得到处理后的广播数据块以及该广播数据块关联的标识数据块,或者启动所述第一映射电路依据预存的所述广播数据块关联的标识数据块对所述广播数据块进行处理得到处理后的广播数据块;将所述分发数据块进行拆分得到多个基本数据块;将所述多个基本数据分发至与其连接的基础处理电路;将所述处理后的广播数据块以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路;
所述基础处理电路,用于启动所述第二映射电路依据所述广播数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的基本数据块以及所述处理后的广播数据块执行反向运算得到运算结果,将所述运算结果发送至所述主处理电路。
5.根据权利要求2-4中任一项所述的集成电路芯片装置,其特征在于,
所述基础处理电路,具体用于对该基本数据块与该广播数据块执行反向运算得到反向运算结果,将所述反向运算结果累加得到运算结果,将所述运算结果发送至所述主处理电路;
所述主处理电路,用于在对所述运算结果累加后得到累加结果,将该累加结果排列得到所述指令结果。
6.根据权利要求2-4中任一项所述的集成电路芯片装置,其特征在于,
所述主处理电路,具体用于将所述广播数据块或处理后的广播数据块通过一次广播至所述多个基础处理电路;或者,
所述主处理电路,具体用于将所述广播数据块或者处理后的广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至所述多个基础处理电路。
7.根据权利要求2-4中任一项所述的集成电路芯片装置,其特征在于,
所述主处理电路,具体用于将所述处理后的广播数据块以及该广播数据块关联的标识数据块进行拆分得到多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块;将所述多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块通过一次或多次广播至所述基础处理电路;所述多个部分广播数据块组合形成所述处理后的广播数据块;
所述基础处理电路,具体用于启动所述第二映射电路依据所述部分广播数据块关联的标识数据块以及所述基本数据块关联的标识数据块得到连接标识数据块;根据所述连接标识数据块对所述部分广播数据块以及所述基本数据块进行处理得到处理后的广播数据块以及处理后的基本数据块;对所述处理后的广播数据块以及处理后的基本数据块执行反向运算;
或者,所述基础处理电路,具体用于启动所述第二映射电路依据所述部分广播数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块,对所述处理后的基本数据以及所述部分广播数据块执行反向运算。
8.根据权利要求1所述的集成电路芯片装置,其特征在于,
所述主处理电路,具体用于如所述第n反向运算指令为乘法指令,确定所述第n层输入数据以及所述第n层权值组数据均为分发数据块,所述第n输出结果梯度为广播数据块;如第n反向运算指令为卷积指令,确定所述第n层输入数据以及所述第n层权值组数据均为广播数据块,所述第n输出结果梯度为分发数据块。
9.根据权利要求1-7任意一项所述的集成电路芯片装置,其特征在于,
所述n层的反向运算还包括:偏执运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
10.根据权利要求9所述的集成电路芯片装置,其特征在于,
所述第n输出结果梯度为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合;
所述第n层输入数据为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合;
所述n层权值组数据为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。
11.一种芯片,其特征在于,所述芯片集成如权利要求1-10任意一项所述装置。
12.一种神经网络的运算方法,其特征在于,所述方法应用在集成电路芯片装置内,所述集成电路芯片装置包括:如权利要求1-10任意一项所述的集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的训练运算。
CN201810164332.1A 2018-02-27 2018-02-27 集成电路芯片装置及相关产品 Active CN110197270B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810164332.1A CN110197270B (zh) 2018-02-27 2018-02-27 集成电路芯片装置及相关产品
PCT/CN2019/075979 WO2019165940A1 (zh) 2018-02-27 2019-02-23 集成电路芯片装置、板卡及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810164332.1A CN110197270B (zh) 2018-02-27 2018-02-27 集成电路芯片装置及相关产品

Publications (2)

Publication Number Publication Date
CN110197270A true CN110197270A (zh) 2019-09-03
CN110197270B CN110197270B (zh) 2020-10-30

Family

ID=67750971

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810164332.1A Active CN110197270B (zh) 2018-02-27 2018-02-27 集成电路芯片装置及相关产品

Country Status (1)

Country Link
CN (1) CN110197270B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110889259A (zh) * 2019-11-06 2020-03-17 北京中科胜芯科技有限公司 针对排列的块对角权重矩阵的稀疏矩阵向量乘法计算单元
US11403069B2 (en) 2017-07-24 2022-08-02 Tesla, Inc. Accelerated mathematical engine
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US11487288B2 (en) 2017-03-23 2022-11-01 Tesla, Inc. Data synthesis for autonomous control systems
US11537811B2 (en) 2018-12-04 2022-12-27 Tesla, Inc. Enhanced object detection for autonomous vehicles based on field view
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11562231B2 (en) 2018-09-03 2023-01-24 Tesla, Inc. Neural networks for embedded devices
US11567514B2 (en) 2019-02-11 2023-01-31 Tesla, Inc. Autonomous and user controlled vehicle summon to a target
US11610117B2 (en) 2018-12-27 2023-03-21 Tesla, Inc. System and method for adapting a neural network model on a hardware platform
US11636333B2 (en) 2018-07-26 2023-04-25 Tesla, Inc. Optimizing neural network structures for embedded systems
US11665108B2 (en) 2018-10-25 2023-05-30 Tesla, Inc. QoS manager for system on a chip communications
US11681649B2 (en) 2017-07-24 2023-06-20 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11734562B2 (en) 2018-06-20 2023-08-22 Tesla, Inc. Data pipeline and deep learning system for autonomous driving
US11748620B2 (en) 2019-02-01 2023-09-05 Tesla, Inc. Generating ground truth for machine learning from time series elements

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US11361457B2 (en) 2018-07-20 2022-06-14 Tesla, Inc. Annotation cross-labeling for autonomous control systems
CA3115784A1 (en) 2018-10-11 2020-04-16 Matthew John COOPER Systems and methods for training machine models with augmented data
US11816585B2 (en) 2018-12-03 2023-11-14 Tesla, Inc. Machine learning models operating at different frequencies for autonomous vehicles
US10956755B2 (en) 2019-02-19 2021-03-23 Tesla, Inc. Estimating object properties using visual image data

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
CN106447034A (zh) * 2016-10-27 2017-02-22 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN106650923A (zh) * 2015-10-08 2017-05-10 上海兆芯集成电路有限公司 具有神经存储器与神经处理单元阵列与定序器的神经网络单元
CN107301456A (zh) * 2017-05-26 2017-10-27 中国人民解放军国防科学技术大学 基于向量处理器的深度神经网络多核加速实现方法
CN107316078A (zh) * 2016-04-27 2017-11-03 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
CN107609641A (zh) * 2017-08-30 2018-01-19 清华大学 稀疏神经网络架构及其实现方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
CN106650923A (zh) * 2015-10-08 2017-05-10 上海兆芯集成电路有限公司 具有神经存储器与神经处理单元阵列与定序器的神经网络单元
CN107316078A (zh) * 2016-04-27 2017-11-03 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
CN106447034A (zh) * 2016-10-27 2017-02-22 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN107301456A (zh) * 2017-05-26 2017-10-27 中国人民解放军国防科学技术大学 基于向量处理器的深度神经网络多核加速实现方法
CN107609641A (zh) * 2017-08-30 2018-01-19 清华大学 稀疏神经网络架构及其实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YUNJI CHEN ET AL.: ""DaDianNao:A Machine-Learning Supercomputer"", 《IEEE》 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11487288B2 (en) 2017-03-23 2022-11-01 Tesla, Inc. Data synthesis for autonomous control systems
US11681649B2 (en) 2017-07-24 2023-06-20 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US11403069B2 (en) 2017-07-24 2022-08-02 Tesla, Inc. Accelerated mathematical engine
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11734562B2 (en) 2018-06-20 2023-08-22 Tesla, Inc. Data pipeline and deep learning system for autonomous driving
US11636333B2 (en) 2018-07-26 2023-04-25 Tesla, Inc. Optimizing neural network structures for embedded systems
US11983630B2 (en) 2018-09-03 2024-05-14 Tesla, Inc. Neural networks for embedded devices
US11562231B2 (en) 2018-09-03 2023-01-24 Tesla, Inc. Neural networks for embedded devices
US11665108B2 (en) 2018-10-25 2023-05-30 Tesla, Inc. QoS manager for system on a chip communications
US11537811B2 (en) 2018-12-04 2022-12-27 Tesla, Inc. Enhanced object detection for autonomous vehicles based on field view
US11908171B2 (en) 2018-12-04 2024-02-20 Tesla, Inc. Enhanced object detection for autonomous vehicles based on field view
US11610117B2 (en) 2018-12-27 2023-03-21 Tesla, Inc. System and method for adapting a neural network model on a hardware platform
US11748620B2 (en) 2019-02-01 2023-09-05 Tesla, Inc. Generating ground truth for machine learning from time series elements
US11567514B2 (en) 2019-02-11 2023-01-31 Tesla, Inc. Autonomous and user controlled vehicle summon to a target
CN110889259A (zh) * 2019-11-06 2020-03-17 北京中科胜芯科技有限公司 针对排列的块对角权重矩阵的稀疏矩阵向量乘法计算单元
CN110889259B (zh) * 2019-11-06 2021-07-09 北京中科胜芯科技有限公司 针对排列的块对角权重矩阵的稀疏矩阵向量乘法计算单元

Also Published As

Publication number Publication date
CN110197270B (zh) 2020-10-30

Similar Documents

Publication Publication Date Title
CN110197270A (zh) 集成电路芯片装置及相关产品
CN108170640B (zh) 神经网络运算装置及应用其进行运算的方法
CN109993301A (zh) 神经网络训练装置及相关产品
CN111160542B (zh) 集成电路芯片装置及相关产品
CN109993291A (zh) 集成电路芯片装置及相关产品
CN113837922A (zh) 计算装置、数据处理方法及相关产品
US11651202B2 (en) Integrated circuit chip device and related product
CN110197275A (zh) 集成电路芯片装置及相关产品
US11710031B2 (en) Parallel processing circuits for neural networks
CN110197265A (zh) 集成电路芯片装置及相关产品
TWI787430B (zh) 積體電路晶片裝置、晶片、電子設備、及神經網絡的運算方法
CN110197273A (zh) 集成电路芯片装置及相关产品
WO2019129302A1 (zh) 集成电路芯片装置及相关产品
CN110197271A (zh) 集成电路芯片装置及相关产品
CN110197272A (zh) 集成电路芯片装置及相关产品
CN110197268A (zh) 集成电路芯片装置及相关产品
CN110197274A (zh) 集成电路芯片装置及相关产品
CN111767997B (zh) 集成电路芯片装置及相关产品
TWI768168B (zh) 集成電路芯片裝置及相關產品
CN110197266A (zh) 集成电路芯片装置及相关产品
CN110197264A (zh) 神经网络处理器板卡及相关产品
CN115470176A (zh) 计算装置、利用计算装置实施卷积运算的方法及相关产品
CN115878072A (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