CN113868187A - 处理神经网络的方法和电子装置 - Google Patents
处理神经网络的方法和电子装置 Download PDFInfo
- Publication number
- CN113868187A CN113868187A CN202011346259.3A CN202011346259A CN113868187A CN 113868187 A CN113868187 A CN 113868187A CN 202011346259 A CN202011346259 A CN 202011346259A CN 113868187 A CN113868187 A CN 113868187A
- Authority
- CN
- China
- Prior art keywords
- tensor
- input
- accelerator
- kernel
- elements
- 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 91
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000012545 processing Methods 0.000 title claims abstract description 19
- 230000004044 response Effects 0.000 claims abstract description 28
- 230000008569 process Effects 0.000 claims abstract description 19
- 238000010606 normalization Methods 0.000 claims description 91
- 238000012935 Averaging Methods 0.000 claims description 13
- 230000015654 memory Effects 0.000 description 59
- 238000003672 processing method Methods 0.000 description 9
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 5
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000011176 pooling Methods 0.000 description 5
- 210000002569 neuron Anatomy 0.000 description 4
- 238000013519 translation Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003909 pattern recognition Methods 0.000 description 2
- 239000004984 smart glass Substances 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
- 230000007423 decrease Effects 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
- 238000013139 quantization Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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
- 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
- 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/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
-
- 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
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/041—Abduction
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
公开了处理神经网络的方法和电子装置。所述电子装置包括:主机处理器,被配置为:接收由加速器来处理神经网络的请求,响应于所述请求生成能够由加速器执行的指令,并且将所述指令发送到加速器;和加速器,被配置为:响应于所述指令执行神经网络,并且将执行神经网络的结果发送到主机处理器,其中,加速器被配置为:检测包括在神经网络中的运算中的待执行的运算属于能够由加速器执行的运算还是能够由主机处理器执行的运算;当检测到待执行的运算属于能够由主机处理器执行的运算时,将待执行的运算转换为能够由加速器执行的运算来在加速器执行。
Description
本申请要求于2020年6月30日在韩国知识产权局提交的第10-2020-0080219号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及具有张量处理的方法、加速器和电子装置。
背景技术
独立硬件可被专用于人工智能(AI)。例如,AI可通过预定的操作来执行推断和学习。这样,各种装置可以是用于实现和执行AI的专属硬件。
用于AI的专属硬件可由例如图形处理器(GPU)来实现,或由可改变用途的现场可编程门阵列(FPGA)和专用集成电路(ASIC)来实现。
发明内容
提供本发明内容以简化的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求保护的主题的关键特征或必要特征,也不意在用于帮助确定要求保护的主题的范围。
在一个总体方面,一种电子装置,包括:主机处理器,被配置为:接收由加速器来处理神经网络的请求,响应于所述请求生成能够由加速器执行的指令,并且将所述指令发送到加速器;和加速器,被配置为:响应于所述指令执行神经网络,并且将执行神经网络的结果发送到主机处理器,其中,加速器被配置为:通过在通道轴方向上执行基于输入张量和内核的卷积,来确定与归一化层的运算的一部分的结果对应的中间张量,其中,输入张量是所述层的并且包括多个通道,内核的输入通道的数量基于输入张量被确定并且内核的元素的缩放值基于输入通道的数量被确定。
在一个总体方面,一种处理神经网络的方法,包括:通过主机处理器接收由加速器来处理神经网络的请求;通过主机处理器响应于所述请求生成能够由加速器执行的指令,并且将所述指令发送到加速器;和通过加速器响应于所述指令执行神经网络,并且将执行神经网络的结果发送到主机处理器,其中,执行神经网络的步骤包括:通过在通道轴方向上执行基于输入张量和内核的卷积,来确定与通过神经网络的与待执行的运算对应的层执行的运算的一部分的结果对应的中间张量,其中,输入张量是所述层的并且包括多个通道,内核的输入通道的数量基于输入张量被确定并且内核的元素的缩放值基于输入通道的数量被确定。
在一个总体方面,一种用于识别图像的电子装置,包括:主机处理器,被配置为:接收用于识别待识别图像的请求,响应于所述请求生成能够由加速器执行的指令,并且将所述指令发送到加速器;和加速器,被配置为:响应于所述指令以待识别图像作为输入执行神经网络,并且将执行神经网络的结果作为待识别图像的识别结果发送到主机处理器,其中,加速器被配置为:通过在通道轴方向上执行基于输入张量和内核的卷积,来确定与神经网络的与待执行的运算对应的层执行的运算的一部分的结果对应的中间张量,其中,输入张量是所述层的并且包括多个通道,内核的输入通道的数量基于输入张量被确定并且内核的元素的缩放值基于输入通道的数量被确定。
在一个总体方面,一种电子装置,包括:主机处理器,被配置为:接收由加速器来处理神经网络的请求,响应于所述请求生成能够由加速器执行的指令,并且将所述指令发送到加速器;和加速器,被配置为:响应于所述指令执行神经网络,并且将执行神经网络的结果发送到主机处理器,其中,加速器被配置为:基于从加速器的片上存储器接收的指示待卷积的通道的数量和指示神经网络的与待执行的运算对应的层的运算是平均运算还是平均相减运算的信息,来确定内核,基于从片上存储器接收的所述层的输入张量,通过执行基于接收的输入张量和确定的内核的卷积,来确定与所述层的运算的结果对应的中间张量。
在一个总体方面,一种电子装置,包括:主机处理器,被配置为:接收用于数据推断结果的由加速器来处理神经网络的请求,响应于所述请求生成能够由加速器执行的指令,并且将所述指令发送到加速器;和加速器,被配置为:响应于所述指令执行神经网络,并且将执行神经网络的结果作为数据推断结果发送到主机处理器,其中,加速器被配置为:使用神经网络的隐藏层来确定包括在神经网络中的与待执行的运算对应的层的输入张量;通过执行基于输入张量和内核的卷积来确定与所述层的运算的结果对应的中间张量,内核的输入通道的数量基于输入张量被确定,内核的元素的缩放值基于输入通道的数量被确定;和基于执行所述运算来执行神经网络以获得数据推断结果。在一个总体方面,一种处理器实现的张量处理包括:接收由加速器来处理包括归一化层的神经网络的请求;和响应于所述请求生成能够由加速器执行的指令,其中,通过执行所述指令,加速器被配置为:通过在通道轴方向上执行基于输入张量和内核的卷积,来确定与归一化层的运算的一部分的结果对应的中间张量,其中,输入张量是归一化层的并且包括多个通道,内核的输入通道的数量基于输入张量确定并且内核的元素的缩放值基于输入通道的数量确定。
中间张量可通过经由卷积从输入张量的一个或多个元素中的每个的值减去所述一个或多个元素的平均值而被确定,并且与归一化层的输出对应的输出张量可基于中间张量被确定。
内核的输入通道的数量和输出通道的数量可等于输入张量的通道的数量,并且内核的对角线元素可具有与内核的剩余元素的缩放值不同的缩放值。
内核的输入通道的数量和输出通道的数量可等于包括在输入张量的同一通道中的元素的数量,并且内核的对角线元素可具有与内核的剩余元素的缩放值不同的缩放值。
卷积可在内核与被转换使得包括在输入张量的同一通道中的元素沿通道轴方向排列的转换的输入张量之间执行,并且中间张量可通过将确定的作为卷积的结果的元素转换为与所述输入张量相同的形式被确定。
对确定的元素进行转换的步骤可包括对确定的元素进行转换使得中间张量的通道的数量等于输入张量的通道的数量。
内核的输入通道的数量可等于输入张量的通道的数量,并且内核的元素的缩放值可对应于输入张量的通道的数量的倒数。
可基于包括在输入张量中的元素的平均值确定中间张量。
中间张量的元素可通过对包括在以下的任意一个中的元素进行平均被分别确定:输入张量的每个通道中的同一列;和输入张量的同一通道。
内核的输入通道的数量可等于包括在输入张量的同一通道中的元素的数量,并且内核的元素的缩放值可对应于包括在同一通道中的元素的数量的倒数。
卷积可在加速器中执行,使得输入张量不从用于根据归一化层执行运算的所述加速器外部发送。
加速器可被包括在用户终端和服务器中的任意一个或两者,用户终端被配置为接收将要使用神经网络推断的数据,服务器被配置为从用户终端接收将要推断的数据。
接收请求的步骤可包括:通过主机处理器接收请求,并且生成所述指令的步骤可包括:通过主机处理器生成所述指令。
一种非暂时性计算机可读存储介质可存储指令,所述指令在由一个或多个处理器执行时,配置所述一个或多个处理器执行所述方法。
在另一总体方面,一种加速器包括一个或多个处理器,所述一个或多个处理器被配置为:获得包括在神经网络中的归一化层的输入张量;获得具有基于输入张量确定的数量的输入通道并且包括基于输入通道的数量确定的缩放值的元素的内核;和通过在通道轴方向上执行基于输入张量和内核的卷积,来确定与归一化层的运算的部分的结果对应的中间张量。
所述一个或多个处理器可被配置为:通过经由卷积从输入张量的一个或多个元素中的每个的值减去所述一个或多个元素的平均值,来确定中间张量,并且与归一化层的输出对应的输出张量可基于中间张量被确定。
内核的输入通道的数量和输出通道的数量可等于输入张量的通道的数量,并且内核的对角线元素可具有与内核的剩余元素的缩放值不同的缩放值。
内核的输入通道的数量和输出通道的数量可等于包括在输入张量的同一通道中的元素的数量,并且内核的对角线元素可具有与内核的剩余元素的缩放值不同的缩放值。
所述一个或多个处理器可被配置为:执行内核与被转换使得包括在输入张量的同一通道中的元素沿通道轴方向排列的转换的输入张量之间的卷积,并且通过将确定的作为所述卷积的结果的元素转换为与所述输入张量相同的形式,来确定中间张量。
内核的输入通道的数量可等于输入张量的通道的数量,并且内核的元素的缩放值可对应于输入张量的通道的数量的倒数。
内核的输入通道的数量可等于包括在输入张量的同一通道中的元素的数量,并且内核的元素的缩放值可对应于包括在同一通道中的元素的数量的倒数。
卷积可在所述加速器内执行,使得输入张量不从用于根据归一化层执行运算的所述加速器外部发送。
一种电子装置可包括:主机处理器,被配置为生成指令;和加速器,其中,加速器被配置为通过执行所述指令来确定中间张量。
在另一总体方面,一种电子装置包括:主机处理器,被配置为:响应于由加速器处理包括归一化层的神经网络的请求,生成能够由加速器执行的指令;和加速器,被配置为:通过执行所述指令,通过在通道轴方向上执行基于输入张量和内核的卷积,来确定与归一化层的运算的一部分的结果对应的中间张量,其中,输入张量是归一化层的并且包括多个通道,内核的输入通道的数量基于输入张量确定并且内核的元素的缩放值基于输入通道的数量确定。
加速器可被配置为:通过经由卷积从输入张量的一个或多个元素中的每个的值减去所述一个或多个元素的平均值来确定中间张量,并且与归一化层的输出对应的输出张量基于中间张量被确定。
在另一总体方面,一种加速器包括:片上存储器,和一个或多个处理器,被配置为:基于从片上存储器接收的指示待卷积的通道的数量和指示神经网络的归一化层的运算是平均运算还是平均相减运算的信息来确定内核,基于从片上存储器接收的归一化层的输入张量通过执行基于接收的输入张量和确定的内核的卷积,来确定与归一化层的运算的结果对应的中间张量。
在另一总体方面,一种电子装置包括:主机处理器,被配置为:响应于用于数据推断结果的请求生成指令;和加速器,被配置为:通过执行所述指令:使用神经网络的隐藏层来确定包括在神经网络中的归一化层的输入张量;通过执行基于输入张量和内核的卷积来确定与归一化层的运算的结果对应的中间张量,内核的输入通道的数量基于输入张量确定,内核的元素的缩放值基于输入通道的数量确定;和基于执行所述运算来确定数据推断结果。
数据推断结果可以是语音识别、机器翻译、机器解释、对象识别、模式识别和计算机视觉中的任何一个。
所述装置是包括智能电话、平板计算机、膝上型计算机、个人计算机、智能手表、智能眼镜、智能扬声器、智能TV、智能冰箱、智能车、智能自动服务终端和物联网(IoT)装置中的任何一个的用户终端。
从下面的具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1示出电子装置的示例。
图2和图3示出由加速器处理针对第一归一化层的张量的示例。
图4和图5示出由加速器处理针对第二归一化层的张量的示例。
图6示出内核生成器的示例。
图7示出包括归一化层的神经网络的示例。
图8示出归一化层的示例。
图9和图10示出张量处理方法的示例。
图11和图12示出电子装置的示例。
贯穿附图和具体实施方式,除非另外描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对尺寸、比例和描绘可被夸大。
具体实施方式
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或***的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或***的各种改变、修改和等同物将是清楚的。例如,在此描述的操作顺序仅是示例,并不限于在此阐述的那些顺序,而是除了必须以特定次序发生的操作之外,可如在理解本申请的公开之后将是清楚的那样被改变。此外,为了更加清楚和简明,可省略在理解本申请的公开之后本领域已知的特征的描述。
尽管在此使用术语“第一”或“第二”来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不应受这些术语限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。
贯穿本公开,当元件(诸如层、区域或基底)被描述为“在”另一元件“上”、“连接到”或“结合到”另一元件时,该元件可直接“在”所述另一元件“上”、直接“连接到”或直接“结合到”所述另一元件,或者可存在介于它们之间的一个或多个其他元件。相反,当元件被描述为“直接在”另一元件“上”、“直接连接到”或“直接结合到”另一元件时,可不存在介于它们之间的其他元件。同样地,例如“在……之间”与“紧接在……之间”以及“与……邻近”与“与……紧邻”的表达也可如前所述的那样被解释。在此使用的术语仅用于描述特定示例,而不应限制公开。如在此所用,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。如在此所用,术语“和/或”包括相关所列项的任何一个和任何两个或更多个的任何组合。如在此所用,术语“包括”、“包含”和“具有”说明存在陈述的特征、数量、操作、元件、组件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、元件、组件和/或它们的组合。在此针对示例或实施例使用术语“可”(例如,对于示例或实施例可包括或实现什么)表示存在包括或实现这样的特征的至少一个示例或实施例,而所有示例不限于此。
除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员通常理解的、与理解了本公开一致的、以及在理解本公开之后一致的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)将被解释为具有与它们在相关领域的上下文和本公开中的含义一致的含义,并且将不以理想化或过于形式化的含义进行解释。
在下文中,将参照附图详细描述示例。下面的具体的结构或功能性描述是示例性的,以仅描述示例,并且示例的范围不限于本公开中提供的描述。本领域普通技术人员可基于本申请的公开的理解对其进行各种改变和修改。附图中的相同的参考标号表示相同的元件,并且在此将省略已知的功能或配置。
图1示出电子装置的示例。
参照图1,电子装置100可包括主机处理器110(例如,一个或多个处理器)、片外存储器(off-chip memory)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可以是比通用主机处理器110更有效地处理任务的单独的专属处理器。在这个示例中,包括在加速器140中的片上存储器和一个或多个处理元件(PE)可在执行神经网络时由加速器140利用。片上存储器可以是包括在加速器140中的全局缓冲器,并且可与设置在加速器140外部的片外存储器120区分开。例如,片上存储器可以是可通过地址空间访问的暂存存储器(scratchpad memory)、静态随机存取存储器(SRAM)等。在一个实施例中,加速器140可检测包括在神经网络中的运算中的待执行的运算属于能够由加速器140执行的运算还是能够由主机处理器110执行的运算;当检测到待执行的运算属于能够由主机处理器110执行的运算时,加速器140可将待执行的运算转换为能够由加速器140执行的运算来在加速器140执行,而不使该运算在主机处理器110被执行。
神经网络可包括多个层。神经网络可包括输入层、多个隐藏层和输出层。多个层中的每个层可包括多个节点,节点也称为人工神经元。虽然节点可被称为“人工神经元”,但是这样的称谓不意在赋予关于神经网络架构如何在计算上映射或由此直观地识别信息与人类的神经元如何操作的任何相关性。也就是说,术语“人工神经元”仅仅是表示神经网络的硬件实现的节点的术语。每个节点可以是具有输出和一个或多个输入的计算单元,并且节点可彼此连接。权重可针对节点之间的连接被设置,并且权重可被调整或改变。权重可放大、减少或保持相关数据值,从而确定数据值对最终结果的影响程度。包括在先前层中的节点的加权输入可被输入到包括在输出层中的每个节点。将加权数据从预定层输入到下一层的处理可被称为传播。
为了提高神经网络的性能,归一化(normalization)可被应用于神经网络的多个层之间传送的数据。换句话说,数据分布可通过一系列运算(诸如,获得数据(例如,一个层的输出数据)的平均值,以及从平均值减去相应数据的每个元素的值(例如,以获得将要作为输入数据传输到下一层的数据))而被归一化。应用于神经网络的归一化可包括例如层归一化和实例归一化(instance normalization)。层归一化可以是用于不管批尺寸(batchsize)如何都在通道方向上执行归一化的技术,并且可被应用于语言领域(诸如,语音识别、机器翻译和机器解释)中的模型。实例归一化可以是用于以通道为单位对整个图像进行归一化的技术,并且可被应用于例如生成式对抗网络(generative adversarial network,GAN)。
此外,当在其中池化窗的大小等于整个图像的大小的注意力技术(attentiontechnique)应用于用于图像处理的神经网络时,全局平均池化(global average pooling)可被执行,并且应用了全局平均池化的神经网络可包括例如空间金字塔池化网络(spatialpyramid pooling network,SPPNet)和/或挤压和激励网络(squeeze and excitationnetwork,SENet)。
如上所述,针对数据每次在层之间被传输,神经网络的运算可包括计算一个层的输出数据的平均值和/或从数据中的每个元素的值减去平均值以获得将要传输到下一层的数据的运算。对于这样的平均运算和/或平均相减运算,典型的电子装置可将待归一化的数据从加速器传送到特定运算器(诸如,加速器外部的主机处理器),并且通过特定运算器计算的平均值可被加速器再次接收,这样的数据移动会增加典型电子装置的延迟和功耗。因此,为了提高电子装置100相对于这样的典型电子装置的性能,一个或多个实施例的电子装置100可通使用神经网络过在加速器140内部执行的平均运算和/或平均相减运算,来最小化加速器140外部的数据移动。例如,在一个示例中,当待执行的运算属于归一化层的运算时,加速器140可将待执行的运算检测为能够由主机处理器110执行的运算,并且将待执行的运算转换为能够由加速器140执行的运算来在加速器140执行。
例如,为了实现可能不被加速器140直接支持的平均运算和/或平均相减运算,平均运算和/或平均相减运算可用通过加速器140执行的卷积运算代替。用于卷积运算的内核可基于将被归一化的数据被生成。通过这样,即使当卷积运算与归一化层指定的运算不完全匹配时,加速器140也可基于卷积运算获得与通过直接执行由归一化层指定的运算所生成的输出相同的输出数据。总之,即使在不将输入数据发送到特定运算器(诸如,主机处理器110)并且没有修改加速器140的硬件架构的情况下,加速器140也可获得相当于归一化层的输出的输出数据。
在下文中,将参照接下来的附图提供详细的描述。
图2和图3示出由加速器(例如,加速器140)处理针对第一归一化层的张量的示例。
参照图2,示出了根据第一归一化层的用于获得平均运算结果的卷积运算的示例。第一归一化层可基于层归一化,其中,卷积可被执行以在通道轴方向上减少张量的大小。为了易于描述,图2中示出的张量形状、内核形状和元素值的示例被提供,并且各种形状和元素值可没有限制地应用。
图2的输入张量可以是输入到第一归一化层的数据。在图2的示例中,输入张量具有(1,3,1,4)的形状,并且每个元素的值可由a至l中的任何一个表示。在图2的示例中,图2的张量结构表示为(批(batch)、通道的数量、高度、宽度)。在一个示例中,输入张量可对应于神经网络的一个层(例如,隐藏层)的输出数据。
图2中示出的内核可具有基于输入张量确定的数量(例如,总数量)的输入通道。例如,内核的输入通道的数量可等于输入张量的通道的数量。应用于用于获得平均运算结果的卷积运算的内核的输出通道的数量可以是“1”。在图2的示例中,内核具有(1,1,3,1)的形状,其中,内核形状表示为(高度、宽度、输入通道的数量、输出通道的数量)。此外,包括在内核中的元素的缩放值可对应于输入张量的通道的数量的倒数。在图2的示例中,缩放值是1/3。在本公开中,为了易于描述,缩放值还可被称为权重值。
输入张量与内核之间的卷积可在通道轴方向上执行。在图2中,通道轴方向可由C指示,卷积可由*表示。例如,输入张量的每个通道中的第一元素的值a、e和i可与内核的相应缩放值1/3相乘并且相乘的结果可被求和,使得图3中示出的平均张量中的第一元素的值可被确定为(a+e+i)/3。同样地,也可对剩余元素类似地执行卷积,使得平均张量中的第二元素、第三元素和第四元素的值可分别被确定为(b+f+j)/3、(c+g+k)/3和(d+h+l)/3。因此,平均张量中的每个元素可包括输入张量中的相应元素的平均值。平均张量可具有从输入张量的(1,3,1,4)的形状在通道轴方向上大小减少同时保持批、高度、和宽度大小的(1,1,1,4)的形状。换句话说,可通过卷积运算减少通道的数量,而不减少批、高度和宽度的数量。通过如以上参照图2所描述的那样确定平均张量,输入张量的平均值可在不将输入张量发送到特定运算器(诸如,主机处理器110)的情况下在加速器140中通过单次卷积运算而被确定。
参照图3,示出了根据第一归一化层的用于获得平均相减运算结果的卷积运算的示例。第一归一化层可基于层归一化,其中,卷积运算可被执行以在通道轴方向上减少张量的大小,这将在下面进一步详细描述。图3中示出的张量形状、内核形状和元素值是易于描述的示例,并且各种形状和元素值可没有限制地应用。
图3中示出的输入张量可以是输入到第一归一化层的数据。在图3的示例中,输入张量具有(1,3,1,4)的形状,其中,图3的张量结构表示为(批、通道的数量、高度、宽度),并且每个元素的值可由a至l中的任何一个表示。在一个示例中,图3的输入张量可对应于神经网络的一个层(例如,隐藏层)的输出数据。
图3中示出的内核可具有基于输入张量确定的数量的输入通道和基于输入张量确定的数量的输出通道。例如,内核的输入通道的数量和输出通道的数量可等于输入张量的通道的数量。在图3的示例中,内核可具有(1,1,3,3)的形状,其中,内核形状表示为(高度、宽度、输入通道的数量、输出通道的数量)。此外,内核中的对角线元素和剩余元素可具有不同的缩放值。例如,对角线元素可具有缩放值1-1/n(这里,n表示输入张量的通道的数量),剩余元素可具有缩放值-1/n。当图3的示例中的输入张量的通道的数量n是“3”时,对角线元素的缩放值可以是2/3,剩余元素的缩放值可以是-1/3。
输入张量与内核之间的卷积可在通道轴方向上执行,以确定平均相减张量。首先,包括在内核中的第一列中的缩放值2/3、-1/3和-1/3可与输入张量卷积,由此平均相减张量的第一通道中的元素的值可被确定。例如,输入张量的每个通道中的第一元素的值a、e和i可分别与内核的相应缩放值2/3、-1/3和-1/3相乘并且相乘的结果可被求和,使得平均相减张量的第一通道的第一元素的值可被确定为2/3a-1/3e-1/3i(即,a-(a+e+i)/3)。这里,(a+e+i)/3对应于输入张量的每个通道中的第一元素的值a、e和i的平均值。类似地,输入张量的每个通道中的第二元素的值b、f和j可分别与内核的相应缩放值2/3、-1/3和-1/3相乘并且相乘的结果可被求和,使得平均相减张量的第一通道的第二元素的值可被确定为b-(b+f+j)/3。这里,(b+f+j)/3对应于输入张量的每个通道中的第二元素的值b、f和j的平均值。同样地,平均相减张量中的第一通道的剩余元素值可被类似地确定,使得平均相减张量的第三元素和第四元素的值可分别被确定为例如c-(c+g+k)/3和d-(d+h+l)/3。
此外,包括在内核中的第二列中的缩放值-1/3、2/3和-1/3可与输入张量卷积,由此平均相减张量的第二通道中的元素的值可被确定。例如,输入张量的每个通道中的第一元素的值a、e和i可分别与内核的相应缩放值-1/3、2/3和-1/3相乘并且相乘的结果可被求和,使得平均相减张量中的第二通道的第一元素的值可被确定为e-(a+e+i)/3。同样地,平均相减张量中的第二通道的剩余元素值可被确定。此外,包括在内核中的第三列中的缩放值-1/3、-1/3和2/3可与输入张量卷积,由此平均相减张量的第三通道中的元素的值可被确定。
因此,平均相减张量中的每个元素可包括通过从输入张量的通道中的相应元素之一的值减去输入张量的通道中的元素的值的平均值而获得的值。平均相减张量可具有与输入张量的形状相同的(1,3,1,4)的形状。通过如以上参照图3所述确定平均相减张量,输入张量的平均相减运算可在不将输入张量发送到特定运算器(诸如,主机处理器110)的情况下在加速器140中通过单次卷积运算被执行。
可知,通过每次卷积生成的平均相减张量中的每个通道中的元素当与输入张量的通道的数量相比时具有减少的通道的数量。这是因为卷积运算可被执行以在通道轴方向上减少输入张量的大小。
因为根据归一化层的剩余运算可被额外应用于通过如以上分别参照图2和图3所述的卷积获得的平均张量和平均相减张量,所以图2和图3的平均张量和平均相减张量还可被称为中间张量。
图4和图5示出由加速器(例如,加速器140)处理针对第二归一化层的张量的示例。
参照图4,示出了根据第二归一化层的用于获得平均运算结果的卷积运算的示例。第二归一化层可基于实例归一化,实例归一化以通道为单位对整个输入张量(例如,输入图像或基于输入图像确定的卷积特征图)进行归一化,其中,实例归一化可通过改变输入张量的形状然后执行在通道轴方向上减少输入张量的大小的卷积运算而被完成,这将在下面进一步描述。图4中示出的张量形状、内核形状和元素值是易于描述的示例,并且各种形状和元素值可没有限制地应用。
图4的输入张量可以是输入到第二归一化层的数据。在图4的示例中,输入张量具有(1,2,2,3)的形状,其中,图4的张量结构表示为(批、通道的数量、高度、宽度),并且每个元素的值可由a至l中的任何一个来表示。
为了基于卷积运算执行实例归一化,输入张量可被转换到预定形状。首先,输入张量的每个通道中的二维元素可被重塑为一维元素,以生成图4的重塑的输入张量。例如,输入张量的第一通道中的元素a至f可被排列为一行。第二通道中的元素g至l也可被排列为一行。重塑的输入张量可具有(1,2,1,6)的形状。重塑的输入张量可被转置,以生成图4的转置的输入张量。转置的输入张量可具有(1,6,1,2)的形状,并且可如下所述与内核进行卷积。
图4中示出的内核可具有基于输入张量确定的数量的输入通道。例如,内核的输入通道的数量可等于转置的输入张量的通道的数量。应用于用于获得平均运算结果的卷积运算的内核的输出通道的数量可以是“1”。在图4的示例中,内核可具有(1,1,6,1)的形状,其中,内核形状表示为(高度、宽度、输入通道的数量、输出通道的数量)。此外,包括在内核中的元素的缩放值可对应于转置的输入张量的通道的数量的倒数。在图4的示例中,缩放值是1/6。
输入张量与内核之间的卷积可在通道轴方向上执行。在图4中,通道轴方向可由C指示。例如,输入张量的每个通道中的第一元素的值a至f可与内核的相应缩放值1/6相乘相乘的结果可被求和,使得图4的初始张量中的第一元素的值可被确定为(a+b+c+d+e+f)/6。同样地,也可对剩余元素类似地执行卷积,使得初始张量中的第二元素的值可被确定为(g+h+i+j+k+l)/6。初始张量可具有从转置的输入张量的(1,6,1,2)的形状在通道轴方向上大小减少而保持批、高度、和宽度大小的(1,1,1,2)的形状。换句话说,可通过卷积运算减少通道的数量而不减少批、高度、和宽度的数量。
通过将初始张量转换为与输入张量相同的形式(例如,相同数量的通道),图4中示出的平均张量可被确定。例如,通过对初始张量进行转置,具有(1,2,1,1)形状的平均张量可被确定。平均张量中的每个元素可包括输入张量的每个通道中包括的元素的平均值。通过如以上参照图4所述确定平均张量,输入张量的平均值可在不将输入张量发送到特定运算器(诸如,主机处理器110)的情况下在加速器140中通过单次卷积运算被确定。
参照图5,示出了根据第二归一化层的用于获得平均相减运算结果的卷积运算的示例。第二归一化层可基于实例归一化,其中,实例归一化可通过改变输入张量的形状然后执行在通道轴方向上减少输入张量的大小的卷积运算被完成。图5中示出的张量形状、内核形状和元素值是易于描述的示例,并且各种形状和元素值可没有限制地应用。
图5中示出的转置的输入张量可对应于图4的转置的输入张量,因此,上面提供的关于生成用于卷积运算以获得根据第二归一化层的平均相减运算的结果的转置的输入张量的描述可应用于图5的转置的输入张量。
图5中示出的内核可具有基于转置的输入张量确定的数量的输入通道和基于输入张量确定的数量的输出通道。例如,输入通道的数量和输出通道的数量可等于转置的输入张量的通道的数量。在图5的示例中,内核可具有(1,1,6,6)的形状。此外,内核中的对角线元素和剩余元素可具有不同的缩放值。例如,对角线元素可具有缩放值1-1/n(这里,n表示转置的输入张量的通道的数量),剩余元素可具有缩放值-1/n。在图5的示例中,当转置的输入张量的通道的数量是“6”时,对角线元素的缩放值可以是5/6,剩余元素的缩放值可以是-1/6。
转置的输入张量与内核之间的卷积可在通道轴方向上执行,以确定初始张量。例如,转置的输入张量的每个通道中的第一元素的值可分别与内核的第一列中的对应的缩放值相乘,并且相乘的结果可被求和,使得初始张量的第一通道的第一元素A的值可以是a-(a+b+c+d+e+f)/6。类似地,转置的输入张量的每个通道中的第二元素的值可分别与内核的第一列中的对应的缩放值相乘,并且相乘的结果可被求和,使得初始张量的第一通道的第二元素G的值可以是g-(g+h+i+j+k+l)/6。同样地,初始张量的剩余元素值可被类似地确定。以上参照图3提供的输入张量与内核之间的卷积的描述可应用于图5的转置的输入张量与内核之间的卷积运算。生成的作为卷积的结果的初始张量可具有(1,6,1,2)的形状,这与转置的输入张量的形状相同。
通过将初始张量转换为与输入张量(例如,图4的输入张量)相同的形式(例如,相同数量的通道),图5中示出的平均相减张量可被确定。例如,图5的具有(1,2,1,6)形状的转置的初始张量可通过对初始张量进行转置而被确定,具有与输入张量的形状相同形状的(1,2,2,3)形状的平均相减张量可通过对转置的初始张量进行重塑而被确定。如上所述,输入张量的平均相减运算可在不将输入张量发送到特定运算器(诸如,主机处理器110)的情况下在加速器140中通过单次卷积运算被执行。
由于根据归一化层的剩余运算可被额外地应用于通过图4和图5中的卷积而获得的平均张量和平均相减张量,因此图4和图5的平均张量和平均相减张量还可被称为中间张量。
图6示出内核生成器的示例。
参照图6,示出了片上存储器610、内核生成器620和PE 630。在一个示例中,片上存储器610、内核生成器620和PE 630中的任何一个或任何组合可被包括在图1的加速器140中。
内核生成器620可以是生成用于卷积(例如,上面参照图1至图5描述的卷积中的任何一个或多个)的内核(例如,上面参照图1至图5描述的内核中的任何一个或多个)的硬件装置。内核生成器620可接收将被卷积的通道的数量n和标志(flag)。通道的数量n可通过输入张量(例如,上面参照图1至图5描述的输入张量中的任何一个或多个)被确定,并且例如在层归一化的情况下可对应于输入张量的通道的数量,并且例如在实例归一化的情况下可对应于转置的输入张量(例如,上面参照图1至图5描述的转置的输入张量中的任何一个或多个)的通道的数量。标志可以是指示将要用卷积代替的归一化运算是平均运算还是平均相减运算的指示符。例如,具有值“0”的标志可指示平均运算将被实现为卷积,具有值“1”的标志可指示平均相减运算将被实现为卷积。如果标志具有值“0”,则内核生成器620可生成(1,1,n,1)形状的内核,如果标志具有值“1”,则内核生成器620可生成(1,1,n,n)形状的内核。
由内核生成器620生成的内核可被传送到PE 630,并且PE 630可执行内核与从片上存储器610接收的输入张量之间的卷积,从而确定中间张量(例如,上面参照图1至图5描述的平均张量和平均相减张量中的任何一个或多个)。确定的中间张量可被发送给片上存储器610用于根据归一化层的剩余运算。可选地,根据归一化层的剩余运算可随后在PE 630中被执行,并且确定的作为结果的输出张量可被发送给片上存储器610。
图7示出包括归一化层的神经网络的示例。
参照图7,示出了来自变换器的双向编码器表征(bidirectional encoderrepresentations from transformer,BERT)模型。归一化层710存在于包括在BERT模型中的多个层中,其中,当相应的模型被重复12次时,归一化层710总共被执行12次。当归一化层710彼此分开设置时,实现BERT模型的典型电子装置不会被配置为同时在(例如,在特定运算器(诸如,主机处理器)中的)加速器外部处理两个归一化层710,和/或当归一化层710每次在加速器外部被处理时,数据移动的成本(例如,存储器访问成本)可很大。然而,当用上面参照图1至图6描述的卷积代替归一化层710时,归一化层710的操作可在一个或多个实施例的加速器140中被执行,并且这样的成本可被有效地防止。在图7的示例中,具有被表示为(最小批,长度,程度)的(1,128,128)形状的注意力掩蔽(attention_mask)以及具有被表示为(长度,隐藏层大小)的(128,768)形状的另一输入可被输入到注意力层。
图8示出归一化层的示例。
参照图8,示出了归一化层的内部结构。图8中示出的归一化层可以是用于执行包括在图7的BERT模型中的层归一化的层。平均相减运算810可在归一化层的第一部分中执行。通过用单次卷积(例如,上面参照图1至图7描述的卷积中的任何一个或多个)代替平均相减张量810,一个或多个实施例的电子装置100可有效地抑制输入张量在加速器140外部的移动,从而降低加速器140访问片外存储器120的存储器访问成本。
图9和图10示出张量处理方法的示例。
参照图9,示出了由主机处理器(例如,图1的主机处理器110)执行的张量处理方法。在操作910中,主机处理器可接收由加速器来处理神经网络(例如,包括归一化层的神经网络)的请求。在操作920中,主机处理器可响应于请求生成可由加速器执行的指令,并且将所述指令发送到加速器。在一个示例中,加速器可响应于指令执行神经网络,并且将执行神经网络的结果发送到主机处理器。例如,加速器可检测包括在神经网络中的运算中的待执行的运算属于能够由加速器执行的运算还是能够由主机处理器执行的运算;当检测到待执行的运算属于能够由主机处理器执行的运算时,加速器可将待执行的运算转换为能够由加速器执行的运算来在加速器执行。加速器可通过以下步骤将待执行的运算转换为能够由加速器执行的运算来在加速器执行:通过在通道轴方向上执行基于输入张量和内核的卷积,来确定与通过神经网络的与待执行的运算对应的层执行的运算的一部分的结果对应的中间张量,其中,输入张量是所述层的并且具有多个通道,内核具有基于输入张量确定的数量的输入通道并且包括基于输入通道的数量确定的缩放值的元素。在一个示例中,当指令由加速器执行时,加速器可通过在通道轴方向上执行基于输入张量和内核的卷积,来确定与通过归一化层执行的运算的一部分或至少一部分的结果对应的中间张量。
参照图10,示出了由加速器(例如,图1的加速器140)执行的张量处理方法(例如,当待执行的运算是归一化层的运算中的至少一部分时加速器执行的张量处理方法)。在操作1010中,加速器可获得包括在神经网络中的归一化层的输入张量。在操作1020中,加速器可获得具有基于输入张量确定的数量的输入通道并且包括基于输入通道的数量确定的缩放值的元素的内核。在操作1030中,加速器可通过在通道轴方向上执行基于输入张量和内核的卷积,来确定与通过归一化层执行的运算的一部分或至少一部分的结果对应的中间张量。
张量处理方法可应用于在算法端、编译器端、使用多头注意力(multi-headattention)的网络的硬件(诸如,自动语音识别(ASR)或变换器)进行训练或推断。此外,即使将低精度量化方案应用于张量处理方法时,性能增益也可在***准确性可保持不变的情况下被保证。
参照图1至图8提供的描述可应用于图9至图10中示出的运算。
图11和图12示出电子装置的示例。
参照图11,电子装置(例如,图1的电子装置100)可被实现为服务器1100。
服务器1100可以是与由用户控制的用户终端不同的单独的装置,并且可通过有线和/或无线网络与用户终端通信。在一个示例中,服务器1100可以是用于识别图像的加速器***。将要使用神经网络被推断的数据(例如,待识别的图像)可从用户终端收集,并通过网络发送到服务器1100,并且服务器1100可根据上面参照图1至图10描述的张量处理方法由加速器1120来处理包括在神经网络中的层(例如,归一化层)。例如,主机处理器1110可接收用于识别待识别图像的请求,响应于请求而生成能够由加速器1120执行的指令,并且将指令发送到加速器1120。加速器1120可响应于指令以待识别图像作为输入执行神经网络,并且将执行神经网络的结果作为待识别图像的识别结果发送到主机处理器1110。在这个示例中,归一化层的输入张量可以不被发送到加速器1120外部的主机处理器1110。然后,服务器1100可从神经网络获得推断结果(例如,图像识别结果),并将推断结果返回给用户终端。在这个示例中,由于张量不被发送到加速器1120外部,所以张量传输的延迟和功耗可降低,服务器1100识别图像的效率可提高。例如,用户终端可包括各种计算装置(诸如,智能电话、平板电脑、膝上型计算机和个人计算机)、各种可穿戴装置(诸如,智能手表和智能眼镜)、各种家用电器(诸如,智能扬声器、智能TV和智能冰箱)、智能汽车、智能自动服务机(kiosk)和物联网(IoT)装置。
用户终端可简单地向用户提供从服务器1100接收的推断结果,或者基于推断结果执行后续操作。
参照图12,电子装置(例如,图1的电子装置100)可被实现为用户终端1200。在图12中,为了易于描述,用户终端1200示出为智能电话。然而,由用户控制的任何装置可没有限制地应用于此。用户终端1200可直接从用户获得将要使用神经网络被推断的数据,并且根据上述张量处理方法由加速器1220处理包括在神经网络中的归一化层。在这个示例中,归一化层的输入张量可以不被发送到加速器1220外部的主机处理器1210,加速器1220可基于执行根据归一化层的运算的步骤来确定数据推断结果。此外,用户终端1200可从神经网络获得推断结果,并且简单地向用户提供推断结果或基于推断结果执行后续操作。
在此针对图1至图12描述的电子装置、主机处理器、片外存储器、存储器控制器、加速器、片上存储器、内核生成器、PE、服务器、用户终端、电子装置100、主机处理器110、片外存储器120、存储器控制器130、加速器140、片上存储器610、内核生成器620、PE 630、服务器1100、主机处理器1110、加速器1120、用户终端1200、主机处理器1210、加速器1220和其他设备、装置、单元、模块和组件由硬件组件来实现或是硬件组件的代表。可用于执行在本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器、以及被配置为执行在本申请中描述的操作的任何其他电子组件。在其他示例中,通过计算硬件(例如,通过一个或多个处理器或计算机)来实现执行在本申请中描述的操作的硬件组件中的一个或多个硬件组件。处理器或计算机可由一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器、或者被配置为以限定的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)来实现。在一个示例中,处理器或计算机包括或者连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行用于执行在本申请中描述的操作的指令或软件(诸如,操作***(OS)和在OS上运行的一个或多个软件应用)。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为了简明,单数术语“处理器”或“计算机”可用于在本申请中描述的示例的描述中,但是在其他示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件、或多种类型的处理元件、或两者。例如,单个硬件组件、或者两个或更多个硬件组件可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可由一个或多个处理器、或者处理器和控制器来实现,并且一个或多个其他硬件组件可由一个或多个其他处理器、或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理和多指令多数据(MIMD)多处理。
执行在本申请中描述的操作的图1至图12中示出的方法由计算硬件(例如,由一个或多个处理器或计算机)来执行,计算硬件被实现为如上所述执行指令或软件以执行在本申请中描述的由所述方法执行的操作。例如,单个操作、或者两个或更多个操作可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可由一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可由一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作、或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任何组合,以单独地或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。指令或软件可基于附图中示出的框图和流程图以及在此使用的相应的描述使用任何编程语言被编写,附图中示出的框图和流程图以及在此使用的相应的描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(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 (28)
1.一种电子装置,包括:
主机处理器,被配置为:接收由加速器来处理神经网络的请求,响应于所述请求生成能够由加速器执行的指令,并且将所述指令发送到加速器;和
加速器,被配置为:响应于所述指令执行神经网络,并且将执行神经网络的结果发送到主机处理器,
其中,加速器被配置为:通过在通道轴方向上执行基于输入张量和内核的卷积,来确定与归一化层的运算的一部分的结果对应的中间张量,
其中,输入张量是所述层的并且包括多个通道,内核的输入通道的数量基于输入张量被确定并且内核的元素的缩放值基于输入通道的数量被确定。
2.根据权利要求1所述的电子装置,其中,
加速器被配置为:通过经由卷积从输入张量的一个或多个元素中的每个的值减去所述一个或多个元素的平均值,来确定中间张量,并且
与归一化层的输出对应的输出张量基于中间张量被确定。
3.根据权利要求1所述的电子装置,其中,
内核的输入通道的数量和输出通道的数量等于输入张量的通道的数量,并且
内核的对角线元素具有与内核的剩余元素的缩放值不同的缩放值。
4.根据权利要求1所述的电子装置,其中,内核的输入通道的数量和输出通道的数量等于包括在输入张量的同一通道中的元素的数量,并且
内核的对角线元素具有与内核的剩余元素的缩放值不同的缩放值。
5.根据权利要求1所述的电子装置,其中,加速器被配置为:
执行内核与被转换使得包括在输入张量的同一通道中的元素沿通道轴方向排列的转换的输入张量之间的卷积,并且
通过将确定的作为所述卷积的结果的元素转换为与所述输入张量相同的形式,来确定中间张量。
6.根据权利要求5所述的电子装置,其中,对确定的元素进行转换的处理包括对确定的元素进行转换使得中间张量的通道的数量等于输入张量的通道的数量。
7.根据权利要求1所述的电子装置,其中,
内核的输入通道的数量等于输入张量的通道的数量,并且
内核的元素的缩放值对应于输入张量的通道的数量的倒数。
8.根据权利要求1所述的电子装置,其中,
内核的输入通道的数量等于包括在输入张量的同一通道中的元素的数量,并且
内核的元素的缩放值对应于包括在同一通道中的元素的数量的倒数。
9.根据权利要求1所述的电子装置,其中,基于包括在输入张量中的元素的平均值确定中间张量。
10.根据权利要求9所述的电子装置,其中,中间张量的元素通过对包括在以下中的任意一个中的元素进行求平均被分别确定:
输入张量的每个通道中的同一列;和
输入张量的同一通道。
11.根据权利要求1至10中的任意一项所述的电子装置,其中,当待执行的运算属于归一化层的运算时,加速器将待执行的运算检测为能够由主机处理器执行的运算,并且
其中,卷积在所述加速器内执行,使得输入张量不从用于根据归一化层执行运算的所述加速器外部被发送。
12.根据权利要求1所述的电子装置,其中,加速器被包括在用户终端和服务器中的任意一个或两者,用户终端被配置为接收将要使用神经网络被推断的数据,服务器被配置为从用户终端接收将要被推断的数据。
13.根据权利要求1所述的电子装置,其中,接收请求的处理包括:通过主机处理器接收请求,并且生成所述指令的处理包括:通过主机处理器生成所述指令。
14.一种处理神经网络的方法,包括:
通过主机处理器接收由加速器来处理神经网络的请求;
通过主机处理器响应于所述请求生成能够由加速器执行的指令,并且将所述指令发送到加速器;和
通过加速器响应于所述指令执行神经网络,并且将执行神经网络的结果发送到主机处理器,
其中,执行神经网络的步骤包括:通过在通道轴方向上执行基于输入张量和内核的卷积,来确定与通过神经网络的与待执行的运算对应的层执行的运算的一部分的结果对应的中间张量,
其中,输入张量是所述层的并且包括多个通道,内核的输入通道的数量基于输入张量被确定并且内核的元素的缩放值基于输入通道的数量被确定。
15.根据权利要求14所述的方法,其中,
中间张量通过经由卷积从输入张量的一个或多个元素中的每个的值减去所述一个或多个元素的平均值而被确定,并且
与所述层的输出对应的输出张量基于中间张量被确定。
16.根据权利要求14所述的方法,其中,
内核的输入通道的数量和输出通道的数量等于输入张量的通道的数量,并且
内核的对角线元素具有与内核的剩余元素的缩放值不同的缩放值。
17.根据权利要求14所述的方法,其中,
内核的输入通道的数量和输出通道的数量等于包括在输入张量的同一通道中的元素的数量,并且
内核的对角线元素具有与内核的剩余元素的缩放值不同的缩放值。
18.根据权利要求14所述的方法,其中,
卷积在内核与被转换使得包括在输入张量的同一通道中的元素沿通道轴方向排列的转换的输入张量之间执行,并且
中间张量通过将确定的作为卷积的结果的元素转换为与所述输入张量相同的形式被确定。
19.根据权利要求18所述的方法,其中,对确定的元素进行转换的步骤包括对确定的元素进行转换使得中间张量的通道的数量等于输入张量的通道的数量。
20.根据权利要求14所述的方法,其中,
内核的输入通道的数量等于输入张量的通道的数量,并且
内核的元素的缩放值对应于输入张量的通道的数量的倒数。
21.根据权利要求14所述的方法,其中,基于包括在输入张量中的元素的平均值确定中间张量。
22.根据权利要求21所述的方法,其中,中间张量的元素通过对包括在以下中的任意一个中的元素进行求平均被分别确定:
输入张量的每个通道中的同一列;和
输入张量的同一通道。
23.根据权利要求14所述的方法,其中,内核的输入通道的数量等于包括在输入张量的同一通道中的元素的数量,并且
内核的元素的缩放值对应于包括在同一通道中的元素的数量的倒数。
24.根据权利要求14至23中的任意一项所述的方法,其中,当待执行的运算属于归一化层的运算时,加速器将待执行的运算检测为能够由主机处理器执行的运算,并且
其中,卷积在加速器中被执行,使得输入张量不从用于根据归一化层执行运算的所述加速器外部被发送。
25.根据权利要求14所述的方法,其中,加速器被包括在用户终端和服务器中的任意一个或两者,用户终端被配置为接收将要使用神经网络被推断的数据,服务器被配置为从用户终端接收将要被推断的数据。
26.根据权利要求14所述的方法,其中,接收请求的步骤包括:通过主机处理器接收请求,并且生成所述指令的步骤包括:通过主机处理器生成所述指令。
27.一种用于识别图像的电子装置,包括:
主机处理器,被配置为:接收用于识别待识别图像的请求,响应于所述请求生成能够由加速器执行的指令,并且将所述指令发送到加速器;和
加速器,被配置为:响应于所述指令以待识别图像作为输入执行神经网络,并且将执行神经网络的结果作为待识别图像的识别结果发送到主机处理器,
其中,加速器被配置为:通过在通道轴方向上执行基于输入张量和内核的卷积,来确定与神经网络的与待执行的运算对应的层执行的运算的一部分的结果对应的中间张量,
其中,输入张量是所述层的并且包括多个通道,内核的输入通道的数量基于输入张量被确定并且内核的元素的缩放值基于输入通道的数量被确定。
28.根据权利要求27所述的电子装置,其中,加速器被配置为:通过经由卷积从输入张量的一个或多个元素中的每个的值减去所述一个或多个元素的平均值来确定中间张量,并且
与所述层的输出对应的输出张量基于中间张量被确定。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0080219 | 2020-06-30 | ||
KR1020200080219A KR20220001821A (ko) | 2020-06-30 | 2020-06-30 | 텐서 처리 방법, 가속기 및 이를 포함한 가속기 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113868187A true CN113868187A (zh) | 2021-12-31 |
Family
ID=78982076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011346259.3A Pending CN113868187A (zh) | 2020-06-30 | 2020-11-26 | 处理神经网络的方法和电子装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210406646A1 (zh) |
KR (1) | KR20220001821A (zh) |
CN (1) | CN113868187A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3103938B1 (fr) * | 2019-12-03 | 2021-11-12 | Idemia Identity & Security France | Procédé de détection d’au moins un élément d’intérêt visible dans une image d’entrée au moyen d’un réseau de neurones à convolution |
US20230138859A1 (en) | 2021-10-28 | 2023-05-04 | Lg Electronics Inc. | Cooking appliance |
WO2024010437A1 (ko) * | 2022-07-08 | 2024-01-11 | 주식회사 딥엑스 | 신경 프로세싱 유닛 및 이의 동작 방법 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10037490B2 (en) * | 2016-12-13 | 2018-07-31 | Google Llc | Performing average pooling in hardware |
KR102415508B1 (ko) * | 2017-03-28 | 2022-07-01 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
DE102018200534A1 (de) * | 2018-01-15 | 2019-07-18 | Robert Bosch Gmbh | Verfahren zum Betreiben eines künstlichen neuronalen Netzes |
GB201804433D0 (en) * | 2018-03-20 | 2018-05-02 | Microsoft Technology Licensing Llc | Imputation using a neutral network |
US11064902B2 (en) * | 2018-06-29 | 2021-07-20 | Mayo Foundation For Medical Education And Research | Systems, methods, and media for automatically diagnosing intraductal papillary mucinous neosplasms using multi-modal magnetic resonance imaging data |
US11204976B2 (en) * | 2018-11-19 | 2021-12-21 | Groq, Inc. | Expanded kernel generation |
US11175919B1 (en) * | 2018-12-13 | 2021-11-16 | Amazon Technologies, Inc. | Synchronization of concurrent computation engines |
GB2582352B (en) * | 2019-03-20 | 2021-12-15 | Imagination Tech Ltd | Methods and systems for implementing a convolution transpose layer of a neural network |
US11262984B2 (en) * | 2019-08-01 | 2022-03-01 | Microsoft Technology Licensing, Llc. | Multi-lingual line-of-code completion system |
-
2020
- 2020-06-30 KR KR1020200080219A patent/KR20220001821A/ko unknown
- 2020-11-06 US US17/091,338 patent/US20210406646A1/en active Pending
- 2020-11-26 CN CN202011346259.3A patent/CN113868187A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20220001821A (ko) | 2022-01-06 |
US20210406646A1 (en) | 2021-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220335284A1 (en) | Apparatus and method with neural network | |
CN113868187A (zh) | 处理神经网络的方法和电子装置 | |
EP3528181B1 (en) | Processing method of neural network and apparatus using the processing method | |
US11681913B2 (en) | Method and system with neural network model updating | |
EP3964945A1 (en) | Electronic device with storage device implementation | |
WO2021218037A1 (zh) | 目标检测方法、装置、计算机设备和存储介质 | |
US20230222781A1 (en) | Method and apparatus with object recognition | |
CN114037882A (zh) | 边缘人工智能装置、电子装置及其方法 | |
CN114792387A (zh) | 图像恢复方法和设备 | |
CN113407820B (zh) | 利用模型进行数据处理的方法及相关***、存储介质 | |
US20220180150A1 (en) | Data processing method and apparatus using neural network and electronic device including the same | |
CN111027670B (zh) | 特征图处理方法、装置、电子设备及存储介质 | |
EP3926543A1 (en) | Method, accelerator, and electronic device with tensor processing | |
CN113496248A (zh) | 训练计算机实施的模型的方法和设备 | |
CN113408693A (zh) | 识别图像的方法和设备 | |
WO2022133814A1 (en) | Omni-scale convolution for convolutional neural networks | |
US11720405B2 (en) | Accelerator, method of operating the same, and electronic device including the same | |
US20210312269A1 (en) | Neural network device for neural network operation, method of operating neural network device, and application processor including neural network device | |
CN115601513A (zh) | 一种模型超参数的选择方法及相关装置 | |
CN113762472A (zh) | 一种神经网络的指令序列生成方法及装置 | |
US12039360B2 (en) | Operation method of host processor and accelerator, and electronic device including the same | |
US20240202910A1 (en) | Method and apparatus with semiconductor image processing | |
US20220075645A1 (en) | Operation method of host processor and accelerator, and electronic device including the same | |
US20220222538A1 (en) | Method and apparatus with neural network processing | |
WO2024140630A1 (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 |