CN112686364B - 一种神经网络计算芯片及计算方法 - Google Patents

一种神经网络计算芯片及计算方法 Download PDF

Info

Publication number
CN112686364B
CN112686364B CN201910995603.2A CN201910995603A CN112686364B CN 112686364 B CN112686364 B CN 112686364B CN 201910995603 A CN201910995603 A CN 201910995603A CN 112686364 B CN112686364 B CN 112686364B
Authority
CN
China
Prior art keywords
data
input data
translation
bias
preset
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
CN201910995603.2A
Other languages
English (en)
Other versions
CN112686364A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910995603.2A priority Critical patent/CN112686364B/zh
Priority to EP20877684.9A priority patent/EP4036805A4/en
Priority to KR1020227016249A priority patent/KR20220077930A/ko
Priority to PCT/CN2020/121928 priority patent/WO2021073642A1/zh
Publication of CN112686364A publication Critical patent/CN112686364A/zh
Priority to US17/722,890 priority patent/US11853594B2/en
Application granted granted Critical
Publication of CN112686364B publication Critical patent/CN112686364B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G06N3/065Analogue 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

一种神经网络计算芯片及计算方法,该计算芯片包括平移电路和计算电路,通过平移电路对输入数据进行处理后,使得输入到计算电路中的数据的每个元素的取值都不是负数,满足计算电路中对输入数据的取值的限制条件,从而只需要执行一次计算即可获得计算结果,而不需要进行两次计算。因此,提高了神经网络的计算效率,减少神经网络运算的时延。

Description

