CN111178492B - 计算装置及相关产品、执行人工神经网络模型的计算方法 - Google Patents

计算装置及相关产品、执行人工神经网络模型的计算方法 Download PDF

Info

Publication number
CN111178492B
CN111178492B CN201811333457.9A CN201811333457A CN111178492B CN 111178492 B CN111178492 B CN 111178492B CN 201811333457 A CN201811333457 A CN 201811333457A CN 111178492 B CN111178492 B CN 111178492B
Authority
CN
China
Prior art keywords
data
processing circuit
instruction
result
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811333457.9A
Other languages
English (en)
Other versions
CN111178492A (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.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Anhui 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 Anhui Cambricon Information Technology Co Ltd filed Critical Anhui Cambricon Information Technology Co Ltd
Priority to CN201811333457.9A priority Critical patent/CN111178492B/zh
Publication of CN111178492A publication Critical patent/CN111178492A/zh
Application granted granted Critical
Publication of CN111178492B publication Critical patent/CN111178492B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Abstract

本申请涉及一种计算装置及相关产品、执行人工神经网络模型的计算方法,该计算装置可用于执行多层人工神经网络的自学习运算,由于该计算装置的结构不同于通用处理器以及图像处理器,使得该计算装置相比较于通用处理器以及图像处理器,能够提高自学习运算的运算速度,节省运算时间,进而降低功耗。

Description

计算装置及相关产品、执行人工神经网络模型的计算方法
技术领域
本申请涉及人工神经网络技术领域,特别是涉及一种计算装置及相关产品、执行人工神经网络模型的计算方法。
背景技术
多层人工神经网络被广泛应用于模式识别,图像处理,函数逼近和优化计算等领域,多层人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。
多层人工神经网络的自学习运算,是多层人工神经网络运行过程中非常重要的一个环节。目前,多层人工神经网络的自学习预训练采用逐层训练方式,对于每一层来说,该预训练分为四个阶段:
第一阶段,输入神经元向量
Figure BDA0001860606940000011
和权值向量矩阵
Figure BDA0001860606940000012
进行点积运算得到局部诱导域,局部诱导域经过激活函数非线性变换后再采用吉布斯(Gibbs)采样计算得到一阶隐层中间值
Figure BDA0001860606940000013
第二阶段,先将权值向量矩阵的转置
Figure BDA0001860606940000014
和一阶隐层中间值的转置
Figure BDA0001860606940000015
进行点积运算,其局部诱导域经过激活函数非线性变换后再采用Gibbs采样得到一阶可见层中间值
Figure BDA0001860606940000016
第三阶段,输入一阶可见层中间值
Figure BDA0001860606940000017
和权值向量矩阵
Figure BDA0001860606940000018
进行点积运算得到局部诱导域,局部诱导域经过激活函数非线性变换后得到第二隐层中间值
Figure BDA0001860606940000019
第四阶段,根据如下公式更新权重:
Figure BDA00018606069400000110
Figure BDA00018606069400000111
Figure BDA00018606069400000112
其中,向量
Figure BDA00018606069400000113
为上述第一、三阶段进行激活函数之前向量和权重矩阵点积部分和加的偏置,向量
Figure BDA00018606069400000114
则为第二阶段时的偏置;公式中“×”表示向量的叉乘,∈则是学习率。
在传统技术中,有采用通用处理器来执行多层人工神经网络自学习运算过程的,也有图形处理器(GPU)来执行多层人工神经网络自学习运算过程的。在此以图形处理器(GPU)举例:图形处理器(GPU)是通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述自学习运算。由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对多层人工神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行多层人工神经网络运算,带来了大量的额外开销。另外GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈。另外,GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。
因此,采用上述传统技术对多层人工神经网络进行自学习运算,功耗开销偏高。
发明内容
基于此,有必要针对上述功耗开销偏高技术问题,提供一种功耗开销较低计算装置及相关产品、执行人工神经网络模型的计算方法。
一种计算装置,所述计算装置用于执行人工神经网络运算,所述计算装置包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述主处理电路包括:加法处理电路、激活处理电路以及采样单元;
所述控制器单元,用于获取输入数据以及计算指令;
所述控制器单元,还用于解析所述计算指令得到多个运算指令,并将所述多个运算指令以及所述输入数据发送给所述主处理电路,其中,所述运算指令包括第一运算指令和第二运算指令,所述输入数据包括输入神经元数据和权值数据;
所述主处理电路,用于根据所述第一运算指令将所述输入数据以及所述第二运算指令传输给所述多个从处理电路;
所述多个从处理电路,用于根据所述第二运算指令,并行执行所述输入神经元数据与所述权值数据的点积运算,得到多个第一中间结果,并将所述多个第一中间结果发送给所述主处理电路的加法处理电路;
所述加法处理电路,用于接收由所述多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将所述第一偏置参数与所述第一局部诱导域数据相加,得到第一相加结果;
所述激活处理电路,用于对所述第一相加结果进行激活运算,得到第一激活结果;
所述采样单元,用于对所述第一激活结果进行采样运算,得到第一输出神经元数据。
一种计算装置,所述计算装置用于执行人工神经网络运算,所述计算装置包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述主处理电路包括:激活运算器以及采样单元;
所述控制器单元,用于获取输入数据以及计算指令;
所述控制器单元,还用于解析所述计算指令得到多个运算指令,并将所述多个运算指令以及所述输入数据发送给所述主处理电路,其中,所述运算指令包括第一运算指令和第二运算指令,所述输入数据包括输入神经元数据和权值数据;
所述主处理电路,用于根据所述第一运算指令将所述输入数据以及所述第二运算指令传输给所述多个从处理电路;
所述多个从处理电路,用于根据所述第二运算指令,并行执行所述输入神经元数据与所述权值数据的点积运算,得到多个第一中间结果,并将所述多个第一中间结果发送给所述主处理电路的激活运算器;
所述激活运算器,用于接收由所述多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将所述第一偏置参数与所述第一局部诱导域数据相加,得到第一相加结果,以及对所述第一相加结果进行激活运算,得到第一激活结果;
所述采样单元,用于对所述第一激活结果进行采样运算,得到第一输出神经元数据。
一种人工神经网络运算装置,所述人工神经网络运算装置包括一个或多个如上述任一项所述的计算装置,所述人工神经网络运算装置用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的人工神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述人工神经网络运算装置包含多个所述计算装置时,所述多个所述计算装置间进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
一种电子设备,所述电子设备包括如上述所述的人工神经网络运算装置,通用互联接口和其他处理装置;
所述人工神经网络运算装置通过所述通用互联接口与所述其他处理装置进行交互,共同执行用户指定的计算操作。
一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及上述所述的人工神经网络运算装置;
其中,所述人工神经网络运算装置与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工神经网络运算装置与外部设备之间的数据传输;
所述控制器件,用于对所述人工神经网络运算装置的状态进行监控。
一种执行人工神经网络模型的计算方法,所述计算方法应用于计算装置,所述计算装置用于执行人工神经网络运算,所述计算装置包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述主处理电路包括:加法处理电路、激活处理电路以及采样单元;
所述控制器单元,用于获取输入数据以及计算指令;
所述控制器单元,还用于解析所述计算指令得到多个运算指令,并将所述多个运算指令以及所述输入数据发送给所述主处理电路,其中,所述运算指令包括第一运算指令和第二运算指令;
所述主处理电路,用于根据所述第一运算指令对所述输入数据执行前序处理,得到前序处理后的数据,并将所述前序处理后的数据以及第二运算指令传输给所述多个从处理电路,所述前序处理后的数据包括输入神经元数据和权值数据;
所述多个从处理电路,用于根据所述第二运算指令,并行执行所述输入神经元数据与所述权值数据的点积运算,得到多个第一中间结果,并将所述多个第一中间结果发送给所述主处理电路的加法处理电路;
所述加法处理电路,用于接收由所述多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将所述第一偏置参数与所述第一局部诱导域数据相加,得到第一相加结果;
所述激活处理电路,用于对所述第一相加结果进行激活运算,得到第一激活结果;
所述采样单元,用于对所述第一激活结果进行采样运算,得到第一输出神经元数据。
一种执行人工神经网络模型的计算方法,所述计算方法应用于计算装置,所述计算装置用于执行人工神经网络运算,所述计算装置包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述主处理电路包括:激活运算器以及采样单元;
所述控制器单元,用于获取输入数据以及计算指令;
所述控制器单元,还用于解析所述计算指令得到多个运算指令,并将所述多个运算指令以及所述输入数据发送给所述主处理电路,其中,所述运算指令包括第一运算指令和第二运算指令;
所述主处理电路,用于根据所述第一运算指令对所述输入数据执行前序处理,得到前序处理后的数据,并将所述前序处理后的数据以及第二运算指令传输给所述多个从处理电路,所述前序处理后的数据包括输入神经元数据和权值数据;
所述多个从处理电路,用于根据所述第二运算指令,并行执行所述输入神经元数据与所述权值数据的点积运算,得到多个第一中间结果,并将所述多个第一中间结果发送给所述主处理电路的激活运算器;
所述激活运算器,用于接收由所述多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将所述第一偏置参数与所述第一局部诱导域数据相加,得到第一相加结果,以及对所述第一相加结果进行激活运算,得到第一激活结果;
所述采样单元,用于对所述第一激活结果进行采样运算,得到第一输出神经元数据。
上述计算装置及相关产品、执行人工神经网络模型的计算方法,通过对多层神经网络预训练指令进行优化,处理器可仅用一条指令完成神经网络一层的预训练学习,精简了通用处理器指令的前端译码开销;同时,上述计算装置及相关产品将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。总而言之,上述计算装置及相关产品的性能功耗比远高于通用处理器以及图形处理器。
附图说明
图1是本申请实施例提供的一种计算装置的结构示意图;
图2是本申请一个实施例提供的计算装置的结构图;
图3是本申请另一个实施例提供的计算装置的结构图;
图4是本申请实施例提供的主处理电路的结构图;
图5是本申请实施例提供的另一种计算装置的结构图;
图6是本申请实施例提供的树型模块的结构示意图;
图7是本申请实施例提供的用于执行人工神经网络自学习预训练的装置中H型结构实现;
图8是本申请实施例提供的又一种计算装置的结构图;
图9是本申请实施例提供的还一种计算装置的结构图;
图10是本申请实施例提供的神经网络自学习预训练过程第一、三阶段的示例框图;
图11是本申请实施例提供的神经网络自学习预训练过程第二阶段的示例框图;
图12是本申请实施例提供的神经网络自学习预训练过程第四阶段的实例流程图;
图13是本申请实施例提供的一种组合处理装置的结构图;
图14是本申请实施例提供的一种计算装置的结构示意图;
图15是本申请实施例提供的另一种组合处理装置的结构图;
图16是本申请实施例提供的一种板卡的结构示意图;
图17是本申请实施例提供的单层神经网络自学习预训练一次迭代的实例流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,请一并参阅图1和图4,本实施例提供了一种计算装置,该计算装置用于执行人工神经网络运算。该计算装置包括:控制器单元11和运算单元12,其中,控制器单元11与运算单元12连接。该运算单元12包括:一个主处理电路101和多个从处理电路102;该主处理电路101包括:加法处理电路101a、激活处理电路101b以及采样单元101c;
控制器单元11,用于获取输入数据以及计算指令。在一种可选的实施方式中,具体地,输入数据以及计算指令的获取方式可以通过数据输入输出单元203获得,该数据输入输出单元203具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
控制器单元11,还用于解析计算指令得到多个运算指令,并将该多个运算指令以及输入数据发送给主处理电路101,其中,该运算指令包括第一运算指令和第二运算指令,该第一运算指令指在主处理电路101中进行运算过程的指令,该第二运算指令指在从处理电路102中进行运算过程的指令,输入数据包括输入神经元数据和权值数据;
主处理电路101,用于根据所述第一运算指令将该输入数据以及第二运算指令传输给所述多个从处理电路102;
多个从处理电路102,用于根据第二运算指令,并行执行输入神经元数据与权值数据的点积运算,得到多个第一中间结果,并将所述多个第一中间结果发送给主处理电路101的加法处理电路101a;
加法处理电路101a,用于接收由多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将该第一偏置参数与第一局部诱导域数据相加,得到第一相加结果;
激活处理电路101b,用于对第一相加结果进行激活运算,得到第一激活结果;
采样单元101c,用于对第一激活结果进行采样运算,得到第一输出神经元数据。
上述计算装置,通过对多层神经网络预训练指令进行优化,处理器可仅用一条指令完成神经网络一层的预训练学习,精简了通用处理器指令的前端译码开销;同时,上述计算装置及相关产品将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。总而言之,上述计算装置及相关产品的性能功耗比远高于通用处理器以及图形处理器。
可选地,输入神经元数据包括输入神经元向量
Figure BDA0001860606940000081
权值数据包括权值向量
Figure BDA0001860606940000082
第一输出神经元数据包括一阶隐层中间向量
Figure BDA0001860606940000083
此处以输入为输入神经元向量
Figure BDA0001860606940000084
为例,对获得一阶隐层中间向量
Figure BDA0001860606940000085
的运算过程进行详细说明。为了方便理解,该运算过程可以认为是人工神经网络逐层自学习运算的第一阶段。
在其中一个实施例中,具体地,主处理电路101根据第一运算指令,将广播的输入神经元向量
Figure BDA0001860606940000086
和分发的权值向量
Figure BDA0001860606940000087
发送给多个从处理电路102。多个从处理电路102根据第二运算指令,并行执行输入神经元向量
Figure BDA0001860606940000088
与权值向量
Figure BDA0001860606940000089
的点积运算,得到多个第一中间结果,并将多个第一中间结果发送给加法处理电路101a。加法处理电路101a接收由多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将第一偏置参数与第一局部诱导域数据相加,得到第一相加结果。激活处理电路101b对第一相加结果进行激活函数非线性变换,得到第一激活结果。采样单元101c对第一激活结果进行吉布斯(Gibbs)采样运算,得到一阶隐层中间向量
Figure BDA00018606069400000810
进一步地,在一个实施例中,主处理电路101,还用于根据第一运算指令,将第一输出神经元数据传输给多个从处理电路102;
多个从处理电路102,还用于获取权值数据经过转置运算后的数据,并根据第二运算指令,并行执行该第一输出神经元数据与权值数据经过转置运算后的数据的点积运算,得到多个第二中间结果,以及将该多个第二中间结果发送给加法处理电路101a;
加法处理电路101a,还用于接收由该多个第二中间结果构成的第二局部诱导域数据,以及获取第二偏置参数,并将该第二偏置参数与第二局部诱导域数据相加,得到第二相加结果;
激活处理电路101b,还用于对第二相加结果进行激活运算,得到第二激活结果;
采样单元101c,还用于对第二激活结果进行采样运算,得到第二输出神经元数据。
可选地,第二输出神经元数据包括一阶可见层中间向量
Figure BDA00018606069400000811
此处以输入为一阶隐层中间向量
Figure BDA00018606069400000812
为例,对获得一阶可见层中间向量
Figure BDA00018606069400000813
的运算过程进行详细说明。为了方便理解,该运算过程可以认为是人工神经网络逐层自学习运算的第二阶段。
在其中一个实施例中,具体地,主处理电路101根据第一运算指令,将广播的一阶隐层中间向量
Figure BDA0001860606940000091
和分发的权值向量的转置结果
Figure BDA0001860606940000092
发送给多个从处理电路102。多个从处理电路102根据第二运算指令,并行执行一阶隐层中间向量
Figure BDA0001860606940000093
与权值向量的转置结果
Figure BDA0001860606940000094
的点积运算,得到多个第二中间结果,并将多个第二中间结果发送给加法处理电路101a。加法处理电路101a接收由多个第二中间结果构成的第二局部诱导域数据,以及获取第二偏置参数,并将第二偏置参数与第二局部诱导域数据相加,得到第二相加结果。激活处理电路101b对第二相加结果进行激活函数非线性变换,得到第二激活结果。采样单元101c对第二激活结果进行吉布斯(Gibbs)采样运算,得到一阶可见层中间向量
Figure BDA0001860606940000095
进一步地,在一个实施例中,主处理电路101,还用于根据第一运算指令,将第二输出神经元数据传输给多个从处理电路102;
多个从处理电路102,还用于根据第二运算指令,并行执行第二输出神经元数据与权值数据的点积运算,得到多个第三中间结果,以及将该多个第三中间结果发送给加法处理电路101a;
加法处理电路101a,还用于接收由该多个第三中间结果构成的第三局部诱导域数据,并将第一偏置参数与第三局部诱导域数据相加,得到第三相加结果;
激活处理电路101b,还用于对第三相加结果进行激活运算,得到第三输出神经元数据。
可选地,第三输出神经元数据包括第二隐层中间向量
Figure BDA0001860606940000096
此处以输入为一阶可见层中间向量
Figure BDA0001860606940000097
为例,对获得第二隐层中间向量
Figure BDA0001860606940000098
的运算过程进行详细说明。为了方便理解,该运算过程可以认为是人工神经网络逐层自学习运算的第三阶段。
在其中一个实施例中,具体地,主处理电路101根据第一运算指令,将广播的一阶可见层中间向量
Figure BDA0001860606940000099
和分发的权值向量
Figure BDA00018606069400000910
发送给多个从处理电路102。多个从处理电路102根据第二运算指令,并行执行一阶可见层中间向量
Figure BDA00018606069400000911
和权值向量
Figure BDA00018606069400000912
的点积运算,得到多个第三中间结果,并将多个第三中间结果发送给加法处理电路101a。加法处理电路101a接收由多个第三中间结果构成的第三局部诱导域数据,以及获取第一偏置参数,并将第一偏置参数与第三局部诱导域数据相加,得到第三相加结果。激活处理电路101b对第三相加结果进行激活函数非线性变换,得到第二隐层中间向量
Figure BDA0001860606940000101
上述人工神经网络逐层自学习运算的第一阶段与第三阶段的区别在于第三阶段的输入为一阶可见层中间向量
Figure BDA0001860606940000102
计算第二隐层中间向量
Figure BDA0001860606940000103
之前不需要经过吉布斯(Gibbs)采样运算。
进一步地,在一个实施例中,所述前序处理后的数据还包括学习率;
主处理电路101,还用于根据第一运算指令,将第三输出神经元数据传输给多个从处理电路102;
多个从处理电路102,还用于根据第二运算指令,执行第一输出神经元数据与输入神经元数据对应的分量的乘积运算,得到第一乘积结果,以及执行第三输出神经元数据与第二输出神经元数据对应的分量的乘积运算,得到第二乘积结果;对该第一乘积结果与该第二乘积结果进行减法运算,得到第一减法结果,以及将该第一减法结果与学习率相乘,得到该权值数据的更新值,并根据该权值数据的更新值,更新权值数据;
多个从处理电路102,还用于根据第二运算指令,对第一输出神经元数据与第三输出神经元数据进行减法运算,得到第二减法结果,并将该第二减法结果与学习率相乘,得到第一偏置参数的更新值,以及根据该第一偏置参数的更新值,更新第一偏置参数;
多个从处理电路102,还用于根据第二运算指令,对输入神经元数据与第二输出神经元数据进行减法运算,得到第三减法结果,并将该第三减法结果与学习率相乘,得到第二偏置参数的更新值,以及根据该第二偏置参数的更新值,更新第二偏置参数。
具体地,结合上述人工神经网络逐层自学习运算的第一阶段、第二阶段以及第三阶段对应的实施例,在其中一个实施例中,从处理电路102根据如下公式更新权值:
Figure BDA0001860606940000104
Figure BDA0001860606940000105
Figure BDA0001860606940000106
其中,向量
Figure BDA0001860606940000107
为第一偏置参数,向量
Figure BDA0001860606940000108
为第二偏置参数;公式中“×”表示向量的叉乘,∈则是学习率。
本申请提供的技术方案将运算单元12设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路102即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
对于神经网络中的运算可以为神经网络中的一层的运算。对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元12中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值。在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元12中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
本申请实施例中的计算装置可用于多层人工神经网络的自学习预训练,人工神经网络包括两层或者两层以上的多个神经元。人工神经网络的自学习预训练采用逐层训练,从第一层神经元开始训练直至最后一层神经元。对于每一层神经元来说,采用上述人工神经网络逐层自学习运算的四个阶段的一种或多种,可提高运算速度,并大大降低处理器的性能功耗。
在另一个实施例中,还提供了一种计算装置,所述计算装置用于执行人工神经网络运算,所述计算装置包括:运算单元12以及控制器单元11;所述运算单元12包括:一个主处理电路101和多个从处理电路102;所述主处理电路101包括:激活运算器以及采样单元101c;
所述控制器单元11,用于获取输入数据以及计算指令;
所述控制器单元11,还用于解析所述计算指令得到多个运算指令,并将所述多个运算指令以及所述输入数据发送给所述主处理电路101,其中,所述运算指令包括第一运算指令和第二运算指令;
所述主处理电路101,用于根据所述第一运算指令对所述输入数据执行前序处理,得到前序处理后的数据,并将所述前序处理后的数据以及第二运算指令传输给所述多个从处理电路102,所述前序处理后的数据包括输入神经元数据和权值数据;
所述多个从处理电路102,用于根据所述第二运算指令,并行执行所述输入神经元数据与所述权值数据的点积运算,得到多个第一中间结果,并将所述多个第一中间结果发送给所述主处理电路的激活运算器;
所述激活运算器,用于接收由所述多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将所述第一偏置参数与所述第一局部诱导域数据相加,得到第一相加结果,以及对所述第一相加结果进行激活运算,得到第一激活结果;
所述采样单元101c,用于对所述第一激活结果进行采样运算,得到第一输出神经元数据。
进一步地,在一个实施例中,所述主处理电路101,还用于根据所述第一运算指令,将所述第一输出神经元数据传输给所述多个从处理电路102;
所述多个从处理电路101,还用于获取所述权值数据经过转置运算后的数据,并根据所述第二运算指令,并行执行所述第一输出神经元数据与所述权值数据经过转置运算后的数据的点积运算,得到多个第二中间结果,以及将所述多个第二中间结果发送给所述激活运算器;
所述激活运算器,还用于接收由所述多个第二中间结果构成的第二局部诱导域数据,以及获取第二偏置参数,并将所述第二偏置参数与所述第二局部诱导域数据相加,得到第二相加结果,以及对所述第二相加结果进行激活运算,得到第二激活结果;
所述采样单元101c,还用于对所述第二激活结果进行采样运算,得到第二输出神经元数据。
进一步地,在一个实施例中,所述主处理电路101,还用于根据所述第一运算指令,将所述第二输出神经元数据传输给所述多个从处理电路102;
所述多个从处理电路102,还用于根据所述第二运算指令,并行执行所述第二输出神经元数据与所述权值数据的点积运算,得到多个第三中间结果,以及将所述多个第三中间结果发送给所述激活运算器;
所述激活运算器,还用于接收由所述多个第三中间结果构成的第三局部诱导域数据,并将所述第一偏置参数与所述第三局部诱导域数据相加,得到第三相加结果,以及对所述第三相加结果进行激活运算,得到第三输出神经元数据。
上述计算装置,直接通过激活运算器执行获取偏置向量,并将该偏置向量与多个中间结果相加,得到相加结果的步骤。故其省去了加法处理电路101a这一硬件结构,节省了计算装置中硬件单元所占用的空间,使得该计算装置更为便携。
可选地,在一个实施例中,该激活运算器可包括I/O模块、查找模块、存储模块和计算模块。所有模块均可通过硬件电路实现。
I/O模块,即输入输出模块,该模块用于输入数据(自变量)x1并将其传递给查找模块,以及用于从计算模块中接收最终计算结果y并将其输出。这里提一下,x1可以直接是原始数据,也可以是原始数据x0经过预处理后的数据,为了叙述简明,不提及预处理过程。
存储模块B中,存放计算过程需要的插值函数f1,f2,...,fN,fp对应第p段插值函数。数据范围预先被分为N个大区间A1,A2,...,AN,大区间Ap的左、右端点分别用infAp、supAp表示。每个大区间Ap又分为M个小区间
Figure BDA0001860606940000131
fp的定义如下:
Figure BDA0001860606940000132
该模块存放所有的斜率
Figure BDA0001860606940000133
和截距
Figure BDA0001860606940000134
p=1,2,...,N,q=1,2,...,M+2。M的值要根据数据精度来定,M越大,精度越高,即由插值结果近似得到的函数值越接近真实值。
查找模块中,数据范围预先被分为N个大区间A1,A2,...,AN,首先得到i,使得自变量x1落在Ai中。之后,依次加载(load)存储模块中的第p段插值表,1≤p≤i-1,对用于第p次查找的自变量xp,查找相应的斜率
Figure BDA0001860606940000135
和截距
Figure BDA0001860606940000136
并与自变量xp一起传入计算模块中。而后该模块接收从计算模块得到的计算结果xp+1当作自变量,做第p+1次的查找。最后,load存储模块中的第i段插值表,做最后一次查找。
计算模块中,接收从查找模块中得到的自变量xp、斜率
Figure BDA0001860606940000137
和截距
Figure BDA0001860606940000138
计算
Figure BDA0001860606940000139
若1≤p≤i-1,将计算结果xp+1传递给查找模块做下一次的查找;若p=i,将计算结果xi+1传递给I/O模块当作最终输出结果y,即y=xi+1
根据本申请实施例的又一方面,提供一种进行函数值获取的方法。该方法可应用于以上所述的激活运算器。
S1,I/O模块将数据x1(自变量)输入,并将其传递给查找模块,转步骤S2;
S2,查找模块中,首先得到i,使得自变量x1落在大区间Ai中。初始化一个循环标志变量p,p=0。转步骤S3;
S3,存储模块中存放着N段插值表。查找模块load存储模块中的第p段插值表进行查找,并将查找结果,即函数插值表中对应的斜率
Figure BDA0001860606940000141
和截距
Figure BDA0001860606940000142
和自变量xp一起传递给计算模块,转步骤S4;
S4,计算模块算出相应的插值函数值:
Figure BDA0001860606940000143
循环标志变量p=p+1,判断p的值——如果p<i,转步骤S5;否则,转步骤S6;
S5,将计算结果xp+1传递给查找模块(此时该结果作为自变量参与之后的查找和计算),转步骤S3;
S6,将计算结果xi+1传递给I/O模块,转步骤S7;
S7,I/O模块输出结果y=xi+1
在一个实施例中,采样单元101c包括随机数生成器以及比较器,随机数生成器,用于生成神经网络各层节点训练前最初的权值或者用于生成随机数;比较器,用于比较所述随机数与所述第一激活结果,并根据比较结果完成所述采样运算。
具体地,随机数生成器生成神经网络各层节点训练前最初的权值,使得权值矩阵得以初始化,或者用于生成随机数。在随机数生成器生成随机数后,比较器将该随机数与第一激活结果进行比较,若随机数大于第一激活结果,则采样值置0或者1(0表示无效,1表示有效),完成吉布斯(Gibbs)采样运算。
在一个可选的实施例中,如图5所示,所述运算单元12包括:树型模块40。该树型模块40包括:一个根端口401和多个支端口404。该树型模块40的根端口连接所述主处理电路101,该树型模块40的多个支端口分别连接多个从处理电路102中的一个从处理电路102;
上述树型模块40具有收发功能,例如如图5所示,该树型模块40即为发送功能,如图14所示,该树型模块40即为接收功能。
所述树型模块40,用于转发所述主处理电路101与所述多个从处理电路102之间的数据块、权值以及运算指令。具体地,上述多个第一中间结果逐级拼成完整的第一局部诱导域数据、多个第二中间结果逐级拼成完整的第二局部诱导域数据以及多个第三中间结果逐级拼成完整的第三局部诱导域数据可在树型模块40中完成。
可选地,该树型模块40为计算装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块40具有零层节点,即无需该树型模块40。
可选地,该树型模块40可以为n叉树结构,例如,如图6所示的二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路102可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图6所示的倒数第一层的节点。
在一个具体的实施例中,请参阅图7,上述树型模块40构成主处理电路101和多个从处理电路102之间的数据通路,并具有不同的结构。树型模块40可以是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。
此处以上述计算装置在人工神经网络逐层自学习运算的过程为例,来对树型模块40的工作原理进行说明:
在该过程的第一阶段和第三阶段中,主处理电路101内的输入向量通过树型模块40发送给各个从处理电路102。当从处理电路102的计算过程完成后,每个从处理电路102输出的神经元的值会在树型模块40中逐级拼成一个完整的由局部诱导域组成的向量,作为中间结果向量返回主处理电路101进行激活运算并根据需求进行Gibbs采样。
在该过程的第二阶段中,主处理电路101中的一阶隐层中间向量
Figure BDA0001860606940000151
通过树型模块40发送给各个从处理电路102。当从处理电路102的计算过程完成后,下游两个节点返回的向量会在当前节点相加成一个向量并返回给上游节点,作为中间结果向量返回主处理电路101进行激活运算以及Gibbs采样。
在另一种可选的实施例中,运算单元12如图3所示,可以包括一个主处理电路101和多个从处理电路102。在一个实施例里,如图3所示,多个从处理电路102呈阵列分布;每个从处理电路102与相邻的其他从处理电路102连接,主处理电路101连接所述多个从处理电路102中的k个从处理电路102,所述k个从处理电路102为:第1行的n个从处理电路102、第m行的n个从处理电路102以及第1列的m个从处理电路102,需要说明的是,如图3所示的K个从处理电路102仅包括第1行的n个从处理电路102、第m行的n个从处理电路102以及第1列的m个从处理电路102,即该k个从处理电路102为多个从处理电路102中直接与主处理电路101连接的从处理电路102。
K个从处理电路102,用于在所述主处理电路101以及多个从处理电路102之间的数据以及指令的转发。具体地,上述多个第一中间结果逐级拼成完整的第一局部诱导域数据、多个第二中间结果逐级拼成完整的第二局部诱导域数据以及多个第三中间结果逐级拼成完整的第三局部诱导域数据可在主处理电路101与K个从处理电路102之间的连线中完成。
可选地,如图4所示,该主处理电路101还可以包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
转换处理电路,用于将主处理电路101接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路101接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路,用于执行主处理电路101内数据的激活运算;
加法处理电路,用于执行加法运算或累加运算。
所述主处理电路101,用于将确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路102;
所述多个从处理电路102,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将中间结果传输给所述主处理电路101;
所述主处理电路101,用于将多个从处理电路102发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元11。
所述从处理电路102包括:
乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路(可选地),用于将接收到的数据块或乘积结果转发。
累加处理电路,用于对该乘积结果执行累加运算得到中间结果或计算结果。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
下面通过神经网络运算指令来说明如图1所示的计算装置的具体计算方法。对于神经网络运算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),其中,即将权值w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果s。
在一种可选的实施例中,运算单元12如图2所示,可以包括分支处理电路103;其具体地连接结构如图2所示,其中,
主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或多个从处理电路102连接;
分支处理电路103,用于执行转发主处理电路101与从处理电路102之间的数据或指令。具体地,上述多个第一中间结果逐级拼成完整的第一局部诱导域数据、多个第二中间结果逐级拼成完整的第二局部诱导域数据以及多个第三中间结果逐级拼成完整的第三局部诱导域数据可在分支处理电路103中完成。
在一种可选的实施例中,以神经网络运算中的全连接运算为例,过程可以为:y=f(wx+b),其中,x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电路102,其实现的方法可以为:
控制器单元11从存储单元10内获取输入神经元矩阵x,权值矩阵w以及全连接运算指令,将输入神经元矩阵x,权值矩阵w以及全连接运算指令传输给主处理电路101;
主处理电路101确定该输入神经元矩阵x为广播数据,确定权值矩阵w为分发数据,将权值矩阵w拆分成8个子矩阵,然后将8个子矩阵通过树型模块40分发给8个从处理电路102,将输入神经元矩阵x广播给8个从处理电路102,
从处理电路102并行执行8个子矩阵与输入神经元矩阵x的乘法运算和累加运算得到8个中间结果,将8个中间结果发送给主处理电路101;
主处理电路101,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至控制器单元11,控制器单元11将该最终结果y输出或存储至存储单元10内。
如图1所示的计算装置执行神经网络正向运算指令的方法具体可以为:
控制器单元11从指令缓存单元110内提取神经网络正向运算指令、神经网络运算指令对应的操作域以及至少一个操作码,控制器单元11将该操作域传输至直接内存访问单元50,将该至少一个操作码发送至运算单元12。
控制器单元11从存储单元10内提取该操作域对应的权值w和偏置b(当b为0时,不需要提取偏置b),将权值w和偏置b传输至运算单元12的主处理电路101,控制器单元11从存储单元10内提取输入数据Xi,将该输入数据Xi发送至主处理电路101。
主处理电路101依据该至少一个操作码确定为乘法运算,确定输入数据Xi为广播数据,确定权值数据为分发数据,将权值w拆分成n个数据块;
控制器单元11的指令处理单元111依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路101,主处理电路101将该乘法指令、输入数据Xi以广播的方式发送给多个从处理电路102,将该n个数据块分发给该多个从处理电路102(例如具有n个从处理电路102,那么每个从处理电路102发送一个数据块);多个从处理电路102,用于依据该乘法指令将该输入数据Xi与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至主处理电路101,该主处理电路101依据该累加指令将多个从处理电路102发送的中间结果执行累加运算得到累加结果,依据该偏置指令将该累加结果执行加偏置b得到最终结果,将该最终结果发送至该控制器单元11。
另外,加法运算和乘法运算的顺序可以调换。
本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
可选地,上述计算装置还可以包括:存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器201、缓存202中的一个或任意组合。具体地,所述缓存202,用于存储所述计算指令;所述寄存器201,用于存储所述输入数据和标量;所述缓存202为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
在一个可选的实施例中,请一并参阅图8和图9,存储单元10包括神经元缓存单元63、权值缓存单元64和权值梯度缓存单元;该神经元缓存单元63、权值缓存单元64和权值梯度缓存单元分别与从处理电路102连接。神经元缓存单元63,用于缓存从处理电路102的输入神经元数据和输出神经元数据。权值缓存单元64,用于缓存从处理电路102在计算过程中需要的权值数据。权值梯度缓存单元,用于缓存从处理电路102在更新权值过程中需要的权值梯度数据。
进一步地,上述存储单元10还用于缓存主处理电路101在计算过程中需要的输入神经元数据和输出神经元数据。
此处以上述计算装置在人工神经网络逐层自学习运算的过程为例,来对从处理电路102的运算过程进行说明:
从处理电路102实现人工神经网络逐层自学习运算过程中前三阶段并行的前半部分以及第四阶段中公式(1)中权值的更新。
以人工神经网络深度信念网络(DBN)的自学习运算为例,将第一阶段的输入神经元向量
Figure BDA0001860606940000191
与权值向量
Figure BDA0001860606940000192
的点积运算、第二阶段的一阶隐层中间向量
Figure BDA0001860606940000193
与权值向量
Figure BDA0001860606940000194
的转置结果
Figure BDA0001860606940000195
的点积运算以及第三阶段的一阶可见层中间向量
Figure BDA0001860606940000196
和权值向量
Figure BDA0001860606940000197
的点积运算可以划分为不相关的并行计算子任务。在第一阶段和第三阶段中,每个从处理电路102利用相同的输入神经元向量,和输出神经元向量的不同分量相对应的权值进行点积运算,分别得到输出神经元向量中不同分量相应的部分和,多次累加后得到其各自对应输出分量的这些部分和在树型模块40中逐级拼成一个完整局部诱导域向量。每个从处理电路102只需要计算出本电路对应输出神经元向量相应的局部诱导域即可。不同的局部诱导域分量在树型模块40中逐级拼成一个完整的局部诱导域向量传输给主处理电路101进行激活运算以及随后的采样运算。在第二阶段中,每个从处理电路102只计算输入的一阶隐层中间向量
Figure BDA0001860606940000198
和权值向量
Figure BDA0001860606940000199
的转置结果的点积,得到的每个输出向量都是最终结果的一个待累加的部分和,这些部分和在树型模块40中逐级两两相加得到最后的结果。每个从处理电路102输出一阶可见层中间向量
Figure BDA00018606069400001910
的局部诱导域的部分和,所有的部分和在树型模块40中完成求和运算得到局部诱导域向量。前三个阶段计算得到中间值用于更新权值,从处理电路102基于前三个阶段运算的输出进行后续运算得出权值更新值。在最后一阶段,从处理电路102按照公式(1)更新权值也可分为三个小步骤:
(1)、每个从处理电路102计算输入的一阶隐层中间向量
Figure BDA00018606069400001911
和输入神经元向量
Figure BDA00018606069400001912
中相应的部分标量的乘积中间值;
(2)、每个从处理电路102计算输入的第二隐层中间向量
Figure BDA00018606069400001913
和一阶可见层中间向量
Figure BDA00018606069400001914
中相应的部分标量的乘积,并计算与第一小阶段乘积中间值的向量差值;
(3)、每个从处理电路102计算第二小阶段的差值和学习率的乘积,得到权值更新值,之后和权值
Figure BDA0001860606940000201
进行向量减法,得到更新后的权值。
值得注意的是,上述三个小阶段仅仅是对从处理电路102更新权值一个实例描述,应用者可以进行细节的微调,例如,可以将第一小阶段的乘积的计算和第二小阶段中乘积的计算互换;或者可以将第三小阶段乘以学习率提前到第二小阶段甚至是拆分至前两个小阶段。
在其中一个实施例中,图10示出了根据本申请实施例的神经网络自学习预训练过程第一阶段和第三阶段的示例框图。在不同从处理电路102中,树型模块40广播的输入神经元向量分别与该从处理电路102的权值向量进行点积运算,得到对应的输出神经元向量的局部诱导域部分和,所有这些输出局部诱导域值组成中间结果向量。该中间结果向量经过加偏置向量以及激活运算得到该层神经网络的最终输出神经元向量,公式描述为out=f(w*in+b),其中out输出向量、in是输入向量、b是偏置向量,w是权值矩阵,f是激活函数。每个从处理电路102的权值向量是权值矩阵中与该从处理电路102相对应的列向量。树型模块40将输入向量[I0,…,In]发送给所有的从处理电路102,暂存在神经元缓存单元63中。对于第i个从处理电路102,计算其相应的权值向量[Wi0,…,Win]与输入向量的点积。从处理电路102输出的结果经过树型模块40拼成完整的局部诱导域向量并返回给主处理电路101,在主处理电路101中进行激活函数运算以及其可能的Gibbs采样,得到最后的输出向量[O0,O1,…,On]。
在其中一个实施例中,图11示出了根据本申请实施例的神经网络自学习预训练过程第二阶段的示例框图。计算输出一阶可见层中间向量
Figure BDA0001860606940000202
的过程为:树型模块40广播一阶隐层中间向量
Figure BDA0001860606940000203
每个从处理电路102执行一阶隐层中间向量
Figure BDA0001860606940000204
与权值向量
Figure BDA0001860606940000205
的转置对应的列[Wi0,…,Win]的乘积,得到的每个输出向量都是一阶可见层中间向量
Figure BDA0001860606940000206
的局部诱导域的一个待累加的部分和,这些部分和在树型模块40中逐级两两相加得到最后的局部诱导域。计算得到的局部诱导域返回给主处理电路101,在主处理电路101中进行激活函数运算以及Gibbs采样,得到一阶可见层中间向量
Figure BDA0001860606940000207
在其中一个实施例中,图12示出了根据本申请实施例的神经网络自学习预训练过程第四阶段的流程图。最后一阶段,从处理电路102按照公式(1)更新权值也可分为三个小步骤:
1、每个从处理电路102计算输入的一阶隐层中间向量
Figure BDA0001860606940000211
和输入神经元
Figure BDA0001860606940000212
中相应的部分标量的乘积中间值缓存至权值梯度缓存单元;此小阶段类似于图11所示的第二阶段的框图,不过其输入分别为一阶隐层中间向量
Figure BDA0001860606940000213
和输入神经元向量
Figure BDA0001860606940000214
2、每个从处理电路102计算输入的第二隐层中间向量
Figure BDA0001860606940000215
和一阶可见层中间向量
Figure BDA0001860606940000216
中相应的部分标量的乘积,并计算和第一小阶段中间值的向量差值并缓存至权值梯度缓存单元;
3、每个从处理电路102计算第二小阶段的差值和学习率的乘积,得到权值更新值,之后和权值
Figure BDA0001860606940000217
进行向量减法,得到更新后的权值。
值得注意的是,上述三个小阶段仅仅是对从处理电路102更新权值一个实例描述,应用者可以进行细节的微调,例如,可以将第一小阶段的乘积的计算和第二小阶段中乘积的计算互换;或者可以将第三小阶段乘以学习率提前到第二小阶段甚至是拆分至前两个小阶段。
在其中一个实施例中,还提供了在上述计算装置中执行人工神经网络正向运算的指令集。具体地,指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令,其中:
CONFIG指令,用于在每层人工神经网络运算开始前配置当前层计算所需要的各种常数;
COMPUTE指令,用于执行每层人工神经网络的算术逻辑计算;
IO指令,用于从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令,用于清空当前计算装置内部所有控制信号缓存队列中的控制信号,使NOP指令之前的所有指令全部执行完毕,NOP指令本身不包含任何操作;
JUMP指令,用于所述控制器单元从指令缓存单元读取的下一条指令地址进行跳转,以实现控制流的跳转;
MOVE指令,用于将计算装置内部地址空间某一地址的数据搬运至所述计算装置内部地址空间的另一地址,所述MOVE指令的执行过程独立于运算单元12,在执行过程中不占用所述运算单元12的资源。
在一个可选的实施例中,主处理电路101也可以包括一个控制器单元11,该控制器单元11可以包括主指令处理单元111,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元11,该另一个控制器单元11包括从指令处理单元111,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该计算指令的结构可以如下表所示。
操作码 寄存器或立即数 寄存器/立即数 ...
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
Figure BDA0001860606940000221
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
可选地,在一个实施例中,该控制器单元11包括:指令缓存单元110、指令处理单元111和存储队列单元113;
指令缓存单元110,用于存储所述人工神经网络运算关联的计算指令;
所述指令处理单元111,用于对所述计算指令解析得到多个运算指令;
存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
可选地,该控制器单元11或运算单元12还可以包括:
依赖关系处理单元112,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令缓存单元110内,在所述第零运算指令执行完毕后,从所述指令缓存单元110提取所述第一运算指令传输至所述运算单元12;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
本申请还揭露了一个机器学习运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请还揭露了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。图13为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构如图15所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其他处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。参阅图16,图16提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件390可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
基于同一发明构思,本申请一实施例还提供了一种执行人工神经网络模型的计算方法,所述计算方法应用于计算装置,所述计算装置用于执行人工神经网络运算,所述计算装置包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述主处理电路包括:加法处理电路、激活处理电路以及采样单元;
所述控制器单元,用于获取输入数据以及计算指令;
所述控制器单元,还用于解析所述计算指令得到多个运算指令,并将所述多个运算指令以及所述输入数据发送给所述主处理电路,其中,所述运算指令包括第一运算指令和第二运算指令;
所述主处理电路,用于根据所述第一运算指令对所述输入数据执行前序处理,得到前序处理后的数据,并将所述前序处理后的数据以及第二运算指令传输给所述多个从处理电路,所述前序处理后的数据包括输入神经元数据和权值数据;
所述多个从处理电路,用于根据所述第二运算指令,并行执行所述输入神经元数据与所述权值数据的点积运算,得到多个第一中间结果,并将所述多个第一中间结果发送给所述主处理电路的加法处理电路;
所述加法处理电路,用于接收由所述多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将所述第一偏置参数与所述第一局部诱导域数据相加,得到第一相加结果;
所述激活处理电路,用于对所述第一相加结果进行激活运算,得到第一激活结果;
所述采样单元,用于对所述第一激活结果进行采样运算,得到第一输出神经元数据。
在其中一个实施例中,所述主处理电路,还用于根据所述第一运算指令,将所述第一输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于获取所述权值数据经过转置运算后的数据,并根据所述第二运算指令,并行执行所述第一输出神经元数据与所述权值数据经过转置运算后的数据的点积运算,得到多个第二中间结果,以及将所述多个第二中间结果发送给所述加法处理电路;
所述加法处理电路,还用于接收由所述多个第二中间结果构成的第二局部诱导域数据,以及获取第二偏置参数,并将所述第二偏置参数与所述第二局部诱导域数据相加,得到第二相加结果;
所述激活处理电路,还用于对所述第二相加结果进行激活运算,得到第二激活结果;
所述采样单元,还用于对所述第二激活结果进行采样运算,得到第二输出神经元数据。
在其中一个实施例中,所述主处理电路,还用于根据所述第一运算指令,将所述第二输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于根据所述第二运算指令,并行执行所述第二输出神经元数据与所述权值数据的点积运算,得到多个第三中间结果,以及将所述多个第三中间结果发送给所述加法处理电路;
所述加法处理电路,还用于接收由所述多个第三中间结果构成的第三局部诱导域数据,并将所述第一偏置参数与所述第三局部诱导域数据相加,得到第三相加结果;
所述激活处理电路,还用于对所述第三相加结果进行激活运算,得到第三输出神经元数据。
在一个实施例中,还提供了一种执行人工神经网络模型的计算方法,所述计算方法应用于计算装置,所述计算装置用于执行人工神经网络运算,所述计算装置包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述主处理电路包括:激活运算器以及采样单元;
所述控制器单元,用于获取输入数据以及计算指令;
所述控制器单元,还用于解析所述计算指令得到多个运算指令,并将所述多个运算指令以及所述输入数据发送给所述主处理电路,其中,所述运算指令包括第一运算指令和第二运算指令;
所述主处理电路,用于根据所述第一运算指令对所述输入数据执行前序处理,得到前序处理后的数据,并将所述前序处理后的数据以及第二运算指令传输给所述多个从处理电路,所述前序处理后的数据包括输入神经元数据和权值数据;
所述多个从处理电路,用于根据所述第二运算指令,并行执行所述输入神经元数据与所述权值数据的点积运算,得到多个第一中间结果,并将所述多个第一中间结果发送给所述主处理电路的激活运算器;
所述激活运算器,用于接收由所述多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将所述第一偏置参数与所述第一局部诱导域数据相加,得到第一相加结果,以及对所述第一相加结果进行激活运算,得到第一激活结果;
所述采样单元,用于对所述第一激活结果进行采样运算,得到第一输出神经元数据。
在其中一个实施例中,所述主处理电路,还用于根据所述第一运算指令,将所述第一输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于获取所述权值数据经过转置运算后的数据,并根据所述第二运算指令,并行执行所述第一输出神经元数据与所述权值数据经过转置运算后的数据的点积运算,得到多个第二中间结果,以及将所述多个第二中间结果发送给所述激活运算器;
所述激活运算器,还用于接收由所述多个第二中间结果构成的第二局部诱导域数据,以及获取第二偏置参数,并将所述第二偏置参数与所述第二局部诱导域数据相加,得到第二相加结果,以及对所述第二相加结果进行激活运算,得到第二激活结果;
所述采样单元,还用于对所述第二激活结果进行采样运算,得到第二输出神经元数据。
在其中一个实施例中,所述主处理电路,还用于根据所述第一运算指令,将所述第二输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于根据所述第二运算指令,并行执行所述第二输出神经元数据与所述权值数据的点积运算,得到多个第三中间结果,以及将所述多个第三中间结果发送给所述激活运算器;
所述激活运算器,还用于接收由所述多个第三中间结果构成的第三局部诱导域数据,并将所述第一偏置参数与所述第三局部诱导域数据相加,得到第三相加结果,以及对所述第三相加结果进行激活运算,得到第三输出神经元数据。
在其中一个实施例中,所述前序处理后的数据还包括学习率;
所述主处理电路,还用于根据所述第一运算指令,将所述第三输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于根据所述第二运算指令,执行所述第一输出神经元数据与所述输入神经元数据对应的分量的乘积运算,得到第一乘积结果,以及执行所述第三输出神经元数据与所述第二输出神经元数据对应的分量的乘积运算,得到第二乘积结果;对所述第一乘积结果与所述第二乘积结果进行减法运算,得到第一减法结果,以及将所述第一减法结果与所述学习率相乘,得到所述权值数据的更新值,并根据所述权值数据的更新值,更新所述权值数据;
所述多个从处理电路,还用于根据所述第二运算指令,对所述第一输出神经元数据与所述第三输出神经元数据进行减法运算,得到第二减法结果,并将所述第二减法结果与所述学习率相乘,得到所述第一偏置参数的更新值,以及根据所述第一偏置参数的更新值,更新所述第一偏置参数;
所述多个从处理电路,还用于根据所述第二运算指令,对所述输入神经元数据与所述第二输出神经元数据进行减法运算,得到第三减法结果,并将所述第三减法结果与所述学习率相乘,得到所述第二偏置参数的更新值,以及根据所述第二偏置参数的更新值,更新所述第二偏置参数。
在其中一个实施例中,所述采样单元包括随机数生成器以及比较器,所述随机数生成器,用于生成神经网络各层节点训练前最初的权值或者用于生成随机数;所述比较器,用于比较所述随机数与所述第一激活结果,并根据比较结果完成所述采样运算。
具体地,每一层神经元实现自学习预训练运算,进行多次迭代,一次迭代包括以下步骤:
S1,在指令缓存单元110的首地址处预先存入一条IO指令;
S2,运算开始,控制器单元11从指令缓存单元110的首地址读取该条IO指令,根据译出的控制信号,直接内存访问单元50从外部地址空间读取相应的所有人工神经网络运算指令,并将其缓存在指令缓存单元110中;
S3,控制器单元11接着从指令缓存单元110读入下一条IO指令,根据译出的控制信号,直接内存访问单元50从外部地址空间读取主处理电路101需要的所有数据;
S4,控制器单元11接着从指令缓存单元110读入下一条IO指令,根据译出的控制信号,直接内存访问单元50从外部地址空间读取从处理电路102需要的权值矩阵数据;
S5,控制器单元11接着从指令缓存单元110读入下一条CONFIG指令,根据译出的控制信号,装置配置该层神经网络第一阶段计算需要的各种常数;
S6,控制器单元11接着从指令缓存单元110读入下一条COMPUTE指令,根据译出的控制信号,开始第一阶段的计算:主处理电路101首先通过树型模块40将输入神经元向量
Figure BDA0001860606940000291
发给各从处理电路102,保存至神经元缓存单元63,从处理电路102从权值缓存单元64读取权值向量,从神经元缓存单元63读取输入神经元向量
Figure BDA0001860606940000301
完成输入神经元向量
Figure BDA0001860606940000302
与权值向量
Figure BDA0001860606940000303
的点积运算,将中间结果通过树型模块40返回,在树型模块40中,各从处理电路102返回的中间结果被逐级拼成完整的局部诱导域向量,主处理电路101得到树型模块40的返回值,根据COMPUTE指令译出的控制信号,从存储单元10读取偏置向量,与树型模块40返回的向量相加,然后再对相加结果做激活,并进行Gibbs采样,并将最后的一阶隐层中间向量
Figure BDA0001860606940000304
写回至存储单元10;
S7,控制器单元11接着从指令缓存单元110读入下一条CONFIG指令,根据译出的控制信号,配置该层神经网络第二阶段计算需要的各种常数;
S8,控制器单元11接着从指令缓存单元110读入下一条COMPUTE指令,根据译出的控制信号,开始第二阶段的计算:主处理电路101首先通过树型模块40将一阶隐层中间向量
Figure BDA0001860606940000305
发给各从处理电路102,保存至神经元缓存单元63,从处理电路102从权值缓存单元64读取权值向量,从神经元缓存单元63选取一阶隐层中间向量
Figure BDA0001860606940000306
完成一阶隐层中间向量
Figure BDA0001860606940000307
与权值向量的转置结果
Figure BDA0001860606940000308
的点积运算,将中间结果通过树型模块40返回,在树型模块40中,各从处理电路102返回的中间结果被逐级相加成完整的局部诱导域向量,主处理电路101得到树型模块40的返回值,根据COMPUTE指令译出的控制信号,从存储单元10读取偏置向量,与树型模块40返回的向量相加,然后再对相加结果做激活,并进行Gibbs采样,并将最后的一阶可见层中间向量
Figure BDA0001860606940000309
写回至存储单元10;
S9,控制器单元11接着从指令缓存单元110读入下一条CONFIG指令,根据译出的控制信号,装置配置该层神经网络第三阶段计算需要的各种常数,本层的配置基本和第一阶段相同,不过还需多配置一个学习率参数;
S10,控制器单元11接着从指令缓存单元110读入下一条COMPUTE指令,根据译出的控制信号,开始第三阶段的计算:主处理电路101首先通过树型模块40将一阶可见层中间向量
Figure BDA00018606069400003010
发给各从处理电路102,保存至神经元缓存单元63,从处理电路102从神经元缓存单元63读取一阶可见层中间向量
Figure BDA00018606069400003011
完成一阶可见层中间向量
Figure BDA00018606069400003012
与权值向量
Figure BDA00018606069400003013
的点积运算,将中间结果通过树型模块40返回,在树型模块40中,各从处理电路102返回的中间结果被逐级拼成完整的局部诱导域向量,主处理电路101得到树型模块40的返回值,根据COMPUTE指令译出的控制信号,从存储单元10读取偏置向量,与树型模块40返回的向量相加,然后再对相加结果做激活,并将最后的第二隐层中间向量
Figure BDA00018606069400003014
写回至存储单元10;
S11,控制器单元11接着从指令缓存单元110读入下一条COMPUTE指令,根据译出的控制信号,开始第四阶段的计算:第一小阶段主处理电路101首先通过树型模块40将输入神经元向量
Figure BDA0001860606940000311
和一阶隐层中间向量
Figure BDA0001860606940000312
发给各从处理电路102,保存至权值梯度缓存单元,第二小阶段从处理电路102从神经元缓存单元63读取一阶隐层中间向量
Figure BDA0001860606940000313
和选取输入神经元向量
Figure BDA0001860606940000314
对应的分量,完成一阶隐层中间向量
Figure BDA0001860606940000315
和相应输入神经元向量
Figure BDA0001860606940000316
的分量的乘积运算,将中间结果和从权值梯度缓存单元读取的前一小阶段缓存的中间值进行向量减法运算,并将运算得的中间结果缓存至权值梯度缓存单元,最后一小阶段从处理电路102的运算单元12从权值梯度缓存单元读取上一小阶段的中间值和学习率相乘得到权值更新值,并从权值缓存单元64读取相应的权值和权值更新值进行向量减法得到更新后的权值,并将其缓存回权值缓存单元64。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (47)

