CN113821471A - 神经网络的处理方法和电子装置 - Google Patents
神经网络的处理方法和电子装置 Download PDFInfo
- Publication number
- CN113821471A CN113821471A CN202011346557.2A CN202011346557A CN113821471A CN 113821471 A CN113821471 A CN 113821471A CN 202011346557 A CN202011346557 A CN 202011346557A CN 113821471 A CN113821471 A CN 113821471A
- Authority
- CN
- China
- Prior art keywords
- tensor
- accelerator
- kernel
- neural network
- electronic device
- 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 73
- 238000003672 processing method Methods 0.000 title abstract description 14
- 230000004044 response Effects 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 claims abstract description 20
- 238000010606 normalization Methods 0.000 claims description 110
- 238000000034 method Methods 0.000 claims description 27
- 230000001131 transforming effect Effects 0.000 claims description 4
- 230000015654 memory Effects 0.000 description 40
- 230000008569 process Effects 0.000 description 11
- 238000013473 artificial intelligence Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000011176 pooling Methods 0.000 description 5
- 210000002569 neuron Anatomy 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 238000003909 pattern recognition Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012549 training Methods 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/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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- 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/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/10—Pre-processing; Data cleansing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
- G06F18/2137—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods based on criteria of topology preservation, e.g. multidimensional scaling or self-organising maps
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/041—Abduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Analysis (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
Abstract
公开了神经网络的处理方法和电子装置。所述电子装置包括:主机处理器,被配置为:接收用于由加速器处理神经网络的请求,响应于所述请求而生成能够由加速器执行的指令,并且将所述指令发送到加速器;和加速器,被配置为:响应于所述指令执行神经网络,并且将执行神经网络的结果发送到主机处理器。
Description
本申请要求于2020年6月18日在韩国知识产权局提交的第10-2020-0074268号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及神经网络的处理方法和电子装置。
背景技术
独立硬件可专用于人工智能(AI)技术。例如,AI可通过预定操作来执行推断和学习。这样,各种装置可以是用于实现和执行AI的专用硬件。
用于AI的专用硬件可由例如图形处理器(GPU)来实现,或由可改变用途的现场可编程门阵列(FPGA)和专用集成电路(ASIC)来实现。
发明内容
提供本发明内容以简化的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求保护的主题的关键特征或必要特征,也不意在用于帮助确定要求保护的主题的范围。
在一个总体方面,一种电子装置包括:主机处理器,被配置为:接收用于由加速器处理神经网络的请求,响应于所述请求而生成能够由加速器执行的指令,并且将所述指令发送到加速器;和加速器,被配置为:响应于所述指令执行神经网络,并且将执行神经网络的结果发送到主机处理器,其中,加速器被配置为:通过在通道轴方向上执行基于目标张量和内核的卷积,来确定与执行待执行的运算的结果对应的中间张量,目标张量将被执行待执行的运算,内核具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素。
在一个总体方面,一种电子装置包括:主机处理器,被配置为:接收用于获得数据推断结果的请求,响应于所述请求而生成指令,并且将所述指令发送到加速器;和加速器,被配置为:响应于所述指令执行神经网络,并且将执行神经网络的结果作为数据推断结果发送到主机处理器,其中,加速器被配置为:通过执行基于目标张量与内核的卷积来执行待执行的运算,内核具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素。
在一个总体方面,一种神经网络的处理方法包括:通过主机处理器接收用于由加速器处理神经网络的请求;通过主机处理器响应于所述请求而生成能够由加速器执行的指令,并且将所述指令发送到加速器;通过加速器响应于所述指令,执行神经网络,并且将执行神经网络的结果发送到主机处理器;和其中,执行神经网络的步骤包括:通过在通道轴方向上执行基于目标张量和内核的卷积,来确定与执行待执行的运算的结果对应的中间张量,目标张量将被执行待执行的运算,内核具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素。
在一个总体方面,一种用于识别图像的电子装置包括:主机处理器,被配置为:接收用于识别待识别图像的请求,响应于所述请求而生成能够由加速器执行的指令,并且将所述指令发送到加速器;和加速器,被配置为:响应于所述指令以待识别图像作为输入执行神经网络,并且将执行神经网络的结果作为待识别图像的识别结果发送到主机处理器,其中,加速器被配置为:通过在通道轴方向上执行基于目标张量和内核的卷积,来确定与执行待执行的运算的结果对应的中间张量,目标张量将被执行待执行的运算,内核具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素。
在一个总体方面,一种处理器实现的张量处理方法包括:接收用于由加速器来处理包括归一化层的神经网络的请求;和响应于所述请求生成能够由加速器执行的指令,其中,通过执行所述指令,加速器被配置为:通过在通道轴方向上执行卷积来确定与执行包括在归一化层中的运算中的部分的结果对应的中间张量,卷积基于目标张量和内核,目标张量将被执行所述运算中的部分,内核具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素。
加速器可被配置为:通过从通过基于目标张量与内核的卷积所确定的结果张量提取对角线元素,来确定中间张量。
可基于应用于目标张量的归一化单元的元素的数量确定内核的输入通道的数量。
应用于目标张量的归一化单元的元素的数量可等于输入张量的通道的数量,并且内核的输入通道的数量可等于输入张量的通道的数量。
可基于目标张量的宽度长度确定内核的输出通道的数量。
包括在内核中的每个元素的缩放值可包括与目标张量对应的运行时值。
包括在内核中的每个元素的缩放值可等于目标张量中的相应元素的值。
可基于以下项确定目标张量:平均相减张量,包括通过从在归一化层的输入张量中包括的元素的平均值减去每个元素的值所确定的值;和常数值,基于应用于目标张量的归一化单元的元素的数量被确定。
可通过在通道轴方向上执行卷积确定目标张量,卷积基于:平均相减张量;和第二内核,具有基于平均相减张量确定的输入通道的数量和输出通道的数量并且包括基于所述常数值确定的缩放值的对角线元素。
第二内核的输入通道的数量和输出通道的数量可等于归一化单元的元素的数量,并且第二内核中的对角线元素可具有与剩余元素的缩放值不同的缩放值。
所述常数值可等于应用于目标张量的归一化单元的元素的数量的平方根,并且第二内核的缩放值可等于平方根的倒数。
归一化层可被配置为:使用基于包括在目标张量中的一个或多个元素的值所确定的平均值和方差中的任意一个或两个来执行归一化。
可在内核与被变换使得包括在同一通道中的元素排列成一行的输入张量之间执行卷积,并且可通过将作为卷积的结果而确定的元素变换为与输入张量的形式相同的形式确定中间张量。
可在加速器中执行卷积,使得目标张量不被发送到加速器外部以执行根据归一化层的运算。
加速器可被包括在以下中的任意一个:用户终端,被输入将使用神经网络推断的数据;和服务器,从用户终端接收将被推断的数据。
一种非暂时性计算机可读存储介质可存储指令,所述指令在由处理器执行时,配置处理器执行所述方法。
在另一总体方面,一种加速器包括:一个或多个处理器,被配置为:确定将被执行包括在神经网络中的归一化层中的运算中的部分的目标张量;确定具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素的内核;和通过在通道轴方向上执行基于目标张量与内核的卷积来确定与执行所述运算中的部分的结果对应的中间张量。
所述一个或多个处理器可被配置为:通过从通过基于目标张量与内核的卷积所确定的结果张量提取对角线元素,来确定中间张量。
内核的确定的输入通道的数量可基于应用于目标张量的归一化单元的元素的数量。
包括在内核中的每个元素的缩放值可包括与目标张量对应的运行时值。
包括在内核中的每个元素的缩放值可等于目标张量中的相应元素的值。
在另一总体方面,一种电子装置包括:主机处理器,被配置为:响应于用于由加速器处理包括归一化层的神经网络的请求生成能够由加速器执行的指令;和加速器,被配置为:通过执行所述指令来:通过在通道轴方向上执行卷积,来确定与执行包括在归一化层中的运算中的部分的结果对应的中间张量,卷积基于目标张量和内核,目标张量将被执行所述运算中的部分,内核具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素。
在另一总体方面,一种电子装置包括:主机处理器,被配置为:响应于用于数据推断结果的请求而生成指令;和加速器,被配置为:通过执行所述指令,通过执行基于目标张量与内核的卷积来执行神经网络的归一化层的运算,内核具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素;和基于执行所述运算的步骤来确定数据推断结果。
数据推断结果可以是语音识别、机器翻译、机器解释、对象识别、模式识别和计算机视觉中的任意一个。
从下面的具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1示出电子装置的示例。
图2和图3示出针对第一归一化层处理张量的示例。
图4和图5示出针对第二归一化层处理张量的示例。
图6示出包括归一化层的神经网络的示例。
图7示出归一化层的示例。
图8和图9示出张量处理方法的示例。
图10和图11示出电子装置的示例。
贯穿附图和具体实施方式,除非另外描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对尺寸、比例和描绘可被夸大。
具体实施方式
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作顺序仅是示例,并不限于在此阐述的那些顺序,而是除了必须以特定次序发生的操作之外,可如在理解本申请的公开之后将是清楚的那样被改变。此外,为了更加清楚和简明,可省略在理解本申请的公开之后本领域已知的特征的描述。
尽管在此使用术语“第一”或“第二”来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不应受这些术语限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分进行区分。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。
贯穿说明书,当元件(诸如,层、区域或基底)被描述为“在”另一元件“上”、“连接到”或“结合到”另一元件时,该元件可直接“在”所述另一元件“上”、“连接到”或“结合到”所述另一元件,或者可存在介于它们之间的一个或多个其他元件。相反,当元件被描述为“直接在”另一元件“上”、“直接连接到”或“直接结合到”另一元件时,可不存在介于它们之间的其他元件。同样地,例如“在……之间”与“紧接在……之间”以及“与……邻近”与“与……紧邻”的表达也可如前所述的那样被解释。
在此使用的术语仅用于描述特定示例,并且将不限制公开。如在此所用,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。如在此所用,术语“和/或”包括相关所列项的任何一个和任何两个或更多个的任何组合。如在此所用,术语“包括”、“包含”和“具有”说明存在陈述的特征、数量、操作、元件、组件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、元件、组件和/或它们的组合。在此针对示例或实施例使用术语“可”(例如,对于示例或实施例可包括或实现什么)表示存在包括或实现这样的特征的至少一个示例或实施例,而所有示例不限于此。
除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员通常理解的含义以及在理解本公开之后通常理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)将被解释为具有与它们在相关领域的上下文以及本公开中的含义一致的含义,并且将不以理想化或过于形式化的含义进行解释。
在下文中,将参照附图详细描述示例。下面的具体的结构或功能性描述是为了仅描述示例而示例性的,并且示例的范围不限于本说明书中提供的描述。本领域普通技术人员可基于本申请的公开的理解对其进行各种改变和修改。附图中的相同的参考标号表示相同的元件,并且已知的功能或配置在此将被省略。
图1示出电子装置的示例。
参照图1,电子装置100可包括主机处理器110(例如,一个或多个处理器)、片外存储器120、存储器控制器130和加速器140。主机处理器110、片外存储器120、存储器控制器130和加速器140可通过总线彼此通信。
主机处理器110可以是控制包括在电子装置100中的组件的操作的装置,并且可包括例如中央处理器(CPU)。主机处理器110可接收用于在加速器140中处理神经网络的请求,并且可响应于该请求而生成可由加速器140执行的指令。该请求可用于基于神经网络的数据推断,并且加速器140可响应于生成的指令来执行神经网络以获得用于语音识别、机器翻译、机器解释、对象识别、模式识别和/或计算机视觉等的数据推断结果。主机处理器110可将神经网络的参数和推断目标数据发送到加速器140。
片外存储器120可以是设置在加速器140外部的存储器,并且可以是例如用作电子装置100的主存储器的动态随机存取存储器(DRAM)。片外存储器120可通过存储器控制器130进行访问。片外存储器120可存储将由加速器140执行的神经网络的参数,并且当加速器140中的片上存储器不足以由加速器140执行神经网络时,片外存储器120被利用。
片外存储器120可比加速器140中的片上存储器具有更大的存储器容量。然而,当神经网络被执行时,加速器140访问片外存储器120的存储器访问成本可大于加速器140访问内部片上存储器的存储器访问成本。存储器访问成本可以是访问相应存储器以及读取或写入数据所需的功率和/或时间。
加速器140可以是通过根据主机处理器110的指令执行神经网络来推断输入数据的AI加速器,并且可以是与主机处理器110不同的独立处理器。例如,加速器140可以是神经处理单元(NPU)(或神经处理器)、图形处理器(GPU)或张量处理器(TPU)。
由于根据神经网络的操作的特性,加速器140可处理可由单独的专用处理器(即,加速器140)而不是由通用主机处理器110更高效地处理的任务。在这个示例中,包括在加速器140中的片上存储器和一个或多个处理元件(PE)可由加速器140用于执行神经网络。片上存储器可以是包括在加速器140中的全局缓冲器,并且可与设置在加速器140外部的片外存储器120区分开来。例如,片上存储器可以是可通过地址空间访问的便笺式存储器(scratchpad memory)、静态随机存取存储器(SRAM)等。
神经网络可包括多个层。神经网络可包括输入层、多个隐藏层和输出层。每个层可包括多个节点(也称为人工神经元)。虽然节点可被称为“人工神经元”,但是这样的称谓不意在赋予关于神经网络结构如何在计算上映射或由此直观地识别信息与人类的神经元如何操作的任何相关性。也就是说,术语“人工神经元”仅仅是表示神经网络的硬件实现的节点的专业术语。每个节点可以是具有一个或多个输入和输出的计算单元,并且节点可彼此连接。权重可针对节点之间的连接被设置,并且权重可被调整或改变。权重可放大、减小或保持相关数据值,从而确定数据值对最终结果的影响程度。包括在先前层中的节点的加权输入可被输入到包括在输出层中的每个节点。将加权数据从预定层输入到下一层的处理可被称为传播。
为了提高神经网络的性能,归一化可被应用于多个层之间传送的数据。换句话说,可通过一系列的运算(诸如,获得从一个层传送到下一层的数据的平均值和/或方差,并且将从平均值减去相应数据的每个元素的值的结果除以方差),来对数据分布进行归一化。在一个示例中,归一化层可使用基于包括在输入张量中的一个或多个元素的值所确定的平均值和方差中的任意一个或两个来执行归一化。应用于神经网络的归一化可包括例如层归一化和实例归一化(instance normalization)。层归一化可以是不管批大小(batch size)如何都在通道方向上执行归一化的技术,并且可被应用于语言领域(诸如,语音识别、机器翻译和机器解释)中的模型。实例归一化可以是通过在宽度和高度方向上执行归一化以通道为单位对整个图像进行归一化的技术,并且可被应用于例如生成式对抗网络(generativeadversarial network,GAN)。
此外,当注意力技术应用于用于图像处理的神经网络时,池化窗口的大小等于整个图像的大小的全局平均池化(global average pooling)可被执行,并且应用了全局平均池化的神经网络可包括例如空间金字塔池化网络(spatial pyramid pooling network,SPPNet)以及挤压和激励网络(squeeze and excitation network,SENet)。
如上所述,用于执行神经网络的归一化的运算可包括用于计算每次数据在多个层之间传送时的平均值和/或方差的运算。对于这样的运算,典型的电子装置可将待归一化的数据传送到特殊运算器(诸如,加速器外部的主机处理器),并且通过特殊运算器计算的结果可被加速器再次接收,因此典型的电子装置的这样的数据移动可增加延迟和功耗。因此,为了提高电子装置100的性能,在一个示例中,当待执行的运算属于归一化层的运算时,加速器140可将待执行的运算检测为能够由主机处理器110执行的运算,并且将待执行的运算转换为能够由加速器140执行的运算来在加速器140执行。在一个示例中,一个或多个实施例的电子装置100可通过在加速器140内部执行用于执行神经网络的归一化的运算来使加速器140外部的数据移动最小化。
例如,为了执行不被加速器140直接支持的运算,平方和运算和/或均方运算可被替换为卷积运算。用于卷积运算的内核可基于将被归一化的数据来确定。通过这样,即使当卷积运算与归一化层指定的运算不匹配时,加速器140也可基于卷积运算获得与将通过直接执行由归一化层指定的运算所生成的输出相同的输出数据。总之,即使在没有修改硬件架构的情况下,加速器140也可在不将数据发送到特殊运算器(诸如,主机处理器110)的情况下,获得等同于归一化层的输出的输出数据。
在下文中,将参照下面的附图提供详细的描述。
图2和图3示出针对第一归一化层处理张量的示例。
参照图2,将输入张量的每个元素的值除以基于属于归一化单元的元素的数量而获得的常数(例如,预定值)以获得根据第一归一化层的均方运算结果的处理被示出。第一归一化层可基于层归一化,并且卷积可被执行为在通道轴方向上衰减(attenuate)。这样的卷积运算可基于卷积层来执行。为了易于描述,图2中示出的张量形状、内核形状和元素值的示例被提供,并且各种形状和值可没有限制地适用。
对于数据归一化,根据第一归一化层的运算可被执行,并且已经执行了这样的运算的部分的张量可对应于图2的输入张量。例如,图2的输入张量可以是从在输入到第一归一化层的张量中包括的元素的平均值减去每个元素的值的平均相减张量(averagesubtraction tensor)。根据图2的示例,输入张量具有(1,4,3,1)的形状,并且每个元素的值可由a至l中的任何一个来表示。这里,张量结构或形状被表示为(批、通道、宽度、高度)。
图2中示出的内核可具有基于输入张量确定的输入通道的数量(例如,总数量)和输出通道的数量。内核可具有与属于应用于输入张量的归一化单元的元素的数量相等的输入通道的数量和输出通道的数量。例如,内核可具有与输入张量的通道的数量相等的输入通道的数量和输出通道的数量。在图2的示例中,内核具有(4,4,1,1)的形状,其中,内核形状被表示为(输入通道、输出通道、宽度、高度)。此外,在内核中,对角线元素可具有与属于应用于输入张量的归一化单元的元素的数量(例如,输入张量的通道的数量)的平方根的倒数对应的缩放值,并且剩余的元素可具有缩放值“0”。在本说明书中,为了易于描述,缩放值也可被称为权重值。
可在通道轴方向上执行输入张量与内核之间的卷积。在图2中,通道轴方向可由Ch指示。例如,在输入张量的每个通道中的第一元素值a、b、c和d以及内核的第一列的值1/2、0、0和0之中,a可以与1/2相乘,b、c和d可以与“0”相乘。基于它们的和,输出张量中的第一元素的值可被确定为a/2。同样地,也可对剩余的元素执行卷积。输出张量中的每个元素可具有通过将输入张量中的相应元素的值与输入张量的通道的数量的平方根的倒数相乘而获得的值。输出张量具有与输入张量的形状相同的(1,4,3,1)的形状。
根据另一示例,在包括移位器和/或除法器的加速器中,可在移位器和/或除法器中执行除以属于应用于输入张量的归一化单元的元素的数量的平方根的运算,而无需上述卷积运算。
参照图3,用于获得根据第一归一化层的均方运算结果的卷积运算的示例被示出。为了易于描述,图3中示出的张量形状、内核形状和元素值是示例,并且各种形状和元素值可没有限制地适用。
图3的示例中的输入张量可以是在图2的示例中获得的输出张量,并且可具有(1,4,3,1)的形状。
图3中示出的内核可具有基于输入张量确定的输入通道的数量和输出通道的数量。内核可具有基于属于应用于输入张量的归一化单元的元素的数量确定的输入通道的数量。例如,内核可具有与输入张量的通道的数量相等的输入通道的数量。此外,内核可具有与输入张量的宽度长度相等的输出通道的数量。在图3的示例中,内核可具有(4,3,1,1)的形状。
此外,内核中的每个元素可具有基于输入张量确定的缩放值。包括在内核中的每个元素的缩放值可包括与目标张量(例如,输入张量)对应的运行时值(例如,在运行时目标张量的值)。例如,包括在内核中的每个元素的缩放值可等于目标张量中的相应元素的值。
可在通道轴方向上执行输入张量与内核之间的卷积。首先,包括在内核中的第一列中的缩放值a/2、b/2、c/2和d/2可与输入张量卷积,从而初始张量(例如,结果张量)的第一通道中的元素可被确定。例如,输入张量的每个通道中的第一元素值a/2、b/2、c/2和d/2可分别与内核的第一列的相应的缩放值a/2、b/2、c/2和d/2相乘,并且基于它们的和,初始张量的第一通道中的第一元素的值可被确定为(a2+b2+c2+d2)/4。通过上述卷积运算,输入张量的每个通道中的第一元素值a/2、b/2、c/2和d/2的平方和可被获得。在初始张量中,第一通道中的第二元素的值可通过输入张量的每个通道中的第二元素值e/2、f/2、g/2和h/2与内核的相应的缩放值a/2、b/2、c/2和d/2之间的卷积运算来确定。然而,由于卷积运算被执行为获得平方和,因此初始张量的第一通道中的第二元素的值可被丢弃,这将在后面描述。同样地,初始张量的第一通道中的第三元素的值也可被丢弃。
此外,包括在内核中的第二列中的缩放值e/2、f/2、g/2和h/2可与输入张量卷积,从而初始张量的第二通道中的元素可被确定。例如,输入张量的每个通道中的第二元素值e/2、f/2、g/2和h/2可分别与内核的第二列的相应缩放值e/2、f/2、g/2和h/2相乘,并且基于它们的和,初始张量的第二通道中的第二元素的值可被确定为(e2+f2+g2+h2)/4。同样地,剩余的元素值可被确定。此外,包括在内核中的第三列中的缩放值i/2、j/2、k/2和l/2可与输入张量卷积,从而初始张量的第三通道中的元素可被确定。
在图3的示例中,初始张量可具有(1,3,3,1)的形状,并且输出张量可通过从初始张量提取对角线元素来确定。从初始张量提取对角线元素不需要额外的硬件。输出张量可具有(1,3,1,1)的形状。在一个示例中,图3的输入张量、内核和输出张量可分别对应于以下进一步描述的图8和图9中的任意一个图中的目标张量、内核和中间张量。
属于应用于图3的输入张量的归一化单元的元素的平方和可通过在图3中执行的卷积运算来计算。当图2的卷积运算和图3的卷积运算被连续执行时,在图3中最终获得的输出张量可包括属于应用于图2的输入张量的归一化单元的元素的均方。此外,如上所述,当图2的输入张量是平均相减张量时,在图3中最终获得的输出张量可包括属于归一化单元的元素的方差。该方差可用于归一化,这将在后面详细描述。
这样,在张量没有在加速器外部被传输的情况下,通过两个卷积层输入到归一化层的张量的方差可通过包括在加速器中的乘法器累加器(MAC)来获得,从而降低存储器访问成本。当加速器包括移位器和/或除法器时,即使在没有卷积层的情况下,图2中描述的运算也可被执行,因此方差可仅使用一个卷积层来计算。
根据另一示例,图2中描述的运算可在图3中描述的运算之后被执行。在这个示例中,图3中计算的输出张量的元素值中的每个可与属于归一化单元的元素的数量相除。然而,当将输入范围限制为小的时,如上所述在图2中描述的运算之后执行图3中描述的运算在量化方面可能是方便的,因此可根据实施例被优选。
虽然在先前的非限制性示例中输入张量的高度为“1”,但是当宽度或高度不为“1”时,输入张量可被重塑以使宽度或高度为“1”,然后上述运算可被执行,并且获得的输出张量可被再次重塑为原始输入张量形状。
此外,虽然在先前的描述中输入张量的批为“1”,但是当批不为“1”时,上述运算可针对每个批被独立地执行。
图4和图5示出针对第二归一化层处理张量的示例。
参照图4,将输入张量的每个元素的值除以基于属于归一化单元的元素的数量而获得的常数(例如,预定值)以获得根据第二归一化层的均方运算结果的处理被示出。第二归一化层可基于实例归一化,并且在通过重塑和转置变换张量形状之后,卷积可被执行为在通道轴方向上衰减,来以通道为单位对整个图像进行归一化。这样的卷积运算可基于卷积层来执行。为了易于描述,图4中示出的张量形状、内核形状和元素值是示例,并且各种形状和值可没有限制地适用。
对于数据归一化,根据第二归一化层的运算应当被执行,并且已经执行了这样的运算的部分的张量可对应于图4中的输入张量。例如,图4的输入张量可以是在从输入到第二归一化层的张量中包括的元素的平均值减去每个元素的值的平均相减张量。根据图4的示例,输入张量具有(1,2,2,2)的形状,并且每个元素的值可由a至h中的任何一个来表示。这里,张量结构被表示为(批、通道、宽度、高度)。
为了将以上参照图2和图3描述的在通道轴方向上执行的卷积运算应用于根据第二归一化层的实例归一化,输入张量的形状可被变换。首先,输入张量的每个通道中的二维元素可被重塑为一维元素。例如,输入张量的第一通道中的元素a至d可排列成一行,并且第二通道中的元素e到h也可排列成一行。重塑的输入张量可被转置。转置的输入张量可具有(1,4,2,1)的形状,并且如以下所述与内核卷积。
图4中示出的内核可具有基于输入张量确定的输入通道的数量和输出通道的数量。内核可具有与属于被应用的归一化单元的元素的数量相等的输入通道的数量和输出通道的数量。属于应用于实例归一化的归一化单元的元素的数量可以是在输入张量中的同一通道中包括的元素的数量。此外,内核中的对角线元素和剩余的元素可具有不同的缩放值。例如,内核的对角线元素可包括被应用的归一化单元中的元素的数量的平方根的倒数作为缩放值。剩余的元素可包括缩放值“0”。
可在通道轴方向上执行输入张量与内核之间的卷积,并且在图4中,通道轴方向可由Ch指示。以上提供的描述(例如,图2的输入张量与内核之间的卷积的描述)可应用于卷积运算。
根据另一示例,如果加速器包括移位器和/或除法器,则需要卷积层的卷积运算可被替换为将由移位器和/或除法器执行的除法运算。通过利用移位器和/或除法器,用于执行归一化的卷积层的数量可减少“1”。
参照图5,用于获得根据第二归一化层的均方运算结果的卷积运算的示例被示出。为了易于描述,图5中示出的张量形状、内核形状和元素值是示例,并且各种形状和元素值可没有限制地适用。
图5的示例中的输入张量可以是在图4的示例中获得的输出张量,并且可具有(1,4,2,1)的形状。
图5中示出的内核可具有基于输入张量确定的输入通道的数量和输出通道的数量。内核可具有基于属于应用于输入张量的归一化单元的元素的数量确定的输入通道的数量。在用于根据第二归一化层的实例归一化的同一通道中包括的元素对应于归一化单元。如图4中所述,由于通过重塑和转置来变换张量形状,张量被变换为具有与包括在同一通道中的元素的数量相等的通道的数量,所以在图5的示例中内核可具有与输入张量的通道的数量相等的输入通道的数量。此外,内核可具有与输入张量的宽度长度相等的输出通道的数量。在图5的示例中,内核可具有(4,2,1,1)的形状。
此外,内核中的每个元素可具有基于输入张量确定的缩放值。包括在内核中的每个元素的缩放值可包括与目标张量对应的运行时值。例如,包括在内核中的每个元素的缩放值可等于目标张量中的相应元素的值。
可在通道轴方向上执行输入张量与内核之间的卷积。以上提供的描述(例如,图3的输入张量与内核之间的卷积的描述)可应用于卷积运算。
在图5的示例中,通过卷积运算确定的初始张量(例如,结果张量)可具有(1,2,2,1)的形状,并且输出张量可通过从初始张量提取对角线元素来确定。从初始张量提取对角线元素不需要额外的硬件,输出张量可具有(1,2,1,1)的形状。在另一示例中,可通过将作为卷积的结果而确定的元素(例如,初始张量中的元素)变换为与输入张量的形式相同的形式,来确定输出张量。在一个示例中,图5的输出张量、输入张量和内核可分别对应于以下进一步描述的图8和图9中的任意一个图中的中间张量、目标张量和内核。
这样,当图4的卷积运算和图5的卷积运算被连续执行时,在图5中最终获得的输出张量可包括属于应用于图4的输入张量的归一化单元的元素的均方。此外,如上所述,当图4的输入张量是平均相减张量时,在图5中最终获得的输出张量可包括属于归一化单元的元素的方差。获得的方差可被用于归一化。
当图5的卷积运算被执行时,图4中描述的重塑和转置运算可在执行卷积之前被执行。属于归一化单元的元素的平方和可通过图5的卷积运算来计算。
根据另一示例,图4中描述的运算可在图5中描述的运算之后被执行。在这个示例中,对输入张量进行重塑和转置可在图5的卷积运算之前被执行,并且图5中计算的输出张量的元素值中的每个可除以属于归一化单元的元素的数量。
虽然在先前的非限制性示例中输入张量的批为“1”,但是当批不为“1”时,上述运算可针对每个批被独立地执行。
图6示出包括归一化层的神经网络的示例。
参照图6,示出基于变换器的双向编码器表示(bidirectional encoderrepresentations from transformers,BERT)模型。在包括在BERT模型中的多个层之中存在归一化层610,其中,当相应的模型被重复12次时,归一化层610总共被执行12次。由于归一化层610彼此分开设置,所以典型的BERT模型难以在加速器外部一次性处理归一化层610,并且由于在典型的BERT模型中归一化层610每次在加速器外部被处理,所以数据移动的成本(例如,存储器访问成本)可能是大的。然而,当这样的典型的归一化层610被替换为以上参照图1至图5描述的根据一个或多个实施例的卷积层时,用于处理归一化层610的加速器外部的这样的数据移动被防止,因此这样的成本可被有效地防止。在图6的示例中,具有表示为(最小批,长度,长度)的(1,128,128)形状的注意力掩蔽(attention_mask)和具有表示为(长度,隐藏层大小)的(128,768)形状的另一输入可被输入到注意力层。
图7示出归一化层的示例。
参照图7,示出归一化层的内部结构。图7中示出的归一化层可以是用于执行包括在图6的BERT模型中的层归一化的层。平均相减张量可从归一化层的第一部分710处的输入张量被获得,并且方差张量可在第二部分720处被获得。然而,第二部分720可替换为如以上参照图1至图5描述的一个或多个实施例的一个或两个卷积层。方差的平方根的倒数可在第三部分730处被获得,然后在第四部分740处与平均相减张量相乘。在这种情况下,归一化可通过神经网络被执行。
图8和图9示出张量处理方法的示例。
参照图8,示出由主机处理器执行的张量处理方法。在操作810中,主机处理器可接收用于通过加速器处理神经网络(例如,包括归一化层的神经网络)的请求。在操作820中,主机处理器可响应请求生成可由加速器执行的指令,并且将所述指令发送到加速器。在一个示例中,加速器可响应于指令执行神经网络,并且将执行神经网络的结果发送到主机处理器。例如,加速器可检测包括在神经网络中的运算中的待执行的运算属于能够由加速器执行的运算还是能够由主机处理器执行的运算;当检测到待执行的运算属于能够由主机处理器执行的运算时,将待执行的运算转换为能够由加速器执行的运算来在加速器执行。加速器可通过以下步骤将待执行的运算转换为能够由加速器执行的运算来在加速器执行:通过在通道轴方向上执行基于目标张量和内核的卷积,来确定与执行待执行的运算的结果对应的中间张量,目标张量将被执行待执行的运算,内核具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素。在一个示例中,当指令由加速器执行时,加速器可通过在通道轴方向上执行基于目标张量与内核的卷积来确定与执行包括在归一化层中的运算中的部分的结果对应的中间张量。在一个示例中,图8的中间张量、目标张量和内核可分别对应于上述图3和图5中的任意一个图中的输出张量、输入张量和内核。
参照图9,示出由加速器执行的张量处理方法(例如,当待执行的运算是归一化层的运算中的部分时加速器执行的张量处理方法)。在操作910中,加速器可获得(例如,确定)将被执行包括在神经网络中的归一化层中的运算中的部分的目标张量。在操作920中,加速器可获得具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素的内核。在操作930中,加速器可通过在通道轴方向上执行基于目标张量与内核的卷积,来确定与执行运算中的部分的结果对应的中间张量。在一个示例中,图9的中间张量、目标张量和内核可分别对应于上述图3和图5中的任意一个图中的输出张量、输入张量和内核。张量处理方法可应用于在算法端、编译器端、使用多头注意力的网络硬件(诸如,自动语音识别(ASR)或变换器)的训练或推断。此外,即使在低精度量化方案被应用于张量处理方法时,也可在系统准确性可保持不变的同时确保性能增益。
以上参照图1至图7提供的描述可应用于图8和图9中示出的运算。
图10和图11示出电子装置的示例。
参照图10,电子装置(例如,图1的电子装置100)可被实现为服务器1000。
服务器1000可以是与由用户控制的用户终端不同的独立装置,并且可通过有线和/或无线网络与用户终端通信。在一个示例中,服务器1000可以是用于识别图像的电子装置。将使用神经网络推断的数据(例如,待识别的图像)可从用户终端被收集,并通过网络发送到服务器1000,并且服务器1000可根据以上参照图1至图5描述的张量处理方法通过加速器1020来处理包括在神经网络中的层(例如,归一化层)。例如,主机处理器1010可接收用于识别待识别图像的请求,响应于请求而生成能够由加速器1020执行的指令,并且将指令发送到加速器1020。加速器1020可响应于指令以待识别图像作为输入执行神经网络,并且将执行神经网络的结果作为待识别图像的识别结果发送到主机处理器1010。在这个示例中,张量可不被发送到加速器1020外部的主机处理器1010以执行根据归一化层的运算。然后,服务器1000可获得来自神经网络的推断结果(例如,图像识别结果),并将推断结果返回给用户终端。在这个示例中,由于张量不被发送到加速器1020外部,所以张量传输的延迟和功耗可降低,服务器1000识别图像的效率可提高。例如,用户终端可包括各种计算装置(诸如,智能电话、平板计算机、膝上型计算机和个人计算机)、各种可穿戴装置(诸如,智能手表和智能眼镜)、各种家用电器(诸如,智能扬声器、智能TV和智能冰箱)、智能汽车、智能自动服务终端(kiosk)和物联网(IoT)装置。
用户终端可简单地向用户提供从服务器1000接收的推断结果,或者基于推断结果执行后续操作。
参照图11,电子装置(例如,图1的电子装置100)可被实现为用户终端1100。在图11中,为了易于描述,用户终端1100被示出为智能电话。然而,由用户控制的任何装置可没有限制地适用于此。用户终端1100可直接从用户获得将使用神经网络推断的数据,并根据上述张量处理方法通过加速器1120处理包括在神经网络中的归一化层。在这个示例中,张量可不被发送到加速器1120外部的主机处理器1110以执行根据归一化层的运算,加速器1120可基于执行根据归一化层的运算的步骤来确定数据推断结果。此外,用户终端1100可获得来自神经网络的推断结果,并且简单地向用户提供推断结果或基于推断结果执行后续操作。
在此针对图1至图11描述的电子装置、主机处理器、片外存储器、存储器控制器、加速器、服务器、用户终端、电子装置100、主机处理器110、片外存储器120、存储器控制器130、加速器140、服务器1000、主机处理器1010、加速器1020、用户终端1100、主机处理器1110、加速器1120和其他设备、装置、单元、模块和组件由硬件组件来实现或是硬件组件的代表。可用于执行在本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器、以及被配置为执行在本申请中描述的操作的任何其他电子组件。在其他示例中,通过计算硬件(例如,通过一个或多个处理器或计算机)来实现执行在本申请中描述的操作的硬件组件中的一个或多个硬件组件。处理器或计算机可由一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器、或者被配置为以限定的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)来实现。在一个示例中,处理器或计算机包括或者连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行用于执行在本申请中描述的操作的指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用)。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为了简明,单数术语“处理器”或“计算机”可用于在本申请中描述的示例的描述中,但是在其他示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件、或多种类型的处理元件、或两者。例如,单个硬件组件、或者两个或更多个硬件组件可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可由一个或多个处理器、或者处理器和控制器来实现,并且一个或多个其他硬件组件可由一个或多个其他处理器、或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理和多指令多数据(MIMD)多处理。
执行在本申请中描述的操作的图1至图11中示出的方法由计算硬件(例如,由一个或多个处理器或计算机)来执行,计算硬件被实现为如上所述执行指令或软件以执行在本申请中描述的由该方法执行的操作。例如,单个操作、或者两个或更多个操作可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可由一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可由一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作、或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任何组合,以单独地或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。指令或软件可基于附图中示出的框图和流程图以及在此使用的相应的描述使用任何编程语言被编写,附图中示出的框图和流程图以及在此使用的相应的描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、可编程随机存取只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态驱动器(SSD)、卡式存储器(诸如,多媒体卡或微型卡(例如,安全数字(SD)或极限数字(XD)))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘和任何其他装置,任何其他装置被配置为以非暂时性方式存储指令或软件以及任何相关联的数据、数据文件和数据结构并将指令或软件以及任何相关联的数据、数据文件和数据结构提供给一个或多个处理器或计算机,使得一个或多个处理器或计算机能够执行指令。在一个示例中,指令或软件以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得指令和软件以及任何相关联的数据、数据文件和数据结构以分布式方式由一个或多个处理器或计算机存储、访问和执行。
虽然本公开包括特定示例,但是在理解本申请的公开之后将清楚的是,在不脱离权利要求和它们的等同物的精神和范围的情况下,可在这些示例中做出形式和细节上的各种改变。在此描述的示例应仅被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述应被认为可适用于其他示例中的相似的特征或方面。如果描述的技术以不同的顺序被执行、和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合、和/或由其他组件或它们的等同物替代或补充,则可实现合适的结果。
Claims (17)
1.一种电子装置,包括:
主机处理器,被配置为:接收用于由加速器处理神经网络的请求,响应于所述请求而生成能够由加速器执行的指令,并且将所述指令发送到加速器;和
加速器,被配置为:响应于所述指令执行神经网络,并且将执行神经网络的结果发送到主机处理器,
其中,加速器被配置为:通过在通道轴方向上执行基于目标张量和内核的卷积,来确定与执行待执行的运算的结果对应的中间张量,目标张量将被执行待执行的运算,内核具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素。
2.根据权利要求1所述的电子装置,其中,加速器被配置为:通过从通过基于目标张量与内核的卷积所确定的结果张量提取对角线元素,来确定中间张量。
3.根据权利要求1所述的电子装置,其中,内核的输入通道的数量基于应用于目标张量的归一化单元的元素的数量被确定。
4.根据权利要求3所述的电子装置,其中,应用于目标张量的归一化单元的元素的数量等于目标张量的通道的数量,并且内核的输入通道的数量等于目标张量的通道的数量。
5.根据权利要求1所述的电子装置,其中,内核的输出通道的数量基于目标张量的宽度长度被确定。
6.根据权利要求1所述的电子装置,其中,包括在内核中的每个元素的缩放值包括与目标张量对应的运行时值。
7.根据权利要求1所述的电子装置,其中,包括在内核中的每个元素的缩放值等于目标张量中的相应元素的值。
8.根据权利要求1至7中的任意一项所述的电子装置,其中,目标张量基于以下项被确定:
平均相减张量,包括通过从在神经网络的与待执行的运算对应的层的输入张量中包括的元素的平均值减去每个元素的值所确定的值;和
常数值,基于应用于目标张量的归一化单元的元素的数量被确定。
9.根据权利要求8所述的电子装置,其中,目标张量通过在通道轴方向上执行卷积被确定,卷积基于:
平均相减张量;和
第二内核,具有基于平均相减张量确定的输入通道的数量和输出通道的数量并且包括基于所述常数值确定的缩放值的对角线元素。
10.根据权利要求9所述的电子装置,其中,
第二内核的输入通道的数量和输出通道的数量等于归一化单元的元素的数量,并且
第二内核中的对角线元素具有与剩余元素的缩放值不同的缩放值。
11.根据权利要求9所述的电子装置,其中,所述常数值等于应用于目标张量的归一化单元的元素的数量的平方根,并且第二内核中的对角线元素的缩放值等于平方根的倒数。
12.根据权利要求1至7中的任意一项所述的电子装置,其中,
当待执行的运算属于归一化层的运算时,加速器将待执行的运算检测为能够由主机处理器执行的运算,并且
其中,归一化层被配置为:使用基于包括在目标张量中的一个或多个元素的值所确定的平均值和方差中的任意一个或两个来执行归一化。
13.根据权利要求1所述的电子装置,其中,加速器被配置为:
在内核与被变换使得包括在同一通道中的元素排列成一行的目标张量之间执行卷积,并且
通过将作为卷积的结果而确定的元素变换为与目标张量的形式相同的形式,来确定中间张量。
14.根据权利要求1至7中的任意一项所述的电子装置,其中,卷积在加速器中被执行,使得目标张量不被发送到加速器外部以执行待执行的运算。
15.根据权利要求1至7中的任意一项所述的电子装置,其中,加速器被包括在以下中的任意一个:
用户终端,被输入将使用神经网络推断的数据;和
服务器,从用户终端接收将被推断的数据。
16.一种神经网络的处理方法,包括:
通过主机处理器接收用于由加速器处理神经网络的请求;
通过主机处理器响应于所述请求而生成能够由加速器执行的指令,并且将所述指令发送到加速器;和
通过加速器响应于所述指令,执行神经网络,并且将执行神经网络的结果发送到主机处理器;
其中,执行神经网络的步骤包括:通过在通道轴方向上执行基于目标张量和内核的卷积,来确定与执行待执行的运算的结果对应的中间张量,目标张量将被执行待执行的运算,内核具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素。
17.一种用于识别图像的电子装置,包括:
主机处理器,被配置为:接收用于识别待识别图像的请求,响应于所述请求而生成能够由加速器执行的指令,并且将所述指令发送到加速器;和
加速器,被配置为:响应于所述指令以待识别图像作为输入执行神经网络,并且将执行神经网络的结果作为待识别图像的识别结果发送到主机处理器,
其中,加速器被配置为:通过在通道轴方向上执行基于目标张量和内核的卷积,来确定与执行待执行的运算的结果对应的中间张量,目标张量将被执行待执行的运算,内核具有基于目标张量确定的输入通道的数量和输出通道的数量并且包括基于目标张量确定的缩放值的元素。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200074268A KR20210156554A (ko) | 2020-06-18 | 2020-06-18 | 텐서 처리 방법, 가속기 및 이를 포함한 전자 장치 |
KR10-2020-0074268 | 2020-06-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113821471A true CN113821471A (zh) | 2021-12-21 |
Family
ID=73838943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011346557.2A Pending CN113821471A (zh) | 2020-06-18 | 2020-11-26 | 神经网络的处理方法和电子装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210397935A1 (zh) |
EP (1) | EP3926543A1 (zh) |
KR (1) | KR20210156554A (zh) |
CN (1) | CN113821471A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327630B (zh) * | 2022-01-05 | 2023-02-10 | 北京大学 | 一种适用于华为昇腾芯片的高性能算子生成方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10037490B2 (en) * | 2016-12-13 | 2018-07-31 | Google Llc | Performing average pooling in hardware |
KR20180070103A (ko) * | 2016-12-16 | 2018-06-26 | 삼성전자주식회사 | 인식 방법 및 인식 장치 |
KR102415508B1 (ko) * | 2017-03-28 | 2022-07-01 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
WO2018235357A1 (ja) * | 2017-06-22 | 2018-12-27 | 日本電気株式会社 | 演算装置、演算方法及びプログラム |
SG10202108020VA (en) * | 2017-10-16 | 2021-09-29 | Illumina Inc | Deep learning-based techniques for training deep convolutional neural networks |
DE102018200534A1 (de) * | 2018-01-15 | 2019-07-18 | Robert Bosch Gmbh | Verfahren zum Betreiben eines künstlichen neuronalen Netzes |
KR102065672B1 (ko) * | 2018-03-27 | 2020-01-13 | 에스케이텔레콤 주식회사 | 합성곱 연산을 위한 장치 및 방법 |
GB2574372B (en) * | 2018-05-21 | 2021-08-11 | Imagination Tech Ltd | Implementing Traditional Computer Vision Algorithms As Neural Networks |
US11301546B2 (en) * | 2018-11-19 | 2022-04-12 | Groq, Inc. | Spatial locality transform of matrices |
US11175919B1 (en) * | 2018-12-13 | 2021-11-16 | Amazon Technologies, Inc. | Synchronization of concurrent computation engines |
US20220129740A1 (en) * | 2019-01-23 | 2022-04-28 | Google Llc | Convolutional neural networks with soft kernel selection |
GB2582352B (en) * | 2019-03-20 | 2021-12-15 | Imagination Tech Ltd | Methods and systems for implementing a convolution transpose layer of a neural network |
US11568238B2 (en) * | 2019-06-28 | 2023-01-31 | Amazon Technologies, Inc. | Dynamic processing element array expansion |
US20210103803A1 (en) * | 2019-10-08 | 2021-04-08 | Apple Inc. | Multi-Mode Planar Engine For Neural Processor |
WO2021088569A1 (en) * | 2019-11-05 | 2021-05-14 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Convolution method and device, electronic device |
-
2020
- 2020-06-18 KR KR1020200074268A patent/KR20210156554A/ko active Search and Examination
- 2020-10-30 US US17/085,264 patent/US20210397935A1/en active Pending
- 2020-11-26 CN CN202011346557.2A patent/CN113821471A/zh active Pending
- 2020-12-15 EP EP20214065.3A patent/EP3926543A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20210156554A (ko) | 2021-12-27 |
US20210397935A1 (en) | 2021-12-23 |
EP3926543A1 (en) | 2021-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110175671B (zh) | 神经网络的构建方法、图像处理方法及装置 | |
US20220335284A1 (en) | Apparatus and method with neural network | |
CN113449857B (zh) | 一种数据处理方法和数据处理设备 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN113868187A (zh) | 处理神经网络的方法和电子装置 | |
EP3528181B1 (en) | Processing method of neural network and apparatus using the processing method | |
US11144291B1 (en) | Loop-oriented neural network compilation | |
US20240135174A1 (en) | Data processing method, and neural network model training method and apparatus | |
US20210182670A1 (en) | Method and apparatus with training verification of neural network between different frameworks | |
EP3964945A1 (en) | Electronic device with storage device implementation | |
JP2018194974A (ja) | 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法 | |
JP2022546271A (ja) | カーネルチューニングパラメータを予測するための方法及び装置 | |
WO2022227024A1 (zh) | 神经网络模型的运算方法、训练方法及装置 | |
CN113821471A (zh) | 神经网络的处理方法和电子装置 | |
CN111027670B (zh) | 特征图处理方法、装置、电子设备及存储介质 | |
CN113496248A (zh) | 训练计算机实施的模型的方法和设备 | |
CN114118348A (zh) | 加速器、操作加速器的方法以及包括加速器的电子装置 | |
US11461662B1 (en) | Compilation time reduction for memory and compute bound neural networks | |
US10824944B2 (en) | Method for feature data recalibration and apparatus thereof | |
CN114298289A (zh) | 一种数据处理的方法、数据处理设备及存储介质 | |
CN115601513A (zh) | 一种模型超参数的选择方法及相关装置 | |
CN116050469A (zh) | Ai模型的处理方法、运算方法及装置 | |
CN113762472A (zh) | 一种神经网络的指令序列生成方法及装置 | |
WO2021120036A1 (zh) | 数据处理装置和数据处理方法 | |
US12039360B2 (en) | Operation method of host processor and accelerator, and electronic device including the same |
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 |