一种神经网络计算芯片及计算方法
技术领域
本申请涉及神经网络计算领域,尤其涉及一种神经网络计算芯片及计算方法。
背景技术
神经网络(neural network,NN)作为实现人工智能的重要途径之一,已广泛应用于机器人、语音识别以及图像识别等领域。为提高神经网络的计算效率,业界内通用的做法是为神经网络定制专用的计算芯片,以实现神经网络的高效计算。
目前,一种应用于神经网络的芯片是存算一体交叉阵列架构的芯片,其主要原理是利用非易失性存储器件构建该存算一体交叉阵列芯片架构中的计算阵列(即crossbar),并将神经网络的权重数据以电导的形式存储在crossbar的存储单元中。然后,将输入数据转换成电压信号加载到crossbar上,将该电压信号与crossbar的存储单元中存储的权重数据进行乘累加运算,从而得到输出结果。
构成crossbar的存储单元的器件通常为嵌入式闪存(embedded flash,eFlash)或者为阻变存储器(resistive random-access memory,ReRAM)等,这种存储器件要求输入电压必须为正电压,否则该存储单元无法正常工作,因此,计算过程中要求输入存储单元的数据为正数。但是,在实际使用过程中,神经网络中的输入数据可能是有正数也有负数。现有技术中采用将输入数据进行正负拆分,然后利用计算阵列实现一组输入数据的神经网络计算。例如,分别将输入数据拆分为只包括正数的正输入数据和只包括负数的负输入数据,然后分别将正输入数据和负输入数据的绝对值分别输入到计算阵列中进行运算,最后将两次计算的计算结果进行聚合,从而获得最终的输出结果。在上述方式中,由于需要进行两次运算,时延较大,处理效率低。
发明内容
本申请提供一种神经网络计算芯片及计算方法,用以提高神经网络的处理效率。
第一方面,本申请实施例提供一种神经网络计算芯片,该计算芯片包括平移电路和计算电路,该平移电路,用于接收包括至少两个元素的第一输入数据,该至少两个元素中的部分元素为负数,基于预设的平移数据对该第一输入数据进行处理,得到第二输入数据,其中,该第二输入数据中包括的元素的取值为零或者正数;该计算电路,连接该平移电路,用于接收包括该第二输入数据以及预设的偏置输入数据的第三输入数据,并基于预设的权重数据对该第三输入数据进行计算,获得计算结果,其中,该权重数据包括偏置权重以及该计算芯片的初始权重,该偏置权重和该偏置输入数据是根据该平移数据、该初始权重以及该计算芯片的初始偏置数据获得的。
在上述技术方案中,通过平移电路对输入数据进行处理后,使得输入到计算电路中的数据的每个元素的取值都不是负数,满足计算电路中对输入数据的取值的限制条件。且,由于输入到计算电路的数据中每个元素的取值都不是负数,从而只需要使用计算电路进行一次计算就可以获得计算结果。而不需要计算电路执行两次计算。因此,提高了神经网络的计算效率,减少神经网络运算的时延,也可以减少计算资源的消耗。
在一种可能的设计中,该计算芯片还包括:寄存器,用于存储该预设的平移数据,在这种情况下,该平移电路可以包括但不限于如下两种实现方式:
第一种实现方式:
该平移电路连接该寄存器,用于接收该第一输入数据以及该平移数据,并分别将该第一输入数据中的每个元素与该平移数据进行求和运算以获得该第二输入数据。
在上述技术方案中,平移电路只需要进行求和运算即可,可以简化平移电路的处理过程。
第二种实现方式:
该平移电路包括加法器和比较器,其中,该加法器连接该寄存器,并用于接收该第一输入数据以及该平移数据,并分别将该第一输入数据中的每个元素与该平移数据进行求和运算,获得第一中间数据;该比较器,连接该加法器,用于将该第一中间数据的每个元素与预设值进行比较,获得该第二输入数据。
在上述技术方案中,可以将加法器输出的中间数据与预设值进行比较,以确保第二输入数据中每个元素的取值为零或者正数,可以提高平移电路的准确性。
在一种可能设计中,比较器将该第一中间数据的每个元素与预设值进行比较获得该第二输入数据,其中,对于取值大于或等于该预设值的元素,该比较器输出该元素的值;以及,对于取值小于该预设值的元素,该比较器输出该预设值。
在一种可能的设计中,该寄存器还用于存储该偏置输入数据。该计算芯片还包括:数据处理电路,分别连接该平移电路以及该寄存器,用于根据该第二输入数据与该偏置输入数据得到该第三输入数据。在这种情况下,该计算电路,连接该数据处理电路,用于接收该第三输入数据,并根据存储的该权重数据,对该第三输入数据进行计算,获得该计算结果。
在上述技术方案中,可以通过寄存器中存储的偏置输入数据和数据处理电路,获取第三输入数据,从而计算电路只需要对第三输入数据进行计算,可以简化计算电路的处理过程。
在一种可能设计中,该偏置权重和该偏置输入数据是按照预设规则对处理后的偏置数据进行拆分得到的,其中,该预设规则根据该计算电路的输入数据的范围以及该初始权重的数据范围来确定,该处理后的偏置数据是根据该平移数据、该初始权重以及该初始偏置数据计算得到的。
在上述技术方案中,由于对输入数据进行了平移处理,该平移处理会带来输出偏移,为了消除输出偏移,本申请实施例中使用的偏置权重、偏置数据分别与初始权重和初始偏置数据不同,且提供了一种确定该偏置权重和处理后的偏置数据的方式。
进一步,通过将处理后的偏置数据拆分为偏置权重和偏置输入数据两部分,实现了将偏置计算过程融合到权重计算过程中,从而计算电路通过一次计算则可以得到计算结果,可以减少计算资源的消耗。
在一种可能的设计中,该计算电路包括计算交叉阵列,该计算交叉阵列包括多个计算单元,该计算单元包括电阻型存储器计算单元。
在一种可能的设计中,该电阻型存储器计算单元包括阻变存储器ReRAM或相变存储器PCM或闪存Flash。
在本申请实施例中,不对计算电路、计算交叉阵列以及电阻性存储器计算单元进行限制。
第二方面,本申请实施例提供一种神经网络计算芯片,该计算芯片包括平移电路和计算电路,其中,该平移电路,用于接收包括至少两个元素的第一输入数据,该至少两个元素中的部分元素为负数,基于预设的平移数据对该第一输入数据进行处理,得到第二输入数据,其中,该第二输入数据中包括的元素的取值为零或者正数;该计算电路,连接该平移电路并用于:接收该第二输入数据,基于预设的初始权重对该第二输入数据进行计算,获得第一中间结果;以及,基于预设的偏置数据对该第一中间结果进行计算,获得计算结果,其中,该预设的偏置数据是根据该平移数据、该初始权重以及该计算芯片的初始偏置数据获得的。
在上述技术方案中,通过平移电路对输入数据进行处理后,使得输入到计算电路中的数据的每个元素的取值都不是负数,满足计算电路中对输入数据的取值的限制条件。且,由于输入到计算电路的数据中每个元素的取值都不是负数,从而只需要进行一次计算而不需要使用计算阵列进行两次计算,可以提高神经网络的计算效率,减少神经网络运算的时延。进一步,由于不需要使用多个计算阵列进行多次计算,也可以减少计算资源的消耗。
在一种可能的设计中,该计算芯片还包括:寄存器,用于存储该预设的平移数据,在这种情况下,该平移电路可以包括但不限于两种实现方式,该两种实现方式与第一方面中对该平移电路的两种实现方式相似,在此不再赘述。
在上述技术方案中,可以通过多种方式实现该平移电路,可以提高方案的灵活性。
在一种可能的设计中,该计算电路包括计算交叉阵列和偏置计算电路,其中,该计算交叉阵列,连接该平移电路,用于接收到该第二输入数据,并根据存储的该初始权重对该第二输入数据进行计算,得到该第一中间结果,其中,该计算交叉阵列包括多个电阻型存储器计算单元;该偏置计算电路,连接该计算交叉阵列,用于接收该第一中间结果,并根据该偏置数据对该第一中间结果进行计算,获得该计算结果。
在一种可能的设计中,该电阻型存储器计算单元与第一方面相似,在此不再赘述。
第三方面,提供一种神经网络计算方法,该方法由如第一方面或第一方面的任意一种实现方式所述的神经网络计算芯片来执行,以实现前述第一方面或第一方面的任意一种实现方式所述的神经网络计算芯片的功能。
第四方面,提供一种神经网络计算方法,该方法由前述第二方面或第二方面的任意一种实现方式中的神经网络计算芯片来实现,以实现前述第二方面或第二方面的任意一种实现方式中的神经网络计算芯片的功能。
第五方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第三方面或第四方面中任意一项所述的方法。
第六方面,提供一种计算机程序产品,所述计算机程序产品存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第三方面或第四方面中任意一项所述的方法。
上述第三方面至第六方面及其实现方式的有益效果可以参考对第一方面或第二方面的方法及其实现方式的有益效果的描述。
附图说明
图1为本申请实施例提供的一种神经网络系统的结构示意图;
图2为本申请实施例提供的权重数据的一种示例的示意图;
图3为本申请实施例提供的第一计算单元中的一种示例的结构示意图;
图4为本申请实施例提供的神经网络计算芯片400的一种示例的示意图;
图5A为本申请实施例提供的平移电路401的一种示例的示意图;
图5B为本申请实施例提供的平移电路401的另一种示例的示意图;
图6为本申请实施例提供的优化机制的一种示例的流程图;
图7为本申请实施例提供的计算电路402的一种示例的示意图;
图8为本申请实施例提供的获取该偏置输入数据和权重数据的方法的一种示例的示意图;
图9为本申请实施例中使用预设规则对处理后的偏置数据进行拆分的流程图;
图10为本申请实施例提供的数据处理方法的一种示例的流程图;
图11为本申请实施例提供的数据处理方法的一种示例的示意图;
图12为本申请实施例提供的计算电路402的另一种示例的示意图;
图13为本申请实施例提供的数据处理方法的另一种示例的流程图;
图14为本申请实施例提供的数据处理方法的另一种示例的示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
本申请实施例中“多个”是指两个或两个以上,鉴于此,本申请实施例中也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个。例如,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个,例如,包括A、B和C中的至少一个,那么包括的可以是A、B、C、A和B、A和C、B和C、或A和B和C。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。
为方便本领域技术人员理解本申请实施例中的技术方案,首先对本申请所涉及的应用场景进行说明。
本申请实施例主要应用在神经网络系统中,神经网络也可以称为人工神经网络(artificial neural network,ANN),或者类神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。人工神经网络可以包括卷积神经网络(convolutionalneural network,CNN)、深度神经网络(deep neural network,DNN)、多层感知器(multilayer perceptron,MLP)等神经网络。
请参考图1,为本申请实施例提供的一种神经网络系统的结构示意图。如图1所示,神经网络系统100可以包括主机110以及神经网络电路120。神经网络电路120通过主机接口与主机110连接。主机接口可以包括标准的主机接口以及网络接口(network interface)。例如,主机接口可以包括快捷外设互联标准(peripheral component interconnectexpress,PCIE)接口。如图1所示,神经网络电路120可以通过PCIE总线130与主机110连接。因此,数据可以通过PCIE总线130输入至神经网络电路120中,并通过PCIE总线130接收神经网络电路120处理完成后的数据。并且,主机110也可以通过主机接口监测神经网络电路120的工作状态。
主机110可以包括处理器1102以及内存1104。需要说明的是,除了图1所示的器件外,主机110还可以包括通信接口以及作为外存的磁盘等其他器件(图1中未示出),在此不做限制。
处理器(processor)1102是主机110的运算核心和控制核心(control unit)。处理器1102中可以包括多个处理器核(core)。处理器1102可以是一块超大规模的集成电路。在处理器1102中安装有操作系统和其他软件程序,从而处理器1102能够实现对内存1104、缓存、磁盘及外设设备(如图1中的神经网络电路)的访问。可以理解的是,在本申请实施例中,处理器1102中的Core例如可以是中央处理器(central processing unit,CPU),还可以是其他特定集成电路(application specific integrated circuit,ASIC)。
内存1104是主机110的主存。内存1104通过双倍速率(double data rate,DDR)总线和处理器1102相连。内存1104通常用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。为了提高处理器1102的访问速度,内存1104需要具备访问速度快的优点。在传统的计算机系统架构中,通常采用动态随机存取存储器(dynamicrandom access memory,DRAM)作为内存1104。处理器1102能够通过内存控制器(图1中未示出)高速访问内存1104,对内存1104中的任意一个存储单元进行读操作和写操作。
神经网络电路120是由多个神经网络芯片(chip)组成的芯片阵列。例如,如图1所示,神经网络电路120包括多个进行数据处理的神经网络芯片(chip)1201和多个路由器1202。为了描述方便,本发明实施例将申请中的神经网络芯片1201简称为芯片1201。所述多个芯片1201通过路由器1202相互连接。例如,一个芯片1201可以与一个或多个路由器1202连接。多个路由器1202可以组成一种或多种网络拓扑。芯片1201之间可以通过所述多种网络拓扑进行数据传输。
神经网络系统可以包括多个神经网络层,在图1中仅示出了一个神经网络层,每个神经网络层可以通过输入端口1203输入数据,然后通过输出端口1204输出其计算结果至下一个神经网络层。在本申请实施例中,神经网络层为逻辑的层概念,神经网络层可以包括卷积层、池化层等(图1中未示出)。一个神经网络层是指要执行一次神经网络操作。每一层神经网络计算均是由芯片1201中包括的计算单元来实现。
在本申请实施例中,芯片1201中包括的计算单元包括第一计算单元和第二计算单元两个部分,第一计算单元用于根据神经网络的权重数据对输入数据进行计算,第二计算单元用于对第一计算单元的计算结果进行偏置处理。针对第一计算单元,目前采用的是存算一体交叉阵列架构,例如,可以是嵌入式闪存(embedded flash,eFlash)crossbar或者非易失闪存(NOR flash)crossbar或者阻变存储器(resistive random-access memory,ReRAM)crossbar等,神经网络的权重数据可以在计算之前配置到该第一计算单元中,当输入数据经过第一计算单元和第二计算单元的处理后,则可以直接发送给下一个神经网络层进行流水线计算。
权重数据通常用于表示输入数据对于输出数据的重要程度。在神经网络中,权重数据通常用一个实数矩阵表示。如图2所示,为权重数据的一种示例的示意图。在图2中,权重数据为一个j行k列的矩阵,该矩阵中的每一个元素代表一个权重值。需要说明的是,一个神经网络层可以包括如图2所示的一个或多个权重数据,在此不做限制。
请参考图3,为本申请实施例提供的第一计算单元中的一种示例的结构示意图。为了描述方便,下文中以第一计算单元简称为crossbar进行说明。如图3所示,crossbar由多个位线(如图3中输入端口302所示)和多个字线(如图3中输入端口304所示)形成交叉结构,每一个字线和位线的交叉处包括一个存储单元(可以简称为cell),如G1,1、G2,1等,该多个cell构成一个神经网络矩阵。
在本申请实施例中,第一计算单元中的权重可以通过事先配置完成。具体的,一个权重矩阵中的每个元素被配置在对应的crossbar阵列的cell中,从而,可以通过crossbar阵列实现输入数据与配置的权重数据的矩阵乘加操作。为了描述清楚,下面对crossbar阵列如何实现矩阵乘加操作进行简单的描述。
具体来讲,可以在配置神经网络的过程中,将图2所示的权重数据从图3所示的crossbar的位线输入crossbar中,使得权重中的每个元素被配置到相应的cell中。例如,图2中的权重元素W0,0被配置到图3的G1,1中,图2中的权重元素W1,0被配置到图3的G2,1中等。权重矩阵中的每一个权重元素对应一个cell。在执行神经网络计算时,输入数据通过crossbar的字线输入crossbar。可以理解的是,输入数据可以通过数模转换器(digital-to-analog converter,DAC)转换为电压信号,输入到crossbar中,从而使得输入数据与cell中配置的权重值实现点乘运算,得到的计算结果以电压的形式从crossbar每一列的输出端(如图3所示的输出端口306)输出给第二计算单元(图3中未示出),第二计算单元中预先存储有该神经网络的偏置数据,第二计算单元将接收到的计算结果与偏置数据进行加法运算,从而得到与输入数据对应的输出结果,并通过模数转换器(analog-to-digitalconverter,ADC)转换为数字信号。
在图3所示的crossbar中,cell可以由eFlash或者NOR Flash或者ReRAM等来实现。由于当输入信号包括负数时,eFlash不会工作,且ReRAM的电阻值会发生变化,因此,在使用如图3所示的crossbar进行神经网络运算时,输入数据不能包括负数。针对这种情况,当输入数据包含负数时,一种解决方案是需要设置两个crossbar,一个crossbar用于映射取值为正数的权重值,另一个crossbar用于映射取值为负数的权重值。然后,将输入数据拆分成只保留输入数据中取值为正数的元素的第一矩阵,和只保留输入数据中取值为负数的元素的绝对值的第二矩阵,分别将第一矩阵和第二矩阵输入到两个crossbar中,从而得到与第一矩阵对应的两个计算结果,以及与第二矩阵对应的两个计算结果,最后对该四个计算结果进行聚合处理,并将聚合结果输出至第二计算单元,由第二计算单元对该聚合结果进行偏置处理后,得到神经网络对输入数据的输出结果。在上述方法中,当输入数据中包括正数和负数时,通过神经网络运算得到与该输入数据对应的输出结果需要进行两次运算过程,时延较大。
鉴于此,本申请实施例提供一种神经网络计算芯片,以提高神经网络的计算效率,减少计算的时延。请参考图4,为本申请实施例提供的神经网络计算芯片400的一种示例的示意图。该神经网络计算芯片400可以是芯片1201或者是芯片1201中的模块,例如,可以是芯片1201的计算单元,在此不做限制。需要说明的是,神经网络系统中包括多个神经网络层,该神经网络计算芯片400可以理解为是一个神经网络层的计算节点中的计算单元。
如图4所示,神经网络计算芯片400包括平移电路401和计算电路402。其中,平移电路401中存储用于对输入数据进行平移处理的预设的平移数据,例如,该平移数据可以是4、8、12等,当神经网络计算芯片400接收到第一输入数据后,则通过平移电路401中的平移数据,对该第一输入数据进行处理,得到第二输入数据。在本申请实施例中,不对第一输入数据的元素的数量进行限制,第一输入数据可以包括一个元素,也可以包括多个元素。在本申请实施例中,为了便于说明对既包括正数的元素也包括负数的元素的输入数据的处理过程,以该第一输入数据包括至少两个元素且其中至少一个元素的值为负数为例进行说明。当平移电路401对第一输入数据进行处理后,得到的第二输入数据中每个元素的取值为零或者为正数。平移电路401将该第二输入数据输入到计算电路402中,计算电路402根据存储的预设的权重数据以及该第二输入数据,获得计算结果。
在上述神经网络计算芯片400中,通过平移电路401对输入数据进行处理后,使得输入到计算电路402中的数据的每个元素的取值都不是负数,满足计算电路402中对输入数据的取值的限制条件。且,由于输入到计算电路402的数据中每个元素的取值都不是负数,从而只需要进行一次计算而不需要使用计算阵列进行两次计算,可以提高神经网络的计算效率,减少神经网络运算的时延。进一步,由于不需要使用计算阵列进行多次计算,也可以减少计算资源的消耗。
下面对平移电路401和计算电路402分别进行说明。
首先对平移电路401进行说明。作为一种示例,请参考图5A,该神经网络计算芯片400中还包括寄存器403,该寄存器403中存储该预设的平移数据,平移电路401连接寄存器403,用于接收该第一输入数据以及寄存器403中的平移数据,并分别将该第一输入数据中的每个元素与该平移数据进行求和运算以获得该第二输入数据。作为一种示例,该平移电路401可以通过加法器实现,加法器包括两个输入端(分别为第一输入端和第二输入端)和一个输出端,其中,第一输入端用于输入第一输入数据,第二输入端与寄存器403相连。加法器通过第一输入端接收该第一输入数据,以及通过第二输入端,从寄存器403中获取该预设的平移数据,从而将第一输入数据中的每个元素与该预设的平移数据进行求和运算,并通过加法器的输出端,将经过求和运算得到的第二输入数据输出至计算电路402中。
例如,第一输入数据为向量[-4,1,2],寄存器403中存储的预设的平移数据为4,则通过平移电路401进行平移处理后得到第二输入数据为向量[0,5,6]。
为了能够进一步确保由平移电路401输出的第二输入数据中的每个元素的取值都不是负数,本申请实施例提供平移电路401的另一种示例,请参考图5B。在图5B中,平移电路401包括加法器4011和比较器4012。加法器4011,连接寄存器403,用于接收该第一输入数据以及该平移数据,并分别将该第一输入数据中的每个元素与该平移数据进行求和运算,获得第一中间数据。比较器4012,连接加法器4011,用于将该第一中间数据的每个元素与预设值进行比较,获得该第二输入数据。作为一种示例,比较器4012包括两个输入端(分别为第三输入端和第四输入端)和一个输出端,其中,第三输入端中输入固定的预设值,例如为0,第四输入端与加法器4011的输出端相连。比较器4012通过第四输入端接收该第一中间数据,然后将该第四输入端输入的数据的每个元素与该预设值进行比较,对于取值大于或等于该预设值的元素,比较器4012输出该元素的值;对于取值小于该预设值的元素,比较器4012输出该预设值,通过输出端将该第二输入数据输出至计算电路402。
例如,第一输入数据为向量[-5,1,2],寄存器403中存储的预设的平移数据为4,则通过加法器4011进行求和运算后得到的第一中间数据为向量[-1,5,6]。然后将第一中间数据输入到比较器4012中,比较器4012中的预设值为0,比较器4012确定第一中间数据的第一个元素的取值小于0,则将与第一个元素对应的输出值调整为0,第二个元素和第三个元素的取值均大于0,则保持不变,从而得到第二输入数据为向量[0,5,6]。
需要说明的是,平移电路401是通过预设的平移数据实现将输入数据中的每个元素转换为非负数的,该预设的平移数据可以是技术人员根据经验值(例如,根据实际历史输入数据的取值)确定的,当然也可以是采用其他方式获取的,在此不做限制。但是,当该预设的平移数据过大时,会使得第二输入数据较大,造成较大的输出偏移,不利于偏置处理,因此,在本申请实施例中,提供一种优化机制来获取最佳的平移数据。该最佳的平移数据可以理解为在保证神经网络计算芯片400的计算精度的情况下,使得由输入平移引起的输出偏移量最少的平移数据。请参考图6,为该优化机制的流程图,该流程图描述如下:
S61、在计算电路402中配置神经网络的权重数据。
S62、将平移数据设置为该神经网络计算芯片400的输入数据的负边界值的绝对值。假设神经网络计算芯片400的输入数据为8比特的数据(在本申请实施例中不限制输入数据的比特数),则输入数据的取值范围为[-27~+27-1],其负边界值为-27,为了将输入该神经网络计算芯片400的所有的输入数据都变为非负数,则该平移数据的最大值为该负边界值的绝对值,即27=128。然后,将预设的测试集合中的测试数据依次输入到神经网络计算芯片400,获取神经网络计算芯片400的计算精度。例如,该测试集合中包括50条语音数据,将语音数据转换为数字信号输入到神经网络计算芯片400中,获取对这50条语音数据的识别结果,这50个识别结果的正确率即该神经网络计算芯片400的计算精度,例如为100%。
S63、通过设置在寄存器中的控制器,控制寄存器中存储的平移数据的取值按照预设步长减小。例如,该预设步长为10,则将平移数据由27调整为(27-10)=118。再次将预设的测试集合中的测试数据依次输入到神经网络计算芯片400,获取神经网络计算芯片400在平移数据为118时的计算精度,例如为98%。
S64、确定在平移数据发生变化后,计算精度的变化量是否超过阈值,该阈值可以为10%或者15%等。若未超过该阈值,则继续执行步骤S63,即控制寄存器中存储的平移数据的取值按照预设步长减小;若超过阈值,则该寄存器中存储的平移数据即为该最佳的平移数据,结束该流程。例如,在平移数据的取值为128时神经网络计算芯片400的计算精度,与平移数据的取值为118时神经网络计算芯片400的计算精度之间的差值为2%,未超过该阈值,则继续执行步骤S63,直至神经网络计算芯片400的计算精度的变化量超过该阈值。
当确定该最佳的平移数据后,后续在该神经网络计算芯片400对输入数据进行神经网络运算时,则直接使用该最佳的平移数据对输入数据进行平移处理。
在介绍完平移电路401之后,对计算电路402进行说明。
由于输入到计算电路402中的第二输入数据是经过平移处理的,该平移处理会引起输出偏移,为了消除该输出偏移,对计算电路402进行了改进。在本申请实施例中,对计算电路402的改进包括两种方式,第一种方式,在权重数据计算的过程中,对该输出偏移进行处理,第二种方式,在偏置处理过程中对该输出偏移进行处理。下面针对这两种方式分别进行说明。
第一种方式:
请参考图7,寄存器403还用于存储偏置输入数据,计算芯片还包括数据处理电路404,数据处理电路404,分别连接平移电路401以及寄存器403,用于根据第二输入数据与该偏置输入数据得到该第三输入数据,然后将第三输入数据输出至计算电路402。作为一种示例,数据处理电路404可以是通过合成器实现,合成器用于将偏置输入数据和第二输入数据进行合并处理。例如,第二输入数据为向量[0,5,6],寄存器中存储的偏置输入数据为向量[0,1],则合成器将第二输入数据和偏置输入数据拼接后,得到第三输入数据为向量[0,5,6,0,1],从而输出至计算电路402。
计算电路402,连接数据处理电路404,用于接收该第三输入数据,并根据存储的权重数据,对该第三输入数据进行计算,获得计算结果。计算电路402包括计算交叉阵列,该计算交叉阵列包括多个计算单元,该计算单元包括电阻型存储器计算单元,该电阻型存储器计算单元可以包括阻变存储器(resistive random access memory,RRAM)或相变存储器(phase change memory,PCM)或者闪存Flash等,在此不作限制。作为一种示例,该计算电路402可以是如图3所示的crossbar,该crossbar中存储预设的权重数据。
由上述对计算电路402的描述可知,在本申请实施例中,神经网络的计算过程只需要使用计算电路402中的权重数据对第三输入数据进行计算即可获得计算结果,但是,由前述对图1所示的神经网络系统的介绍可知,现有技术中的神经网络系统的计算单元是包括根据权重数据对输入数据进行计算的第一计算单元和对第一计算单元的计算结果进行偏置处理的第二计算单元的,可见,本申请实施例中的神经网络计算芯片400将偏置处理过程和权重计算过程进行融合,也就是说,在使用权重数据进行乘累加计算的同时,完成了对该乘累加计算的结果进行偏置处理的加法计算,进一步减少了神经网络计算的时延。
为实现将偏置处理过程和权重计算过程进行融合,在申请实施例中,对寄存器403中存储的偏置输入数据和计算电路402中存储的权重数据进行了改进。具体来讲,寄存器403中存储的偏置输入数据以及该计算电路402中存储的权重数据是根据平移电路401中的平移数据,该计算芯片的初始权重数据以及该计算芯片的初始偏置数据获得的。具体来讲,是使用该平移数据及初始权重,对该初始偏置数据进行处理,得到处理后的偏置数据,然后按照预设规则拆分该处理后的偏置数据得到的。例如,平移电路401使用该计算芯片的初始权重数据与预设的平移数据执行乘法运算得到计算结果。然后,将该计算芯片的初始偏置数据与该计算结果进行减法运算,得到处理后的偏置数据,最后,将处理后的偏置数据按照预设规则拆分成偏置输入数据和偏置权重两部分,其中偏置输入数据存储到寄存器403中,偏置权重和该计算芯片的初始权重数据一起作为计算电路402中存储的权重数据。
下面对预设规则进行说明。
合理地拆分处理后的偏置数据能够降低偏置权重的大小,从而不用占用较多的存储阵列存储该偏置权重,减小偏置权重的存储开销。在本申请实施例中,该预设规则是根据计算电路402的输入数据的范围以及权重数据的数据范围得到的。以计算电路402为crossbar,crossbar的输入数据为8比特的数据,crossbar中存储的权重数据也为8比特的数据为例,由于crossbar要求输入数据为非负数,则crossbar的输入数据的范围为[0,28-1],crossbar中权重数据的数据范围为[0,27-1]。该预设规则包括但不限于如下三种:
第一种预设规则:
将处理后的偏置数据拆分为1行1列的偏置输入数据以及与该处理后的偏置数据相同的偏置权重,其中,该偏置输入数据中的元素的取值为1。
请参考图8,为获取该偏置输入数据和权重数据的方法的示意图。假设该计算芯片的平移数据为4,初始权重数据为矩阵810,初始偏置数据为向量[1,-3,2]。与平移数据对应的输入数据为向量[4,4,4],将向量[4,4,4]和矩阵810做乘积运算,得到计算结果为向量[-8,4,-8],然后将初始偏置数据与该计算结果做减法运算,得到处理后的偏置数据为向量[9,-7,10]。然后,将向量[9,-7,10]拆分成偏置输入数据[1]和偏置权重[9,-7,10]两部分。可见,拆分后的偏置输入和偏置权重需要crossbar的1行cell进行存储。
第二种预设规则:
将处理后的偏置数据拆分为2行1列的偏置输入数据以及2行m列的偏置权重,其中,偏置输入数据的第一行的数据中元素的取值为1,偏置输入数据的第二行的数据中元素的取值为第一阈值,下文中以第一阈值为27为例进行说明;且,该偏置权重的第一行的元素S1(i)的取值满足如下公式:
S1(i)=sign(b(i))*(|b(i)|%27) (1),以及,
该偏置权重的第二行的元素S2(i)的取值满足如下公式:
S2(i)=sign(b(i))*(|b(i)|/27) (2)
其中,i为1,2…m,m为正整数,m为处理后的偏置数据的列数,b(i)为处理后的偏置数据中的元素,当b(i)的取值大于0时,sign(b(i))的取值为1,当b(i)的取值小于或等于0时,sign(b(i))的取值为-1,*表示乘法运算,%表示取余数运算,/表示除法运算。
作为一种示例,处理后的偏置数据为向量[9,-7,210],各个元素的取值的绝对值分别为9、7、210,绝对值的最大值为210小于214,因此,得到拆分后的偏置输入为向量[1,27];以及,得到拆分后的偏置权重也包括两行,其中:
第一行的第一个元素为sign(9)*(9%27)=(1*9)=9,第一行的第二个元素为sign(-7)*((7)%27)=((-1)*(7))=-7,第一行的第三个元素为sign(210)*((210)%27)=(1*0)=0,因此,得到偏置权重的第一行为[9,-7,0];
第二行的第一个元素为sign(9)*(9/27)=(1*0)=0,第一行的第二个元素为sign(-7)*((7)/27)=((-1)*(0))=0,第一行的第三个元素为sign(210)*((210)/27)=(1*8)=8,因此,得到偏置权重的第二行为[0,0,8];
综上,拆分处理后的偏置数据得到的偏置权重为:
可见,拆分后的偏置输入和偏置权重需要crossbar的2行cell进行存储。
第三种预设规则:
将处理后的偏置数据拆分为(N+2)行1列的偏置输入数据数据,以及(N+2)行m列的偏置权重,其中,N为n的最大值,n满足如下表达式:
其中,ceil()为向上取整运算。
(N+2)行偏置输入和偏置权重的组成如下:
第一行:偏置输入数据中元素的取值为1,偏置权重的第一行的元素K1(i)的取值满足如下公式:
K1(i)=sign(b(i))*sign(bres)*(abs(bres)%27) (4)
第二行:偏置输入数据中元素的取值为27,偏置权重的第二行的元素K2(i)的取值满足如下公式:
K2(i)=sign(b(i))*sign(bres)*abs(bres)/27) (5)
后续n行:偏置输入数据中元素的取值为(28-1),偏置权重的元素Kn(i)的取值满足如下公式:
Kn(i)=sign(b)*(27-1) (6)
最后(N-n)行:偏置输入数据中元素的取值为(28-1),偏置权重的元素的取值为0。
其中,abs()为取绝对值运算,bres=|b(i)|-n*(28-1)*(27-1)。
作为一种示例,处理后的偏置数据为向量[9,-7,215],各个元素的取值的绝对值分别为9、7、215,绝对值的最大值为215大于214,因此,得到拆分后的偏置权重为包括N+2行,其中,处理后的偏置数据中包括3个元素,根据n的公式得到,与第一个元素和第二个元素对应的n的取值为0,与第三个元素对应的n的取值为n=ceil(((215-214)/(28-1))/(27-1))=ceil(214/255/127)=ceil(0.51)=1。
然后,分别计算每一行的偏置输入和偏置权重。
针对第一行:
偏置输入数据中元素的取值为1,偏置权重的第一个元素K1(1)为:sign(9)*sign(9)*(abs(9)%27)=9,其中,bres=9;第二个元素K1(2)为:sign(-7)*sign(7)*(abs(7)%27)=-7,其中,bres=7;第三个元素K1(3)为:sign(215)*sign(383)*(abs(383)%27)=127,其中,bres=215-255*127=383,因此,第一行的偏置权重为[9,-7,127]。
针对第二行:
偏置输入数据中元素的取值为27,偏置权重的第一个元素K2(1)为:sign(9)*sign(9)*(abs(9)/27)=0,其中,bres=9;第二个元素K2(2)为:sign(-7)*sign(7)*(abs(7)/27)=0,其中,bres=7;第三个元素K2(3)为:sign(215)*sign(383)*(abs(383)/27)=2,其中,bres=215-255*127=383,因此,第二行的偏置权重为[0,0,2]。
针对后续N行(此例N=1),使用前述针对后续n行的计算方式和针对最后(N-n)行的计算方式一起来计算,具体方式为按照一行中包括的元素的个数,依次进行计算。
针对第一个元素,根据后续n行的计算公式,得到的偏置输入数据中元素的取值为(28-1),偏置权重的第一个元素为127,根据最后(N-n)行的计算公式,得到的偏置输入数据中的元素的取值为(28-1),偏置权重的第一个元素为0。但是根据处理后的偏置数据中第一个元素计算得到n=0,N-n=1,因此,不存在根据后续n行的计算公式得到的数据,即不存在偏置输入为(28-1),偏置权重为127的行,且存在根据最后(N-n)行的计算公式得到的数据,即存在偏置输入为(28-1),偏置权重为0的行。
针对第二个元素,采用与前述针对第一个元素相同的计算方式,得到不存在偏置输入为(28-1),偏置权重为127的行,但是存在偏置输入为(28-1),偏置权重为0的行。
针对第三个元素,采用与前述针对第一个元素相同的计算方式,由于n=1,N-n=0,因此,确定存在偏置输入为(28-1),偏置权重为127的行,但是不存在偏置输入为(28-1),偏置权重为0的行。
结合前述第一行、第二行以及后续N行的计算结果,得到最终的偏置输入数据为向量[1,27,28-1],以及偏置权重为矩阵:
可见,拆分后的偏置输入和偏置权重需要crossbar的3行cell进行存储。
在具体实施过程中,采用上述三种预设规则中的其中一种预设规则对处理后的偏置数据进行拆分,请参考图9,为确定使用何种预设规则对处理后的偏置数据进行拆分的流程图,该流程图的描述如下:
S91、计算处理后的偏置数据中每个元素的取值的绝对值,标记为|b|。
S92、判断处理后的偏置数据中多个元素的取值的绝对值的最大值|b|max是否小于第一阈值,该第一阈值可以为cell中存储的元素的取值的最大值,例如为27
若最大值|b|max小于该第一阈值,则使用第一种预设规则对处理后的偏置数据进行拆分。否则,执行步骤S93。
S93、判断最大值|b|max是否小于第二阈值,该第二阈值可以为权重数据的最大值和最小值的差值。在本申请实施例中,权重数据的取值为[-27+1,27-1],最大值和最小值的差值近似为214,则在下文中以该第二阈值设置为214为例。
若最大值|b|max小于第二阈值,则使用第二种预设规则对处理后的偏置数据进行拆分,否则,执行步骤S94。
S94、使用第三种预设规则对处理后的偏置数据进行拆分。
当然,还可以采用其他方式对处理后的偏置数据进行拆分,在本申请实施例中不作限制。
需要说明的是,由于crossbar的cell的电导只能为正数,若神经网络层的初始权重数据包括负数的权重数据时,则可以采用差分方式来实现。例如,可以使用两列cell分别映射正数的权重数据和负数的权重数据。如果一个权重数据为正数,则在第1列cell中与该元素对应的cell上映射该权重数据,并在第2列cell中与该元素对应的cell上映射高阻态(近似为0);如果是一个权重数据为负数,则在第1列cell中与该元素对应的cell上映射高阻态,并在第2列cell中与该元素对应的cell上映射该权重数据。这样,在每一列cell进行电流累加后,可以通过模拟域电流相减或者ADC采样后进行数字域相减来实现负数的权重数据。在这种情况下,存储权重数据所需的Cell数量为神经网络权重数量的2倍。
另外,第一种方式中的计算电路402还可以包括DAC和ADC。例如,在数据处理电路404和计算电路402之间设置DAC,ADC与计算电路402的输出端相连,若输入数据为数字信号时,则通过DAC将数字信号转换为模拟信号,例如转换为电压信号,然后将模拟信号加载到计算电路402中。当计算电路402根据预设的权重数据对该模拟信号进行计算后,则通过ADC将计算电路402的输出信号(例如为电流信号)转换为数字信号输出。
基于同一发明构思,本申请实施例提供一种神经网络计算方法,该方法应用于包括平移电路401如图7所示的计算电路402的神经网络计算芯片400中。
请参考图10,为本申请实施例提供的神经网络计算方法的流程图,该流程图描述如下:
S101、神经网络计算芯片400接收第一输入数据。
在本申请实施例中,该第一输入数据包括至少两个元素,该至少两个元素中的部分元素为负数。例如,请参考图11,为神经网络计算芯片400对第一输入数据进行处理的示意图。在图10中,第一输入数据为向量[-4,1,2],第一输入数据包括3个元素,其中,第一个元素的取值为负数,其余两个元素的取值为正数。
S102、神经网络计算芯片400基于预设的平移数据对第一输入数据进行处理,得到第二输入数据。
在本申请实施例中,该第二输入数据中包括的元素的取值为零或者正数。具体来讲,神经网络计算芯片400获取该第二输入数据的方式可以包括但不限于如下两种:
第一种获取方式,将该第一输入数据中的每个元素与平移电路401中存储的预设的平移数据进行求和运算,得到该第二输入数据。例如,如图11中的步骤1所示,平移电路401中存储的预设的平移数据为4,则通过平移电路401进行平移处理后得到第二输入数据为向量[0,5,6]。
第二种获取方式,平移电路401将该第一输入数据中的每个元素与平移数据进行求和运算,获得第一中间数据,并将该第一中间数据的每个元素与预设值进行比较,获得该第二输入数据。
神经网络计算芯片400可以采用其中一种方式获取第二输入数据,在此不作限制。
S103、神经网络计算芯片400基于预设的权重数据对第三输入数据进行计算,获得计算结果。
当神经网络计算芯片400的平移电路401输出第二输入数据后,计算电路402则使用预设的偏置输入数据对该第二输入数据进行处理,从而得到包括该第二输入数据以及该预设的偏置输入数据的第三输入数据。例如,如图11中的步骤2所示,该预设的偏置输入数据为向量[1],将预设的偏置输入数据和第二输入数据合并,得到第三输入数据为[0,5,6,1]。然后根据计算电路402中预设的权重数据,对该第三输入数据进行计算。例如,如图11所示的步骤3所示,预设的权重数据为矩阵1001:
将第三输入数据[0,5,6,1]与该矩1001进行乘积运算,从而得到计算结果为向量[-7,8,6]。
在本申请实施例中,该偏置权重和该偏置输入数据是按照预设规则对处理后的偏置数据进行拆分得到的,该处理后的偏置数据是根据所述平移数据与所述初始权重,对所述初始偏置数据进行处理得到的,该预设规则是根据所述计算电路的输入数据的范围以及所述权重数据的数据范围得到的。获取偏置权重和偏置输入数据的方式与前述对数据处理电路404以及计算模块402中相应的内容相似,在此不再赘述。
当然,由于权重数据中包括负数,计算电路402也可以使用两组crossbar分别映射包括负数的权重值和包括正数的权重值,具体方式与现有技术相似,在此不再赘述。从而,图11所示的步骤3可以替换为步骤4,预设的权重数据分别为矩阵1002和矩阵1003,矩阵1002和矩阵1003如下
然后分别将第三输入数据[0,5,6,1]与两个矩阵进行乘积运算,从而得到两个乘积,其中,与包括正数的权重值的矩阵相乘,得到的乘积为向量[9,15,16],与包括负数的权重值的矩阵相乘,得到的乘积为向量[16,7,10]。然后,执行步骤5,将两个乘积进行减法运算,得到计算结果为[-7,8,6]。步骤3与步骤4~步骤5可以选择一种来执行,在图11中示出了这两种方式。
在上述技术方案中,在输入数据中包括负数时,通过平移处理,将输入数据中的负数转换为非负数,可以满足crossbar对输入数据的取值的要求,且由于输入数据中每个元素的取值都不是负数,从而不需要使用计算阵列进行多次计算,可以提高神经网络的计算效率,减少神经网络运算的时延。进一步,由于不需要使用计算阵列进行多次计算,也可以减少计算资源的消耗。
第二种方式:
请参考图12,计算电路402包括计算交叉阵列4021和偏置计算电路4022。
计算交叉阵列4021存储该计算芯片的初始权重。当计算交叉阵列4021接收到经平移电路401处理的第二输入数据后,则将该第二输入数据与其存储的初始权重进行乘积运算,得到第一中间结果,然后将该第一中间结果输出至偏置计算电路4022。计算交叉阵列4021可以是如图3所示的crossbar,该crossbar的cell中存储该初始权重数据的权重值。
偏置计算电路4022在接收到由计算交叉阵列4021输出的第一中间结果后,则根据存储的偏置数据对该第一中间结果进行计算,获得该神经网络层的计算结果。该偏置计算电路4022可以是由加法器组成,该加法器中存储偏置数据,加法器用于将第一中间结果中的每个元素与偏置数据中对应的元素进行求和计算。例如,加法器将第一中间结果的第一个元素与偏置数据中的第一个元素进行求和,将第一中间结果的第二个元素与偏置数据中的第二个元素进行求和,以此类推,从而得到计算结果。
由于输入到计算电路402的第二输入数据是经平移处理后的数据,会引起输出偏移,为了消除该输出偏移,本申请实施例中,对偏置计算电路4022中存储的偏置数据进行了改进。该预设的偏置数据是根据平移电路401中的平移数据、该初始权重以及该初始偏置数据获得的。具体来讲,使用该初始权重对平移数据进行计算得到计算结果。然后,将该计算节点的初始偏置数据与该计算结果进行减法运算,得到处理后的偏置数据,然后将该处理后的偏置数据存储在偏置计算电路4022中,也就是说,偏置计算电路4022中存储的偏置数据不是该计算芯片的初始偏置数据,而是处理后的偏置数据。处理后的偏置数据的计算过程可以参照图8中相应的内容,在此不再赘述。
另外,第二种方式中的计算电路402还可以包括ADC和DAC,具体设置方式与第一种方式中ADC和DAC的设置方式相似,在此不再赘述。
基于同一发明构思,本申请实施例提供一种神经网络计算方法,该方法应用于包括平移模块401以及如图12所示的计算电路402的神经网络计算芯片400中。
请参考图13,为本申请实施例提供的神经网络计算方法的流程图,该流程图描述如下:
S131、神经网络计算芯片400接收第一输入数据。
S132、神经网络计算芯片400基于预设的平移数据对第一输入数据进行处理,得到第二输入数据。
步骤S131~步骤S132与步骤S101~步骤S102相似,在此不再赘述。
作为一种示例,请参考图14,为神经网络计算芯片400对第一输入数据进行处理的示意图。在图14中,第一输入数据为向量[-4,1,2],当神经网络计算芯片400接收该第一输入数据后,则执行图14中的步骤1,通过平移电路401中存储的平移数据(例如平移数据为4),对第一输入数据进行平移处理,得到第二输入数据为向量[0,5,6]。
S133、神经网络计算芯片400基于预设的权重数据对该第二输入数据进行计算,获得第一中间结果。
当神经网络计算芯片400的平移电路401输出第二输入数据后,计算电路402根据预设的初始权重,对该第二输入数据进行计算。例如,如图14所示的步骤2所示,预设的权重数据为矩阵1301:
将第二输入数据[0,5,6]与该矩阵进行乘积运算,从而得到第一中间结果为向量[-16,15,-4]。与步骤S103相似,当计算电路402使用两组crossbar来映射权重数据时,图14中的步骤2可以替换为步骤3,从而计算电路402中存储的权重数据分别为矩阵1302和矩阵1303,矩阵1302和矩阵1303如下:
然后分别将第二输入数据[0,5,6]与两个矩阵进行乘积运算,从而得到两个乘积,其中,与包括正数的权重值的矩阵相乘,得到的乘积为向量[0,15,6],与包括负数的权重值的矩阵相乘,得到的乘积为向量[16,0,10]。然后,执行步骤4,将两个乘积进行减法运算,得到第一中间结果为[-16,15,-4]。步骤2与步骤3~步骤4可以选择一种来执行,在图14中示出了这两种方式。
S134、神经网络计算芯片400基于预设的偏置数据对第一中间结果进行计算,获得计算结果。
当计算电路402获取该第一中间结果后,则使用预设的偏置数据与该第一中间结果进行加法运算。如图14中的步骤5所示,预设的偏置数据为向量[9,-7,10],将第一中间结果中的每个元素与偏置数据中对应的元素相加,从而得到计算结果为向量[-7,8,6]。
在上述技术方案中,在输入数据中包括负数时,通过平移处理,将输入数据中的负数转换为非负数,可以满足crossbar对输入数据的取值的要求,且由于输入数据中每个元素的取值都不是负数,从而不只需要使用两个计算阵列进行计算,可以提高神经网络的计算效率,减少神经网络运算的时延。进一步,由于不需要使用多个计算阵列,也可以减少计算资源的消耗。
上述本申请提供的实施例中,为了实现上述本申请实施例提供的方法中的各功能,存储系统可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能以硬件结构、软件模块、还是硬件结构加软件模块的方式来执行,取决于技术方案的特定应用和设计约束条件。
本申请实施例中还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行图10或13所示的实施例中神经网络计算芯片400执行的方法。
本申请实施例中还提供一种计算机程序产品,包括指令,当其在计算机上运行时,使得计算机执行图10或13所示的实施例中神经网络计算芯片400执行的方法。
本申请实施例提供了一种神经网络系统,该神经网络系统包括图4或图5A或图5B或图7所示的实施例中神经网络计算芯片400。
本申请实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,简称DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,简称DVD))、或者半导体介质(例如,SSD)等。