1.一种计算装置,其特征在于,所述计算装置用于执行人工神经网络运算,所述计算装置包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述主处理电路包括:加法处理电路、激活处理电路以及采样单元;
所述控制器单元,用于获取输入数据以及计算指令;
所述控制器单元,还用于解析所述计算指令得到多个运算指令,并将所述多个运算指令以及所述输入数据发送给所述主处理电路,其中,所述运算指令包括第一运算指令和第二运算指令,所述输入数据包括输入神经元数据和权值数据;
所述主处理电路,用于根据所述第一运算指令将所述输入数据以及所述第二运算指令传输给所述多个从处理电路;
所述多个从处理电路,用于根据所述第二运算指令,并行执行所述输入神经元数据与所述权值数据的点积运算,得到多个第一中间结果,并将所述多个第一中间结果发送给所述主处理电路的加法处理电路;
所述加法处理电路,用于接收由所述多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将所述第一偏置参数与所述第一局部诱导域数据相加,得到第一相加结果;
所述激活处理电路,用于对所述第一相加结果进行激活运算,得到第一激活结果;
所述采样单元,用于对所述第一激活结果进行采样运算,得到第一输出神经元数据。
2.根据权利要求1所述的计算装置,其特征在于,
所述主处理电路,还用于根据所述第一运算指令,将所述第一输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于获取所述权值数据经过转置运算后的数据,并根据所述第二运算指令,并行执行所述第一输出神经元数据与所述权值数据经过转置运算后的数据的点积运算,得到多个第二中间结果,以及将所述多个第二中间结果发送给所述加法处理电路;
所述加法处理电路,还用于接收由所述多个第二中间结果构成的第二局部诱导域数据,以及获取第二偏置参数,并将所述第二偏置参数与所述第二局部诱导域数据相加,得到第二相加结果;
所述激活处理电路,还用于对所述第二相加结果进行激活运算,得到第二激活结果;
所述采样单元,还用于对所述第二激活结果进行采样运算,得到第二输出神经元数据。
3.根据权利要求2所述的计算装置,其特征在于,
所述主处理电路,还用于根据所述第一运算指令,将所述第二输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于根据所述第二运算指令,并行执行所述第二输出神经元数据与所述权值数据的点积运算,得到多个第三中间结果,以及将所述多个第三中间结果发送给所述加法处理电路;
所述加法处理电路,还用于接收由所述多个第三中间结果构成的第三局部诱导域数据,并将所述第一偏置参数与所述第三局部诱导域数据相加,得到第三相加结果;
所述激活处理电路,还用于对所述第三相加结果进行激活运算,得到第三输出神经元数据。
4.根据权利要求3所述的计算装置,其特征在于,
所述主处理电路,还用于根据所述第一运算指令对所述输入数据执行前序处理,得到前序处理后的数据,并将所述前序处理后的数据以及第二运算指令传输给所述多个从处理电路。
5.根据权利要求4所述的计算装置,其特征在于,所述前序处理后的数据还包括学习率;
所述主处理电路,还用于根据所述第一运算指令,将所述第三输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于根据所述第二运算指令,执行所述第一输出神经元数据与所述输入神经元数据对应的分量的乘积运算,得到第一乘积结果,以及执行所述第三输出神经元数据与所述第二输出神经元数据对应的分量的乘积运算,得到第二乘积结果;对所述第一乘积结果与所述第二乘积结果进行减法运算,得到第一减法结果,以及将所述第一减法结果与所述学习率相乘,得到所述权值数据的更新值,并根据所述权值数据的更新值,更新所述权值数据;
所述多个从处理电路,还用于根据所述第二运算指令,对所述第一输出神经元数据与所述第三输出神经元数据进行减法运算,得到第二减法结果,并将所述第二减法结果与所述学习率相乘,得到所述第一偏置参数的更新值,以及根据所述第一偏置参数的更新值,更新所述第一偏置参数;
所述多个从处理电路,还用于根据所述第二运算指令,对所述输入神经元数据与所述第二输出神经元数据进行减法运算,得到第三减法结果,并将所述第三减法结果与所述学习率相乘,得到所述第二偏置参数的更新值,以及根据所述第二偏置参数的更新值,更新所述第二偏置参数。
6.根据权利要求1所述的计算装置,其特征在于,所述采样单元包括随机数生成器以及比较器,
所述随机数生成器,用于生成神经网络各层节点训练前最初的权值或者用于生成随机数;
所述比较器,用于比较所述随机数与所述第一激活结果,并根据比较结果完成所述采样运算。
7.根据权利要求1所述的计算装置,其特征在于,所述计算指令包括:
CONFIG指令,用于在每层人工神经网络运算开始前配置当前层计算所需要的各种常数;
COMPUTE指令,用于执行每层人工神经网络的算术逻辑计算;
IO指令,用于从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令,用于清空当前计算装置内部所有控制信号缓存队列中的控制信号,使NOP指令之前的所有指令全部执行完毕,NOP指令本身不包含任何操作;
JUMP指令,用于所述控制器单元从指令缓存单元读取的下一条指令地址进行跳转,以实现控制流的跳转;
MOVE指令,用于将计算装置内部地址空间某一地址的数据搬运至所述计算装置内部地址空间的另一地址,所述MOVE指令的执行过程独立于运算单元,在执行过程中不占用所述运算单元的资源。
8.根据权利要求1所述的计算装置,其特征在于,所述从处理电路包括:乘法处理电路以及累加处理电路,
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
所述累加处理电路,用于对所述乘积结果执行累加运算得到中间结果。
9.根据权利要求1所述的计算装置,其特征在于,所述计算装置还包括:存储单元和直接内存访问单元,所述存储单元包括:寄存器、缓存中的任意组合;
所述缓存,用于存储所述输入数据;
所述寄存器,用于存储所述输入数据中的标量数据;
所述缓存包括高速暂存缓存。
10.根据权利要求9所述的计算装置,其特征在于,所述存储单元包括神经元缓存单元、权值缓存单元和权值梯度缓存单元;所述神经元缓存单元、权值缓存单元和权值梯度缓存单元分别与所述从处理电路连接;
所述神经元缓存单元,用于缓存所述从处理电路的输入神经元数据和输出神经元数据;
所述权值缓存单元,用于缓存所述从处理电路在计算过程中需要的权值数据;
所述权值梯度缓存单元,用于缓存所述从处理电路在更新权值过程中需要的权值梯度数据。
11.根据权利要求1所述的计算装置,其特征在于,所述控制器单元包括:指令缓存单元、指令处理单元和存储队列单元;
所述指令缓存单元,用于存储所述人工神经网络运算关联的计算指令;
所述指令处理单元,用于对所述计算指令解析得到多个运算指令;
所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
12.根据权利要求11所述的计算装置,其特征在于,所述运算单元还包括:依赖关系处理单元;
所述依赖关系处理单元,用于确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系;若所述第一运算指令与所述第零运算指令存在关联关系,则所述依赖关系处理单元将所述第一运算指令缓存在所述指令缓存单元内,在所述第零运算指令执行完毕后,从所述指令缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,若所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
13.根据权利要求1所述的计算装置,其特征在于,所述运算单元还包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
14.根据权利要求1所述的计算装置,其特征在于,所述运算单元还包括一个或多个分支处理电路,每个分支处理电路连接至少一个从处理电路,
所述主处理电路,用于确定所述输入神经元为广播数据,权值为分发数据块,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块、广播数据以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、广播数据以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及广播数据执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到所述计算指令的结果,将所述计算指令的结果发送给所述控制器单元。
15.根据权利要求1所述的计算装置,其特征在于,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于确定所述输入神经元为广播数据,权值为分发数据,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述k个从处理电路;
所述k个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将中间结果传输给所述k个从处理电路;
所述主处理电路,用于将所述k个从处理电路发送的中间结果进行后续处理得到所述计算指令的结果,将所述计算指令的结果发送给所述控制器单元。
16.根据权利要求13-15任意一项所述的计算装置,其特征在于,所述主处理电路还包括:转换处理电路;
所述转换处理电路,用于对所述数据执行前序处理,具体为:将主处理电路接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换;或将主处理电路接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换。
17.根据权利要求13所述的计算装置,其特征在于,所述树型模块为n叉树结构,所述n为大于等于2的整数。
18.一种计算装置,其特征在于,所述计算装置用于执行人工神经网络运算,所述计算装置包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述主处理电路包括:激活运算器以及采样单元;
所述控制器单元,用于获取输入数据以及计算指令;
所述控制器单元,还用于解析所述计算指令得到多个运算指令,并将所述多个运算指令以及所述输入数据发送给所述主处理电路,其中,所述运算指令包括第一运算指令和第二运算指令,所述输入数据包括输入神经元数据和权值数据;
所述主处理电路,用于根据所述第一运算指令将所述输入数据以及所述第二运算指令传输给所述多个从处理电路;
所述多个从处理电路,用于根据所述第二运算指令,并行执行所述输入神经元数据与所述权值数据的点积运算,得到多个第一中间结果,并将所述多个第一中间结果发送给所述主处理电路的激活运算器;
所述激活运算器,用于接收由所述多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将所述第一偏置参数与所述第一局部诱导域数据相加,得到第一相加结果,以及对所述第一相加结果进行激活运算,得到第一激活结果;
所述采样单元,用于对所述第一激活结果进行采样运算,得到第一输出神经元数据。
19.根据权利要求18所述的计算装置,其特征在于,
所述主处理电路,还用于根据所述第一运算指令,将所述第一输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于获取所述权值数据经过转置运算后的数据,并根据所述第二运算指令,并行执行所述第一输出神经元数据与所述权值数据经过转置运算后的数据的点积运算,得到多个第二中间结果,以及将所述多个第二中间结果发送给所述激活运算器;
所述激活运算器,还用于接收由所述多个第二中间结果构成的第二局部诱导域数据,以及获取第二偏置参数,并将所述第二偏置参数与所述第二局部诱导域数据相加,得到第二相加结果,以及对所述第二相加结果进行激活运算,得到第二激活结果;
所述采样单元,还用于对所述第二激活结果进行采样运算,得到第二输出神经元数据。
20.根据权利要求19所述的计算装置,其特征在于,
所述主处理电路,还用于根据所述第一运算指令,将所述第二输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于根据所述第二运算指令,并行执行所述第二输出神经元数据与所述权值数据的点积运算,得到多个第三中间结果,以及将所述多个第三中间结果发送给所述激活运算器;
所述激活运算器,还用于接收由所述多个第三中间结果构成的第三局部诱导域数据,并将所述第一偏置参数与所述第三局部诱导域数据相加,得到第三相加结果,以及对所述第三相加结果进行激活运算,得到第三输出神经元数据。
21.根据权利要求20所述的计算装置,其特征在于,
所述主处理电路,还用于根据所述第一运算指令对所述输入数据执行前序处理,得到前序处理后的数据,并将所述前序处理后的数据以及第二运算指令传输给所述多个从处理电路。
22.根据权利要求21所述的计算装置,其特征在于,所述前序处理后的数据还包括学习率;
所述主处理电路,还用于根据所述第一运算指令,将所述第三输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于根据所述第二运算指令,执行所述第一输出神经元数据与所述输入神经元数据对应的分量的乘积运算,得到第一乘积结果,以及执行所述第三输出神经元数据与所述第二输出神经元数据对应的分量的乘积运算,得到第二乘积结果;对所述第一乘积结果与所述第二乘积结果进行减法运算,得到第一减法结果,以及将所述第一减法结果与所述学习率相乘,得到所述权值数据的更新值,并根据所述权值数据的更新值,更新所述权值数据;
所述多个从处理电路,还用于根据所述第二运算指令,对所述第一输出神经元数据与所述第三输出神经元数据进行减法运算,得到第二减法结果,并将所述第二减法结果与所述学习率相乘,得到所述第一偏置参数的更新值,以及根据所述第一偏置参数的更新值,更新所述第一偏置参数;
所述多个从处理电路,还用于根据所述第二运算指令,对所述输入神经元数据与所述第二输出神经元数据进行减法运算,得到第三减法结果,并将所述第三减法结果与所述学习率相乘,得到所述第二偏置参数的更新值,以及根据所述第二偏置参数的更新值,更新所述第二偏置参数。
23.根据权利要求18所述的计算装置,其特征在于,所述采样单元包括随机数生成器以及比较器,
所述随机数生成器,用于生成神经网络各层节点训练前最初的权值或者用于生成随机数;
所述比较器,用于比较所述随机数与所述第一激活结果,并根据比较结果完成所述采样运算。
24.根据权利要求18所述的计算装置,其特征在于,所述计算指令包括:
CONFIG指令,用于在每层人工神经网络运算开始前配置当前层计算所需要的各种常数;
COMPUTE指令,用于执行每层人工神经网络的算术逻辑计算;
IO指令,用于从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令,用于清空当前计算装置内部所有控制信号缓存队列中的控制信号,使NOP指令之前的所有指令全部执行完毕,NOP指令本身不包含任何操作;
JUMP指令,用于所述控制器单元从指令缓存单元读取的下一条指令地址进行跳转,以实现控制流的跳转;
MOVE指令,用于将计算装置内部地址空间某一地址的数据搬运至所述计算装置内部地址空间的另一地址,所述MOVE指令的执行过程独立于运算单元,在执行过程中不占用所述运算单元的资源。
25.根据权利要求18所述的计算装置,其特征在于,所述从处理电路包括:乘法处理电路以及累加处理电路,
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
所述累加处理电路,用于对所述乘积结果执行累加运算得到中间结果。
26.根据权利要求18所述的计算装置,其特征在于,所述计算装置还包括:存储单元和直接内存访问单元,所述存储单元包括:寄存器、缓存中的任意组合;
所述缓存,用于存储所述输入数据;
所述寄存器,用于存储所述输入数据中的标量数据;
所述缓存包括高速暂存缓存。
27.根据权利要求26所述的计算装置,其特征在于,所述存储单元包括神经元缓存单元、权值缓存单元和权值梯度缓存单元;所述神经元缓存单元、权值缓存单元和权值梯度缓存单元分别与所述从处理电路连接;
所述神经元缓存单元,用于缓存所述从处理电路的输入神经元数据和输出神经元数据;
所述权值缓存单元,用于缓存所述从处理电路在计算过程中需要的权值数据;
所述权值梯度缓存单元,用于缓存所述从处理电路在更新权值过程中需要的权值梯度数据。
28.根据权利要求18所述的计算装置,其特征在于,所述控制器单元包括:指令缓存单元、指令处理单元和存储队列单元;
所述指令缓存单元,用于存储所述人工神经网络运算关联的计算指令;
所述指令处理单元,用于对所述计算指令解析得到多个运算指令;
所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
29.根据权利要求28所述的计算装置,其特征在于,所述运算单元还包括:依赖关系处理单元;
所述依赖关系处理单元,用于确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系;若所述第一运算指令与所述第零运算指令存在关联关系,则所述依赖关系处理单元将所述第一运算指令缓存在所述指令缓存单元内,在所述第零运算指令执行完毕后,从所述指令缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,若所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
30.根据权利要求18所述的计算装置,其特征在于,所述运算单元还包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
31.根据权利要求18所述的计算装置,其特征在于,所述运算单元还包括一个或多个分支处理电路,每个分支处理电路连接至少一个从处理电路,
所述主处理电路,用于确定所述输入神经元为广播数据,权值为分发数据块,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块、广播数据以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、广播数据以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及广播数据执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到所述计算指令的结果,将所述计算指令的结果发送给所述控制器单元。
32.根据权利要求18所述的计算装置,其特征在于,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于确定所述输入神经元为广播数据,权值为分发数据,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述k个从处理电路;
所述k个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将中间结果传输给所述k个从处理电路;
所述主处理电路,用于将所述k个从处理电路发送的中间结果进行后续处理得到所述计算指令的结果,将所述计算指令的结果发送给所述控制器单元。
33.根据权利要求30-32任意一项所述的计算装置,其特征在于,所述主处理电路还包括:转换处理电路;
所述转换处理电路,用于对所述数据执行前序处理,具体为:将主处理电路接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换;或将主处理电路接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换。
34.根据权利要求30所述的计算装置,其特征在于,所述树型模块为n叉树结构,所述n为大于等于2的整数。
35.一种人工神经网络运算装置,其特征在于,所述人工神经网络运算装置包括一个或多个如权利要求1-34任一项所述的计算装置,所述人工神经网络运算装置用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的人工神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述人工神经网络运算装置包含多个所述计算装置时,所述多个所述计算装置间进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
36.一种电子设备,其特征在于,所述电子设备包括如权利要求35所述的人工神经网络运算装置,通用互联接口和其他处理装置;
所述人工神经网络运算装置通过所述通用互联接口与所述其他处理装置进行交互,共同执行用户指定的计算操作。
37.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求35所述的人工神经网络运算装置;
其中,所述人工神经网络运算装置与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工神经网络运算装置与外部设备之间的数据传输;
所述控制器件,用于对所述人工神经网络运算装置的状态进行监控。
38.一种执行人工神经网络模型的计算方法,其特征在于,所述计算方法应用于计算装置,所述计算装置用于执行人工神经网络运算,所述计算装置包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述主处理电路包括:加法处理电路、激活处理电路以及采样单元;
所述控制器单元,用于获取输入数据以及计算指令;
所述控制器单元,还用于解析所述计算指令得到多个运算指令,并将所述多个运算指令以及所述输入数据发送给所述主处理电路,其中,所述运算指令包括第一运算指令和第二运算指令;
所述主处理电路,用于根据所述第一运算指令对所述输入数据执行前序处理,得到前序处理后的数据,并将所述前序处理后的数据以及第二运算指令传输给所述多个从处理电路,所述前序处理后的数据包括输入神经元数据和权值数据;
所述多个从处理电路,用于根据所述第二运算指令,并行执行所述输入神经元数据与所述权值数据的点积运算,得到多个第一中间结果,并将所述多个第一中间结果发送给所述主处理电路的加法处理电路;
所述加法处理电路,用于接收由所述多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将所述第一偏置参数与所述第一局部诱导域数据相加,得到第一相加结果;
所述激活处理电路,用于对所述第一相加结果进行激活运算,得到第一激活结果;
所述采样单元,用于对所述第一激活结果进行采样运算,得到第一输出神经元数据。
39.根据权利要求38所述的计算方法,其特征在于,所述采样单元包括随机数生成器以及比较器,
所述随机数生成器,用于生成神经网络各层节点训练前最初的权值或者用于生成随机数;
所述比较器,用于比较所述随机数与所述第一激活结果,并根据比较结果完成所述采样运算。
40.根据权利要求39所述的计算方法,其特征在于,
所述主处理电路,还用于根据所述第一运算指令,将所述第一输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于获取所述权值数据经过转置运算后的数据,并根据所述第二运算指令,并行执行所述第一输出神经元数据与所述权值数据经过转置运算后的数据的点积运算,得到多个第二中间结果,以及将所述多个第二中间结果发送给所述加法处理电路;
所述加法处理电路,还用于接收由所述多个第二中间结果构成的第二局部诱导域数据,以及获取第二偏置参数,并将所述第二偏置参数与所述第二局部诱导域数据相加,得到第二相加结果;
所述激活处理电路,还用于对所述第二相加结果进行激活运算,得到第二激活结果;
所述采样单元,还用于对所述第二激活结果进行采样运算,得到第二输出神经元数据。
41.根据权利要求40所述的计算方法,其特征在于,
所述主处理电路,还用于根据所述第一运算指令,将所述第二输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于根据所述第二运算指令,并行执行所述第二输出神经元数据与所述权值数据的点积运算,得到多个第三中间结果,以及将所述多个第三中间结果发送给所述加法处理电路;
所述加法处理电路,还用于接收由所述多个第三中间结果构成的第三局部诱导域数据,并将所述第一偏置参数与所述第三局部诱导域数据相加,得到第三相加结果;
所述激活处理电路,还用于对所述第三相加结果进行激活运算,得到第三输出神经元数据。
42.根据权利要求41所述的计算方法,其特征在于,所述前序处理后的数据还包括学习率;
所述主处理电路,还用于根据所述第一运算指令,将所述第三输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于根据所述第二运算指令,执行所述第一输出神经元数据与所述输入神经元数据对应的分量的乘积运算,得到第一乘积结果,以及执行所述第三输出神经元数据与所述第二输出神经元数据对应的分量的乘积运算,得到第二乘积结果;对所述第一乘积结果与所述第二乘积结果进行减法运算,得到第一减法结果,以及将所述第一减法结果与所述学习率相乘,得到所述权值数据的更新值,并根据所述权值数据的更新值,更新所述权值数据;
所述多个从处理电路,还用于根据所述第二运算指令,对所述第一输出神经元数据与所述第三输出神经元数据进行减法运算,得到第二减法结果,并将所述第二减法结果与所述学习率相乘,得到所述第一偏置参数的更新值,以及根据所述第一偏置参数的更新值,更新所述第一偏置参数;
所述多个从处理电路,还用于根据所述第二运算指令,对所述输入神经元数据与所述第二输出神经元数据进行减法运算,得到第三减法结果,并将所述第三减法结果与所述学习率相乘,得到所述第二偏置参数的更新值,以及根据所述第二偏置参数的更新值,更新所述第二偏置参数。
43.一种执行人工神经网络模型的计算方法,其特征在于,所述计算方法应用于计算装置,所述计算装置用于执行人工神经网络运算,所述计算装置包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述主处理电路包括:激活运算器以及采样单元;
所述控制器单元,用于获取输入数据以及计算指令;
所述控制器单元,还用于解析所述计算指令得到多个运算指令,并将所述多个运算指令以及所述输入数据发送给所述主处理电路,其中,所述运算指令包括第一运算指令和第二运算指令;
所述主处理电路,用于根据所述第一运算指令对所述输入数据执行前序处理,得到前序处理后的数据,并将所述前序处理后的数据以及第二运算指令传输给所述多个从处理电路,所述前序处理后的数据包括输入神经元数据和权值数据;
所述多个从处理电路,用于根据所述第二运算指令,并行执行所述输入神经元数据与所述权值数据的点积运算,得到多个第一中间结果,并将所述多个第一中间结果发送给所述主处理电路的激活运算器;
所述激活运算器,用于接收由所述多个第一中间结果构成的第一局部诱导域数据,以及获取第一偏置参数,并将所述第一偏置参数与所述第一局部诱导域数据相加,得到第一相加结果,以及对所述第一相加结果进行激活运算,得到第一激活结果;
所述采样单元,用于对所述第一激活结果进行采样运算,得到第一输出神经元数据。
44.根据权利要求43所述的计算方法,其特征在于,
所述主处理电路,还用于根据所述第一运算指令,将所述第一输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于获取所述权值数据经过转置运算后的数据,并根据所述第二运算指令,并行执行所述第一输出神经元数据与所述权值数据经过转置运算后的数据的点积运算,得到多个第二中间结果,以及将所述多个第二中间结果发送给所述激活运算器;
所述激活运算器,还用于接收由所述多个第二中间结果构成的第二局部诱导域数据,以及获取第二偏置参数,并将所述第二偏置参数与所述第二局部诱导域数据相加,得到第二相加结果,以及对所述第二相加结果进行激活运算,得到第二激活结果;
所述采样单元,还用于对所述第二激活结果进行采样运算,得到第二输出神经元数据。
45.根据权利要求44所述的计算方法,其特征在于,
所述主处理电路,还用于根据所述第一运算指令,将所述第二输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于根据所述第二运算指令,并行执行所述第二输出神经元数据与所述权值数据的点积运算,得到多个第三中间结果,以及将所述多个第三中间结果发送给所述激活运算器;
所述激活运算器,还用于接收由所述多个第三中间结果构成的第三局部诱导域数据,并将所述第一偏置参数与所述第三局部诱导域数据相加,得到第三相加结果,以及对所述第三相加结果进行激活运算,得到第三输出神经元数据。
46.根据权利要求45所述的计算方法,其特征在于,所述前序处理后的数据还包括学习率;
所述主处理电路,还用于根据所述第一运算指令,将所述第三输出神经元数据传输给所述多个从处理电路;
所述多个从处理电路,还用于根据所述第二运算指令,执行所述第一输出神经元数据与所述输入神经元数据对应的分量的乘积运算,得到第一乘积结果,以及执行所述第三输出神经元数据与所述第二输出神经元数据对应的分量的乘积运算,得到第二乘积结果;对所述第一乘积结果与所述第二乘积结果进行减法运算,得到第一减法结果,以及将所述第一减法结果与所述学习率相乘,得到所述权值数据的更新值,并根据所述权值数据的更新值,更新所述权值数据;
所述多个从处理电路,还用于根据所述第二运算指令,对所述第一输出神经元数据与所述第三输出神经元数据进行减法运算,得到第二减法结果,并将所述第二减法结果与所述学习率相乘,得到所述第一偏置参数的更新值,以及根据所述第一偏置参数的更新值,更新所述第一偏置参数;
所述多个从处理电路,还用于根据所述第二运算指令,对所述输入神经元数据与所述第二输出神经元数据进行减法运算,得到第三减法结果,并将所述第三减法结果与所述学习率相乘,得到所述第二偏置参数的更新值,以及根据所述第二偏置参数的更新值,更新所述第二偏置参数。
47.根据权利要求46所述的计算方法,其特征在于,所述采样单元包括随机数生成器以及比较器,
所述随机数生成器,用于生成神经网络各层节点训练前最初的权值或者用于生成随机数;
所述比较器,用于比较所述随机数与所述第一激活结果,并根据比较结果完成所述采样运算。
CN201811333457.9A 2018-11-09 2018-11-09 计算装置及相关产品、执行人工神经网络模型的计算方法 Active CN111178492B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811333457.9A CN111178492B (zh) 2018-11-09 2018-11-09 计算装置及相关产品、执行人工神经网络模型的计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811333457.9A CN111178492B (zh) 2018-11-09 2018-11-09 计算装置及相关产品、执行人工神经网络模型的计算方法

