CN116341608A - 用于减少神经网络计算的运行时预测器 - Google Patents
用于减少神经网络计算的运行时预测器 Download PDFInfo
- Publication number
- CN116341608A CN116341608A CN202211648516.8A CN202211648516A CN116341608A CN 116341608 A CN116341608 A CN 116341608A CN 202211648516 A CN202211648516 A CN 202211648516A CN 116341608 A CN116341608 A CN 116341608A
- Authority
- CN
- China
- Prior art keywords
- data
- neural network
- execution
- generating
- computation
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 226
- 238000004364 calculation method Methods 0.000 claims abstract description 120
- 238000000034 method Methods 0.000 claims abstract description 99
- 239000002131 composite material Substances 0.000 claims abstract description 89
- 238000012545 processing Methods 0.000 claims description 73
- 239000011159 matrix material Substances 0.000 claims description 27
- 230000015654 memory Effects 0.000 claims description 24
- 238000005070 sampling Methods 0.000 claims description 22
- 238000012549 training Methods 0.000 claims description 14
- 238000012935 Averaging Methods 0.000 claims description 2
- 238000011156 evaluation Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 17
- 230000002829 reductive effect Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000013459 approach Methods 0.000 description 5
- 239000000758 substrate Substances 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 230000009467 reduction Effects 0.000 description 4
- 238000013479 data entry Methods 0.000 description 3
- 230000000873 masking effect Effects 0.000 description 3
- 239000002243 precursor Substances 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 150000003071 polychlorinated biphenyls Chemical class 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241000282326 Felis catus Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
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/04—Architecture, e.g. interconnection topology
-
- 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/0495—Quantised networks; Sparse networks; Compressed 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Nonlinear Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本文公开了与减少执行人工神经网络(ANN)所需的计算次数相关的方法和系统。该方法包括在ANN执行期间进行的计算机实现的方法。该方法包括生成一组执行数据,生成ANN的一组神经网络数据的概要,生成ANN执行的一组执行数据的概要,使用该组神经网络数据的概要和该组执行数据的概要生成预测,以及执行复合计算。ANN的执行需要复合计算。该方法还包括抑制复合计算的一组分量计算。受抑制的一组分量计算至少部分由预测确定。
Description
背景技术
机器智能系统代表了现代计算最复杂和能量密集的计算应用之一。由于人工神经网络(ANN)代表了当今使用的大部分当前机器智能系统,因此大量的研究和开发都投入到了降低ANN执行能耗的方法上。ANN接收输入张量,使用输入张量和一组网络张量进行计算,并产生输出张量。输出张量代表了网络响应输入而生成的推断。例如,如果ANN是图像分类器,则输入可以是猫图像的编码,输出向量可以是指示图像的主题是猫的推断。这些系统如此耗费资源的原因是,它们所操作的数据结构通常非常庞大,并且必须对每个数据结构执行的离散原始计算的数量也同样巨大。
机器智能系统代表了一个具有挑战性的环境,既包括所需的计算次数,也包括为执行这些计算而必须在系统的存储器和计算区域之间移动的大型数据结构。标准ANN的网络数据通常包括数十亿个离散数据条目。基于所涉及的ANN类型,网络数据可以包括权重向量、过滤向量和各种其他类型的数据。网络数据定义了ANN,并确定对于给定的输入将提供什么输出。网络数据通常被组织成层,每层的输出作为下一层的输入。在传统的ANN中,各层是完全连接的,这要求输入向量的每个元素都参与权重向量的每个元素的计算。结果涉及的计算数量非常大。此外,ANN的输入数据、ANN的网络数据以及通过执行ANN的一层而生成的用作ANN的下一层的输入的执行数据都需要保存在存储器中,直到它们用于下一层的计算。
机器智能领域中的一个发展中的研究领域涉及一些方法,在这些方法中,可以减少从ANN生成推断所需的计算量,同时仍然保持对ANN的完全执行的保真度。该领域中的方法包括基于各种因素在执行ANN时跳过ANN执行中的特定计算。例如,特定的方法涉及“辅助层”,它可以基于ANN的输入数据减少ANN执行期间的计算量。另外的方法涉及在执行之前通过删除网络执行所不需要的网络数据来修改ANN,从而产生一个不同的、修改过的ANN,该ANN可以用较少的计算来执行。这些方法通常被称为诸如“退出”和“删除”之类的术语,并且是在ANN的初始训练阶段完成的,因为正在学习给定网络的适当网络数据。
发明内容
本文公开了与人工神经网络(ANN)领域相关的方法和系统。所公开的方法和系统包括用于减少执行给定ANN所需的计算次数的方法。ANN的执行可能需要执行至少一个复合计算。所公开的方法和系统包括神经网络加速器或用于执行ANN的其他计算设备,其装载有经过训练的ANN,并且在保持ANN完全执行的保真度的同时,降低了执行该经过训练的ANN的计算复杂度。通过抑制必须作为ANN执行的一部分来执行的一个或多个复合计算的分量计算,可以降低ANN执行的计算复杂度。
在本发明的特定实施例中,提供了用于减少ANN执行中的计算的方法,这些方法的所有步骤都在运行时进行—在ANN执行期间。这些方法涉及使用ANN的神经网络数据和当前执行ANN的执行数据生成预测器。预测器指示执行数据或神经网络数据的特定部分的显著性,并且可以用于抑制涉及不太显著的神经网络数据或执行数据的计算。由此,基于对ANN的特定输入和ANN的特性来确定所产生的计算量的减少,以产生严格适应ANN的给定执行的计算量的减少。
在本发明的具体实施例中,预测器是在运行时通过算法生成的。因此,不需要存储额外的“辅助层”或其他数据结构来帮助减少计算。此外,在具体实施例中,在运行时仅使用ANN的网络数据和当前执行ANN的执行数据生成预测器,不需要训练额外的网络数据来减少计算。在这些实施例中,由于计算的减少已经与训练过程完全不挂钩,所以训练网络的复杂性和时间相对于相关方法减少了。
在本发明的具体实施例中,ANN将由计算节点的网络执行,其中计算节点之间的网络和执行数据的移动是由网络的带宽和延迟设置的设计约束。计算节点的网络可以是一组网络化处理核心。在这些实施例中,用于抑制计算的预测器和相关装置是从已经存在于给定计算节点上的网络和执行数据中导出的,这一事实带来了显著的好处,因为不需要通过计算节点网络移动额外的数据,以提供应抑制哪些计算的指导。这与使用“辅助层”或其他数据结构来帮助确定哪些计算可以被抑制的方法形成对比,因为除了ANN本身的网络数据之外,这些辅助层和数据结构还需要通过网络路由。
在本发明的具体实施例中,提供了一种在ANN执行期间进行的计算机实现的方法。该方法包括生成一组执行数据,生成神经网络的一组神经网络数据的概要,生成神经网络执行的一组执行数据的概要,使用一组神经网络数据的概要和一组执行数据的概要生成预测,执行复合计算,以及抑制复合计算的一组分量计算。执行神经网络需要复合计算。受抑制的一组分量计算至少部分由预测确定。
在本发明的具体实施例中,提供了一种系统。该系统包括一组处理核心、通信连接处理核心的网络、跨该组处理核心存储在一组存储器上的神经网络、一组处理核心上的一组处理流水线、以及跨该组处理核心存储在该组存储器上的一组指令。当由该组处理流水线执行时,该组指令使系统执行人工网络并在人工神经网络的执行期间进行一种方法,该方法包括生成一组执行数据,生成神经网络的一组神经网络数据的概要,生成神经网络执行的一组执行数据的概要,使用该组神经网络数据的概要和该组执行数据的概要生成预测,执行复合计算,以及抑制该复合计算的一组分量计算。执行神经网络需要复合计算。该组分量计算至少部分由预测确定。
在本发明的具体实施例中,提供了一种在有向图的执行期间进行的计算机实现的方法。该方法包括生成一组执行数据,生成有向图的一组有向图数据的概要,生成有向图执行的一组执行数据的概要,使用一组有向图数据的概要和一组执行数据的概要生成预测,执行复合计算,以及选择性地执行复合计算的一组分量计算。基于该预测选择该组分量计算。有向图的执行需要复合计算。
附图说明
图1示出了根据本文公开的本发明的具体实施例的一组方法的流程图。
图2示出了根据本文公开的本发明的具体实施例的系统的框图。
图3示出了根据本文公开的本发明的具体实施例由编译器执行的一组方法的流程图。
图4示出了根据本文公开的本发明的具体实施例,使用预测器来确定在复合计算中抑制哪些计算,从而减少ANN执行中的计算的概念数据流程图。
图5示出了根据本文公开的本发明的具体实施例,使用预测器来确定复合计算的操作数数据中的一组显著网络数据,从而减少ANN执行中的计算的概念数据流程图。
图6示出了根据本文公开的本发明的具体实施例,使用预测器来更准确地确定复合计算的操作数数据中的一组显著网络数据,从而减少ANN执行中的计算的概念数据流程图。
具体实施方式
本文详细公开了根据以上概述的与人工神经网络(ANN)领域相关的方法和系统。本节中公开的方法和系统是本发明的非限制性实施例,仅用于解释目的,并且不应该用于限制本发明的全部范围。应当理解,所公开的实施例可以彼此重叠,也可以不重叠。因此,一实施例的一部分或其具体实施例可以落入或不落入另一个或其具体实施例的范围内,反之亦然。来自不同方面的不同实施例可以被组合或单独实施。在本发明的广泛框架内示出的代表性实施例的许多不同组合和子组合,对于本领域技术人员来说可能是显而易见的,但是没有明确示出或描述,不应被解释为排除在外。
这里公开的本发明的具体实施例是参考数学运算形式的复杂计算来描述的,为了执行人工神经网络(ANN),必须使用一组计算数据来进行数学运算。ANN可以是卷积神经网络(CNN)、残差神经网络(ResNet)、递归神经网络(RNN)、注意力网络、嵌入或任何形式的训练有向图。这样,响应于给定的输入,可能需要复杂的计算来从ANN生成推断。ANN的执行可以在训练阶段对ANN进行训练的同时进行。可选地或组合地,当网络部署在机器智能应用中时,可以在训练ANN之后执行ANN。例如,ANN可以部署在智能手机等边缘设备上,对传入的音频文件进行语音识别,或者部署在服务器上,为社交网络应用的提要运行推荐引擎。复杂计算可以包括至少一个复合计算,该复合计算在术语上包括至少一个分量计算。例如,复合计算可以是矩阵乘法计算,而分量计算可以包括使用矩阵的各个元素进行的乘法运算。
用于执行ANN的计算数据可以包括ANN的输入数据、执行数据(例如,从网络的一层传递到下一层的激活数据)、定义网络的网络数据(例如,权重或过滤器数据)以及最终由ANN的执行产生的输出数据。如果在训练ANN的同时执行ANN,则输入数据可以是训练输入,该训练输入可以与将在监督学习例程中使用的标签(即,适当训练的网络的预期响应)相关联。计算数据可以在公共路由和寻址的单个数据元素的块中进行管理。
在本发明的具体实施例中,使用可由处理器执行的一组指令来执行复杂的计算。指令可以包括操作码,该操作码标识处理器必须执行的操作,以及应该对其进行操作的一组操作数数据。如在本公开中所使用的,术语“操作数数据”当用来指用于执行ANN的指令中的操作数时,包括用于执行上面列出的ANN的所有计算数据,只要它在指令执行中被用作操作数。
图1示出了根据本文所公开的本发明具体实施例的一组方法的流程图100。在本发明的具体实施例中,流程图100中所示的所有步骤都是在ANN执行期间进行的,并且可以用来减少执行ANN所需的计算量。ANN的执行可以在ANN已经被训练之后进行,并且可以导致由经过训练的ANN生成推断。也可以在训练ANN的同时执行ANN,并生成可以与预期输出进行比较的推断,以帮助修改和训练网络。该流程图包括复合计算的执行,并且还包括循环,因为复杂计算的执行可能需要大量辅助复合计算的执行。例如,在步骤105中执行的复合计算可以是执行一层ANN的一部分所需的数学运算,并且该方法的附加循环可以用于同一层的附加部分。作为另一个例子,在步骤105中执行的复合计算可以是执行一层ANN所需的数学运算,并且该方法的附加循环可以用于ANN的附加层。
流程图100从生成一组执行数据的步骤101开始。执行数据是在ANN执行期间生成的数据。例如,执行数据可以是通过使用一组网络数据和一组到ANN的输入数据作为操作数的操作产生的累加值。许多ANN包括多个层,使得执行数据也可以通过使用一组网络数据和来自ANN的前一层的执行的一组执行数据进行的操作来生成。例如,在ANN的全连接层中,网络数据可以是表示该层的权重,而全连接层的输入可以是ANN的输入或ANN中前一层的输出。与该示例一致,执行数据可以是使用全连接层的输入和该层的权重的矩阵乘法运算的结果。作为另一个例子,执行数据可以是使用网络输入和网络滤波器的卷积运算的结果。
步骤101中的执行数据可以由独立处理器或计算节点网络中的计算节点生成,计算节点如多核处理器中的处理核心。执行数据可以由执行指令时进行的操作生成。该操作可以由处理器的执行区域或任何计算节点来进行,诸如在处理器的处理流水线中。处理流水线可以包括算术逻辑单元(用于整数或浮点操作数)以及从存储器获得操作数数据并将操作的输出写回到存储器的电路。
绘制流程图100,使得执行数据将用于另一个操作。在ANN的例子中,除非执行数据是ANN的输出,否则生成的执行数据用于ANN的进一步执行。例如,执行数据可以是全连接层的输出,并作为后续全连接层的输入。执行数据可以通过矩阵乘法运算生成,然后与下一层的网络数据一起参与另一个矩阵乘法运算。这样,在遵循流程图100的循环之后,如下所述,不需要在循环的下一次迭代中执行特定步骤。例如,在步骤105中执行的复合计算可以生成额外的执行数据,该额外的执行数据将被立即用于由循环执行的下一个复合计算,使得步骤101不一定需要在该迭代中执行。
流程图100继续进行步骤102,生成ANN的一组神经网络数据的概要,以及步骤103,生成神经网络执行的一组执行数据的概要。概要的执行数据可以是在步骤101中生成的执行数据,或在步骤105中生成的执行数据。概要的神经网络数据可以是在步骤105中执行ANN所需的下一个复合计算所需的网络数据。概要可以在神经网络的执行期间生成,并且可以在实际执行与该组神经网络数据和该组执行数据相关联的复合计算之前实时进行。例如,在具有多层的ANN的情况下,只要从神经网络的前一层的执行中产生执行数据,并且在进行下一层的计算之前,就可以生成概要。
网络数据和执行数据的概要可以以各种方式生成。例如,可以使用采样操作来生成概要。采样操作可以在数据结构上进行,或者在数据结构的子集上重复进行。子集可以是数据结构的具体维度,跨越数据结构的不同维度,或者划分数据结构的具体维度。采样可以是随机的,也可以是有针对性的。采样可以选择数据结构或其子集上的最大值或多个值。采样还可以采用数据结构中的值或者数据结构的子集中的值的平均值(average)、均值(mean)或中间值。例如,采样可以是对数据结构的各种子集的平均池操作,平均池值表示原始数据结构的概要。作为另一个例子,采样可以是Top-K操作,其选择数据结构中具有最大幅度的“K”值来表示数据结构中的其余值。作为另一个例子,采样可以是随机采样,其从数据结构的不同部分选择固定数量的值来表示来自相同部分的剩余值。概要还可以涉及对数据的变换应用,以减少数据结构的维度。例如,变换可以产生矩阵的低秩近似,或者通过产生数据值的线性表示并使用线性表示的系数代替数据结构来提供数据结构的线性近似。
可以使用不同的操作或相同的操作来生成网络数据和执行数据的概要。例如,在步骤102中生成的一组神经网络数据的概要可以使用第一采样操作来进行,并且在步骤103中生成的一组执行数据的概要可以使用第二采样操作来进行,其中采样操作在两个步骤中是相同的,或者其中两个不同的采样操作在两个不同的步骤中完成。在第一采样操作和第二采样操作相同的示例中,第一采样操作和第二采样操作可以是平均池操作,其中网络数据和执行数据的子集被平均,并且通过仅保留每个子集的平均值来减少数据。
在本发明的具体实施例中,将生成概要,使得网络数据和执行数据的概要对于在复合计算的标准执行期间使用原始网络和执行数据的操作仍然兼容。例如,如果复合计算是矩阵乘法运算,则可以从原始矩阵生成概要,使得所得概要的内部维数是相同的数。以这种方式,因为内部维度仍然匹配,所以对于原始数据被使用的相同操作,概要可以是兼容的。作为另一个例子,如果复合计算是卷积运算,则可以从原始张量生成概要,使得它们以相同的维度结束(例如,两个四维张量被缩减为两个三维张量)。
流程图100继续到步骤104,使用该组神经网络数据的概要和该组执行数据的概要生成预测。该预测可以是在标准执行中(即,如果复合计算的每个分量计算都被完全执行)的复合计算将产生的一个或多个值的预测。在本发明的具体实施例中,在步骤104中使用预测器计算来生成预测,其中在步骤102中生成的一组神经网络数据的概要以及在步骤103中生成的一组执行数据的概要作为操作数,并且复合计算和预测器计算是相同类型的计算。例如,如果复合计算是以原始数据作为操作数的矩阵乘法运算,则预测器计算也可以是以概要数据作为操作数的矩阵乘法运算。
在本发明的具体实施例中,生成预测的计算强度低于执行复合计算。预测可以是通过复合计算本身的不同操作收集的粗略估计。然而,也可以使用与复合计算本身相同类型的运算来生成预测。例如,如果复合计算是矩阵乘法,则预测可以是具有明显更小的数据结构的矩阵乘法。根据生成概要的操作对数据结构的压缩程度,操作可以非常简单。例如,如果网络数据和执行数据都是512×512矩阵,并且概要是生成两个128×128摘要的平均池4操作,则可以使用原始计算所需的计算次数的1.5%来计算结果预测。
在本发明的具体实施例中,在步骤104中生成预测之后,可以保留步骤102和103中生成的概要。具体的ANN和其他一些复杂的计算,显示了高度的冗余数据使用。这样,在ANN执行的不同复合计算中,部分执行数据可能涉及网络数据的多个部分,反之亦然。这样,如果具体计算数据的概要先前已经生成并且已经与其数据相关联地存储,则生成概要的步骤可以在同一ANN的执行中涉及的后续复合计算中跳过。
在本发明的具体实施例中,在复杂计算完成后,通过流程图100所表示的方法的各种迭代来生成预测的概要可以被丢弃,并且不需要存储在存储器中。这是因为执行数据特定于网络的给定执行,使得来自网络的第一次执行的执行数据的概要对于网络的后续执行可能是无用的。然而,在具体实施例中,网络数据的概要可以在复杂计算(诸如ANN的执行)已经完成之后被保留。如果网络不处于训练阶段,在训练阶段中,网络数据在每次执行后被调整,网络数据可以从一次执行到下一次执行保持静态,使得在ANN的下一次执行期间可以重复利用概要。因此,概要可以保存在与底层网络数据相同的数据结构中,或者与网络数据相关地存储。在具体实施例中,使用计算节点的网络来执行ANN,网络数据的概要可以存储在与底层网络数据相同的计算节点中,使得它可用于计算将与底层网络数据关联使用的另一个预测。
流程图100继续执行复合计算的步骤105。复合计算可以是需要执行多个分量计算的计算。取决于处理器的架构,复合计算可以被指定为单个指令,或者单独的分量计算可以被指定为单独的指令。无论如何,以分量计算形式的多个离散计算由处理器执行以执行分量计算。例如,复合计算可以是矩阵乘法运算,而分量计算可以是矩阵乘法运算中两个矩阵的各种元素的乘法运算。
步骤105被示为包括抑制复合计算的一组分量计算的可选步骤106和选择性地执行复合计算的一组分量计算的步骤107。可以基于步骤104中生成的预测来选择一组分量计算。可以以各种方式使用该预测来提供关于构成复合计算的各种分量计算的显著性的信息。这样,可以使用预测来确保执行最显著的分量计算,而不执行不太显著的分量计算。因此,可以通过减少必须执行的计算次数来降低复合计算的复杂性,同时保持对完全执行的复合计算的保真度。抑制分量计算可以包括根本不进行计算,提供替代值来代替计算的输出,或者以降低的分辨率执行计算。
可以以各种方式选择基于预测抑制哪些分量计算以及执行哪些分量计算。通常,如果原始操作数数据的部分被概要,并且那些概要与具有低幅度的预测值相关联,而原始操作数数据的其他部分以相同的方式与具有高幅度的预测值相关联,则抑制利用第一类型的原始操作数数据的分量计算。然而,在该通用方法中,有许多方法用于选择要抑制的分量计算。例如,对哪个原始操作数数据有助于具有最高幅度的预测的比较可以在整个操作数数据集中进行一次,也可以在操作数数据集的子集中进行多次。作为另一个例子,即使一旦发现特定的一组操作数数据与较低幅度的预测值相关联,也可以以各种方式从这些操作数数据中进行选择以确定应该抑制哪个计算。例如,如果操作数数据的采样是平均池操作,则可以基于操作数数据的随机选择来选择要抑制的计算。然而,如果操作数数据的采样已经随机选择了特定值,则可以抑制与那些特定值相关联的分量计算。
图1的方法的一个具体应用涉及多层ANN的执行,其中每一层的输出需要作为下一层的输入。在该应用中,上述步骤105中执行的复合计算可以是执行一层ANN所需的复合计算。例如,复合计算可以是矩阵乘法运算,并且该复合计算的一组分量计算可以是矩阵中数据元素的乘法运算。在这个例子中,图1所示的方法可以用于降低在具有数百万或数十亿数量级的网络数据元素的ANN中执行全连接层所需的大矩阵乘法运算的复杂性,从而实现计算时间的显著减少。然而,在ANN的执行过程中,该过程也可以重复多次,以实现计算资源的更大节省。
在本发明的具体实施例中,参考流程图100描述的方法可以随着复杂计算(诸如ANN的执行)的执行而重复执行。例如,在步骤105中执行的复合计算可以是ANN中的一层或其一部分的执行,并且该计算的输出数据可以在该方法的下一次迭代中代替步骤101中生成的执行数据。可替换地,在步骤105中执行的复合计算可以是ANN中的一层的部分执行,并且该计算的输出数据可以被临时存储,同时来自步骤101的相同输入数据被用于网络数据的另一部分。在这种方法中,可以跳过步骤103,因为执行数据的概要可能已经从先前的迭代中获得,并且可能已经临时存储在存储器中。可替代地,在步骤105中执行的复合计算可以是使用对ANN中的一层的全部输入中的一部分来部分执行该层,并且计算的输出数据可以被临时存储,而对该层的全部输入中的另一部分被用来代替执行数据101。在这种方法中,相同的网络数据可以与新的执行数据一起使用,从而可以跳过步骤102。然而,在这种方法中,可能还需要新的网络数据,从而需要为新的网络数据执行步骤102。
在本发明的具体实施例中,流程图100可以被迭代地导航以包括这样的方法,该方法包括在步骤105中执行复合计算之后,在步骤102的附加迭代中迭代地生成ANN的附加神经网络数据集的附加概要。该方法还可以包括在步骤105中执行复合计算之后,在步骤103的附加迭代中生成神经网络的附加执行数据集的附加概要。如前所述,如果相同的网络数据正与新的执行数据一起使用,或者如果相同的执行数据正与新的网络数据一起使用,则附加的迭代可以跳过这些步骤中的任何一个。换句话说,该方法可以包括在执行分量计算之后,生成以下至少一个:(i)神经网络的附加神经网络数据集的附加概要;以及(ii)神经网络的附加执行数据集的附加概要。无论如何,附加的迭代将包括在步骤102和103中的一个或两个中生成附加的概要之后,使用附加的概要生成附加的预测。这些附加预测可用于抑制附加复合计算中的附加分量计算集,其中附加分量计算集至少部分由附加预测确定。
流程图100所表示的方法的迭代应用可以展现出显著的复合益处。在抑制分量计算产生零值的情况下,被抑制的输出值会创建更稀疏、更简单的执行数据。然后,该执行数据将更有助于简化的概要和预测,这表示在下一个复合计算中,在该方法的附加循环上可以抑制更多的计算。向前传递的不显著的值会导致更多不显著的值。结果,在特定实施例中,由于这种方法(例如,二次非线性)的迭代利用,在整个复杂计算中存在高阶加速。
参考执行ANN或其他复杂计算的多核处理器中的一组处理核心来描述这里公开的本发明的具体实施例。多核处理器的处理核心可以通过在处理核心上以分布式方式执行复杂计算的复合计算来协作执行复杂计算。为此,处理核心需要共享执行这些复合计算所需的数据,以及接收关于它们被分配了哪些复合计算的指令。处理核心可以使用诸如片上网络(NoC)之类的互连结构来共享该信息。同一网络可用于向各个处理核心加载指令,并向它们提供执行计算所需的初始数据。包括各种处理核心和连接它们的互连结构的多核处理器提供了解释这里公开的本发明的各种实施例的基础。然而,尽管多核处理器的一组核心的示例在整个公开中被用作示例,但是这里公开的本发明的具体实施例更广泛地适用于使用任何形式的互连结构或网络连接的任何一组计算节点。
图2示出了根据本文公开的本发明的具体实施例的系统的框图200。该系统包括一组处理核心201a、201b、201c和201d,以及通信连接这些处理核心的网络202。所示的网络202是片上网络(“NoC”)形式的互连结构以及相关电路,诸如每个处理核心上的路由器和网络接口单元。该系统还包括该组处理核心上的一组处理流水线203a、203b、203c和203d,以及跨该组处理核心存储在一组存储器204a、204b、204c和204d上的一组指令。跨该组处理核心存储在该组存储器上的该组指令是这样的指令,当该组处理流水线203a、203b、203c、203d执行该组指令时,该组指令使得系统执行ANN并按照图1所述方法执行方法的指令。
根据本公开的系统可以包括替代或组合的各种组件。例如,处理流水线可以由计算系统中的任何执行区域代替。该系统还在每个内核上包括一组CPU形式的本地控制器。该系统还包括神经网络205,该神经网络205跨该组处理核心存储在该组存储器204a、204b、204c和204d上。在具体实施例中,诸如根据图2的实施例,存储神经网络205的存储器组是存储前述指令的相同存储器。然而,在替代实施例中,在每个处理核心上,可以有用于神经网络205的指令和网络数据的不同存储器。
在本发明的具体实施例中,用于执行复杂计算的处理核心的网络将包括与外部存储器的连接。存储器可以是随机存取存储器。存储器可用于将网络数据加载到处理核心的网络中。存储器可以在与一个或多个处理核心相同的衬底上,或者在物理上是分离的。
在本发明的具体实施例中,神经网络被分成多个块,并分布在一组处理核心上,以并行化神经网络的执行。当使用连接所有核心的网络执行网络时,神经网络的特定执行的执行数据可以在核心之间共享。将网络数据划分成块并将这些块分配给特定的处理核心可以通过为网络人工编程指令以在网络中移动数据来完成。可替代地,将神经网络分解成块并将块分配给核心可以由编译器来进行。
在本发明的具体实施例中,基于各个处理核心的容量、网络的带宽和延迟以及复杂计算及其复合计算的要求,块大小被保持在一个大小范围内。神经网络数据块和执行数据块可以是指定复合计算或复合计算本身的指令的操作数。在本发明的特定实施例中,神经网络数据块保存ANN的一组ANN数据元素。例如,块可以是128×128矩阵,其中矩阵的每个条目是以诸如16位浮点或8位整数的格式指定的神经网络的权重值。ANN数据元素集可以在每块数百或数千的范围内。在本发明的具体实施例中,神经网络数据块小于ANN的一层,但大于ANN的单个数据元素。因此,人工神经网络的一层可以分成多个部分,由多个计算节点并行执行,或者由单个计算节点分成更小的部分来执行。结果,可能需要为多条网络数据生成多个概要,而不是为整个层的神经网络数据生成单个概要。概要可以由编译器提前或在神经网络执行期间生成。如果概要是在神经网络的执行期间生成的,则可以使用专门分配给每个处理核心的数据在网络上生成概要。
在图2的概念数据流程图210中,神经网络205被编译器207分成块206,并被分配给各个处理核心,作为在该组处理核心上执行神经网络205的前驱(precursor)。在所示的例子中,编译器207将神经网络数据分解成块,并将其分配给特定的核心。如图所示,网络数据分布在块206中,这些块被传递并存储在各种处理核心上。编译器207可以生成标签和/或指令,使得网络202将块206中的网络数据路由到适当的处理核心。这些指令可以由网络202的路由器和/或网络接口单元执行。
在本发明的具体实施例中,编译器可以以各种方式被实例化。例如,编译器可以在与网络202联网通信的独立控制器上运行,并将网络和指令加载到内核中。在另一个例子中,编译器可以在诸如图2中的CPU的处理核心的本地控制器上被实例化。在另一个例子中,编译器可以由处理核心的处理流水线来实例化。
图3示出了根据本文公开的本发明的具体实施例由编译器执行的一组方法的流程图300。在具体实施例中,流程图300的方法是执行神经网络的前驱,并且将在执行神经网络之前执行,例如在流程图200的方法中。在本发明的具体实施例中,编译器将被编程为在执行神经网络之前执行流程图300的方法。该流程图包括使用一组至少两个处理核心编译用于执行神经网络的一组指令的步骤301。步骤301可以由诸如编译器207的编译器来执行,并且包括使用网络数据和执行的执行数据作为操作数的指令的生成。编译步骤还可以包括关于特定操作将在哪里执行以及特定操作数数据在使用之前和生成之后将在哪里存储或传输的放置决定。编译可以包括在各种处理核心上放置用于根据图1的方法执行ANN的指令。
在本发明的具体实施例中,根据本文公开的具体方法的用于执行ANN的指令的放置可以包括用于生成上述预测的指令和用于生成上述复合计算的指令的放置。例如,执行图1中的步骤102-104所需的指令可以是用于生成预测的指令的一部分,执行步骤101和105所需的指令可以是用于执行ANN的指令的一部分。在本发明的具体实施例中,生成复合计算的预测的指令和进行复合计算的指令将与执行该复合计算所需的数据一起被分配给同一处理核心。这提供了显著的好处,因为使用相同的数据结构来生成预测和复合计算,所以它们已经在单个处理核心上可用,并且在相同的位置执行两组指令避免了通过网络路由关于预测的数据的需要。
流程图300包括步骤301内的步骤,因为编译器可以迭代地进行优化操作,并且因为不同的编译器以不同的顺序进行将某些操作固定在适当位置的顺序。因此,步骤301中的步骤被绘制成代表这样的事实,即它们是用于执行ANN的指令的编译过程的一部分,但是它们可以以任意顺序、同时或迭代地完成。流程图300包括步骤302,将用于生成预测的一组指令中的指令分配给一组至少两个处理核心中的第一处理核心。例如,编译器207可以将用于生成复合计算的预测的指令312分配给处理核心201a,该复合计算使用网络数据块311作为操作数数据。流程图300还包括将用于执行复合计算的指令集中的指令分配给第一处理核心的步骤303。例如,编译器207可以将用于执行相同复合计算的指令313分配给处理核心201a,该复合计算使用网络数据块311作为操作数数据。因此,编译器207还将网络数据块311分配给核201a,并且该预测将在需要的地方可用,因为两组指令312和313使用相同的网络数据块311,并且预测指令的结果用于调节相同核心201a上的复合计算。
图4示出了根据本文公开的本发明的具体实施例的概念数据流程图400,其用于使用预测器来确定在复合计算450中抑制哪些计算,从而减少ANN执行中的计算。概念数据流程图400示出了根据流程图100的方法的执行中所涉及的数据结构。流程图400包括执行数据块401和网络数据块402。执行数据块401和网络数据块402是矩阵乘法形式的复合计算450的操作数。
在执行复合计算450之前,可以执行数据流程图400的上部路径,以通过识别不太显著的输出并抑制会生成这些输出的计算来简化复合计算。如图所示,操作403可用于生成执行数据概要404,操作405可用于生成网络数据概要406。操作403可以是平均池4操作,其如图所示对每四个数据元素进行平均。生成的概要有四分之一的数据条目作为原始数据结构。操作405可以与操作403相同(在这种情况下是平均池4操作)。结果,网络数据概要406和执行数据概要404可以在矩阵乘法操作407中使用,以产生预测408。操作409表示评估预测以确定复合计算的一组显著输出的附加步骤(流程图100中未示出)。这可以通过多种方式实现。由于预测器可以是复合计算输出的估计值,因此评估预测器有助于识别输出的哪些部分最显著。在所示的情况下,操作409是Top-K操作,其中K设置为等于2,使得选择具有最大幅度的预测408的值来生成预测导数410。预测导数410然后可以用于简化原始的复合计算。
当执行复合计算450时,使用控制路径411基于预测导数410抑制具体分量计算。在所示的情况下,已经被抑制的分量计算是和积计算,该和积计算已经填充了简化输出451的白色部分中的空白数据输入方块。相关联的分量计算被抑制,因为它们与预测导数410识别为不太显著的输出象限相关联。预测导数410有效地形成了用于调节复合计算450的掩码,使得仅计算显著的数据条目。因此,该组显著输出(在简化输出451的左上和右下象限中)由复合计算450的一组显著分量计算生成,并且一组分量计算被抑制(导致简化输出451的右上和左下象限的计算)。被抑制的一组分量计算和一组显著分量计算是互斥的。
图5示出了根据本文公开的本发明的具体实施例的概念数据流程图500,其用于使用预测器来确定复合计算550的操作数数据中的一组显著网络数据,从而减少ANN执行中的计算。概念数据流程图500示出了根据流程图100的方法的执行中所涉及的数据结构。流程图500包括执行数据块501和网络数据块502。执行数据块501和网络数据块502是矩阵乘法形式的复合计算550的操作数。
在执行复合计算550之前,可以执行数据流程图500的上部路径,以通过识别不太显著的网络数据并抑制利用网络数据的计算来简化复合计算。可使用与图4中用于生成预测408的过程类似的过程来生成预测508。如图所示,预测508然后可以被评估以生成预测导数510。操作509可以是Top-K操作,诸如用于生成图4中的预测导数410的操作。操作509表示评估预测以确定复合计算的一组显著输出的附加步骤(流程图100中未示出)。预测导数510将提供关于复合计算550的哪些输出最显著的指示。
在由图5表示的本发明的具体实施例中,预测导数510中的值可以用于从由网络数据块502表示的一组神经网络数据确定一组显著神经网络数据。具体地,预测导数510中的值然后可以在矩阵乘法操作520中与采样执行数据的转置512一起使用。被转置以生成采样执行数据的转置512的采样执行数据将已经从执行数据501中采样并用于生成预测508,使得其已经可用于该计算。该矩阵乘法的所得乘积是导出的显著网络概要数据513,其提供了关于复合计算550的网络数据502的最重要部分的指示。因此,可以诸如在平均池4操作514中对导出的显著网络概要数据513进行采样,以产生导出的显著网络数据扇区515。导出的显著网络数据扇区515然后可以用于简化原始复合计算550。
当执行复合计算550时,使用控制路径516基于预测导数510抑制特定分量计算。在所示的情况下,已经被抑制的分量计算是和积运算,其将填充简化输出551的白色部分中的空白数据输入方块。相关联的分量计算被抑制,因为它们与被识别为不显著的屏蔽网络数据508的象限相关联。操作的抑制可以通过使用导出的显著网络数据扇区515来生成网络数据502的掩码并抑制复合计算550中涉及被屏蔽掉的网络数据元素的任何计算来进行。在具体实施例中,掩码可以是将任何掩码值设置为零的零掩码,并且负责执行复合计算550的执行引擎可以抑制与零值操作数的任何乘法。因此,该组显著输出(在简化输出551的右上和左下象限中)由复合计算550的一组显著分量计算生成,并且一组分量计算被抑制(将计算简化输出551的右上和左下象限的值的计算)。
可以稍微修改图5的数据流程图以产生不同的方法,其中执行数据501被屏蔽,而不是网络数据。该方法将涉及采样网络数据的转置来代替采样执行数据的转置512,这将最终产生导出的显著执行数据扇区数据结构来代替导出的显著网络数据扇区515。该方法的不同之处在于,在评估预测以确定复合计算的一组显著输出之后,该组显著输出将用于从执行数据块501中确定一组显著执行数据,而不是从网络数据块502中确定一组显著网络数据。评估可以使用top-K操作来选择一组显著输出。使用该组显著输出来确定该组显著执行数据的过程将涉及在类似于步骤520的具有预测导数的矩阵乘法运算中利用采样网络数据的转置。转置可以从用于生成预测508的相同采样网络数据中生成。导出的显著执行数据扇区数据结构随后可用于抑制利用执行数据块501的已标识数据扇区中的执行数据的计算,或者通过从执行数据501中屏蔽执行数据来简化复合计算550。计算的抑制可以抑制复合计算中不使用该组显著执行数据的分量计算。
参考图4和图5描述的方法都可能产生不同的简化输出551。然而,每种方法都可以用来产生一个输出,该输出保持对预期输出的可接受的保真度,使得它们作为其一部分的整个复杂计算将产生相同的输出,或者至少是可接受的相似输出。此外,在特定实施例中,基于网络数据和执行数据的特性,在单个复杂计算的执行期间,这些方法中的不同方法可以互换地用于不同的复合计算。例如,如果执行数据比网络数据稀疏,可以应用屏蔽网络数据的方法。可替代地,如果网络数据比执行数据稀疏,可以应用屏蔽执行数据的方法。如果两个数据结构具有大约相同的稀疏度,则可以应用基于输出值抑制计算的方法。此外,如果两个数据结构都超过一定程度的稀疏性,则系统可以确定与任何公开的方法相关联的开销可能不值得复合计算的预期简化,并且复合计算可以在没有任何屏蔽或附加的操作抑制的情况下执行。当与一个执行引擎配对时,这种方法将特别有益,该执行引擎在任何一个操作数被确定为零时自动抑制乘法运算。
图6示出了根据本文公开的本发明的具体实施例,使用预测器来更准确地确定复合计算的操作数数据中的一组显著网络数据来减少ANN执行中的计算的概念数据流程图600。数据流程图600开始于预测401和预测导数402的生成。生成这些数据结构的过程可以与参考图4描述的过程相同。该过程以类似于图5中导出的显著网络概要数据513的生成的方法继续。然而,在流程图600中,预测导数被分成扇区特定值以创建多个数据结构。在所示的方法中,预测导数402的每个非零扇区被分割成它自己的预测导数扇区数据结构。如图所示,由于预测导数402具有两个非零扇区,它被分成预测导数扇区601和预测导数扇区602。如参考图5所述,这些数据结构随后被用于找到网络数据或执行数据的显著部分。
流程图600进一步示出了不同的预测导数扇区如何用于确定复合计算的显著操作数数据。如图所示,不同的预测导数扇区601和602用于不同的矩阵乘法运算611和612,其中采样的执行数据512进行转置。这两种不同的操作产生导出的显著网络概要数据603和导出的显著网络概要数据604的两种数据结构。这两种不同的数据结构本质上指示了哪个网络数据对于在复合计算的输出中生成特定的显著输出值是最显著的。
流程图600继续进行平均池4操作613和614,它们生成每个预测扇区导出的显著网络数据扇区605和606,其可用于在复合计算的执行期间屏蔽复合计算的输入数据。可以通过不进行计算来屏蔽输入数据,除非它们在由每预测扇区显著网络数据扇区605和606标识的特定扇区内。在所示的情况下,转置结构中的操作数数据是执行数据。然而,通过将采样的执行数据的转置512改变为采样的网络数据的转置,可以使用相同的过程来获得指示哪个执行数据是最显著的数据结构。然后,该数据可用于抑制复合计算中使用特定执行数据的计算。
本文公开的处理核心可以采取各种形式。处理核心可以是多核处理器或独立处理器中的处理核心。处理核心可以被实现为单芯片系统,包括晶片级单芯片系统、多芯片单封装系统,或者在多芯片多封装系统中实现,在多芯片多封装系统中,芯片通常被附着到诸如印刷电路板(PCB)、内插器或硅网之类的公共衬底。
尽管本节中提供的具体示例针对连接多核处理器中的一组处理核心的NoC形式的计算节点网络,但是本文公开的方法广泛适用于任何形式的计算节点网络。此外,根据本公开的网络可以在单芯片系统上实现,包括晶片级单芯片系统、多芯片单封装系统或多芯片多封装系统,在多芯片多封装系统中,芯片通常附着到诸如印刷电路板(PCB)、内插器或硅网之类的公共衬底。根据本公开的网络还可以包括通过更高级的公共衬底链接在一起的多个衬底上的芯片,诸如在多个PCB各自具有一组芯片的情况下,其中多个PCB固定到公共底板。根据本公开的网络也可以在基于小芯片的系统中实现。例如,在本发明的具体实施例中,一个或多个计算节点可以由一个或多个小芯片容纳或实现,例如通过内插器连接。
根据本公开的处理核心可以包括至少一个非暂时性计算机可读介质。该介质可以包括处理核心上的高速缓冲存储器。该介质还可以包括不与唯一计算节点相关联的共享存储器。该介质可以是共享存储器,可以是共享随机存取存储器,并且可以是,例如,DRAM。共享存储器可以由多个通道访问。非暂时性计算机可读介质可以存储执行本文公开的任何方法所需的数据、本文公开的指令数据和/或本文公开的操作数数据。计算机可读介质还可以存储指令,当由系统执行时,这些指令使得系统执行本文公开的方法。本文使用执行指令的概念来描述进行任何逻辑或数据移动操作的设备的操作,即使“指令”完全在硬件中指定(例如,与门执行“与”指令)。该术语并不意味着赋予设备可编程的能力。
在整个公开中,ANN提供了解释本文公开的本发明的各种实施例的基础。然而,本文公开的本发明的具体实施例更广泛地适用于任何有向图的执行。此外,本文公开的本发明的具体实施例更广泛地适用于任何复杂计算,包括通常与图形渲染、密码算法和大数据计算相关联使用的那些计算。
虽然已经针对本发明的具体实施例详细描述了说明书,但是应当理解,本领域技术人员在理解前述内容的基础上,可以容易地想到这些实施例的变更、变化和等同物。本文公开的任何方法都可以由处理器结合计算机可读介质来执行,该计算机可读介质结合上述其他硬件元件来存储用于这些方法的指令。在不脱离本发明的范围的情况下,本领域的技术人员可以实施对本发明的这些和其他修改和变化,本发明的范围在所附权利要求中更具体地阐述。
Claims (20)
1.一种在神经网络执行期间进行的计算机实现的方法,包括:
生成一组执行数据;
生成所述神经网络的一组神经网络数据的概要;
生成所述神经网络执行的一组执行数据的概要;
使用所述一组神经网络数据的概要和所述一组执行数据的概要生成预测;
执行复合计算,其中所述复合计算是所述神经网络的执行所需要的;以及
抑制所述复合计算的一组分量计算,其中所述一组分量计算至少部分由所述预测确定。
2.根据权利要求1所述的计算机实现的方法,其中:
所述神经网络的执行需要执行一层所述神经网络;
所述复合计算为执行一层所述神经网络所需要的;
所述复合计算是矩阵乘法运算;
所述一组分量计算是乘法运算;
所述一组神经网络数据是该层神经网络的一组权重;以及
所述一组执行数据是来自先前一层所述神经网络的一组输出数据。
3.根据权利要求1所述的计算机实现的方法,进一步包括,迭代地:
在执行所述复合计算之后,生成以下至少一个:(i)所述神经网络的附加神经网络数据集的附加概要;以及(ii)所述神经网络的附加执行数据集的附加概要;
在生成所述附加概要之后,使用所述附加概要生成附加预测;
执行附加复合计算;以及
抑制所述附加复合计算的附加分量计算集,其中所述附加分量计算集至少部分由所述附加预测确定。
4.根据权利要求1所述的计算机实现的方法,其中:
使用第一采样操作生成所述一组神经网络数据的概要;以及
使用第二采样操作生成所述一组执行数据的概要。
5.根据权利要求4所述的计算机实现的方法,其中:
所述第一采样操作和所述第二采样操作是平均池操作。
6.根据权利要求1所述的计算机实现的方法,其中:
使用预测器计算来生成所述预测,其中将所述一组神经网络数据的概要和所述一组执行数据的概要作为操作数;以及
所述复合计算和所述预测器计算是同一类型的计算。
7.根据权利要求6所述的计算机实现的方法,进一步包括:
评估所述预测以确定所述复合计算的一组显著输出;
其中所述一组显著输出由所述复合计算的一组显著分量计算生成;以及
其中所述一组分量计算和所述一组显著分量计算是互斥的。
8.根据权利要求7所述的计算机实现的方法,其中:
所述评估使用top-K运算来选择所述一组显著输出。
9.根据权利要求6所述的计算机实现的方法,进一步包括:
评估所述预测以确定所述复合计算的一组显著输出;
使用所述一组显著输出从所述一组神经网络数据中确定一组显著神经网络数据;以及
其中所述抑制抑制所述复合计算中不使用所述一组显著神经网络数据的分量计算。
10.根据权利要求9所述的计算机实现的方法,其中:
所述评估使用top-K运算来选择所述一组显著输出;
所述一组显著神经网络数据的确定使用所述一组执行数据的概要的转置。
11.根据权利要求6所述的计算机实现的方法,进一步包括:
评估所述预测以确定所述复合计算的一组显著输出;
使用所述一组显著输出从所述一组执行数据中确定一组显著执行数据;以及
其中所述抑制抑制所述复合计算中不使用所述一组显著执行数据的分量计算。
12.根据权利要求11所述的计算机实现的方法,其中:
所述评估使用top-K运算来选择所述一组显著输出;
所述一组显著执行数据的确定使用一组网络数据的概要的转置。
13.根据权利要求1所述的计算机实现的方法,在执行所述神经网络之前,还包括:
使用一组至少两个处理核心来编译用于执行神经网络的一组指令;
将来自用于生成所述预测的一组指令中的指令分配给所述一组至少两个处理核心中的第一处理核心;以及
将用于执行所述复合计算的一组指令中的指令分配给所述第一处理核心。
14.根据权利要求1所述的计算机实现的方法,其中:
所述一组神经网络数据是神经网络数据块;
所述神经网络数据块:(i)保存所述神经网络的一组网络数据元素;(ii)大于单个网络数据元素;以及(iii)小于所述神经网络的一层;以及
所述复合计算使用所述神经网络数据块作为操作数。
15.根据权利要求1所述的计算机实现的方法,其中:
在训练所述神经网络的同时执行所述神经网络;以及
一组执行数据是训练输入的一部分。
16.根据权利要求1所述的计算机实现的方法,其中:
在训练所述神经网络之后,执行所述神经网络。
17.一种系统,包括:
一组处理核心;
通信地连接所述处理核心的网络;
跨所述一组处理核心存储在一组存储器上的神经网络;
所述一组处理核心上的一组处理流水线;以及
跨所述一组处理核心存储在所述一组存储器上的一组指令,其中所述一组指令在由所述一组处理流水线执行时,使得所述系统执行所述神经网络并在所述神经网络的执行期间进行一种方法,所述方法包括:
生成一组执行数据;
生成所述神经网络的一组神经网络数据的概要;
生成所述神经网络执行的一组执行数据的概要;
使用所述一组神经网络数据的概要和所述一组执行数据的概要生成预测;
执行复合计算,其中所述复合计算是所述神经网络执行所需要的;以及
抑制所述复合计算的一组分量计算,其中所述一组分量计算至少部分由所述预测确定。
18.根据权利要求17所述的系统,进一步包括:
编译器,被编程为在所述神经网络执行之前进行一种方法,所述方法包括:
编译所述一组指令;
将来自用于生成所述预测的一组指令中的指令分配给所述一组处理核心中的第一处理核心;以及
将用于执行所述复合计算的一组指令中的指令分配给所述第一处理核心。
19.一种在有向图的执行期间进行的计算机实现的方法,包括:
生成一组执行数据;
生成所述有向图的一组有向图数据的概要;
生成所述有向图执行的一组执行数据的概要;
使用所述一组有向图数据的概要和所述一组执行数据的概要生成预测;
执行复合计算,其中所述复合计算是执行所述有向图所需要的;以及
选择性地执行所述复合计算的一组分量计算,其中所述一组分量计算是基于所述预测来选择的。
20.根据权利要求19所述的计算机实现的方法,进一步包括:
使用第一平均池操作来生成所述一组有向图数据的概要;
使用第二平均池操作来生成所述一组执行数据的概要;以及
使用与所述复合计算相同类型的操作来生成所述预测,其中将所述一组有向图数据的概要和所述一组执行数据的概要作为操作数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/559,952 US20230196124A1 (en) | 2021-12-22 | 2021-12-22 | Runtime predictors for neural network computation reduction |
US17/559,952 | 2021-12-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116341608A true CN116341608A (zh) | 2023-06-27 |
Family
ID=84569586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211648516.8A Pending CN116341608A (zh) | 2021-12-22 | 2022-12-21 | 用于减少神经网络计算的运行时预测器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230196124A1 (zh) |
EP (1) | EP4202774A1 (zh) |
CN (1) | CN116341608A (zh) |
-
2021
- 2021-12-22 US US17/559,952 patent/US20230196124A1/en active Pending
-
2022
- 2022-12-21 CN CN202211648516.8A patent/CN116341608A/zh active Pending
- 2022-12-21 EP EP22215547.5A patent/EP4202774A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4202774A1 (en) | 2023-06-28 |
US20230196124A1 (en) | 2023-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7025441B2 (ja) | ニューラルネットワーク処理のスケジューリング | |
US11500959B2 (en) | Multiple output fusion for operations performed in a multi-dimensional array of processing units | |
US20200249998A1 (en) | Scheduling computation graph heterogeneous computer system | |
US20200160181A1 (en) | Systems and methods for generation of sparse code for convolutional neural networks | |
JP7430744B2 (ja) | 機械学習モデルを改良して局所性を改善させること | |
CN110633153A (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
CA3060350A1 (en) | Data structure descriptors for deep learning acceleration | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
CN110689121A (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
US20210373944A1 (en) | Scheduler, method of operating the same, and accelerator apparatus including the same | |
CN112711478A (zh) | 基于神经网络的任务处理方法、装置、服务器和存储介质 | |
US20230076473A1 (en) | Memory processing unit architecture mapping techniques | |
US11551095B2 (en) | Sharing preprocessing, computations, and hardware resources between multiple neural networks | |
US10558500B2 (en) | Scheduling heterogenous processors | |
CN116680063B (zh) | 任务调度方法、装置、计算系统、电子设备和存储介质 | |
Saleem et al. | A Survey on Dynamic Application Mapping Approaches for Real-Time Network-on-Chip-Based Platforms | |
CN109272112B (zh) | 一种面向神经网络的数据重用指令映射方法、系统及装置 | |
CN116341608A (zh) | 用于减少神经网络计算的运行时预测器 | |
JP5120778B2 (ja) | 分散メモリ型マルチプロセッサシステム、マスク付き逆シフト通信方法及びプログラム | |
US20230259579A1 (en) | Runtime predictors for computation reduction in dependent computations | |
US20230146541A1 (en) | Sparsity Uniformity Enforcement for Multicore Processor | |
US20220318614A1 (en) | Graph execution using access request response dynamic batch assembly | |
US20230004855A1 (en) | Co-operative and adaptive machine learning execution engines | |
Chen et al. | A Survey on Graph Neural Network Acceleration: A Hardware Perspective | |
KR20220049294A (ko) | 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |