CN116468087A - 用于执行深度神经网络的计算的硬件加速器和包括其的电子设备 - Google Patents

用于执行深度神经网络的计算的硬件加速器和包括其的电子设备 Download PDF

Info

Publication number
CN116468087A
CN116468087A CN202310077362.XA CN202310077362A CN116468087A CN 116468087 A CN116468087 A CN 116468087A CN 202310077362 A CN202310077362 A CN 202310077362A CN 116468087 A CN116468087 A CN 116468087A
Authority
CN
China
Prior art keywords
tensor
output
hardware accelerator
sub
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310077362.XA
Other languages
English (en)
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.)
Daegu Qingbei Academy Of Science And Technology
Original Assignee
Daegu Qingbei Academy Of Science And Technology
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
Priority claimed from KR1020220186268A external-priority patent/KR20230112050A/ko
Application filed by Daegu Qingbei Academy Of Science And Technology filed Critical Daegu Qingbei Academy Of Science And Technology
Publication of CN116468087A publication Critical patent/CN116468087A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

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

Abstract

一种硬件加速器,包括:处理核,包括多个乘法器,所述多个乘法器被配置为在第一张量的符号和尾数与第二张量的符号和尾数之间执行一维(1D)子字并行化,第一处理设备被配置为在二维(2D)操作模式下操作,在二维操作模式中,输出多个乘法器的计算结果,以及第二处理设备,被配置为在三维(3D)操作模式下操作,在三维操作模式中,在通道方向上累加多个乘法器的计算结果,然后输出累加计算结果的结果。

Description

用于执行深度神经网络的计算的硬件加速器和包括其的电子 设备
本申请基于并要求2022年1月19日提交到韩国知识产权局的第10-2022-0008090号韩国专利申请和2022年12月27日提交到韩国知识产权局的第10-2022-0186268号韩国专利申请的优先权,其公开内容通过引用整体并入本文。
技术领域
本公开涉及一种用于执行深度神经网络的计算的硬件加速器以及包括该硬件加速器的电子设备,并且更具体地,涉及一种通过使用块浮点来支持具有各种精度的学习和推断操作并且在学习操作的每个阶段以高效率操作的硬件加速器以及包括该硬件加速器的电子设备。
背景技术
受高性能计算系统和不断增长的开源数据集的影响,深度学习发展得非常迅速。此外,随着精度的提高,深度学习技术正在许多应用中使用,诸如计算机视觉、语言建模或自主驾驶。
为了在应用中使用深度学习,需要称为训练的过程。在深度学习中,训练是指通过特定数据集更新深度神经网络(DNN)的权重的过程。权重更新得越好,DNN可以越好地执行给定任务。
训练包括前向传递步骤、后向传递步骤、权重更新步骤等。前向传递步骤是计算训练过程中的损失的过程,后向传递步骤是计算损失函数的梯度的过程。梯度通常通过链式法则获得,并且在与前向传递步骤的方向相反的方向上传播到构成DNN的所有层。权重更新步骤是对构成DNN的权重进行更新的过程,通过从当前的权重中减去将权重的损失函数的梯度乘以学习速率而得到的值来进行更新。
这样的训练过程需要相当大量的计算,并且因此当在中央处理单元(CPU)上执行时花费大量时间。图形处理单元(GPU)更适合于并行处理,因此比CPU消耗更少的时间,但由于其结构特性而显示出低利用率。
最近,已经提出了许多专用硬件加速器来克服CPU和GPU的缺点。然而,现有技术中的加速器仅支持特定精度或仅针对特定训练步骤(例如,前向传递步骤和后向传递步骤)表现出高效率。
发明内容
另外的方面将部分地在下面的描述中阐述,并且部分地将从描述中显而易见,或者可以通过实践本公开的所呈现的实施例来学习。
根据本公开的一个方面,一种硬件加速器包括多个乘法器,所述多个乘法器在第一张量的符号和尾数与第二张量的符号和尾数之间执行一维(1D)子字并行化。所述硬件加速器可以包括第一处理设备,所述第一处理设备在二维(2D)操作模式下操作以输出多个乘法器的计算结果。硬件加速器可以包括以三维(3D)操作模式操作的第二处理设备,用于在通道方向上累加多个乘法器的计算结果,并输出累加计算结果的结果。
根据本公开的另一方面,一种电子设备包括硬件加速器,该硬件加速器通过使用多个乘法器在第一张量的符号和尾数与第二张量的符号和尾数之间执行1D子字并行化,并且通过使用共享指数处理器在第一张量的共享指数与第二张量的共享指数之间执行处理。电子设备可以包括处理器,该处理器被配置为执行至少一个指令以基于深度神经网络信息来控制硬件加速器,该深度神经网络信息包括深度神经网络中的层的数量、层的类型、张量的形状、张量的维度、操作模式、位精度、批量归一化的类型、池化层的类型和修正线性单元(ReLU)函数的类型中的至少一个。电子设备可以包括存储至少一个指令和深度神经网络的存储器。
附图说明
通过以下结合附图的描述,本公开的某些实施例的上述和其他方面、特征和优点将更加明显,其中:
图1是用于描述现有技术中的深度学习操作环境的示图;
图2是示出根据实施例的电子设备的配置的框图;
图3是用于描述根据实施例的块浮点(BFP)的示图;
图4是用于描述根据实施例的训练深度神经网络的过程的主要操作的示图;
图5是用于描述根据实施例的二维(2D)操作模式和三维(3D)操作模式的示图;
图6是用于描述根据实施例的硬件加速器的配置的示图;
图7是用于描述图6所示的子核的配置的示图;
图8是用于描述图7中所示的处理单元的详细配置的示图;
图9是用于描述图8所示的乘法器的详细配置的示图;
图10是用于描述根据实施例的电子设备的操作的示图;
图11是用于描述图6的修正线性单元(ReLU)-池单元的详细配置的示图;
图12是用于描述图6的核输出缓冲器的详细配置的示图;
图13是用于描述图6的先进先出(FIFO)的详细配置的示图;
图14是用于描述图6的权重更新单元的详细配置的示图;
图15是用于描述图6的FP2BFP转换器的详细配置的示图;
图16是用于描述图6的量化单元的详细配置的示图;
图17是用于示例性地描述如何将输入张量映射到Conv3层中的处理核的示图;
图18是用于示例性地描述如何将权重张量映射到Conv3层中的处理核的示图;
图19是根据实施例的用于描述根据深度神经网络的层类型的子核的操作的示图;
图20是用于描述根据实施例的2D操作模式下的映射方法的示例的示图;
图21是用于描述根据实施例的电子设备的操作的示图;
图22是用于描述图6的共享指数处理器的详细配置的示图;以及
图23是示例性地示出根据实施例的电子设备的框图。
具体实施方式
现在将详细参考实施例,其示例在附图中示出,其中相同的附图标记始终表示相同的元件。在这方面,本实施例可以具有不同的形式,并且不应被解释为限于本文阐述的描述。因此,下面仅通过参考附图来描述实施例,以解释本说明书的各方面。如本文所使用的,术语“和/或”包括相关联的所列项目中的一个或多个的任何和所有组合。诸如“……中的至少一个”的表达当在元素列表之前时,修饰整个元件列表而不修饰列表的各个元素。
在下文中,将参考附图详细描述本公开。在本公开中执行的信息(数据)传输过程中,可以在必要时应用加密/解密,并且本公开和权利要求中描述信息(数据)传输过程的表述应当被解释为包括加密/解密的情况,尽管没有提及。在本公开中,诸如“从A发送(传送)到B”或“从B接收A”的表述可以包括利用其间的另一介质进行发送(传送)或接收,并且不仅仅表示直接发送(传送)或从A接收到B。
在描述本公开时,应当理解,每个操作的顺序不受限制,除非前面的步骤应当在逻辑上和时间上在后续操作之前执行。也就是说,除了如上所述的例外情况之外,即使当被描述为后续操作的过程在被描述为先前操作的过程之前执行时,它也不影响本公开的性质,并且也应当不考虑操作的顺序如何来限定权利要求。此外,在说明书中,“A或B”不仅选择性地指示A和B中的任何一个,而且被定义为包括A和B两者。另外,如本文所使用的,术语“包括”可以具有除了所列出的元素之外还包括其他元素的含义。
在说明书中,仅描述了本公开的描述所必需的必要元素,并且可以不提及与本公开的要点无关的元素。另外,它不应被解释为仅包括所提及的元素的排他性含义,而应被解释为包括其他元素的非排他性含义。
在本公开中,术语“值”被定义为不仅包括标量值而且包括向量的概念。
在本公开中,“convK层”表示权重内核大小为K×K的卷积层。例如,“conv3层”的权重内核大小为3×3,“conv5层”的权重内核大小为5×5,“conv7层”的权重内核大小为7×7。
在本公开中,术语“一维(1D)子字并行化”是指一系列子字以1D阵列的形式输入到一系列乘法器中,然后在其上并行执行算术操作的操作。例如,假设第一张量和第二张量中的每一个的16位数据包括四个4位子字,并且4位子字被输入到四个乘法器中。第一张量的四个4位子字可以以1D阵列的形式分别输入到四个乘法器中,并且第二张量的四个4位子字之一可以输入到所有四个乘法器中。在这种情况下,可以表示对第一张量执行1D子字并行化。接下来,可以以1D阵列的形式将第二张量的四个4位子字分别输入到四个乘法器中,并且可以将第一张量的四个4位子字之一输入到所有四个乘法器中。在这种情况下,可表示对第二张量执行1D子字并行化。由于对第一张量和第二张量中的每一个执行1D子字并行化,因此可实现2D子字并行化。
本文参考术语“单元”、“模块”、“块”、“...器或…块”等描述的组件以及附图中所示的功能块可以实现为软件、硬件或其组合。例如,软件可以是机器代码、固件、嵌入式代码或应用软件。例如,硬件可以包括电路、电子电路、集成电路、处理器、计算机、集成电路、集成电路核心、压力传感器、惯性传感器、微机电系统(MEMS)设备、无源元件或其组合。
以下将描述的本公开的每个操作的数学操作或计算可通过所述操作或计算的公知编码方法和/或对本公开适当考虑的编码而作为计算机操作来实现。
下面描述的具体等式被描述为许多可能的替代方案中的示例,并且不应被解释为本公开的范围不限于本公开中的等式。
在下文中,将参考附图详细描述各种实施例。
图1是用于描述现有技术中的深度学习操作环境的示图。
在现有技术中,利用中央处理单元(CPU)或图形处理单元(GPU)来训练深度神经网络。然而,深度神经网络的训练需要大量的计算,并且CPU具有少量的算术和逻辑单元(ALU),因此需要大量时间来进行训练。此外,GPU具有大量ALU,但适用性低,因此难以应用于各种训练计算。
因此,在本公开中,描述了一种硬件加速器,该硬件加速器高度适用并且具有许多ALU,因此比使用GPU的方法或使用CPU的方法更快且更灵活。
另外,如图1所示,在现有技术中,通过使用一个精度即FP32来执行计算,并且在对所有数据使用FP32的情况下,需要大容量存储器120,并且在发送和接收数据的过程中出现高通信成本。
在需要大容量存储器和高通信成本的情况下,难以在具有低资源的移动设备上训练深度神经网络。另外,在训练过程中包括各种步骤,并且各个步骤所需的精度可以彼此不同。在现有技术中,在训练过程中仅使用一个精度,因此训练过程需要很长时间,然而,在本公开中,通过根据训练过程的每个步骤所需的精度自适应地改变精度,可以执行更快的训练。下面将描述根据本公开的硬件加速器200的详细配置和操作。
图2是示出根据实施例的电子设备100的配置的框图。
参考图2,电子设备100可以包括通信设备110、存储器120、显示器130、操纵输入设备140和处理器150。这样的电子设备可以是诸如智能电话的移动设备,以及诸如个人计算机(PC)、膝上型计算机或服务器的设备。
提供通信设备110以通过局域网(LAN)和互联网网络或者通过通用串行总线(USB)端口或无线通信(例如,Wi-Fi 802.11a/b/g/n、近场通信(NFC)、蓝牙)端口将电子设备100与外部设备(未示出)连接。通信设备110还可以被称为收发器。
通信设备110可以接收要训练的深度神经网络和/或用于训练深度神经网络的数据集。
在实施例中,通信设备110可以将经训练的深度神经网络发送到外部,或者可以将通过将外部提供的数据应用于深度神经网络而获得的结果值发送到深度神经网络。
在实施例中,通信设备110可以从外部接收训练深度神经网络所需的参数,例如,要在训练中使用的尾数的大小(或精度)。同时,在实施方式中,可以通过下面描述的操纵输入设备140从用户直接输入各种参数。
存储器120可以存储与电子设备100相关的至少一个指令。详细地,根据各种实施例的用于操作电子设备100的各种程序(或软件)可以存储在存储器120中。
在实施例中,存储器120可以以各种形式实现,诸如随机存取存储器(RAM)、只读存储器(ROM)、闪存、硬盘驱动器(HDD)、外部存储器或存储卡,但不限于此。
在实施例中,存储器120可以存储机器学习或深度学习所需的深度神经网络。这里,深度神经网络可以是深度学习网络,但不限于此,并且可以应用各种模型,只要模型可以基于数据集更新其内部权重即可。
显示器130显示用于接收对电子设备100所支持的功能的选择的用户界面窗口。详细地,显示器130可以显示用于接收对由电子设备100提供的各种功能的选择的用户界面窗口。显示器130可以是诸如液晶显示器(LCD)或有机发光二极管(OLED)显示器的监视器,并且可以被实现为能够同时执行下面将要描述的操纵输入设备140的功能的触摸屏。
显示器130可以显示请求输入要应用于训练过程的各种参数的消息。在一种实施方式中,参数可以由用户直接输入,也可以根据深度神经网络的特性和数据集自动选择。
操纵输入设备140可以从用户接收对电子设备100的功能的选择和用于该功能的控制命令。
处理器150控制电子设备100的整体操作。详细地,处理器150可以通过执行存储在存储器120中的至少一个指令来控制电子设备100的整体操作。处理器150可以是诸如CPU或专用集成电路(ASIC)的单个设备,或者可以包括诸如CPU或GPU的多个设备。
当输入训练深度神经网络的命令时,处理器150可以通过使用输入数据集对深度神经网络执行训练操作。在该过程中,处理器150可以通过使用内部专用硬件加速器来执行训练操作。硬件加速器通过使用块浮点(BFP)方法来执行计算,并且可以以各种精度来执行计算。
为此,处理器150可将构成训练数据集的数据转换为具有相同指数大小和预设大小的符号和尾数的数据。这里,预设大小可以是4位、8位或16位。
在这种情况下,硬件加速器可以在深度神经网络的各种过程期间执行具有不同精度的算术操作。详细地,处理器150可以执行训练操作,使得数据在前向传递步骤和后向传递步骤中的至少一个中被转换为具有第一大小(例如,4位或8位),并且在权重更新过程中被转换为具有大于第一大小的第二大小(例如,16位)的尾数。此外,在权重更新过程中,可以将损失梯度图划分成预设大小的块,并且可以以损失梯度图被划分成的块为单位来执行计算操作。下面将参考图6描述硬件加速器的详细操作。
在实施例中,处理器150可以生成用于控制硬件加速器的控制信号,并将生成的控制信号提供给硬件加速器。这里,控制信号可以包括诸如网络类型、层的数量、数据维度、修正线性单元(ReLU)或池化选项的信息。
如上所述,根据本公开的电子设备100通过使用用于深度神经网络的训练或推断的专用硬件加速器来执行训练或推断,因此可以快速执行训练或推断操作。另外,通过使用适合于训练过程的每个步骤的精度而不是使用固定精度来进行训练过程,能够灵活且高精度地执行训练。
同时,尽管硬件加速器在上面被描述为处理器150内的组件,但是在实施方式中,硬件加速器可以是与处理器150分离的组件。另外,尽管上面参考图2示出和描述了该操作仅应用于训练深度神经网络的过程,但是在实施方式中,该操作也可以应用于使用训练深度神经网络的推断过程。
图3是用于描述根据实施例的BFP的示图。
在本公开中,通过使用BFP方法来执行计算。在描述BFP方法之前,将描述表示浮点数的一般方法。
浮点数可以具有取决于精度的各种形式,但是最常用的是FP32 20,其是由电气和电子工程师协会(IEEE)指定的格式。FP3220表示具有符号、指数和尾数的实数。例如,浮点数可以表示为下面的等式1。
“等式1”
这里,对于实数,xi表示实数,si表示符号,mi表示尾数,并且ei表示指数。
同时,在FP3220中,符号用1位指示,尾数用23位指示,并且指数用8位指示,使得浮点数用总共32位指示。
然而,在针对所有值处理具有32位的数据的情况下,会在处理中浪费许多资源。因此,在本公开中,引入BFP的概念以表示具有相同指数的各种数据段。
详细地,BFP 30是上述浮点表示的特殊形式,并且每个数字共享N个数字块中的最高数字的指数32。也就是说,如图3的右侧所示,若干值具有相同的共享指数32,并且每个值31仅具有对应的共享指数的符号和尾数。例如,多个实数值可以表示为下面的等式2。
“等式2”
这里,es表示块的共享指数,并且是在实施例中,每个值仅由符号和尾数组成,如下面的等式3所示。
“等式3”
通过使用如上所述的BFP,不仅可以大大减少数据存储空间,而且可以仅利用整数算术操作来执行实数计算。
此外,根据精度支持各种大小的符号和尾数。例如,符号和尾数的大小可以是4位、8位或16位。在实施例中,可以针对训练过程中的每个步骤不同地应用符号和尾数的大小。例如,4位符号和尾数可以用于特征图计算,并且8位或16位符号和尾数可以用于局部梯度计算或权重更新。
这样,本公开支持各种大小的尾数,并且因此根据本公开生成的模型可以在支持具有使用相同指数位的精度(例如,bfloat 16)的CPU/GPU的加速器上执行。此外,通过控制管理指数的处理程序,可以执行4位、8位和16位整数算术操作。这将在下面参考图6进行描述。
图4是根据实施例的用于描述训练深度神经网络的过程的主要操作的示图。参考图4,训练过程包括如图4所示的三个主要计算操作。
第一操作是训练损失计算操作410,其也可以被称为前向传递。训练损失计算操作是通过对具有权重内核的集合W0、…、WCo-1的输入特征图X执行卷积操作来计算输出特征图Y的操作。输入特征图X的通道的数量可以是Ci,并且输出特征图Y的通道的数量可以是Co。权重内核的集合W0、…、WCo-1的数量可以是Co。输出特征图Y的宽度和高度可以分别是W和H。在实施例中,输入特征图X的宽度和高度以及输出特征图Y的宽度W和高度H可以分别彼此不同。在实施例中,输入特征图X的宽度和高度以及输出特征图Y的宽度W和高度H可以分别彼此相同。在这种情况下,可以在对具有权重内核的集合W0、…、WCo-1的输入特征图X上的卷积操作中执行零填充。当执行训练损失计算操作时,可以计算小批量的总损失在本公开中,输入特征图也可以被称为输入张量,并且权重内核也可以被称为权重张量。
第二操作是局部梯度操作420,其也可以被称为后向传递。局部梯度操作是将损失传播到网络中的每个层的操作。在该操作中,执行具有转置权重内核的集合的卷积操作,并且输入每个层(例如,第I层)中的局部梯度/>该过程中的输出是层(例如,第I-1层)中的局部梯度/>
最终操作是权重梯度计算操作430,其也可以被称为权重更新。在权重梯度计算操作中,在每层中利用输入图对局部梯度执行卷积操作,并且可以使用权重梯度来更新权重。例如,对于包括第c个通道Ci和第k个通道Co的通道对(c,k),可以对局部梯度GY[k]和与通道对(c,k)相对应的输入特征图X[c]执行卷积操作,并且该过程中的输出可以是权重梯度ΔWck
可以看出,这种深度学习过程是通过计算损失并转移计算出的损失的过程来执行的,卷积操作是每个步骤中的主要操作。
同时,在上述操作中,在权重更新操作的处理中不累加和使用值,而在前向传递和后向传递处理中累加和使用值。
然而,在所有过程中计算累加值的情况下,计算中会发生延迟或者效率会降低,因此,在本公开中,针对深度神经网络计算的各个步骤以不同的方式处理计算值。这将在下面参考图5进行描述。
图5是用于描述根据实施例的二维(2D)操作模式和三维(3D)操作模式的示图。
3D操作模式510需要通过在通道方向上累加通过执行卷积操作(511*512)获得的部分输出特征图513来输出输出特征图514的操作。2D操作模式520不需要在通道方向上累加通过执行卷积操作(521*522)获得的输出特征图523的操作。每种模式下的操作如下表1所示。
“表1”
参考表1,在训练深度神经网络时执行权重梯度计算、逐深度(DW)卷积、扩张卷积或向上卷积的情况下,硬件加速器可以在2D操作模式下操作。另外,在训练深度神经网络时执行其中累加计算结果的(一般)卷积、逐点卷积或全连接层计算的情况下,硬件加速器可以在3D操作模式下操作。如上所述,在本公开中,在深度神经网络的每个计算步骤中确定是需要3D操作模式还是2D操作模式,并且根据确定的结果选择性地执行并行化结果的累加并且然后输出。下面将参考图6描述这种操作的详细配置。
同时,本公开旨在支持训练或推断深度神经网络的过程中的各种精度。以前,已经提出了具有各种精度的架构。然而,在现有方法中,多个计算核心(具体地,乘法累加(MAC)单元)的利用率根据精度的变化而变化。例如,位融合(BitFusion)是支持包括16位(符号和尾数的大小)、8位和4位精度的各种精度的架构,并且在以8位精度操作的情况下,与以16位精度操作的情况相比,利用率降低大约13.8%,并且在以4位精度操作的情况下,与以16位精度操作的情况相比,利用率进一步降低大约22%。
在这方面,本公开旨在支持各种精度,同时在每个精度下以高利用率操作多个计算核心。
下面将参考图6描述用于实现该目的的详细硬件配置。
图6是用于描述根据实施例的硬件加速器的配置的示图。
参考图6,硬件加速器200包括加速器核和多个功能块251至267。硬件加速器200可以被实现为诸如ASIC的硬件组件。
加速器核可以包括处理核210、第一处理设备230、第二处理设备220和核输出缓冲器240。第一处理设备230和第二处理设备220也可以被称为如图6所示的减少单元。
处理核210可以执行卷积操作或通用矩阵乘法(GEMM)操作。详细地,处理核210可以分层地配置有能够执行1D子字并行化的多个乘法器(或乘法单元)。处理核210可以包括在第一张量的符号和尾数与第二张量的符号和尾数之间执行1D子字并行化的多个乘法器。为了便于描述,假设第一张量是输入张量并且第二张量是权重张量来进行以下描述,但是本公开不限于此。
在实施例中,第一张量的共享指数的大小和第二张量的共享指数的大小可以是8位。第一张量的符号和尾数的大小或第二张量的符号和尾数的大小可以是4位、8位和16位之一。基于第一张量的符号和尾数的大小或第二张量的符号和尾数的大小,可以将第一张量和第二张量映射到处理核210。
在实施例中,可以基于深度神经网络的训练的前向传递步骤、后向传递步骤或权重更新步骤来确定第一张量的符号和尾数的大小或第二张量的符号和尾数的大小。
在实施例中,处理核210仅由整数乘法器和加法器组成,并且具有分层结构,例如,乘法器->处理元件(PE)(或处理引擎)->处理单元(PU)->子核->(处理)核。处理核210可以包括多个子核,每个子核可以包括多个PU,并且每个PU可以包括多个PE。每个PE可以包括多个乘法器。尽管图6示出了处理核210包括六个子核,每个子核包括四个PU,每个PU包括四个PE(或处理引擎),并且每个PE包括九个乘法器,但这是示例,并且本公开不限于此。为了便于描述,将描述图6中所示的处理核210的配置、功能和操作的示例。
在实施例中,多个乘法器中的第一组可执行包括在第一张量(例如,输入张量)中的第一值的一系列子字与包括在第二张量(例如,权重张量)中的第二值的一系列子字之中的第一子字之间的乘法操作。多个乘法器中的第二组可在第一值的一系列子字和第二值的一系列子字之中的第二子字之间执行乘法操作。
同时,硬件加速器200可以支持共享指数或不具有任何指数的各种形式的数据类型。也就是说,处理器可以支持定点类型的第一数据类型、仅具有整数的第二数据类型、具有符号和整数的第三数据类型、以及共享指数的实数类型(即,BFP)的第四数据类型。
在实施例中,处理核210可通过仅使用有效数字(即,符号和尾数)来执行计算,并且指数可由共享指数处理器205处理。例如,共享指数处理器可以处理第一张量(例如,输入张量)的共享指数和第二张量(例如,权重张量)的共享指数。将参考图22描述共享指数处理器205的详细配置和操作。
在计算过程中,可在映射到上述子核之后提供输入张量和权重张量的尾数。例如,在尾数的大小是8位而不是16位的情况下,映射到处理核210的输入通道的数量可以是尾数的大小是16位的情况下的输入通道的数量的两倍。例如,在4比特的情况下,可映射比16比特的情况多4倍的输入通道。在实施例中,随着权重内核的大小增加,输入通道的数量可成比例地减少。
例如,在深度神经网络的Conv3层的计算中,在第一张量(例如,输入张量)的符号和尾数的大小是16位的情况下,与Conv3层的一个输入通道相对应的第一张量可以被广播到构成一个子核的四个PU。
在第一张量的符号和尾数的大小是8位的情况下,与Conv3层的两个输入通道相对应的第一张量可以被广播到构成一个子核的四个PU。
在第一张量的符号和尾数的大小是4位的情况下,与Conv3层的四个输入通道相对应的第一张量可以被广播到构成一个子核的四个PU。将参考图17详细描述根据实施例的处理核210的操作。
在深度神经网络包括具有比Conv3层的权重内核大小更大的权重内核大小的卷积层的情况下,多个聚类的子核可以处理单个通道或多个通道。例如,在深度神经网络的Conv5层的情况下,三个子核可以处理单个通道或多个通道。在深度神经网络的Conv7层的情况下,六个子核可以处理单个通道或多个通道。根据数据精度处理的信道数与上述Conv3相同。
这样,由于要映射的通道的数量根据符号和尾数的大小以及权重内核的大小而变化,因此可以以各种组合来执行操作。下面将描述根据各种组合的详细操作。
尽管示出和描述了其中处理核包括六个子核并且每个子核包括四个PU的示例,但是在实施方式中,子核和每个子核的PU的数量可以被配置为具有根据所支持的尾数的大小和要同时处理的通道的数量的自适应值。下面将参考图7描述构成处理核的子核的详细配置。
第一处理设备230被配置为当在2D操作模式下操作时输出处理核210的输出图,而不在信道方向上累加它们。也就是说,第一处理设备230可以在2D操作模式下操作,其中输出多个乘法器的计算结果而不在信道方向上累加。第一处理设备230可以包括六个4路加法器树231、六个位截断器233、选择性6路加法器树235、算术转换器236和累加器237。然而,本公开不限于所示示例,并且例如,在处理核210包括i个子核并且每个子核包括j个PU的情况下,第一处理设备230可以被理解为包括i个j路加法器树、i个位截断器和选择性i路加法器树。
六个4路加法器树231中的每一个可以对一个子核内的四个PU的输出求和。六个4路加法器树231中的每一个对应于六个子核中的一个,并且可以对六个子核中的每一个中包括的四个PU的输出求和。
六个位截断器233中的每一个可以将对应的4路加法器树231的输出结果舍入以具有预设数量的位。然而,本公开不限于此,并且六个位截断器233中的每一个可将对应的4路加法器树231的输出结果向上或向下舍入。
在实施例中,选择性6路加法器树235可以选择性地对多个4路加法器树231的输出求和。详细地,选择性6路加法器树235可以接收位截断器233的输出,并选择性地累加或单独输出所述输出结果。
算术转换器236可以将BFP转换为FP32。算术转换器236可以包括数据类型转换器、前导零计数器、桶形移位器和归一化器中的至少一个。根据实施例,可以通过利用通过转换为FP32获得的值执行对精度和数据格式敏感的批量归一化来保持训练精度。算术转换器236可以基于由共享指数处理器205输出的指数操作结果和由选择性6路加法器树235输出的符号和尾数操作结果来输出32位浮点数据(即,FP32部分和数据)。
在实施例中,累加器237可以累加通过转换为FP32而获得的值。累加器237也可以被称为FP32加法器,如图6所示。累加值可以存储在寄存器(或缓冲器)中。累加器237可以将通过转换为FP32获得的值与来自寄存器(或缓冲器)的累加值相加。也就是说,累加器237可以累加部分和psum,其是通过转换为FP32而获得的值。
第二处理设备220被配置为当在3D操作模式下操作时在信道方向上累加并输出处理核210的输出图。也就是说,第二处理设备220可以在3D操作模式下操作,其中在信道方向上累加多个乘法器的计算结果,然后输出。第二处理设备220可以包括四个6路加法器树221、六个算术转换器223、六个累加器225和选择性4路加法器树227。然而,本公开不限于所示示例,并且例如,在处理核210包括i个子核并且每个子核包括j个PU的情况下,第二处理设备220可以被理解为包括j个i路加法器树、j个算术转换器、j个累加器和选择性j路加法器树。
多个6路加法器树221中的每一个对不同子核中彼此对应的PU的输出进行求和。例如,每个子核可以包括第一至第四PU。在这种情况下,第一6路加法器树可以对子核的第一处理单元的输出求和,第二6路加法器树可以对子核的第二PU的输出求和,第三6路加法器树可以对子核的第三PU的输出求和,并且第四6路加法器树可以对子核的第四PU的输出求和。详细地,因为子核具有不同的输入通道,所以当在3D操作模式下操作时,需要在通道方向上执行求和操作。为此,6路加法器树221可以接收来自多个子核内的对应PU的输出,并且然后执行求和操作。通过该过程,可以在信道方向上执行求和操作。
多个算术转换器223可以将BFP转换为FP32。多个算术转换器223可以包括数据类型转换器、前导零计数器、桶形移位器和归一化器中的至少一个。根据实施例,多个算术转换器223利用通过转换为FP32获得的值来执行对精度和数据格式敏感的批量归一化,因此,可以保持训练精度。多个算术转换器223可以基于由共享指数处理器205输出的指数操作结果以及由多个6路加法器树221输出的符号和尾数操作结果来输出32位浮点数据(即,FP32部分和数据)。
在实施例中,累加器225可以累加通过转换为FP32而获得的值。累加器225也可以被称作FP32加法器,如图6中所示。累加值可以存储在寄存器(或缓冲器)中。累加器225可以将通过转换为FP32获得的值与来自寄存器(或缓冲器)的累加值相加。也就是说,累加器225可以累加部分和psum,其是通过转换为FP32而获得的值。
选择性4路加法器树227根据精度模式选择性地对相应累加器225的输出进行求和。
核输出缓冲器240选择性地输出第一处理设备230或第二处理设备220的输出。详细地,核输出缓冲器240可以在权重更新步骤中输出第一处理设备230的输出值,并且在前向传递和后向传递步骤中输出第二处理设备220的输出值。
在实施例中,从第一处理设备230或第二处理设备220输出的数据的形式(字数)可以取决于操作模式、精度和权重内核的大小。然而,因为后续模块根据每个大小执行自适应操作是低效的,所以核输出缓冲器240可以将输入到其的输出数据转换为具有相同的大小,然后输出转换的结果。下面将参考图12描述核输出缓冲器240的详细配置和操作。
FSM块251可以从处理器150接收控制信号,并根据处理核的操作状态来优化所接收的控制信号。在一个实施例中,优化的控制信号可以通过控制信号分配器252分配给每个组件。下面将参考图10描述FSM块251和控制信号分配器252的详细操作。
输入缓冲器253可以用作接收器以接收输入特征图。输入缓冲器253可以将输入特征图发送到处理核210。权重缓冲器254可以用作接收权重内核的接收器。权重缓冲器254可以将权重内核发送到处理核210。输出缓冲器255可以接收从加速器核输出的数据。输出缓冲器255可以将从MAC运算器(operator)输出的数据发送到外部。
同时,深度学习主要由DNN层和非DNN层组成。过去的深度学习加速器被设计为仅加速DNN层的计算,这是因为DNN层中所需的计算量相当大。
近年来,深度学习网络的内部结构发生了变化,非DNN层中所需的计算量增加,因此,不仅对DNN层,对非DNN层也要求能够执行高速的计算。
为此,在本公开中,使用非DNN层加速器(或附加加速器、多个计算模块和多个功能块)。这种非DNN层加速器可以包括批量归一化单元261、ReLU池单元262、掩蔽单元263、FIFO264、权重更新单元265、FP2BFP转换器266和量化单元267。批量归一化单元261、ReLU池单元262、掩蔽单元263、FIFO 264、权重更新单元265、FP2BFP转换器266和量化单元267也可以分别被称为批量归一化电路、ReLU池电路、掩蔽电路、FIFO电路、权重更新电路、FP2BFP转换器电路和量化电路。
这样的非DNN层加速器可以执行针对非DNN层的计算。也就是说,深度学习的DNN层可以处理上述加速器核中的计算,并且其他非DNN层可以通过使用上述多个计算模块来执行计算。
同时,尽管参考图6描述了布置在加速器核外部的非DNN层加速器,但是在实施方式中也可以将非DNN层加速器布置在加速器核内部。同时,在实施方式中,可停止上述多个操作模块的操作,然后可以仅执行GEMM操作。
批量归一化单元261进行批量归一化。批量归一化单元261可以基于核输出缓冲器240的输出来执行批量归一化。详细地,批量归一化是用于寻找具有更快收敛的权重参数的处理方法,并且通过减少内部协变移位来使训练过程更稳定。在实施例中,为了更新批量归一化参数(例如,执行平均值或方差),通常需要从存储器读取每个输入张量三次,但是在本公开中,可使用范围批量归一化。因此,与现有技术方法相比,存储器访问的次数可减少一半。
通常,非线性激活函数和选择性池化层被布置在批量归一化单元261之后。然而,因为在批量归一化层和卷积层之间可能没有池化层,所以在本公开中使用灵活的ReLU池单元262。ReLU池单元262可以基于批量归一化单元261的输出来执行ReLU函数值和池化值。下面将参考图11描述ReLU池单元262的详细配置和操作。
掩蔽单元263可以在后向传递过程中使用,以最小化访问不必要的特征图(Fmap)的能量消耗。例如,ReLU层的后向传递的输出值具有值0或1。例如,当前向传递的输入值是正数时,输出值可以具有值“1”,并且当前向传递的输入值是负数时,输出值可以具有值“0”。在本公开中,在ReLU和池化层都存在的情况下,可以通过在后向传递中融合ReLU和池化层的输出而不是单独存储它们来更有效地存储数据。
FIFO 264可以存储并输出ReLU池单元的输出数据。下面将参考图13描述FIFO 264的详细配置和操作。
权重更新单元265可以更新深度神经网络的权重。详细地,权重更新单元265可以接收权重梯度和学习率的输入,并根据输入的权重梯度和学习率来更新深度神经网络中的每个权重元素。权重更新单元265可以连接到核输出缓冲器240和FIFO 264。下面将参考图14描述权重更新单元265的详细配置和操作。
FP2BFP转换器266转换输出值的数据类型并输出转换结果。具体地,加速器核中的MAC操作基本上以BFP方式执行。因此,FP2BFP转换器266可以将浮点型数据(即,FIFO 264的输出)转换为BFP30的类型。下面将参考图15描述FP2BFP转换器266的详细配置和操作。
量化单元267根据预定义精度量化输入值(即,FP2BFP转换器266的输出)并输出量化值。详细地,在本公开中,支持BFP24、BFP16和BFP12。BFP24、BFP16和BFP12分别具有16位、8位和4位的有效长度,并且因此输入值可以被舍入以适合每个有效长度。下面将参考图16描述量化单元267的详细配置和操作。
同时,在图6中示出并描述了处理核被包括在处理器中,因此,上述组件中的每一个可以被实现为更高的概念。也就是说,上述加速器核可以被实现为诸如电子设备的设备,并且处理核210可以被实现为处理器。
图7是用于描述图6中所示的子核的配置的示图,并且图8是用于描述图7中所示的处理单元的详细配置的示图。为了便于描述,假设输入张量X和权重张量W的“符号和尾数”的精度是16位,但是本公开不限于此。假设作为权重内核的权重张量W的大小是3×3,但是本公开不限于此。
参考图7和图8,子核710可以包括多个PU(例如,PU3、PU2、PU1和PU0)。如在所说明的示例中,PU的数量可以为四个,但本公开不限于此。在实施例中,每个PU可以包括多个PE。
例如,每个PU可包括四个PE 810、820、830和840。图8示出了假设PU 800在图7中被称为PU0的示例。PE 810、820、830和840的输出可由4路加法器树850求和。4路加法器树850可以输出具有位宽度PU0的和值。
在实施例中,一个PE可以包括九个乘法器、一个9路加法器树和选择性移位逻辑。9路加法器树可以对九个乘法器的输出求和。选择性移位逻辑(或可以被称为选择性移位逻辑电路)可以在将值的总和传送到4路加法器树850之前将对应于值的总和的位移位预定数量个位。在实施例中,构成PE的乘法器可以是Baugh-Wooley乘法器。
在实施例中,在每个PE中将九个乘法器聚类成一个集群。这样的PE可以对输入张量X执行子字并行化。
详细地,当输入16位输入张量X时,输入张量X以4位子字为单位映射到每个PE。例如,16位输入张量X元素X0:8中的每一个可以包括4位子字x0、x1、x2和x3。4位子字x0、x1、x2和x3中的每一个可以被映射到PU PU0、PU1、PU2和PU3中的每一个中包括的四个PE中的一个。
在实施例中,权重张量W也可以并行地应用于同一子核内的四个PU。例如,在16位权重张量W的情况下,16位权重张量W的元素W0:8中的每一个的仅第一4位子字w3被映射到第四PU PU3,并且其他子字被映射到其他PU。也就是说,其他子字w2、w1和w0可以分别被传送到第三PU PU2、第二PU PU1和第一PU PU0。第一至第四PU PU0、PU1、PU2和PU3的输出可以由选择性加法器树720选择性地求和。
通过分层地使用如上所述的子字并行化,当对于X和W中的每一个发生精度的2倍降低时,累加部分和可以加倍。
如上所述的操作是针对尾数为4位的情况,并且在尾数为8位和16位或者权重的精度彼此不同的情况下,上述PE和PU中的一些可以彼此协同操作。下面将参考图17至图20描述该操作。
参考图6至图8,子核可以对权重张量W执行1D子字并行化,并且PU可以对输入张量X执行1D子字并行化。
图9是用于描述图8所示的乘法器的详细配置的示图。为了便于描述,假设作为权重内核的权重张量W的大小是3×3或便于描述,但是本公开不限于此。
参考图9,根据本公开的PE包括至少一个乘法器。这种乘法器支持有符号和无符号操作。一个全局符号位可以用于指示输入或权重张量是有符号的还是无符号的。作为本公开的乘法器,使用5位乘法器。详细地,在本公开中,支持各种尾数大小,并且所支持的尾数的最小单位具有4位大小,因此,使用了能够同时处理全局符号位和一个尾数的乘法器。
参考图9和图8,PE 810中包括的九个乘法器可以通过使用输入张量的全局符号位sign_x和权重张量的全局符号位sign_w来执行有符号操作或无符号操作。图8示出输入张量和权重张量的精度是16位,但是在本公开中,对于输入张量和权重张量中的每一个支持多个精度(例如,4位、8位和16位)。
PE 810中包括的九个乘法器可以通过使用具有3×3输入张量的第一系列位(例如,[15:12])的4位子字x03、x13、…、x83和具有3×3权重张量的第四系列位(例如,[3:0])的4位子字w00、w10、…、w80作为操作数来执行乘法。例如,乘法器可以通过使用x03和w00作为操作数来执行乘法,通过使用x13和w10作为操作数来执行乘法,并且类似地,通过使用x83和w80作为操作数来执行乘法。
PE 820中包括的九个乘法器可以通过使用具有3×3输入张量的第二系列位(例如,[11:8])的4位子字x02、x12、…、x82和具有3×3权重张量的第四系列位(例如,[3:0])的4位子字w00、w10、…、w80作为操作数来执行乘法。类似地,包括在PE 830中的九个乘法器可以通过使用具有3×3输入张量的第三系列位(例如,[7:4])的4位子字x01、x11、…、x81和具有3×3权重张量的第四系列位(例如,[3:0])的4位子字w00、w10、…、w80作为操作数来执行乘法。类似地,包括在PE 840中的九个乘法器可以通过使用具有3×3输入张量的第四系列位(例如,[3:0])的4位子字x00、x10、…、x80和具有3×3权重张量的第四系列位(例如,[3:0])的4位子字w00、w10、…、w80作为操作数来执行乘法。
返回参考图9,乘法器900可以包括第一复用器(MUX)910、5b×5b乘法器核920、第一寄存器930、第二寄存器940和第二MUX 950。乘法器900可以支持能够重用数据的固定数据流。
第一MUX 910可以通过第一输入端接收先前权重张量,并且通过第二输入端接收当前权重张量。第一MUX 910可以响应于保持信号keep而输出当前权重张量或先前权重张量。例如,第一MUX 910可以响应于逻辑高保持信号keep而输出先前权重张量。相反,第一MUX 910可以响应于逻辑低保持信号keep而输出当前权重张量。然而,本公开不限于所示示例,并且保持信号keep的逻辑值与第一MUX 910的输出之间的关系可以反转。第一MUX910可以包括响应于多个信号而导通/关断的多个开关或逻辑元件。
乘法器核920可以通过使用5位输入张量和5位(当前或先前)权重张量作为操作数来执行乘法操作。乘法器核920可以输出乘法结果值。乘法器核920的输出值可以存储在第一寄存器930中。
由第一MUX 910输出的权重张量可以存储在第二寄存器940中。存储在第二寄存器940中的权重张量可以被传送到第一MUX 910的第一输入端。
第二MUX 950可以通过第一输入端接收存储在第二寄存器940中的权重张量,并且通过第二输入端接收从第一MUX 910输出的权重张量。第二MUX 950可以响应于旁路信号bypass而输出存储在第二寄存器940中的权重张量或由第一MUX 910输出的权重张量。例如,第二MUX 950可以响应于逻辑高旁路信号bypass而输出由第一MUX 910输出的权重张量。相反,第二MUX 950可以响应于逻辑低旁路信号bypass而输出存储在第二寄存器940中的权重张量。然而,本公开不限于所示示例,并且旁路信号bypass的逻辑值与第二MUX 950的输出之间的关系可以反转。第二MUX 950可以包括响应于多个信号而导通/关断的多个开关或逻辑元件。
由第二MUX 950输出的权重张量可以被传送到包括乘法器900的PE(例如,图8的810)旁边的PE(例如,图8的820)。
根据实施例,可以通过由保持信号keep形成的反馈回路来保持存储在第二寄存器940中的权重张量。根据实施例,在8位精度和16位精度下,用于加载数据的周期数可以分别减少一个周期和两个周期。随着用于加载数据的周期减少,可以减少从存储器提取数据的次数。
图10是用于描述根据实施例的电子设备100的操作的示图。
参考图2和图6以及图10,电子设备100包括处理器150(例如,主机CPU)、FSM块251、控制信号分配器252和硬件加速器200。
处理器150可以通过分析用于训练的网络、数据集等来识别网络类型、层的数量、数据维度、精度、ReLU和池化选项。在实施例中,处理器150可以生成用于训练的控制信号。
FSM块251检查硬件加速器200的操作状态。在实施例中,FSM块251接收控制信号并基于检查的硬件加速器200的操作状态来优化控制信号。
FSM块251可以通过使用控制信号分配器252向硬件加速器200中的每个组件提供优化的控制信号。
图11是用于描述图6的ReLU池单元262的详细配置的示图。图6的ReLU池单元262的配置、功能和操作可对应于ReLU池单元1100的配置、功能和操作。详细地,图11是示出可重新配置的ReLU池单元1100的配置的示图。
参考图11,ReLU池单元1100可以被重新配置为针对激活函数和池化层的各种情况输出适当结果。
例如,ReLU池单元1100中的激活函数可以提供ReLU和ReLU-α。在实施例中,ReLU池单元1100可以通过控制池化层的“out_sel”信号来允许无池化、最大池化、局部平均池化和全局平均池化。
在实施例中,ReLU池单元1100可以包括第一MUX 1110、ReLU逻辑1120、ReLU-α逻辑1130、第二MUX 1140、第三MUX 1150、最大池化逻辑1160、平均池化逻辑1170和第四MUX1180。
参考图6以及图11,第一MUX 1110可以通过输入端子接收批量归一化单元261的输出。响应于激活函数选择信号act_sel,第一MUX 1110可以将批量归一化单元261的输出输出到ReLU逻辑1120或ReLU-α逻辑1130。例如,第一MUX 1110可以响应于逻辑高激活函数选择信号act_sel而将批量归一化单元261的输出输出到ReLU-α逻辑1130。相反,第一MUX1110可以响应于逻辑低激活函数选择信号act_sel而将批量归一化单元261的输出输出到ReLU逻辑1120。然而,本发明不限于所说明的示例,且激活函数选择信号act_sel的逻辑值与第一MUX 1110的输出之间的关系可以反转。第一MUX1110可以包括响应于多个信号而接通/关断的多个开关或逻辑元件。
ReLU逻辑1120可基于批量归一化单元261的输出来输出ReLU函数值。ReLU逻辑1120可包括用于实现ReLU函数的多个逻辑元件,该ReLU函数在输入值小于0时输出0,并且在输入值大于或等于0时按原样输出输入值。
ReLU-α逻辑1130可以基于批量归一化单元261的输出来输出ReLU-α函数值。ReLU-α逻辑1130可以包括用于实现ReLU-α函数的多个逻辑元件,该ReLU-α函数在输入值小于0时输出0,在输入值大于或等于0且小于α时按原样输出输入值,并且在输入值大于或等于α时输出α。α可以是预定义值,并且可以是训练参数。根据实施例,通过使用ReLU-α函数,可以防止输出值过大,并且提高量化神经网络的精度。
尽管图11示出了ReLU池单元1100仅包括ReLU逻辑1120和ReLU-α逻辑1130,但是ReLU池单元1100还可以包括用于实现任何激活函数的逻辑(例如,sigmoid、tanh、泄漏ReLU、参数ReLU(PReLU)、指数线性单元(ELU)、缩放指数线性单元(SELU)等),并且可以省略ReLU逻辑1120和ReLU-α逻辑1130中的至少一个。
第二MUX 1140可以通过输入端子接收ReLU逻辑1120的输出。响应于池化选择信号pool_sel,第二MUX 1140可以将ReLU逻辑1120的输出输出到最大池化逻辑1160或平均池化逻辑1170。例如,响应于逻辑高池化选择信号pool_sel,第二MUX 1140可以将ReLU逻辑1120的输出输出到平均池化逻辑1170。相反,第二MUX 1140可以响应于逻辑低池化选择信号pool_sel而将ReLU逻辑1120的输出输出到最大池化逻辑1160。然而,本公开不限于所示示例,并且池化选择信号pool_sel的逻辑值与第二MUX 1140的输出之间的关系可以反转。第二MUX 1140可以包括响应于多个信号而接通/关断的多个开关或逻辑元件。
第三MUX 1150可以通过输入端子接收ReLU-α逻辑1130的输出。响应于池化选择信号pool_sel,第三MUX 1150可以将ReLU-α逻辑1130的输出输出到最大池化逻辑1160或平均池化逻辑1170。例如,第三MUX 1150可以响应于逻辑高池化选择信号pool_sel而将ReLU-α逻辑1130的输出输出到平均池化逻辑1170。相反,第三MUX 1150可以响应于逻辑低池化选择信号pool_sel而将ReLU-α逻辑1130的输出输出到最大池化逻辑1160。然而,本公开不限于所示示例,并且池化选择信号pool_sel的逻辑值与第三MUX 1150的输出之间的关系可以反转。第三MUX 1150可以包括响应于多个信号而接通/关断的多个开关或逻辑元件。
最大池化逻辑1160可以基于ReLU逻辑1120的输出或ReLU-α逻辑1130的输出来输出最大池化值。最大池化逻辑1160可以包括用于实现最大池化层的多个逻辑元件,该最大池化层输出一系列输入值(例如,M×N映射)中的预定义区域内的最大值。
平均池化逻辑1170可以基于ReLU逻辑1120的输出或ReLU-α逻辑1130的输出来输出平均池化值。平均池化逻辑1170可以包括用于实现平均池化层的多个逻辑元件,该平均池化层输出一系列输入值(例如,M×N映射)中的预定义区域内的平均值。
尽管图11示出了ReLU池单元1100仅包括最大池化逻辑1160和平均池化逻辑1170,但是ReLU池单元1100还可以包括用于实现任何池化层或子采样层的逻辑,并且可以省略最大池化逻辑1160和平均池化逻辑1170中的至少一个。
第四MUX 1180可以通过第一输入端子接收ReLU逻辑1120的输出,通过第二输入端子接收最大池化逻辑1160的输出,通过第三输入端子接收平均池化逻辑1170的输出,并且通过第四输入端子接收ReLU-α逻辑1130的输出。响应于输出选择信号out_sel,第四MUX1180可以输出ReLU逻辑1120的输出、最大池化逻辑1160的输出、平均池化逻辑1170的输出或ReLU-α逻辑1130的输出。也就是说,ReLU池单元1100可以基于批量归一化单元261的输出来输出ReLU逻辑1120的输出、最大池化逻辑1160的输出、平均池化逻辑1170的输出或ReLU-α逻辑1130的输出。
图12是用于描述图6的核输出缓冲器240的详细配置的示图。图6的核输出缓冲器240的配置、功能和操作可以对应于核输出缓冲器1200的配置、功能和操作。
参考图12,核输出缓冲器1200可包括12个触发器(FF)1210。当所有FF1210都填充有来自第一处理设备230(参见图6)或第二处理设备220(参见图6)的数据时,核输出缓冲器1200可将数据输出到输出缓冲器255(参见图6)。
核输出缓冲器1200可以响应于扩展时钟信号“Stretched CLK”而输出数据。时钟分频器242可以将时钟信号CLK除以n。这里,n是大于或等于2的自然数。时钟分频器242可以以预设分频比对时钟信号CLK进行分频。时钟分频器242可以包括第一至第四时钟分频器242_1、242_2、242_3和242_4。例如,第一时钟分频器242_1可以将时钟信号CLK除以2。例如,第二时钟分频器242_2可以将时钟信号CLK除以3。例如,第三时钟分频器242_3可以将时钟信号CLK除以6。例如,第四时钟分频器242_4可以将时钟信号CLK除以12。然而,本公开不限于图12中所示的内容,并且时钟分频器242可以以各种分频比对时钟信号CLK进行分频。MUX241可以接收通过分频获得的时钟信号,并输出扩展时钟信号“Stretched CLK”。MUX 241可以响应于控制信号而输出扩展时钟信号“Stretched CLK”。
根据实施例,因为要填充到FF中的输入的数量根据情况而变化,所以FF完全被数据填充的时间点可以彼此不同。因此,因为需要在正确的时间输出数据,所以时钟分频器242可用于在正确的时间输出存储在FF中的数据。
图13是用于描述图6的FIFO 264的详细配置的示图。图6的FIFO 264的配置、功能和操作可以对应于FIFO 1300的配置、功能和操作。
参考图13,FIFO 1300可以包括MUX 1310、触发器电路1320和级联器1330。FIFO1300可以输出18的倍数的数据位,用于以18位的倍数操作的后续逻辑(例如,图6的FP2BFP转换器266)的适当操作。
MUX 1310可以通过输入端子接收64位或144位输入数据。响应于控制信号,MUX1310可以通过经由触发器电路1320将数据传送到转换器1330的路径(即,第一路径)或将数据直接传送到转换器1330的路径(即,第二路径)来输出输入数据。在实施例中,控制信号可以由模式生成器(未示出)生成。因为FIFO 1300输出数据的时间点根据模式(例如,2D或3D模式)而变化,所以通过使用模式生成器来控制时间点。
在实施例中,FIFO 1300可以将数据获取到触发器电路1320,然后通过另一路径获取最后的数据。例如,在池大小为2的情况下,以8个周期向触发器电路1320传送数据。此后,最后的数据可以在下一个周期中通过另一个路径直接传送到级联器1330。级联器1330可以级联通过第一路径和第二路径传送的数据。因为FIFO 1300输出数据的时间点根据模式(例如,2D或3D模式)而变化,所以通过使用模式生成器(未示出)来控制时间点。
图14是用于描述图6的权重更新单元265的详细配置的示图。图6的权重更新单元265的配置、功能和操作可以对应于权重更新单元1400的配置、功能和操作。
参考图14,权重更新单元1400可以包括逐元素乘法单元1410和逐元素减法单元1420。
逐元素乘法单元1410可以包括六个乘法器。例如,六个乘法器可以是FP32乘法器。详细地,逐元素乘法单元1410可以接收六个权重梯度和学习速率α的输入,并且计算权重的更新量。
逐元素减法单元1420可以包括六个加法器/减法器。详细地,逐元素减法单元1420可以接收逐元素乘法单元1410的输出和权重Wl的输入,并执行权重更新操作。例如,逐元素减法单元1420可以通过从权重Wl中减去逐元素乘法单元1410的输出来输出更新的权重/>
图15是用于描述图6的FP2BFP转换器266的详细构造的示图。图6的FP2BFP转换器266的配置、功能和操作可以对应于FP2BFP转换器1500的配置、功能和操作。
参考图15,FP2BFP转换器1500可以包括提取器1510、比较器1520、减法器1530和归一化器1540。
提取器1510寻找输入值中的最大值。
比较器1520可以将由提取器1510提取的最大值彼此进行比较,以寻找块单元中的最大指数(即,块张量的指数)。块单元的大小可以根据BFP格式(例如,FB12、FB16或FB24)和/或层的类型(例如,CONV1/FC、CONV3、CONV5或CONV7)而变化。
减法器1530可以包括多个减法器,并且多个减法器中的每一个可以分别对应于输入值(例如,18个输入值)。减法器1530可以从最大指数中减去每个输入值的指数。也就是说,减法器1530可以接收由比较器1520提取的最大指数和块张量中的值的指数,然后计算BFP格式的指数。
归一化器1540可以基于由减法器1530计算的指数来执行归一化。这里,归一化是指将尾数转换为“1.xxx...”的格式。详细地,为了在转换为BFP格式时计算尾数,归一化器1540可以通过使用桶形移位器执行移位有效数字的操作来响应于先前计算的指数调整有效值(即,尾数)。
图16是用于描述图6的量化单元267的详细配置的示图。
参考图16,量化单元267可以根据所使用的尾数大小来量化输入值。例如,在输入25位值的情况下,根据本公开的尾数是4位、8位或16位,因此,量化单元267可以根据当前要使用的精度(即,尾数)的大小来执行舍入。例如,要使用的尾数的最大大小是16位,并且因此,量化单元267可以通过执行舍入操作以仅留下15位(即,在第16位处执行舍入,并且在舍入数位下方截断以仅留下15位),执行附加舍入操作以在8位的情况下仅留下8位,并且执行舍入操作以在4位的情况下另外仅留下4位来执行量化以适应每个精度(1610)。在实施例中,量化单元267可以输出三个输出中的一个(1620)。
图17是用于示例性地描述如何将输入张量映射到Conv3层中的处理核210(参见图6)的示图。
参考图17,在本公开中,三个精度(即,输入张量、权重张量和权重梯度)中的每一个使用8位共享指数,并且三个精度的符号和尾数的大小分别是4位、8位、16位。在下文中,具有8位共享指数和4位的符号和尾数的大小的精度被称为FB12,并且其余两个分别被称为FB16和FB24。
如上所述,在存在三种类型的尾数大小和三种类型的张量(例如,8位输入、4位权重和16位梯度)的情况下,可以存在27种组合。将描述根据本公开的处理核210(参见图6)在这样的各种组合中的操作。
首先,将首先描述用于Conv3层的FB24(即,符号和尾数的大小为16位)的情况,诸如输入激活(前向传递)或局部梯度(后向传递)。
参考图17的1710,在16位模式中,构成输入特征图(即,输入张量)X的每个元素包括四个4位子字,并且每个4位子字被映射到对应PE PE0、PE1、PE2和PE3中的乘法器(例如,4b×4b乘法器)。例如,4位子字x[15:12]可以被映射到第四PE PE3。例如,4位子字x[11:8]可以被映射到第三PE PE2。例如,4位子字x[7:4]可以被映射到第二PE PE1。例如,4位子字x[3:0]可以被映射到第一PE PE0。在单个周期中,输入特征图X的单个输入通道可以被广播到所有PU PU0、PU1、PU2和PU3。
参考图17的1720(在符号和尾数的大小为8位的情况下),在8位模式中,构成输入特征图X的每个元素包括两个4位子字。在这种情况下,输入特征图X的两个输入通道可以被广播到PU PU0、PU1、PU2和PU3。详细地说,第一输入通道的两个4位子字x(0)[7:4]和x(0)[3:0]以及第二输入通道的两个4位子字x(1)[7:4]和x(1)[3:0]分别被映射到相应PE PE0、PE1、PE2和PE3中的乘法器(例如4b×4b乘法器)。举例来说,4位子字x(0)[7:4]可以映射到第四PE PE3。举例来说,4位子字x(0)[3:0]可映射到第三PE PE2。例如,4位子字x(1)[7:4]可被映射到第二PE PE1。例如,4位子字x(1)[3:0]可以被映射到第一PE PE0。也就是说,构成一个子核的四个PU PU0、PU1、PU2和PU3中的每一个可并行处理与Conv3层的两个输入通道相对应的数据。
参考图17的1730(在符号和尾数的大小是4位的情况下),在4位模式中,构成输入特征图X的每个元素包括一个4位子字。在这种情况下,输入特征图X的四个输入通道可以被广播到PU PU0、PU1、PU2和PU3。详细地说,第一输入信道的4位子字x(0)[3:0]、第二输入信道的4位子字x(1)[3:0]、第三输入信道的4位子字x(2)[3:0]和第四输入信道的4位子字x(3)[3:0]分别被映射到相应PE PE0、PE1、PE2和PE3中的乘法器(例如4b×4b乘法器)。举例来说,4位子字x(0)[3:0]可以映射到第四PE PE3。例如,4位子字x(1)[3:0]可以被映射到第三PEPE2。例如,4位子字x(2)[3:0]可以被映射到第二PE PE1。例如,4位子字x(3)[3:0]可以被映射到第一PE PE0。也就是说,构成一个子核的四个PU PU0、PU1、PU2和PU3中的每一个可以并行处理与Conv3层的四个输入通道相对应的数据。
图18是用于示例性地描述如何将权重张量映射到Conv3层中的处理核210(参见图6)的示图。
参考图18的1810,在16位模式(即,第二张量(例如,权重张量)的符号和尾数的大小是16位)中,与Conv3层的一个输出通道Cout相对应的权重张量可以被分布到构成一个子核的四个PU。
详细地,构成权重张量W的元素W0、W1、…、W8中的每一个包括四个4位子字,并且4位子字可以分别映射到对应的PU PU0、PU1、PU2和PU3。例如,权重张量W的元素W0、W1、…、W8中的每一个的第一4位子字w[15:12]可以被映射到第四PU PU3。例如,权重张量W的元素W0、W1、...、W8中的每一个的第二4位子字W[11:8]可以被映射到第三PU PU2。例如,权重张量W的元素W0、W1、...、W8中的每一个的第三4位子字W[7:4]可以被映射到第二PU PU1...。例如,权重张量W的元素W0、W1、...、W8中的每一个的第四4位子字W[3:0]可以被映射到第一PUPU0...。也就是说,由16位元素组成的单个通道的权重张量W的总位数是144,并且36位可被分配给PU PU3、PU2、PU1和PU0中的每一个。
参考图18的1820,在8位模式(即,第二张量(例如,权重张量)的符号和尾数的大小是8位)中,与Conv3层的两个输出通道Cout相对应的第二张量可以被分布到构成一个子核的四个PU。
详细地,可以将四个PU PU3、PU2、PU1和PU0划分为两个集群并使用它们。例如,第一集群可以包括第一PU PU0和第二PU PU1,并且第二集群可以包括第三PU PU2和第四PUPU3。构成权重张量W的元素W0、W1、...、W8中的每一个包括两个4位子字,并且每个4位子字可以被映射到对应的集群。权重张量W的两个输出通道Cout可以被映射(或分布)到第一集群或第二集群。例如,第一输出通道的两个4位子字w(0)[7:4]和w(0)[3:0]可以被映射到第二集群。例如,第二输出通道的两个4位子字w(1)[7:4]和w(1)[3:0]可以被映射到第一集群。因此,包括在第一集群中的第一PU PU0和第二PU PU1中的每一个可以提供第二输出通道的部分和,并且包括在第二集群中的第三PU PU2和第四PU PU3中的每一个可以提供第一输出通道的部分和。也就是说,具有由8位元素组成的两个输出通道的权重张量W的总位数是144,并且36位可以被分配给PU PU3、PU2、PU1和PU0中的每一个。
参考图18的1830,在4位模式下(即,第二张量(例如,权重张量)的符号和尾数的大小是4位),与Conv3层的四个输出通道Cout相对应的第二张量可以被分布到构成一个子核的四个PU。
详细地,四个PU PU3、PU2、PU1和PU0中的每一个可以对应于一个输出通道。构成权重张量W的元素W0、W1、...、W8中的每一个包括单个4位子字,并且单个4位子字可以对应于四个输出通道Cout中的一个。举例来说,第一输出通道的4位子字w(0)[3:0]可以被映射到第四PU PU3。举例来说,第二输出信道的4位子字w(1)[3:0]可以被映射到第三PU PU2。举例来说,第三输出通道的4位子字w(2)[3:0]可以被映射到第二PU PU1。举例来说,第四输出信道的4位子字w(3)[3:0]可以被映射到第一PU PU0。也就是说,具有由4位元素组成的四个输出通道的权重张量W的总位数是144,并且36位可以被分配给PU PU3、PU2、PU1和PU0中的每一个。
图19是根据实施例的用于描述根据深度神经网络的层类型的子核的操作的示图。
根据本公开的硬件加速器200(参见图6)以层结构设计,并且可以根据层类型进行不同的管理。也就是说,可以通过根据深度神经网络的层类型对上述子核或PE进行聚类来操作。在下文中,假设输入张量和权重张量的精度为FB16(即,符号和尾数的大小为8位)。
参考图19的1910,在Conv1或全连接层中,仅在输入通道Cin的维度上累加部分和。因此,输入元素(即,输入张量的元素之一)和对应的权重可以被映射到子核、PE和乘法器。例如,可以将多个输入通道(例如,18个输入通道)映射到每个子核。例如,前18个输入信道0至17可以被映射到第一子核,并且接下来的18个输入信道17至35可以被映射到第二子核。
参考图19的1920,Conv3层与图19的1910中所示的Conv1或全连接层之间的差异在于将操作数映射到乘数的方法。在Conv1或全连接层中,张量(即,操作数)被映射到输入通道Cin的维度中的乘数,而在Convk层(例如,Conv3层)中,张量(即,操作数)可以被映射到特征图的宽度和高度(W/H)维度中的乘数。这里,k可以是大于1的自然数。
在使用较大权重内核(例如,Conv5层、Conv7层等)的情况下,可以聚类多个子核。参考图19的1930,例如,在Conv5层中,可以聚类三个子核。例如,在Conv7层中,能够聚类六个子核。根据实施例,在Conv5层中,均包括九个乘法器的三个PE被激活以执行25(5×5)个乘法操作,并且因此,可以实现93%(即5×5/9×3)的核利用率。根据实施例,在Conv7层中,均包括九个乘法器的六个PE被激活以执行49(7×7)个乘法操作,并且因此,可以实现91%(即,7×7/6×9)的核利用率。
在上文中,已经描述了通过使用第一处理设备执行累加的用于3D操作的映射方法。然而,在2D操作中不发生累加,并且因为根据本公开的硬件加速器具有用于2D操作的单独处理设备,所以可以最大化核利用率。这将在下面参考图20进行描述。
图20是用于描述根据实施例的2D操作模式下的映射方法的示例的示图。3D操作是指通过执行卷积并在通道方向上累加作为卷积结果的部分输出特征图来将输出特征图输出的操作。2D操作是指在不累加具有通道方向的输出特征图的情况下执行卷积的操作。
DW卷积层是2D操作(其可以被称为2D计算或2D处理)的良好示例。将参考图20描述将DW Conv3层映射到子核的方法。
在训练过程中的权重更新步骤中,以2D方式执行计算,并且因为计算对精度的降低敏感,所以优选地对于每个张量将精度保持为8位或16位。
参考图6以及图20,用于子核Subcore0、...、Subcore5中的每一个的PU PU0、PU1、PU2和PU3的输出可以由第一处理设备230的4路加法器树231累加。例如,在DW Conv3中,来自子核Subcore0、...、Subcore5中的每一个的输出可以对应于输出特征图的一个输出通道Cout
在使用DW Conv5或DW Conv7的情况下,可以聚类并且然后使用多个子核。例如,在DW Conv5中,三个子核可以被聚类并且然后被使用,并且在DW Conv7中,六个子核可以被聚类并且然后被使用。根据权重内核的大小对子核进行聚类的方法可以类似于参考图19的1930描述的方法。
图21是用于描述根据实施例的电子设备的操作的示图。
参考图2以及图21,电子设备100可以获得深度神经网络的参数。例如,电子设备100可以从用户接收要训练的目标网络(即,深度神经网络)的参数的输入。例如,深度神经网络的参数可以是与目标网络相对应的至少一个参数,诸如块大小、精度或时期数量。
电子设备100可以基于参数为每个张量(例如,输入张量或权重张量)设置位精度和块大小。根据实施例,电子设备100可以基于参数来控制权重梯度的设置值。
在设置之后,电子设备100可以训练目标网络(即,深度神经网络)并根据训练输出训练结果(例如,精度)。例如,可以根据硬件加速器的条件(例如,块大小、精度和映射方法)来检查训练性能是否良好。
图22是用于描述图6的共享指数处理器的详细配置的示图。
在位融合(BitFusion)中提出的乘法器单元使用能够以2b为单位执行乘法的乘法器,并且对于各种精度(2b、4b和8b)表现出乘法器的高利用率。
然而,乘法器单元仅支持有符号和无符号整数数据类型。因为需要以高精度执行深度学习训练,所以乘法器单元不能用于深度学习训练。
根据实施例的硬件加速器旨在支持深度学习推断以及具有高效率的训练,并且因此支持包括高精度的宽范围的精度操作。
同时,硬件加速器分别处理有效数字(符号和尾数)和指数,以便有效地处理MAC操作。例如,加速器核可以包括处理核2210和共享指数处理器2220。根据实施例,在MAC操作中,有效数字可以由处理核2210处理,并且指数可以由共享指数处理器2220处理。
图22的处理核2210可以对应于图6的子核Subcore0、Subcore1、...、Subcore5之一。处理核2210可以包括支持多个精度(例如,4b、8b和16b)的144个乘法器。然而,乘法器的数量仅是示例,并且可以是适合于实施方式中的系统的数量。
共享指数处理器2220是用于指数操作的模块。共享指数处理器2220可以包括执行指数操作的加法器单元。例如,共享指数处理器2220可以包括第一无符号加法器2221和第二无符号加法器2222。第一无符号加法器2221可以对两个输入指数求和。第二无符号加法器2222可以输出通过从(或向)第一无符号加法器2221的输出减去(或加上)偏置而获得的值。
在处理BFP数据类型(例如,FB12、FB16、FB24等)或定点类型之间的操作的情况下,可以通过打开加法器单元来执行指数的处理,并且在处理整数类型数据的情况下,可以通过关闭加法器单元来执行诸如INT4、INT8或INT16的数据类型的处理。
同时,因为本公开支持BFP数据类型,所以每144个乘法器仅需要一个指数处理模块。
图23是示例性地示出根据实施例的电子设备2300的框图。
参考图23,电子设备2300可以包括硬件加速器2310、处理器2320、存储器2330和输入/输出接口2340。然而,电子设备2300的组件不限于上述示例,并且电子设备2300可以包括比上述组件更多或更少的组件。在实施例中,硬件加速器2310、处理器2320、存储器2330和输入/输出接口2340中的至少一些可以被实现为单个芯片,并且处理器2320可以包括一个或多个处理器。
硬件加速器2310的配置、功能和操作可以对应于参考图6描述的硬件加速器200的配置、功能和操作。因此,将省略上面参考图6提供的描述。
硬件加速器2310可通过使用多个乘法器在第一张量(例如,输入张量)的符号和尾数与第二张量(例如,权重张量)的符号和尾数之间执行1D子字并行化。
硬件加速器2310可以通过使用共享指数处理器在第一张量的共享指数与第二张量的共享指数之间执行处理。
硬件加速器2310可在处理器2320的控制下执行深度神经网络的训练或推断。硬件加速器2310可读取存储在存储器2330中的数据(例如,第一张量和第二张量)以执行计算。硬件加速器2310的计算结果可存储在存储器2330中。
在实施例中,硬件加速器2310可以在2D操作模式下操作,其中输出多个乘法器的计算结果(不在通道方向上累加),或者硬件加速器2310可以在3D操作模式下操作,其中在通道方向上累加多个乘法器的计算结果并输出累加计算结果的结果。
处理器2320是被配置为控制一系列处理使得电子设备2300根据上面参考图1至图22描述的实施例进行操作的组件,并且可以包括一个或多个处理器。在这种情况下,一个或多个处理器可以是通用处理器,诸如CPU、应用处理器(AP)或数字信号处理器(DSP)。
处理器2320可以将数据写入存储器2330中或读取存储在存储器2330中的数据,并且具体地,可以执行存储在存储器2330中的程序以根据预定义的操作规则或人工智能模型来处理数据。在实施例中,处理器2320可以基于深度神经网络信息来控制硬件加速器,该深度神经网络信息包括深度神经网络中的层的数量、层的类型、张量的形状、张量的维度、操作模式、位精度、批量归一化的类型、池化层的类型和ReLU功能的类型中的至少一个。
在实施例中,处理器2320可以基于用户输入获得深度神经网络的位精度和块大小中的至少一个。处理器2320可以基于所获得的位精度和块大小中的至少一个来设置第一张量和第二张量的位精度和块大小中的至少一个。处理器2320可以基于该设置来控制硬件加速器2310以训练深度神经网络。
硬件加速器2310和处理器2320可以执行上面参考实施例描述的操作,并且除非另有说明,否则在实施例中由电子设备2300执行的上述操作可以被认为是由硬件加速器2310或处理器2320执行。
存储器2330是用于存储各种程序或数据的组件,并且可以包括存储介质,诸如ROM、RAM、硬盘、压缩盘ROM(CD-ROM)或数字通用盘(DVD)或存储介质的组合。存储器2330可以不是单独提供的,而是可以包括在处理器2320或硬件加速器2310中。存储器2330可以包括易失性存储器、非易失性存储器或易失性存储器和非易失性存储器的组合。用于硬件加速器2310或处理器2320执行操作的程序可以存储在存储器2330中。存储器2330可以根据硬件加速器2310或处理器2320的请求将存储在其中的数据提供给硬件加速器2310或处理器2320。在实施例中,存储器2330可以存储要由处理器2320执行的至少一个指令。存储器2330可以存储深度神经网络。存储器2330可以存储用于训练深度神经网络或使深度神经网络执行推断的参数或超参数。
输入/输出接口2340可以包括用于从用户接收控制命令或信息的输入接口(例如,触摸屏、硬按钮或麦克风)和用于根据用户的控制显示执行操作的结果或电子设备2300的状态的输出接口(例如,显示面板或扬声器)。根据实施例,输入/输出接口2340可以接收与深度神经网络的位精度和块大小中的至少一个对应的用户输入。
在实施例中,硬件加速器可以包括在第一张量的符号和尾数与第二张量的符号和尾数之间执行1D子字并行化的多个乘法器。硬件加速器可以包括在2D操作模式下操作以输出多个乘法器的计算结果的第一处理设备。硬件加速器可以包括在3D操作模式下操作以在通道方向上累加多个乘法器的计算结果,并输出累加计算结果的结果第二处理设备。
在实施例中,硬件加速器的多个乘法器中的第一组可以执行第一张量中包括的第一值的一系列子字与第二张量中包括的第二值的一系列子字之中的第一子字之间的乘法操作。所述硬件加速器的多个乘法器中的第二组可以执行第一值的一系列子字与第二值的一系列子字之中的第二子字之间的乘法操作。
在实施例中,在深度神经网络的计算中,当执行权重梯度计算、DW卷积、扩张卷积或向上卷积时,硬件加速器可以在2D操作模式下操作,其中计算结果不在信道方向上累加。在深度神经网络的计算中,当执行卷积、逐点卷积或全连接层计算时,硬件加速器可以在3D操作模式下操作,其中计算结果在通道方向上累加。
在实施例中,处理核可以包括六个子核。每个子核可以包括4个PU。PU中的每一个可以包括四个PE。每个PE可以包括九个乘法器。
在实施例中,在深度神经网络的Conv3层的计算中,在第一张量的符号和尾数的大小是16位的情况下,与Conv3层的一个输入通道相对应的第一张量可被广播到构成一个子核的四个PU。在深度神经网络的Conv3层的计算中,在第一张量的符号和尾数的大小为8位的情况下,与Conv3层的两个输入通道相对应的第一张量可被广播到构成一个子核的四个PU。在深度神经网络的Conv3层的计算中,在第一张量的符号和尾数的大小是4位的情况下,与Conv3层的四个输入通道相对应的第一张量可被广播到构成一个子核的四个PU。
在实施例中,在深度神经网络的Conv3层的计算中,在第二张量的符号和尾数的大小是16位的情况下,与Conv3层的一个输出通道相对应的第二张量可被分布到构成一个子核的四个PU。在深度神经网络的Conv3层的计算中,在第二张量的符号和尾数的大小为8位的情况下,与Conv3层的两个输出通道相对应的第二张量可以被分配给构成一个子核的四个PU。在深度神经网络的Conv3层的计算中,在第二张量的符号和尾数的大小为4位的情况下,与Conv3层的四个输出通道相对应的第二张量可以被分配给构成一个子核的四个PU。
在实施例中,第一处理设备可以包括六个4路加法器树,其对六个子核中的每个子核中包括的四个PU的输出进行求和。第一处理设备可以包括六个位截断器,其将4路加法器树的输出中的每一个舍入以具有预设数量的位。第一处理设备可以包括选择性地对位截断器的输出进行求和的选择性6路加法器树。第一处理设备可以包括算术转换器,该算术转换器基于选择性6路加法器树的输出和共享指数处理器的输出来输出FP32部分和数据。第一处理设备可以包括对FP32部分和数据进行累加的累加器。
在实施例中,第二处理设备可以包括四个6路加法器树,其对不同子核中彼此对应的PU的输出进行求和。第二处理单元可以包括四个算术转换器,其基于6路加法器树的输出和共享指数处理器的输出来输出FP32部分和数据。第二处理单元可包括对FP32部分和数据进行累加的四个累加器。第二处理单元可以包括选择性地对累加器的输出进行求和的选择性4路加法器树。
在实施例中,每个PU可以包括执行乘法操作的九个乘法器。PU中的每一个可以包括对九个乘法器的输出求和的9路加法器树。PU中的每一个可以包括选择性移位逻辑电路,其将9路加法器树的输出移位预设位数。
在实施例中,所述硬件加速器可以包括处理第一张量的共享指数和第二张量的共享指数的共享指数处理器。
在实施例中,硬件加速器可以通过使用与控制信号相对应的多个数据类型来执行计算。在实施例中,数据类型可以包括定点类型的第一数据类型、仅具有整数的第二数据类型、具有符号和整数的第三数据类型、以及共享指数的实数类型的第四数据类型。
在实施例中,第一张量的共享指数的大小和第二张量的共享指数的大小可以是8位。第一张量的符号和尾数的大小或第二张量的符号和尾数的大小可以是4位、8位和16位之一。基于第一张量的符号和尾数的大小或第二张量的符号和尾数的大小,可以将第一张量和第二张量映射到处理核。
在实施例中,可以基于深度神经网络的训练的前向传递步骤、后向传递步骤或权重更新步骤来确定第一张量的符号和尾数的大小或第二张量的符号和尾数的大小。
在实施例中,硬件加速器可以包括核输出缓冲器,该核输出缓冲器在权重更新步骤中输出第一处理设备的输出值,并且在前向传递步骤和后向传递步骤中输出第二处理设备的输出值。
在实施例中,所述硬件加速器可以包括批量归一化电路,所述批量归一化电路基于核输出缓冲器的输出来执行批量归一化。硬件加速器可以包括ReLU池电路,该ReLU池电路基于批量归一化电路的输出来执行ReLU函数值和池化值。硬件加速器可以包括FIFO电路,该FIFO电路存储并输出ReLU池电路的输出。硬件加速器可以包括将浮点形式的FIFO电路的输出的数据类型转换为BFP形式的FP2BFP转换器电路。硬件加速器可以包括根据预定义精度量化FP2BFP转换器的输出的量化电路。
在实施例中,多个乘法器中的每一个可以包括第一MUX,其通过第一输入端子接收先前的第二张量,通过第二输入端子接收当前的第二张量,并且响应于保持(keep)信号而输出当前的第二张量或第一张量。多个乘法器中的每一个可以包括乘法器核,该乘法器核通过使用5位第一张量和5位第二张量作为操作数来执行乘法操作。多个乘法器中的每一个可以包括用于存储乘法器核的输出的第一寄存器。多个乘法器中的每一个可以包括用于存储第一MUX的输出的第二寄存器。多个乘法器中的每一个可以包括第二MUX,第二MUX通过第一输入端子接收存储在第二寄存器中的值,通过第二输入端子接收第一MUX的输出,并且响应于旁路信号,输出存储在第二寄存器中的值或第一MUX的输出。
在一个实施例中,可以通过由保持信号生成的反馈环路来维持存储在第二寄存器中的值。
在实施例中,电子设备可包括硬件加速器,该硬件加速器通过使用多个乘法器来执行第一张量的符号和尾数与第二张量的符号和尾数之间的1D子字并行化,并且通过使用共享指数处理器来执行第一张量的共享指数与第二张量的共享指数之间的处理。电子设备可以包括处理器,该处理器被配置为执行至少一个指令以基于深度神经网络信息来控制硬件加速器,该深度神经网络信息包括深度神经网络中的层的数量、层的类型、张量的形状、张量的维度、操作模式、位精度、批量归一化的类型、池化层的类型和ReLU函数的类型中的至少一个。电子设备可包括存储至少一个指令和深度神经网络的存储器。
在实施例中,处理器可以执行至少一个指令以基于用户输入来获得深度神经网络的位精度和块大小中的至少一个。处理器可以执行至少一个指令以基于所获得的位精度和块大小中的至少一个来设置第一张量和第二张量的位精度和块大小中的至少一个。处理器可以执行至少一个指令以控制硬件加速器基于设置来训练深度神经网络。
在实施例中,硬件加速器可以在2D操作模式下操作,其中输出多个乘法器的计算结果而不在通道方向上累加,或者硬件加速器可以在3D操作模式下操作,其中在通道方向上累加多个乘法器的计算结果并输出累加计算结果的结果。
在下文中,将描述在如上所述的使用模拟器的硬件加速器的设计中反映的主要特性。
[硬件效率]
面积和功率是重要的设计考虑,因为它们影响性能和能量消耗。在本公开中,即使在设计硬件加速器的过程中,也应用了用于减少面积和能量消耗的各种方法。
首先,对于PE,在乘法器上支持旁路以减少针对权重及输入带宽的芯片上存储器存取的数量。因为本公开的加速器用于训练而不是推断,所以发生许多存储器访问。
同时,普通MAC设备在一个周期内从片上缓冲器中取出计算所需的数据。在低精度模式的情况下,需要在一个周期内将大量数据加载到MAC设备中,因此,在片上缓冲器和MAC设备之间需要大的带宽。为了解决这个问题,上述加速器中的MAC设备支持旁路。
第二,提高了硬件效率。这里,硬件效率是指相对于面积和功耗的效率。在本公开中,使用以下方法来提高硬件效率:1)减少移位器的数量,2)用整数操作符替换浮点操作符,以及3)执行操作数隔离。
在支持各种精度的MAC运算器中,存在2D子字并行化运算器作为对所有支持的精度具有高利用率和高硬件效率的解决方案。运算器具有大量的移位器。在本公开中,运算器被划分为1D子字并行化运算器,并且具有相同移位器的1D子字并行化运算器被聚类。聚类运算器共享移位器,因此,子字并行化运算器的移位器的数量显著减少。作为参考,在本公开中,将通过聚类获得的组称为PE。移位器数量的这种减少减小了运算器的面积。
同时,由于本公开提出的硬件加速器中的处理核支持BFP,因此子核中的所有单元都包括整数运算器。整数运算器具有比浮点型运算器更简单的结构,因此具有更小的面积和更低的功耗。通过用整数型运算器替换大量浮点运算器,硬件加速器具有高逻辑密度和低功耗。
同时,本公开中选择性使用的所有模块都设计有涉及的操作数隔离。例如,当第一处理设备正在操作时,第二处理设备不需要操作。类似地,当第二处理设备正在操作时,第一处理设备不需要操作。使未在本公开中操作的设备进入空闲状态,使得可以减少在设备中发生的动态功耗。
第三,高利用率。在现有技术中,在不区分2D操作模式和3D操作模式的情况下执行计算。在2D操作模式的情况下,与3D操作模式不同,计算结果不在通道方向上累加,因此,生成的输出结果的量远大于3D操作模式中的输出结果的量。然而,由于设备的有限带宽,会仅输出一部分输出结果。为此,现有技术的加速器在2D操作模式下仅使用一部分运算器。为了解决现有技术设备的低利用率的问题,本公开具有第一处理设备和第二处理设备。第一处理设备专用于2D操作模式,并且第二处理设备专用于3D操作模式。第一处理设备具有高输入带宽,使得由运算器生成的许多输出结果值可以被传送到设备。以这种方式发送的值最终通过舍入到最近类型的量化输出。通过以这种方式配置第一处理设备,运算器可以在有限的带宽中具有高利用率。
第四,损失梯度图的分割。在现有技术中,在权重更新步骤中实现了低利用率。详细地,在现有技术中,仅关注DNN训练的前向传递,即,其针对大特征图和小特征图之间的计算进行了优化。然而,权重更新是大特征图与大特征图之间的计算。在这方面,现有技术的加速器在权重更新步骤中具有低利用率。为了解决这样的问题,在本公开中,在权重更新步骤中将一个特征图切割成小尺寸的特征图,以具有如在前向传递中的高利用率。
第五,在本公开中,针对各个步骤以不同大小的精度执行计算,因此可以有效地执行计算。例如,在更新过程中,需要执行高精度的计算,但在其他过程中,即使执行低精度的操作,性能也不会受到很大影响。因此,通过对除了权重更新过程之外的操作执行具有低精度的快速计算,并且在权重更新过程中执行具有高精度的计算,可以有效地执行计算操作,而不会在整个训练过程中降低训练性能。
同时,根据上述各种实施例的处理方法可以以用于执行每个操作的程序代码的形式实现,存储在记录介质中,然后分发。在这种情况下,装载有记录介质的设备可以执行上述处理操作。
这样的记录介质可以是各种类型的计算机可读介质,诸如ROM、RAM、存储芯片、存储卡、外部硬盘驱动器、硬盘驱动器、CD、DVD、磁盘或磁带。
已经参考附图描述了本公开,但是本公开的范围旨在由所附权利要求确定,并且不旨在被解释为限于上述实施例和/或附图。此外,应当清楚地理解,对于本领域技术人员显而易见的权利要求中描述的本公开的改变、改变和修改也包括在本公开的范围内。
应当理解,本文描述的实施例应当仅在描述性意义上考虑,而不是为了限制的目的。每个实施例内的特征或方面的描述通常应被认为可用于其他实施例中的其他类似特征或方面。虽然已经参考附图描述了一个或多个实施例,但是本领域普通技术人员将理解,在不脱离由所附权利要求限定的本公开的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。

