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

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

Info

Publication number
CN110097181B
CN110097181B CN201810092635.7A CN201810092635A CN110097181B CN 110097181 B CN110097181 B CN 110097181B CN 201810092635 A CN201810092635 A CN 201810092635A CN 110097181 B CN110097181 B CN 110097181B
Authority
CN
China
Prior art keywords
data
unit
module
vector
operation module
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
CN201810092635.7A
Other languages
English (en)
Other versions
CN110097181A (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 CN201810092635.7A priority Critical patent/CN110097181B/zh
Publication of CN110097181A publication Critical patent/CN110097181A/zh
Application granted granted Critical
Publication of CN110097181B publication Critical patent/CN110097181B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/22Microcontrol or microprogram arrangements
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本公开提供了一种用于执行人工神经网络正向运算的装置,包括H树模块、主运算模块以及多个从运算模块。本公开还提供了一种用于执行人工神经网络正向运算的方法。本公开用于执行人工神经网络正向运算的装置及方法,减小了神经网络存储资源和计算资源的开销,有利于提高神经网络的运算速度。

Description

用于执行人工神经网络正向运算的装置和方法
技术领域
本公开总体上涉及人工神经网络,具体地涉及一种用于执行人工神经网络正向运算的装置和方法。
背景技术
多层人工神经网络被广泛应用于模式识别,图像处理,函数逼近和优化计算等领域,多层人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。
一种支持多层人工神经网络正向运算的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足通常的多层人工神经网络运算的性能需求。而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把多层人工神经网络正向运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销
另一种支持多层人工神经网络正向运算的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对多层人工神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行多层人工神经网络运算,带来了大量的额外开销。另外GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈。另外,GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。
发明内容
根据本公开的一个方面,提供了一种用于执行人工神经网络正向运算的装置,包括H树模块、主运算模块、多个从运算模块、以及幂次转换模块;其中:H树模块,用于在每层神经网络正向运算开始计算的阶段,主运算模块通过H树模块向所有的从运算模块传输本层的输入神经元向量,在从计算模块的计算过程完成后,H树模块逐级将各从计算模块的输出神经元值拼成中间结果向量;主运算模块,用于利用所述中间结果向量完成后续计算;多个从运算模块,用于利用相同的输入神经元向量和各自不同的权值向量,并行地计算出各自的输出神经元值;幂次转换模块,其包括第一幂次转换单元和/或第二幂次转换单元;所述第一幂次转换单元用于将格式数据转换为幂次数据,所述第二幂次转换单元用于将幂次数据转换为格式数据。
在一些实施例中,所述格式数据为浮点数据和/或定点数据。
在一些实施例中,所述第一幂次转换单元用于选择性的将所述主运算模块和/或从运算模块的输入数据、中间数据或输出数据中的格式数据转换为幂次数据;所述第二幂次转换单元用于选择性的将所述主运算模块和/或从运算模块的输入数据、中间数据或输出数据中的幂次数据转换为格式数据。
在一些实施例中,所述主运算模块包括:第一运算单元,用于接收来自H树模块的中间结果向量,完成主运算模块的各种运算功能;该第一运算单元包括:向量加法单元及激活单元;其中,向量加法单元用于实现人工神经网络正向运算中的加偏置操作,所述向量加法单元的输入为从外部地址空间读取出来的偏置向量,以及通过所述H树模块从所述从运算模块传送回来的中间结果,输出为偏置向量与中间结果相加后的偏置结果;激活单元用于实现人工神经网络激活函数导函数乘法操作,所述激活单元的输入为通过所述H树模块从所述从运算模块传送回来的中间结果,或向量加法单元输出的偏置结果,输出为所述中间结果或偏置结果与激活函数导函数相乘后的输出数据。
在一些实施例中,所述主运算模块还包括:第一数据依赖关系判断单元和第一存储单元;其中,所述第一存储单元为神经元缓存单元,用于缓存所述主运算模块在计算过程中用到的输入数据和输出数据;所述第一数据依赖关系判断单元为所述第一运算单元读写所述第一存储单元的端口,用于保证对第一存储单元中数据读写不存在一致性冲突,并且负责从第一存储单元读取输入神经元向量通过H树模块发送给从运算模块。
在一些实施例中,所述幂次转换模块,包括第一幂次转换单元,用于将所述主运算模块的输出数据转换成幂次数据,各所述从运算模块通过H树模块接收经所述第一幂次转换单元传输的幂次数据并进行计算。
在一些实施例中,每个所述从运算模块包括第二运算单元,用于接收控制器单元发出的微指令并进行算数逻辑运算;所述第二运算单元包括:向量加法单元及累加单元;该累加单元用于实现所述向量加法单元的输出数据的累加;其中,所述幂次转换模块包括:第一幂次转换单元,用于将向量加法单元的输入数据转换成幂次数据,以及第二幂次转换单元,用于将向量加法单元的输出数据、即累加单元的输入数据转换成格式数据。
在一些实施例中,每个所述从运算模块包括第二运算单元,用于接收控制器单元发出的微指令并进行算数逻辑运算;所述第二运算单元包括:向量加法单元及累加单元;该累加单元用于实现所述向量加法单元的输出数据的累加;其中,所述幂次转换模块包括:一第一幂次转换单元,用于将主运算模块的输出数据转换为幂次数据,并发送至各从运算模块;以及多个第二幂次转换单元,每个所述第二幂次转换单元用于将一从运算模块的向量加法单元的输出数据转换为格式数据,并发送至该一从运算模块的累加单元。
在一些实施例中,每个所述从运算模块,还包括:第二数据依赖关系判断单元、第二存储单元及第三存储单元,其中:所述第二数据依赖关系判断单元用于负责计算过程中对所述第二存储单元和第三存储单元的读写操作,保证对所述第二存储单元和第三存储单元的读写不存在一致性冲突;所述第二存储单元为神经元缓存单元,用于缓存输入神经元向量数据以及从运算模块计算得到的输出神经元值;所述第三存储单元包括权值缓存单元和权值梯度缓存单元,所述权值缓存单元用于缓存该从运算模块在计算过程中需要的权值向量,对于每一个从运算模块,所述权值向量是权值矩阵中与该从运算模块相对应的列;所述权值梯度缓存单元用于缓存相应从运算模块在更新权值过程中需要的权值梯度数据,每个从运算模块存储的权值梯度数据与其存储的权值向量相对应。
在一些实施例中,所述的装置还包括:指令缓存单元,用于缓存指令;控制器单元,用于从所述指令缓存单元读取指令,并将该指令译码成控制H树模块、主运算模块、以及从运算模块行为的微指令;以及直接内存访问单元,用于从外部地址空间向主运算模块和各从运算模块的相应数据缓存单元中写数据或从所述数据缓存单元向外部地址空间读数据;其中,所述指令缓存单元、控制器单元、直接内存访问单元、H树模块、主运算模块和从运算模块的至少其中之一采用专用集成电路ASIC。
在一些实施例中,所述多个从运算模块利用相同的输入神经元向量和各自不同的权值向量,并行地计算出各自的输出神经元值;所述主运算模块对中间结果向量执行以下任一项操作:对加偏置操作,在中间结果向量上加上偏置;对中间结果向量进行激活,激活函数active是sigmoid,tanh,relu,softmax中的任一个;采样操作,将中间结果向量与随机数比较,大于随机数则输出1,小于随机数则输出0;或者池化操作,包括最大值池化或平均值池化(AVGPOOLING);所述H树模块构成所述主运算模块和所述多个从运算模块之间的数据通路,其具有H树型的结构,H树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据合并,并返回给上游的节点。
根据本公开的另一个方面,提供了一种执行人工神经网络正向运算的方法,包括:H树模块在每层神经网络正向运算开始计算的阶段,主运算模块通过H树模块向所有的从运算模块传输本层的输入神经元向量,在从计算模块的计算过程完成后,H树模块逐级将各从计算模块的输出神经元值拼成中间结果向量;主运算模块利用所述中间结果向量完成后续计算;多个从运算模块利用相同的输入神经元向量和各自不同的权值向量,并行地计算出各自的输出神经元值;以及利用第一幂次转换单元将格式数据转换为幂次数据,和/或利用第二幂次转换单元将幂次数据转换为格式数据。
在一些实施例中,所述格式数据为浮点数据和/或定点数据。
在一些实施例中,利用第一幂次转换单元选择性的将所述主运算模块和/或从运算模块的输入数据、中间数据或输出数据中的格式数据转换为幂次数据;和/或利用所述第二幂次转换单元选择性的将所述主运算模块和/或从运算模块的输入数据、中间数据或输出数据中的幂次数据转换为格式数据。
在一些实施例中,利用第一幂次转换单元将主运算模块的输出数据转换成幂次数据;各所述从运算模块通过H树模块接收经所述第一幂次转换单元传输的幂次数据并进行计算。
在一些实施例中,利用第一幂次转换单元将从运算模块的向量加法单元的输入数据转换成幂次数据;向量加法单元接收所述第一幂次转换单元发送的幂次数据并进行加法运算;利用第二幂次转换单元将向量加法单元的输出数据、即累加单元的输入数据转换成格式数据;累加单元接收所述第二幂次转换单元发送的格式数据,并进行累加运算。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示出了根据本公开实施例的用于执行人工神经网络正向运算的装置的一示例框图。
图2示出了根据本公开实施例的用于执行人工神经网络正向运算的装置的另一示例框图。
图3示出了根据本公开实施例的用于执行人工神经网络正向运算的装置的另一示例框图。
图4示意性示出了根据本公开实施例的用于执行人工神经网络正向运算的装置中H树模块的结构。
图5示出了根据本公开实施例的用于执行人工神经网络正向运算的装置中主运算模块结构的示例框图。
图6示出了根据本公开实施例的用于执行人工神经网络正向运算的装置中主运算模块结构的另一示例框图。
图7示出了根据本公开实施例的用于执行人工神经网络正向运算的装置中从运算模块结构的示例框图。
图8示出了根据本公开实施例的用于执行人工神经网络正向运算的装置中从运算模块结构的另一示例框图。
图9.1为依据本公开实施例的编码表的示意图。
图9.2为依据本公开实施例的编码表的另一示意图。
图9.3为依据本公开实施例的编码表的另一示意图。
图9.4为依据本公开实施例的编码表的另一示意图。
图9.5为依据本公开实施例的幂次数据的表示方法示意图。
图10为依据本公开实施例的权值与幂次神经元的乘法操作示意图。
图11为依据本公开实施例的权值与幂次神经元的乘法操作的另一示意图。
图12示出了根据本公开实施例的神经网络正向运算过程的示意图。
图13示出了根据本公开实施例的单层人工神经网络运算的流程图。
在所有附图中,相同的装置、部件、单元等使用相同的附图标记来表示。
具体实施方式
根据结合附图对本公开示例性实施例的以下详细描述,本公开的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。
在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。
在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制披露的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。
根据本公开实施例的多层人工神经网络的正向运算,包括两层或者两层以上的多个神经元。对于每一层来说,输入神经元向量首先和权值向量进行点积运算,结果经过激活函数得到输出神经元。其中激活函数可以是sigmoid函数,tanh、relu、softmax函数等。
本公开所述用于执行人工神经网络正向运算的装置可包括H树模块、主运算模块、多个从运算模块、以及幂次转换模块;其中:
H树模块,用于在每层神经网络正向运算开始计算的阶段,主运算模块通过H树模块向所有的从运算模块传输本层的输入神经元向量,在从计算模块的计算过程完成后,H树模块逐级将各从计算模块的输出神经元值拼成中间结果向量;
主运算模块,用于利用所述中间结果向量完成后续计算;
多个从运算模块,用于利用相同的输入神经元向量和各自不同的权值向量,并行地计算出各自的输出神经元值;
幂次转换模块,其包括第一幂次转换单元和/或第二幂次转换单元;所述第一幂次转换单元用于将格式数据转换为幂次数据,所述第二幂次转换单元用于将幂次数据转换为格式数据。
由此,所述用于执行人工神经网络正向运算的装置可以在从运算单元进行充分的权值复用,同时在主运算单元可以对输入输出数据进行激活运算等操作,从而极大的适配神经网络运算。而且通过将数据幂次化,从而将数据运算由乘法运算转化为加法运算,数据幂次转换再利用从运算单元进行权值复用,提升了装置的整体性能。
其中,所述格式数据例如为浮点数据和/或定点数据。
在一具体实施例中,如图1所示,所述幂次转换模块,可包括一幂次转换单元,设置于所述主运算模块中,用于将所述主运算模块的输出数据转换为幂次数据,转换得到的幂次数据可输入各从运算模块,用于从运算模块的计算。
在一具体实施例中,如图2所示,所述幂次转换模块,可包括多个幂次转换单元,分别设置于各所述从运算模块中,用于将所述从运算模块的输入数据转换为幂次数据,将从运算模块的中间数据或输出数据转换为一格式数据。
需要说明的是,所述幂次转换单元可以将幂次数据转换为一格式数据,电可以将一格式数据转换为幂次数据;所述幂次转换单元可选择性的设置在所述主运算模块内,各所述从运算模块内、或者设置在所述主运算模块的输出端、所述从运算模块的输入端、从运算模块的输出端等。所述装置可包括多个幂次转换单元分别用于执行各部分幂次数据转换(将幂次数据转换为一格式数据,或将一格式数据转换为幂次数据),也可仅包括一幂次转换单元,同时用于执行各部分幂次数据转换。
利用幂次数据表示方法,可以减小存储网络数据所需的存储空间,同时,该数据表示方法可简化神经元与权值数据的乘法操作,减小了神经网络存储资源和计算资源的开销,降低了对运算器的设计要求,加快的神经网络的运算速度。
在一具体实施例中,如图3所示,该装置包括指令缓存单元1、控制器单元2、直接内存访问单元3、H树模块4、主运算模块5和多个从运算模块6。指令缓存单元1、控制器单元2、直接内存访问单元3、H树模块4、主运算模块5和从运算模块6均可以通过硬件电路(例如专用集成电路ASIC)实现。
指令缓存单元1通过直接内存访问单元3读入指令并缓存读入的指令。
控制器单元2从指令缓存单元1中读取指令,将指令译成控制其他模块行为的微指令,所述其他模块例如直接内存访问单元3、主运算模块5和从运算模块6等。
直接内存访问单元3能够访存外部地址空间,直接向装置内部的各个缓存单元读写数据,完成数据的加载和存储。
本实施例中,所述装置中幂次转换模块(图3中未示出)的具体设置方式如图8中所示(幂次转换单元设置于各从运算模块的运算单元中),当然也可以与前述实施例相同,此处不再赘述。
图4示意性示出了H树模块4的结构。H树模块4构成主运算模块5和多个从运算模块6之间的数据通路,并具有H树型的结构。H树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。例如,在每层人工神经网络开始计算阶段,主运算模块5内的神经元数据通过H树模块4发送给各个从运算模块6;当从运算模块6的计算过程完成后,当从运算模块的计算过程完成后,每个从运算模块输出的神经元的值会在H树中逐级拼成一个完整的由神经元组成的向量,作为中间结果向量。以神经网络全连接层进行说明,假设装置中共有N个从运算模块,则中间结果向量按N分段,每段有N个元素,第i个从运算模块计算每段中的第i个元素。N个元素经过H树模块拼成长度为N的向量并返回给主运算模块。所以如果网络只有N个输出神经元,则每个从运算单元只需输出单个神经元的值,若网络有m*N个输出神经元,则每个从运算单元需输出m个神经元值。
图5示出了根据本公开实施例的用于执行人工神经网络正向运算的装置中主运算模块5的结构的示例框图。如图5所示,所述主运算模块5包括运算单元51(以示区分,称第一运算单元)、数据依赖关系判断单元52(以示区分,称第一数据依赖关系判断单元)和神经元缓存单元53(以示区分,称第一存储单元)。
神经元缓存单元53用于缓存主运算模块5在计算过程中用到的输入数据和输出数据,运算单元51完成主运算模块5的各种运算功能,数据依赖关系判断单元52是运算单元51读写神经元缓存单元53的端口,同时能够保证神经元缓存单元中数据的读写一致性。同时,数据依赖关系判断单元52也负责将读取数据通过H树模块4发送给从计算模块,而从计算模块6的输出数据通过H树模块4直接发送给运算单元51。控制器单元2输出的指令发送给计算单元51和数据依赖关系判断单元52,来控制其行为。
所述主运算模块的运算单元51用于接收来自H树模块的中间结果向量,完成主运算模块的各种运算功能;如图6所示,该第一运算单元包括:向量加法单元及激活单元;其中,向量加法单元用于实现人工神经网络正向运算中的加偏置操作,所述向量加法单元的输入为从外部地址空间读取出来的偏置向量,以及通过所述H树模块从从运算模块传送回来的中间结果,输出为偏置向量与中间结果相加后的偏置结果;激活单元用于实现人工神经网络激活函数导函数乘法操作,所述激活单元的输入为通过所述H树模块从所述从运算模块传送回来的中间结果,或向量加法单元输出的偏置结果,输出为所述中间结果或偏置结果与激活函数导函数相乘后的输出数据。
图7示出了根据本公开实施例的用于执行人工神经网络正向运算的装置中从运算模块6的结构的示例框图。如图7所示,每个从运算模块6包括运算单元61、数据依赖关系判定单元62、神经元缓存单元63、权值缓存单元64和权值梯度缓存单元65(其中,图8中的第二存储单元包括神经元缓存单元63,第三存储单元包括权值缓存单元64和权值梯度缓存单元65)。
所述运算单元61接收控制器单元2发出的微指令并进行算数逻辑运算。
所述数据依赖关系判断单元62负责计算过程中对神经元缓存单元的读写操作。数据依赖关系判断单元62执行读写操作之前会首先保证指令之间所用的数据不存在读写一致性冲突。例如,所有发往数据依赖关系单元62的微指令都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。
所述神经元缓存单元63缓存该从运算模块6的输入神经元向量数据和输出神经元值数据。
所述权值缓存单元64缓存该从运算模块6在计算过程中需要的权值数据。对于每一个从运算模块6,都只会存储全部输入神经元与部分输出神经元之间的权值。以全连接层为例,输出神经元按照从运算单元的个数N进行分段,每段的第n个输出神经元对应的权值存放在第n个从运算单元中。
权值梯度缓存单元65缓存相应从运算模块在更新权值过程中需要的权值梯度数据。每一个从运算模块6存储的权值梯度数据与其存储的权值向量相对应。
如图8所示,每个所述从运算模块包括的运算单元(以示区分,称第二运算单元),包括:向量加法单元及累加单元;该累加单元用于实现所述向量加法单元的输出数据的累加。
从运算模块的数量N可以是32、16、8,从运算里的累加模块可以是加法树,加法树可以包括16+8+4+2+1个加法器。
可选的,所述幂次转换模块用于将向量加法单元的输入数据转换成幂次数据,以及将向量加法单元的输出数据、即累加单元的输入数据转换成格式数据。或所述幂次转换模块包括第一幂次转换单元,用于将向量加法单元的输入数据转换成幂次数据,以及第二幂次转换单元,用于将将向量加法单元的输出数据、即累加单元的输入数据转换成格式数据。或所述幂次转换模块包括:一第一幂次转换单元,用于将主运算模块的输出数据转换为幂次数据,并发送至各从运算模块;以及多个第二幂次转换单元,每个所述第二幂次转换单元用于将一从运算模块的向量加法单元的输出数据转换为格式数据,并发送至该一从运算模块的累加单元。
其中,如图8所示,格式数据经一幂次转换单元转换为幂次数据输入从运算模块6的向量加法单元(未图示),在向量加法单元中完成加法运算之后,输出数据至另一幂次转换单元(图8中所示幂次转换单元),该另一幂次转换单元将幂次数据转换为格式数据,格式数据输入累加单元进行累加计算,在所述从运算模块中,利用转换单元将从运算模块的输入数据转换为幂次数据,从而将乘法运算转换为加法运算,因而可以直接利用加法单元完成操作无需乘法单元,减小了神经网络存储资源和计算资源的开销,有利于提高神经网络的运算速度。而且数据转换成幂次之后,其数据宽度小于原始宽度,从而节省主运算模块向从运算模块传输数据的带宽。
从运算模块6实现每层人工神经网络正向运算过程中可以并行的前半部分。以人工神经网络全连接层(MLP)为例,过程为y=f(wx+b),其中权值矩阵w和输入神经元向量x的乘法可以划分为不相关的并行计算子任务,out与in是列向量,每个从运算模块6只计算in中相应的部分标量元素与权值矩阵w对应的列的乘积,得到的每个输出向量都是最终结果的一个待累加的部分和,这些部分和在H树模块4中逐级两两相加得到最后的结果。所以计算过程变成了并行的计算部分和的过程和后面的累加的过程。每个从运算模块6计算出输出神经元值,所有的输出神经元值在H树模块4中拼成得到中间结果向量。每个从运算模块6只需要计算出中间结果向量y中与本模块对应的输出神经元值即可。H树模块4对所有从运算模块6输出的神经元值求和,得到最终的中间结果向量y。主运算模块5基于中间结果向量y进行后续计算,比如加偏置、池化(例如最大值池化(MAXPOOLING)或平均值池化(AVGPOOLING)等)、做激活和做采样等。
另外,本公开主运算模块及从运算模块中所包括的运算单元不限于上述实施例中的具体结构,其包括加法计算器、乘法计算器、比较器、激活运算器中的至少二种即可。所述各缓存单元可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据块,该数据块具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维数据。
本公开装置通过设置幂次运算转换单元,从而从运算单元中无需使用乘法器,使用已有的加法器即可完成之前的乘法运算,从而极大的节省了硬件开销。
上述各实施例中,幂次转换操作有多种可选方式,下面列举本实施例所采用的三种幂次转换操作:
第一种幂次转换方法:
sout=sin
Figure BDA0001563399500000131
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout
Figure BDA0001563399500000132
表示对数据x做取下整操作。
第二种幂次转换方法:
sout=sin
Figure BDA0001563399500000133
其中,
Figure BDA0001563399500000134
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout
Figure BDA0001563399500000135
表示对数据x做取上整操作。
第三种幂次转换方法:
sout=sin
dout+=[log2(din+)]
其中,
Figure BDA0001563399500000141
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据;sin为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout;[x]表示对数据x做四舍五入操作。
所述幂次数据包括幂次神经元数据及幂次权值数据。其中,所述幂次神经元数据表示神经元数据的数值采用其幂指数值形式表示,具体为,幂次神经元数据包括符号位和幂次位,符号位用一位或多位比特位表示神经元数据的符号,幂次位用m位比特位表示神经元数据的幂次位数据,m为大于1的正整数。可利用一外部存储单元或内部缓存单元预存有编码表,提供幂次神经元数据的每个幂次位数据对应的指数数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应的幂次神经元数据为0。也就是说,当幂次神经元数据的幂次位数据是编码表里的置零幂次位数据时候,表示该幂次神经元数据为0。
编码表的对应关系可以是任意的。
例如,编码表的对应关系可以是乱序的。如图9.1所示一种m为5的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为3。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为1。幂次位数据为00100的时候对应幂次神经元数据为0。
编码表的对应关系也可以是正相关的,可利用一外部存储单元或内部缓存单元预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次神经元数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施例里,y为1,x的数值等于-2m-1。由此幂次神经元数据所表示的数值的指数范围为-2m-1~2m-1-1。
在一种实施例里,如图9.2所示一种m为5,x为0,y为1的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为1。幂次位数据为00010的时候对应指数数值为2。幂次位数据为00011的时候对应指数数值为3。幂次位数据为11111的时候对应幂次神经元数据为0。如图9.3所示另一种m为5,x为0,y为2的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为2。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为6。幂次位数据为11111的时候对应幂次神经元数据为0。
编码表的对应关系可以是负相关的,可利用一外部存储单元或内部缓存单元预存一个整数值x和一个正整数值y,最大的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次神经元数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据-x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施例里,y为1,x的数值等于2m-1。由此幂次神经元数据所表示的数值的指数范围为-2m-1-1~2m-1
如图9.4所示一种m为5的编码表的部分内容,幂次位数据为11111的时候对应数数值为0。幂次位数据为11110的时候对应指数数值为1。幂次位数据为11101的时候对应指数数值为2。幂次位数据为11100的时候对应指数数值为3。幂次位数据为00000的时候对应幂次神经元数据为0。
编码表的对应关系可以是幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。当幂次位数据最高位为0时,对应幂次神经元数据为0;当幂次位数据最高位为1时,对应幂次神经元数据不为0。反之亦可,即当幂次位数据最高位为1时,对应幂次神经元数据为0;当幂次位数据最高位为0时,对应幂次神经元数据不为0。用另一种语言来描述,即幂次神经元数据的幂次位被分出一个比特来指示幂次神经元数据是否为0。
在一个具体实例图9.5所示,符号位为1位,幂次位数据位为7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次神经元数据为0,幂次位数据为其他数值的时候幂次神经元数据对应相应的二进制补码。当幂次神经元数据符号位为0,幂次位为0001001,则其表示具体数值为29,即512;幂次神经元数据符号位为1,幂次位为1111101,则其表示具体数值为-2-3,即-0.125。相对于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过幂次数据表示方法,可以减小存储神经元数据所需的存储空间。在本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据数据神经元的数据范围采用不同的数据长度。
其中,所述幂次神经元与权值乘法操作具体为,幂次神经元数据符号位与权值数据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表找出幂次神经元数据幂次位对应的指数数值,编码表的对应关系为正相关的情况下记录编码表的指数数值最小值并做加法找出幂次神经元数据幂次位对应的指数数值,编码表的对应关系为负相关的情况下记录编码表的最大值并做减法找出幂次神经元数据幂次位对应的指数数值;将指数数值与权值数据幂次位做加法操作,权值数据有效位保持不变。
具体实例一如图10所示,权值数据为16位浮点数据,符号位为0,幂次位为10101,有效位为0110100000,则其表示的实际数值为1.40625*26。幂次神经元数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次神经元数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元为000110,则其表示的实际数值为64,即26。权值的幂次位加上幂次神经元的幂次位结果为11011,则结果的实际数值为1.40625*212,即为神经元与权值的乘积结果。通过该运算操作,使得乘法操作变为加法操作,减小计算所需的运算量。
具体实例二如图11所示,权值数据为32位浮点数据,符号位为1,幂次位为10000011,有效位为10010010000000000000000,则其表示的实际数值为-1.5703125*24。幂次神经元数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次神经元数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元为111100,则其表示的实际数值为-2-4。(权值的幂次位加上幂次神经元的幂次位结果为01111111,则结果的实际数值为1.5703125*20,即为神经元与权值的乘积结果。
根据本公开实施例,还提供了在前述装置上执行人工神经网络正向运算的指令集。指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令,其中:
CONFIG指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数;
COMPUTE指令完成每层人工神经网络的算术逻辑计算;COMPUTE指令也可以包括其他的运算指令,进行非线性激活和线性激活操作。
IO指令实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令负责清空当前装至内部所有微指令缓存队列中的微指令,保证NOP指令之前的所有指令全部指令完毕。NOP指令本身不包含任何操作;
JUMP指令负责控制器将要从指令缓存单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
图12示出了根据本公开实施例的神经网络正向运算过程的示例框图。在不同从运算模块6中,输入神经元向量分别与该从运算模块6的权值向量进行点积运算,得到对应的输出神经元值,所有这些输出神经元值组成中间结果向量,该中间结果向量经过加偏置向量以及激活运算得到该层神经网络的最终输出神经元向量,公式描述为out=f(w*in+b),其中out输出神经元向量、in是输入神经元向量、b是偏置向量,w是权值矩阵,f是激活函数。每个从运算模块6的权值向量是权值矩阵中与该从运算模块6相对应的列向量。H树模块将输入神经元向量[in0,...,inN]发送给所有的从运算单元,暂存在神经元缓存单元中。对于第i个从运算单元,计算其相应的权值向量[w_i0,...,w_iN]与输入神经元向量的点积。从运算单元输出的结果经过H树模块拼成完整的输出向量并返回给主运算单元,在主运算单元中进行激活运算,得到最后的输出神经元向量[out0,out1,out2,...,outN]。
另外,本公开还提供了一种执行人工神经网络正向运算的方法,包括:
H树模块在每层神经网络正向运算开始计算的阶段,主运算模块通过H树模块向所有的从运算模块传输本层的输入神经元向量,
多个从运算模块利用相同的输入神经元向量和各自不同的权值向量,并行地计算出各自的输出神经元值;
在从计算模块的计算过程完成后,H树模块逐级将各从计算模块的输出神经元值拼成中间结果向量;以及
主运算模块利用所述中间结果向量完成后续计算。
在所述执行人工神经网络正向运算的方法中,还可包括:利用第一幂次转换单元将格式数据转换为幂次数据,和/或利用第二幂次转换单元将幂次数据转换为格式数据。所述格式数据为浮点数据和/或定点数据。
具体的,可利用第一幂次转换单元选择性的将所述主运算模块和/或从运算模块的输入数据、中间数据或输出数据中的格式数据转换为幂次数据;也可利用所述第二幂次转换单元选择性的将所述主运算模块和/或从运算模块的输入数据、中间数据或输出数据中的幂次数据转换为格式数据。
在一具体实施例中,利用第一幂次转换单元将主运算模块的输出数据转换成幂次数据;各所述从运算模块通过H树模块接收经所述第一幂次转换单元传输的幂次数据并进行计算。
在另一具体实施例中,利用第一幂次转换单元将从运算模块的向量加法单元的输入数据转换成幂次数据;向量加法单元接收所述第一幂次转换单元发送的幂次数据并进行加法运算;利用第二幂次转换单元将向量加法单元的输出数据、即累加单元的输入数据转换成格式数据;累加单元接收所述第二幂次转换单元发送的格式数据,并进行累加运算。
图13是示出根据一个实施例的单层人工神经网络正向运算流程图。该流程图描述利用本公开的装置和指令集实现单层神经网络正向运算的过程。
在步骤S1,在指令缓存单元1的首地址处预先存入一条IO指令。
在步骤S2,运算开始,控制器单元2从指令缓存单元1的首地址读取该条IO指令,根据译出的微指令,直接内存访问单元3从外部地址空间读取相应的所有人工神经网络运算指令,并将其缓存在指令缓存单元1中。所述运算指令可以包括:操作域以及操作码,以卷积运算指令为例,如表1所示,其中,寄存器号(可选的,寄存器也可以是寄存器堆)0、寄存器号(可选的,寄存器也可以是寄存器堆)1、寄存器号(可选的,寄存器也可以是寄存器堆)2、寄存器号(可选的,寄存器也可以是寄存器堆)3、寄存器号(可选的,寄存器也可以是寄存器堆)4可以为操作域。
表1运算指令形式
Figure BDA0001563399500000201
在步骤S3,控制器单元2接着从指令缓存单元读入下一条IO指令,根据译出的微指令,直接内存访问单元3从外部地址空间读取主运算模块5需要的所有数据(例如,包括输入神经元向量、插值表、常数表和偏置等)至主运算模块5的神经元缓存单元53。
在步骤S4,控制器单元2接着从指令缓存单元读入下一条IO指令,根据译出的微指令,直接内存访问单元3从外部地址空间读取从运算模块6需要的权值矩阵数据。
在步骤S5,控制器单元2接着从指令缓存单元读入下一条CONFIG指令,根据译出的微指令,装置配置该层神经网络计算需要的各种常数。例如,运算单元51、61根据微指令里的参数配置单元内部寄存器的值,所述参数例如包括本层计算的精度设置、激活函数的数据(例如本层计算的精度位,Lrn层算法的rang参数,AveragePooling层算法窗口大小的倒数等)。
在步骤S6,控制器单元2接着从指令缓存单元读入下一条COMPUTE指令,根据译出的微指令,主运算模块5首先通过H树模块4将输入神经元向量发给各从运算模块6,保存至从运算模块6的神经元缓存单元63。
在步骤S7,根据COMPUTE指令译出的微指令,从运算模块6的运算单元61从权值缓存单元64读取权值向量(权值矩阵中对应于该从运算模块6的列向量),从神经元缓存单元读取输入神经元向量,完成权值向量和输入神经元向量的点积运算,将中间结果通过H树返回。
在步骤S8,在H树模块4中,各从运算模块6返回的中间结果被逐级拼成完整的中间结果向量。
在步骤S9,主运算模块5得到H树模块4的返回值,根据COMPUTE指令译出的微指令,从神经元缓存单元53读取偏置向量,与H树模块4返回的向量相加,然后再对相加结果做激活,并将最后的输出神经元向量写回至神经元缓存单元53。
在步骤S10,控制器单元接着从指令缓存单元读入下一条IO指令,根据译出的微指令,直接内存访问单元3将神经元缓存单元53中的输出神经元向量存至外部地址空间指定地址,运算结束。
对于多层人工神经网络,其实现过程与单层神经网络类似,当上一层人工神经网络执行完毕后,下一层的运算指令会将主运算单元中存储的上一层的输出神经元地址作为本层的输入神经元地址。同样地,指令中的权值地址和偏置地址也会变更至本层对应的地址。
通过采用用于执行人工神经网络正向运算的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络正向运算的支持。
通过采用针对多层人工神经网络正向运算的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络正向运算性能瓶颈的问题。前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被具体化在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
虽然上述实施例中是以浮点数据转换为幂次数据为例介绍幂次转换单元,但本领域技术人员应当可以理解的是,其他格式数据转换为幂次数据,以及幂次数据转换为格式数据的过程与之类似,此处不再赘述。
在前述的说明书中,参考其特定示例性实施例描述了本公开的各实施例。显然,可对各实施例做出各种修改,而不背离所附权利要求所述的本公开的更广泛的精神和范围。相应地,说明书和附图应当被认为是说明性的,而不是限制性的。

Claims (13)

1.一种用于执行人工神经网络正向运算的装置,包括H树模块、主运算模块、多个从运算模块、以及幂次转换模块;其中:
H树模块,用于在每层神经网络正向运算开始计算的阶段,主运算模块通过H树模块向所有的从运算模块传输本层的输入神经元向量,在从计算模块的计算过程完成后,H树模块逐级将各从计算模块的输出神经元值拼成中间结果向量;
主运算模块,用于利用所述中间结果向量完成后续计算;所述主运算模块包括:第一运算单元,用于接收来自H树模块的中间结果向量,完成主运算模块的各种运算功能;该第一运算单元包括:向量加法单元及激活单元;其中,向量加法单元用于实现人工神经网络正向运算中的加偏置操作,所述向量加法单元的输入为从外部地址空间读取出来的偏置向量,以及通过所述H树模块从所述从运算模块传送回来的中间结果,输出为偏置向量与中间结果相加后的偏置结果;激活单元用于实现人工神经网络激活函数导函数乘法操作,所述激活单元的输入为通过所述H树模块从所述从运算模块传送回来的中间结果,或向量加法单元输出的偏置结果,输出为所述中间结果或偏置结果与激活函数导函数相乘后的输出数据;
多个从运算模块,用于利用相同的输入神经元向量和各自不同的权值向量,并行地计算出各自的输出神经元值;
幂次转换模块,其包括第一幂次转换单元和/或第二幂次转换单元;所述第一幂次转换单元用于选择性的将所述主运算模块和/或从运算模块的输入数据、中间数据或输出数据中的格式数据转换为幂次数据;所述第二幂次转换单元用于选择性的将所述主运算模块和/或从运算模块的输入数据、中间数据或输出数据中的幂次数据转换为格式数据。
2.根据权利要求1所述的装置,其中,所述格式数据为浮点数据和/或定点数据。
3.根据权利要求1所述的装置,其中,所述主运算模块还包括:第一数据依赖关系判断单元和第一存储单元;其中,所述第一存储单元为神经元缓存单元,用于缓存所述主运算模块在计算过程中用到的输入数据和输出数据;
所述第一数据依赖关系判断单元为所述第一运算单元读写所述第一存储单元的端口,用于保证对第一存储单元中数据读写不存在一致性冲突,并且负责从第一存储单元读取输入神经元向量通过H树模块发送给从运算模块。
4.根据权利要求1或3所述的装置,其中,所述幂次转换模块,包括第一幂次转换单元,用于将所述主运算模块的输出数据转换成幂次数据,各所述从运算模块通过H树模块接收经所述第一幂次转换单元传输的幂次数据并进行计算。
5.根据权利要求1所述的装置,其中,每个所述从运算模块包括第二运算单元,用于接收控制器单元发出的微指令并进行算数逻辑运算;所述第二运算单元包括:向量加法单元及累加单元;该累加单元用于实现所述向量加法单元的输出数据的累加;其中,所述幂次转换模块包括:
第一幂次转换单元,用于将向量加法单元的输入数据转换成幂次数据,以及
第二幂次转换单元,用于将向量加法单元的输出数据、即累加单元的输入数据转换成格式数据。
6.根据权利要求1所述的装置,每个所述从运算模块包括第二运算单元,用于接收控制器单元发出的微指令并进行算数逻辑运算;所述第二运算单元包括:向量加法单元及累加单元;该累加单元用于实现所述向量加法单元的输出数据的累加;其中,所述幂次转换模块包括:
一第一幂次转换单元,用于将主运算模块的输出数据转换为幂次数据,并发送至各从运算模块;以及
多个第二幂次转换单元,每个所述第二幂次转换单元用于将一从运算模块的向量加法单元的输出数据转换为格式数据,并发送至该一从运算模块的累加单元。
7.根据权利要求5或6所述的装置,其中,每个所述从运算模块,还包括:第二数据依赖关系判断单元、第二存储单元及第三存储单元,其中:
所述第二数据依赖关系判断单元用于负责计算过程中对所述第二存储单元和第三存储单元的读写操作,保证对所述第二存储单元和第三存储单元的读写不存在一致性冲突;
所述第二存储单元为神经元缓存单元,用于缓存输入神经元向量数据以及从运算模块计算得到的输出神经元值;
所述第三存储单元包括权值缓存单元和权值梯度缓存单元,所述权值缓存单元用于缓存该从运算模块在计算过程中需要的权值向量,对于每一个从运算模块,所述权值向量是权值矩阵中与该从运算模块相对应的列;所述权值梯度缓存单元用于缓存相应从运算模块在更新权值过程中需要的权值梯度数据,每个从运算模块存储的权值梯度数据与其存储的权值向量相对应。
8.根据权利要求1所述的装置,还包括:
指令缓存单元,用于缓存指令;
控制器单元,用于从所述指令缓存单元读取指令,并将该指令译码成控制H树模块、主运算模块、以及从运算模块行为的微指令;以及
直接内存访问单元,用于从外部地址空间向主运算模块和各从运算模块的相应数据缓存单元中写数据或从所述数据缓存单元向外部地址空间读数据;其中,
所述指令缓存单元、控制器单元、直接内存访问单元、H树模块、主运算模块和从运算模块的至少其中之一采用专用集成电路ASIC。
9.根据权利要求1所述的装置,其中,
所述多个从运算模块利用相同的输入神经元向量和各自不同的权值向量,并行地计算出各自的输出神经元值;
所述主运算模块对中间结果向量执行以下任一项操作:对加偏置操作,在中间结果向量上加上偏置;对中间结果向量进行激活,激活函数active是sigmoid,tanh,relu,softmax中的任一个;采样操作,将中间结果向量与随机数比较,大于随机数则输出1,小于随机数则输出0;或者池化操作,包括最大值池化或平均值池化(AVGPOOLING);
所述H树模块构成所述主运算模块和所述多个从运算模块之间的数据通路,其具有H树型的结构,H树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据合并,并返回给上游的节点。
10.一种执行人工神经网络正向运算的方法,包括:
H树模块在每层神经网络正向运算开始计算的阶段,主运算模块通过H树模块向所有的从运算模块传输本层的输入神经元向量,在从计算模块的计算过程完成后,H树模块逐级将各从计算模块的输出神经元值拼成中间结果向量;
主运算模块利用所述中间结果向量完成后续计算,其中,所述主运算模块包括:第一运算单元,利用第一运算单元接收来自H树模块的中间结果向量,完成主运算模块的各种运算功能;该第一运算单元包括:向量加法单元及激活单元;其中,利用向量加法单元实现人工神经网络正向运算中的加偏置操作,所述向量加法单元的输入为从外部地址空间读取出来的偏置向量,以及通过所述H树模块从所述从运算模块传送回来的中间结果,输出偏置向量与中间结果相加后的偏置结果;利用激活单元实现人工神经网络激活函数导函数乘法操作,所述激活单元的输入为通过所述H树模块从所述从运算模块传送回来的中间结果,或向量加法单元输出的偏置结果,输出为所述中间结果或偏置结果与激活函数导函数相乘后的输出数据;
多个从运算模块利用相同的输入神经元向量和各自不同的权值向量,并行地计算出各自的输出神经元值;以及
利用第一幂次转换单元选择性的将所述主运算模块和/或从运算模块的输入数据、中间数据或输出数据中的格式数据转换为幂次数据;和/或利用第二幂次转换单元选择性的将所述主运算模块和/或从运算模块的输入数据、中间数据或输出数据中的幂次数据转换为格式数据。
11.根据权利要求10所述的方法,其中,所述格式数据为浮点数据和/或定点数据。
12.根据权利要求10所述的方法,其中,利用第一幂次转换单元将主运算模块的输出数据转换成幂次数据;各所述从运算模块通过H树模块接收经所述第一幂次转换单元传输的幂次数据并进行计算。
13.根据权利要求10所述的方法,其中,利用第一幂次转换单元将从运算模块的向量加法单元的输入数据转换成幂次数据;向量加法单元接收所述第一幂次转换单元发送的幂次数据并进行加法运算;利用第二幂次转换单元将向量加法单元的输出数据、即累加单元的输入数据转换成格式数据;累加单元接收所述第二幂次转换单元发送的格式数据,并进行累加运算。
CN201810092635.7A 2018-01-30 2018-01-30 用于执行人工神经网络正向运算的装置和方法 Active CN110097181B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810092635.7A CN110097181B (zh) 2018-01-30 2018-01-30 用于执行人工神经网络正向运算的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810092635.7A CN110097181B (zh) 2018-01-30 2018-01-30 用于执行人工神经网络正向运算的装置和方法

Publications (2)

Publication Number Publication Date
CN110097181A CN110097181A (zh) 2019-08-06
CN110097181B true CN110097181B (zh) 2023-07-11

Family

ID=67442363

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810092635.7A Active CN110097181B (zh) 2018-01-30 2018-01-30 用于执行人工神经网络正向运算的装置和方法

Country Status (1)

Country Link
CN (1) CN110097181B (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109242094B (zh) * 2016-01-20 2020-05-08 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
CN109375951B (zh) * 2016-04-27 2020-10-09 中科寒武纪科技股份有限公司 一种用于执行全连接层神经网络正向运算的装置和方法
WO2017185335A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行batch normalization运算的装置和方法

Also Published As

Publication number Publication date
CN110097181A (zh) 2019-08-06

Similar Documents

Publication Publication Date Title
CN107807819B (zh) 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法
CN111860812B (zh) 一种用于执行卷积神经网络训练的装置和方法
US11568258B2 (en) Operation method
CN111353589B (zh) 用于执行人工神经网络正向运算的装置和方法
CN109358900B (zh) 支持离散数据表示的人工神经网络正向运算装置和方法
US10402725B2 (en) Apparatus and method for compression coding for artificial neural network
CN111353588B (zh) 用于执行人工神经网络反向训练的装置和方法
WO2018192500A1 (zh) 处理装置和处理方法
EP3444757B1 (en) Discrete data representation supported device and method for forward operation of artificial neural network
US20190311266A1 (en) Device and method for artificial neural network operation
CN111045728A (zh) 一种计算装置及相关产品
WO2017177446A1 (zh) 支持离散数据表示的人工神经网络反向训练装置和方法
CN110097181B (zh) 用于执行人工神经网络正向运算的装置和方法
CN109993276B (zh) 用于执行人工神经网络反向训练的装置和方法
CN113570053A (zh) 一种神经网络模型的训练方法、装置以及计算设备
WO2019127480A1 (zh) 用于处理数值数据的方法、设备和计算机可读存储介质
CN111198714A (zh) 重训练方法及相关产品
CN111723917A (zh) 运算方法、装置及相关产品
CN111340200B (zh) 用于执行人工神经网络正向运算的装置和方法
CN113222102B (zh) 用于神经网络模型量化的优化方法
US20190073584A1 (en) Apparatus and methods for forward propagation in neural networks supporting discrete data
CN113222102A (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