Claims (20)

1.一种神经网络计算芯片,其特征在于,包括:
平移电路,用于接收第一输入数据,并基于预设的平移数据对输入所述计算芯片的第一输入数据进行处理,得到第二输入数据,其中,所述第一输入数据包括至少两个元素,所述至少两个元素中的部分元素为负数,所述第二输入数据中包括的元素的取值为零或者正数;
计算电路,连接所述平移电路,用于接收第三输入数据,并基于预设的权重数据对所述第三输入数据进行计算,获得计算结果,其中,所述第三输入数据包括所述第二输入数据以及预设的偏置输入数据,所述权重数据包括偏置权重以及所述计算芯片的初始权重,所述偏置权重和所述偏置输入数据是根据所述平移数据、所述初始权重以及所述计算芯片的初始偏置数据获得的。
2.根据权利要求1所述的计算芯片,其特征在于,所述计算芯片还包括:
寄存器,用于存储所述预设的平移数据;
所述平移电路连接所述寄存器,用于接收所述第一输入数据以及所述平移数据,并分别将所述第一输入数据中的每个元素与所述平移数据进行求和运算以获得所述第二输入数据。
3.根据权利要求1所述的计算芯片,其特征在于,所述计算芯片还包括:
寄存器,用于存储所述预设的平移数据;
所述平移电路包括:
加法器,连接所述寄存器,并用于接收所述第一输入数据以及所述平移数据,并分别将所述第一输入数据中的每个元素与所述平移数据进行求和运算,获得第一中间数据;
比较器,连接所述加法器,用于将所述第一中间数据的每个元素与预设值进行比较,获得所述第二输入数据。
4.根据权利要求2或3所述的计算芯片,其特征在于:
所述寄存器,还用于存储所述偏置输入数据;
所述计算芯片还包括:
数据处理电路,分别连接所述平移电路以及所述寄存器,用于根据所述第二输入数据与所述偏置输入数据得到所述第三输入数据;
其中,所述计算电路,连接所述数据处理电路,用于接收所述第三输入数据,并根据存储的所述权重数据,对所述第三输入数据进行计算,获得所述计算结果。
5.根据权利要求1或2所述的计算芯片,其特征在于,所述偏置权重和所述偏置输入数据是按照预设规则对处理后的偏置数据进行拆分得到的,其中,所述预设规则根据所述计算电路的输入数据的范围以及所述初始权重的数据范围来确定,所述处理后的偏置数据是根据所述平移数据、所述初始权重以及所述初始偏置数据计算得到的。
6.根据权利要求1或2所述的计算芯片,其特征在于,所述计算电路包括计算交叉阵列,所述计算交叉阵列包括多个计算单元,所述计算单元包括电阻型存储器计算单元。
7.根据权利要求6所述的计算芯片,其特征在于,所述电阻型存储器计算单元包括阻变存储器ReRAM或相变存储器PCM或闪存Flash。
8.一种神经网络计算芯片,其特征在于,包括:
平移电路,用于接收第一输入数据,并基于预设的平移数据对输入所述计算芯片的第一输入数据进行处理,得到第二输入数据,其中,所述第一输入数据包括至少两个元素,所述至少两个元素中的部分元素为负数,所述第二输入数据中包括的元素的取值为零或者正数;
计算电路,连接所述平移电路并用于:
接收所述第二输入数据,并基于预设的初始权重对所述第二输入数据进行计算,获得第一中间结果;以及,
基于预设的偏置数据对所述第一中间结果进行计算,获得计算结果,其中,所述预设的偏置数据是根据所述平移数据、所述初始权重以及所述计算芯片的初始偏置数据获得的。
9.根据权利要求8所述的计算芯片,其特征在于,所述计算芯片还包括:
寄存器,用于存储所述预设的平移数据;
所述平移电路连接所述寄存器,用于接收所述第一输入数据以及所述平移数据,并分别将所述第一输入数据中的每个元素与所述平移数据进行求和运算,获得所述第二输入数据。
10.根据权利要求8所述的计算芯片,其特征在于,所述计算芯片还包括:
寄存器,用于存储所述预设的平移数据;
所述平移电路包括:
加法器,连接所述寄存器,并用于接收所述第一输入数据以及所述平移数据,并分别将所述第一输入数据中的每个元素与所述平移数据进行求和运算,获得第一中间数据;
比较器,连接所述加法器,用于将所述第一中间数据的每个元素与预设值进行比较,获得所述第二输入数据。
11.根据权利要求8-10中任一项所述的计算芯片,其特征在于,所述计算电路包括:
计算交叉阵列,连接所述平移电路,用于接收所述第二输入数据,并根据存储的所述初始权重对所述第二输入数据进行计算,得到所述第一中间结果,其中,所述计算交叉阵列包括多个电阻型存储器计算单元;
偏置计算电路,连接所述计算交叉阵列,用于接收所述第一中间结果,并根据所述偏置数据对所述第一中间结果进行计算,获得所述计算结果。
12.根据权利要求11所述的计算芯片,其特征在于,所述电阻型存储器计算单元包括阻变存储器ReRAM或相变存储器PCM或闪存Flash。
13.一种神经网络计算方法,其特征在于,所述方法由神经网络计算芯片执行,所述方法包括:
接收第一输入数据,所述第一输入数据包括至少两个元素,所述至少两个元素中的部分元素的值为负数;
基于预设的平移数据对所述第一输入数据进行处理,得到第二输入数据,其中,所述第二输入数据中包括的元素的取值为零或者正数;
基于预设的权重数据对第三输入数据进行计算,获得计算结果,其中,所述第三输入数据包括所述第二输入数据以及预设的偏置输入数据,所述权重数据包括偏置权重以及所述计算芯片的初始权重,所述偏置权重和所述偏置输入数据是根据所述平移数据、所述初始权重以及所述计算芯片的初始偏置数据获得的。
14.根据权利要求13所述的方法,其特征在于,基于预设的平移数据对所述第一输入数据进行处理,得到第二输入数据,包括:
将所述第一输入数据中的每个元素与所述预设的平移数据进行求和运算,得到所述第二输入数据。
15.根据权利要求13所述的方法,其特征在于,基于预设的平移数据对所述第一输入数据进行处理,得到第二输入数据,包括:
将所述第一输入数据中的每个元素与所述平移数据进行求和运算,获得第一中间数据;
将所述第一中间数据的每个元素与预设值进行比较,获得所述第二输入数据。
16.根据权利要求13-15中任一项所述的方法,其特征在于,所述偏置权重和所述偏置输入数据是按照预设规则对处理后的偏置数据进行拆分得到的,其中,所述预设规则根据所述计算芯片的输入数据的范围以及所述初始权重的数据范围来确定,所述处理后的偏置数据是根据所述平移数据、所述初始权重以及所述初始偏置数据计算得到的。
17.一种神经网络计算方法,其特征在于,所述方法由神经网络计算芯片执行,所述方法包括:
接收第一输入数据,所述第一输入数据包括至少两个元素,所述至少两个元素中的部分元素的值为负数;
基于预设的平移数据对所述第一输入数据进行处理,得到第二输入数据,其中,所述第二输入数据中包括的元素的取值为零或者正数;
基于预设的初始权重对所述第二输入数据进行计算,获得第一中间结果;
基于预设的偏置数据对所述第一中间结果进行计算,获得计算结果,其中,所述偏置数据是根据所述平移数据、所述初始权重以及所述计算芯片的初始偏置数据获得的。
18.根据权利要求17所述的方法,其特征在于,基于预设的平移数据对所述第一输入数据进行处理,得到第二输入数据,包括:
将所述第一输入数据中的每个元素与所述预设的平移数据进行求和运算,得到所述第二输入数据。
19.根据权利要求17所述的方法,其特征在于,基于预设的平移数据对所述第一输入数据进行处理,得到第二输入数据,包括:
将所述第一输入数据中的每个元素与所述平移数据进行求和运算,获得第一中间数据;
将所述第一中间数据的每个元素与预设值进行比较,获得所述第二输入数据。
20.一种计算机存储介质,其特征在于,所述计算机存储介质存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求13-16或17-19任一项所述的方法。
CN201910995603.2A 2019-10-18 2019-10-18 一种神经网络计算芯片及计算方法 Active CN112686364B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201910995603.2A CN112686364B (zh) 2019-10-18 2019-10-18 一种神经网络计算芯片及计算方法
EP20877684.9A EP4036805A4 (en) 2019-10-18 2020-10-19 NEURON NETWORK COMPUTER CHIP AND COMPUTATION METHOD
KR1020227016249A KR20220077930A (ko) 2019-10-18 2020-10-19 신경망 컴퓨팅 칩 및 컴퓨팅 방법
PCT/CN2020/121928 WO2021073642A1 (zh) 2019-10-18 2020-10-19 一种神经网络计算芯片及计算方法
US17/722,890 US11853594B2 (en) 2019-10-18 2022-04-18 Neural network computing chip and computing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910995603.2A CN112686364B (zh) 2019-10-18 2019-10-18 一种神经网络计算芯片及计算方法