Claims (20)

1.一种用于执行深度神经网络的计算的硬件加速器,所述硬件加速器包括:
处理核,包括多个乘法器,所述多个乘法器被配置为在第一张量的符号和尾数与第二张量的符号和尾数之间执行一维(1D)子字并行化;
第一处理设备,被配置为在二维(2D)操作模式下操作,其中,在所述二维操作模式中,输出多个乘法器的计算结果;以及
第二处理设备,被配置为在三维(3D)操作模式下操作,在所述三维操作模式中,在通道方向上累加多个乘法器的计算结果,然后输出累加所述计算结果的结果。
2.如权利要求1所述的硬件加速器,其中,所述多个乘法器中的第一组执行第一张量中包括的第一值的一系列子字与第二张量中包括的第二值的一系列子字之中的第一子字之间的乘法操作,并且
所述多个乘法器中的第二组执行第一值的所述一系列子字与第二值的所述一系列子字之中的第二子字之间的乘法操作。
3.如权利要求1所述的硬件加速器,其中,在深度神经网络的计算中,硬件加速器在执行权重梯度计算、逐深度(DW)卷积、扩张卷积或向上卷积时在2D操作模式下操作,其中计算结果不在通道方向上累加,并且在执行卷积、逐点卷积或全连接层计算时在3D操作模式下操作,其中计算结果在通道方向上累加。
4.如权利要求1所述的硬件加速器,其中,所述处理核包括六个子核,
所述子核中的每一个包括四个处理单元,
所述处理单元中的每一个包括四个处理元件,并且
所述处理元件中的每一个包括九个乘法器。
5.如权利要求4所述的硬件加速器,其中,在深度神经网络的Conv3层的计算的情况下,基于第一张量的符号和尾数的大小为16位,与Conv3层的一个输入通道相对应的第一张量被广播到构成一个子核的四个处理单元,
基于第一张量的符号和尾数的大小为8位,与Conv3层的两个输入通道相对应的第一张量被广播到构成一个子核的四个处理单元,以及
基于第一张量的符号和尾数的大小为4位,与Conv3层的四个输入通道相对应的第一张量被广播到构成一个子核的四个处理单元。
6.如权利要求4所述的硬件加速器,其中,在深度神经网络的Conv3层的计算的情况下,基于第二张量的符号和尾数的大小为16位,与Conv3层的一个输出通道相对应的第二张量被分发到构成一个子核的四个处理单元,
基于第二张量的符号和尾数的大小为8位,与Conv3层的两个输出通道相对应的第二张量被分配给构成一个子核的四个处理单元,以及
基于第二张量的符号和尾数的大小为4位,与Conv3层的四个输出通道相对应的第二张量被分配给构成一个子核的四个处理单元。
7.如权利要求4所述的硬件加速器,其中,所述第一处理设备包括:
六个4路加法器树,被配置为对包括在六个子核中的每一个中的四个处理单元的输出求和;
六个位截断器,被配置为对4路加法器树的输出中的每一个舍入以具有预设数量个位;
选择性6路加法器树,被配置为选择性地对位截断器的输出求和;
算术转换器,被配置为基于选择性6路加法器树的输出和共享指数处理器的输出来输出FP32部分和数据;以及
累加器,被配置为累加FP32部分和数据。
8.如权利要求4所述的硬件加速器,其中,所述第二处理设备包括:
四个6路加法器树,每个被配置为对不同子核中彼此对应的处理单元的输出进行求和;
四个算术转换器,被配置为基于6路加法器树的输出和共享指数处理器的输出来输出FP32部分和数据;
四个累加器,被配置为累加FP32部分和数据;以及
选择性4路加法器树,被配置为选择性地对累加器的输出求和。
9.如权利要求4所述的硬件加速器,其中,所述处理单元中的每一个包括:
九个乘法器,被配置为执行乘法操作;
9路加法器树,被配置为对九个乘法器的输出求和;以及
选择性移位逻辑电路,被配置为将9路加法器树的输出移位预设数量个位。
10.如权利要求1所述的硬件加速器,还包括共享指数处理器,被配置为处理第一张量的共享指数和第二张量的共享指数。
11.如权利要求1所述的硬件加速器,其中,所述处理核被配置为通过使用与控制信号相对应的多种数据类型来执行计算,并且
数据类型包括定点格式的第一数据类型、仅具有整数的第二数据类型、具有符号和整数的第三数据类型、以及共享指数的实数格式的第四数据类型。
12.如权利要求1所述的硬件加速器,其中,所述第一张量的共享指数的大小和第二张量的共享指数的大小是8位,
第一张量的符号和尾数的大小或第二张量的符号和尾数的大小是4位、8位和16位之一,并且
基于第一张量的符号和尾数的大小或第二张量的符号和尾数的大小,将第一张量和第二张量映射到处理核。
13.如权利要求12所述的硬件加速器,其中,所述第一张量的符号和尾数的大小或第二张量的符号和尾数的大小是基于训练深度神经网络的前向传递步骤、后向传递步骤或权重更新步骤来确定的。
14.如权利要求1所述的硬件加速器,还包括核输出缓冲器,被配置为在权重更新步骤中输出第一处理设备的输出值,并且在前向传递步骤和后向传递步骤中输出第二处理设备的输出值。
15.如权利要求14所述的硬件加速器,还包括:
批量归一化电路,被配置为基于核输出缓冲器的输出来执行批量归一化;
修正线性单元(ReLU)池电路,被配置为基于批量归一化电路的输出来执行ReLU函数值和池化值;
先进先出(FIFO)电路,被配置为存储并输出ReLU-池电路的输出;
FP2BFP转换器电路,被配置为将FIFO电路的输出的浮点格式的数据类型转换为块浮点格式;以及
量化电路,被配置为根据预定义精度量化FP2BFP转换器的输出。
16.如权利要求1所述的硬件加速器,其中,所述多个乘法器中的每一个包括:
第一复用器(MUX),被配置为通过第一输入端子接收先前的第二张量,通过第二输入端子接收当前的第二张量,并且响应于保持信号而输出当前的第二张量或第一张量;
乘法器核,被配置为通过使用5位的第一张量和5位的第二张量作为操作数来执行乘法操作;
第一寄存器,被配置为存储乘法器核的输出;
第二寄存器,被配置为存储第一MUX的输出;以及
第二MUX,被配置为通过第一输入端子接收存储在第二寄存器中的值,通过第二输入端子接收第一MUX的输出,并且响应于旁路信号,输出存储在第二寄存器中的值或第一MUX的输出。
17.如权利要求16所述的硬件加速器,其中,通过由保持信号生成的反馈环路来维持存储在第二寄存器中的值。
18.一种用于执行深度神经网络的训练和推断的电子设备,所述电子设备包括:
硬件加速器,被配置为通过使用多个乘法器在第一张量的符号和尾数与第二张量的符号和尾数之间执行一维(1D)子字并行化,并且通过使用共享指数处理器在第一张量的共享指数与第二张量的共享指数之间执行处理;
处理器,被配置为执行至少一个指令以基于深度神经网络信息来控制硬件加速器,所述深度神经网络信息包括以下项中的至少一个:深度神经网络中的层的数量、层的类型、张量的形状、张量的维度、操作模式、位精度、批量归一化的类型、池化层的类型、以及修正线性单元(ReLU)函数的类型;以及
存储器,存储所述至少一个指令和深度神经网络。
19.如权利要求18所述的电子设备,其中,所述至少一个处理器还被配置为执行所述至少一个指令以基于用户输入获得深度神经网络的位精度和块大小中的至少一个,基于所获得的位精度和块大小中的至少一个设置第一张量和第二张量的位精度和块大小中的至少一个,并且基于所述设置控制硬件加速器训练所述深度神经网络。
20.如权利要求18所述的电子设备,其中,所述硬件加速器还被配置为在二维(2D)操作模式下操作,在二维操作模式中,输出多个乘法器的计算结果而不在通道方向上累加,或者在三维(3D)操作模式下操作,在三维操作模式中,在通道方向上累加多个乘法器的计算结果并且输出累加所述计算结果的结果。
CN202310077362.XA 2022-01-19 2023-01-19 用于执行深度神经网络的计算的硬件加速器和包括其的电子设备 Pending CN116468087A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2022-0008090 2022-01-19
KR1020220186268A KR20230112050A (ko) 2022-01-19 2022-12-27 심층 신경망의 연산을 수행하는 하드웨어 가속기 및 이를 포함하는 전자 장치
KR10-2022-0186268 2022-12-27

Publications (1)

Publication Number Publication Date
CN116468087A true CN116468087A (zh) 2023-07-21

Family

ID=87181284

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310077362.XA Pending CN116468087A (zh) 2022-01-19 2023-01-19 用于执行深度神经网络的计算的硬件加速器和包括其的电子设备

Country Status (1)

Country Link
CN (1) CN116468087A (zh)

Similar Documents

Publication Publication Date Title
CN110050256B (zh) 用于神经网络实现的块浮点
CN107729989B (zh) 一种用于执行人工神经网络正向运算的装置及方法
US8078835B2 (en) Reconfigurable array processor for floating-point operations
US20200320375A1 (en) Accelerating neural networks with low precision-based multiplication and exploiting sparsity in higher order bits
US10592208B2 (en) Very low precision floating point representation for deep learning acceleration
KR102655950B1 (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
US11593628B2 (en) Dynamic variable bit width neural processor
US11620105B2 (en) Hybrid floating point representation for deep learning acceleration
TW202314570A (zh) 用於加速指數函數的計算的系統及方法
US20200005125A1 (en) Low precision deep neural network enabled by compensation instructions
WO2022163861A1 (ja) ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム
CN114626516A (zh) 一种基于对数块浮点量化的神经网络加速系统
US11609741B2 (en) Apparatus and method for processing floating-point numbers
KR102635978B1 (ko) 생성형 거대 언어 모델의 연산 가속을 위해 메모리대역폭 사용을 극대화하기 위한 혼합정밀도 mac 트리 구조
US7769981B2 (en) Row of floating point accumulators coupled to respective PEs in uppermost row of PE array for performing addition operation
WO2021044227A1 (en) Neural network circuitry having floating point format with asymmetric range
US20230259743A1 (en) Neural network accelerator with configurable pooling processing unit
CN116468087A (zh) 用于执行深度神经网络的计算的硬件加速器和包括其的电子设备
US20230229505A1 (en) Hardware accelerator for performing computations of deep neural network and electronic device including the same
KR20230112050A (ko) 심층 신경망의 연산을 수행하는 하드웨어 가속기 및 이를 포함하는 전자 장치
GB2614705A (en) Neural network accelerator with configurable pooling processing unit
EP4231134A1 (en) Method and system for calculating dot products
CN111930671B (zh) 异构智能处理器、处理方法及电子设备
US20220051095A1 (en) Machine Learning Computer
Jeong et al. TwinDNN: A tale of two deep neural networks

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