CN114912590A - 处理器、操作处理器的方法以及包括处理器的电子装置 - Google Patents
处理器、操作处理器的方法以及包括处理器的电子装置 Download PDFInfo
- Publication number
- CN114912590A CN114912590A CN202110923478.1A CN202110923478A CN114912590A CN 114912590 A CN114912590 A CN 114912590A CN 202110923478 A CN202110923478 A CN 202110923478A CN 114912590 A CN114912590 A CN 114912590A
- Authority
- CN
- China
- Prior art keywords
- activations
- weights
- register
- processor
- bits
- 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
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000004913 activation Effects 0.000 claims abstract description 179
- 238000001994 activation Methods 0.000 claims abstract description 179
- 239000013598 vector Substances 0.000 claims abstract description 41
- 230000015654 memory Effects 0.000 claims description 38
- 238000013528 artificial neural network Methods 0.000 claims description 37
- 230000002441 reversible effect Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 17
- 230000003213 activating effect Effects 0.000 description 8
- 238000009825 accumulation Methods 0.000 description 7
- 238000012856 packing Methods 0.000 description 7
- 230000036961 partial effect Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000005538 encapsulation Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 4
- 230000001537 neural effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 3
- 239000003990 capacitor Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000002775 capsule Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000007788 liquid Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005442 molecular electronic Methods 0.000 description 1
- 239000002071 nanotube Substances 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation 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
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
-
- 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/50—Adding; Subtracting
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
公开了一种处理器、操作处理器的方法以及包括处理器的电子装置。所述方法包括:将权重和激活布置在相应的输入寄存器中,权重和激活比包括在处理器中的运算器的最小运算单元具有更少的数量的位;在存储在输入寄存器中的值之间执行乘法;将乘法的结果存储在输出寄存器中;以及从输出寄存器输出预设位范围内的值作为包括权重的第一矢量与包括激活的第二矢量之间的点积的结果。
Description
本申请要求于2021年2月8日在韩国知识产权局提交的第10-2021-0017469号韩国专利申请的权益,所述韩国申请的全部公开出于所有目的通过引用包含于此。
技术领域
以下描述涉及处理器、操作处理器的方法以及包括处理器的电子装置。
背景技术
在神经网络中使用的数字精度在允许神经网络的准确度的范围内以32位浮点数(FP32)逐渐降低,以提高运算器的运算速度并降低功耗。近来,已经对各种方式进行了研究,以在即使在位精度小于FP32的情况下也保持神经网络的特定水平的准确度的同时,通过降低神经网络的精度来加速计算操作。
发明内容
提供本发明内容以便以简化的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求保护的主题的关键特征或必要特征,也不意在用于帮助确定要求保护的主题的范围。
在一个总体方面,提供了一种操作处理器的方法,所述方法包括:将权重和激活布置在相应的输入寄存器中,权重和激活比包括在处理器中的运算器的最小运算单元具有更少的数量的位;在存储在输入寄存器中的值之间执行乘法;将乘法的结果存储在输出寄存器中;以及从输出寄存器输出预设位范围内的值作为包括权重的第一矢量与包括激活的第二矢量之间的点积的结果。
布置的步骤可以包括:以第一顺序将权重布置在第一输入寄存器中,并且以作为第一顺序的相反顺序的第二顺序将激活布置在第二输入寄存器中。
分别布置在输入寄存器中的权重的数量和激活的数量可以基于每个权重的位数量、每个激活的位数量以及每个输入寄存器的位数量被确定。
布置的步骤可以包括:分别以预设间隔将权重和激活分别布置在输入寄存器中,其中,预设间隔可以基于每个输入寄存器的位数量以及将被布置在输入寄存器中的权重和激活的相应数量被确定。
预设位范围可以基于分别布置在输入寄存器中的权重或激活之间的预设间隔以及布置在每个输入寄存器中的最高位处的激活或权重的位位置。
输出的步骤可以包括:将输出寄存器中的预设位范围内的剩余位值设置为0,以及将预设位范围内的值移位到更低的位位置。
布置的步骤可以包括:布置权重或激活,使得以相同间隔彼此分离的权重或激活中的第一权重或激活和最后一个权重或激活在对应的输入寄存器中彼此最大程度地分离。
输出寄存器可以比输入寄存器具有更多数量的位。
响应于所有权重和激活都不可用于布置在输入寄存器中,布置的步骤可以包括:分别将权重和激活的对应部分顺序地布置在输入寄存器中分,执行的步骤可以包括:在顺序地布置在相应的输入寄存器中的权重和激活的对应部分之间顺序地执行乘法,并且将对乘法的结果累加在输出寄存器中,并且输出的步骤可以包括:从输出寄存器输出预设位范围内的值作为点积的结果。
输出的步骤可以包括:通过将输出寄存器中的预设位范围内的剩余位值设置为0并将预设位范围内的值移位到更低的位位置来输出点积的结果。
运算器可以是乘法器。
最小运算单元可以是8位、16位、32位和64位中的一个。
在另一总体方面,提供了一种处理器,所述处理器包括:输入寄存器,被配置为接收比包括在处理器中的运算器的最小运算单元具有更少的数量的位的权重和激活;运算器,被配置为在存储在输入寄存器中的值之间执行乘法;以及输出寄存器,被配置为存储乘法的结果,并且输出预设位范围内的值作为包括权重的第一矢量与包括激活的第二矢量之间的点积的结果。
在另一总体方面,提供了一种电子装置,所述电子装置包括:存储器,被配置为存储比包括在处理器中的运算器的最小运算单元具有更少的数量的位的权重和激活;以及处理器,被配置为:将权重和激活布置在相应的输入寄存器中,在存储在输入寄存器中的值之间执行乘法,将乘法的结果存储在输出寄存器中,并且从输出寄存器输出预设位范围内的值作为包括权重的第一矢量和包括激活的第二矢量之间的点积的结果。
处理器可被配置为:以第一顺序将权重布置在第一输入寄存器中,并且以作为第一顺序的相反顺序的第二顺序将激活布置在第二输入寄存器中。
分别布置于输入寄存器中的权重的数量和激活的数量可以基于每个权重的位数量、每个激活的位数量以及每个输入寄存器的位数量来确定。
处理器可以被配置为:以预设间隔将权重和激活分别布置在输入寄存器中,其中,预设间隔基于每个输入寄存器的位数量以及将被布置在输入寄存器中的权重和激活的相应数量来确定。
预设位范围可以基于分别布置在输入寄存器中的权重或激活之间的预设间隔以及布置在每个输入寄存器中的最高位处的激活或权重的位位置。
处理器可以被配置为:布置权重或激活,使得以相同间隔彼此分离的权重或激活中的第一权重或激活和最后一个权重或激活在对应的输入寄存器中彼此最大程度地分离。
在另一总体方面,提供了一种电子装置,所述电子装置包括:存储器,被配置为存储神经网络的权重和激活;以及处理器,被配置为:以第一顺序将权重布置在第一输入寄存器中,以作为第一顺序的相反顺序的第二顺序将激活布置在第二输入寄存器中,将包括权重的第一矢量与包括激活的第二矢量之间的乘法的结果存储在输出寄存器中,以及从输出寄存器输出预设位范围内的值,其中,权重和比处理器中的运算器的最小运算单元具有更少的数量的位。
处理器可以被配置为:以预设间隔将激活布置在第一输入寄存器中,并且预设间隔基于第一输入寄存器的位数量和将被布置在第一输入寄存器中的激活的数量。
处理器可以被配置为:基于将第一输入寄存器的位数量与激活的位数量之间的差除以比第一输入寄存器的深度小一来产生预设间隔。
根据以下具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1示出神经网络的示例。
图2示出子字节并行度(sub-byte parallelism)的示例。
图3至图5示出基于第一封装(packing)的子字节并行度的示例。
图6至图8示出基于第二封装的子字节并行度的示例。
图9和图10示出基于局部累加的子字节并行度的示例。
图11示出针对权重和激活的位数量的最大深度和最大局部的示例。
图12示出操作处理器的方法的示例。
图13示出电子装置的配置的示例。
图14和图15示出电子装置的示例。
贯穿附图和具体实施方式,除非另有描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对尺寸、比例和描绘可被夸大。
具体实施方式
提供以下具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作顺序仅是示例,并且不限于在此阐述的那些顺序,而是除了必须以特定顺序发生的操作之外,可如在理解本申请的公开之后将是清楚地被改变。
在此描述的特征可以以不同的形式实现,并且不应被解释为限于在此描述的示例。相反,提供在此描述的示例仅是为了说明在理解本申请的公开之后将是清楚的实现在此描述的方法、设备和/或系统的许多可行方式中的一些。
在此使用的术语仅用于描述各种示例,而不将用于限制公开。除非上下文另有清楚地指示,否则单数形式也旨在包括复数形式。术语“包括”、“包含”和“具有”指定存在所述特征、数量、操作、构件、元件和/或其组合,但不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或其组合。
在整个说明书中,当组件被描述为“连接到”或“结合到”另一组件时,所述组件可以直接“连接到”或“结合到”另一组件,或者可以存在介于其间的一个或多个其他组件。相反,当元件被描述为“直接连接到”或“直接结合到”另一元件时,可能不存在介于其间的其他元件。同样地,类似的表达(例如“在……之间”和“直接在……之间”以及“相邻”和“直接相邻”)也应以相同的方式被解释。如在此使用的,术语“和/或”包括相关联的所列项目中的任何一个和任何两个或更多个的任何组合。
尽管在此可以使用诸如“第一”、“第二”和“第三”的术语来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不受这些术语的限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一个构件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中提及的第一构件、组件、区域、层或部分也可以被称为第二构件、组件、区域、层或部分。
在此针对示例或实施例的术语“可以”的使用(例如,关于示例或实施例可以包括或实现的内容)表示存在包括或实现这样的特征至少一个示例或实施例,而所有示例不限于此。
此外,在示例实施例的描述中,当认为在理解本申请的公开之后由此已知的结构或功能的详细描述将导致示例实施例的模糊解释时,将省略这样的描述。在下文中,将参照附图详细描述示例,并且附图中的相同的附图标号始终表示相同的元件。
图1示出神经网络的示例。
参照图1,神经网络100包括多个层。神经网络100包括输入层110、多个隐藏层120和隐藏层130以及输出层140。神经网络100可以用于执行数据推断。数据推断可以包括例如模式识别(例如,对象识别、面部识别等)、序列识别(例如,语音、手势和书面文本识别、机器翻译、机器解释等)、控制(例如,车辆控制、处理控制等)、推荐服务、决策、医疗诊断、金融应用、数据挖掘等。
每个层可包括各自被称为人工神经元的多个节点。每个节点可以指示具有至少一个输入和输出的运算或计算单元,并且节点可以彼此连接。
输入层110可以包括一个或多个节点,数据在不通过到另外的节点的连接的情况下直接输入到所述一个或多个节点。输出层140可以包括未与另外的节点连接的一个或多个输出节点。隐藏层120和隐藏层130可以是神经网络100中除了输入层110和输出层140的剩余层,并且隐藏层120和隐藏层130可包括与和另外的节点有关系的输入节点或输出节点对应的节点。为了便于描述,在图1中神经网络100仅作为示例示出,因此示例的范围不限于示出的神经网络100的结构,并且使用的神经网络的结构可以根据示例而变化。根据示例,包括在神经网络100中的隐藏层的数量、包括在每个层中的节点的数量和/或节点之间的连接可以变化。包括多个隐藏层的神经网络(诸如,以神经网络100为例)也可被称为深度神经网络(DNN)。
神经网络100可以包括例如卷积神经网络(CNN)和递归神经网络(RNN)、感知器、多层感知器、前馈(FF)网络、径向基函数(RBF)网络、深度FF(DFF)网络、长短期记忆(LSTM)、门控递归单元(GRU)、自动编码器(AE)、变分AE(VAE)、去噪AE(DAE)、稀疏AE(SAE)、马尔可夫链(MC)、霍普菲尔德网络(HN)、玻尔兹曼机(BM)、受限BM(RBM)、深度信念网络(DBN)、深度卷积网络(DCN)、解卷积网络(DN)、深度卷积逆图形网络(DCIGN)、生成对抗网络(GAN)、液体状态机(LSM)、极端学习机(ELM)、回声状态网络(ESN)、深度残差网络(DRN)、可微分神经计算机(DNC)、神经图灵机(NTM)、胶囊网络(CN)、Kohonen网络(KN)和注意力网络(AN)中的任何一个或任何组合。在一个示例中,神经网络100中的多个层的至少一部分可与CNN对应,并且其另一部分可与FCN对应。在这种情况下,CNN可以被称为卷积层,并且FCN可以被称为全连接层。
可以针对节点之间的连接设置权重。例如,可以针对包括在输入层110中的节点与包括在隐藏层120中的另一节点之间的连接设置权重。可以调整或改变权重。权重可以确定相关数据值在其增大、减小或维持数据值时对最终结果的影响。权重可以与神经网络100的参数对应。
对于包括在一个层中的每个节点,可以输入包括在先前层中的节点的加权值。加权值可以指包括在先前层中的节点的值与权重相乘时获得的值。将加权数据从层输入到该层的后续层的处理可以被称为传播。例如,可以如等式1所示地确定将从节点传播到后续层的值y,加权数据从包括在先前层中的节点传播到该节点。
[等式1]
在等式1中,ai表示包括在先前层中的第i个节点的值,并且也被称为激活。wi表示针对到包括在先前层中的第i个节点的连接设置的权重。b表示偏置,并且f表示激活函数。激活函数f可以与sigmoid、双曲正切(tanh)或修正线性单元(ReLU)对应,但不限于此。
权重和激活可以由少量的位表示,以提高神经网络100的运算速度并降低功耗。通常,权重和激活可以以FP32(FP32是以32位表示数据的浮点格式)来表示,或者权重和激活可以以BF16(BF16是以16位表示数据的脑浮点格式(brain floating-point format))来表示。因为格式通过最小运算单元(例如,8位、16位、32位和64位)的倍数来表示数据,所以这些格式可促进由被配置为执行基于神经网络的运算的运算器执行运算,并且因为格式使用相对大量的位来准确地表示数据,所以这些格式可以提高推断的准确度。然而,使用这些格式,可能使用大量的时间和资源(例如,功耗、存储器等)来训练神经网络或使用神经网络执行推断,并且在具有有限的计算资源的环境(诸如,移动装置)下可能不容易执行运算。
在一个示例中,可以通过在允许神经网络的推断的准确度的范围内以比运算器的最小运算单元更少数量的位(例如,1位至7位)表示权重和激活,来执行推断或学习(或训练)。另外,通过由没有单独运算器的典型运算器加速以比最小运算单元更少数量的位表示的权重矢量和激活矢量之间的点积(例如,对应的权重和激活之间的(乘法的)乘积之和),可以用更少的资源更快速地执行以比最小运算单元更少数量的位表示的矢量的点积。在下文中将详细描述示例。
图2示出子字节并行度的示例。
附图标号210、220和230描绘了在下文中将参照图2描述具有8位的最小运算单元的运算器(例如,乘法器)如何将存储在8位输入寄存器(例如,权重寄存器和激活寄存器)中的值相乘的实例。尽管在图2中权重w0、w1、w2和w3以及激活a0、a1、a2和a3被示出为以作为比最小运算单元更少数量的位的2位表示,但是位数量的示例不限于此。
第一情况210是仅一个权重w0和激活a0被输入到输入寄存器,并且零(0)被输入到剩余位的示例。当运算器将存储在输入寄存器中的值相乘时,获得w0a0作为运算结果。输入寄存器中的大多数位被填充有零(0)并且不用于运算,因此资源可能被浪费,并且运算可能不会加速到大于运算器中的预设最小运算单元。
第二情况220是多个权重w0至w3和多个激活a0至a3分别以相同的顺序被输入到输入寄存器的示例。例如,权重w0被存储在对应输入寄存器的第一低位和第二低位处,权重w1被存储在输入寄存器的第三低位和第四低位处,权重w2被存储在输入寄存器的第五低位和第六低位处,并且权重w3存储被在输入寄存器的第七低位和第八低位处。类似地,激活a0至a3存储在对应输入寄存器的相应位处。在图2中,输入寄存器的第i低位可表示从输入寄存器的右边开始的第i个位。然而,示例不限于此,并且输入寄存器的第i低位可表示从输入寄存器的左边开始的第i个位。如图2的第二情况220的右侧部分所示,当运算器将存储在输入寄存器中的值相乘时,可以获得表示为2n的运算结果。例如,如图所示,运算结果中的26的系数221可以由权重与激活之间的(乘法的)乘积之和表示。然而,基于26的系数221中的乘法对彼此不对应的权重和激活执行,如第三情况230中所示,权重和激活被布置在输入寄存器中的顺序可以改变。
第三情况230是在权重寄存器中布置权重w0至w3的顺序和在激活寄存器中布置激活a0至a3的顺序彼此不同的示例。例如,在权重寄存器中按从高位到低位的顺序布置权重w0至w3,而在激活寄存器中按从低位到高位的顺序布置激活a0至a3。根据其他示例,可以在权重寄存器中从低位到高位布置权重w0至w3,并且可以在激活寄存器中从高位到低位布置激活a0至a3。这种改变输入寄存器中的布置顺序的操作可以在学习神经网络之后进行预处理,因此可以减少开销。
当运算器将存储在输入寄存器中的值相乘时,可以获得对应权重和激活之间的(乘法的)乘积之和作为运算结果中的26的系数231。也就是说,通过存储在输入寄存器中的值之间的标量乘法,可以得到作为矢量-矢量乘法的点积运算的结果。可以通过运算器的一次运算来获得以比基本运算单元(最小运算单元)更少数量的位表示的权重和激活之间的(乘法的)乘积之和,并且因此这样的运算可以被称为子字节并行度(sub-byteparallelism)。这样的运算可以促进使用典型的现有的运算器对在比最小运算单元具有更少数量的位的矢量之间的点积运算的加速,而不需要用于具有少量位的运算的专用硬件。
由26的系数231表示的点积的结果可以存储在输出寄存器的第七低位和第八低位处。当点积的结果大于22时,点积的结果的一部分可以流向28的系数。因此,将在下文中参照图3至图8详细描述防止这种溢出。
图3至图5示出基于第一封装(packing)的子字节并行度的示例。
如图3中所示,附图标号310、320和330示出了如何基于第一封装在16位寄存器中布置激活的示例。在图3的示例中,以比运算器的最小运算单元少的3个位表示激活,并且由深度表示将被包括在一个寄存器中的激活的数量。例如,在包括在一个寄存器中的激活的数量是2的情况下,它可以由2-深度或深度-2表示。激活可以被布置在寄存器中,并且激活基于第一封装从低位开始以间隔彼此分离。在一个示例中,间隔可以被预先设置。在图3的示例中,激活之间的空白空间可以指示零(0)被填充在其中。尽管为了便于描述,参照图3提供的以下描述基于激活,但是以下描述也可以适用于权重。
第一情况310是两个激活a0和a1被布置在16位寄存器中的情况。激活a0被存储在寄存器的第一低位至第三低位,并且激活a1被存储在第九低位至第十一低位。激活a0和a1被布置为它们以8位的间隔彼此分离。
第二情况320是三个激活a0、a1和a2被布置在16位寄存器中的情况。激活a0被存储在寄存器的第一低位至第三低位,激活a1被存储在寄存器的第六低位至第八低位,并且激活a2被存储在寄存器的第十一低位至第十三低位。激活a0、a1和a2被布置为它们以5位的间隔彼此分离。
第三情况330是四个激活a0、a1、a2和a3被布置在16位寄存器中的情况。激活a0被存储在寄存器的第一低位至第三低位,激活a1被存储在寄存器的第五低位至第七低位,激活a2被存储在寄存器的第九低位至第十一低位,并且激活a3被存储在寄存器的第十三低位至第十五低位。激活a0、a1、a2和a3被布置为它们以4位的间隔彼此分离。
在一个示例中,通过基于第一封装概括激活之间的预设间隔,在激活以d-深度被布置在r位寄存器中的情况下,激活可以以[r/d]位的间隔被布置在寄存器中。
参照图4,权重和激活可以以3-深度分别布置在16位寄存器中,然后运算可以相应地被执行。在图4的示例中,权重w0、w1和w2中的每个以比基本运算单元(例如,16位)少的2位来表示,并且激活a0、a1和a2中的每个以比基本运算单元少的1位来表示。在该示例中,权重w0、w1和w2以及激活a0、a1和a2以基于第一封装的5位的间隔被布置在相应的寄存器410和420中。
16位运算器可以在存储在寄存器410和420中的值之间执行乘法(如图所示的MUL)430,并将根据其的结果存储在输出寄存器中。运算器可以与寄存器410和420具有相同的位数量。存储在输出寄存器中的第十一低位至第十五低位中的值可以与权重矢量(w=[w0,w1,w2])和激活矢量(A=[a0,a1,a2])之间的点积的结果对应。为了从输出寄存器去除除了第十一低位至第十五低位之外的剩余位的值,可以在存储在输出寄存器和16位滤波器中的值之间执行“与”(AND)运算440,在16位滤波器中,第十一低位至第十五低位的值为1并且剩余位的值为0。在一个示例中,可以对保留在输出寄存器中的第十一低位至第十五低位的值执行逻辑右移(LSR)操作450以将其移位,使得点积的结果被存储在输出寄存器的第一低位至第五低位处。
在图4的示例中,点积的结果可以被存储在输出寄存器的第十一低位至第十五低位中。然而,当点积的结果大于25-1的值时,可能发生点积的结果的一部分向输出寄存器的第十六低位的溢出。为了防止这样的溢出,可以由式2表示的点积的结果的最大值可能小于可以由被分配用于存储点积的结果的位表示的最大值。
[式2]
在上面的式2中,d表示深度。x表示权重的位数量,并且y表示激活的位数量。(2x-1)·(2y-1)表示权重与激活之间的(乘法的)乘积的最大值。在d-深度的情况下,权重与激活之间的乘法可以执行d次,并且根据其的结果可被相加。因此,d·(2x-1)·(2y-1)可以表示点积结果的最大值。[r/d]表示权重之间的间隔或激活之间的间隔。点积的结果可以从与来自输出寄存器的对应大小对应的位被提取,并且因此2[r/d]可以表示可以由被分配用于存储点积的结果的位表示的最大值。
根据第一封装,权重之间的间隔和激活之间的间隔可以被确定为[r/d],并且当以上式2被满足时,上述子字节并行度可以在没有溢出的情况下被执行。点积的结果可以被存储在输出寄存器中的预设位范围内。预设位范围可以指示从第j低位到第j+(k-1)低位的范围。第j低位可以指示在其中存储输入寄存器中的d个权重或激活的d个位组之中的最高的位组的开始位,并且k表示权重或激活的预设间隔。在图4的示例中,预设位范围可以指示从第十一低位到第十五低位的范围。
参照图5,存在基于将分别布置在16位寄存器中的权重和激活的位数量的最大深度。在图5的示例中,在x轴上的A1、A2、……、A7中,A指示激活,并且伴随的数字指示激活的位数量。类似地,在y轴上的W1、W2、……、W7中,W指示权重,并且伴随的数字指示权重的位数量。表中所示的数字表示最大深度。例如,在W7A1 510处不存在溢出的条件下,16位寄存器可以在其中以最大2-深度包括权重和激活。在16位寄存器的W4A4 520处可能不满足式2,并且因此基于第一封装的子字节并行度可能不可用。
在下文中,将参照图6至图8详细描述在相同深度条件下可以比第一封装更有效地防止溢出的第二封装。
图6至图8示出基于第二封装的子字节并行度的示例。
附图标号610、620和630示出了将参照图6描述基于第二封装在16位寄存器中布置激活的示例。在图6的示例中,激活以比运算器的最小运算单元(例如,16位)少的3位来表示,并且包括在一个寄存器中的激活的数量由深度表示。根据第二封装,激活可以以相同的间隔布置在寄存器中,使得激活之中的第一个和最后一个彼此最大程度地分离。在图6的示例中,激活之间的空的空间指示0被填充在其中。尽管为了便于描述而基于激活来描述图6的示例,但是该示例的描述也可以适用于权重。
第一情况610是两个激活a0和a1被布置在16位寄存器中的情况。激活a0被存储在寄存器的第一低位至第三低位处,并且激活a1被存储在寄存器的第十四低位至第十六低位处。激活a0和a1被布置成使得它们以13位的间隔彼此分离。
第二情况620是三个激活a0、a1和a2被布置在16位寄存器中的情况。激活a0被存储在寄存器的第二低位至第四低位,激活a1被存储在寄存器的第八低位至第十低位,并且激活a2被存储在寄存器的第十四低位至第十六低位。激活a0、a1和a2被布置成使得它们以6位的间隔彼此分离。
第三情况330是四个激活a0、a1、a2和a3被布置在16位寄存器中的情况。激活a0被存储在寄存器的第二低位至第四低位,激活a1被存储在寄存器的第六低位至第八低位,激活a2被存储在寄存器的第十低位至第十二低位,并且激活a3被存储在寄存器的第十四低位至第十六低位。激活a0、a1、a2和a3被布置成使得它们以4位的间隔彼此分离。
通过布置激活之中的最后激活使得最后激活根据第二封装被存储在寄存器的最高位处,与第一封装相比,可以在相同的深度条件下实现更大的间隔。因此,可以有效地防止溢出的发生。通过基于第二封装概括激活的预设间隔,在具有y位的激活以d-深度被布置在r位寄存器中的情况下,激活可以以位的间隔被布置在寄存器中。
参照图7,权重和激活可以以3-深度分别布置在16位寄存器中,然后运算可以相应地被执行。在图7的示例中,权重w0、w1和w2以及激活a0、a1和a2中的每个以比运算器的基本运算单元(例如,16位)少的2位来表示。根据第二封装,权重w0、w1和w2以及激活a0、a1和a2可以以7位的间隔布置在相应的寄存器710和720中。
运算器可以在存储在寄存器710和720中的值之间执行乘法730,并将根据其的结果存储在32位输出寄存器中。存储在输出寄存器的第十五低位至第二十一低位处的值可以与权重矢量(w=[w0,w1,w2])和激活矢量(A=[a0,a1,a2])之间的点积的结果对应。点积的结果可以被存储在第十五低位至第二十一低位处,并且因此输出寄存器可以比输入寄存器710和720具有更大数量的位(例如,32位)。
为了从输出寄存器去除除了第十五低位至第二十一低位之外的剩余位的值,可以在存储在输出寄存器中的值与第十五低位至第二十一低位的值为1并且剩余位的值为0的32位滤波器之间执行AND操作740。在一个示例中,可以对保留在输出寄存器中的第十五低位至第二十一低位的值执行LSR操作750以将其移位,使得点积的结果被存储在输出寄存器的第一低位至第七低位处。
在图7的示例中,点积的结果可以被存储在输出寄存器中的第十五低位至第二十一低位处。然而,在点积的结果大于27-1的情况下,点积的结果的一部分的溢出可能流向输出寄存器的第二十二低位。为了防止这样的溢出,可以由式3表示的点积的结果的最大值可能需要小于可以由被分配用于存储点积的结果的位表示的最大值。
[式3]
根据第二封装,当满足以上式3时,可以在没有溢出的情况下执行上述子字节并行度。点积的结果可以被存储在输出寄存器中的预设位范围内。预设位范围可以指示从第j低位位到第j+(k-1)低位的范围。第j低位可以指示在其中存储输入寄存器中的d个权重或激活的d个位组之中的最高的位组的开始位,并且k表示权重或激活的预设间隔。在图7的示例中,预设位范围可以指示从第十五低位到第二十一低位的范围。
参照图8,存在基于将分别布置在16位寄存器中的权重和激活的位数量的最大深度。在图8的示例中,在x轴上的A1、A2、……、A7中,A指示激活,并且伴随的数字指示激活的位数量。类似地,在y轴上的W1、W2、……、W7中,W指示权重,并且伴随的数字指示权重的位数量。表中所示的数字表示最大深度。例如,在W3A2 810处不存在溢出的条件下,16位寄存器可以在其中以最大3-深度包括权重和激活。与在根据第一封装的W3A2的情况下最大2-深度可用的图5的示例相比,可以通过第二封装有效地增大最大深度。另外,即使在子字节并行度通过第一封装不可用的W4A4 820处,子字节并行度也可以通过第二封装以最大2深度可用。
图9和图10示出基于局部累加的子字节并行度的示例。
图9示出子字节并行度的迭代的示例。为了便于描述,在图9的示例中假设执行上面参照图4描述的子字节并行度。在作为点积的目标的权重矢量(w=[w0,w1,...,wn-1])和激活矢量(a=[a0,a1,...,an-1])的矢量维度n是9的情况下,子字节并行度的一次处理可能不足以获得点积的结果,因此子字节并行度可能需要被执行三次。即使在这种情况下,也可能需要满足执行三次的子字节并行度的结果之和不大于25-1的条件以便防止溢出。
根据图9中所示的算法,权重w0、w1和w2以及激活a0、a1和a2可以分别布置在输入寄存器中。上面参照图4描述的乘法430、AND运算440和LSR运算450可以被执行。在一个示例中,权重w3、w4和w5以及激活a3、a4和a5可以分别布置在输入寄存器中。然后上面参照图4描述的乘法430、AND运算440和LSR运算450可以被执行。可以将根据其的结果与通过第一次执行子字节并行度而获得的结果相加,然后存储。在一个示例中,权重w6、w7和w8以及激活a6、a7和a8可以分别布置在输入寄存器中。然后上面参照图4描述的乘法430、AND运算440和LSR运算450可以被执行。可以将根据其的结果与通过第一次和第二次执行子字节并行度而获得的结果相加,然后存储。在图9的算法中,m(表示被执行点积的阵列总长度)可以与矢量维度的数量相同,并且被表示为m深度点积、深度m点积或m维点积。另外,mask表示AND运算,shift表示LSR运算。
也就是说,根据图9的算法,对于子字节并行度的三次处理,可以执行表示为(MUL-AND-LSR-ADD)*3的12个指令。此外,由于不能应用作为与MUL-ADD组合的指令的融合乘加(FMA),因此可能需要许多指令周期。
图10示出基于局部累加的子字节并行度的迭代的示例。可以改变上面参照图9描述的指令顺序以有效地减少指令周期。例如,代替执行AND运算、LSR运算和ADD运算,每次执行子字节并行度一次时,可以通过首先将通过执行子字节并行度若干次而获得的结果相加并且然后执行AND运算、LSR运算和ADD运算中的每个运算一次而有效地减少指令周期。当将图10的示例的算法应用于图9的示例的假设时,可以执行((MUL-ADD)*3)-AND-LSR-ADD指令。由于可用FMA替代(MUL-ADD),因此可仅用与(FMA*3)-AND-LSR-ADD对应的总共六个指令,来完成在图9的示例中期望执行的子字节并行度的三次处理。通过在执行相同运算时如上所述改变指令顺序,可以有效地减少指令周期。
在图10的示例的算法中,iter表示指示局部累加被执行的次数的参数。另外,内循环“for j=i*iter to(i+1)*iter”指示局部累加被执行与iter一样多的次数,并且为此,可以一式两份地写入for语句。
为了便于描述,假设基于总阵列长度m(m=600)、2-深度子字节并行度(d=2)和局部累加(iter=3)来执行600深度点积。在内循环中迭代地(iter=3)执行局部累加之后,可以通过mask(即,AND运算)和shift(即,LSR运算)提取点积的部分结果。由于应用d-深度子字节并行度,因此可以提取iter*d=6深度的部分点积结果。为了获得最终的600深度点积结果,提取部分点积结果的这种处理可能需要重复100次,这可以由外循环来表示。
图11示出针对权重和激活的位数量的最大深度和最大局部的示例。
在图11的示例中,x轴指示布置在16位寄存器中的激活的位数量,并且y轴指示布置在16位寄存器中的权重的位数量。表内可以指示基于权重和激活中的每个的位数量以及在每种情况下的最大深度和最大局部上述第一封装和第二封装中的哪一个封装更好。最大局部可指示应用了以上参照图10所描述的方法的子字节并行度被执行的次数。例如,在W5A1 1110处不发生溢出的条件下,16位寄存器可以基于第一封装以最大2-深度包括权重和激活,并且子字节并行度可以被迭代地执行四次。另外,在W5A2 1120处不发生溢出的条件下,16位寄存器可以基于第二封装以最大2深度包括权重和激活,并且子字节并行度可以被迭代地执行八次。
图12示出操作处理器的方法的示例。图12中的操作可以以如所示的顺序和方式被执行,但是在不脱离描述的说明性示例的精神和范围的情况下,可以改变一些操作的顺序或者省略一些操作。图12中所示的许多操作可以并行或同时被执行。图12的一个或多个框以及框的组合可以由执行指定功能的基于专用硬件的计算机(诸如处理器)或专用硬件和计算机指令的组合被实现。除了下面的图12的描述之外,图1至图11的描述也适用于图12,并且通过引用合并于此。因此,这里可能不再重复以上描述。
在下文中将参照图12描述处理器如何使用典型乘法器获得矢量之间的点积的示例。处理器可以包括输入寄存器、运算器(例如,乘法器)和输出寄存器。尽管在下文中进行描述,但是处理器可以被实现为包括在电子装置中的主机处理器或加速器。
参照图12,在操作1210,处理器将比运算器的最小运算单元具有更少的位数量的权重和激活布置在相应的输入寄存器中。例如,处理器可以以第一顺序将权重布置在第一输入寄存器中,并且以作为第一顺序的相反顺序的第二顺序将激活布置在第二输入寄存器中。可以基于每个权重的位数量、每个激活的位数量以及每个输入寄存器的位数量来分别确定将被布置在输入寄存器中的权重和激活的数量。
例如,处理器可以以预设间隔将权重和激活布置在输入寄存器中。可以基于每个输入寄存器的位数量以及分别布置在输入寄存器中的权重和激活的相应数量,来确定预设间隔。
对于另一示例,处理器可以布置权重或激活,使得以相同间隔彼此分离的权重或激活中的第一个和最后一个彼此最大程度地分离。在一个示例中,输出寄存器可以比输入寄存器具有更多数量的位。
在操作1220,处理器执行存储在输入寄存器中的值(例如,存储在输入寄存器中的权重和激活)之间的乘法。处理器可以在存储在输入寄存器中的值之间执行一般的乘法。
在操作1230,处理器从存储有乘法结果的输出寄存器输出预设位范围内的值,作为包括权重的第一矢量和包括激活的第二矢量之间的点积的结果。可以基于分别布置在输入寄存器中的权重或激活之间的预设间隔以及布置在每个输入寄存器中的最高位处的激活或权重的位位置,来确定预设位范围。处理器可以将输出寄存器的除了预设位范围内的值之外的剩余位值设置为0,并将预设位范围内的值移位到更低的位位置。
例如,当并非所有权重和激活分别被布置在输入寄存器中时,处理器可以分别将权重和激活的对应部分顺序地布置在输入寄存器中。处理器可以在顺序地布置在相应的输入寄存器中的权重和激活的对应部分之间顺序地执行乘法。在一个示例中,处理器可以通过运算器在顺序地布置在相应的输入寄存器中的权重和激活的对应部分之间顺序地执行乘法,并且将乘法的结果累加在输出寄存器中。然后,处理器可以从输出寄存器输出预设位范围内的值作为点积的结果,在输出寄存器中顺序地执行的乘法的结果被累积。
如果需要矢量之间的点积,则上述示例可以不受限制地应用于在神经网络中执行的操作,甚至适用于除了这种基于神经网络的操作之外的其他应用。在这种情况下,在此描述的权重矢量和激活矢量的名称可以改变。另外,当在寄存器中封装权重和激活时,尽管寄存器的位数量相同,但是深度可以根据权重和/或激活的位数量而变化。因此,子字节并行度的运算速度可根据权重和/或激活的位数量而改变。
图13示出电子装置的配置的示例。
参照图13,电子装置1300包括主机处理器1310、片外存储器1320、存储器控制器1330和加速器1340。主机处理器1310、片外存储器1320、存储器控制器1330和加速器1340可以通过总线、片上网络(NoC)、外围组件互连快速(PCIe)等彼此通信。
主机处理器1310可以是被配置为控制包括在电子装置1300中的组件的相应操作的装置,并且包括例如中央处理器(CPU)、图形处理单元(GPU)或以下参照加速器1340描述的任何其他装置。主机处理器1310可以控制在电子装置1300中执行的操作。主机处理器1310可以接收用于在加速器1340中处理神经网络的一个或多个请求,并且响应于接收的请求而生成在加速器1340中可执行的指令,并且将生成的指令发送到加速器1340。
片外存储器1320可以是设置在加速器1340外部的存储器,例如,动态随机存取存储器(DRAM)、静态RAM(SRAM)、晶闸管RAM(T-RAM)、零电容器RAM(Z-RAM)、双晶体管RAM(TTRAM)或高带宽存储器(HBM)可被用作电子装置1300主存储器。片外存储器1320可以存储将要在加速器1340中执行的神经网络的推断目标数据和/或参数,并且存储在片外存储器1320中的数据可以被发送到加速器1340以进行推断。在一个示例中,在加速器1340内部的片上存储器不足以执行加速器1340中的神经网络的情况下,也可以使用片外存储器1320。
加速器1340可以是被配置为根据主机处理器1310的指令执行神经网络并推断将要输入的数据的人工智能(AI)加速器。在一个示例中,加速器1340可以是与主机处理器1310区分开的单独处理器。加速器1340可以是微处理器、单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理、多指令多数据(MIMD)多处理、微计算机、处理器核、多核处理器、多处理器、中央处理器(CPU)、神经处理单元(NPU)、图形处理单元(GPU)、张量处理单元(TPU)、数字信号处理器(DSP)、控制器和算术逻辑单元(ALU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可编程逻辑单元(PLU)或应用处理器(AP)。
加速器1340可以基于神经网络的操作特性来处理由单独的专用处理器(例如,加速器1340)比由用于通用目的的主机处理器1310更有效地处理的任务。这里,可以使用包括在加速器1340中的一个或多个处理元件(PE)和片上存储器。片上存储器可以是包括被包括在加速器1340中的全局共享缓冲器和本地缓冲器的装置,并且片上存储器可与设置在加速器1340外部的片外存储器1320区分开。片上存储器可以包括例如可通过地址空间访问的暂存存储器、静态随机存取存储器(SRAM)等。
在此描述的处理器可以被实现为主机处理器1310或加速器1340。下面提供对处理器的进一步描述。
图14和图15示出电子装置的示例。
参照图14,电子装置可以被实现为服务器1400。
服务器1400可以是与由用户控制的用户终端区分开的单独装置,并且可以通过有线网络和/或无线网络与用户终端通信。服务器1400可以通过其终端接收从多个用户同时发送的请求。包括在服务器1400中的存储器1410可以包括请求的神经网络的权重和激活。权重和激活可以比包括在处理器1420中的运算器的最小运算单元具有更少的位数量。处理器1420可以将权重和激活布置在相应的输入寄存器中,在存储在输入寄存器中的值之间执行乘法,然后从存储有乘法结果的输出寄存器输出预设位范围内的值作为包括权重的第一矢量和包括激活的第二矢量之间的点积的结果。通过上述这样的操作获得的推断结果可以返回到相应的用户终端。用户终端可以包括例如各种计算装置(诸如,智能电话、平板计算机、膝上型计算机、个人计算机(PC))、各种可穿戴装置(诸如,智能手表、智能眼镜)、各种家用电器(诸如,智能扬声器、智能电视(TV)、智能冰箱)和其他装置(诸如,智能车辆、智能信息亭、物联网(IoT)装置、无人机和机器人)。
参照图15,电子装置可以被实现为用户终端1500。尽管为了便于描述,在图15中用户终端1500被示出为智能电话,但是由用户控制的其他装置可以不受限制地适用。用户终端1500可以从用户获得请求。包括在用户终端1500中的存储器1510可以包括请求的神经网络的权重和激活。处理器1520可以将权重和激活布置在相应的输入寄存器中,在存储在输入寄存器中的值之间执行乘法,然后从存储有乘法结果的输出寄存器输出预设位范围内的值作为矢量之间的点积的结果。通过上述这样的操作获得的推断结果可以被提供给用户,或者可以用于用户终端1500执行后续操作。
如上参照图14和图15所述的实现为电子装置的服务器1400和用户终端1500可以执行在此所述的操作,因此为了简洁起见,这里将省略其更详细和重复的描述。在此描述的电子装置还可以被称为包括主机处理器和加速器的加速器系统。
在此关于图13至图15描述的电子装置以及其他装置、设备、单元、模块和组件由硬件组件实现。可用于执行本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行本申请中描述的操作的任何其他电子组件。在其他示例中,执行本申请中描述的操作的硬件组件中的一个或多个由计算硬件(例如,由一个或多个处理器或计算机)实现。处理器或计算机可由一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望结果的任何其他装置或装置的组合)实现。在一个示例中,处理器或计算机包括或被连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用)以执行本申请中描述的操作。硬件组件还可响应于指令或软件的执行而访问、操纵、处理、创建和存储数据。为简明起见,可在本申请中描述的示例的描述中使用单数术语“处理器”或“计算机”,但是在其他示例中,可使用多个处理器或计算机,或者处理器或计算机可包括多个处理元件,或多种类型的处理元件,或多个处理元件和多种类型的处理元件两者。例如,单个硬件组件或两个或更多个硬件组件可由单个处理器、或两个或更多个处理器、或处理器和控制器来实现。一个或多个硬件组件可由一个或多个处理器或处理器和控制器实现,并且一个或多个其他硬件组件可由一个或多个其他处理器或另外的处理器和另外的控制器实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可以具有不同处理配置中的任何一个或多个,不同处理配置的示例包括单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理、多指令多数据(MIMD)多处理、控制器和算术逻辑单元(ALU)、DSP、微计算机、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑单元(PLU)、中央处理器(CPU)、图形处理单元(GPU)、神经处理单元(NPU)或能够以定义的方式响应并执行指令的任何其他装置。
图1至图15中示出的执行本申请中描述的操作的方法由计算硬件(例如,由一个或多个处理器或计算机)来执行,计算硬件被如上所述实现为执行指令或软件,以执行在本申请中描述的通过该方法执行的操作。例如,单个操作或两个或更多个操作可由单个处理器、或者两个或更多个处理器、或者处理器和控制器执行。一个或多个操作可由一个或多个处理器、或者处理器和控制器执行,并且一个或多个其他操作可由一个或多个其他处理器、或者另外的处理器和另外的控制器执行。一个或多个处理器、或者处理器和控制器可执行单个操作、或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件可以被编写为计算机程序、代码段、指令或其任何组合,以单独地或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如由编译器产生的机器代码)。在一个示例中,指令或软件包括小程序、动态链接库(DLL)、中间件、固件、装置驱动器、存储操作处理器的方法的应用程序中的至少一个。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。可以基于附图中所示的框图和流程图以及说明书中的相应描述使用任何编程语言来编写指令或软件,附图中所示的框图和流程图以及说明书中的相应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可以被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、磁性RAM(MRAM)、自旋转移矩(STT)-MRAM、静态随机存取存储器(SRAM)、晶闸管RAM(T-RAM)、零电容器RAM(Z-RAM)、双晶体管RAM(TTRAM)、导电桥接RAM(CBRAM)、铁电RAM(FeRAM)、相变RAM(PRAM)、电阻式RAM(RRAM)、纳米管RRAM、聚合物RAM(PoRAM)、纳米浮栅存储器(NFGM)、全息存储器、分子电子存储器装置、绝缘体电阻变化存储器、动态随机存取存储器(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 (23)
1.一种操作处理器的方法,包括:
将权重和激活布置在相应的输入寄存器中,权重和激活比包括在处理器中的运算器的最小运算单元具有更少的数量的位;
通过运算器在存储在输入寄存器中的值之间执行乘法;
将乘法的结果存储在输出寄存器中;以及
从输出寄存器输出预设位范围内的值作为包括权重的第一矢量与包括激活的第二矢量之间的点积的结果。
2.如权利要求1所述的方法,其中,布置的步骤包括:
以第一顺序将权重布置在第一输入寄存器中,并且以作为第一顺序的相反顺序的第二顺序将激活布置在第二输入寄存器中。
3.如权利要求1所述的方法,其中,分别布置在输入寄存器中的权重的数量和激活的数量基于每个权重的位数量、每个激活的位数量以及每个输入寄存器的位数量来确定。
4.如权利要求1所述的方法,其中,布置的步骤包括:
以预设间隔将权重和激活分别布置在输入寄存器中,
其中,预设间隔基于每个输入寄存器的位数量以及将被布置在输入寄存器中的权重和激活的相应数量来确定。
5.如权利要求1所述的方法,其中,预设位范围基于分别布置在输入寄存器中的权重或激活之间的预设间隔以及布置在每个输入寄存器中的最高位处的激活或权重的位位置。
6.如权利要求1所述的方法,其中,输出的步骤包括:
将输出寄存器中的除了预设位范围内的值之外的剩余位值设置为0,并且将预设位范围内的值移位到更低的位位置。
7.如权利要求1至6中的任一项所述的方法,其中,布置的步骤包括:
布置权重或激活,使得以相同间隔彼此分离的权重或激活中的第一权重或激活和最后一个权重或激活在对应的输入寄存器中彼此最大程度地分离。
8.如权利要求7所述的方法,其中,输出寄存器比输入寄存器具有更多数量的位。
9.如权利要求1至6中的任一项所述的方法,响应于并非所有权重和激活都能够被布置在输入寄存器中,
布置的步骤包括:分别将权重和激活的对应部分顺序地布置在输入寄存器中,
执行的步骤包括:通过运算器在顺序地布置在相应的输入寄存器中的权重和激活的对应部分之间顺序地执行乘法,并且将乘法的结果累加在输出寄存器中,并且
输出的步骤包括:从输出寄存器输出预设位范围内的值作为点积的结果。
10.如权利要求9所述的方法,其中,输出的步骤包括:
通过将输出寄存器中的除了预设位范围内的值之外的剩余位值设置为0并将预设位范围内的值移位到更低的位位置,来输出点积的结果。
11.如权利要求1至6中的任一项所述的方法,其中,运算器是乘法器。
12.如权利要求1至6中的任一项所述的方法,其中,最小运算单元是8位、16位、32位和64位中的一个。
13.一种存储命令的非暂时性计算机可读存储介质,所述命令在由处理器执行时使处理器执行如权利要求1至12中的任一项所述的方法。
14.一种处理器,包括:
输入寄存器,被配置为接收比包括在处理器中的运算器的最小运算单元具有更少的数量的位的权重和激活;
运算器,被配置为在存储在输入寄存器中的值之间执行乘法;以及
输出寄存器,被配置为存储乘法的结果,并且输出预设位范围内的值作为包括权重的第一矢量与包括激活的第二矢量之间的点积的结果。
15.一种电子装置,包括:
存储器,被配置为存储比包括在处理器中的运算器的最小运算单元具有更少的数量的位的权重和激活;以及
处理器,被配置为:将权重和激活布置在相应的输入寄存器,在存储在输入寄存器中的值之间执行乘法,将乘法的结果存储在输出寄存器中,并且从输出寄存器输出预设位范围内的值作为包括权重的第一矢量与包括激活的第二矢量之间的点积的结果。
16.如权利要求15所述的电子装置,其中,处理器还被配置为:
以第一顺序将权重布置在第一输入寄存器中,并且以作为第一顺序的相反顺序的第二顺序将激活布置在第二输入寄存器中。
17.如权利要求15所述的电子装置,其中,分别布置于输入寄存器中的权重的数量和激活的数量基于每个权重的位数量、每个激活的位数量以及每个输入寄存器的位数量来确定。
18.如权利要求15所述的电子装置,其中,处理器被配置为:
以预设间隔将权重和激活分别布置在输入寄存器中,
其中,预设间隔基于每个输入寄存器的位数量以及将被布置在输入寄存器中的权重和激活的相应数量来确定。
19.如权利要求15所述的电子装置,其中,预设位范围基于分别布置在输入寄存器中的权重或激活之间的预设间隔以及布置在每个输入寄存器中的最高位处的激活或权重的位位置。
20.如权利要求15至19中的任一项所述的电子装置,其中,处理器被配置为:
布置权重或激活,使得以相同间隔彼此分离的权重或激活中的第一权重或激活和最后一个权重或激活在对应的输入寄存器中彼此最大程度地分离。
21.一种电子装置,包括:
存储器,被配置为存储神经网络的权重和激活;以及
处理器,被配置为:
以第一顺序将权重布置在第一输入寄存器中,
以作为第一顺序的相反顺序的第二顺序将激活布置在第二输入寄存器中,
将包括权重的第一矢量与包括激活的第二矢量之间的乘法的结果存储在输出寄存器中,以及
从输出寄存器输出预设位范围内的值,
其中,权重和激活比处理器中的运算器的最小运算单元具有更少的数量的位。
22.如权利要求21所述的电子装置,其中,处理器还被配置为:以预设间隔将激活布置在第二输入寄存器中,并且预设间隔基于第二输入寄存器的位数量和将被布置在第二输入寄存器中的激活的数量。
23.如权利要求21所述的电子装置,其中,处理器还被配置为:基于将第二输入寄存器的位数量与激活的位数量之间的差除以第二输入寄存器的深度与一之间的差来产生预设间隔。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0017469 | 2021-02-08 | ||
KR1020210017469A KR20220114228A (ko) | 2021-02-08 | 2021-02-08 | 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114912590A true CN114912590A (zh) | 2022-08-16 |
Family
ID=78500497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110923478.1A Pending CN114912590A (zh) | 2021-02-08 | 2021-08-12 | 处理器、操作处理器的方法以及包括处理器的电子装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220253682A1 (zh) |
EP (1) | EP4040341A1 (zh) |
KR (1) | KR20220114228A (zh) |
CN (1) | CN114912590A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230075534A1 (en) * | 2021-08-19 | 2023-03-09 | International Business Machines Corporation | Masked shifted add operation |
-
2021
- 2021-02-08 KR KR1020210017469A patent/KR20220114228A/ko unknown
- 2021-07-14 US US17/375,197 patent/US20220253682A1/en active Pending
- 2021-08-12 CN CN202110923478.1A patent/CN114912590A/zh active Pending
- 2021-11-02 EP EP21205960.4A patent/EP4040341A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220253682A1 (en) | 2022-08-11 |
KR20220114228A (ko) | 2022-08-17 |
EP4040341A1 (en) | 2022-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11880768B2 (en) | Method and apparatus with bit-serial data processing of a neural network | |
EP3528181B1 (en) | Processing method of neural network and apparatus using the processing method | |
US20210192315A1 (en) | Method and apparatus with neural network convolution operation | |
US20220108180A1 (en) | Method and apparatus for compressing artificial neural network | |
KR20220013896A (ko) | 프로세서의 신경망 아키텍처를 결정하기 위한 방법 및 장치 | |
KR20240025578A (ko) | 뉴럴 네트워크를 이용한 초분광 이미지 분류 방법 및 장치 | |
CN114912590A (zh) | 处理器、操作处理器的方法以及包括处理器的电子装置 | |
US20220044107A1 (en) | Optimized sensor fusion in deep learning accelerator with integrated random access memory | |
US20220237487A1 (en) | Accelerator for processing inference tasks in parallel and operating method thereof | |
US20230058341A1 (en) | Neural network training method and apparatus using trend | |
US20220284263A1 (en) | Neural network operation apparatus and method | |
US20210216863A1 (en) | Method and apparatus with neural network distributed processing | |
CN114138232A (zh) | 用于神经网络运算的设备和方法 | |
CN115461754A (zh) | 深度过参数化 | |
JP7431263B2 (ja) | ニューラルネットワーク演算方法及び装置 | |
US11928469B2 (en) | Apparatus and method with neural network operation | |
US20230143371A1 (en) | Apparatus and method with neural network operation | |
EP4383084A1 (en) | Memory device and operating method thereof | |
US20220269930A1 (en) | Neural network operation method and apparatus | |
EP4044069A1 (en) | Neural network-based inference method and apparatus | |
TWI842584B (zh) | 電腦實施方法及電腦可讀儲存媒體 | |
US20220269597A1 (en) | Memory mapping method and apparatus | |
US20240184526A1 (en) | Memory device and operating method thereof | |
US20220284299A1 (en) | Method and apparatus with neural network operation using sparsification | |
US20210279587A1 (en) | Method and apparatus for neural network code generation |
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 |