Publications (2)

Publication Number Publication Date
CN112686364A CN112686364A (zh) 2021-04-20
CN112686364B true CN112686364B (zh) 2023-12-08

Family

ID=75445028

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910995603.2A Active CN112686364B (zh) 2019-10-18 2019-10-18 一种神经网络计算芯片及计算方法

Country Status (5)

Country Link
US (1) US11853594B2 (zh)
EP (1) EP4036805A4 (zh)
KR (1) KR20220077930A (zh)
CN (1) CN112686364B (zh)
WO (1) WO2021073642A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110458120B (zh) * 2019-08-15 2022-01-04 中国水利水电科学研究院 一种复杂环境下不同车型识别方法及系统
CN113517007B (zh) * 2021-04-29 2023-07-25 西安交通大学 一种流水处理方法、系统和忆阻器阵列
US20230102492A1 (en) * 2021-09-30 2023-03-30 Stmicroelectronics International N.V. Bit-cell architecture based in-memory compute
CN116151316A (zh) * 2021-11-15 2023-05-23 平头哥(上海)半导体技术有限公司 适用于类神经网络模型的计算系统及实现类神经网络模型的方法
CN114330694A (zh) * 2021-12-31 2022-04-12 上海集成电路装备材料产业创新中心有限公司 实现卷积运算的电路及其方法
CN115186821B (zh) * 2022-09-13 2023-01-06 之江实验室 面向芯粒的神经网络推理开销估计方法及装置、电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108334942A (zh) * 2017-12-22 2018-07-27 清华大学 神经网络的数据处理方法、装置、芯片和存储介质
CN109657787A (zh) * 2018-12-19 2019-04-19 电子科技大学 一种二值忆阻器的神经网络芯片

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9177246B2 (en) * 2012-06-01 2015-11-03 Qualcomm Technologies Inc. Intelligent modular robotic apparatus and methods
US9910827B2 (en) 2016-07-01 2018-03-06 Hewlett Packard Enterprise Development Lp Vector-matrix multiplications involving negative values
US20190278600A1 (en) * 2018-03-09 2019-09-12 Nvidia Corporation Tiled compressed sparse matrix format
US11093168B2 (en) * 2018-09-04 2021-08-17 Apical Limited Processing of neural networks on electronic devices
WO2021036905A1 (zh) * 2019-08-27 2021-03-04 安徽寒武纪信息科技有限公司 数据处理方法、装置、计算机设备和存储介质
CN112446460A (zh) * 2019-08-28 2021-03-05 上海寒武纪信息科技有限公司 用于处理数据的方法、装置以及相关产品
US20220207337A1 (en) * 2020-12-31 2022-06-30 Deepx Co., Ltd. Method for artificial neural network and neural processing unit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108334942A (zh) * 2017-12-22 2018-07-27 清华大学 神经网络的数据处理方法、装置、芯片和存储介质
CN109657787A (zh) * 2018-12-19 2019-04-19 电子科技大学 一种二值忆阻器的神经网络芯片

Also Published As

Publication number Publication date
US20220236909A1 (en) 2022-07-28
EP4036805A4 (en) 2022-11-23
EP4036805A1 (en) 2022-08-03
KR20220077930A (ko) 2022-06-09
US11853594B2 (en) 2023-12-26
CN112686364A (zh) 2021-04-20
WO2021073642A1 (zh) 2021-04-22

Similar Documents

Publication Publication Date Title
CN112686364B (zh) 一种神经网络计算芯片及计算方法
CN110796241B (zh) 基于忆阻器的神经网络的训练方法及其训练装置
US11409438B2 (en) Peripheral circuit and system supporting RRAM-based neural network training
CN111047031B (zh) 用于神经网络中的数据重用的移位装置
US11386319B2 (en) Training of artificial neural networks
CN108446764B (zh) 一种新型神经形态芯片架构
CN108009640A (zh) 基于忆阻器的神经网络的训练装置及其训练方法
CN111478703B (zh) 基于忆阻交叉阵列的处理电路及输出电流的补偿方法
JP7536574B2 (ja) 演算デバイス、計算機システム、及び演算方法
EP4024283A1 (en) Method and apparatus for processing data, and related product
CN114626514A (zh) 一种神经网络计算装置及计算方法
Reis et al. A fast and energy efficient computing-in-memory architecture for few-shot learning applications
CN113805974A (zh) 基于应用程序的数据类型选择
CN118036682A (zh) 加法神经网络的存内计算实现方法、装置、设备及介质
US10636484B2 (en) Circuit and method for memory operation
US11275713B2 (en) Bit-serial linear algebra processor
CN114169489A (zh) 一种神经网络计算芯片的权重调整方法及装置
US20220101142A1 (en) Neural network accelerators resilient to conductance drift
CN111476356B (zh) 忆阻神经网络的训练方法、装置、设备及存储介质
CN113537478A (zh) 一种计算装置及神经网络系统
TWI674579B (zh) 用於記憶體操作的電路和方法
CN114096948A (zh) 位串查找数据结构
US20230161557A1 (en) Compute-in-memory devices and methods of operating the same
CN111198714A (zh) 重训练方法及相关产品
US20240143541A1 (en) Compute in-memory architecture for continuous on-chip learning

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