CN107977703A - 用于修剪神经网络以实现资源有效推理的系统和方法 - Google Patents
用于修剪神经网络以实现资源有效推理的系统和方法 Download PDFInfo
- Publication number
- CN107977703A CN107977703A CN201710994309.0A CN201710994309A CN107977703A CN 107977703 A CN107977703 A CN 107977703A CN 201710994309 A CN201710994309 A CN 201710994309A CN 107977703 A CN107977703 A CN 107977703A
- Authority
- CN
- China
- Prior art keywords
- neutral net
- layer parameter
- neuron
- housebroken
- trimming
- 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
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
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
Abstract
公开了一种用于神经网络修剪的方法、计算机可读介质和系统。所述方法包括步骤:接收用于经训练的神经网络的成本函数相对层参数的一阶梯度和基于与所述层参数相对应的所述一阶梯度计算每个层参数的修剪标准,其中所述修剪标准指示包括在所述经训练的神经网络中并与所述层参数相关联的每个神经元的重要性。所述方法包括附加步骤:识别具有最低重要性的至少一个神经元以及从所述经训练的神经网络中移除所述至少一个神经元以产生经修剪的神经网络。
Description
优先权要求
本申请要求享有于2016年10月21日提交的题为“采用神经元贡献的一阶泰勒近似修剪深度神经网络中的卷积核(Pruning Convolutional Kernels in Deep NeuralNetworks with First order Taylor Approximation of Neuron'sContribution)”的美国临时申请No.62/411,488(代理人案卷号NVIDP1143+/16-SC-0224-US01)的权益,其全部内容通过引用并入本文。
技术领域
本发明涉及神经网络,更具体地涉及修剪神经网络。
背景技术
卷积神经网络(CNN)广泛地用于计算机视觉应用中,包括物体分类和定位、行人和汽车检测以及视频分类。像这样的许多问题集中在只有少量精心策划的训练数据用于其的专业领域。在这些情况下,可以通过微调先前在更大标签的视觉数据集上训练的现有深度网络来提高精度。虽然这种形式的转移学习支持最先进技术的准确性,但是由于微调网络的重量级架构所需的时间、功率和存储器,推理是昂贵的。因此,具有解决与现有技术相关联的这些问题和/或其他问题的需求。
发明内容
公开了一种用于神经网络修剪的方法、计算机可读介质和系统。所述方法包括步骤:接收用于经训练的神经网络的成本函数相对层参数的一阶梯度以及基于与所述层参数相对应的所述一阶梯度计算每个层参数的修剪标准,其中所述修剪标准指示包括在所述经训练的神经网络中并与所述层参数相关联的每个神经元的重要性。所述方法包括附加步骤:识别具有最低重要性的至少一个神经元以及从所述经训练的神经网络中移除所述至少一个神经元以产生经修剪的神经网络。
附图说明
图1A示出了根据一个实施例的、用于神经网络修剪的方法的流程图;
图1B和1C示出了根据一个实施例的、如由移除特定神经元导致的损失函数的变化的图;
图1D示出了根据一个实施例的、从神经网络移除神经元的示意图;
图2A示出了根据一个实施例的、训练数据集D的成本函数C和参数h的图;
图2B示出了根据一个实施例的、神经网络修剪系统的框图;
图2C示出了根据一个实施例的、包括图1A所示的步骤的神经网络修剪的另一方法的流程图;
图3示出了根据一个实施例的并行处理单元;
图4A示出了根据一个实施例的、图3的并行处理单元内的通用处理集群;
图4B示出了根据一个实施例的、图3的并行处理单元的存储器分区单元;
图5示出了根据一个实施例的、图4A的流多处理器;
图6示出可以实现各种在先实施例的各种架构和/或功能的示例性系统。
具体实施方式
虽然现代深度CNN由各种层类型组成,但在预测期间的运行时间由卷积层的评估来支配。为了加速推理的目标,可以修剪整个特征图(feature map),从而可以有效地甚至在嵌入式设备上运行所得到的网络。在一个实施例中,基于贪心标准(greedy criteria)的修剪与微调交织,导致计算上有效的过程,其在经修剪的网络中保持良好的泛化(generalization)。计算修剪标准来评估网络中神经元的重要性,并移除至少一个“最不重要”的神经元以修剪网络。“最不重要的”神经元是为最终预测提供最小贡献的神经元。
图1A示出了根据一个实施例的、用于神经网络修剪的方法的流程图100。虽然方法100在处理单元的上下文中被描述,但是方法100还可以由程序、定制电路或者由定制电路和程序的组合来执行。例如,方法100可以由GPU(图形处理单元)、CPU(中央处理单元)、神经网络或能够实现神经网络的任何处理器执行。此外,本领域普通技术人员将理解,执行方法100的任何系统都在本发明的实施例的范围和精神内。
在步骤110,接收用于经训练的神经网络的成本函数关于层参数的一阶梯度。成本值是当前网络状态下成本函数的值,其指示神经网络的准确性。在一个实施例中,层输入参数是权重或激活。注意到,神经网络中的一层的层输入参数由前一层输出,因此“层参数”是指层输入参数或层输出参数。在一个实施例中,经训练的神经网络先前已经在大数据集上被训练,并且在具有更小、更具体的数据集的转移学习训练过程期间生成一阶梯度。
在步骤120,基于与层参数相对应的一阶梯度,计算每个层参数的修剪标准,其中修剪标准指示包括在经训练的神经网络中并且与层参数相关联的每个神经元的重要性。在一个实施例中,第一修剪标准是基于包括一阶梯度(即,一阶导数)的一阶泰勒展开,其接近由修剪网络参数引起的成本函数的变化。成本值的变化指示具有和不具有层输入参数的神经网络的精度,并且可以将该变化最小化。在另一个实施例中,第二标准基于包括成本函数对层输入参数的一阶梯度的平方和。
在步骤130,识别具有最低重要性的至少一个神经元。在一个实施例中,至少一个神经元对应于卷积层中的特征图。在一个实施例中,至少一个神经元包括具有低于阈值的重要性的神经元。在一个实施例中,至少一个神经元包括经训练的神经网络中所有神经元的预定百分比。
在步骤140,从经训练的神经网络中移除至少一个神经元以产生经修剪的神经网络。在一个实施例中,可以通过将层参数设置为零来移除神经元。在一个实施例中,可以通过将相应的修剪门设置为零来移除神经元。在一个实施例中,基于贪心标准的修剪与微调交织以从经训练的神经网络中迭代地移除神经元。
现在将按照用户的期望阐述关于各种可选架构和特征的更多说明性的信息,前述框架可以或不可以采用所述架构和特征实现。应该强调指出,为了说明的目的阐述以下信息,并且不应被解释为以任何方式限制。任何以下特征可以可选地与所描述的以外的其他特征合并或不合并。
理想地,修剪考虑通过计算具有和不具有每个神经元的神经网络的成本函数来单独地移除每个神经元,重复该过程,每次从神经网络中移除神经元。虽然理想的修剪在计算上是不实际的,但理想的修剪可以用作对照来评估各种修剪技术的性能。
对于卷积神经网络(CNN),一组图像特征图由具有维度Hl×Wl和Cl的个体图(或信道)表示。特征图既可以是神经网络的输入z0,也可以是来自卷积层zl的输出,其中l∈[1,2,…,L]。单个特征图被表示为其中k∈[1,2,…,Cl]。卷积层l将卷积运算(*)应用于一组输入特征图zl-1与由参数化的内核:
其中是将大小p×p的每个Cl-1内核与其各自的特征图进行卷积并加上偏差的结果。假设非线性激活R是整流线性单元。尽管在二维(2D)卷积的上下文中描述了这些技术,但是这些技术也可以应用于三维(3D)卷积。
在修剪期间使用训练数据集以从先前经训练的神经网络中移除神经元。
训练数据集D={X={x0,x1,…,xN},Y={y0,y1,…,yN}},其中x和y分别表示输入和目标输出。神经网络参数被优化以最小化成本值C(W)。在一个实施例中,参数(w,b)∈W可以表示计算特征图的单独权重、卷积核或整个内核集。成本函数C(·)最常见的选择是负对数似然函数。独立于修剪并且仅取决于原始神经网络要解决的任务来选择成本函数。在转移学习的情况下,使用大量经训练的神经网络,其采用在训练相关但不同数据集期间产生的参数W0初始化。
在修剪期间,提炼了一个参数子集。在修剪期间,适合的神经网络的精度C(W′)≈C(W)被保留。该精度对应于组合优化:
minW′|(W′)-C(W)|s.t.‖W′‖0≤B, (2)
其中,‖W′‖0中的l0范数界定W′中的非零参数B的数字。直观地,如果W′=W,则达到误差函数Ω的全局最小值。但是,‖W′‖0也将在最大值。误差函数Ω测量修剪后成本函数的变化,其中Ω(C(W′)-C(W))被最小化以服从‖W′‖0。在一个实施例中,误差函数是绝对差或欧氏距离。
在保持成本值尽可能接近原始(即,最小化误差函数)的同时找到一个很好的参数子集是需要对所选择的数据子集的成本函数进行2|W|评估的组合问题。使用现今可用的嵌入式计算系统,通过为合理大小的神经网络精确地优化组合问题,不可能实时地实现最佳修剪。因此,基于标准的修剪技术是优选的,从一完整的参数集W开始,并通过迭代地识别和移除至少一个最不重要的层参数来作为反向过滤器进行修剪以满足W′的l0界限。通过在每次迭代中移除参数,可以将W′的l0范数最小化。每次迭代移除一个层参数,确保原始神经网络模型和经修剪的神经网络模型之间的差异最小化。一旦移除了一个参数,这些标准就被重新评估为具有交叉依赖关系的参数。基于反向过滤器的神经网络修剪中最敏感的方面是估计层参数的重要性。
图1B示出了根据一个实施例的由移除神经网络的第三层的特定神经元导致的损失函数变化的图。每个神经元对损失变化的贡献范围从微负到正。因此有一些神经元,当被移除时会降低成本函数。如图1B所示,其移除导致损失减少的神经元在x轴以下。许多神经元可具有接近于零的贡献,并且可以考虑被移除。少量的神经元在移除时会产生大大增加的损失。
图1C示出了根据一个实施例的由移除神经网络的第八层的特定神经元导致的损失函数变化的另一图。类似于图1B所示的图,一些神经元在被移除时具有负面贡献,大多数神经元具有接近于零的贡献,并且少量神经元在被移除时产生大大增加的损失。总而言之,神经网络的每层通常具有少量的神经元,其在被移除时导致损失的显著增加。每层通常也具有较少有价值的神经元。因此,修剪应该覆盖所有层,而不是专注于特定层。
图1D示出了根据一个实施例的从神经网络移除神经元的示意图。特定层的神经元(或特征图)被表示为圆形,并且神经元之间的连接的每一个与权重相关联。精细修剪后,神经元(或特征图)之间的连接被移除。例如,对应于小权重值的连接可以被移除。然而,为了加速处理,当层的权重稀疏(sparse)时可能需要重新分配处理的特殊电路。在粗修剪中,整个神经元(或特征图)被移除。如图1D所示,在粗修剪期间图案化的神经元被移除。当神经元被移除时,来自和去往神经元的所有连接被移除。
为了避免解决需要对成本函数进行2|w|评估的组合问题,修剪可以表示为尝试找到具有有限数量的非零元素的W′的优化问题,其最小化|ΔC(hi)|=|C(W′)-C(W)|。可以使用泰勒展开来解决优化问题。损失函数的变化可以近似以用于移除特定参数。让hi作为参数i产生的输出。在特征图的情况下,为了记数方便,成本函数被认为同样依赖于参数和从参数计算的输出:C(hi)=C((w,b)i)。假设参数的独立性:
|ΔC(hi)|=|C(D,hi=0)-C(D,hi)|, (3)
其中C(D,hi=0)是当层参数hi被修剪时的成本值,并且当不修剪层参数hi时,C(D,hi)是成本值。虽然参数实际上是相互依赖的,但是在一阶训练技术期间,在每个梯度计算步骤处已经进行了独立性假定。
为了近似ΔC(hi),使用一级泰勒多项式。对于函数f(x),点x=a处的泰勒展开为:
其中f(p)(a)是在点a处评估的f的p阶导数,并且Rp(x)是p阶余数。用一阶泰勒多项式在hi=0附近近似训练数据集D的C(D,hi=0)产生:
余数R1(hi=0)可以通过拉格朗日形式计算:
其中ξ是0和hi之间的实数。用于修剪的第一标准是C(D,hi=0)的近似,其中余数R1(hi=0)被忽略(即设置为零),导致计算:
通过将等式(5)代入等式(3)并忽略余数,用于从神经网络移除特定层参数的成本值之间的差ΔC(hi)可以被最小化。近似值用于计算第一标准ΘTE:
重要的是,一阶梯度是针对训练期间反向传播的链式法则中的每个层参数计算的一阶导数,并且可以存储以用于第一标准计算。第一标准修剪了参数,其具有成本函数关于(w.r.t.)特征图hi的几乎平坦的一阶梯度。层参数hi和成本函数C关于层参数hi的一阶梯度的乘积ΘTE:针对多变量输出(诸如特征图)由以下等式计算,
其中M是矢量化特征图的长度。对于具有T>1的小批量(minibatch)示例,针对每个示例分别计算第一标准并在T上平均。第一标准值的比例以网络中的层为单位随着深度而变化。因此,计算分层(layer-wise)l2—归一化(normalization),以跨越层来重新调节第一标准:
跨层调节(scale)标准对于修剪来说非常重要。如果标准没有恰当地调节,则需要为每层选择手动调整的乘数。没有归一化,传统的权重量级标准倾向于将特征图从比最后层更重要的第一层进行排序;传统的激活标准使中层更为重要;并且第一标准技术将第一层排序为更高。在l2归一化之后,每层都有一些非常重要的特征图,其他的不重要。
传统的修剪技术依赖于使用泰勒展开,使用二阶泰勒多项式代替一阶泰勒多项式。二阶展开包括一阶梯度和二阶梯度:
另外,与传统的修剪技术相比,等式8所示的对于成本函数C和隐层参数h的泰勒展开的一阶项的处理是不同的。在充分的训练时期之后,一阶梯度项趋于零:并且E(y)=0。在面值方面,y提供了少许有用的信息。因此,传统的修剪技术将y视为等于零,而是关注于包括二阶梯度的二阶项。具体来说,传统的修剪技术假设y=0,并且余数R2(hi=0)也为零,导致成本函数的变化:
重要的是,y的方差是非零,并且与本地函数关于层参数h的稳定性相关。一阶项的绝对值|y|指示由修剪引起的成本的绝对变化,并且用于计算第一标准和第二标准,而不是假设为零(如等式12所示)。假设样本来自独立且相同的分布其中σ是y的标准偏差,称为半正态分布的期望值。所以,当y趋于零时,|y|的期望值与y的方差成比例,这是一个在经验上更具信息性的作为修剪标准的值。作为附加益处,避免了二阶泰勒展开项的计算,或简化(例如,Hessian矩阵的对角线)。部分或全部计算Hessian矩阵比计算第一或第二标准增加内存消耗和计算需求。
图2A示出了根据一个实施例的训练数据集D的成本函数C和参数h的图。如图所示,层参数h1和h2的一阶梯度几乎相等,但h1的一阶梯度为正,而h1的一阶梯度为负。当使用传统技术时,一阶梯度彼此抵消(即,总和近似为零)。相比之下,当使用采用每个乘积的绝对值的第一标准时,一阶梯度不会彼此抵消。是训练数据集中的一组值的参数h的数学期望值。
是当h采用期望值时位置处的成本函数的值。示出了参数h的可能值和成本函数相对于h的值的一阶梯度之间的乘积的偏差。
在另一个实施例中,可以使用第二标准来代替第一标准。第二标准是通过对输入通道和卷积核维度上的由对应于层参数的一阶梯度测量(scale)的层参数的平方求和来计算的。更具体地说,第二标准是基于参数i的层输入参数Wi∈RM,X,Y,其中M是特征图的输入通道的数量。X和Y是卷积核的大小。第二标准ΘSS是平方和:
类似于第一标准,第二标准也基于一阶梯度来计算。一阶梯度是在训练期间针对每个层参数计算的一阶导数,并且可以存储以用于第二标准计算。
图2B示出了根据一个实施例的神经网络修剪系统250的框图。神经网络修剪系统250可以被配置为执行图1A所示的步骤。神经网络修剪系统250包括经训练的神经网络225和包括输入数据215和目标输出数据255的训练数据集,当输入数据215被应用时,目标输出数据255应由经训练的神经网络225生成。在一个实施例中,经训练的神经网络225使用第一数据集进行训练,所述第一数据集在使用包括输入数据215的训练数据集训练之前是通用的并且是特定的。在一个实施例中,经训练的神经网络225是卷积神经网络。
在修剪期间,经训练的神经网络225处理输入数据215并生成预测数据135(即,输出数据)。成本函数梯度计算单元245接收预测数据235和目标输出数据255,并计算成本值C相对于从经训练的神经网络225的参数i产生的层输入参数hi的一阶梯度δC/δhi.。在一个实施例中,在粗修剪期间,用于层参数的梯度的绝对值被最小化。
一阶梯度被输出到修剪标准计算单元260,其基于梯度计算经训练的神经网络125的每个层参数的修剪标准。在一个实施例中,使用第一标准来计算层参数的修剪标准ΘTE(hi)为在另一个实施例中,使用第二标准计算层参数的修剪标准ΘSS(Wi)。修剪标准被表示为提供给神经元移除单元265的重要性值。神经元移除单元265向经训练的神经网络225指示应从经训练的神经网络225中移除的一个或更多个神经元。
神经元的修剪可以被实现为禁用一些神经元的输出的逻辑门。例如,当g向量化:W′=gW时,修剪门可以是确定在前馈传播期间是否包括或修剪特定特征图的开关。在一个实施例中,每个修剪门确定在前馈传播期间是否使用特定神经元的输出,使得每个神经元的输出为:
图2C示出了根据一个实施例的用于神经网络修剪的另一方法的流程图200。虽然在神经网络修剪系统250的上下文中描述了方法200,但是方法100也可以由程序、定制电路或者通过定制电路和程序的组合来执行。例如,方法200可以由GPU、CPU、神经网络或能够实现神经网络的任何处理器执行。此外,本领域普通技术人员将理解,执行方法200的任何系统都在本发明的实施例的范围和精神内。
流程图200包括图1A的步骤110、120、130和140。在步骤210,使用传统技术对修剪过的神经网络进行微调。微调涉及优化网络参数以最小化给定数据集的成本函数。在步骤220,确定修剪是否应该继续。如果修剪将继续,则神经网络修剪系统250返回到步骤120。否则,修剪完成。当阈值数量的神经元被移除时,修剪可以被认为完成。在一个实施例中,对应于单个特征图的神经元在每次迭代期间被修剪,允许微调和重新评估标准以解释(accountfor)参数之间的依赖性。一旦修剪完成,神经网络的参数和修剪门是固定的。此外,对应于零值修剪门的参数可以从神经网络中移除。
应用修剪的主要原因之一是减少网络中的操作数量。来自不同层的特征图由于输入特征图和卷积核的数量和大小而需要不同的计算量。为了考虑到每秒浮点运算(FLOP),引进规则化(regularization):
其中λ控制规则化的量。假设卷积被实现为滑动窗口,λ=10-3可用于计算Θflops。在一个实施例中,在修剪期间应用FLOP规则化,以首先用更高FLOP修剪神经元。例如,用于示例性神经网络的每个层的每个卷积神经元的FLOP可以是:
Θflops=[3.1,57.8,14.1,28.9,7.0,14.5,14.5,3.5,7.2,7.2,1.8,1.8,1.8,1.8]可以应用其他规则化条件,例如,存储大小、核大小或内存占用,以基于其他条件修剪神经元。
为了计算FLOP的数量,假定卷积被实现为滑动窗口,并且免于计算非线性函数。对于卷积核:
FLOPs=2HW(CinK2+1)Cout,
其中H,W和Cin分别是输入特征图的高度、宽度和通道数。K是核宽度(假设为对称),Cout是输出通道的数量。
对于完全连接的层,FLOP计算为:
FLOPs=(2I-1)O,
其中I是输入维度,O是输出维度。
总而言之,经训练的神经网络可以使用每个基于成本函数关于层参数hi的一阶梯度计算的第一标准或第二标准来迭代地修剪。根据第一或第二标准移除最不重要的层参数。FLOP标准化可以应用于计算重要性,并用更高的计算工作负载修剪较不重要的神经元。与FLOP类似,可以基于其他条件应用其他资源的规则化(例如,存储器大小、带宽等)以计算重要性。
并行处理架构
图3示出了根据一个实施例的并行处理单元(PPU)300。PPU 300可以被配置为在执行指令时实现神经网络修剪。在一个实施例中,PPU 300被配置为实现神经网络修剪系统250。
在一个实施例中,PPU 300是在一个或更多个集成电路设备上实现的多线程处理器。PPU 300是设计用于并行处理许多线程的潜伏隐藏架构。线程(即,执行线程)是配置为由PPU 300执行的指令集的例示。在一个实施例中,PPU 300是图形处理单元(GPU),其被配置为实现用于处理三维(3D)图形数据以便生成用于在显示设备(诸如液晶显示器(LCD)设备)上显示的二维(2D)图像数据的图形渲染管线。在其他实施例中,PPU 300可用于执行通用计算。虽然为了说明的目的在本文中提供了一个示例性的并行处理器,但是应该强调注意,这样的处理器仅用于说明目的而阐述,并且可以使用任何处理器来补充和/或替代该处理器。
如图3所示,PPU 300包括输入/输出(I/O)单元305、主机接口单元310、前端单元315、调度器单元320、工作分配单元325、集线器330、交叉开关(Xbar)370、一个或更多个通用处理集群(GPC)350以及一个或更多个分区单元380。PPU 300可以经由系统总线302连接到主处理器或其他外围设备。PPU 300还可以连接到包括多个存储设备304的本地存储器。在一个实施例中,本地存储器可以包括多个动态随机存取存储器(DRAM)设备。
I/O单元305被配置为通过系统总线302从主机处理器(未示出)发送和接收通信(即,命令、数据等)。I/O单元305可以经由系统总线302或通过一个或更多个中间设备(诸如内存桥)直接与主机处理器通信。在一个实施例中,I/O单元305实现用于通过PCIe总线通信的外围部件高速互连(PCIe)接口。在替代实施例中,I/O单元305可以实现用于与外部设备进行通信的其他类型的已知接口。
I/O单元305耦合到主机接口单元310,其解码经由系统总线302接收的数据包。在一个实施例中,数据包表示被配置为使PPU 300执行各种操作的命令。主机接口单元310将解码的命令发送到PPU 300的多个其他单元,如命令所指定的。例如,一些命令可以被发送到前端单元315。其他命令可以被发送到集线器330或PPU 300的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确显示)。换句话说,主机接口单元310被配置为在PPU 300的各个逻辑单元之间路由通信。
在一个实施例中,由主机处理器执行的程序编码缓冲区中的命令流,其向PPU 300提供用于处理的工作负载。工作负载可以包括若干指令和要由这些指令处理的数据。缓冲区是存储器中可由主机处理器和PPU 300两者访问(即,读/写)的区域。例如,主机接口单元310可以被配置为经由I/O单元305在系统总线302上发送的存储器请求来访问连接到系统总线302的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然后将指向命令流的起点的指针发送到PPU 300。主机接口单元310给前端单元315提供指向一个或更多个命令流的指针。前端单元315管理一个或更多个流,从流中读取命令并将命令转发到PPU 300的各个单元。
前端单元315耦合到调度器单元320,其将多个GPC 350配置为处理由一个或更多个流定义的任务。调度器单元320被配置为跟踪与由调度器单元320管理的多个任务相关的状态信息。该状态可以指示任务被分配给哪个GPC 350、该任务是活动还是非活动、与该任务相关联的优先级级别等等。调度器单元320管理一个或更多个GPC 350上的多个任务的执行。
调度器单元320被耦合到工作分配单元325,其被配置为分派任务用于在GPC 350上执行。工作分配单元325可以跟踪从调度器单元320接收的多个被调度的任务。在一个实施例中,工作分配单元325管理每个GPC 350的挂起(pending)任务池和活动任务池。挂起任务池可以包括多个slot(槽)(例如,32个slot),其包含分配为由特定GPC处理的任务。活动任务池可以包括用于由GPC 350正在主动处理的任务的多个slot(例如,4个slot)。随着GPC350完成任务的执行,该任务从GPC 350的活动任务池中被逐出,以及选择并调度来自挂起任务池的其他任务之一用于在GPC 350上执行。如果活动任务在GPC 350上处于空闲状态,例如在等待数据依赖性被解决时,那么活动任务可以从GPC 350逐出并返回到挂起任务池,而挂起任务池中的另一任务被选择并调度用于在GPC 350上执行。
工作分配单元325经由XBar 370与一个或更多个GPC 350通信。XBar 370是将PPU300的许多单元耦合到PPU 300的其他单元的互连网络。例如,XBar 370可以被配置为将工作分配单元325耦合到特定GPC 350。尽管未明确示出,PPU 300的一个或更多个其他单元被耦合到主机接口单元310。其他单元也可以经由集线器330连接到XBar 370。
任务由调度器单元320管理,并由工作分配单元325分派到GPC 350。GPC 350被配置为处理任务并生成结果。该结果可以由GPC 350内的其他任务消耗,经由XBar 370路由到不同的GPC 350,或存储在存储器304中。该结果可以经由分区单元380写入存储器304,其实现用于从存储器304读取数据和向存储器304写入数据的存储器接口。在一个实施例中,PPU300包括数量为U的分区单元380,其等于耦合到PPU 300的独立且不同的存储设备304的数量。分区单元380将在下面结合图4B更详细地描述。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱动器内核,其使得在主机处理器上执行的一个或更多个应用程序能够调度操作以用于在PPU 300上执行。应用程序可以生成指令(即API调用),其导致驱动器内核生成一个或更多个任务用于由PPU 300执行。驱动器内核向由PPU300处理的一个或更多个流输出任务。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。线程块可以指包括执行任务的指令的多个线程组。同一线程组中的线程可以通过共享内存交换数据。在一个实施例中,线程组包括32个相关线程。
图4A示出了根据一个实施例的图3的PPU 300内的GPC 350。如图4A所示,每个GPC350包括用于处理任务的多个硬件单元。在一个实施例中,每个GPC 350包括管线管理器410、预光栅操作单元(PROP)415、光栅引擎425、工作分配交叉开关(WDX)480、存储器管理单元(MMU)490以及一个或更多个纹理处理集群(TPC)420。应当理解,图4A的GPC 350可以包括代替图4A所示的单元或除了图4A所示的单元之外的其他硬件单元。
在一个实施例中,GPC 350的操作由管线管理器410控制。管线管理器410管理用于处理分配给GPC 350的任务的一个或更多个TPC 420的配置。在一个实施例中,管线管理器410可以将一个或更多个TPC 420中的至少一个配置为实现图形渲染管线的至少一部分。例如,TPC 420可以被配置为在可编程流多处理器(SM)440上执行顶点着色器程序。管线管理器410还可以被配置为将从工作分配单元325接收到的数据包路由到GPC 350内适当的逻辑单元。例如,一些数据包可以被路由到PROP 415和/或光栅引擎425中的固定功能硬件单元,而其他数据包可以被路由到TPC 420以供基元(primitive)引擎435或SM 440处理。
PROP单元415被配置为将由光栅引擎425和TPC 420生成的数据路由到在下面更详细地描述的分区单元380中的光栅操作(ROP)单元。PROP单元415还可以被配置为执行用于颜色混合、组织像素数据、执行地址转译等的优化。
光栅引擎425包括被配置为执行各种光栅操作的多个固定功能硬件单元。在一个实施例中,光栅引擎425包括设置引擎、粗调光栅引擎、剔除(culling)引擎、裁剪引擎、精细光栅引擎和瓦片合并(tile coalescing)引擎。设置引擎接收变换的顶点并生成与由顶点定义的几何基元相关联的平面方程。平面方程被传送到粗调光栅引擎以生成用于基元的覆盖信息(例如,用于瓦片的x、y覆盖掩码)。粗调光栅引擎的输出可以被发送到剔除引擎,其中与z测试失败的基元相关联的片段被剔除,并被发送到裁剪引擎,其中位于视椎体之外的片段被裁剪掉。在裁剪和剔除中存留下来的那些片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程生成像素片段的属性。光栅引擎425的输出包括要由例如在TPC420内实现的片段着色器处理的片段。
包括在GPC 350中的每个TPC 420包括M管线控制器(MPC)430、基元引擎435、一个或更多个SM 440以及一个或更多个纹理单元445。MPC 430控制TPC 420的操作,将从管线管理器410接收到的数据包路由到TPC 420中的适当单元。例如,与顶点相关联的数据包可以被路由到基元引擎435,其被配置为从存储器304获取与顶点相关联的顶点属性。相反,与着色器程序相关联的数据包可以被发送到SM 440。
在一个实施例中,纹理单元445被配置为从存储器304加载纹理图(例如,纹理的2D阵列)并对纹理图进行采样以产生经采样的纹理值,用于在由SM 440执行的着色器程序中使用。纹理单元445实现纹理操作,诸如使用mip图的过滤操作(即,细节级别不同的纹理图)。纹理单元445还用作SM 440至MMU 490的加载/存储路径。在一个实施例中,每个TPC420包括两个(2)纹理单元445。
SM 440包括被配置为处理由多个线程表示的任务的可编程流处理器。每个SM 440是多线程的并且被配置为同时执行来自特定线程组的多个线程(例如,32个线程)。在一个实施例中,SM 440实现SIMD(单指令、多数据)架构,其中线程组(即,线程束)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,SM 440实现SIMT(单指令、多线程)架构,其中线程组中的每个线程被配置为基于相同的指令集来处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许分歧。换句话说,当线程组的指令被分派以执行时,线程组中的一些线程可以是活动的,从而执行该指令,而线程组中的其他线程可以是非活动的,从而执行无操作(NOP)而不是执行指令。下面结合图5更详细地描述SM 440。
MMU 490提供GPC 350和分区单元380之间的接口。MMU 490可以提供虚拟地址到物理地址的转译、存储器保护和存储器请求的仲裁。在一个实施例中,MMU 490提供用于执行虚拟地址到存储器304中的物理地址的转译的一个或更多个转译后备缓冲器(TLB)。
图4B示出了根据一个实施例的图3的PPU 300的存储器分区单元380。如图4B所示,存储器分区单元380包括光栅操作(ROP)单元450、二级(L2)高速缓存460、存储器接口470和L2交叉开关(XBar)465。存储器接口470被耦合到存储器304。存储器接口470可以实现用于高速数据传输的16、32、64、128位数据总线等。在一个实施例中,PPU 300包含U个存储器接口470,每个分区单元380一个存储器接口470,其中每个分区单元380连接到相应的存储器设备304。例如,PPU 300可以连接到多达U个存储器设备304,诸如图形双数据速率、版本5、同步动态随机存取存储器(GDDR5 SDRAM)。在一个实施例中,存储器接口470实现DRAM接口,U等于8。
在一个实施例中,PPU 300实现多级存储层级。存储器304位于耦合到PPU 300的SDRAM的芯片外。来自存储器304的数据可以被获取并存储在L2高速缓存460中,高速缓存460位于芯片上并在多个GPC 350之间共享。如图所示,每个分区单元380包括与相应的存储器设备304相关联的L2高速缓存460的一部分。然后可以在GPC 350内的多个单元中实现较低级别的高速缓存。例如,SM 440中的每一个可以实现一级(L1)高速缓存。L1高速缓存是专用于特定SM 440的专用存储器。来自L2高速缓存460的数据可以被获取并存储在每个L1高速缓存中,以在SM 440的功能单元中进行处理。L2高速缓存460被耦合到存储器接口470和XBar 370。
ROP单元450包括ROP管理器455、颜色ROP(CROP)单元452和Z ROP(ZROP)单元454。CROP单元452执行与像素颜色相关的光栅操作,诸如颜色压缩、像素混合等。ZROP单元454结合光栅引擎425实现深度测试。ZROP单元454从光栅引擎425的剔除引擎接收与像素片段相关联的样本位置的深度。ZROP单元454针对与片段相关联的样本位置的深度缓冲区中的相应深度进行深度测试。如果片段通过样本位置的深度测试,则ZROP单元454更新深度缓冲区并将深度测试的结果发送到光栅引擎425。ROP管理器455控制ROP单元450的操作。应当理解,分区单元380的数量可以不同于GPC 350的数量,因此,每个ROP单元450可以耦合到每个GPC 350。因此,ROP管理器455跟踪从不同GPC 350接收的数据包并确定由ROP单元450生成的结果被路由到哪个GPC 350。CROP单元452和ZROP单元454经由L2 XBar465耦合到L2高速缓存460。
图5示出了根据一个实施例的图4A的流多处理器440。如图5所示,SM440包括指令高速缓存505、一个或更多个调度器单元510、寄存器文件520、一个或更多个处理核心550、一个或更多个特殊功能单元(SFU)552、一个或更多个加载/存储单元(LSU)554、互连网络580、共享存储器/L1高速缓存570。在一个实施例中,图1B所示的指令高速缓存105、加载/存储单元154和寄存器文件115分别是指令高速缓存505、加载/存储单元(LSU)554和寄存器文件520。
如上所述,工作分配单元325分派任务用于在PPU 300的GPC 350上执行。任务被分配给GPC 350内的特定TPC 420,并且如果任务与着色器程序相关联,则该任务可以被分配给SM 440。调度器单元510从工作分配单元325接收任务并且管理为一个或更多个线程组(即,线程粒度)调度的被分配给SM 440的指令。调度器单元510调度线程,用于在并行线程组中执行,其中每个组称为线程束(warp)。在一个实施例中,每个线程束包括32个线程。调度器单元510可以管理多个不同的线程束,调度线程束用于执行,然后在每个时钟周期期间将来自多个不同的线程束的指令分派给多个功能单元(即,核心550、SFU 552和LSU 554)。
每个分派单元515被配置为向一个或更多个功能单元发送指令。在图5所示的实施例中,调度器单元510包括两个分派单元515,其使得能够在每个时钟周期期间分派来自相同线程束的两个不同指令。在替代实施例中,每个调度器单元510可以包括单个分派单元515或附加分派单元515。
每个SM 440包括寄存器文件520,其为SM 440的功能单元提供一组寄存器。在一个实施例中,寄存器文件520在每个功能单元之间划分,使得每个功能单元被分配寄存器文件520的专用部分。在另一个实施例中,寄存器文件520在由SM 440执行的不同线程束之间划分。寄存器文件520为连接到功能单元的数据路径的操作对象提供临时存储。
每个SM 440包括L个处理核心550。在一个实施例中,SM 440包括大量(例如128等)不同的处理核心550。每个核心550可以包括完全管线化的单精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。核心550还可以包括双精度处理单元,其包括浮点运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE 754-2008标准。每个SM 440还包括执行特殊功能(例如,属性评估、倒数平方根等)的M个SFU 552以及在共享存储器/L1高速缓存570和寄存器文件520之间实现加载和存储操作的N个LSU 554。在一个实施例中,SM 440包括128个核心550、32个SFU 552和32个LSU 554。
每个SM 440包括互连网络580,其将每个功能单元连接到寄存器文件520以及将LSU 554连接到寄存器文件520、共享存储器/L1高速缓存570。在一个实施例中,互连网络580是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件520中的任何寄存器,并将LSU 554连接到共享存储器/L1高速缓存570中的寄存器文件和存储器位置。
共享存储器/L1高速缓存570是允许在SM 440和基元引擎435之间以及SM 440中的线程之间进行数据存储和通信的片上存储器阵列。在一个实施例中,共享存储器/L1高速缓存570包括64KB的存储容量,并且在从SM 440到分区单元380的路径中。共享存储器/L1高速缓存570可以用于高速缓存读取和写入。在一个实施例中,共享存储器/L1高速缓存570包括检查电路170,以执行加载操作的内联数据检查。在一个实施例中,至少一个检查电路170位于共享存储器/L1高速缓存570和LSU 554之间。
上述PPU 300可被配置为执行比传统CPU快得多的高度并行计算。并行计算在图形处理、数据压缩、神经网络、深度学习、生物识别、流处理算法等方面具有优势。
当被配置用于通用并行计算时,可以使用更简单的配置。在这个模型中,如图3所示,固定功能图形处理单元被略去,创建了更简单的编程模型。在该配置中,工作分配单元325将线程块直接选派并分配给TPC 420。块中的线程执行相同的程序,在计算中使用唯一的线程ID来确保每个线程生成唯一的结果,使用SM 440执行程序并执行计算,使用共享存储器/L1高速缓存570在线程之间通信,并且使用LSU 554通过分区共享存储器/L1高速缓存570和分区单元380读写全局存储器。当被配置用于通用并行计算时,SM 440还可以编写调度器单元320用于在TPC 420上启动新工作的命令。
在一个实施例中,PPU 300包括深度学习或机器学习的处理器。PPU 300被配置为接收根据神经网络指定用于建模神经网络和处理数据的程序的命令。
在一个实施例中,PPU 300包括图形处理单元(GPU)。PPU 300被配置为接收指定着色器程序用于处理图形数据的命令。图形数据可以被定义为一组基元,诸如点、线、三角形、四边形、三角形带等。典型地,基元包括指定基元的顶点数(例如,在模型—空间坐标系中)的数据以及与基元的每个顶点相关联的属性。PPU 300可以被配置为处理图形基元以生成帧缓冲(即,用于显示器的每个像素的像素数据)。
应用程序将用于场景的模型数据(即,顶点和属性的集合)写入存储器(诸如系统存储器或存储器304)。模型数据定义在显示器上可见的每个对象。然后,应用程序对驱动器内核进行API调用,其请求模型数据被渲染和显示。驱动器内核读取模型数据并将命令写入一个或更多个流以执行处理模型数据的操作。该命令可以引用要在PPU 300的SM 440上实现的不同着色器程序,包括顶点着色器、外壳着色器、域着色器、几何着色器和像素着色器中的一个或更多个。例如,SM 440中的一个或更多个可以被配置为执行顶点着色器程序,其处理由模型数据定义的多个顶点。在一个实施例中,不同的SM 440可以被配置为同时执行不同的着色器程序。例如,SM 440的第一子集可以被配置为执行顶点着色器程序,而SM 440的第二子集可被配置为执行像素着色器程序。SM 440的第一子集处理顶点数据以产生经处理的顶点数据,并将经处理的顶点数据写入L2高速缓存460和/或存储器304。在经处理的顶点数据被光栅化之后(即,从三维数据变换为屏幕空间中的二维数据)以产生片段数据,SM440的第二子集执行像素着色器以产生经处理的片段数据,然后将其与其他经处理的片段数据混合并写入存储器304中的帧缓冲区。顶点着色器程序和像素着色器程序可以同时执行,以管线方式处理来自相同场景的不同数据,直到场景的所有模型数据已经渲染至帧缓冲区。然后,将帧缓冲区的内容发送到显示控制器,以在显示装置上显示。
PPU 300可以包括在台式计算机、膝上型计算机、平板计算机、智能电话(例如,无线手持设备)、个人数字助理(PDA)、数码相机、手持电子装置等。在一个实施例中,PPU 300被包含在单个半导体衬底上。在另一实施例中,PPU 300与一个或更多个其他逻辑单元(诸如精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数模转换器(DAC)等)一起被包括在片上系统(SoC)中。
在一个实施例中,PPU 300可以包括在图形卡上,其包括一个或更多个存储器设备304(诸如GDDR5SDRAM)。图形卡可以被配置为与台式计算机的主板上的PCIe插槽接口,所述主板包括例如北桥芯片集和南桥芯片集。在又一实施例中,PPU 300可以是包括在主板的芯片集(即,北桥)中的集成图形处理单元(iGPU)。
可以在PPU 300内执行各种程序,以便实现神经网络的各个层。例如,设备驱动器可以在PPU 300上启动内核以在一个SM 440(或多个SM 440)上实现神经网络。设备驱动器(或由PPU 300执行的初始内核)也可以启动PPU 300上的其他内核来执行神经网络的其他层。另外,神经网络的一些层可以在PPU 300内实现的固定单元硬件上实现。应当理解,一个内核的结果在由SM 440上后续的内核处理之前可以由一个或更多个中间固定功能的硬件单元处理。
示例性系统
图6示出了示例性系统600,其中可以实现各种先前实施例的各种架构和/或功能。示例性系统600可以被配置为实现神经网络修剪。
如图所示,提供系统600,其包括连接到通信总线602的至少一个中央处理器601。通信总线602可以使用任何合适的协议来实现,诸如PCI(外围组件互连)、快速PCI、AGP(加速图形端口)、超传输或任何其他总线或点到点通信协议。在一个实施例中,通信总线602是图3所示的系统总线302。系统600还包括主存储器604。控制逻辑(软件)和数据被存储在主存储器604中,其可采用随机存取存储器(RAM)形式。
系统600还包括输入设备612、图形处理器606和显示器608,即传统CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子体显示器等。可以从输入设备612(例如键盘、鼠标、触摸板、麦克风等)接收用户输入。在一个实施例中,图形处理器606可以包括多个着色器模块、光栅化模块等。上述模块中的每一个甚至可以位于单一半导体平台上以形成图形处理单元(GPU)。
在本说明书中,单个半导体平台可以指单独统一的基于半导体的集成电路或芯片。应当注意,术语单个半导体平台还可以指具有仿真片上操作的增强连通性并且对利用传统的中央处理单元(CPU)和总线实现进行了实质性的改善的多芯片模块。当然,各个模块也可以根据用户的需求单独地或以各种组合来位于半导体平台中。
系统600还可以包括辅助存储610。辅助存储610包括例如硬盘驱动器和/或可移除存储驱动器,表示软盘驱动器、磁带驱动器、压缩盘驱动器、数字通用盘(DVD)驱动器、录音设备、通用串行总线(USB)、闪存。可移除存储驱动器以公知的方式读取和/或写入可移除存储单元。
计算机程序或计算机控制逻辑算法可以存储在主存储器604和/或辅助存储610中。这样的计算机程序在执行时使得系统600能够执行各种功能。存储器604、存储610和/或任何其他存储是计算机可读介质的可能示例。
在一个实施例中,各种先前的图的架构和/或功能可以在中央处理器601、图形处理器606、能够实现中央处理器601和图形处理器606的至少部分能力的集成电路(未示出)、芯片集(即,被设计为作为用于执行相关功能的单元工作和销售的集成电路组等)和/或任何用于这点的其他集成电路的上下文中实现。
然而,各种先前的图的架构和/或功能可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏机系统、应用特定系统和/或任何其他所需系统的上下文中实现。例如,系统600可以采取无人驾驶汽车、台式计算机、膝上型计算机、服务器、工作站、游戏机、嵌入式系统和/或任何其他类型的逻辑的形式。然而,系统600可以采取各种其他设备的形式,包括但不限于个人数字助理(PDA)设备、移动电话设备、头戴式显示器,电视机等。
此外,虽然未示出,但是系统600可以出于通信目的耦合到网络(例如,电信网络、局域网(LAN)、无线网络、广域网(WAN)(诸如因特网)、对等网络、有线网络等)。
虽然上面已经描述了各种实施例,但是应当理解,它们仅仅是作为示例呈现的,而不是限制性的。因此,优选实施例的宽度和范围不应受上述示例性实施例中的任何一个的限制,而应仅根据所附权利要求及其等同物来限定。
Claims (20)
1.一种神经网络修剪系统,包括:
处理器,配置为:
接收用于经训练的神经网络的成本函数关于层参数的一阶梯度;
基于与所述层参数相对应的所述一阶梯度计算每个层参数的修剪标准,其中所述修剪标准指示包括在所述经训练的神经网络中并与所述层参数相关联的每个神经元的重要性;
识别具有最低重要性的至少一个神经元;以及
从所述经训练的神经网络中移除所述至少一个神经元以产生经修剪的神经网络。
2.根据权利要求1所述的神经网络修剪系统,其中所述经训练的神经网络是使用第一数据集训练的,所述第一数据集在使用特定的第二数据集训练之前是通用的。
3.根据权利要求2所述的神经网络修剪系统,其中在使用所述第二数据集训练所述经训练的神经网络的同时计算所述一阶梯度。
4.根据权利要求1所述的神经网络修剪系统,其中所述经训练的神经网络是卷积神经网络。
5.根据权利要求1所述的神经网络修剪系统,其中计算每个层参数的所述修剪标准包括采用由与所述层参数相对应的所述一阶梯度测量的所述层参数的绝对值。
6.根据权利要求1所述的神经网络修剪系统,其中计算每个层参数的所述修剪标准包括在输入通道和卷积核的维度上对由与所述层参数相对应的所述一阶梯度测量的所述层参数的平方进行求和。
7.根据权利要求1所述的神经网络修剪系统,其中所述层参数是激活。
8.根据权利要求1所述的神经网络修剪系统,其中所述层参数是权重。
9.根据权利要求1所述的神经网络修剪系统,其中所述处理器还被配置为对所述经修剪的神经网络执行微调。
10.根据权利要求1所述的神经网络修剪系统,其中所述至少一个神经元包括具有低于阈值的重要性的神经元。
11.根据权利要求1所述的神经网络修剪系统,其中所述至少一个神经元包括所述经训练的神经网络中的所有神经元的预定百分比。
12.一种计算机实现的方法,包括:
接收用于经训练的神经网络的成本函数相对层参数的一阶梯度;
基于与所述层参数相对应的所述一阶梯度计算每个层参数的修剪标准,其中所述修剪标准指示包括在所述经训练的神经网络中并与所述层参数相关联的每个神经元的重要性;
识别具有最低重要性的至少一个神经元;以及
从所述经训练的神经网络中移除所述至少一个神经元以产生经修剪的神经网络。
13.根据权利要求12所述的计算机实现的方法,其中所述经训练的神经网络是使用第一数据集训练的,所述第一数据集在使用特定的第二数据集训练之前是通用的。
14.根据权利要求13所述的计算机实现的方法,其中在使用所述第二数据集训练所述经训练的神经网络的同时计算所述一阶梯度。
15.根据权利要求12所述的计算机实现的方法,其中所述经训练的神经网络是卷积神经网络。
16.根据权利要求12所述的计算机实现的方法,其中计算每个层参数的所述修剪标准包括采用由与所述层参数相对应的所述一阶梯度测量的所述层参数的绝对值。
17.根据权利要求12所述的计算机实现的方法,其中计算每个层参数的所述修剪标准包括在输入通道和卷积核的维度上对由与所述层参数相对应的所述一阶梯度测量的所述层参数的平方进行求和。
18.根据权利要求12所述的计算机实现的方法,其中所述层参数是激活。
19.根据权利要求12所述的计算机实现的方法,其中所述层参数是权重。
20.一种非暂时性计算机可读存储介质,其存储指令,当所述指令由处理器执行时,使所述处理器执行步骤,包括:
接收用于经训练的神经网络的成本函数相对层参数的一阶梯度;
基于与所述层参数相对应的所述一阶梯度计算每个层参数的修剪标准,其中所述修剪标准指示包括在所述经训练的神经网络中并与所述层参数相关联的每个神经元的重要性;
识别具有最低重要性的至少一个神经元;以及
从所述经训练的神经网络中移除所述至少一个神经元以产生经修剪的神经网络。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662411488P | 2016-10-21 | 2016-10-21 | |
US62/411,488 | 2016-10-21 | ||
US15/786,406 US11315018B2 (en) | 2016-10-21 | 2017-10-17 | Systems and methods for pruning neural networks for resource efficient inference |
US15/786,406 | 2017-10-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107977703A true CN107977703A (zh) | 2018-05-01 |
Family
ID=61971076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710994309.0A Pending CN107977703A (zh) | 2016-10-21 | 2017-10-23 | 用于修剪神经网络以实现资源有效推理的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107977703A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109343978A (zh) * | 2018-09-27 | 2019-02-15 | 郑州云海信息技术有限公司 | 一种深度学习分布式框架用的数据交换方法与装置 |
CN109766993A (zh) * | 2018-12-13 | 2019-05-17 | 浙江大学 | 一种适合硬件的卷积神经网络压缩方法 |
CN109978144A (zh) * | 2019-03-29 | 2019-07-05 | 联想(北京)有限公司 | 一种模型压缩方法和系统 |
CN110446173A (zh) * | 2019-07-31 | 2019-11-12 | 中国地质大学(武汉) | 一种高效节能的星载无线传感网数据压缩方法 |
CN110472736A (zh) * | 2019-08-26 | 2019-11-19 | 联想(北京)有限公司 | 一种裁剪神经网络模型的方法和电子设备 |
CN110647990A (zh) * | 2019-09-18 | 2020-01-03 | 无锡信捷电气股份有限公司 | 基于灰色关联分析的深度卷积神经网络模型的裁剪方法 |
CN111210016A (zh) * | 2018-11-21 | 2020-05-29 | 辉达公司 | 对包含元素级别操作的神经网络进行剪枝 |
CN112534445A (zh) * | 2018-07-20 | 2021-03-19 | 意大利电信股份公司 | 具有数量被减少的参数的神经网络 |
TWI722434B (zh) * | 2018-05-31 | 2021-03-21 | 耐能智慧股份有限公司 | 深度神經網絡自我調整增量模型壓縮的方法 |
CN112686382A (zh) * | 2020-12-30 | 2021-04-20 | 中山大学 | 一种卷积模型轻量化方法及系统 |
CN112766491A (zh) * | 2021-01-18 | 2021-05-07 | 电子科技大学 | 一种基于泰勒展开及数据驱动的神经网络压缩方法 |
WO2021143070A1 (zh) * | 2020-01-16 | 2021-07-22 | 北京智芯微电子科技有限公司 | 深度神经网络模型的压缩方法、装置及存储介质 |
-
2017
- 2017-10-23 CN CN201710994309.0A patent/CN107977703A/zh active Pending
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI722434B (zh) * | 2018-05-31 | 2021-03-21 | 耐能智慧股份有限公司 | 深度神經網絡自我調整增量模型壓縮的方法 |
US11403528B2 (en) | 2018-05-31 | 2022-08-02 | Kneron (Taiwan) Co., Ltd. | Self-tuning incremental model compression solution in deep neural network with guaranteed accuracy performance |
CN112534445A (zh) * | 2018-07-20 | 2021-03-19 | 意大利电信股份公司 | 具有数量被减少的参数的神经网络 |
CN109343978A (zh) * | 2018-09-27 | 2019-02-15 | 郑州云海信息技术有限公司 | 一种深度学习分布式框架用的数据交换方法与装置 |
CN109343978B (zh) * | 2018-09-27 | 2020-10-20 | 苏州浪潮智能科技有限公司 | 一种深度学习分布式框架用的数据交换方法与装置 |
CN111210016A (zh) * | 2018-11-21 | 2020-05-29 | 辉达公司 | 对包含元素级别操作的神经网络进行剪枝 |
CN109766993A (zh) * | 2018-12-13 | 2019-05-17 | 浙江大学 | 一种适合硬件的卷积神经网络压缩方法 |
CN109978144A (zh) * | 2019-03-29 | 2019-07-05 | 联想(北京)有限公司 | 一种模型压缩方法和系统 |
CN110446173A (zh) * | 2019-07-31 | 2019-11-12 | 中国地质大学(武汉) | 一种高效节能的星载无线传感网数据压缩方法 |
CN110472736A (zh) * | 2019-08-26 | 2019-11-19 | 联想(北京)有限公司 | 一种裁剪神经网络模型的方法和电子设备 |
CN110472736B (zh) * | 2019-08-26 | 2022-04-22 | 联想(北京)有限公司 | 一种裁剪神经网络模型的方法和电子设备 |
CN110647990A (zh) * | 2019-09-18 | 2020-01-03 | 无锡信捷电气股份有限公司 | 基于灰色关联分析的深度卷积神经网络模型的裁剪方法 |
WO2021143070A1 (zh) * | 2020-01-16 | 2021-07-22 | 北京智芯微电子科技有限公司 | 深度神经网络模型的压缩方法、装置及存储介质 |
CN112686382A (zh) * | 2020-12-30 | 2021-04-20 | 中山大学 | 一种卷积模型轻量化方法及系统 |
CN112686382B (zh) * | 2020-12-30 | 2022-05-17 | 中山大学 | 一种卷积模型轻量化方法及系统 |
CN112766491A (zh) * | 2021-01-18 | 2021-05-07 | 电子科技大学 | 一种基于泰勒展开及数据驱动的神经网络压缩方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107977703A (zh) | 用于修剪神经网络以实现资源有效推理的系统和方法 | |
US11182649B2 (en) | Generation of synthetic images for training a neural network model | |
US11315018B2 (en) | Systems and methods for pruning neural networks for resource efficient inference | |
US10565747B2 (en) | Differentiable rendering pipeline for inverse graphics | |
US11106261B2 (en) | Optimal operating point estimator for hardware operating under a shared power/thermal constraint | |
US10762620B2 (en) | Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene | |
US11790609B2 (en) | Reducing level of detail of a polygon mesh to decrease a complexity of rendered geometry within a scene | |
CN110766778B (zh) | 使用散列执行并行路径空间滤波的方法和系统 | |
CN110363294A (zh) | 利用网络中的路径来表示神经网络以提高神经网络的性能 | |
US20220027546A1 (en) | Standard cell layout generation with applied artificial intelligence | |
CN109034385A (zh) | 用稀疏数据训练神经网络的系统和方法 | |
US11645533B2 (en) | IR drop prediction with maximum convolutional neural network | |
US20210287096A1 (en) | Microtraining for iterative few-shot refinement of a neural network | |
EP3678037A1 (en) | Neural network generator | |
CN109936745A (zh) | 用于改善原始视频数据的解压的方法和系统 | |
CN110059793A (zh) | 生成式对抗神经网络的逐步修改 | |
DE102022104142A1 (de) | Strahldichte-caching in echtzeit durch ein neuronales netz für pfadverfolgungszwecke | |
US11069095B1 (en) | Techniques for efficiently sampling an image | |
DE102021104310A1 (de) | Reservoir-basiertes räumlich-zeitliches resampling nach wichtigkeit unter verwendung einer globalen beleuchtungsdatenstruktur | |
US11936507B2 (en) | CMOS signaling front end for extra short reach links | |
DE102022128966A1 (de) | Parallelverarbeitung zur kombinatorischen optimierung | |
DE112022002137T5 (de) | Hybrides differenzierbares Rendering für Lichttransportsimulationssysteme und -Anwendungen | |
CN111221498A (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 |