Publications (2)

Publication Number Publication Date
CN111178492A CN111178492A (zh) 2020-05-19
CN111178492B true CN111178492B (zh) 2020-12-11

Family

ID=70653566

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811333457.9A Active CN111178492B (zh) 2018-11-09 2018-11-09 计算装置及相关产品、执行人工神经网络模型的计算方法

Country Status (1)

Country Link
CN (1) CN111178492B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113867797A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN111984548B (zh) * 2020-07-22 2024-04-02 深圳云天励飞技术股份有限公司 神经网络计算装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6169981B1 (en) * 1996-06-04 2001-01-02 Paul J. Werbos 3-brain architecture for an intelligent decision and control system
CN105320495A (zh) * 2014-07-22 2016-02-10 英特尔公司 用于卷积神经网络的权重移位机制
CN107316078A (zh) * 2016-04-27 2017-11-03 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
CN108446763A (zh) * 2017-02-16 2018-08-24 英特尔Ip公司 可变字长神经网络加速器电路
CN108734285A (zh) * 2017-04-24 2018-11-02 英特尔公司 神经网络的计算优化

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
CN108280064B (zh) * 2018-02-28 2020-09-11 北京理工大学 分词、词性标注、实体识别及句法分析的联合处理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6169981B1 (en) * 1996-06-04 2001-01-02 Paul J. Werbos 3-brain architecture for an intelligent decision and control system
CN105320495A (zh) * 2014-07-22 2016-02-10 英特尔公司 用于卷积神经网络的权重移位机制
CN107316078A (zh) * 2016-04-27 2017-11-03 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
CN108446763A (zh) * 2017-02-16 2018-08-24 英特尔Ip公司 可变字长神经网络加速器电路
CN108734285A (zh) * 2017-04-24 2018-11-02 英特尔公司 神经网络的计算优化

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Synchronization of master-slave neural networks with sampled-data control and actuator saturation;Liuwen Li 等;《2017 11th Asian Control Conference》;20171031;正文第1-6页 *

Also Published As

Publication number Publication date
CN111178492A (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
CN111221578B (zh) 计算装置以及计算方法
US11531540B2 (en) Processing apparatus and processing method with dynamically configurable operation bit width
WO2019218896A1 (zh) 计算方法以及相关产品
TWI795519B (zh) 計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡及執行機器學習計算的方法
CN110163363B (zh) 一种计算装置及方法
CN111045728B (zh) 一种计算装置及相关产品
CN111047022A (zh) 一种计算装置及相关产品
CN111178492B (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
CN111488963A (zh) 神经网络计算装置和方法
CN111488976A (zh) 神经网络计算装置、神经网络计算方法及相关产品
He et al. A configurable SIMD architecture with explicit datapath for intelligent learning
CN111368967B (zh) 一种神经网络计算装置和方法
CN110059809B (zh) 一种计算装置及相关产品
CN111368987B (zh) 一种神经网络计算装置和方法
CN111368990B (zh) 一种神经网络计算装置和方法
CN111368986B (zh) 一种神经网络计算装置和方法
CN111367567B (zh) 一种神经网络计算装置和方法
CN111198714B (zh) 重训练方法及相关产品
CN111047024A (zh) 一种计算装置及相关产品
CN114692847B (zh) 数据处理电路、数据处理方法及相关产品
CN111368985A (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
TA01 Transfer of patent application right

Effective date of registration: 20201113

Address after: Room 611-194, R & D center building, China (Hefei) international intelligent voice Industrial Park, 3333 Xiyou Road, hi tech Zone, Hefei City, Anhui Province

Applicant after: Anhui Cambrian Information Technology Co., Ltd

Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant before: Zhongke Cambrian Technology Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant