CN116090507A - 电子装置和用于推断的方法 - Google Patents
电子装置和用于推断的方法 Download PDFInfo
- Publication number
- CN116090507A CN116090507A CN202210985760.7A CN202210985760A CN116090507A CN 116090507 A CN116090507 A CN 116090507A CN 202210985760 A CN202210985760 A CN 202210985760A CN 116090507 A CN116090507 A CN 116090507A
- Authority
- CN
- China
- Prior art keywords
- value
- block
- maximum
- sub
- processor
- 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 78
- 230000009467 reduction Effects 0.000 claims abstract description 66
- 230000015654 memory Effects 0.000 claims abstract description 63
- 238000006243 chemical reaction Methods 0.000 claims abstract description 35
- 239000011159 matrix material Substances 0.000 claims description 140
- 230000000873 masking effect Effects 0.000 claims description 24
- 230000002829 reductive effect Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 description 45
- 238000012545 processing Methods 0.000 description 38
- 230000000670 limiting effect Effects 0.000 description 11
- 230000009466 transformation Effects 0.000 description 10
- 238000010606 normalization Methods 0.000 description 9
- 238000003058 natural language processing Methods 0.000 description 6
- 239000013598 vector Substances 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000004927 fusion Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012795 verification 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/04—Architecture, e.g. interconnection topology
-
- 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
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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/0475—Generative networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
-
- 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/045—Combinations of networks
- G06N3/0455—Auto-encoder networks; Encoder-decoder 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
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Operations Research (AREA)
- Probability & Statistics with Applications (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
提供了电子装置和用于推断的方法。所述电子装置包括:处理器,被配置为:通过实现包括多个编码器和多个解码器的转换模型来执行推断;以及存储器,被配置为:存储将由处理器执行的指令。编码器和解码器中的每个包括注意力块,注意力块确定注意力值。处理器被配置为:在注意力块中逐区块执行第一子柔性最大操作;基于第一子柔性最大操作的结果值来执行缩减操作以确定调整因子;并且基于缩减操作的结果值来逐区块执行第二子柔性最大操作。
Description
本申请要求于2021年10月29日在韩国知识产权局提交的第10-2021-0146841号韩国专利申请的权益,该韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
以下描述涉及转换模型(transformer model)和实现推断模型的电子装置。
背景技术
转换模型(transformer model)可以是在遵循编码器-解码器结构的同时用注意力或自注意力来实现的模型,该编码器-解码器结构可以是现有的序列到序列(seq2seq)结构。尽管转换模型可采用编码器-解码器结构而不实现递归神经网络(RNN),但是性能通常可优于RNN的性能。转换模型可主要被实现为执行诸如但不限于自然语言处理(NLP)、翻译、问答(Q&A)等的任务。
发明内容
提供本发明内容来以简化的形式介绍下面在具体实施方式中进一步描述的构思的选择。本发明内容不意在确认要求保护的主题的关键特征或必要特征,也不意在用作帮助确定要求保护的主题的范围。
在一个总体方面,一种电子装置包括:处理器,被配置为:实现包括多个编码器和多个解码器的转换模型;其中,所述多个编码器和所述多个解码器中的每个包括注意力块,注意力块被配置为确定注意力值,并且其中,处理器还被配置为:在推断操作中,在注意力块中执行第一子柔性最大逐区块操作,基于第一子柔性最大逐区块操作的结果值来执行缩减操作以确定调整因子,并且基于缩减操作的结果值来执行第二子柔性最大逐区块操作。
所述电子装置可包括:存储器,存储将由处理器执行的用于将处理器配置为执行推断操作的指令。
处理器还可被配置为:基于查询和键来执行第一矩阵操作,并且基于第一矩阵操作的结果值来执行第一子柔性最大逐区块操作。
处理器还可被配置为:对第一矩阵操作的结果值执行缩放和掩码操作,并且基于缩放和掩码操作的结果值来执行第一子柔性最大逐区块操作。
处理器还可被配置为:通过从输入数据逐区块检测第一最大值、确定通过从输入数据的每个值减去第一最大值而获得的结果值的第一指数化值并且逐区块确定第一指数化值的第一总和值,来执行第一子柔性最大逐区块操作。
第一矩阵操作和第一子柔性最大操作在数据读取次序和数据读取单元方面可以是相同的。
处理器还可被配置为:通过以下操作来执行缩减操作:确定通过从第一最大值减去第二最大值而获得的结果值的第二指数化值,第二最大值是数据的所有区块的最大值;通过将与数据的每个区块对应的第二指数化值应用于第一总和值来确定第二总和值;并且将通过将第二指数化值除以第二总和值而获得的结果值确定为调整因子。
处理器还可被配置为:通过将调整因子应用于第一指数化值来执行第二子柔性最大操作。
处理器还可被配置为:基于第二子柔性最大逐区块操作的结果值和给定数据值来执行第二逐区块矩阵操作。
第二子柔性最大逐区块操作和第二逐区块矩阵操作在数据读取次序和数据读取单元方面可以是相同的。
在一个总体方面,一种电子装置包括:处理器,被配置为:实现包括多个编码器和多个解码器的转换模型;以及缩减电路系统,其中,所述多个编码器和所述多个解码器中的每个包括注意力块,注意力块被配置为确定注意力值,其中,处理器被配置为:在注意力块中执行第一子柔性最大逐区块操作,其中,缩减电路系统被配置为:基于第一子柔性最大逐区块操作的结果值来执行缩减操作,以确定调整因子,并且其中,处理器被配置为:基于缩减操作的结果值来执行第二子柔性最大逐区块操作。
处理器还可被配置为:在推断操作中,通过从输入数据逐区块检测第一最大值、确定通过从输入数据的每个值减去第一最大值而获得的结果值的第一指数化值并且逐区块确定第一指数化值的第一总和值,来执行第一子柔性最大逐区块操作。
缩减电路系统可包括比较器、加法器-减法器、指数处理器、乘法和除法运算器以及存储器。
缩减电路系统可被配置为:从存储器读取第一最大值和第一总和值;通过比较器检测第二最大值,第二最大值是输入数据的所有区块的最大值;通过加法器-减法器确定通过从第一最大值减去从输入数据逐行检测的第二最大值而获得的结果值;通过指数处理器确定通过从第一最大值减去第二最大值而获得的结果值的第二指数化值;并且通过乘法和除法运算器通过将与输入数据的每个区块对应的第二指数化值应用于第一总和值来确定第二总和值,并且将通过将第二指数化值除以第二总和值而获得的结果值确定为调整因子。
处理器还可被配置为:通过将调整因子应用于第一指数化值来执行第二子柔性最大操作。
在一个总体方面,一种处理器实现的方法包括:通过经由实现包括多个编码器和多个解码器的转换模型对输入数据执行推断,来从输入数据确定结果数据,其中,确定结果数据的步骤包括:从所述多个编码器和所述多个解码器中的每个确定注意力值,其中,确定注意力值的步骤包括:执行第一子柔性最大逐区块操作;基于第一子柔性最大逐区块操作的结果值来执行缩减操作,以确定调整因子;以及基于缩减操作的结果值来执行第二子柔性最大逐区块操作。
执行第一子柔性最大逐区块操作的步骤可包括:从输入数据逐区块检测第一最大值;确定通过从输入数据的每个值减去第一最大值而获得的结果值的第一指数化值;以及逐区块确定第一指数化值的第一总和值。
执行缩减操作的步骤可包括:确定通过从第一最大值减去第二最大值而获得的结果值的第二指数化值,第二最大值是输入数据的所有区块的最大值;通过将与输入数据的每个区块对应的第二指数化值应用于第一总和值来确定第二总和值;以及将通过将第二指数化值除以第二总和值而获得的结果值确定为调整因子。
执行第二子柔性最大操作的步骤可包括:将调整因子应用于第一指数化值。
缩减操作可通过缩减操作器执行,缩减操作器包括比较器、加法器-减法器、指数处理器、乘法和除法运算器以及存储器。
在一个总体方面,一种处理器实现的方法包括:通过对输入数据执行基于转换的推断操作,来从输入数据确定目标数据;其中,确定目标数据的步骤包括:通过电子装置的处理器基于查询和键对输入数据执行第一矩阵操作;通过处理器对第一矩阵操作的结果值执行缩放操作和掩码操作;通过处理器执行第一子柔性最大逐区块操作;通过处理器基于第一子柔性最大逐区块操作的结果来执行缩减操作,以确定缩放因子;以及通过处理器基于缩减操作的结果来执行第二子柔性最大逐区块操作,其中,第一矩阵操作和第一子柔性最大操作被配置为具有相同的数据读取单元和相同的数据读取次序。
可通过将由缩减操作获得的调整因子应用于由第一子柔性最大逐区块操作获得的第一指数化值,来执行第二子柔性最大操作。
所述方法可包括:基于第二子柔性最大操作的结果值和给定数据值,来逐区块执行第二矩阵操作,其中,第二矩阵操作是第二子柔性最大操作的结果值与映射到键的值之间的矩阵乘法。
根据以下具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1示出根据一个或多个实施例的被配置为用示例转换模型执行推断的示例电子装置的示例配置。
图2示出根据一个或多个实施例的示例转换模型(transformer model)的示例配置。
图3A示出根据一个或多个实施例的示例编码器的示例配置。
图3B示出根据一个或多个实施例的示例解码器的示例配置。
图4示出根据一个或多个实施例的在注意力块中执行的处理的示例。
图5示出根据一个或多个实施例的矩阵乘法与典型的柔性最大(softmax)操作之间的示例比较。
图6示出根据一个或多个实施例的示例柔性最大操作。
图7示出根据一个或多个实施例的在包括柔性最大操作的注意力块中执行的处理的示例。
图8示出根据一个或多个实施例的示例缩减操作器的示例配置。
图9示出根据一个或多个实施例的由示例缩减操作器执行的示例缩减操作。
图10示出根据一个或多个实施例的由示例电子装置执行的示例推断方法。
图11示出根据一个或多个实施例的在示例转换模型的注意力块中执行柔性最大操作的示例。
贯穿附图和具体实施方式,相同的附图标记可表示相同或相似的元件。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可被夸大。
具体实施方式
提供以下具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并不限于在此阐述的那些顺序,而是除了必须以特定次序发生的操作之外,可如在理解本申请的公开之后将是清楚的那样被改变。此外,为了更加清楚和简明,可省略在理解本申请的公开之后已知的特征的描述,注意,特征以及特征描述的省略也不意在承认它们的常识。
在此描述的特征可以以不同的形式体现,并且不应被解释为限于在此描述的示例。相反,在此描述的示例已仅被提供,以示出在理解本申请的公开之后将是清楚的实现在此描述的方法、设备和/或系统的许多可行方式中的一些可行方式。
在此使用的术语仅出于描述特定示例的目的,并且不应用于限制公开。如在此使用的,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。如在此使用的,术语“和/或”包括相关联的所列项中的任何一个和任何两个或更多个的任何组合。如在此使用的,术语“包括”、“包含”和“具有”指定存在陈述的特征、数量、操作、元件、组件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、元件、组件和/或它们的组合。在此关于示例或实施例(例如,关于示例或实施例可包括或实现什么)的术语“可”的使用表示存在这样的特征被包括或者实现的至少一个示例或实施例,而所有示例不限于此。
尽管在此可使用诸如“第一”、“第二”和“第三”术语来描述各种构件、组件、区域、层或部分,但这些构件、组件、区域、层或部分不应受这些术语的限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。
贯穿说明书,当诸如层、区域或基底的元件被描述为“在”另一元件“上”、“连接到”或“结合到”另一元件时,该元件可直接“在”该另一元件“上”、“连接到”或“结合到”该另一元件,或者可存在介于它们之间的一个或多个其他元件。相反,当元件被描述为“直接在”另一元件“上”、“直接连接到”或“直接结合到”另一元件时,可不存在介于它们之间的其他元件。同样地,例如“在……之间”和“紧接在……之间”以及“与……邻近”和“与……紧邻”的表述也可如前面的描述的那样来解释。
除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与由本公开所属领域的普通技术人员通常理解的与本公开的理解一致并且在理解本公开之后的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)应被解释为具有与它们在相关领域和本申请的上下文中的含义一致的含义,并且不应以理想化或过于形式化的含义进行解释。
另外,在示例实施例的描述中,当认为在理解本申请的公开之后由此得知的结构的详细描述将导致对示例实施例的模糊解释时,可省略这样的描述。
在此描述的示例实施例可由使转换模型的柔性最大(softmax)操作优化的硬件或硬件和指令(例如,代码或程序软件)的组合来实现,并且可以是或应用于图形处理器(GPU)或加速器以实现机器学习。作为非限制性示例,示例实施例可以是或应用于数据中心、云环境、移动系统或嵌入式系统,数据中心、云环境、移动系统或嵌入式系统可提供服务(诸如,但不限于,自然语言处理(NLP)、翻译以及与服务器的问答(Q&A))。在此描述的转换模型(transformer model)的各个方面可适用于在各种现有的基于转换的网络模型中的实现。尽管在下文中将主要结合使用转换模型的推断处理来描述示例实施例,但是示例实施例也可适用于训练处理。在此,应注意,关于示例或实施例(例如,关于示例或实施例可包括或实现什么)的术语“可”的使用表示存在这样的特征被包括或者实现的至少一个示例或实施例,而所有示例和实施例不限于此。
图1示出根据一个或多个实施例的被配置为通过实现转换模型来执行推断的示例电子装置的示例配置。
参照图1,示例电子装置100可通过经由实现转换模型对给定输入数据执行推断来生成结果数据或目标数据。电子装置100可以是各种类型中的一种。作为非限制性示例,电子装置100可包括便携式通信装置(例如,智能电话)、计算装置、便携式多媒体装置、便携式医疗装置、相机、可穿戴装置、家用电器或服务器。然而,电子装置100不限于前述示例。
电子装置100可包括处理器(例如,一个或多个处理器)110和存储器120。作为非限制性示例,处理器110可执行例如指令(例如,编码)以控制电子装置100的至少一个其他组件(例如,硬件组件或硬件加代码或程序软件指令组件),并且可执行各种数据处理或其他操作。在一个示例中,作为数据处理或其他操作的至少一部分,处理器110可将指令或数据存储在存储器120中,处理存储在存储器120中的指令或数据,并且将从其获得的结果数据存储在存储器120中。在一个示例中,处理器110可包括主处理器(例如,中央处理器(CPU)或应用处理器(AP))或可独立于主处理器或与主处理器结合操作的辅助处理器(例如,图形处理器(GPU)、神经处理器(NPU)、图像信号处理器(ISP)、传感器集线器处理器或通信处理器(CP))。例如,当电子装置100包括主处理器和辅助处理器时,辅助处理器可被设置为使用比主处理器的功率更少的功率,或者可专用于指定的功能。辅助处理器可与主处理器分开实现,或者作为主处理器的一部分实现。
存储器120可在其中存储由电子装置100的一个或多个组件(例如,处理器110)执行的指令和将由组件使用的各种数据。作为非限制性示例,数据可包括指令、相关指令的输入数据或输出数据以及转换模型的数据。作为非限制性示例,存储器120可包括易失性存储器(诸如,随机存取存储器(RAM)、动态RAM(DRAM)和静态RAM(SRAM))和/或非易失性存储器(诸如,闪存)。
处理器110可控制电子装置100的整体操作,并且可执行在此描述的一个或多个操作。在一个示例中,处理器110可通过实现包括多个编码器和多个解码器的转换模型来执行推断。编码器和解码器中的每个可包括确定注意力值的注意力块。在一个示例中,在此描述的术语“注意力”可指示对其自身执行注意力的自注意力。例如,自注意力可指示将输入句子中的词之间的相似度确定为注意力值,并且通过自注意力得出的注意力值可指示每个词与句子中的另一词相关联的程度。注意力值可指示输入数据的特定元素(例如,输入句子中的特定词)与另一元素(例如,输入句子中的另一词)相关联的概率值。
可在注意力块中执行柔性最大操作。柔性最大操作可由作为示例的GPU或加速器的处理器110执行。处理器110可将在注意力块中执行的柔性最大操作分解或分裂成多个操作,该多个操作可与在相应的柔性最大操作之前和之后执行的矩阵操作融合。处理器110可使用指数的乘积规则来分解柔性最大操作,使得柔性最大操作可以以与对应的矩阵操作相同的单元和相同的次序来处理。处理器110可通过将分解的柔性最大操作与相应柔性最大操作之前和之后的矩阵操作融合来减少柔性最大处理时间、存储器访问的量和资源消耗(例如,功耗)。
在柔性最大操作之前和之后各自执行的矩阵操作可包括逐区块(tile-wise)执行的矩阵乘法。处理器110可调整柔性最大操作,使得柔性最大操作包括可用于逐区块矩阵操作的操作处理,并且结合对应的矩阵乘法来执行调整后的柔性最大操作。处理器110可从而减少用以读取和存储数据的存储器存取的数量和量。通常,可逐行地执行柔性最大操作,并且可独立于逐区块执行的矩阵乘法来执行柔性最大操作,并且因此柔性最大操作和矩阵乘法可期望独立的数据读取和数据存储处理,这可增加存储器访问的数量和量。然而,在一个示例中,处理器110可通过将现有柔性最大操作转换为逐区块操作并且结合在柔性最大操作之前和/或之后执行的矩阵乘法执行柔性最大操作来减少对存储器120的访问的总数量和量。
在一个示例中,处理器110可通过将柔性最大操作分解为第一子柔性最大操作、缩减(reduction)操作和第二子柔性最大操作来执行转换模型的注意力块中的现有柔性最大操作。处理器110可以以逐区块方式执行第一子柔性最大操作(例如,第一子柔性最大逐区块操作),基于第一子柔性最大操作的结果值来执行缩减操作以确定调整因子(或缩放因子),并且基于缩减操作的结果值以逐区块方式执行第二子柔性最大操作(例如,第二子柔性最大逐区块操作)。
在一个示例中,处理器110可基于查询和键来执行第一矩阵操作,并且基于第一矩阵操作的结果值来以逐区块方式执行第一子柔性最大操作。在一个示例中,第一矩阵操作和第一子柔性最大操作可具有相同的数据读取单元(或单位,unit)和相同的数据读取次序。处理器110可对第一矩阵操作的结果值执行缩放和掩码(scale and mask)操作,并且基于在缩放和掩码操作之后获得的结果值来以逐区块方式执行第一子柔性最大操作。由处理器110执行的第一子柔性最大操作可包括:从输入数据逐区块检测第一最大值,确定通过从数据的每个值减去对应的第一最大值而获得的结果值的第一指数化值(exponentiatedvalue),以及逐区块确定第一指数化值的第一总和值。
由处理器110执行的缩减操作可包括:确定通过从第一最大值减去第二最大值而获得的结果值的第二指数化值,以及将通过将第二指数化值除以第二总和值而获得的结果值确定为调整因子,第一最大值由第一子柔性最大操作确定,第二最大值是数据的所有区块的最大值。在一个示例中,可通过将与数据的每个区块对应的第二指数化值应用于第一总和值来确定第二总和值。在各种示例中,缩减操作可由包括比较器、加法器-减法器、指数处理器、乘法和除法运算器以及存储器的单独的硬件装置(例如,图8的缩减操作器850)来执行。
处理器110可通过将通过缩减操作获得的调整因子应用于通过第一子柔性最大操作获得的第一指数化值来执行第二子柔性最大操作。处理器110可基于第二子柔性最大操作的结果值和给定数据值来逐区块执行第二矩阵操作(例如,第二逐区块矩阵操作)。第二矩阵操作可以是第二子柔性最大操作的结果值与映射到键的值之间的矩阵乘法。矩阵乘法的结果值可被确定为注意力值。第二子柔性最大操作和第二矩阵操作可具有相同的数据读取次序和相同的数据读取单元。
在一个示例中,当转换模型在自然语言处理(NLP)中处理句子时,自注意力处理可占用大部分执行(或实行)时间。在该处理中,不是矩阵乘法的非矩阵乘法可占据执行时间的大部分。这是因为这样的非矩阵乘法运算是存储器密集型的并且可期望频繁的存储器访问,并且因此可被分配更多的时间来处理数据移动。另外,由于制造成本或装置的物理环境(例如,面积的大小和引脚的数量)的限制,片外存储器(诸如,DRAM)的带宽的增加可存在限制,并且因此转换模型中的存储器密集型非矩阵乘法运算可由于带宽瓶颈而占据处理时间的大部分。处理器110可将存储器密集型非矩阵乘法运算(例如,现有的柔性最大操作)分解为前述子操作(例如,第一子柔性最大操作、缩减操作和第二子柔性最大操作),并且将子操作与在子操作之前和/或之后执行的计算密集型矩阵乘法运算融合,从而使存储器访问最小化。
除了推断处理之外,上述转换模型的操作可在转换模型的训练(或学习)处理中以相同的方式被执行。
图2示出根据一个或多个实施例的转换模型的示例配置。
参照图2,示例转换模型200可对给定输入数据执行推断并提供输出数据。转换模型200可基于输入数据并基于先前时间的输出数据来确定当前时间的输出数据。当前时间的输出数据在此也可被称为当前输出数据,并且先前时间的输出数据在此也可被称为先前输出数据。
转换模型200可包括多个堆叠的编码器220和多个堆叠的解码器240。在非限制性示例中,转换模型200可以是其中可具有作为基本块的自注意的编码器220和解码器240分别堆叠的硬件结构。然而,这仅是示例,并且编码器220和解码器240可以以不同的方式被构造。编码器220可包括N个编码器,并且解码器240可包括N个解码器。N是大于或等于2的自然数。编码器220和解码器240可以以相同层被重复N次的形式分别被实现。
在一个示例中,编码器220之中的第一编码器(例如,编码器1)可接收通过嵌入210得出的输入数据的嵌入向量,并且解码器240之中的第一解码器(例如,解码器1)可接收通过嵌入230得出的先前输出数据的嵌入向量。在该示例中,作为非限制性示例,输入数据和先前输出数据可以是特定词或句子。在嵌入向量被输入到编码器1和解码器1之前,位置编码值可被添加到嵌入向量。位置编码值可用于提供与句子中的词的位置相关联的位置信息。
编码器220可顺序地执行与编码器220的总数对应的层操作,然后将最后编码器(例如,编码器N)的输出值单独地发送到相应的解码器240。随后,解码器240还可执行与解码器240的总数对应的层操作,并且每当每个操作被执行时,从编码器N发送的输出值可被使用。可通过线性处理250线性转换来自最后解码器N的输出值,并且可基于线性转换后的值来确定输出数据。
图2中示出的转换模型200的配置仅作为示例被提供,因此转换模型的配置可变化,并且转换模型的示例的范围不受转换模型200的示出的配置的限制。
图3A示出根据一个或多个实施例的示例编码器的示例配置。
参照图3A,编码器310可对应于图2中示出的转换模型200的编码器220中的任何一个。编码器310可包括注意力块312、相加和归一化(如图所示,Add&Norm)块314和318、以及前馈块316。在一个示例中,当编码器310被实现为神经网络的层时,编码器310可包括与注意力块312对应的第一子层和与前馈块316对应的第二子层。
确定注意力值的注意力块312可对应于多头(multi-head)自注意力。多头自注意力可指示并行地执行自注意力操作。自注意力操作可指示对自身执行注意力操作,并且注意力操作可指示获得注意力值。前馈块316可对应于一般前馈神经网络。相加块和归一化块314和318可执行将输入和输出彼此相加的残差连接操作,并且可执行使用平均值和方差执行归一化的层归一化操作。
在一个示例中,注意力块312可确定与给定查询的所有键中的每个键的相似度,并且将确定的相似度作为权重施加到映射到对应键的每个值。注意力块312可计算被施加相似度的加权和,并将其提供为注意力值。上述查询、键和值可以是例如输入句子中的所有词的向量。在由注意力块312执行的自注意力中,可计算输入句子中的词之间的相似度,并且因此可确定特定词与句子中的另一词相关联的概率。
图3B示出根据一个或多个实施例的示例解码器的示例配置。
参照图3B,在一个示例中,解码器320可对应于图2中示出的转换模型200的解码器240中的任何一个。类似于图3A的编码器310,解码器320可包括用于执行自注意力操作和前馈操作的块。解码器320可包括掩码注意力块322、相加和归一化(如图所示,Add&Norm)块332、334和336、注意力块324和前馈块326。在一个示例中,当解码器320被实现为神经网络的层时,解码器320可包括与掩码注意力块322对应的第一子层、与注意力块324对应的第二子层、以及与前馈块316对应的第三子层。
掩码注意力块322和注意力块324可确定注意力值,并且可对应于多头注意力。多头注意力可指示并行地执行注意力操作。在一个示例中,掩码注意力块322和注意力块324可执行与图3A的注意力块312相同的操作。然而,掩码注意力块322可与注意力块324的不同之处在于可将掩码应用于注意力分数矩阵。掩码可防止在注意力分数矩阵中在其自己的词之前的未来点处引用词。在注意力块324中,可执行自注意操作。
在一个示例中,前馈块326可对应于典型的前馈神经网络。相加和归一化块332、334和336可执行将输入和输出彼此相加的残差连接操作,并且执行通过实现平均值和方差来执行归一化的层归一化操作。
图4示出根据一个或多个实施例的在注意力块中执行的处理的示例。
参照图4,在一个或多个示例中,附图标记410示出在典型的注意力块422中执行的处理,并且附图标记440示出在注意力块452中执行的处理。在一个示例中,在注意力块452中执行的处理可由图1的处理器110执行。
在典型的注意力块422中,可根据多头结构420并行地执行注意力操作,并且可以以第一矩阵操作块432、缩放块434、掩码块436、柔性最大块438和第二矩阵操作块439的次序执行操作。在第一矩阵操作块432中,可执行基于查询和键的矩阵乘法。在第二矩阵操作块439中,可执行基于映射到键的值以及基于柔性最大块438的结果值的矩阵乘法。在缩放块434中,可执行调整第一矩阵操作块432的输出值的大小的缩放操作。在掩码块436中,可执行用于避免或防止获得具有包括其自己的值的未来值的注意力的掩码。在柔性最大块438中,可基于从掩码块436输出的值来计算相似度。在第二矩阵操作块439中,可通过映射到键的值与对应的相似度之间的矩阵乘法来确定注意力值。
在一个或多个示例的注意力块452中,可根据多头结构450并行地执行注意力操作。在注意力块452中,在典型的柔性最大块438中执行的操作可被分解为分别在第一子柔性最大块466、缩减块470和第二子柔性最大块482中执行的操作,然后可在其中被执行。
注意力块452中的处理可主要被划分为包括第一矩阵操作块462、缩放和掩码块464以及第一子柔性最大块466中的操作的第一操作处理460、包括缩减块470中的操作的第二操作处理、以及包括第二子柔性最大块482和第二矩阵操作块484中的操作的第三操作处理480。
在第一矩阵操作块462中,可执行基于查询和键的矩阵乘法。在缩放和掩码块464中,可将缩放操作和掩码操作应用于矩阵乘法的结果值。在一个示例中,缩放操作和掩码操作可各自逐元素被处理,并且因此可与它们将被处理之前和/或之后的操作融合。这是因为逐元素处理的操作可不受数据读取次序和数据读取单元的影响。缩放操作和掩码可通过应用层融合来与第一矩阵操作块462的操作融合。
在第一子柔性最大块466中,可在逐区块操作中检测第一最大值,并且可在逐区块操作中确定指数化值的第一总和值。在缩减块470中,可基于第一子柔性最大块466的结果值来确定调整因子。在第二子柔性最大块482中,可将在缩减块470中确定的调整因子应用于第一子柔性最大块466的结果值,并且可在逐区块操作中确定柔性最大操作的结果值。在第二矩阵操作块484中,可执行第二子柔性最大操作的结果值与映射到键的值之间的矩阵乘法,并且可通过该矩阵乘法来确定注意力值。下面将更详细地描述在第一子柔性最大块466、缩减块470和第二子柔性最大块482中执行的操作。
图5示出根据一个或多个实施例的矩阵乘法与典型的柔性最大操作之间的示例比较。
参照图5,附图标记510示出矩阵乘法(例如,第一矩阵操作),并且附图标记540示出典型的柔性最大操作。在矩阵乘法510中,可通过以区块形式的矩阵输入Q 522与以区块形式的矩阵输入K 524之间的乘法来确定以区块形式的矩阵输出S 530。在一个示例中,可如由下面的等式1所示计算与矩阵输出S530中的区块0对应的矩阵输出532。
等式1:
在上面的等式1中,Q00至Q22是矩阵输入Q 522中的与矩阵输出S 530的区块0对应的矩阵元素,并且K00至K12是矩阵输入K 524中的与矩阵输出S 530的区块0对应的矩阵元素。S00至S22是通过矩阵输入Q 522与矩阵输入K 524之间的矩阵乘法获得的对应于区块0的矩阵输出S 532的矩阵元素。对于矩阵乘法,可通过将矩阵的高度和宽度都平铺(tile)为常数形式的值来执行操作。
在典型的柔性最大操作中,可以以逐行操作(例如,以行单元542而不通过矩阵之间的乘法)执行数据处理。在一个示例中,可执行获得包括在一个行中的所有值之中的最大值然后获得包括在该行中的值的总和值的操作。
如上所述,以逐区块操作处理数据的矩阵乘法和以逐行操作处理数据的典型的柔性最大操作可在数据处理单元和次序方面彼此不同,并且因此操作可不彼此结合地被执行。因此,在图4的示例中,典型的柔性最大块438中的操作可不结合在第一矩阵操作块432或第二矩阵操作块439中逐区块执行的矩阵乘法来执行。
如稍后参照图6详细描述的,根据一个或多个实施例,典型的柔性最大操作可被分解(分裂)成三个操作(例如,第一子柔性最大操作、缩减操作和第二子柔性最大操作),然后可与不同的矩阵乘法运算融合(结合)。尽管仅讨论了三个操作(第一子柔性最大操作、缩减操作和第二子柔性最大操作),但这仅是示例,并且可实现附加操作。因此,在转换模型的注意力块中执行的非矩阵乘法运算可通过融合与矩阵乘法运算结合来处理。
图6示出根据一个或多个实施例的示例柔性最大操作。
参照图6,示出执行典型的柔性最大操作610的处理和执行所提出的示例柔性最大操作620的处理。在执行典型的柔性最大操作610的处理中,可以以逐行操作(例如,以行单元613)对作为将被处理的目标的输入数据x 612执行数据处理,并且可从包括在行单元613中的所有值之中得出最大值m 614。包括在输入数据x 612中的值可以是向量值或特征值。随后,可对通过从输入数据x 612的值中的每个减去最大值m 614而获得的结果值执行指数化,并且可生成指数化数据ex-m615。随后,可对指数化数据ex-m 615逐行执行数据处理,并且可确定包括在每个行单元中的所有指数化值的总和值616。随后,可基于总和值616对指数化数据ex-m 615执行归一化,并且可确定归一化的结果数据617。这样的典型的柔性最大操作可由下面的等式2表示。
等式2:
·m:Max(xk),k∈{0,1,2,...,N-1}
在等式2中,Softmax(x)表示对输入数据x的柔性最大操作的结果值,并且N表示包括在输入数据x的一个行中的元素(或元素值)的数量。Max(xk)表示对应于第k值xk的最大值m。在一个示例中,包括在行中的所有值可具有相同的对应最大值。如由上面的等式2所示,可根据数据读取次序和数据读取单元逐行执行典型的柔性最大操作610。
与以逐行操作执行的典型的柔性最大操作610不同,所提出的柔性最大操作620可逐区块被执行,以与在柔性最大操作之前和/或之后执行的矩阵乘法运算结合(或融合)被执行。通过实现指数的乘积规则,由上面的等式2表示的典型的柔性最大操作可如由下面的等式3所示被分解。通过该分解,可改变处理过程以与矩阵乘法运算相同的读取次序和相同的读取单元读取或检索数据,这可允许结合逐区块执行的矩阵乘法运算来执行柔性最大操作。
等式3:
·(mTile)i:Max(xk),k∈{0,1,2,...,TileSize-1}针对第i区块
如上所述,可通过将柔性最大操作620分解为第一子柔性最大操作630、缩减操作640和第二子柔性最大操作650来执行柔性最大操作620。第一子柔性最大操作630可对应于柔性最大中的最大值和总和值的检测,并且第二子柔性最大操作650可对应于归一化。
参照图6,在第一子柔性最大操作630中,可通过逐区块操作(例如,以区块单元633)对输入数据x 632执行数据处理。在一个示例中,被执行数据处理的区块单元633的大小(例如,形成区块的宽度的元素的数量)可对应于上面的等式3中的TileSize。可从输入数据x 632逐区块检测第一最大值mtile634,并且可确定通过对x-mTile指数化而获得的第一指数化值636,x-mTile是通过从输入数据x 632的每个值减去对应的第一最大值mtile 634而获得的结果值。随后,可逐区块确定第一指数化值636的第一总和值SumTile638。第一总和值求和SumTile 638可对应于上面的等式3中的
在缩减操作640中,可获得mc 642,mc 642是通过从在第一子柔性最大操作630中确定的第一最大值mTile 634减去作为输入数据x 632的所有区块的最大值的第二最大值m而获得的结果值,并且可通过对mc 642指数化来确定第二指数化值644。可通过从第一子柔性最大操作630得出的第一总和值SumTile 638与第二指数化值644之间的矩阵乘法来确定第二总和值Sumex 646,并且可将通过将第二指数化值644除以第二总和值Sumex646获得的结果值C 648确定为调整因子。调整因子C 648可由下面的等式4表示,等式4对应于上面的等式3的一部分。
等式4:
通过实现如由等式3表示的柔性最大操作,可逐区块获得最大值和总和值。在典型的柔性最大操作610的示例中,可通过逐行操作来执行数据处理,并且因此柔性最大操作可不与柔性最大操作之前和/或之后的操作融合。因此,可发生不必要的数据访问。相反,在所提出的柔性最大操作620的示例中,可以以与柔性最大操作之前和/或之后的操作相同的单元和相同的次序处理数据,并且可通过与柔性最大操作之前和/或之后的操作融合来执行柔性最大操作。因此,可减少不必要的数据访问,并且可减少执行(或实行)时间。由于不必要的数据访问和执行时间被减少,因此能量消耗可被减少。
图7示出根据一个或多个实施例的在包括柔性最大操作的注意力块中执行的处理的示例。
参照图7,在注意力块中执行的处理过程可被划分为第一操作处理710、第二操作处理720和第三操作处理730。在一个示例中,第一操作处理710可包括第一矩阵操作712、缩放和掩码操作714以及第一子柔性最大操作716。在一个示例中,第二操作处理720可对应于缩减操作处理。在一个示例中,第三操作处理730可包括第二子柔性最大操作732和第二矩阵操作734。在第一操作处理710中,缩放和掩码操作714可连接到前端的第一矩阵操作712和第一子柔性最大操作716(或与前端的第一矩阵操作712和第一子柔性最大操作716融合)。在第三操作处理730中,第二子柔性最大操作732可连接到后端的第二矩阵操作734(或与后端的第二矩阵操作734融合)。
具体地,在第一操作处理710中的矩阵操作712中,可执行查询Q与键K之间的矩阵乘法,并且可获得矩阵乘法的结果Xs。随后,可对Xs执行缩放和掩码操作714,并且可基于通过执行缩放和掩码操作714获得的结果值来执行第一子柔性最大操作716。缩放和掩模操作714可与第一子柔性最大操作716融合。在第一子柔性最大操作716中,可通过逐区块操作来检测第一最大值mTile',并且可通过对通过从缩放和掩码操作714获得的结果减去第一最大值mTile'而获得的结果值指数化来获得第一指数化值 第一最大值mTile'可对应于与每个区块中的值(例如,特征值)相比最大的单个值。随后,可通过逐区块操作来确定第一指数化值的第一总和值SumTile。第一总和值SumTile可对应于通过将每个区块中的所有值的指数化值相加而获得的值。在第一操作处理710中,第一子柔性最大操作716可直接使用第一矩阵操作712以及缩放和掩码操作714的结果,并且因此用于第一矩阵操作712的结果和用于第一子柔性最大操作716的存储的存储器访问可以不是必需的。
在第二操作处理720中,可执行缩减操作。缩减操作可以是在被平铺之后从主要处理的部分值获得完整值的操作。在第二操作处理720中,可通过从在第一子柔性最大操作716中确定的第一最大值mTile'减去作为所有区块的最大值的第二最大值max{mTilej'}来确定结果值mc,并且可通过对mc指数化来确定第二指数化值随后,可通过从第一子柔性最大操作630得出的第一总和值SumTile与第二指数化值之间的矩阵乘法处理来确定第二总和值Sumg,并且可将通过将第二指数化值除以第二总和值Sumg而获得的结果值C确定为调整因子。
具体地,在第三操作处理730中的第二子柔性最大操作732中,可通过将在第一子柔性最大操作716中获得的第一指数化值乘以(例如,矩阵乘法)在缩减操作中获得的调整因子C来确定柔性最大操作的最终结果值。可通过对第二矩阵操作734中使用的数据进行归一化来将第二子柔性最大操作732与第二矩阵操作734融合。在第二矩阵操作734中,可通过柔性最大操作的最终结果值(例如,第二子柔性最大操作732的结果值)与映射到在第一矩阵操作712中使用的键K的值V之间的矩阵乘法来确定注意力值Y。在一个示例中,第二子柔性最大操作732的结果可直接用于第二矩阵操作734,而无需单独的存储处理,并且因此存储器访问可被减少。
如上所述,第一子柔性最大操作716和第二子柔性最大操作732可由逐区块操作执行,并且因此可分别与由逐区块操作执行的第一矩阵操作712和第二矩阵操作734融合。该融合可减少存储器访问。典型的柔性最大操作可以不是逐区块操作,并且因此典型的柔性最大操作的第一矩阵操作712、第二矩阵操作734和柔性最大操作可独立地期望数据输入和输出处理。因此,可期望典型的柔性最大操作具有足够的存储器访问。然而,通过所提出的柔性最大操作,第一矩阵操作712与第一子柔性最大操作716之间的融合以及第二子柔性最大操作732与第二矩阵操作734之间的融合可减少数据输入和输出请求并减少存储器访问。与典型的柔性最大操作相比,所提出的柔性最大操作可将存储器访问减少大约一半,并且存储器访问的减少可减少处理时间和能量消耗。
图8示出根据一个或多个实施例的缩减操作器的示例配置。
参照图8,根据一个或多个实施例,可针对多NPU结构(诸如,但不限于,GPU)实现柔性最大操作。电子装置800可包括多个处理器812和814、存储器842和844以及缩减操作器850。在一个示例中,仅作为示例,处理器812和814可具有多NPU结构或多流处理器(SM)结构。处理器812和814可分别包括“计算器(或计算处理器)822和存储器832”以及“计算器(或计算处理器)824和存储器834”。在非限制性示例中,存储器832和834可各自是SRAM或L1高速缓存存储器。在非限制性示例中,存储器844可以是SRAM或L2高速缓存存储器,并且存储器842可以是DRAM。
处理器812和814可通过转换模型的注意力块中的逐区块操作来执行第一子柔性最大操作。处理器812和814可通过经由执行逐区块操作从数据检测第一最大值、确定通过从数据的每个值减去对应的最大值而获得的结果值的第一指数化值、以及经由逐区块操作确定第一指数化值的第一总和值来执行第一子柔性最大操作。
在一个示例中,缩减操作可由单独的硬件装置(诸如,缩减操作器850)来执行。缩减操作器850可执行缩减操作以基于第一子柔性最大操作的结果值来确定调整因子。缩减操作器850可包括比较器862、加法器-减法器864、指数处理器866、乘法和除法运算器868以及存储器865。存储器865可以是SRAM,并且在存储器865中存储从第一子柔性最大操作得出的值。
缩减操作器850可从存储器865读取从第一子柔性最大操作得出的第一最大值和第一总和值,并且通过比较器862检测作为所有区块的最大值的第二最大值。比较器862可用于通过对输入值进行比较来获得最大值。缩减操作器850可确定通过加法器-减法器864从第一最大值减去第二最大值而获得的结果值,并且确定通过指数处理器866从第一最大值减去第二最大值获得的结果值的第二指数化值。另外,加法器-减法器864还可用于获得指数化值的总和,并且指数处理器866可用于其他指数相关计算。缩减操作器850可通过乘法和除法运算器868将与数据的每个区块对应的第二指数化值应用(例如,乘法处理)到第一总和值来确定第二总和值,并且将通过将第二指数化值除以第二总和值而获得的结果值确定为调整因子。缩减操作器850的这样的配置可应用于使用基于变换的模型的系统(例如,用于机器学习的加速器或GPU)。在下文中,将参照图9更详细地描述由缩减操作器850执行的操作的类型和次序。
处理器812和814可基于由缩减操作器850执行的缩减操作的结果值来逐区块执行第二子柔性最大操作。处理器812和814可通过将从缩减操作得出的调整因子应用(例如,相乘)到从第一子柔性最大操作得出的第一指数化值来执行第二子柔性最大操作。
图9示出根据一个或多个实施例的由缩减操作器执行的示例缩减操作。
由缩减操作器(例如,图8的缩减操作器850)执行的缩减操作可从上面参照图7描述的缩减操作处理720改变为图9中示出的缩减操作处理910以用于实时处理。在一个示例中,缩减操作处理910可在很大程度上被划分为第一部分或第一操作以及第二部分或第二操作,第一部分或第一操作读取从第一子柔性最大操作得出的第一最大值mTile和第一总和值SumTile,计算作为所有区块的最大值的第二最大值m和第二总和值Sumex,并且将计算的第二最大值m和计算的第二总和值Sumex存储在存储器865中,第二部分或第二操作使用存储在存储器865中的第二最大值m和第二总和值Sumex来计算调整因子C。第一部分或第一操作可包括操作处理922、924和926,并且第二部分或第二操作可包括操作处理932和934。
具体地,在第一部分中,缩减操作器850可读取在处理器812和814中计算的第一最大值mTile和第一总和值SumTile。在该示例中,可通过绕过存储器844将第一最大值mTile和第一总和值SumTile直接传送到缩减操作器850。在操作处理926中,比较器862可确定输入数据的每个区块的第一最大值mTile和第二最大值m。比较器862可将第一最大值mTile与先前最大值mtile_prev进行比较,该先前最大值mtile_prev是直到先前区块验证的值之中的最大值。在操作处理924中,加法器-减法器864可基于第一最大值mTile与先前最大值mtile_prev之中的哪个值更大或更小来计算第一最大值mTile与先前最大值mtile_prev之间的差值mc'。指数处理器866可通过对差值mc'指数化来获得指数化值在操作处理922中,乘法和除法运算器868可在第一总和值SumTile与包括在当前区块中的数据的指数化值之间执行乘法操作,并且加法器-减法器864可通过将区块的所有乘法结果相加来确定第二总和值Sumex。基于第一最大值mTile与先前最大值mtile_prev之中的哪个值更大或更小,可如由下面的等式5所示确定第二总和值Sumex。
等式5:
缩减操作器850可对每个区块重复执行前述处理,并且通过基于操作处理922、924和926执行第一部分或第一操作而得出的第二最大值m和第二总和值Sumex可被存储在存储器865中。当对所有区块执行求和运算时,可获得完整的第二总和值Sumex。与第二最大值m和第二总和值Sumex对应的数据的大小通常可仅对应于几百千字节,并且因此与第二最大值m和第二总和值Sumex对应的数据可被存储在存储器865(诸如,但不限于,SRAM)中,并且然后可在之后被使用。
在包括处理932和934的第二部分或第二操作中,缩减操作器850可读取存储在存储器842中的第一最大值mTile。在操作处理932中,加法器-减法器864可通过从第一最大值mTile减去存储在存储器865中的第二最大值来计算结果值mc。指数处理器866可通过对mc指数化来确定第二指数化值在操作处理934中,乘法和除法运算器868可通过将第二指数化值除以第二总和值Sumex来确定调整因子C。调整因子C可被传送到处理器812和814,并且处理器812和814可通过将调整因子C应用于在第一子柔性最大操作中获得的第一指数化值来确定柔性最大的最终结果值。确定的柔性最大的最终结果值可立即用于后续的第二矩阵操作。
图10示出示例电子装置的示例推断方法。推断方法的操作可由电子装置(例如,图1的电子装置100)执行。图10中的操作可以以所示的顺序和方式来执行。然而,在不脱离示出的示例的精神和范围的情况下,可改变一些操作的次序,或者可省略一些操作。另外,图10中示出的操作可并行或同时被执行。图10的一个或多个框以及框的组合可由执行指定功能的基于专用硬件的计算机或专用硬件和指令(例如,计算机或处理器指令)的组合来实现。除了下面的图10的描述之外,图1至图9的描述也适用于图10,并且通过引用包含于此。因此,为了简洁的目的,这里可不再重复上面的描述。图10的操作可由处理器执行。
参照图10,在操作1010中,电子装置可接收输入数据。在非限制性示例中,输入数据可以是作为将被推断的目标的数据,并且仅作为示例,输入数据可以是将被翻译的句子。
在操作1020中,电子装置可通过经由实现包括多个堆叠的编码器和多个堆叠的解码器的转换模型(例如,图2的转换模型200)对输入数据执行推断来确定结果数据。电子装置可通过使用转换模型来确定与输入数据(例如,将被翻译的原始句子)对应的结果数据(例如,翻译的句子或目标句子)。如上所述,转换模型可基于输入数据(原始数据)和先前时间的结果数据(转换后的数据)通过各种块中的处理来确定当前时间的结果数据。确定结果数据的操作可包括确定转换模型的编码器和解码器中的每个中的注意力值。编码器和解码器中的每个可包括用于确定注意力值的注意力块,并且电子装置可通过将要在注意力块中执行的柔性最大操作分解为第一子柔性最大操作、缩减操作和第二子柔性最大操作来执行柔性最大操作,以与由逐区块操作执行的矩阵乘法操作融合。将参照图11详细描述在注意力块中执行的处理过程。
图11示出根据一个或多个实施例的在转换模型的注意力块中执行柔性最大操作的示例。图11中的操作可以以所示的顺序和方式来执行。然而,在不脱离示出的示例的精神和范围的情况下,可改变一些操作的次序,或者可省略一些操作。另外,图11中示出的操作可并行或同时被执行。图11的一个或多个框以及框的组合可由执行指定功能的基于专用硬件的计算机或专用硬件和指令(例如,计算机或处理器指令)的组合来实现。除了下面的图11的描述之外,图1至图10的描述也适用于图11,并且通过引用包含于此。因此,为了简洁的目的,这里可不再重复上面的描述。图11的操作可由处理器执行。
参照图11,在操作1110中,电子装置可基于查询和键对输入数据执行第一矩阵操作。在第一矩阵操作中,可执行查询与键之间的矩阵-矩阵乘法运算,查询和键各自具有区块单元的矩阵形式。
在操作1120中,电子装置可对第一矩阵操作的结果值执行缩放和掩码操作。电子装置可执行缩放处理以调整第一矩阵操作的结果值的大小,并且执行掩码处理以避免或防止特定数据对结果数据的影响。
在操作1130中,电子装置可以以逐区块方式执行第一子柔性最大操作。第一子柔性最大操作可包括:基于逐区块操作从输入数据检测第一最大值,确定通过从输入数据的每个值减去对应的第一最大值而获得的结果值的第一指数化值,以及逐区块确定第一指数化值的第一总和值。
在操作1140中,电子装置可基于第一子柔性最大操作的结果来执行缩减操作。电子装置可基于第一子柔性最大操作的结果值来确定调整因子。缩减操作可包括:确定通过从来自第一子柔性最大操作得出的第一最大值减去第二最大值(其是数据的所有区块的最大值)而获得的结果值的第二指数化值,通过将与数据的每个区块对应的第二指数化值应用于在第一子柔性最大操作中确定的第一总和值来确定第二总和值,以及将通过将第二指数化值除以第二总和值而获得的结果值确定为调整因子。
根据示例,缩减操作可由包括比较器、加法器-减法器、指数处理器、乘法和除法运算器以及存储器的缩减操作器(例如,图8的缩减操作器850)来执行。
在操作1150中,电子装置可基于缩减操作的结果值以逐区块方式执行第二子柔性最大操作。电子装置可将从缩减操作得出的调整因子应用于从第一子柔性最大操作得出的第一指数化值(例如,将缩减操作得出的调整因子与从第一子柔性最大操作得出的第一指数化值相乘)。
在操作1160中,电子装置可基于第二子柔性最大操作的结果值逐区块执行第二矩阵操作。第二矩阵操作可包括第二子柔性最大操作的结果值与映射到键的值之间的矩阵乘法,并且第二矩阵操作的结果值可被确定为注意力值。
在此关于图1至图11描述的电子装置、处理器、存储器、计算器、缩减操作器、比较器、加法器-减法器、指数处理器、乘法和除法运算器以及其他装置、设备、单元、模块和组件由硬件组件实现。可用于执行本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行本申请中描述的操作的任何其他电子组件。在其他示例中,执行本申请中描述的操作的硬件组件中的一个或多个由计算硬件(例如,由一个或多个处理器或计算机)来实现。处理器或计算机可由一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望结果的任何其他装置或装置的组合)来实现。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行指令或软件(诸如,操作系统(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 (24)
1.一种电子装置,包括:
处理器,被配置为:实现包括多个编码器和多个解码器的转换模型;
其中,所述多个编码器和所述多个解码器中的每个包括注意力块,注意力块被配置为确定注意力值,并且
其中,处理器还被配置为:
在推断操作中,在注意力块中执行第一子柔性最大逐区块操作,基于第一子柔性最大逐区块操作的结果值来执行缩减操作以确定调整因子,并且基于调整因子来执行第二子柔性最大逐区块操作。
2.根据权利要求1所述的电子装置,还包括:存储器,存储将由处理器执行的用于将处理器配置为执行推断操作的指令。
3.根据权利要求1所述的电子装置,其中,处理器还被配置为:
基于查询和键来执行第一矩阵操作,并且基于第一矩阵操作的结果值来执行第一子柔性最大逐区块操作。
4.根据权利要求3所述的电子装置,其中,处理器还被配置为:
对第一矩阵操作的结果值执行缩放和掩码操作,并且基于缩放和掩码操作的结果值来执行第一子柔性最大逐区块操作。
5.根据权利要求3所述的电子装置,其中,第一矩阵操作和第一子柔性最大逐区块操作在数据读取次序和数据读取单元方面是相同的。
6.根据权利要求1所述的电子装置,其中,处理器还被配置为:
通过从输入数据逐区块检测第一最大值、确定通过从输入数据的每个值减去第一最大值而获得的结果值的第一指数化值并且逐区块确定第一指数化值的第一总和值,来执行第一子柔性最大逐区块操作。
7.根据权利要求6所述的电子装置,其中,处理器还被配置为:
通过以下操作来执行缩减操作:
通过指数处理器确定通过从第一最大值减去第二最大值而获得的结果值的第二指数化值,第二最大值是输入数据的所有区块的最大值;
通过乘法和除法运算器通过将与输入数据的每个区块对应的第二指数化值应用于第一总和值来确定第二总和值;并且
通过乘法和除法运算器将通过将第二指数化值除以第二总和值而获得的结果值确定为调整因子。
8.根据权利要求7所述的电子装置,其中,处理器还被配置为:
通过将调整因子应用于第一指数化值来执行第二子柔性最大逐区块操作。
9.根据权利要求1至权利要求8中的任一项所述的电子装置,其中,处理器还被配置为:
基于第二子柔性最大逐区块操作的结果值和给定数据值来执行第二逐区块矩阵操作。
10.根据权利要求9所述的电子装置,其中,第二子柔性最大逐区块操作和第二逐区块矩阵操作在数据读取次序和数据读取单元方面是相同的。
11.一种电子装置,包括:
处理器,被配置为:实现包括多个编码器和多个解码器的转换模型;以及
缩减电路系统,
其中,所述多个编码器和所述多个解码器中的每个包括注意力块,注意力块被配置为确定注意力值,
其中,处理器被配置为:在注意力块中执行第一子柔性最大逐区块操作,
其中,缩减电路系统被配置为:基于第一子柔性最大逐区块操作的结果值来执行缩减操作,以确定调整因子,并且
其中,处理器被配置为:基于调整因子来执行第二子柔性最大逐区块操作。
12.根据权利要求11所述的电子装置,其中,处理器被配置为:
在推断操作中,通过从输入数据逐区块检测第一最大值、确定通过从输入数据的每个值减去第一最大值而获得的结果值的第一指数化值并且逐区块确定第一指数化值的第一总和值,来执行第一子柔性最大逐区块操作。
13.根据权利要求12所述的电子装置,其中,缩减电路系统包括比较器、加法器-减法器、指数处理器、乘法和除法运算器以及存储器。
14.根据权利要求13所述的电子装置,其中,缩减电路系统被配置为:
从存储器读取第一最大值和第一总和值;
通过比较器检测第二最大值,第二最大值是输入数据的所有区块的最大值;
通过加法器-减法器确定通过从第一最大值减去第二最大值而获得的结果值;
通过指数处理器确定通过从第一最大值减去第二最大值而获得的结果值的第二指数化值;并且
通过乘法和除法运算器通过将与输入数据的每个区块对应的第二指数化值应用于第一总和值来确定第二总和值,并且将通过将第二指数化值除以第二总和值而获得的结果值确定为调整因子。
15.根据权利要求14所述的电子装置,其中,处理器还被配置为:
通过将调整因子应用于第一指数化值来执行第二子柔性最大逐区块操作。
16.一种处理器实现的用于推断的方法,包括:
通过经由实现包括多个编码器和多个解码器的转换模型对输入数据执行推断,来从输入数据确定结果数据,
其中,确定结果数据的步骤包括:
从所述多个编码器和所述多个解码器中的每个确定注意力值,
其中,确定注意力值的步骤包括:
执行第一子柔性最大逐区块操作;
基于第一子柔性最大逐区块操作的结果值来执行缩减操作,以确定调整因子;以及
基于调整因子来执行第二子柔性最大逐区块操作。
17.根据权利要求16所述的方法,其中,执行第一子柔性最大逐区块操作的步骤包括:
从输入数据逐区块检测第一最大值;
确定通过从输入数据的每个值减去第一最大值而获得的结果值的第一指数化值;以及
逐区块确定第一指数化值的第一总和值。
18.根据权利要求17所述的方法,其中,执行缩减操作的步骤包括:
确定通过从第一最大值减去第二最大值而获得的结果值的第二指数化值,第二最大值是输入数据的所有区块的最大值;
通过将与输入数据的每个区块对应的第二指数化值应用于第一总和值来确定第二总和值;以及
将通过将第二指数化值除以第二总和值而获得的结果值确定为调整因子。
19.根据权利要求18所述的方法,其中,执行第二子柔性最大逐区块操作的步骤包括:
将调整因子应用于第一指数化值。
20.根据权利要求16至权利要求19中的任一项所述的方法,其中,缩减操作通过缩减操作器执行,缩减操作器包括比较器、加法器-减法器、指数处理器、乘法和除法运算器以及存储器。
21.一种处理器实现的用于推断的方法,包括:
通过对输入数据执行基于转换的推断操作,来从输入数据确定目标数据;
其中,确定目标数据的步骤包括:
通过电子装置的处理器基于查询和键对输入数据执行第一矩阵操作;
通过处理器对第一矩阵操作的结果值执行缩放操作和掩码操作;
通过处理器执行第一子柔性最大逐区块操作;
通过处理器基于第一子柔性最大逐区块操作的结果来执行缩减操作,以确定缩放因子;以及
通过处理器基于缩放因子来执行第二子柔性最大逐区块操作,
其中,第一矩阵操作和第一子柔性最大逐区块操作被配置为具有相同的数据读取单元和相同的数据读取次序。
22.根据权利要求21所述的方法,其中,通过将由缩减操作获得的缩放因子应用于由第一子柔性最大逐区块操作获得的第一指数化值,来执行第二子柔性最大逐区块操作。
23.根据权利要求21或22所述的方法,还包括:基于第二子柔性最大逐区块操作的结果值和映射到键的值,来逐区块执行第二矩阵操作,
其中,第二矩阵操作是第二子柔性最大逐区块操作的结果值与映射到键的值之间的矩阵乘法。
24.一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时,使处理器执行根据权利要求16至权利要求23中的任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0146841 | 2021-10-29 | ||
KR1020210146841A KR20230062008A (ko) | 2021-10-29 | 2021-10-29 | 트랜스포머 모델을 이용한 추론 방법 및 그 추론 방법을 수행하는 전자 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116090507A true CN116090507A (zh) | 2023-05-09 |
Family
ID=84044856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210985760.7A Pending CN116090507A (zh) | 2021-10-29 | 2022-08-17 | 电子装置和用于推断的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230138659A1 (zh) |
EP (1) | EP4174723A1 (zh) |
KR (1) | KR20230062008A (zh) |
CN (1) | CN116090507A (zh) |
-
2021
- 2021-10-29 KR KR1020210146841A patent/KR20230062008A/ko unknown
-
2022
- 2022-08-12 US US17/887,145 patent/US20230138659A1/en active Pending
- 2022-08-17 CN CN202210985760.7A patent/CN116090507A/zh active Pending
- 2022-10-28 EP EP22204537.9A patent/EP4174723A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230138659A1 (en) | 2023-05-04 |
EP4174723A1 (en) | 2023-05-03 |
KR20230062008A (ko) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Akusok et al. | High-performance extreme learning machines: a complete toolbox for big data applications | |
US11593625B2 (en) | Method and apparatus with neural network parameter quantization | |
US11928600B2 (en) | Sequence-to-sequence prediction using a neural network model | |
Quinonero-Candela et al. | Approximation methods for Gaussian process regression | |
US20190370647A1 (en) | Artificial intelligence analysis and explanation utilizing hardware measures of attention | |
US20170372202A1 (en) | Tensor processing using low precision format | |
KR20190104406A (ko) | 처리방법 및 장치 | |
WO2020049385A1 (en) | Multi-view image clustering techniques using binary compression | |
EP3528181B1 (en) | Processing method of neural network and apparatus using the processing method | |
CN112396085B (zh) | 识别图像的方法和设备 | |
CN113947703A (zh) | 通过神经网络识别图像的方法和设备 | |
US20220108156A1 (en) | Hardware architecture for processing data in sparse neural network | |
Li et al. | Sub-selective quantization for large-scale image search | |
CN113407747A (zh) | 硬件加速器执行的方法、硬件加速器和神经网络装置 | |
CN116090507A (zh) | 电子装置和用于推断的方法 | |
CN116189208A (zh) | 用于文本识别的方法、装置、设备和介质 | |
US20220366188A1 (en) | Parameterized neighborhood memory adaptation | |
US20210209473A1 (en) | Generalized Activations Function for Machine Learning | |
Haifeng et al. | The improved (2D) 2PCA algorithm and its parallel implementation based on image block | |
Chang et al. | Deep unitary convolutional neural networks | |
US11823412B2 (en) | Generating and evaluating mappings between spatial point sets with constraints | |
Huang et al. | Deep k-means: A simple and effective method for data clustering | |
Rodriguez-Borbon et al. | Heterogeneous acceleration of HAR applications | |
CN114254746A (zh) | 执行神经网络的方法和设备 | |
KR20230047866A (ko) | 셀프 어텐션을 이용한 퓨샷 이미지 분류 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |