CN110322001A - 深度学习加速器及加快深度学习操作的方法 - Google Patents
深度学习加速器及加快深度学习操作的方法 Download PDFInfo
- Publication number
- CN110322001A CN110322001A CN201910028541.8A CN201910028541A CN110322001A CN 110322001 A CN110322001 A CN 110322001A CN 201910028541 A CN201910028541 A CN 201910028541A CN 110322001 A CN110322001 A CN 110322001A
- Authority
- CN
- China
- Prior art keywords
- weight
- zero
- input
- deep learning
- subset
- 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
Links
- 238000013135 deep learning Methods 0.000 title claims abstract description 45
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000004913 activation Effects 0.000 claims abstract description 45
- 238000012545 processing Methods 0.000 claims abstract description 42
- 208000010378 Pulmonary Embolism Diseases 0.000 claims abstract description 17
- 239000000872 buffer Substances 0.000 claims description 13
- 230000003139 buffering effect Effects 0.000 claims description 8
- 230000001537 neural effect Effects 0.000 description 13
- 238000013527 convolutional neural network Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Control Of Throttle Valves Provided In The Intake System Or In The Exhaust System (AREA)
- Auxiliary Drives, Propulsion Controls, And Safety Devices (AREA)
Abstract
本发明提供了一种深度学习加速器,包括:多个处理组件(PE),被分成多个PE组,用于通过对输入激活应用多维权重来执行卷积层的计算,以生成输出激活;以及,调度器,用于根据控制掩码将该输入激活中的输入数据和该多维权重中的非零权重调度给该处理组件;其中,该控制掩码指定该多维权重中的零权重的位置,以及,该多个PE组生成该输出激活中的各输出通道的输出数据,并共享相同的控制掩码,该相同的控制掩码指定相同的零权重的位置。相应地,本发明还提供了一种加快深度学习操作的方法。采用本发明,能够提高系统性能。
Description
技术领域
本申请通常涉及一种深度学习计算的架构,以及更特别地,涉及一种深度学习加速器及加快深度学习操作的方法。
背景技术
深度学习因其优越性能而在计算机视觉、语音识别、自然语言处理、生物信息学等领域中获得广泛应用。深度学习是机器学习的一个分支,它使用包含多个隐藏层的人工神经网络。一种称为卷积神经网络(convolutional neural network,CNN)的人工神经网络已用于诸如图像数据的大数据集的深度学习。
然而,神经网络计算的工作量很大。大多数神经网络计算涉及乘法和加法计算。例如,卷积神经网络(CNN)的核心计算是卷积(convolution),其涉及高阶巢状循环(high-order nested loop)。对于特征提取,卷积神经网络(CNN)在一组输入通道(例如,红色,绿色和蓝色)上将输入图像像素与一组滤波器(filters)进行卷积,然后进行非线性计算,下采样计算和类别评分计算(class scores computation)。该神经网络计算对资源要求很高。因此,需要改进神经网络计算以提高系统性能。
发明内容
在一实施例中,本申请提供一种深度学习加速器(DLA),以执行深度学习操作。深度学习加速器(DLA)包括多个处理组件(PE),被分成多个PE组,用于通过对输入激活应用多维权重来执行卷积层的计算,以产生输出激活。深度学习加速器(DLA)还包括调度器,该调度器根据控制掩码将输入激活中的输入数据和多维权重中的非零权重调度给处理组件。其中,该控制掩码指定该多维权重中的零权重的位置,以及,该多个PE组生成该输出激活中的各输出通道的输出数据,并共享相同的控制掩码,该相同的控制掩码指定相同的零权重的位置。
在另一实施例中,本申请提供了一种用于加快深度学习操作的方法。该方法包括:将多个处理组件(PE)分成多个PE组,每个PE组通过对输入激活应用多维权重来执行卷积层的计算。该方法还包括:根据控制掩码将该输入激活中的输入数据和该多维权重中的非零权重调度给该PE组,其中,该控制掩码指定该多维权重中的零权重的位置,以及,该多个PE组共享相同的控制掩码,该相同的控制掩码指定相同的零权重的位置;以及,该多个PE组生成该输出激活中的各个输出通道的输出数据。
在上述技术方案中,本发明提供了一种改进的神经网络计算架构,能够提高系统性能。
本领域技术人员在阅读附图所示优选实施例的下述详细描述之后,可以毫无疑义地理解本发明的这些目的及其它目的。详细的描述将参考附图在下面的实施例中给出。
附图说明
通过阅读后续的详细描述以及参考附图所给的示例,可以更全面地理解本发明。
图1根据一实施例示出了深度学习加速器的示意图。
图2根据一实施例示出了处理组件(PEs)110用于执行CNN计算的布置的示意图。
图3A,图3B,图3C根据一些实施例示出了用于CNN计算的零权重的模式。
图4根据一实施例示出了全连接计算中被跳过的权重。
图5是根据一实施例示出的用于执行深度学习操作的方法的流程示意图。
图6示出了操作本发明实施例的一种系统的示例。
在下面的详细描述中,为了说明的目的,阐述了许多具体细节,以便本领域技术人员能够更透彻地理解本发明实施例。然而,显而易见的是,可以在没有这些具体细节的情况下实施一个或多个实施例,不同的实施例可根据需求相结合,而并不应当仅限于附图所列举的实施例。
具体实施方式
以下描述为本发明实施的较佳实施例,其仅用来例举阐释本发明的技术特征,而并非用来限制本发明的范畴。在通篇说明书及权利要求书当中使用了某些词汇来指称特定的元件,所属领域技术人员应当理解,制造商可能会使用不同的名称来称呼同样的元件。因此,本说明书及权利要求书并不以名称的差异作为区别元件的方式,而是以元件在功能上的差异作为区别的基准。本发明中使用的术语“元件”、“系统”和“装置”可以是与计算机相关的实体,其中,该计算机可以是硬件、软件、或硬件和软件的结合。在以下描述和权利要求书当中所提及的术语“包含”和“包括”为开放式用语,故应解释成“包含,但不限定于…”的意思。此外,术语“耦接”意指间接或直接的电气连接。因此,若文中描述一个装置耦接于另一装置,则代表该装置可直接电气连接于该另一装置,或者透过其它装置或连接手段间接地电气连接至该另一装置。
其中,除非另有指示,各附图的不同附图中对应的数字和符号通常涉及相应的部分。所绘制的附图清楚地说明了实施例的相关部分且并不一定是按比例绘制。
文中所用术语“基本”或“大致”是指在可接受的范围内,本领域技术人员能够解决所要解决的技术问题,基本达到所要达到的技术效果。举例而言,“大致等于”是指在不影响结果正确性时,技术人员能够接受的与“完全等于”有一定误差的方式。
本发明实施例提供了一种用于在神经网络计算中跳过权重(skipping weights)以减少工作量的系统和方法。被跳过的权重(skipped weights)是在神经网络计算中使用的权重,例如,全连接(fully-connected,FC)神经网络、卷积神经网络(CNN)或在计算中使用权重的其它神经网络。当权重的值为零(称为“零权重”(“zero weight”)时,或者当权重与零值(例如,零值输入)相乘时,该权重被跳过。由于不必从存储器(memory)读取该被跳过的权重,从而跳过权重能够减少神经网络存储器带宽(bandwidth)。由于不必对被跳过的权重(如零权重)执行乘法操作,因而跳过权重还能够降低计算成本。在一实施例中,选择或布置被跳过的权重能够优化用于控制权重跳过的软件和硬件开销。本发明实施例通过选择适合于输入大小的操作模式来实现有效的卷积计算。系统中的乘数(multipliers)被不同的操作模式共享。本发明实施例的优势将在以下描述中进行详细阐述。
在描述深度学习神经网络的硬件架构之前,描述一些术语是有用的。例如,深度学习神经网络可以包括卷积(convolutional,CONV)层,批量归一化(batch normalization,BN)层,修正线性单元(rectifier linear unit,ReLU)层,全连接(FC)层,池化层(poolinglayer),分类器层(softmax layer)等的组合。每个层的输入被称为输入激活(inputactivation),而输出被称为输出激活(output activation)。输入激活通常包括多个输入通道(例如,C个输入通道),以及,输出激活通常包括多个输出通道(例如,N个输出通道)。
在全连接(FC)层中,输入激活的每个输入通道通过加权链接(weighted link)被链接到输出激活的每个输出通道。例如,输入激活中的C个输入通道的数据与(C×N)维(dimension,D)的多维权重(multi-dimensional weights)相乘,以生成(generate)输出激活中的N个输出通道的输出数据。
修正线性单元(ReLU)层执行修正(rectifier)功能;例如,当输入数据值等于或小于零时,具有零阈值的修正函数使得该函数输出零。
卷积层对输入数据和一组滤波器权重(filter weights)执行卷积。通常,卷积层中使用的每个滤波器的高度和宽度小于输入数据的高度和宽度。例如,滤波器在宽度维度(width dimension,W)和高度(height dimension,H)维度中由5×5维的权重组成;也就是说,沿宽度维度的五个权重和沿高度维度的五个权重。卷积层的输入激活(例如,输入图像)在宽度维度和高度维度的每一个维度中具有数百或数千或更多像素,且被细分为用于卷积操作的瓦片(tiles,即,块)。除了宽度和高度之外,输入图像还具有深度维度(depthdimension),其也被称为输入通道的数量(例如,输入图像中的颜色通道的数量)。每个输入通道由H×W维的相应滤波器滤波。因此,C个输入通道的输入图像由具有多维权重C×H×W的相应滤波器滤波。在卷积过程中,滤波器在输入图像的输入通道的宽度和/或高度上滑动(slide),并且在任何位置处的权重和图像像素值之间计算点积(dot product)。当滤波器在输入图像上滑动时,生成2维(2D)输出特征图(output feature map)。该输出特征图是在输入图像的每个空间位置处的滤波器响应的表示。不同的输出特征图可用来检测输入图像中的不同特征。当N个C×H×W维的滤波器被应用于C个输入通道的输入图像时,生成N个输出特征图(即,输出激活的N个输出通道)。因此,用于卷积层的滤波器权重可以通过具有坐标(N,H,W,C)的位置来识别,其中,该位置指定该权重对应的输出通道,高度坐标,宽度坐标和对应的输入通道。
图1是根据一实施例的支持权重跳过的神经网络计算的深度学习加速器(deeplearning accelerator,DLA)100的示意图。深度学习加速器(DLA)100包括多个处理组件(processing elements,PEs)110,每个处理组件包括至少一个乘法累加器(multiply-and-accumulate,MAC)电路(例如,连接到加法器的乘法器),以执行乘法和加法。处理组件(PEs)110对输入数据和调度器(dispatcher)120调度的权重执行操作。当深度学习加速器(DLA)100执行神经网络计算时,调度器120根据控制掩码(control mask)125将权重调度给处理组件(PEs)110,其中,控制掩码125指定(specify)零权重的位置。零权重是在处理组件(PEs)110中的乘法累加器(MAC)所执行的计算中要跳过的这些权重;例如,能够跳过乘法中使用的零权重。在一实施例中,调度器120包括硬件控制器124,其执行对存储在控制掩码125中的零权重位置的读访问。
在一实施例中,控制掩码125通过将多维权重的给定(given)输入通道识别为零值来指定零权重的位置。在另一实施例中,控制掩码125通过将多维权重的给定高度坐标和给定宽度坐标识别为零值来指定零权重的位置。在又一实施例中,控制掩码125通过将多维权重的给定输入通道,给定高度坐标和给定宽度坐标识别为零值来指定零权重的位置。
深度学习加速器(DLA)100还包括缓冲器(buffer)130,用于存储输入数据和权重,缓冲器130可以是静态随机存取存储器(Static Random Access Memory,SRAM)单元。在一些实施例中,处理组件(PEs)110还用于执行完全连接(FC)层的计算,以及,深度学习加速器(DLA)100还包括缓冲加载器(buffer loader)140,缓冲加载器140用于从存储器150加载输入数据和权重,存储器150可以是动态随机存取存储器(Dynamic Random Access Memory,DRAM)。应当理解的是,在一些实施例中,缓冲器130和/或存储器150可以是易失性或非易失性存储器装置,本发明实施例对其类型不做任何限制。在一实施例中,缓冲加载器140包括零输入映射(zero input map)145,其表示(indicate)输入激活中的零值输入数据的位置和输入激活中的非零输入数据的位置。
图2根据一实施例示出了处理组件(PEs)110用于执行卷积层的计算的布置的示意图。在该示例中,深度学习加速器(DLA)100(图1)包括十二个处理组件(PEs)110。此外,输入激活具有四个输入通道(C=4),以及,输出激活具有六个输出通道(N=6)。存在六个三维(3D)滤波器(F1-F6)用于所对应的6个输出通道,每个滤波器的尺寸为(H×W×C=3×3×4)维。处理组件(PEs)110被分成P个PE组215;在该示例中,P=4。P个PE组215生成输出激活中的各个输出通道的输出数据;也就是说,每个PE组215被映射到(生成输出激活的输出通道的输出数据)输出激活的输出通道。此外,PE组215共享相同的控制掩码,其在滤波器F1-F4中指定相同的零权重位置(the same positions of zero weights),也就是说,滤波器F1-F4中被控制掩码指定的零权重的位置相同。在一些实施例中,滤波器F5-F6中的零权重位置可以不同于滤波器F1-F4中的零权重位置。
在该示例中,处理组件(PEs)110在第一时间段中利用滤波器F1-F4的滤波器权重执行卷积层的计算,以生成所对应的四个输出通道,以及,在第二时间段中利用滤波器F5-F6的滤波器权重执行卷积层的计算,以生成输出激活的另外两个输出通道。控制掩码指定滤波器F1,F2,F3和F4中的零权重的位置,4个PE组215利用这4个滤波器F1,F2,F3和F4进行卷积层的计算。在该示例中,滤波器F1-F4中的每一个在第一输入通道的左上角(显示为阴影方块)具有零权重;因此,控制掩码将(H,W,C)=(1,1,1)指定为零权重。当调度器120(图1)将F1-F4的权重调度给PE组215以进行卷积层的计算时,调度器120针对所有四个输出通道跳过在(1,1,1)位置处的权重的调度。也就是说,调度器120将非零权重调度给PE组215,而不将零权重调度给PE组215进行卷积层的计算。
与传统卷积层的神经网络计算系统(在该传统的计算系统中,跨越不同输出通道的滤波器具有不同的零位置)相比,本文描述的共享(shared)控制掩码能够显著降低控制硬件用于识别零权重和控制权重跳过调度的复杂度。在这里描述的实施例中,为了满足性能目标,共享相同控制掩码的PE组215的数量(小于或等于3D滤波器的数量)是可调整的。当所有3D滤波器(在该示例中为六个)使用相同的控制掩码时,控制硬件中的开销被最小化。然而,如果CNN性能由于施加到所有输出通道的滤波器上的相同控制掩码而劣化,则共享该相同控制掩码的这些滤波器的数量被相应地调整。这里描述的实施例允许滤波器的子集(例如,P个滤波器)使用相同的控制掩码,其中P≤N,(N是输出通道的数量,其也是3D滤波器的总数量)。也就是说,PE组的数量小于或等于输出激活中的输出通道的数量。
在一实施例中,同一PE组215中的处理组件(PEs)110对输入激活的不同部分并行地进行操作,以生成输出通道的输出数据。不同PE组215中的处理组件(PEs)110使用相应的(corresponding)滤波器对输入激活的相同部分并行地进行操作,以生成相应输出通道的输出数据。
图3A,图3B,图3C根据一些实施例示出了用于卷积层的计算的零权重的模式(pattern)。在图3A,图3B,图3C的示例中,H=W=C=3,以及,N=4。图3A是示出被跨越一组输出通道的滤波器共享的第一零权重模式的示意图。第一零权重模式用于逐通道(channel-wise)权重跳过,在该第一零权重模式中,对不同的输出通道来说,跨越高度维度(H)和宽度维度(W)的第一输入通道的权重是零。每个输入通道中的零权重在图3A中显示为阴影方块的层。第一零权重模式由相应的控制掩码描述。控制掩码可以指定C=1,这意味着对于这一组输出通道(例如,P个输出通道)的指定坐标位置中的权重是零值。在一实施例中,控制掩码将零权重的位置指定为(H,W,C)=(x,x,1),其中,x表示“不关心”,即无论其值是多少都没关系。调度器120跳过调度使用该控制掩码中指定的这些零权重的MAC操作。
图3B是示出被跨越一组输出通道的滤波器共享的第二零权重模式的示意图。第二零权重模式用于逐点(point-wise)权重跳过,在该第二零权重模式中,对于这一组输出通道来说,跨输入通道维度(C)的给定(H,W)位置的权重是零。零权重在图3B中显示为阴影方块。第二零权重模式由相应的控制掩码描述。该控制掩码指定(H,W)=(1,3),这意味着对于这一组输出通道(例如,P个输出通道)的指定坐标位置中的权重是零值。在一实施例中,控制掩码将零权重的位置指定为(H,W,C)=(1,3,x),其中,x表示“不关心”。调度器120跳过调度使用该控制掩码中指定的那些零权重的MAC操作。
图3C是示出被跨越一组输出通道的滤波器共享的第三零权重模式的示意图。第三零权重模式用于逐形状(shape-wise)权重跳过,在该第三零权重模式中,对于这一组输出通道来说,给定位置(H,W,C)的权重是零。零权重在图3C中显示为阴影方块。第三零权重模式由相应的控制掩码描述。该控制掩码指定(H,W,C)=(1,1,1),这意味着对于不同的输出通道(例如,P个输出通道)的指定坐标位置中的权重是零值。调度器120跳过调度使用该控制掩码中指定的那些零权重的MAC操作。
图3A,图3B,图3C的示例示出了控制掩码在每个卷积层的计算中能简化为从跟踪四维(N,H,W,C)到少于四维的零权重(图3A中的一维,图3B中的二维,以及,图3C中的三维)。跨P个输出通道的统一(uniform)零权重模式从P个PE组共享的控制掩码中移除(remove)了一个维度(即,输出通道维度(N))。因此,返回参考图1,还能够简化用于调度器120的硬件控制器124,硬件控制器124读取控制掩码125。
在图1的实施例中,缓冲加载器140首先将来自存储器(如DRAM)150的输入数据加载到缓冲器130中。其中一些输入数据值可能是零,例如,作为前一神经网络层中的ReLU操作的结果。对于全连接(FC)层的计算,每个零值输入数据使得乘法输出等于零。因此,将与零输入相乘的相应权重可以被标记为“被跳过的权重”。在一些实施例中,缓冲加载器140用于从存储器150读取全连接(FC)层的FC输入数据,并根据该FC输入数据的值从该存储器150中选择性地读取FC权重。例如,缓冲加载器140用于从存储器150读取该FC权重的第一子集(如图4中描述的W2、W3)而不从存储器150读取该FC权重的第二子集(如图4中描述的W1、W4),该第一子集对应于FC输入数据的非零FC输入通道(该非零FC输入通道对应的输入数据不为零),该第二子集对应于FC输入数据的零FC输入通道(该零FC输入通道对应的输入数据为零)。在一实施例中,调度器120还用于识别该第一子集中的零FC权重(权重为零);以及,将该第一子集中的非零FC权重(权重不为零)调度给处理组件110,而不将第二子集中的FC权重(包括零FC权重和非零FC权重)和第一子集中的零FC权重调度给用于FC神经网络计算的处理组件110。具体描述请参考图4。
图4根据一实施例示出了FC层的计算中被跳过的权重。参考图4,缓冲加载器140读取输入激活410,该输入激活410包括多个输入通道(例如,C1,C2,C3和C4)。每个输入通道中的数据将乘以相应的权重(例如,二维权重420的对应列)。在该示例中,在读取输入激活410之后,缓冲加载器140识别出输入通道(例如,输入通道C1和C4)中的数据为零(在图4中标记为“Z”),并将相应的权重(例如,W1和W4这两列)标记为“被跳过的权重”(标记为“S”)而不加载W1和W4。在该示例中,输入通道C2和C3中的数据是非零(标记为“N”),因此,冲器加载器140将对应的权重W2和W3从存储器(如DRAM)150加载到缓冲器130中。从而,缓冲加载器140跳过读取(和加载)权重W1和W4。跳过对W1和W4的读访问可减少存储器总线流量。
在权重W2和W3被加载到缓冲器130之后,调度器120识别W2和W3中的零权重(在图4中标记为“Z”)和非零权重(标记为“N”)。调度器120会跳过将零权重调度给处理组件(PEs)110的操作,即不将零权重调度给处理组件(PEs)110。调度器120将W2和W3中的非零权重与对应的输入通道C2和C3中的输入资料一起调度给处理组件(PEs)110以进行MAC操作。通过跳过被加载到缓冲器130的零权重的MAC操作,可以减少处理组件(PEs)110的工作量。
图5是根据一实施例示出的用于执行深度学习操作的方法500的流程示意图。在一实施例中,方法500可以由加速器(例如,图1的深度学习加速器(DLA)100)执行。
方法500开始于步骤510处,在步骤510中,加速器将多个处理组件(PEs)分成多个PE组。每个PE组通过对输入激活应用多维权重来执行卷积层的计算。在一些实施例中,加速器包括调度器,在步骤520中,该调度器根据控制掩码将输入激活中的输入数据和多维权重中的非零权重调度给PE组。控制掩码指定该多维权重中的零权重的位置。该多个PE组共享相同的控制掩码,该相同的控制掩码指定相同的零权重的位置。在步骤530中,该多个PE组生成输出激活的各个输出通道的输出数据。
在一实施例中,非暂时性计算器可读介质在其上存储指令,当在系统的一个或多个处理器上执行时,使得系统执行图5的方法500。下面参考图6描述该系统的一种示例。
图6示出了操作本发明实施例的系统600的一种示例。系统600包括一个或多个处理器(这里称为处理器610),例如一个或多个中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP),媒体处理器或其它通用和/或专用处理电路。处理器610耦接于深度学习加速器(DLA)620,深度学习加速器(DLA)620是图1的深度学习加速器(DLA)100。深度学习加速器(DLA)620包括多个硬件组件,例如处理组件(PEs)625,以及图1的深度学习加速器(DLA)100中示出的其它硬件组件。处理组件(PEs)625的每一个可进一步包括算术组件,例如乘法器,加法器,累加器等中的一个或多个。处理组件(PEs)625被布置为用于执行结合图1至图5所描述的上述神经网络计算的一个或多个组。在一实施例中,深度学习加速器(DLA)620的输出被发送到存储器630,并且由处理器610进一步处理以用于各种应用。在一些实施例中,系统600还包括网络接口640,以与外界交换被深度学习加速器(DLA)620处理后的数据。
存储器630包括易失性和/或非易失性存储器装置,诸如随机存取存储器(RAM),闪存,只读存储器(ROM)等。存储器630位于芯片上(即在与处理器610相同的芯片上),且包括高速缓存,寄存器文件和由RAM装置构成的缓冲器。可替代地或另外地,存储器630可以包括作为主存储器的一部分的片外存储器装置,诸如动态随机存取存储器(DRAM)装置。存储器630可以被深度学习加速器(DLA)620中的处理组件(PEs)625访问。系统600还可以包括用于连接到网络的网络接口(例如,个人区域网络,局域网,广域网等)。系统600可以是计算装置,通信装置或计算和通信装置的组合的一部分。
已经参考图1和图6的示例性实施例描述了图5的流程图的操作。然而,应该理解的是,图5的流程图的操作可以由除了参考图1和图6讨论的实施例之外的其它实施例来执行,以及,参考图1和图6讨论的实施例可以执行与参考流程图所讨论的操作不同的操作。虽然图5的流程图示出了由本发明的某些实施例执行的特定操作顺序,但是应该理解的是,此顺序是示例性的(例如,替代实施例中可以以不同的顺序执行操作,组合某些操作,重叠某些操作等)。
本文已经描述了各种功能组件或块。如本领域普通技术人员将理解的,功能块将优选地通过电路(如专用电路或通用电路,其在一个或多个处理器和编码指令的控制下操作)来实现,其通常包括以这样的方式配置的晶体管,以便根据这里描述的功能和操作来控制电路的操作。
虽然本发明已经通过示例的方式以及依据优选实施例进行了描述,但是,应当理解的是,本发明并不限于公开的实施例。相反,它旨在覆盖各种变型和类似的结构(如对于本领域技术人员将是显而易见的),例如,不同实施例中的不同特征的组合或替换。因此,所附权利要求的范围应被赋予最宽的解释,以涵盖所有的这些变型和类似的结构。
Claims (18)
1.一种深度学习加速器,其特征在于,包括:
多个处理组件PE,被分成多个PE组,用于通过对输入激活应用多维权重来执行卷积层的计算,以生成输出激活;以及,
调度器,用于根据控制掩码将该输入激活中的输入数据和该多维权重中的非零权重调度给该处理组件;
其中,该控制掩码指定该多维权重中的零权重的位置,以及,该多个PE组生成该输出激活中的各输出通道的输出数据,并共享相同的控制掩码,该相同的控制掩码指定相同的零权重的位置。
2.根据权利要求1所述的深度学习加速器,其特征在于,该控制掩码通过将该多维权重的给定输入通道识别为零值来指定该零权重的位置。
3.根据权利要求1所述的深度学习加速器,其特征在于,该控制掩码通过将该多维权重的给定高度坐标和给定宽度坐标识别为零值来指定该零权重的位置。
4.根据权利要求1所述的深度学习加速器,其特征在于,该控制掩码通过将该多维权重的给定输入通道、给定高度坐标和给定宽度坐标识别为零值来指定该零权重的位置。
5.根据权利要求1所述的深度学习加速器,其特征在于,每个PE组包括多个PE,该多个PE对该输入激活的不同部分并行地执行该卷积层的计算。
6.根据权利要求1所述的深度学习加速器,其特征在于,该多个PE组的数量小于或等于该输出激活中的输出通道的数量。
7.根据权利要求1所述的深度学习加速器,其特征在于,该处理组件还用于执行完全连接FC层的计算,以及,该深度学习加速器还包括:
缓冲加载器,用于从存储器读取该FC层的FC输入数据,并根据该FC输入数据的值从该存储器中选择性地读取FC权重。
8.根据权利要求7所述的深度学习加速器,其特征在于,该缓冲加载器用于:
从该存储器读取该FC权重的第一子集而不从该存储器读取该FC权重的第二子集,该第一子集对应于该FC输入数据的非零FC输入通道,该第二子集对应于该FC输入数据的零FC输入通道。
9.根据权利要求7所述的深度学习加速器,其特征在于,该调度器还用于:
识别该第一子集中的零FC权重;以及,
将该第一子集中的非零FC权重调度给该处理组件,而不将该第二子集中的FC权重和该第一子集中的零FC权重调度给该处理组件。
10.一种加快深度学习操作的方法,其特征在于,包括:
将多个处理组件PE分成多个PE组,每个PE组通过对输入激活应用多维权重来执行卷积层的计算;
根据控制掩码将该输入激活中的输入数据和该多维权重中的非零权重调度给该PE组,其中,该控制掩码指定该多维权重中的零权重的位置,以及,该多个PE组共享相同的控制掩码,该相同的控制掩码指定相同的零权重的位置;以及,
该多个PE组生成该输出激活中的各个输出通道的输出数据。
11.根据权利要求10所述的方法,其特征在于,该控制掩码通过将该多维权重的给定输入通道识别为零值来指定该零权重的位置。
12.根据权利要求10所述的方法,其特征在于,该控制掩码通过将该多维权重的给定高度坐标和给定宽度坐标识别为零值来指定该零权重的位置。
13.根据权利要求10所述的方法,其特征在于,该控制掩码通过将该多维权重的给定输入通道、给定高度坐标和给定宽度坐标识别为零值来指定该零权重的位置。
14.根据权利要求10所述的方法,其特征在于,该方法还包括:
每个PE组中的多个处理组件对该输入激活的不同部分并行地执行该卷积层的计算。
15.根据权利要求10所述的方法,其特征在于,该多个PE组的数量小于或等于该输出激活中的输出通道的数量。
16.根据权利要求10所述的方法,其特征在于,该处理组件还用于执行完全连接FC层的计算,以及,该方法还包括:
从存储器读取该FC层的FC输入数据;以及,
根据该FC输入数据的值从该存储器中选择性地读取FC权重。
17.根据权利要求16所述的方法,其特征在于,该方法还包括:
从该存储器读取该FC权重的第一子集而不从该存储器读取该FC权重的第二子集,该第一子集对应于该FC输入数据的非零FC输入通道,该第二子集对应于该FC输入数据的零FC输入通道。
18.根据权利要求16所述的方法,其特征在于,该方法还包括:
识别该第一子集中的零FC权重;以及,
将该第一子集中的非零FC权重调度给该处理组件,而不将该第二子集中的FC权重和该第一子集中的零FC权重调度给该处理组件。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862649628P | 2018-03-29 | 2018-03-29 | |
US62/649,628 | 2018-03-29 | ||
US16/221,295 | 2018-12-14 | ||
US16/221,295 US20190303757A1 (en) | 2018-03-29 | 2018-12-14 | Weight skipping deep learning accelerator |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110322001A true CN110322001A (zh) | 2019-10-11 |
Family
ID=68054474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910028541.8A Pending CN110322001A (zh) | 2018-03-29 | 2019-01-11 | 深度学习加速器及加快深度学习操作的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190303757A1 (zh) |
CN (1) | CN110322001A (zh) |
TW (1) | TWI811291B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112883982A (zh) * | 2021-01-08 | 2021-06-01 | 西北工业大学 | 一种面向神经网络稀疏特征的数据去零编码及封装方法 |
CN113807506A (zh) * | 2020-06-11 | 2021-12-17 | 杭州知存智能科技有限公司 | 数据加载电路和方法 |
US11977969B2 (en) | 2020-06-11 | 2024-05-07 | Hangzhou Zhicun Intelligent Technology Co., Ltd. | Data loading |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228696B (zh) * | 2017-08-31 | 2021-03-23 | 深圳市商汤科技有限公司 | 人脸图像检索方法和系统、拍摄装置、计算机存储介质 |
US10579432B1 (en) * | 2018-08-13 | 2020-03-03 | Twitter, Inc. | Load balancing deterministically-subsetted processing resources using fractional loads |
US11551069B2 (en) * | 2018-12-31 | 2023-01-10 | SK Hynix Inc. | Processing system |
US20200401895A1 (en) * | 2019-06-21 | 2020-12-24 | Samsung Electronics Co., Ltd. | Neural network hardware accelerator system with zero-skipping and hierarchical structured pruning methods |
US11222092B2 (en) | 2019-07-16 | 2022-01-11 | Facebook Technologies, Llc | Optimization for deconvolution |
US11182458B2 (en) | 2019-12-12 | 2021-11-23 | International Business Machines Corporation | Three-dimensional lane predication for matrix operations |
CN113011577B (zh) * | 2019-12-20 | 2024-01-05 | 阿里巴巴集团控股有限公司 | 处理单元、处理器核、神经网络训练机及方法 |
CN113065352B (zh) * | 2020-06-29 | 2022-07-19 | 国网浙江省电力有限公司杭州供电公司 | 一种电网调度工作文本的操作内容识别方法 |
CN111626414B (zh) * | 2020-07-30 | 2020-10-27 | 电子科技大学 | 一种动态多精度神经网络加速单元 |
TWI768497B (zh) * | 2020-10-07 | 2022-06-21 | 大陸商星宸科技股份有限公司 | 智慧處理器、資料處理方法及儲存介質 |
CN112257859B (zh) * | 2020-10-30 | 2024-07-05 | 地平线(上海)人工智能技术有限公司 | 特征数据处理方法及装置、设备、存储介质 |
GB2621383A (en) * | 2022-08-11 | 2024-02-14 | Advanced Risc Mach Ltd | Mechanism for neural network processing unit skipping |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160358069A1 (en) * | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
US20170103299A1 (en) * | 2015-10-07 | 2017-04-13 | Altera Corporation | Method and Apparatus for Implementing Layers on a Convolutional Neural Network Accelerator |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
EP3276539A1 (en) * | 2016-07-27 | 2018-01-31 | Samsung Electronics Co., Ltd. | Accelerator in convolutional neural network and method for operating the same |
US20180046897A1 (en) * | 2016-08-12 | 2018-02-15 | Beijing Deephi Intelligence Technology Co., Ltd. | Hardware accelerator for compressed rnn on fpga |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170344876A1 (en) * | 2016-05-31 | 2017-11-30 | Samsung Electronics Co., Ltd. | Efficient sparse parallel winograd-based convolution scheme |
CN109328361B (zh) * | 2016-06-14 | 2020-03-27 | 多伦多大学管理委员会 | 用于深度神经网络的加速器 |
US10489680B2 (en) * | 2016-10-04 | 2019-11-26 | Magic Leap, Inc. | Efficient data layouts for convolutional neural networks |
US11003985B2 (en) * | 2016-11-07 | 2021-05-11 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
CN107341544B (zh) * | 2017-06-30 | 2020-04-10 | 清华大学 | 一种基于可分割阵列的可重构加速器及其实现方法 |
WO2019190340A1 (en) * | 2018-03-28 | 2019-10-03 | Intel Corporation | Channel pruning of a convolutional network based on gradient descent optimization |
-
2018
- 2018-12-14 US US16/221,295 patent/US20190303757A1/en active Pending
-
2019
- 2019-01-11 CN CN201910028541.8A patent/CN110322001A/zh active Pending
- 2019-01-23 TW TW108102491A patent/TWI811291B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160358069A1 (en) * | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
US20170103299A1 (en) * | 2015-10-07 | 2017-04-13 | Altera Corporation | Method and Apparatus for Implementing Layers on a Convolutional Neural Network Accelerator |
EP3276539A1 (en) * | 2016-07-27 | 2018-01-31 | Samsung Electronics Co., Ltd. | Accelerator in convolutional neural network and method for operating the same |
US20180032859A1 (en) * | 2016-07-27 | 2018-02-01 | Samsung Electronics Co., Ltd. | Accelerator in convolutional neural network and method for operating the same |
US20180046897A1 (en) * | 2016-08-12 | 2018-02-15 | Beijing Deephi Intelligence Technology Co., Ltd. | Hardware accelerator for compressed rnn on fpga |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113807506A (zh) * | 2020-06-11 | 2021-12-17 | 杭州知存智能科技有限公司 | 数据加载电路和方法 |
US11977969B2 (en) | 2020-06-11 | 2024-05-07 | Hangzhou Zhicun Intelligent Technology Co., Ltd. | Data loading |
CN112883982A (zh) * | 2021-01-08 | 2021-06-01 | 西北工业大学 | 一种面向神经网络稀疏特征的数据去零编码及封装方法 |
CN112883982B (zh) * | 2021-01-08 | 2023-04-18 | 西北工业大学 | 一种面向神经网络稀疏特征的数据去零编码及封装方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190303757A1 (en) | 2019-10-03 |
TWI811291B (zh) | 2023-08-11 |
TW201942808A (zh) | 2019-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110322001A (zh) | 深度学习加速器及加快深度学习操作的方法 | |
CN110046702B (zh) | 神经网络计算加速器及其执行的方法 | |
KR20200143686A (ko) | 연산을 가속하기 위한 가속기 및 시스템 | |
CN108021528A (zh) | Slam运算装置和方法 | |
JP6927320B2 (ja) | 推論装置、畳み込み演算実行方法及びプログラム | |
JP2021509747A (ja) | ハードウェアベースのプーリングのシステムおよび方法 | |
CN108664999A (zh) | 一种分类模型的训练方法及其装置、计算机服务器 | |
CN112200300B (zh) | 卷积神经网络运算方法及装置 | |
CN107533751A (zh) | 用于图像处理器的线缓冲器单元 | |
CN111539526B (zh) | 一种神经网络卷积的方法和设备 | |
CN107704921A (zh) | 基于Neon指令的卷积神经网络的算法优化方法及装置 | |
US10649771B2 (en) | Semiconductor device | |
US11164032B2 (en) | Method of performing data processing operation | |
CN105868797A (zh) | 网络参数训练方法、景物类型识别方法及装置 | |
US11645072B2 (en) | Semiconductor device | |
CN108304926B (zh) | 一种适用于神经网络的池化计算装置及方法 | |
CN109992742A (zh) | 一种信号处理方法及装置 | |
DE102017117381A1 (de) | Beschleuniger für dünnbesetzte faltende neuronale Netze | |
US20220067495A1 (en) | Intelligent processor, data processing method and storage medium | |
DE102016125846A1 (de) | Makro-E/A-Einheit für Grafikprozessor | |
CN109324984A (zh) | 在卷积运算中使用循环寻址的方法和装置 | |
DE112020005140T5 (de) | Dreidimensionale faltung im prozessor eines neuronalen netzwerks | |
US7783861B2 (en) | Data reallocation among PEs connected in both directions to respective PEs in adjacent blocks by selecting from inter-block and intra block transfers | |
KR102372869B1 (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 | |
CN111223120B (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20191011 |
|
WD01 | Invention patent application deemed withdrawn after publication |