CN110998570A - 具有带有块浮点处理的矩阵矢量单元的硬件节点 - Google Patents
具有带有块浮点处理的矩阵矢量单元的硬件节点 Download PDFInfo
- Publication number
- CN110998570A CN110998570A CN201880053394.3A CN201880053394A CN110998570A CN 110998570 A CN110998570 A CN 110998570A CN 201880053394 A CN201880053394 A CN 201880053394A CN 110998570 A CN110998570 A CN 110998570A
- Authority
- CN
- China
- Prior art keywords
- vector data
- vector
- subset
- index
- data
- 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.)
- Granted
Links
Images
Classifications
-
- 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
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F02—COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
- F02D—CONTROLLING COMBUSTION ENGINES
- F02D41/00—Electrical control of supply of combustible mixture or its constituents
- F02D41/02—Circuit arrangements for generating control signals
- F02D41/14—Introducing closed-loop corrections
- F02D41/1401—Introducing closed-loop corrections characterised by the control or regulation method
- F02D41/1405—Neural network control
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B23/00—Testing or monitoring of control systems or parts thereof
- G05B23/02—Electric testing or monitoring
- G05B23/0205—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
- G05B23/0218—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterised by the fault detection method dealing with either existing or incipient faults
- G05B23/0221—Preprocessing measurements, e.g. data collection rate adjustment; Standardization of measurements; Time series or signal analysis, e.g. frequency analysis or wavelets; Trustworthiness of measurements; Indexes therefor; Measurements using easily measured parameters to estimate parameters difficult to measure; Virtual sensor creation; De-noising; Sensor fusion; Unconventional preprocessing inherently present in specific fault detection methods like PCA-based methods
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B23/00—Testing or monitoring of control systems or parts thereof
- G05B23/02—Electric testing or monitoring
- G05B23/0205—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
- G05B23/0218—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterised by the fault detection method dealing with either existing or incipient faults
- G05B23/0243—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterised by the fault detection method dealing with either existing or incipient faults model based detection method, e.g. first-principles knowledge model
- G05B23/0254—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterised by the fault detection method dealing with either existing or incipient faults model based detection method, e.g. first-principles knowledge model based on a quantitative model, e.g. mathematical relationships between inputs and outputs; functions: observer, Kalman filter, residual calculation, Neural 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/044—Recurrent networks, e.g. Hopfield 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
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F02—COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
- F02D—CONTROLLING COMBUSTION ENGINES
- F02D41/00—Electrical control of supply of combustible mixture or its constituents
- F02D41/24—Electrical control of supply of combustible mixture or its constituents characterised by the use of digital means
- F02D41/26—Electrical control of supply of combustible mixture or its constituents characterised by the use of digital means using computer, e.g. microprocessor
- F02D41/28—Interface circuits
- F02D2041/281—Interface circuits between sensors and control unit
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Automation & Control Theory (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Combustion & Propulsion (AREA)
- Chemical & Material Sciences (AREA)
- Mechanical Engineering (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
提供了用于神经网络处理的处理器和方法。一种方法包括接收与神经网络模型的层相对应的矢量数据,其中每个矢量数据具有包括至少一个指数的值。该方法还包括:第一处理矢量数据的第一子集以确定用于以块浮点格式表示矢量数据的第一子集中的值的第一共享指数,并且第二处理矢量数据的第二子集以确定用于以块浮点格式表示矢量数据的第二子集中的值的第二共享指数,以使得没有来自矢量数据的第二子集的矢量数据影响第一共享指数的确定,并且没有来自矢量数据的第一子集的矢量数据影响第二共享指数的确定。
Description
背景技术
神经网络技术用于执行复杂的任务,诸如阅读理解、语言翻译或语音识别。这些任务中的很多任务包括涉及执行大量的浮点矩阵乘法和累加运算的深度学习。这些操作是在训练期间以及基于输入数据和已训练矢量数据的结果的提供期间执行的。
发明内容
在一个示例中,本公开涉及一种包括矩阵矢量单元的处理器中的方法。在一个示例中,该方法可以包括接收与神经网络模型的至少一个层相对应的矢量数据以使用矩阵矢量单元进行处理,其中每个矢量数据具有以包括至少一个指数的格式表示的值。该方法还可以包括第一处理矢量数据的第一子集以确定用于以块浮点格式表示矢量数据的第一子集中的值的第一共享指数,并且第二处理矢量数据的第二子集以确定用于以块浮点格式表示矢量数据的第二子集中的值的第二共享指数,其中第一处理和第二处理被执行以确定第一共享指数和第二共享指数,以使得没有来自矢量数据的第二子集的矢量数据影响第一共享指数的确定,并且没有来自矢量数据的第一子集的矢量数据影响第二共享指数的确定。
在另一示例中,本公开涉及一种处理器,该处理器被配置为接收与神经网络模型的至少一个层相对应的矢量数据以使用矩阵矢量单元进行处理,其中每个矢量数据具有以包括至少一个指数的格式表示的值。该处理器还被配置为第一处理矢量数据的第一子集以确定用于以块浮点格式表示矢量数据的第一子集中的值的第一共享指数,并且第二处理矢量数据的第二子集以确定用于以块浮点格式表示矢量数据的第二子集中的值的第二共享指数,其中该处理器还被配置为确定第一共享指数和第二共享指数,以使得没有来自矢量数据的第二子集的矢量数据影响第一共享指数的确定,并且没有来自矢量数据的第一子集的矢量数据影响第二共享指数的确定。
在又一示例中,本公开涉及一种包括输入消息处理器的系统,该输入消息处理器被配置为处理传入消息,其中输入消息处理器还被配置为将传入消息分为第一组消息和第二组消息。该系统还可以包括被配置为处理第一组消息的标量处理器。该系统还可以包括神经功能单元,该神经功能单元被配置为处理由标量处理器放置在多个队列中的关于至少经由第二组消息而接收的输入数据的指令。神经功能单元可以包括被配置为处理指令的管线,管线包括:矩阵矢量单元;第一多功能单元,其中第一多功能单元被连接以从矩阵矢量单元接收输入;第二多功能单元,其中第二多功能单元被连接以从第一多功能单元接收输出;以及第三多功能单元,其中第三多功能单元被连接以从第二多功能单元接收输出。矩阵矢量单元可以被配置为接收与神经网络模型的至少一个层相对应的训练矢量数据以使用矩阵矢量单元进行处理,其中每个训练矢量数据具有以包括至少一个指数的格式表示的值。矩阵矢量单元还可以被配置为第一处理训练矢量数据的第一子集以确定用于以块浮点格式表示训练矢量数据的第一子集中的值的第一共享指数,并且第二处理训练矢量数据的第二子集以确定用于以块浮点格式表示训练矢量数据的第二子集中的值的第二共享指数,其中处理器还被配置为确定第一共享指数和第二共享指数,以使得没有来自训练矢量数据的第二子集的矢量数据影响第一共享指数的确定,并且没有来自训练矢量数据的第一子集的矢量数据影响第二共享指数的确定。
提供本“发明内容”以便以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
本公开通过示例的方式示出并且不受附图的限制,在附图中,相似的附图标记指示相似的元素。附图中的元素被示出以为了简单且清楚,而不一定按比例绘制。
图1是根据一个示例的包括经由数据中心网络互连的节点的系统的框图;
图2是根据一个示例的包括分布式节点的系统的框图;
图3是根据一个示例的硬件节点的框图;
图4是根据一个示例的神经功能单元的框图;
图5示出了根据一个示例的用于执行神经网络处理的硬件节点(例如,FPGA)的框图;
图6示出了包括分块矩阵的节点的示例实现;
图7示出了根据一个示例的包括矩阵矢量单元的硬件节点的框图;
图8示出了根据一个示例的在矩阵矢量单元中执行的方法的流程图;以及
图9示出了根据一个示例的方法的流程图。
具体实施方式
本公开中公开的示例涉及使用系统、方法和组件来实现基于神经网络的处理。某些示例与深度神经网络(DNN)有关。DNN可以是用于深度学习的任何适合的神经网络。本公开中的附加示例涉及作为用于实现DNN或类似神经网络的节点的一部分而被包括的功能单元。节点可以使用现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可擦除和/或复杂可编程逻辑器件(PLD)、可编程阵列逻辑(PAL)器件和通用阵列逻辑(GAL)器件的部分或组合来实现。节点也可以使用CPU、GPU、CPU和GPU的组合、或可编程硬件、CPU和GPU中的任何一个的组合来实现。图像文件可以用于配置或重新配置诸如FPGA等节点。图像文件或类似文件或程序可以经由网络链路或本地链路(例如,PCIe)从主机CPU递送。图像文件中包括的信息可以用于对节点的硬件块(例如,FPGA的逻辑块和可重新配置互连)进行编程以实现期望功能。可以实现期望功能以支持可以经由计算、网络和存储资源的组合(诸如经由数据中心或用于递送服务的其他基础设施)提供的任何服务。
在一个示例中,本公开涉及DNN,DNN包括经由低等待时间网络彼此耦合的多个节点(例如,FPGA)或这样的节点的组。利用数百到数千个这样的节点(例如,FPGA)的融合平台可以有利地提供:(1)通过利用成数十万个节点之间的并行性,大大减少了训练时间;(2)启用了新的训练方案,诸如对实时数据的现场在线学习;以及(3)训练空前规模的模型,同时在跨越数十万个服务器的超大规模数据中心中利用灵活且可替代的同类FPGA资源。在一个示例中,这样的优点可以通过利用可以利用诸如FPGA等节点的架构的非常规数据表示来获取。
所描述的方面也可以在云计算环境中实现。云计算可以是指一种用于启用按需网络访问可配置计算资源共享池的模型。例如,可以在市场中采用云计算以提供对可配置计算资源共享池的无处不在且方便的按需访问。可配置计算资源共享池可以经由虚拟化来快速地供应并且以较少的管理工作量或服务提供商交互来释放,并且然后相应地缩放。云计算模型可以由各种特征组成,诸如例如按需自助服务、广泛网络访问、资源池、快速弹性、测量的服务等。云计算模型可以用于公开各种服务模型,诸如例如硬件即服务(“HaaS”)、软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础设施即服务(“IaaS”)。还可以使用不同部署模型(诸如私有云、社区云、公共云、混合云等)来部署云计算模型。
诸如基于递归神经网络(RNN)、长期短期记忆(LSTM)神经网络或门控递归单元(GRU)的机器学习服务可以使用本公开中描述的系统和节点来实现。在一个示例中,与服务有关的内容或诸如单词、句子、图像、视频或其他这样的内容/信息等其他信息可以被转换为矢量表示。矢量表示可以对应于诸如RNN、LSTM或GRU等技术。可以在服务初始化之前离线训练深度学习模型,并且然后可以使用本公开中描述的系统和节点来部署深度学习模型。节点可以是硬件可编程逻辑器件,可以对该硬件可编程逻辑器件进行专门定制以执行在诸如DNN等神经网络的上下文中发生的操作类型。在一个示例中,神经网络模型的状态和用于控制模型的参数可以被固定到包括分布式硬件平台的节点的片上存储器。可以在服务启动时将神经网络模型固定(例如,预加载)到片上存储器,并且可以不改变片上存储器的内容,除非模型需要改变或者需要使用模型重新加载片上存储器的其他事件。因此,在该示例中,与其他布置相反,可以不从与硬件平台相关联的DRAM访问神经网络模型,而是将神经网络模型直接加载到硬件节点的片上存储器(例如,SRAM)中。跨可编程逻辑块(例如,FPGA资源)的分布式集合固定模型可以允许节点(例如,FPGA)以全容量操作并且可以有利地提高吞吐量和与服务相关联的等待时间。作为示例,即使来自服务的单个请求也可以导致分布式节点集合以全容量操作并且从而以非常低的等待时间递送服务的用户所请求的结果。
在一个示例中,神经网络模型可以包括多个层,并且每个层可以被编码为以已经经由神经网络的离线训练而获取的系数或常数的形式表示的权重的矩阵或矢量。节点中的可编程硬件逻辑块可以处理矩阵或矢量以执行各种操作,包括针对表示与服务有关的编码信息的输入矢量进行乘法、加法和其他运算。在一个示例中,权重的矩阵或矢量可以通过使用诸如图形划分等技术跨多个节点划分和固定。作为该过程的一部分,可以将大型神经网络转换为中间表示(例如,图形),并且然后可以将中间表示切分为较小表示(例如,子图形),并且与每个子图形相对应的每个权重矩阵可以固定到节点的片上存储器。在一个示例中,可以将模型转换成固定大小的矩阵和矢量。这样,节点的资源可以并行处理固定大小的矩阵和矢量。
以LSTM为例,LSTM网络可以包括一系列重复的RNN层或其他类型的层。LSTM网络的每一层可以在给定时间步长消耗输入,例如前一时间步长的层状态,并且可以产生一组新的输出或状态。在使用LSTM的情况下,可以将单个内容块编码到单个矢量或多个矢量中。作为示例,单词或单词组合(例如,短语、句子或段落)可以被编码为单个矢量。每个块可以被编码到LSTM网络的个体层(例如,特定时间步长)中。可以使用一组等式来描述LSTM层,诸如以下等式:
it=σ(Wxixt+Whiht-1+Wcict-1+bi
ft=σ(Wxfxt+Whfht-1+Wcfct-1+bf)
ct=ftct-1ittanh(Wxcxt+Whcht-1+bc)
ot=σ(Wxoxt+Whoht-1+Wcoct+bo)
ht=ottanh(ct)
在该示例中,在每个LSTM层内部,可以使用矢量运算(例如,点积、内积或矢量加法)和非线性函数(例如,S形、双曲线和切线)的组合来处理输入和隐藏状态。在某些情况下,最计算密集型的运算可能来自点积,其可以使用稠密矩阵矢量和矩阵矩阵乘法例程来实现。在一个示例中,矢量运算和非线性函数的处理可以并行执行。
与训练矢量数据(包括矢量数据)相对应的值可以以数字格式表示。由于每个单独的点值都有特定于该点值的指数,因此矢量数据的值的浮点表示很昂贵。替代方案可以是定点表示。用于神经网络处理的跨整个硬件节点的值的单个定点表示可能会有一些限制。首先,各种独立神经网络模型中的每个可能需要不同的定点位置,并且进而可能需要硬件节点的多种配置。其次,尝试在单个定点表示中充分表达跨整个神经网络模型评估的每个值可能会大大增加该表示所需要的位数。实际上,对于在各层之间的值未标准化(例如,采用S型)的某些类型的DNN,静态定点表示可能是完全不可行的。在一个示例中,本公开涉及使用两种数字格式:浮点数和块浮点数(BFP)以扩展在硬件节点内表示的数字的动态范围。在一个示例中,硬件节点可以在任何可能的情况下使用传统浮点表示,包括其网络接口和矢量矢量运算符。矩阵矢量乘法器可以使用整数算术,但是采用块浮点技术的形式来扩展动态范围。这可以有利地产生如下处理器,该处理器以浮点数与外界通信并且在必要时透明地实现内部整数运算。
在一个示例中,定点表示可以使用一定数目的整数位和小数位来表示数字。定点可以使用整数算术在硬件中进行有效处理,这在适用时可以使其成为优选格式。定点格式可以表示为qX.Y,其中X是整数位数,而Y是小数位数。块浮点数(BFP)可以将共享指数应用于定点数的块,例如矢量或矩阵。尽管各个块成员相对于彼此具有固定范围,但是共享指数可以为该块提供明显更高的动态范围。例如,BFP可以准确地表示非常大数的整个块;但是,包含非常小和非常大数的块将无法准确表示。为共享指数标识合理值可以涉及两次遍历该块,首先扫描整个块以确定指数,然后进行第二遍以使所有值与指数对准。有利地,块的各个成员可以用整数算术运算。此外,每个块的共享指数是独立确定的,这可以有利地实现更高的动态范围。
图1是根据一个示例的包括经由数据中心网络110互连的节点的系统100的框图。例如,如图1所示,多个节点102、104和106可以经由数据中心网络耦合。这样的节点可以被实例化并且用于并行化诸如LSTM网络等神经网络的多个层。在一个示例中,每个节点可以被实现为服务器,并且还可以包括至少一个硬件节点(例如,FPGA)。因此,节点102可以包括FPGA 122,节点104可以包括FPGA 124,并且节点106可以包括FPGA 126。FPGA可以经由基于光传输层协议的系统互连。在一个示例中,FPGA 122的第一实例可以经由传输链路132与FPGA 124的第一实例耦合,并且FPGA 122的第一实例还可以经由传输链路134与FPGA 124的第二实例耦合。FPGA 124的第一实例可以经由传输链路136与FPGA 126的第一实例耦合,并且FPGA 124的第一实例还可以经由传输链路140与FPGA 126的第二实例耦合。类似地,FPGA 124的第二实例可以经由传输链路142与FPGA 126的第一实例耦合,并且FPGA 124的第二实例可以经由传输链路138与FPGA 126的第二实例耦合。光传输层协议可以向FPGA提供经由数据中心网络110彼此传输或接收分组或其他这样的数据的能力。FPGA也可以以其他配置互连。例如,FPGA 122的若干实例可以经由多个传输链路152耦合到FPGA 124的若干实例。类似地,FPGA 124的若干实例可以经由传输链路154耦合到FPGA 126的若干实例。尽管图1示出了一定数目和布置的节点(包括FPGA),但是可以存在更多或更少数目的不同地布置的节点。
图2是根据一个示例的包括分布式节点的系统200的框图。在该示例中,多个节点可以被实现为数据中心中的服务器机架。每个服务器可以耦合到架顶(TOR)交换机。尽管未示出,但是其他机架可以具有类似的配置。每个服务器可以包括至少一个节点或多个节点。每个节点可以包括服务器(例如,服务器204、服务器206或服务器208),并且每个服务器可以耦合到TOR交换机(例如,TOR交换机210)。服务器204可以包括主机组件,该主机组件包括CPU,诸如CPU 214和CPU 216,主机组件可以经由本地链路(例如,PCIe)220耦合到硬件节点,例如FPGA 218。每个硬件节点也可以通过网络接口控制器222(例如,用于跨数据中心的网络基础设施进行通信)耦合。图2所示的系统可以允许节点对从TOR交换机或其他交换机接收(和/或向其发送)的消息执行处理。使用该示例系统,各个节点可以直接向彼此发送包括分组的消息,并且因此这可以允许甚至跨多个FPGA划分单个神经网络,而不会引起不可接受的等待时间。为了通信,节点可以使用轻量级协议,包括例如RDMA。虽然图2示出了以某种方式布置的系统的一定数目的组件,但是可以存在更多或更少数目的不同地布置的组件。
还可以通过跨多个节点划分神经权重来在神经网络的层内执行并行化。作为示例,单个RNN模型(例如,包括LSTM权重矩阵)可以跨多个节点被划分和固定。在该示例的实现中,RNN模型可以跨多个FPGA中的每个FPGA的存储器(例如,BRAM)分布。在该示例配置中,多级管线中的每个个体FPGA可以将一部分LSTM权重矩阵存储在快速片上存储器(例如,BRAM)中。这可以有利地产生高吞吐量和低等待时间的系统。在服务启动时,LSTM权重矩阵可以分解为一定大小的矩阵(例如,N×M矩阵,其中N和M均为等于或大于8的整数)并且然后加载到FPGA的片上存储器中。运行时管理层可以启用FPGA的分配、调度和管理。在一个示例中,每个节点可以被实现为基于一个或多个FPGA的HaaS附接的以LSTM为中心的矢量处理器。每个节点可以设计为作为PCIe附接的FPGA或FPGA的HaaS池的一部分运行神经网络评估。
图3是根据一个示例的硬件节点300的框图。每个硬件节点300可以包括用于从其他节点接收消息的输入消息处理器(IMP)310和用于处理到其他节点或组件的传出消息的输出消息处理器(OMP)340。每个节点还可以包括控制/标量处理器(CSP)320和神经功能单元(NFU)330。尽管未示出,但是由节点接收的消息可以存储在至少两个不同的队列中:(1)IMP到CSP辅助队列和(2)IMP到NFU数据队列。尽管未示出,但是传出消息可以存储在至少两个不同的队列中:(1)CSP到IMP辅助队列和(2)NFU到OMP数据队列。在该示例中,节点可以接受包含辅助信息(诸如控制和标量数据)和有效载荷数据(例如,矢量、矩阵或其他张量数据结构)两者的片外消息。辅助信息可以包括对有效载荷执行计算密集型操作并且然后以输出消息的形式返回结果的请求。在该示例中,传入消息由轻量级输入消息处理器(IMP)310处理,该IMP 310将辅助信息发送到控制/标量处理器(CSP)320(其可以是基于NIOS的控制处理器)并且将有效载荷数据(例如,输入张量)发送到神经功能单元(NFU)330,该NFU 330可以实现为矩阵矢量处理器。作为示例,CSP 320然后可以解释请求,并且可以基于其固件将一系列指令发送到NFU 330。在一定的处理等待时间之后,NFU可以产生请求的结果,该结果可以与由CSP 320在轻量级输出消息处理器(OMP)340中产生的辅助数据组合并且然后在片外发送。CSP固件可以向NFU 330提供指令。示例指令的进一步细节被讨论为指令集架构(ISA)的一部分。还可以执行CSP 320的固件的运行时重新加载。因此,在该示例中,架构在很大程度上是事件驱动的。输入消息可以来自很多来源(包括通过网络)。IMP可以检查消息队列的头部,并且可以使需要执行的任何指令出队并且将其馈送通过系统。虽然图3示出了以某种方式布置的示例节点的一定数目的组件,但是可以存在更多或更少数目的不同地布置的组件。
在一个示例中,NFU可以实现为被设计为扩展至FPGA的大部分资源的矩阵矢量处理器。在该示例中,NFU的主要硬件加速目标是通过应用数千个乘法加法器以其矩阵矢量单元(MVU)以高吞吐量和低等待时间执行矩阵矢量乘法。NFU可以接收系数矩阵(例如,常数)并且可以用于将这些系数与动态输入矢量数据相乘。因此,代替将系数存储在与CPU/GPU相对应的DRAM中,可以在服务启动时将系数预加载到与NFU相对应的片上存储器(例如,FPGA的块随机存取存储器(BRAM))中。在一个示例中,曾经加载的系数可能永远不会再次重新加载,除非修改正在使用的神经网络模型或重新启动服务。换言之,作为该示例的一部分,可以以分布式的方式将模型划分并且固定到以可以直接彼此传递消息或分组而无需依靠CPU资源的帮助的方式连接的多个节点(例如,FPGA)的片上存储器。
在一个示例中,MVU可以完全管线化并且能够以每秒4000-18000亿个定点运算的性能在O(n)时间内执行O(n2)复杂度矩阵矢量乘法。虽然矩阵矢量乘法可以表示评估LSTM层所需要的绝大多数定点运算,但是评估还可以包含各种矢量缩减、超验和偏差矢量的添加。NFU还可以实现管线多功能单元(MFU)以在O(n)时间内处理这些O(n)复杂度矢量函数。这些MFU可以组织成链架构,其中MVU将数据传递给第一MFU,第一MFU将数据传递给第二MFU,以此类推。在NFU的一个示例实现中,可以使用1个MVU和5个MFU。
基于观察到矢量函数在矢量和矩阵矢量运算的计算所需要的时间量大致相同的架构中可能潜在地主导LSTM评估时间,链架构可以允许NFU利用单个矩阵矢量乘法与若干矢量函数之间的大规模管线并行性。NFU的存储器子系统也可以被配置为支持高吞吐量。作为示例,存储器子系统可以支持高达1.8TB/s的矩阵值吞吐量,并且支持同时加载6个矢量和存储6个矢量。
图4示出了NFU 400的示例实现。NFU 400可以包括用于接收输入数据的输入队列(IQ)410和用于输出输出数据的输出队列(OQ)420。因此,NFU 400可以通过其输入队列(IQ)410引入外部矢量和矩阵数据,并且通过其输出队列(OQ)420发射矢量数据。NFU 400可以包括用于提供可以用于存储矢量数据的集中式位置的全局矢量寄存器文件(GVRF)430。NFU400可以包括矩阵矢量单元(MVU)440和五个多功能单元(MFU)(例如,MFU#0 450、MFU#1460、MFU#2 470、MFU#3 480和MFU#4 490,如图4所示)。MVU 440可以包括矩阵寄存器文件442,矩阵寄存器文件442用于存储可以在启动由节点支持的服务时被预加载的矩阵。每个MFU还可以包括用于存储对应MFU的本地矢量数据的本地矢量寄存器文件(LVRF)452(例如,LVRF 452、LVRF 462、LVRF 472、LVRF 482和LVRF 492)。指令可以由NFU 400按顺序执行。可以配置一系列指令使得管线(包括例如一个MVU 440和五个MFU)并行执行指令链。作为示例,可以使用MVU 440使用矩阵运算来将输入矢量数据相乘,并且然后可以通过管线将其传递给输出队列420。NFU 400中的各种数据流可能性经由图4中的两个虚线路径和一个实线路径示出。
示例NFU 400可以对矢量和矩阵执行操作。矢量是1D标量元素集合,而矩阵是2D标量元素集合。元素、矢量和矩阵的大小可以使用下表1中的参数来设置。
表1
某些参数(例如,如表1所示)可以用于在设计时间或以后配置NFU 400。在一个示例中,可以使用四个参数来配置NFU 400。第一参数可以是矩阵和矢量元素的数据类型,尤其是单个元素的宽度(ELEM_WIDTH)。例如,在一个示例中,8位定点数据类型、16位定点数据类型、27位定点数据类型和32位浮点数据类型可以是一组数据类型。NFU 400中的每个数据总线的宽度可以被配置为ELEM_WIDTH*LANES位;每个矢量可以使用存储器中的ELEM_WIDTH*HWVEC_ELEMS位;并且每个矩阵可以使用存储器中的ELEM_WIDTH*HWVEC_ELEMS*HWVEC_ELEMS位。
第二参数可以是硬件矢量大小(HWVEC_ELEMS)。在一个示例中,存储在NFU 400内的所有矢量可以具有等于HWVEC_ELEMS的固定数目的元素,并且所有矢量指令可以接受HWVEC_ELEMS个元素作为输入和/或产生HWVEC_ELEMS个元素作为输出。此外,所有矩阵都可以具有等于HWVEC_ELEMS的固定数目的元素。
很多应用可以具有其自己的算法维度,该算法维度可以与硬件矢量大小不同。在这种情况下,程序员(或编译器)可以使用诸如矩阵分块等技术将高级操作映射到硬件矢量大小。作为示例,下面的表2示出了矩阵大小为500×500并且矢量大小为500个元素的应用;但是,NFU 400的硬件矢量大小为250。表2所示的功能可以用于解决这种差异。
表2
第三参数可以是矢量通道的数目(LANES),它描述每个MFU内应当并行操作多少个元素。作为示例,假定存在每个具有LANES乘法加法器的HWVEC_ELEMS个分块,则矩阵矢量单元(MVU)440内的并行操作的数目可以被定义为LANES*HWVEC_ELEMS。在与示例矩阵矢量单元(MVU)440相对应的描述的一部分中,进一步描述分块。此外,每个NFU数据总线(包括顶级端口)每个周期可以携带LANES个矢量元素以获取为LANES*ELEM_WIDTH位的总宽度。在一个示例中,LANES是HWVEC_ELEMS的整数倍以避免位填充,因为矢量是在LANES大小的块中操作的,并且需要HWVEC_ELEMS/LANES个周期来处理矢量。
第四参数可以是矩阵寄存器文件的大小(NRF_SIZE),其在与NFU相对应的片上存储器(例如,快速片上BRAM(参见稍后的描述))中存储给定数目的HWVEC_ELEMS×HWVEC_ELEMS矩阵。在一个示例中,节点上所需要的存储器资源(例如,FPGA上的BRAM资源的数目)可以通过下面的一组公式得出(注意,ceil(x,y)将x舍入到y的最接近的倍数):
BRAMwidth=ceil(LANES*DATA_WIDTH,40)
*HWVEC_SIZE
关于存储器子系统,NFU 400可以跨三种主要类型的存储器分布其内部存储。首先,矩阵寄存器文件可以用于将MRF_SIZE HWVEC_ELEMS×HWVECS_ELEMS矩阵存储在一系列快速片上随机存取存储器中(例如,FPGA中的BRAM)。这些BRAM可以分布在整个矩阵矢量单元中,并且每个BRAM可以每个周期提供LANES个矩阵元素以实现HWVEC_ELEMS*LANES*ELEM_WIDTH位/周期的总的片上矩阵吞吐量。在该示例中,可能需要O(HWVEC_ELEMS2)个周期才能将矩阵存储到矩阵寄存器文件中;因为这样的矩阵存储可以在预加载步骤中执行并且然后针对很多矩阵矢量乘法进行摊销。
接下来,如图4所示,全局矢量寄存器文件(GVRF)430可以用作程序员可以用来存储矢量数据的集中式位置。GVRF的一种示例配置可以存储32个矢量,并且每个周期可以读取LANES个矢量元素,同时还可以每个周期写入LANES个矢量元素。此外,NFU中的每个多功能单元可以具有自己的本地矢量寄存器文件(LVRF),该LVRF也可以每个周期读取和写入LANES个矢量元素。因此,在具有5个MFU的示例NFU中,每个周期的12个独立矢量的总的矢量存储器带宽为6*LANES个读取和6*LANES个写入。该矢量存储器架构被配置为支持将若干矢量函数链接在一起,其中一个可以从GVRF读取,每个可以读取和写入一个LVRF,其中一个可以写回到GVRF。
NFU的矩阵矢量单元(MVU)440可以执行管线式高吞吐量低等待时间矩阵矢量乘法。在一个示例中,MVU 440使用LANES*HWVEC_ELEMS个乘法器和加法器来实现这一目标,并且其吞吐量可以测量为每秒2*LANES*HWVEC_ELEMS*fmax个运算。在一个示例中,不同于依赖于矢量批处理的典型的高吞吐量矩阵矢量乘法器,MVU 440一次将一个矢量接受到其管线中。
图5示出了根据一个示例的用于执行神经网络处理的硬件节点(例如,FPGA)500的框图。硬件节点500可以包括存储器元件(例如,块RAM)510和处理逻辑块(例如,数字信号处理器(DSP))522的列。BRAM和DSP的小的集合可以被配置为创建处理块,例如,处理分块530。在图5的示例中,每个分块(例如,处理分块530)可以包括可以如图所示布置的BRAM 532、534、536、538和540。每个处理块530还可以包括可以如图5所示布置的处理逻辑块(例如,数字信号处理器(DSP))542、544、546、548、550和552。处理逻辑块可以用于将输入矢量与权重行相乘。可以使用加法器560来将处理逻辑块的输出相加。因此,在该示例中,每个分块可以执行逐点的点积运算。尽管图5示出了以某种方式布置的硬件节点500的一定数目的组件,但是可以存在更多或更少数目的不同地布置的组件。
图6示出了包括分块矩阵的节点600的示例实现。在该示例实现中,使用具有252个分块的节点600来处理252×252的数据矩阵610。示例节点600可以经由输入队列620接收数据,该输入队列620可以使用总线622耦合到广播块630。在该示例中,总线622的总线宽度可以是192位。广播块630可以经由单独的总线耦合到SRAM块以允许将预训练的神经网络模型快速加载到节点600中。作为示例,图6示出了分块0 640、分块1 650和分块251 660。分块0640可以经由192位总线632耦合到广播块630。分块1 650可以经由192位总线634耦合到广播块630。分块251 660可以经由192位总线636耦合到广播块630。每个分块可以包括对应的SRAM和点积单元。作为示例,分块0 640可以包括可以使用192位总线646彼此耦合的SRAM642和点积单元644。分块1 650可以包括可以使用192位总线656彼此耦合的SRAM 652和点积单元654。分块251 660可以包括可以使用192位总线666彼此耦合的SRAM 662和点积单元664。每个SRAM可以存储权重矩阵的一行,该行可以基于图6中所示的寻址方案来存储。每个点积单元可以实现为12输入点积单元。在服务启动时,预训练的神经网络模型权重可以流式传输到FPGA的片上存储器(例如,图6中的SRAM)中,并且固定到特定布置中,从而允许计算单元以非常高的吞吐量生成输出。在一个示例中,矩阵的每一行可以表示神经元,并且该行中的每一列条目可以表示附接到该神经元的突触权重。以矩阵形式(例如,表示神经元)存储的系数可以被预加载到与硬件节点相关联的SRAM或其他存储器中。在神经元不适合单个硬件节点(例如,FPGA)的情况下,神经元的一部分可以被加载到第二硬件节点中,以此类推。在一个示例中,可以使用图形划分技术来分配神经权重矩阵。可以将表示神经权重矩阵的图形拆分为子图形,该子图形然后固定到不同硬件节点的存储器中,这些硬件节点可以使用轻量级传输协议或其他类型的协议彼此通信。硬件节点可以例如使用经由图1和2描述的架构和系统彼此直接通信。
该示例示出了使用在固定大小的矩阵和矢量上操作的FPGA构建的架构。在该示例中,所支持的本机大小是252×252正方形矩阵。在这些设计的其他参数化实例中,可以使用其他形状和大小的矩阵。在该示例中,可以将24个正方形矩阵存储到片上存储器(例如,SRAM)中。因此,在该示例中,有252个分块的数组,并且每个分块是计算单元。每个SRAM可以每个时钟周期从广播块接收192位并且将192位输出到12输入点积单元。这表示每个周期以每个元素16位馈送12个元素。作为示例,与地址0(ADDR 0)相对应的SRAM行被配置为存储元素0-0至0-11,它们是前12个元素。在ADDR 1,另外存储12个元素,以此类推。该示例示出了一种用于每个时钟周期馈送一行中的多个元素的打包策略。在该示例中,SRAM仅使用21行,即地址0到地址20,并且这足以存储整个正方形矩阵。在该示例中,最多二十四个252×252正方形矩阵可以打包到与节点600相对应的片上存储器中。根据权重的数值精度,可以打包更少或更多的矩阵。作为示例,可以使用8位模式来打包多达48个与16位模式相同大小的矩阵。实际上,也可以支持其他排列。
12输入点积单元执行计算,并且因此,在该示例中,节点600包括矢量乘法加法树。作为示例,为了执行点积运算,可以执行该行的每个元素与矢量的每个元素之间的逐元素对相乘,并且然后将其相加成一个累加变量。在图6所示的示例中,每个分块负责计算矩阵的一行。在每个时钟周期,一次可以处理该矩阵中的12个元素。该示例对应于16位整数算术(例如,每个权重由16位表示),并且因此,每个SRAM条目是512×192位。可以使用其他位大小(包括例如1位、2位、4位或8位)来表示与神经网络模式相对应的权重。
关于NFU的多功能单元(MFU),它们可以基于本地和/或外部数据执行若干矢量函数。示例MFU实现可以支持逐点加法、乘法、S形和双曲正切函数、以及传递和存储器管理功能。在一个示例中,每个MFU可以被配置为使得在每个MFU中提供每个MFU可以处理的每种指令类型所需要的每个运算器(例如,用于执行运算的硬件块),并且沿着多个MFU的链路径进行复制。
图7示出了根据一个示例的包括矩阵矢量单元的硬件节点700的框图。硬件节点700可以接收神经网络处理相关消息(例如,DNN子消息),并且对其进行处理以提供消息形式的输出(例如,DNN子消息)。如先前关于图1-3解释的,消息可以从其他硬件节点接收并且可以经由网络传输到其他硬件节点。硬件节点700可以包括矩阵矢量单元710、多功能单元链730、网络输入队列780和网络输出队列790。在该示例中,它们可以以图7所示的方式布置和互连。矩阵矢量单元710还可以包括浮点(float)到块浮点(BFP)块712、存储装置714、矩阵矢量乘法块716和块浮点(BFP)到浮点(float)块718。
如图7所示,硬件节点700可以跨其架构的不同部分使用三种不同的数字格式。在一个示例中,模块之间的所有高级接口可以以浮点格式(例如,float16或float32,在该图中可以称为浮点)来传输矢量数据。矩阵矢量乘法块716可以从浮点(float)到块浮点(BFP)块712接收BFP短格式的矢量数据。该矢量数据可以被放入关于图5和6描述的片上存储器(例如,BRAM)中。在该示例中,矩阵矢量单元710可以以浮点格式实现其I/O,但是它可以利用两种内部BFP格式来表示其输入和输出:用于矢量和矩阵存储的短BFP、以及用于累加的长BFP。在矩阵矢量单元710的一个示例中,短BFP可以使用具有共享的5位指数的q1.15个定点值,并且长BFP可以使用具有共享的5位指数的q34.40个定点值。在该示例中,长BFP中的矩阵矢量乘法结果可以转换回浮点格式,作为最终输出阶段。虽然图7示出了以某种方式布置的硬件节点700的一定数目的组件,可以存在更多或更少数目的不同地布置的组件。
图8示出了根据一个示例的矩阵矢量单元800的框图。矩阵矢量单元800可以包括浮点(float)到块浮点(BFP)块802、矢量存储装置804、矩阵存储装置806、乘法块810、累加块812和块浮点(BFP)到浮点(float)块814。在一个示例中,假定短BFP可以使用具有共享的5位指数的q1.15个定点值,并且长BFP可以使用具有共享的5位指数的q34.30个定点值,下面的表3所示的步骤可以被执行作为将浮点格式的训练矢量数据转换为块浮点格式的一部分。
表3
尽管表3描述了确定矢量数据值集合的共享指数的某种方式,但是可以使用其他方式。例如,共享指数可以是:(1)块中的值中的指数的最大值,(2)块中的值中的某个百分比的指数(例如,第95个百分点),或者(3)块中的值中的指数的平均值。块大小可以是整个矩阵、矩阵的一行或矩阵的一行的一部分的大小。块浮点(BFP)值可以分别存储在矢量存储装置804和矩阵存储装置806中。
乘法块810可以用于对来自相应存储装置的矢量数据和矩阵数据执行乘法运算。作为示例,可以执行下面表4所示的步骤作为乘法的一部分。
表4
一旦已经由BFP将长BFP表示的乘法的结果接收到浮点块814,则该块可以执行一系列步骤以将结果值从长BFP格式转换为浮点表示。在一个示例中,可以执行表5所示的步骤。
表5
如上所述,矩阵矢量单元800现场执行从浮点格式到块浮点格式的各种转换。这样,硬件节点以及用于执行各种运算的指令或软件无需知道这种转换。换言之,指令可以以浮点格式指定操作数,并且包括矩阵矢量单元800的硬件节点可以在正确的位置将这些转换成定点格式,然后反量化为浮点格式。结果,其他运算器(例如,softmax)不需要以较低精度进行运算。
尽管使用一定数目的指数位、有效位和其他位宽来描述表3、4和5中的上述步骤,但是它们不一定是表中的那些。作为示例,尽管以上示例假定块浮点数的2s补码表示为q1.15表示,但是可以使用更少或更多的定点位。另外,尽管上面的示例包括在转换过程中将float32位截断为较低精度的q1.15定点表示,但这不是必须的。相反,可以使用各种舍入模式来提高精度。尽管图8示出了以一定方式布置的矩阵矢量单元800的一定数目的组件,但是可以存在更多或更少数目的不同地布置的组件。此外,尽管表3、4和5中的步骤是在矩阵矢量乘法运算的上下文中描述的,但是在执行其他类型的运算(包括卷积、图像过滤、回归或其他机器语言运算)时,也可以执行这些步骤。
图9示出了根据一个示例的用于处理指令的方法的流程图900。该方法可以包括步骤(例如,步骤910),该步骤包括接收与神经网络模型的至少一个层相对应的训练数据以使用矩阵矢量单元进行处理。如前所述,训练数据可以经由耦合各个硬件节点的网络来接收。此外,每个硬件节点可以包括用于接收矢量数据的(多个)输入消息队列。
该方法还可以包括步骤(例如,步骤920),该步骤包括第一处理训练矢量数据的第一子集以确定用于以块浮点格式表示训练矢量数据的第一子集中的值的第一共享指数,并且第二处理训练矢量数据的第二子集以确定用于以块浮点格式表示训练矢量数据的第二子集中的值的第二共享指数,其中第一处理和第二处理被执行以确定第一共享指数和第二共享指数,以使得没有来自训练矢量数据的第二子集的矢量数据影响第一共享指数的确定,并且没有来自训练矢量数据的第一子集的矢量数据影响第二共享指数的确定。步骤920可以执行矩阵矢量单元(例如,如图8所示),在一个示例中,包括经由表3、4和5描述的过程。
总之,本公开涉及一种包括矩阵矢量单元的处理器中的方法。在一个示例中,该方法可以包括接收与神经网络模型的至少一个层相对应的矢量数据以使用矩阵矢量单元进行处理,其中矢量数据中的每个矢量数据具有以包括至少一个指数的格式表示的值。该方法还可以包括第一处理矢量数据的第一子集以确定用于以块浮点格式表示矢量数据的第一子集中的值的第一共享指数,并且第二处理矢量数据的第二子集以确定用于以块浮点格式表示矢量数据的第二子集中的值的第二共享指数,其中第一处理和第二处理被执行以确定第一共享指数和第二共享指数,以使得没有来自矢量数据的第二子集的矢量数据影响第一共享指数的确定,并且没有来自矢量数据的第一子集的矢量数据影响第二共享指数的确定。
该方法还可以包括:接收输入矢量数据,其中输入矢量数据中的每个输入矢量数据具有以包括输入矢量指数的格式表示的值;以及使用第一共享指数和输入矢量指数对矢量数据的第一子集执行第一乘法运算,并且使用第二共享指数和输入矢量指数对矢量数据的第二子集执行第二乘法运算。该方法还可以包括以块浮点格式在累加器中累加来自第一乘法运算和第二乘法运算的任何结果数据,并且将结果数据从块浮点格式转换为浮点格式,并且以浮点格式从矩阵矢量单元输出转换后的数据。
第一处理还可以包括确定与矢量数据的第一子集的值相对应的指数中具有最大值的第一指数,并且第二处理还可以包括确定与矢量数据的第二子集的值相对应的指数中具有最大值的第二指数。矢量数据可以包括矢量数据的N×M矩阵,其中N和M中的每个是大于1的整数,并且其中第一子集和第二子集的每个子集包括矢量数据的N×M矩阵的一行或矢量数据的N×M矩阵的一行的一部分。第一共享指数的大小可以不同于第二共享指数的大小。
在另一示例中,本公开涉及一种处理器,该处理器被配置为接收与神经网络模型的至少一个层相对应的矢量数据以使用矩阵矢量单元进行处理,其中矢量数据中的每个矢量数据具有以包括至少一个指数的格式表示的值。该处理器还被配置为第一处理矢量数据的第一子集以确定用于以块浮点格式表示矢量数据的第一子集中的值的第一共享指数,并且第二处理矢量数据的第二子集以确定用于以块浮点格式表示矢量数据的第二子集中的值的第二共享指数,其中该处理器还被配置为确定第一共享指数和第二共享指数,以使得没有来自矢量数据的第二子集的矢量数据影响第一共享指数的确定,并且没有来自矢量数据的第一子集的矢量数据影响第二共享指数的确定。
该处理器还可以被配置为接收输入矢量数据,其中输入矢量数据中的每个输入矢量数据具有以包括输入矢量指数的格式表示的值。该处理器还可以被配置为使用第一共享指数和输入矢量指数对矢量数据的第一子集执行第一乘法运算,并且使用第二共享指数和输入矢量指数对矢量数据的第二子集执行第二乘法运算。
该处理器还可以包括用于以块浮点格式累加来自第一乘法运算和第二乘法运算的任何结果数据的累加器。该处理器还可以被配置为将结果数据从块浮点格式转换为浮点格式,并且以浮点格式从矩阵矢量单元输出转换后的数据。该处理器还可以被配置为确定与矢量数据的第一子集的值相对应的指数中具有最大值的第一指数,并且确定与矢量数据的第二子集的值相对应的指数中具有最大值的第二指数。矢量数据可以包括矢量数据的N×M矩阵,其中N和M中的每个是大于1的整数,并且其中第一子集和第二子集的每个子集包括矢量数据的N×M矩阵的一行或矢量数据的N×M矩阵的一行的一部分。第一共享指数的大小可以不同于第二共享指数的大小。
在又一示例中,本公开涉及一种包括输入消息处理器的系统,该输入消息处理器被配置为处理传入消息,其中输入消息处理器还被配置为将传入消息分为第一组消息和第二组消息。该系统还可以包括被配置为处理第一组消息的标量处理器。该系统还可以包括神经功能单元,该神经功能单元被配置为处理由标量处理器放置在多个队列中的关于至少经由第二组消息而接收的输入数据的指令。神经功能单元可以包括被配置为处理指令的管线,管线包括:矩阵矢量单元;第一多功能单元,其中第一多功能单元被连接以从矩阵矢量单元接收输入;第二多功能单元,其中第二多功能单元被连接以从第一多功能单元接收输出;以及第三多功能单元,其中第三多功能单元被连接以从第二多功能单元接收输出。矩阵矢量单元可以被配置为接收与神经网络模型的至少一个层相对应的训练矢量数据以使用矩阵矢量单元进行处理,其中每个训练矢量数据具有以包括至少一个指数的格式表示的值。矩阵矢量单元还可以被配置为第一处理训练矢量数据的第一子集以确定用于以块浮点格式表示训练矢量数据的第一子集中的值的第一共享指数,并且第二处理训练矢量数据的第二子集以确定用于以块浮点格式表示训练矢量数据的第二子集中的值的第二共享指数,其中处理器还被配置为确定第一共享指数和第二共享指数,以使得没有来自训练矢量数据的第二子集的矢量数据影响第一共享指数的确定,并且没有来自训练矢量数据的第一子集的矢量数据影响第二共享指数的确定。
矩阵矢量单元还可以被配置为接收输入矢量数据,其中每个输入矢量数据具有以包括输入矢量指数的格式表示的值。矩阵矢量单元还可以被配置为使用第一共享指数和输入矢量指数对矢量数据的第一子集执行第一乘法运算,并且使用第二共享指数和输入矢量指数对矢量数据的第二子集执行第二乘法运算。矩阵矢量单元还可以包括用于以块浮点格式累加来自第一乘法运算和第二乘法运算的任何结果数据的累加器。
矩阵矢量单元还可以被配置为将结果数据从块浮点格式转换为浮点格式,并且以浮点格式从矩阵矢量单元输出转换后的数据。矩阵矢量单元还可以被配置为确定与训练矢量数据的第一子集的值相对应的指数中具有最大值的第一指数,并且确定与训练矢量数据的第二子集的值相对应的指数中具有最大值的第二指数。训练矢量数据可以包括矢量数据的N×M矩阵,其中N和M中的每个是大于1的整数,并且其中第一子集和第二子集中的每个子集包括矢量数据的N×M矩阵的一行或矢量数据的N×M矩阵的一行的一部分。
应当理解,本文中描述的方法、模块和组件仅仅是示例性的。替代地或另外地,本文中描述的功能可以至少部分由一个或多个硬件逻辑组件执行。例如而非限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、系统级芯片系统(SOC)、复杂可编程逻辑器件(CPLD)等。在抽象但仍然明确的意义上,用于实现相同功能的组件的任何布置有效地“关联”从而实现期望功能。因此,本文中被组合以实现特定功能的任何两个组件可以被视为彼此“关联”从而实现期望功能,而与架构或中间组件无关。同样,如此关联的任何两个组件也可以视为彼此“可操作地连接”或“耦合”以实现期望功能。
与本公开中描述的一些示例相关联的功能还可以包括存储在非暂态介质中的指令。如本文中使用的,术语“非暂态介质”是指存储引起机器以特定方式操作的数据和/或指令的任何介质。示例性非暂态介质包括非易失性介质和/或易失性介质。非易失性介质包括例如硬盘、固态驱动器、磁盘或磁带、光盘或磁带、闪存、EPROM、NVRAM、PRAM或其他这样的介质、或者这样的介质的网络版本。易失性介质包括例如动态存储器,诸如DRAM、SRAM、高速缓存或其他这样的介质。非暂态介质与传输介质不同,但是可以与传输介质结合使用。传输介质用于向机器或从机器传输数据和/或指令。示例性传输介质包括同轴电缆、光缆、铜线和无线介质,诸如无线电波。
此外,本领域技术人员将认识到,上述操作的功能之间的边界仅是说明性的。多个操作的功能可以组合为单个操作,和/或单个操作的功能可以分布在其他操作中。此外,替代实施例可以包括特定操作的多个实例,并且操作的顺序在各种其他实施例中可以改变。
尽管本公开提供了特定示例,但是在不脱离如所附权利要求书中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图应当被认为是说明性的而不是限制性的,并且所有这样的修改旨在被包括在本公开的范围内。本文中针对特定示例描述的任何益处、优点或问题的解决方案均不应当被解释为任何或所有权利要求的关键、必需或必要特征或要素。
此外,本文中使用的术语“一个(a)”或“一个(an)”被定义为一个或多个。同样,在权利要求中使用诸如“至少一个”和“一个或多个”等介绍性短语不应当被解释为暗示通过不定冠词“一个(a)”或“一个(an)”引入另一权利要求要素将包含这样引入的权利要求要素的任何特定权利要求限制为仅包含一个这样的要素的发明,即使同一权利要求包括介绍性短语“一个或多个”或“至少一个”以及不定冠词,诸如“一个(a)”或“一个(an)”。定冠词的使用也是如此。
除非另有说明,否则诸如“第一”和“第二”等术语用于任意地区分这样的术语所描述的元素。因此,这些术语不一定旨在指示这样的元素的时间或其他优先顺序。
Claims (14)
1.一种包括矩阵矢量单元的处理器中的方法,所述方法包括:
接收与神经网络模型的至少一个层相对应的矢量数据以使用所述矩阵矢量单元进行处理,其中所述矢量数据中的每个矢量数据具有以包括至少一个指数的格式表示的值;以及
第一处理所述矢量数据的第一子集以确定用于以块浮点格式表示所述矢量数据的所述第一子集中的值的第一共享指数,并且第二处理所述矢量数据的第二子集以确定用于以块浮点格式表示所述矢量数据的所述第二子集中的值的第二共享指数,其中所述第一处理和所述第二处理以如下方式被执行以确定所述第一共享指数和所述第二共享指数:没有来自所述矢量数据的所述第二子集的矢量数据影响所述第一共享指数的确定,并且没有来自所述矢量数据的所述第一子集的矢量数据影响所述第二共享指数的确定。
2.根据权利要求1所述的方法,还包括:
接收输入矢量数据,其中所述输入矢量数据中的每个输入矢量数据具有以包括输入矢量指数的格式表示的值;以及
使用所述第一共享指数和所述输入矢量指数对所述矢量数据的所述第一子集执行第一乘法运算,并且使用所述第二共享指数和所述输入矢量指数对所述矢量数据的所述第二子集执行第二乘法运算。
3.根据权利要求2所述的方法,还包括以块浮点格式在累加器中累加来自所述第一乘法运算和所述第二乘法运算的任何结果数据。
4.根据权利要求3所述的方法,还包括将所述结果数据从所述块浮点格式转换为浮点格式,并且以所述浮点格式从所述矩阵矢量单元输出转换后的数据。
5.根据权利要求1所述的方法,其中所述第一处理还包括确定与所述矢量数据的所述第一子集的值相对应的指数中具有最大值的第一指数,并且其中所述第二处理还包括确定与所述矢量数据的所述第二子集的值相对应的指数中具有最大值的第二指数。
6.根据权利要求1所述的方法,其中所述矢量数据包括矢量数据的N×M矩阵,其中N和M中的每个是大于1的整数,并且其中所述第一子集和所述第二子集中的每个子集包括所述矢量数据的N×M矩阵的一行或所述矢量数据的N×M矩阵的一行的一部分。
7.根据权利要求1所述的方法,其中所述第一共享指数的大小不同于所述第二共享指数的大小。
8.一种处理器,被配置为:
接收与神经网络模型的至少一个层相对应的矢量数据以使用所述矩阵矢量单元进行处理,其中所述矢量数据中的每个矢量数据具有以包括至少一个指数的格式表示的值;以及
第一处理所述矢量数据的第一子集以确定用于以块浮点格式表示所述矢量数据的所述第一子集中的值的第一共享指数,并且第二处理所述矢量数据的第二子集以确定用于以块浮点格式表示所述矢量数据的所述第二子集中的值的第二共享指数,其中所述处理器还被配置为以如下方式确定所述第一共享指数和所述第二共享指数:没有来自所述矢量数据的所述第二子集的矢量数据影响所述第一共享指数的确定,并且没有来自所述矢量数据的所述第一子集的矢量数据影响所述第二共享指数的确定。
9.根据权利要求8所述的处理器,还被配置为:
接收输入矢量数据,其中所述输入矢量数据中的每个输入矢量数据具有以包括输入矢量指数的格式表示的值;以及
使用所述第一共享指数和所述输入矢量指数对所述矢量数据的所述第一子集执行第一乘法运算,并且使用所述第二共享指数和所述输入矢量指数对所述矢量数据的所述第二子集执行第二乘法运算。
10.根据权利要求9所述的处理器,还包括用于以块浮点格式累加来自所述第一乘法运算和所述第二乘法运算的任何结果数据的累加器。
11.根据权利要求10所述的处理器,还被配置为将所述结果数据从所述块浮点格式转换为浮点格式,并且以所述浮点格式从所述矩阵矢量单元输出转换后的数据。
12.根据权利要求8所述的处理器,其中所述处理器还被配置为确定与所述矢量数据的所述第一子集的值相对应的指数中具有最大值的第一指数,并且确定与所述矢量数据的所述第二子集的值相对应的指数中具有最大值的第二指数。
13.根据权利要求8所述的处理器,其中所述矢量数据包括矢量数据的N×M矩阵,其中N和M中的每个是大于1的整数,并且其中所述第一子集和所述第二子集中的每个子集包括所述矢量数据的N×M矩阵的一行或所述矢量数据的N×M矩阵的一行的一部分。
14.根据权利要求8所述的处理器,其中所述第一共享指数的大小不同于所述第二共享指数的大小。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/680,649 | 2017-08-18 | ||
US15/680,649 US10167800B1 (en) | 2017-08-18 | 2017-08-18 | Hardware node having a matrix vector unit with block-floating point processing |
PCT/US2018/038863 WO2019036111A1 (en) | 2017-08-18 | 2018-06-22 | MATERIAL NODE HAVING A MATRIX VECTOR UNIT WITH BLOCK FLOATING VIRGIN PROCESSING |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110998570A true CN110998570A (zh) | 2020-04-10 |
CN110998570B CN110998570B (zh) | 2023-09-29 |
Family
ID=62916774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880053394.3A Active CN110998570B (zh) | 2017-08-18 | 2018-06-22 | 具有带有块浮点处理的矩阵矢量单元的硬件节点 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10167800B1 (zh) |
EP (1) | EP3649567A1 (zh) |
CN (1) | CN110998570B (zh) |
WO (1) | WO2019036111A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022057426A1 (zh) * | 2020-09-15 | 2022-03-24 | 华为技术有限公司 | 矩阵计算方法及相关设备 |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018176000A1 (en) | 2017-03-23 | 2018-09-27 | DeepScale, Inc. | Data synthesis for autonomous control systems |
US10671349B2 (en) | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
US11157441B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system using non-consecutive data formatting |
US11409692B2 (en) | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
CN110222308B (zh) * | 2017-08-31 | 2020-12-29 | 安徽寒武纪信息科技有限公司 | 一种矩阵乘矩阵运算方法及装置 |
US11360934B1 (en) | 2017-09-15 | 2022-06-14 | Groq, Inc. | Tensor streaming processor architecture |
US11868804B1 (en) | 2019-11-18 | 2024-01-09 | Groq, Inc. | Processor instruction dispatch configuration |
US11243880B1 (en) | 2017-09-15 | 2022-02-08 | Groq, Inc. | Processor architecture |
US11114138B2 (en) | 2017-09-15 | 2021-09-07 | Groq, Inc. | Data structures with multiple read ports |
US11170307B1 (en) | 2017-09-21 | 2021-11-09 | Groq, Inc. | Predictive model compiler for generating a statically scheduled binary with known resource constraints |
KR20190066473A (ko) * | 2017-12-05 | 2019-06-13 | 삼성전자주식회사 | 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치 |
US11561791B2 (en) | 2018-02-01 | 2023-01-24 | Tesla, Inc. | Vector computational unit receiving data elements in parallel from a last row of a computational array |
US10657442B2 (en) * | 2018-04-19 | 2020-05-19 | International Business Machines Corporation | Deep learning accelerator architecture with chunking GEMM |
US10579334B2 (en) * | 2018-05-08 | 2020-03-03 | Microsoft Technology Licensing, Llc | Block floating point computations using shared exponents |
US11215999B2 (en) | 2018-06-20 | 2022-01-04 | Tesla, Inc. | Data pipeline and deep learning system for autonomous driving |
US11361457B2 (en) | 2018-07-20 | 2022-06-14 | Tesla, Inc. | Annotation cross-labeling for autonomous control systems |
US11636333B2 (en) | 2018-07-26 | 2023-04-25 | Tesla, Inc. | Optimizing neural network structures for embedded systems |
CA3053665A1 (en) * | 2018-08-30 | 2020-02-29 | Element Ai Inc. | Complex valued gating mechanisms |
US11562231B2 (en) | 2018-09-03 | 2023-01-24 | Tesla, Inc. | Neural networks for embedded devices |
US11579883B2 (en) * | 2018-09-14 | 2023-02-14 | Intel Corporation | Systems and methods for performing horizontal tile operations |
KR20210072048A (ko) | 2018-10-11 | 2021-06-16 | 테슬라, 인크. | 증강 데이터로 기계 모델을 훈련하기 위한 시스템 및 방법 |
US11196678B2 (en) | 2018-10-25 | 2021-12-07 | Tesla, Inc. | QOS manager for system on a chip communications |
US11455370B2 (en) | 2018-11-19 | 2022-09-27 | Groq, Inc. | Flattened input stream generation for convolution with expanded kernel |
US11816585B2 (en) | 2018-12-03 | 2023-11-14 | Tesla, Inc. | Machine learning models operating at different frequencies for autonomous vehicles |
US11537811B2 (en) | 2018-12-04 | 2022-12-27 | Tesla, Inc. | Enhanced object detection for autonomous vehicles based on field view |
US11893470B2 (en) | 2018-12-06 | 2024-02-06 | MIPS Tech, LLC | Neural network processing using specialized data representation |
US11615307B2 (en) * | 2018-12-06 | 2023-03-28 | MIPS Tech, LLC | Neural network data computation using mixed-precision |
US11586883B2 (en) | 2018-12-14 | 2023-02-21 | Microsoft Technology Licensing, Llc | Residual quantization for neural networks |
US11676003B2 (en) | 2018-12-18 | 2023-06-13 | Microsoft Technology Licensing, Llc | Training neural network accelerators using mixed precision data formats |
US11610117B2 (en) | 2018-12-27 | 2023-03-21 | Tesla, Inc. | System and method for adapting a neural network model on a hardware platform |
US12045724B2 (en) | 2018-12-31 | 2024-07-23 | Microsoft Technology Licensing, Llc | Neural network activation compression with outlier block floating-point |
US11562247B2 (en) | 2019-01-24 | 2023-01-24 | Microsoft Technology Licensing, Llc | Neural network activation compression with non-uniform mantissas |
US10997461B2 (en) | 2019-02-01 | 2021-05-04 | Tesla, Inc. | Generating ground truth for machine learning from time series elements |
US11150664B2 (en) | 2019-02-01 | 2021-10-19 | Tesla, Inc. | Predicting three-dimensional features for autonomous driving |
US11567514B2 (en) | 2019-02-11 | 2023-01-31 | Tesla, Inc. | Autonomous and user controlled vehicle summon to a target |
JP6593560B1 (ja) * | 2019-02-15 | 2019-10-23 | トヨタ自動車株式会社 | 内燃機関の失火検出装置、内燃機関の失火検出システム、データ解析装置、および内燃機関の制御装置 |
US10956755B2 (en) | 2019-02-19 | 2021-03-23 | Tesla, Inc. | Estimating object properties using visual image data |
CN109739802B (zh) * | 2019-04-01 | 2019-06-18 | 上海燧原智能科技有限公司 | 计算集群及计算集群配置方法 |
US11169776B2 (en) | 2019-06-28 | 2021-11-09 | Intel Corporation | Decomposed floating point multiplication |
EP4066170A4 (en) | 2019-11-26 | 2024-01-17 | Groq, Inc. | LOADING OPERANDS AND DELIVERING RESULTS FROM A MULTI-DIMENSIONAL ARRAY USING ONLY ONE SIDE |
CN111027018B (zh) * | 2019-12-20 | 2023-03-31 | 支付宝(杭州)信息技术有限公司 | 加速计算设备建模的方法、装置、计算设备及介质 |
US11425195B1 (en) | 2021-03-12 | 2022-08-23 | Innovium, Inc. | Massively parallel in-network compute |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE59102762D1 (de) * | 1990-07-04 | 1994-10-06 | Siemens Ag | Anordnung zur emulation neuronaler netze und verfahren zu ihrem betrieb. |
US5627392A (en) * | 1995-03-07 | 1997-05-06 | California Institute Of Technology | Semiconductor structure for long term learning |
CN103946797A (zh) * | 2011-12-06 | 2014-07-23 | 英特尔公司 | 用于转换矢量指令的系统、装置和方法 |
CN106503797A (zh) * | 2015-10-08 | 2017-03-15 | 上海兆芯集成电路有限公司 | 具有神经存储器的神经网络单元以及集体将接收自神经存储器的数据列进行移位的神经处理单元阵列 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2002339867A1 (en) | 2001-09-04 | 2003-03-18 | Microunity Systems Engineering, Inc. | System and method for performing multiplication |
US8051124B2 (en) | 2007-07-19 | 2011-11-01 | Itt Manufacturing Enterprises, Inc. | High speed and efficient matrix multiplication hardware module |
US7593804B2 (en) | 2007-10-31 | 2009-09-22 | Caterpillar Inc. | Fixed-point virtual sensor control system and method |
US8280939B2 (en) | 2008-05-22 | 2012-10-02 | Videoiq, Inc. | Methods and apparatus for automatic accuracy-sustaining scaling of block-floating-point operands |
US20100332812A1 (en) | 2009-06-24 | 2010-12-30 | Doug Burger | Method, system and computer-accessible medium for low-power branch prediction |
US8788549B2 (en) | 2011-05-02 | 2014-07-22 | Saankhya Labs Private Limited | Zero overhead block floating point implementation in CPU's |
US20170061279A1 (en) | 2015-01-14 | 2017-03-02 | Intel Corporation | Updating an artificial neural network using flexible fixed point representation |
US10528321B2 (en) * | 2016-12-07 | 2020-01-07 | Microsoft Technology Licensing, Llc | Block floating point for neural network implementations |
KR20180070103A (ko) * | 2016-12-16 | 2018-06-26 | 삼성전자주식회사 | 인식 방법 및 인식 장치 |
-
2017
- 2017-08-18 US US15/680,649 patent/US10167800B1/en active Active
-
2018
- 2018-06-22 EP EP18740971.9A patent/EP3649567A1/en active Pending
- 2018-06-22 WO PCT/US2018/038863 patent/WO2019036111A1/en unknown
- 2018-06-22 CN CN201880053394.3A patent/CN110998570B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE59102762D1 (de) * | 1990-07-04 | 1994-10-06 | Siemens Ag | Anordnung zur emulation neuronaler netze und verfahren zu ihrem betrieb. |
US5627392A (en) * | 1995-03-07 | 1997-05-06 | California Institute Of Technology | Semiconductor structure for long term learning |
CN103946797A (zh) * | 2011-12-06 | 2014-07-23 | 英特尔公司 | 用于转换矢量指令的系统、装置和方法 |
CN106503797A (zh) * | 2015-10-08 | 2017-03-15 | 上海兆芯集成电路有限公司 | 具有神经存储器的神经网络单元以及集体将接收自神经存储器的数据列进行移位的神经处理单元阵列 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022057426A1 (zh) * | 2020-09-15 | 2022-03-24 | 华为技术有限公司 | 矩阵计算方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110998570B (zh) | 2023-09-29 |
US10167800B1 (en) | 2019-01-01 |
EP3649567A1 (en) | 2020-05-13 |
WO2019036111A1 (en) | 2019-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110998570B (zh) | 具有带有块浮点处理的矩阵矢量单元的硬件节点 | |
CN110352433B (zh) | 用于神经网络处理的具有矩阵-向量相乘区块的硬件节点 | |
US10860924B2 (en) | Hardware node having a mixed-signal matrix vector unit | |
US11151445B2 (en) | Neural network processor with a window expander circuit | |
US10795678B2 (en) | Matrix vector multiplier with a vector register file comprising a multi-port memory |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |