CN114503128A - 加速嵌入层计算 - Google Patents
加速嵌入层计算 Download PDFInfo
- Publication number
- CN114503128A CN114503128A CN202080060592.XA CN202080060592A CN114503128A CN 114503128 A CN114503128 A CN 114503128A CN 202080060592 A CN202080060592 A CN 202080060592A CN 114503128 A CN114503128 A CN 114503128A
- Authority
- CN
- China
- Prior art keywords
- input
- address
- neural network
- processor
- batch
- 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
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/08—Learning methods
-
- 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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
Abstract
描述了用于使用被配置为在硬件电路上实现神经网络的系统来执行神经网络计算的方法、系统、设备、和计算机可读介质。该系统包括,主机接收到神经网络层的批次输入。每个输入被存储在由地址标识的存储器位置中。系统识别一个或多个输入的地址列表中的一个或多个重复地址。对于每个重复地址,系统生成标识地址列表中的重复地址的唯一标识符。系统(i)从由对应于唯一标识符的地址所标识的存储器位置获得第一输入;以及(ii)从所获得的第一输入生成层的输出。
Description
相关申请的交叉引用
本申请要求于2019年10月2日提交的美国申请62/909,667的优先权,该申请通过引用并入本文。
背景技术
本说明书一般涉及使用电路来执行神经网络计算。
神经网络是机器学习模型,其采用一个或多个节点层来为接收到的输入生成输出,例如分类。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出被用作为网络中的一个或多个其它层的输入,例如网络的其它隐藏层或输出层。网络的一些层根据相应参数集的当前值从接收到的输入产生输出。
一些神经网络是卷积神经网络(convolutional neural networks,CNN)(例如,用于图像处理)或递归神经网络(recurrent neural network,RNN)(例如,用于语音和语言处理)。这些神经网络中的每一个都包括相应的卷积或递归神经网络层的集合。神经网络层可以具有相关的内核(Kernel)集以及用于处理输入以生成用于训练神经网络的向量集的嵌入层。内核可以表示为权重的张量(Tensor),即多维阵列。例如,嵌入层可以处理输入集合,输入例如为图像像素数据的输入或由神经网络层生成的激活值。输入集合或激活值集合也可以表示为张量。
发明内容
本文描述了用于加速人工神经网络的嵌入层的计算的技术。该技术可用于计算系统,例如大规模分布式系统,其包括配置为对地址列表执行去重复(deduplication)操作的电路。在处理神经网络的嵌入层处的输入的期间,例如在嵌入层的示例前向通过计算(forward pass compute)期间,执行去重复操作以减少分布式系统上的负载不平衡。
本说明书描述了用于使用被配置为在硬件电路上实现神经网络的系统来执行神经网络计算的方法,系统和设备,以及计算机可读介质。系统包括主机,主机接收到神经网络层的批次输入。每个输入被存储在由地址标识的存储器位置中。系统识别一个或多个输入的地址列表中的一个或多个重复地址。对于每个重复地址,系统生成标识地址列表中的重复地址的唯一标识符。系统(i)从由对应于唯一标识符的地址所标识的存储器位置获得第一输入;以及(ii)从所获得的第一输入生成层的输出。
本说明书中描述的主题的一个方面可以体现为一种方法,该方式使用被配置为在硬件电路上实现神经网络的系统来执行神经网络计算。方法包括:主机接收到神经网络层的批次输入,其中所述批次输入中的每个输入存储在由地址标识的存储器位置中;识别所述批次输入中的一个或多个输入的地址列表中的一个或多个重复地址。对于每个重复地址,所述方法包括:生成唯一标识符,所述唯一标识符标识所述地址列表中的所述重复地址;对于所述批次输入,从存储器位置获取第一输入,所述存储器位置由与所述唯一标识符相对应的地址标识;以及从获取的所述第一输入中生成所述神经网络层的嵌入输出。
这些及其它实施方式中的每一个可选地可以包括以下特征中的一个或多个。例如,在一些实施方式中,所述神经网络层是所述神经网络的嵌入层,所述嵌入输出包括嵌入特征向量,并且所述方法还包括系统的分散电路确定所述唯一标识符与到所述嵌入层的所述批次输入中的特定输入的重复地址的反向映射;并且基于所述唯一标识符与所述特定输入的所述重复地址的所述反向映射,生成一个或多个嵌入向量作为所述嵌入层的输出。
在一些实施方式中,所述方法包括:基于一个或多个唯一标识符生成所述批次输入的过滤后的地址列表;为所述过滤后的地址列表中的地址确定多个处理器中的每个处理器之间的地址分区;以及其中,获取所述第一输入包括:对于每一地址分区,使用经分配为从所述地址分区检索输入的相应处理器,从由所述地址分区中的地址标识的存储器位置获得第一输入。
在一些实施方式中,基于所述反向映射生成所述神经网络层的所述嵌入输出包括:解析包括所述重复地址的所述地址列表,以将为重复地址生成的与唯一标识符相对应的嵌入特征向量映射回到所述神经网络层的所述批次输入中的所述特定输入。
所述方法还包括:请求处理器向远程处理器提供与唯一标识符对应的第一输入的地址和对所述第一输入的请求;所述请求处理器从所述远程处理器接收所述第一输入,所述第一输入存储于被分配给所述远程处理器的数据分片的存储器位置;并且执行一个或多个减小操作,以从所述数据分片获得的第一输入生成所述神经网络层的所述嵌入输出。
在一些实施方式中,所述地址列表用于形成包括多组输入特征的输入特征样本的批次输入,并且生成所述唯一标识符包括:为所述输入特征样本中的各相应组输入特征上的每个重复地址生成所述唯一标识符。在一些实施方式中,确定所述唯一标识符与重复地址的所述反向映射包括:确定所述唯一标识符与所述多组输入特征的特定输入的重复地址的所述反向映射。
在一些示例中,将每个地址分区分配给对应于多维稀疏张量的向量元素的激活值或增益值的数据分片;并且激活或增益值的每个数据分片被分配给特定处理器,用于与相应的权重向量相乘以执行所述神经网络计算。在一些实施方式中,重复地址是存储到神经网络层的输入的存储器位置的特定地址,所述特定地址在所述多个处理器中的每个处理器的对应数据分片之间是公共的,并且在(i)一组输入特征集合、或(ii)所述输入特征样本之间,所述特定地址是重复的。
生成所述神经网络层的所述嵌入输出包括:从远程处理器向请求处理器提供多个输入,所述多个输入存储于被分配给所述远程处理器核的数据分片的存储器位置;并且执行查找以获得相应的权重向量,所述权重向量包括用于与所述多个输入中的输入相乘的相应权重值,以为后续神经网络层生成部分激活。在一些实施方式中,从由不存在重复地址的原始列表中的地址所标识的所述存储器位置,或者从由原始列表中不存在重复地址的地址所标识的存储器位置,接收多个输入的一部分。
本文的其它实施方式和其它方面包括相应的系统、装置、和计算机程序,它们被配置为执行被编码在计算机存储装置上的方法。一个或多个计算机的系统可以借助于安装在系统上的软件,固件,硬件或它们的组合来配置,使得在操作中使系统执行动作。一个或多个计算机程序可以通过具有指令来配置,所述指令在由数据处理设备执行时使所述设备执行所述动作。
本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。一种计算系统包括可用于实现用于加速多批次输入的嵌入层处理的处理方案的电路。所述电路和处理方案可用于通过滤除用于检索对神经网络的嵌入层的输入的地址列表中的重复地址来减少或减轻多核处理单元上的负载不平衡,多核处理单元例如为处理器的分布式系统。
当计算或更新神经网络的嵌入时,具有多个重复地址可能是特别成问题的。例如,批次输入中的样本可以包括需要嵌入的可变数量的特征,例如在神经网络的嵌入层的特征空间中。每个特征(或输入)值具有嵌入,例如,表示存储在神经网络的嵌入表中的神经网络的可训练权重的值的向量。虽然样本(或批次)中的每个值具有嵌入,但批次中的不同样本(以及甚至相同样本内的不同特征)可以包括相同的特征值。在一些情况下,即使样本内的相同特征也可以包括相同的特征值。
例如,当计算或更新嵌入时,对于相同的嵌入表但对于样本或批次中的不同特征,或者对于不同样本或批次输入中的各种特征,可能需要提取相同的特征值。因为可能需要多次(例如,从存储器中的相同地址)提取相同的输入值,所以当计算或更新嵌入时,用于滤除地址的重复出现的方法可减少分布式系统上的计算负荷并有助于改进或加速神经网络的嵌入层的计算。
去重复的技术可以在列表中的地址被广播到分布式系统的不同远程处理器之前在源或请求处理器处执行,所述分布式系统被分配来检索给定批次输入的特定数据元素以便在嵌入层处理。在该文中描述的技术可以被用于更有效地从为批次输入的所检索的数据元素计算神经网络层的嵌入输出。例如,生成嵌入输出的过程可以包括检索批次中的一个或多个输入的嵌入,以及对批次中的相关输入特征的嵌入执行缩减。
相对于现有系统,本说明书中描述的技术可用于减少或最小化计算量,计算量被执行以检索嵌入数据、执行减少、以及返回嵌入值的减少向量。当生成嵌入层输出时,该技术提供了一种平衡请求处理器和远程处理器之间的计算负载的改进方法,请求处理器处理批次输入的减小的嵌入值,远程处理器检索与该批批次的输入相对应的嵌入。
本说明书中描述的主题的一个或多个实现的细节在附图和以下描述中阐述。本主题潜在的其他特征、方面和优点将从实施方式、附图和权利要求中变得明显。
附图简介
图1是示例计算系统的框图。
图2是包括示例多核处理单元的示例电路的框图。
图3示出了向示例多核处理单元的处理器广播地址集合的示例主机。
图4A-4D示出了与涉及示例多核处理单元的两个或多个处理器的处理方案示例相关联的图。
图5示出了示例性多核处理单元的示例性处理器。
图6是示出生成神经网络层的输出的示例性过程的流程图。
各图中的相同的附图标记和标号表示相同的元素。
具体实施方式
本说明书描述了用于加速嵌入层计算以减轻可能会由于分布式计算系统中的处理器负载不平衡而发生的处理延迟的技术。例如,延迟可以在生成多层神经网络的嵌入层输出的处理器计算期间发生。具体地,当分布式系统的特定处理器或核被要求执行大量的查询和计算操作(例如,减少或连接(concatenation)检索值)以产生嵌入时,该特定处理器可以经历与负载不平衡相应的处理延迟。
不平衡可以在提交查询或检索输入值的数据的请求的源处理器和执行查找以检索数据的远程处理器之间。数据可以是嵌入表的嵌入(例如,权重),并且远程处理器可以被任务化以处理请求,以返回嵌入的数据或权重值。例如,在嵌入层的前向通过计算操作中,远程处理器处理来自源处理器的请求,该请求使远程处理器查找地址以检索存储在存储器中的数据,并使用所检索的数据执行计算。在现有的分布式架构中,远程处理器执行请求中指定地址的最小化去重复。
例如,在现有系统中远程处理器接收一个或多个重复地址,并执行与所有接收地址(包括重复地址)的输入相对应的数据检索和相关的简化操作。但是,某些现有系统所使用的架构和处理方案易于出现负载不平衡问题,特别是当一个或多个远程处理器处的计算负载与源处理器处的计算负载不平衡、或者在两个或多个远程处理器之间不平衡时。这些负载不平衡会使生成嵌入层的输出的计算操作停止或大大延迟。
通常,神经网络的嵌入层用于将特征嵌入到与嵌入层相对应的特征/嵌入空间中。特征可以是由要在其上执行分析或预测的独立单元共享的属性(attribute)或属性(property)。例如,独立单元可以是词汇表中的一组单词或构成部分诸如图像和其它文档的项目的图像像素。训练嵌入层嵌入的算法可以由神经网络处理器执行,以将特征映射到嵌入向量。在一些实施方式中,嵌入表的嵌入与要使用嵌入的神经网络的其它层共同被学习的。这种类型的学习通过反向传播梯度来更新嵌入表而发生。
在其它实施方式中,嵌入可以独立于要使用嵌入的神经网络的其它层而被学习,例如当嵌入被预训练时。例如,通过处理关于离散输入特征的信息,神经网络处理器可以使用该算法来计算嵌入,以确定类似输入至嵌入向量的映射或放置(Placement),这些嵌入向量在嵌入空间中几何上是接近的。在一些情况下,计算嵌入的过程可以表示特征学习或特征工程的技术,其允许系统从原始输入数据自动发现特征检测所需的表示。
在一些实施方式中,给定的“输入”可以具有一个或多个类型的一个或多个特征,并且嵌入层为这些类型中的每一个生成相应的嵌入。例如,输入可以用于具有几种不同特征类型的搜索查询。特征类型可包括用户或用户设备的属性(例如,位置,偏好,设备类型等)、查询令牌、先前提交的查询、或可对应于搜索查询的属性的其它相关类型。对于给定输入具有多于一个特征的任何特征类型,可操作计算系统来检索这些特征中的每一个的单独嵌入。还可操作该系统用于例如通过计算嵌入值的平均值来组合所检索的嵌入,以生成该特征类型的最终嵌入。
基于上面讨论的上下文,本说明书描述了用于实现专用硬件电路的技术,该专用硬件电路被配置为在将地址列表发送到远程处理器之前在源处理器处执行地址的去重复,以便在分配给远程处理器的存储器的一部分中进行查找。硬件电路包括标识符(ID)分散电路(scatter circuit)(“分散电路”),其被配置为解析原始地址列表以滤除一个或多个“重复”地址。分散电路被配置为在对属于每个远程处理器的地址进行分桶(bucketing)之前对重复地址进行过滤。
例如,包括硬件电路的系统可以生成指令,以使分散电路对属于分配给系统的特定远程处理器的数据分片(Shard)的地址进行分桶。然后,系统将地址发送到被分配给数据分片的特定远程处理器,数据分片存储对应于存储在地址处的输入(特征)的嵌入向量。嵌入向量可以是嵌入表的权重值或嵌入的部分,所述嵌入表被存储在数据分片上。在一些情况下,嵌入表的嵌入向量可以在计算系统的多个远程处理器(处理器节点或核)之间被分割。可操作系统主机用于向远程处理器的子集发送地址集合或向量索引(vectorindices),以执行与检索诸如嵌入向量的权重向量相关联的操作,权重向量被映射到存储在集合的地址处的特定特征。在一些示例中,在向系统主机提供或返回权重向量之前,远程处理器执行一个或多个查询和计算操作。
硬件电路包括反向映射器,其被配置为通过向地址添加诸如散列键(Hashed key)的元数据来增强(Augment)或修改地址。元数据用于在过滤重复地址之前将检索或计算的数据(例如,收集的向量)的特定集合反向映射回对应的原始地址。在一些情况下,电路被配置为以对从远程核接收的数据执行稀疏缩减(Sparse reduction)操作以形成密集矩阵。
例如,在去重复之前,电路被增强以遍历地址位置的原始列表中的每个地址,并且使用由反向映射器生成的元数据标签来收集对应于特定输入地址的向量输出,并且对所收集的向量执行缩减操作。这些技术允许拥有多批次输入的处理特定主处理器执行处理器的分布式系统中的计算,而不是由映射至存储器的特定部分的远程处理器执行,存储器的特定部分保存与批次输入中的一个或多个输入相对应的权重值(例如,参数)。
图1示出了示例计算系统100的框图,示例计算系统100被配置为检索存储在系统100的存储器中的数据元素,用于执行嵌入层操作,以生成用于训练神经网络的嵌入集合。在一些情况下,训练神经网络可以包括基于输出向量来确定一个或多个学习目标,输出向量表示神经网络嵌入。例如,嵌入输出可以对应于一个或多个输出特征集合,输出特征集合包括给定输出维度(64-d、256-d等)的浮点/参数向量。
当训练系统100的神经网络执行某些计算功能,例如图像或语音识别时,产生嵌入输出。在一些实施方式中,训练神经网络包括更新先前存储在神经网络的嵌入表中的嵌入集合,例如在训练神经网络的先前阶段(prior phase)期间。换句话说,可以对神经网络的嵌入进行预训练。例如,神经网络的嵌入层的嵌入可能不会与要使用嵌入的神经网络一起被训练。因此,在本说明书中描述的技术可以被用于更新预训练神经网络的嵌入,与现有方法相比提高了效率,现有方法例如是被用于预训练嵌入的方法。
计算系统100包括主机102、多核处理单元104、和数据分片106a-106k,其中k是大于1的整数。通常,主机102可以是处理单元,例如处理器,多个处理器或多个处理器核。因此,主机102可以包括一个或多个处理器,并且可操作主机102来生成或处理访问目标密集矩阵的指令,并且向多核处理单元104发送指令110以生成目标密集矩阵。如下面更详细描述的,执行嵌入层操作可以包括变换来自一个或多个矩阵的稀疏元素以生成密集矩阵。
多核处理单元104从数据分片106a-106k中的一个或多个访问相应的元素108a-108n,其中n是大于1的整数。多核处理单元104使用相应的元素108a-108n产生目标密集矩阵112,并将目标密集矩阵112提供给主机102以用于进一步处理。元素108a-108n可以是具有不同尺寸的二维矩阵,并且多核处理单元104可以通过将元素108a-108n中的每一个变换为向量,并且将n个向量级联(concatenate)为单个向量来生成目标密集矩阵112。
通常,在嵌入的情况下,对应于稀疏元素的“稀疏”信息可以是标识特征值的单热点(one-hot)向量。例如,如果对于给定特征(例如,A,B,C,D,E)存在五个可能的值,则稀疏向量将特征值“A”标识为(1,0,0,0,0,0),并且嵌入层将(1,0,0,0,0)映射到特征值“A”的密集嵌入向量。在一些实施方式中,在训练嵌入层以学习嵌入期间,元素108a-108n可以是被转换成向量的嵌入表的权重值,向量为诸如特征值“B”或“C”的嵌入向量。可使用多核处理单元104的神经网络处理器来变换权重值,多核处理单元104至少基于特征到嵌入向量的映射来执行训练算法以计算嵌入。
主机102可以处理更新目标密集矩阵的指令,并将更新的密集矩阵发送到多核处理单元104。例如,目标密集矩阵可以对应于预训练神经网络的嵌入。因此,主机102可以处理指令以更新预训练神经网络的嵌入,从而生成更新的密集矩阵。例如,在训练神经网络以更新嵌入的后续迭代(subsequent iteration)期间,可以通过确定输入特征到嵌入矢量的新映射、并基于该新映射生成更新的密集矩阵来执行反向传递(backward pass)以更新嵌入。在一些实施方式中,可操作多核处理单元104来将更新的密集矩阵转换为相应的稀疏元素,并相应地更新存储在数据分片106a-106k中的一个或多个稀疏元素(例如,权重)。
如上所述,主机102被配置为处理在计算系统100内执行的指令。在一些实施方式中,主机102被配置为处理由多核处理单元104生成的目标密集矩阵112。在一些其它实施方式中,主机102可被配置为请求多核处理单元104产生目标密集矩阵112,且另一处理单元可被配置为处理目标密集矩阵112。
多核处理单元104的每个处理器被配置为检索存储在系统100的存储器中的数据元素。存储器可以包括存储包括元素108a-108n的数据的多个数据分片106a-106k。数据可以包括与权重矩阵结构的参数或内核(Kernel)相对应的输入、激活、增益值、或权重值。在一些实施方式中,数据分片106a-106k可以是易失性存储器单元或多个单元。在一些实施方式中,数据分片106a-106k可以是非易失性存储器单元或多个单元。数据分片106a-106k也可以是另一种形式的计算机可读介质,例如存储区域网络中的设备或其它配置。可以使用电连接、光连接、或无线连接将数据分片106a-106k耦合到多核处理单元104。在一些实施方式中,数据分片106a-106k可以是多核处理单元104的一部分,并且是基于存储器中处理器(Processor-in-memory,PIM)架构。
多核处理单元104被配置为基于稀疏元素来确定密集矩阵。在一些实施方式中,多核处理单元104可以被配置为基于密集矩阵来确定稀疏元素的位置。多核处理单元104包括多个互连的处理器或处理器核。例如,多核处理单元104可以是包括多个互连的处理器核的分布式处理系统。通常,术语“处理器”和“处理器核”可互换地用于描述多核心处理单元104的离散互连处理资源。
图2是包括示例多核处理单元104的示例性专用电路200的框图。通常,可以使用一个或多个电路200(下面描述)来实现计算系统100。在图2的实施方式中,多核处理单元104具有包括处理器0到15的一组互连的处理器。如下面更详细描述的,可以将多核处理单元104的处理器0-15中的每一个分配给数据分片106a-106k中的一个或多个,以获得存储在分配给处理器的数据分片的存储器位置中的数据(例如,特征值和权重)。可操作多核处理单元104的每一处理器以从由从主机102或从多核处理单元104中的另一处理器接收的请求中所识别的存储器位置提取(fetch)或检索数据。
处理器协作以检索映射到嵌入表的数据元素。检索数据元素以执行嵌入层操作,诸如用于生成表示神经网络的嵌入的输出向量(例如,密集向量)的计算。在一些实施方式中,嵌入输出是将成批输入中的离散输入到数值(例如,浮点值)的密集向量的映射,数值可用于定义诸如词汇表中的术语或单词的对象之间的关系。对于给定批次中的一个输入,嵌入可以是向量,而对于整个批次的输入,嵌入可以是矩阵,例如向量的集合。在一些实施方式中,嵌入值的向量对应于在训练期间由神经网络学习的可训练权重。学习的权重可以通过查找存储在嵌入表中的密集向量来编码一个或多个单词,其中密集向量对应于特定单词。多个密集向量可以对应于密集矩阵,该密集矩阵用于训练神经网络来执行特定任务或功能,特定任务或功能与识别单词序列有关,例如语言处理。
在一些示例中,嵌入层计算是通常在神经网络的训练阶段期间使用的大规模数据查找问题。例如,在训练期间,可以在多维张量的多个维度上,诸如在多维张量的x维度,y维度或z维度上,对大的权重值表进行分片(shard)或分区(partition)。具体而言,权重值的表可以在数据分片106a-106k上被分片,使得各个权重值被存储在包括数据分片的存储器中的相应位置处。
此外,可以将数据分片106a-106k中的一个或多个分区成多核处理单元104中的特定处理器0-15。表的每个分片或分区对应于分配给多核处理单元104的特定处理器或处理器核的一个数据分片106k。在一些示例中,每个处理器核是相应的神经网络处理器。在其它示例中,每个处理器核是单个神经网络处理器的相应核。通常,计算系统100可以包括基于系统的期望配置的多个处理器或多个处理器核。
再次参考图2和硬件电路200,电路包括标识符(ID)分散电路202(“分散电路202”),其包括散列生成器204和反向映射器206。下面描述散列生成器204和反向映射器206中的每一个。
分散电路202被配置为处理可以由主机102接收的原始地址列表。原始地址列表标识系统100的存储器中的存储器位置,存储器为例如包括数据分片106a-106k的存储器。在图2中,分散电路202被示为在主机102和多核处理单元104的外部或与主机102和多核处理单元104分离。然而,在一些实施方式中,分散电路202可以是主机102的一部分,例如分散单元或计算模块、或主机102的子电路。
类似地,在一些实施方式中,分散电路202可以作为多核处理单元104中的处理器的一部分被包括在多核处理单元104中。例如,分散电路202可以被包括在多核处理单元104的源/主处理器(例如,处理器0)中。源处理器可以由主机102任务化以生成一个或多个请求,并将该请求提供给多核处理单元104中的多个其它处理器(例如,处理器1-15),以从分配给这些处理器的数据分片106a-106k的存储器位置检索数据元素。
分散电路202与主机102通信以接收原始地址列表。例如,主机102接收对神经网络层的批次输入(a batch of inputs),例如来自管理由系统执行的机器学习操作的外部源或系统100的控制器。例如,机器学习操作可以用于训练神经网络来处理图像或音频数据,使得神经网络可以学习如何识别图像/视频中的特定对象或者如何检测音频流中的某些单词序列。
主机102接收一个或多个批次的输入。在一些实施方式中,主机102接收对应于一个或多个样本的多批次输入。例如,第一组多批次输入可对应于一个样本210-1,而第二组多批次输入可对应于另一个样本210-2。每个样本210-1,210-2可以包括对应于对象(例如,图像或音频流)的一组特征的输入。例如,样本210-1和210-2中的每一个可以包括特征的相应批次输入,特征对应于相同图像的不同区域的特征、或对应于多个不同图像的不同区域。
一个批次输入中的每个输入被存储在存储器位置中,并且该位置可以由分散电路202从主机102接收的地址的原始列表中的地址(例如,[99],[736],[37],[99]等)来标识。在一些实施方式中,输入中的每一个都具有相应的权重集合,权重集合可以作为嵌入表的数据或稀疏元素来存储,嵌入表在数据分片106a-106k被分片并且在处理器0到15被分区。在一些实施方式中,以分布式方式存储批次输入中的各个特征的嵌入,例如,跨系统100的各种数据分片。
例如,特征可以分布在多个处理器节点或核(0-15)上,其中每个节点被分配用于存储嵌入的分片的位置的存储器位置。如下面更详细描述的,主机102(例如,源处理器)向处理器0-15(例如,远程处理器)中的一个或多个提供包括一个或多个地址子集的请求,用于处理以检索用于生成密集矩阵的数据元素。
如上所述,在一些现有系统中,接收重复地址的远程处理器对所接收的、包括重复地址的地址执行数据检索、算术运算(例如,乘法)、和相关联的缩减运算。这会导致负载不平衡问题,特别是当远程处理器处的计算负载与请求或源处理器处的计算负载不平衡时。
分散电路被配置为解析原始地址列表以滤除一个或多个“重复”地址。由主机102接收的地址列表包括与批次中的输入特征相对应的一个或多个重复地址。例如,在系统100处接收的原始地址列表可以包括批次输入的地址[26],[96],[99],[1],[7],[312],[99]和[912]。在本示例中,原始地址列表包括作为列表中的重复地址的地址[99]。分散电路202被配置为,在对属于每个远程处理器的地址进行分桶、并向远程处理器提供请求以检索与分组地址相对应的数据元素之前,对重复地址进行过滤。
分散电路202为批次输入中的每个输入在地址列表中标识一个或多个重复地址。例如,可以通过多个特征来引用单个嵌入表。因此,在多个不同的特征上可以存在重复地址。例如,嵌入表T可以由特征F1和F2来引用。在本示例中,可在F1的输入(在一个或一个以上样本中)内及在F2的输入(在一个或一个以上样本中)内内重复地址(例如[99])。
分散电路202被配置为通过滤除重复地址并将唯一地址(标识符)提供给多核处理单元104以在处理器0-15中的一个或多个处进行处理来对原始地址执行去重复。对于每个重复地址:分散电路202生成标识符,标识符用于唯一地标识原始地址列表中的重复地址。然后,基于指示原始地址列表中的重复地址的某些标识符,分散电路202过滤原始地址列表以生成过滤后的地址列表,使得过滤后的地址列表仅包括对应于非重复地址的唯一标识符。
更具体地,对于原始列表中的每个地址,分散电路202使用散列生成器204来生成对应于散列(Hash)ID的标识符。系统100的存储器可具有不同存储器偏移(Offset)(例如,偏移0,偏移1等)的地址值(例如,[99])。散列生成器204可基于地址值、地址值的存储器偏移、或每一者的组合来生成散列ID。例如,对列表中地址的重复出现,基于地址值(例如[99])生成的散列ID的一部分将重复,但是散列ID的一部分不同于对于基于存储器偏移、或基于地址值和存储器偏移的组合而生成的散列ID的第二部分。在一些示例中,分散电路202可以将散列ID的相应第一部分附加到原始列表中的地址作为地址的前缀。分散电路202可递归地(recursively)扫描地址列表以识别附加前缀的重复出现,并基于该重复出现滤除该特定地址。
在一些实施方式中,附加前缀、或散列ID的第一部分是元数据标签的示例,元数据标签由分散电路202用于增强原始列表中的地址以生成过滤后的地址列表。基于由散列生成器204生成的唯一标识符,分散电路202生成批输入的过滤后的地址列表。过滤后的地址列表仅包括数据分片106的存储器位置的唯一标识符或地址(例如,非重复地址)。然后将过滤后的地址列表提供给多核处理单元104,使得处理器0-15仅接收唯一地址而不是多次出现的重复地址。
分散电路202使用反向映射器(reverse mapper)206来生成反向映射,该反向映射用于将所收集的向量映射回原始列表中的特定地址。反向映射器206被配置为将一个或多个元数据标签添加到地址或批次输入以启用反向映射。例如,反向映射器206可以通过向地址添加元数据来增强或修改原始列表中的地址。元数据可以是包括散列ID、或指定地址的存储器偏移的注释(annotation)的元数据标签。在过滤重复地址之前,反向映射器206使用元数据来将检索或计算的数据(例如,收集的向量)的特定集合反向映射回应的原始地址。
以此方式,电路200提供专用硬件,其可被操作以在去重复之前遍历地址位置的原始列表中的每一地址,并且使用由反向映射器206生成的元数据标签来收集对应于特定输入地址的向量输出。如下面更详细描述的,可操作电路200来对所收集的向量执行缩减操作,以生成密集矩阵。例如,主机102或多核处理单元104的示例源处理器可以包括示例性稀疏减少电路(sparse reduce circuit),其被配置为执行从远程核接收的数据元素的减少以形成密集矩阵。下面将参考图5更详细地描述这一点。
图3示出了向多核处理单元104的处理器0,4,8和12中的每一个广播一组地址的主机102。如图3所示,主机102向多核处理单元104的处理器发送批次输入的唯一标识符或地址。在一些实施方式中,主机102可以为对应于样本210-1和样本210-1中的每一个的相应批次输入发送唯一标识符。例如,主机102可以将批次输入302的地址[0,26,96,99]发送到处理器12,并且将批次输入304的地址[2,9,17,736]发送到处理器0。如图2所示,批次输入302地址用于样本210-1,而批次输入304的地址用于样本210-2。
在一些实施方式中,可操作主机102以向多核处理单元104中的不同处理器和不同列组(column group)处理器提供不同批次的输入。例如,主机102可以以顺序的方式或并行的方式将不同批次的输入发送到不同处理器。类似地,主机102可以以顺序的方式或并行的方式将不同批次的输入发送到不同列组处理器。
图4A-4D中的每个示出了与处理方案402的示例相关联的相应图,处理方案402可以在系统100处至少使用主机102和多核处理单元104中的两个或更多个处理器来实现。
如上所述,处理器0-15协作以检索映射到嵌入表的数据元素,例如包括多个稀疏元素的稀疏嵌入表。响应于远程处理器处理由源(或请求)处理器提供的请求,检索数据元素。在一些情况下,检索数据元素以执行嵌入层操作,例如用产生表示神经网络嵌入的输出向量(例如,密集向量)的计算,或用于响应于将输入(例如,增益值或激活值)与权重向量相乘而产生部分激活以生成部分激活的计算。
如上所述,嵌入表可以是在数据分片106a-106k之间分片的权重值表,使得各个权重值被存储在存储器中的相应位置。数据分片106a-106k可以被分割到多核处理单元104中的特定处理器0-15,使得嵌入表的权重值对应于被分配给多核处理单元104的特定处理器0-15的数据分片。
如下所述(并且参考图5),源处理器提供给远程处理器以检索数据元素的请求可以包括标识数据分片的存储器位置的地址(例如[912])。存储器位置存储输入的数据,例如增益值或激活。提供该请求以使得远程处理器检索表示输入的数据元素,例如在主机102处接收的批次输入中的多个输入之一。在一些实施方式中,提供请求以使得远程处理器执行查找操作来检索与批次输入中的特定输入相对应的特定或唯一权重。
在图4A的示例中,框402示出了示例性处理方案,其中至少处理器0-3协作来检索被映射到嵌入表的一部分的数据元素。在该示例中,处理器0可以是向处理器1、处理器2、和处理器3中的每一个提交相应请求的源(或请求)处理器。更具体地,处理器0是源处理器,处理器1、处理器2、和处理器3中的每一个都是相对于处理器0的远程处理器。
在一些情况下,处理器0、1、2、和3形成子集404。在该子集404中,处理器0、处理器1、处理器2、和处理器3中的每一个可以是相对于子集404中的其它处理器的源处理器,其中其它处理器是远程处理器,其接收和处理来自子集404中的源处理器的请求。在一些情况下,子集404中的源处理器和远程处理器仍然可以接收和处理来自多核处理单元104中的另一个处理器或来自主机102的请求,其中主机102可以是不包括在子集中的主,源处理器。
框402所示的示例性方案可以是在系统100处实现的处理技术的一部分,以生成神经网络层的输出,例如嵌入神经网络层的嵌入输出或神经网络的第一隐藏层的输出。处理技术包括一个或多个远程处理器,远程处理器向请求处理器提供包括多个输入和相应的查询值的数据元素。数据元素被存储在分配给远程处理器的数据分片的存储器位置上。
在一些实施方式中,响应于执行查找的每个远程处理器,数据元素被提供给源处理器以获得权重向量,权重向量包括与多个输入的特定输入相乘的相应权重值。例如,可以向远程处理器分配存储器的一部分,该存储器的一部分保存内核矩阵(kernel matrix)的权重,该权重要与存储在源处理器接收的地址列表中的对应地址处的激活相乘。输入和权重值相乘,例如,随后的神经网络层(至少参考下面图4D进行描述)生成部分激活。将描述示例操作以进一步说明该处理技术。
在处理多批次输入的系统100处的示例性操作期间,由主机102或另一源处理器接收多个地址的原始列表,另一源处理器例如为多核处理单元104的处理器0。地址[912]可以被包括在列表中的多个地址中。对于给定的批次或样本,[912]可以在接收到的列表中出现一次以上。具体地,地址[912]可以是在(i)输入特征的集合或(ii)输入特征的样本之间复制的多个地址中的一个。在一些实施方式中,批次或样本中的地址[912]的每次重复出现可用于给定数据分片中的特定存储器偏移(Offset)。
地址[912]可以是存储器中的存储输入/特征值的位置,输入/特征值是给定词汇表中的词的标识符(例如,热标识符),词例如为词“汽车”。例如,嵌入表可以将单词的热标识符映射到嵌入。更具体地,地址[912]可以存储在给定样本的特征值内和/或在给定批次的输入内多次出现的输入特征的实例。地址[912]的每次出现可以是具有嵌入的特征,例如,存储在存储器中的嵌入表中的可训练权重值的特定权重或向量。
系统100可以对原始列表执行去重复,以去除地址[912]的多个重复出现,从而生成仅包括唯一地址的过滤后的地址列表。反向映射器206可将元数据标签附加到批次或样本中的地址[912]的特定出现处,以将所收集的向量(例如,权重向量)映射回原始列表中的地址[912]的特定出现处。如以下更详细描述的,示例源处理器可以使用该反向映射来本地执行计算,诸如在以下两者之间相乘:(i)在地址[912]的该特定出现处存储的输入值,以及(ii)从远程处理器接收的所收集的向量。
通常,地址[912]可以标识分配给处理器0的数据分片的存储器位置,存储器位置存储特定的输入值。在一些实施方式中,分配给处理器0的数据分片中的地址[912]也可以重复,例如,在多批次输入的每一批次中重复100次,但是要参考分配给处理单元104的其它处理器的不同数据分片。例如,地址[912]可以是在分配给多核处理单元104中的一个或多个处理器的相应数据分片中共有的特定地址。
例如主机102或处理器0的示例源处理器可执行16次存储器查找,对系统100的多核处理单元104中的每一处理器执行一次存储器查找,但将不执行与缩减或矩阵乘法有关的计算。在图4A的示例中(和下面讨论的4C),处理器3可以仅向处理器0发送其相应的输入值(例如,激活或增益)和权重值,所述输入值和权重值对应于可以针对特定批次中的地址[912]的多个重复出现而生成的唯一地址。
在图4B的示例中,远程处理器104n被配置为基于来自请求处理器的指令在本地减小其自身的查找值。在一些实施方式中,多核处理单元104中的处理器中的每一个可以表示神经网络处理器芯片,该神经网络处理器芯片被分配用于查找并在本地(Locally)减少存储在特定数据分片106a-106k处的数据元素。相应的远程处理器被配置为基于由主机102提供的指令或者基于直接从包括相应的远程处理器的子集中的请求/源处理器接收的指令来查找和在本地减少其嵌入表的数据元素。
例如,处理器3可以是包括处理器0、处理器1、和处理器2的处理器子集中的相应远程处理器。在该示例中,处理器0可以是在包括处理器3的子集中的请求处理器,处理器3是至少相对于处理器0的远程处理器。以这种方式,处理器3被配置为查找并在本地减少数据元素,诸如存储在地址[912]的输入的唯一权重值,以生成示例性权重向量[f2]。
在图4C的示例中,源或请求处理器(例如,处理器0)接收每个远程处理器处的被本地减少的数据元素,并对这些数据值执行一个或多个操作。在一些实施方式中,请求处理器被配置为对接收到的值执行附加的减小操作。例如,当处理器3检索并局部缩减存储在地址[912]处的输入和相应的查找数据以生成向量[f2]的值时,可操作系统100来确定相对于输入被分配到的相应样本或批次输入的输入的减少。
例如,使用子集404的请求处理器0,系统100可以确定输入[912]对于样本210-1需减小五倍,对于样本210-2需减小两倍。另外,请求处理器0被配置为对从子集404中的每个远程处理器接收的所有数据值执行减小。例如,请求处理器0被配置为在本地减少分别从远程处理器1、远程处理器2、和远程处理器3接收的权重向量[f2]、权重向量[g1]、和权重向量[f1]中的每一个。在一些实施方式中,请求处理器0被配置为查找其自己的数据元素,诸如存储在地址[1],[7],[2],[9]和[17]处的输入的唯一权重值,并且在本地减小这些特征上的查找值以生成示例权重向量[f0]和[g0]。请求处理器可以在其自己的查找值和从子集404中的每个远程处理器接收的数据值上执行减少。
在图4C的示例中,子集406和子集408中的每一个可用于实现与上述处理方案402类似或相同的处理方案。例如,在子集404中处理器7被配置为查找并在本地减少数据元素的远程处理器,诸如存储在地址[37]的输入的唯一权重值,以生成示例性权重向量[e1]。在子集406中,源或请求处理器(例如,处理器4)接收在远程处理器7处的被本地减少的向量[e1]的数据元素,并对这些数据值执行一个或多个操作。然后,处理器4可以基于针对批次或样本中的各种输入值所检索的嵌入而执行的一个或多个级联或缩减操作来生成示例性权重向量[d0]和[e0]。
在一些实施方式中,处理器1-15中的每一个可以向处理器0发送其相应的输入值(例如,激活或增益)和权重值,输入值和权重值对应于可以针对特定批次中的地址[912]的多个重复出现而生成的唯一地址。在其它实施方式中,处理器0-15中的每一个可被指派用于处理的相应批次,且每一个处理器将针对其相应批次中的地址[912]的100次重复执行其相应计算。
图4A-4D描述的处理技术允许拥有多批次输入的处理特定主处理器执行处理器的分布式系统中的计算,而不是由映射至存储器的特定部分的远程处理器执行,存储器的特定部分保存与批次输入中的一个或多个输入相对应的权重值(例如,参数)。这些技术还可以转化为系统100的改进的负载平衡和可伸缩性。
在图4D的示例中,处理器12可以表示系统100的示例分布式处理系统的处理节点。在一些实施方式中,处理器12可以是拥有多批输入的处理的主处理器。处理器12被配置为接收向量输出(如,密集向量)的每一个,由多核心处理单元104中的相应请求处理器104n减小向量输出。更具体地,处理器12可以接收对应于每个输出矩阵(表示神经网络的嵌入)的数据元素的向量输出,向量输出由相应的远程处理器在本地减小。
处理器12被配置为响应于将例如增益值或激活值的输入与权重向量的权重值相乘,而执行计算用于产生部分激活,从而获得部分激活。例如,处理器12被配置为基于输入与权重向量[a]和[b]的权重值之间的乘法来生成部分激活的一个或多个集合。
图5示出了多核处理单元104的示例处理器104n,其中n是大于1的整数。例如,处理器104n可以是以上参考图2描述的处理器0-15中的任一个。一般来说,处理器104n被配置为从节点网络520接收请求542,以提取或检索存储在一个或多个数据分片530中的数据(例如,稀疏元素)。
例如,对使用稀疏元素生成的密集矩阵,源处理器502在节点网络520中处理器104n发送请求542。节点网络520可以是二维网状(mesh)网络。在一些实施方式中,提取数据的请求542包括将所提取的稀疏元素变换成密集矩阵的指令。如上所述,可以在训练嵌入层以学习嵌入期间执行将所提取的稀疏元素变换为密集矩阵的请求。例如,所提取的元素可以是嵌入表的权重值,其至少基于输入特征到嵌入向量的映射而被变换成嵌入向量。源处理器502可以向处理器104n广播请求542。广播请求542的路由可以类似于参考向一个或多个处理器104n提供请求的主机102的图2的描述。在一些实施方式中,源处理器502可以是主机102或者是包括在多核处理单元104中的另一处理器104n。
一般来说,处理器104n被配置为接收请求542以提取存储在一个或多个数据分片530中的数据元素,并且被配置为确定处理器104n是否经指派以访问存储器中的位置的地址,存储器存储请求542指示的数据。在一些实施方式中,处理器104n可以确定它是否被指派来通过使用查找表来访问由请求542指示的数据元素。例如,如果特定请求的数据元素的地址(例如,查找表No.5的存储器偏移1处的地址[99])被包括在查找表中,则处理器104n可以向处理器的示例数据检索单元发送信号,以使数据检索单元检索特定请求的数据元素。在一些实施方式中,处理器104n可以被配置为将接收到的请求542广播到节点网络520上的另一个处理器104n。
处理器104n被配置为响应于处理请求542,从分配给处理器104n的特定数据分片530中检索一个或多个所请求的数据元素。在一些实施方式中,处理器104n是向量处理器、向量处理单元(Vector Processing Unit,VPU)、阵列处理单元、或用于处理向量元素的阵列和矩阵的任何合适的数据计算资源。在一些实施方式中,基于用于存储数据元素的地址和相应的存储器位置,多核处理单元104中包括的处理器104n中的每一个可以而被分配给存储在数据分片530中的特定数据元素,例如嵌入表的特定数据元素。
在一些实施方式中,对于对应于要使用一个或多个处理器104n来检索和处理的多批输入的数据元素,源处理器502可以生成的一个或多个请求542。在一些情况下,每批输入可与对所请求的数据元素的子集的相应请求542相关联。每一处理器104n被配置为从其所指派的数据分片530中独立地检索所指派的数据元素。在一些实施方式中,如下面更详细描述的,处理器104n使得所检索的数据被转发到处理器的一个或多个单元,以进一步处理。
如图5所示,处理器104n包括稀疏减小单元506、级联单元508、和压缩/解压缩单元510。处理器104n可以将检索到的数据元素转发到稀疏减少单元506。稀疏减小单元506被配置为降低所检索的数据元素的维度。例如,处理器104n可以生成维度为100×1的向量元素。可操作稀疏减小单元506以接收所提取的具有100×k维度的数据元素,并通过逻辑运算、算术运算、或两者的组合将所提取的数据元素346的维度减小到100×1来产生稀疏减小元素548。稀疏减小单元506被配置为将稀疏减小元素548输出到级联单元508。
级联单元508被配置为重新排列和级联稀疏减小元素548,以生成级联元素550。例如,处理器104n可以被配置为访问数据元素,数据元素包括到神经网络层的输入和相应的一组权重值(例如,数据库表No.1的稀疏元素No.1到No.100)。在返回所检索的稀疏元素No.5(例如,第二权重值)之前,可操作处理器104n将所检索的稀疏元素No.10(例如,第一权重值)返回到稀疏减少单元506。级联单元508被配置为重新排列在较早接收的稀疏元素No.10之前要排序的较晚接收的稀疏元素No.5,并且被配置为级联稀疏元素No.1到No.100,作为级联元素550。
压缩/解压缩单元510被配置为压缩级联元素550,以生成节点网络520的密集矩阵552。例如,可操作压缩/解压缩单元510压缩级联元素550中的零值,以改善节点网络520的带宽。在一些情况下,多个零值可以响应于输入和权重之间的算术运算而产生,算术运算例如为具有零值的输入和权重值之间的乘法,算术运算产生了具有多个零作为乘法结果的级联元素550的矩阵。压缩/解压缩单元510可以压缩矩阵以生成节点网络520的示例性密集矩阵552。
在一些实施方式中,压缩/解压缩单元510可以解压缩所接收的密集矩阵。例如,第一处理器104n(例如,图2中的处理器9)可以经由节点网络520从相邻的第二处理器104n(例如,图2中的处理器10)接收密集矩阵。相邻的第二处理器104n可以解压缩所接收的密集矩阵,并且可以将解压缩的密集矩阵与级联元素550级联,以形成可以被压缩的更新的级联元素,然后输出到节点网络520。
图6是示出生成神经网络层的输出的示例性过程600的流程图。可以使用上述系统100来实现或执行过程600。过程600的描述可以参考上述系统100的计算资源。在一些实施方式中,过程600的步骤或动作由编程固件或软件指令来启用,所述编程的固件或软件指令可由本文档中描述的设备的一个或多个处理器和资源来执行。
现在参考过程600,系统100的主机接收对神经网络层的批次输入(602)。例如,主机102可以接收一批或多批输入以供多核处理单元104处理。在一个或多批输入中的每个输入被存储在由地址标识的存储器位置中。对于至少一个批次输入,系统100的电路识别批次输入中每个输入的地址列表中的一个或多个重复地址(604)。例如,可操作分散电路202来扫描地址列表,以标识批次输入中的每个输入的地址列表中的一个或多个重复地址。
对于所标识的每个重复地址,电路生成标识地址列表中的重复地址的唯一标识符(606)。例如,可操作分散电路202来为每个重复地址生成相应的唯一标识符,以在地址列表中将特定地址标识为重复。地址列表可以用于形成输入特征的样本的批次输入,输入特征包括多组输入特征。在输入特征样本的相应组的输入特征中,可操作系统100的电路来为每个重复地址生成唯一标识符。
基于由电路产生的一个或多个唯一标识符,系统100产生批次输入的过滤后的地址列表(608)。例如,主机102与分散电路202交互,以接收每个重复地址的相应唯一标识符,并至少基于由分散电路202生成的一个或多个唯一标识符来生成该批次输入的过滤后的地址列表。
对于该批次输入,系统100基于过滤后的地址列表从由对应于唯一标识符的地址所标识的存储器位置获得第一输入(610)。例如,基于过滤的地址列表,系统100可以使用分配给相应的数据分片的特定处理器,以从数据分片的存储器位置获得第一输入,存储器位置由对应于唯一标识符的地址来标识。
为了获得第一输入,请求处理器可以向远程处理器提供请求,以便由远程处理器进行处理,从而获得第一输入。请求可以包括对应于唯一标识符的第一输入的地址。在某些情况下,请求和地址可以分别发送,但同时或并行发送。在某些情况下,请求和地址可以顺序发送,其中一个在另一个之前。
响应于处理请求的远程处理器,请求处理器从远程处理器接收第一输入,第一输入存储在分配给远程处理器的数据分片的存储器位置处。在一些实施方式中,可操作请求处理器来执行一个或多个减小操作,以从第一输入中生成神经网络层的输出,如下面更详细描述的,第一输入从数据分片获得。
系统100可以确定多核处理单元104中的多个处理器中的每个处理器之间的过滤后列表中的地址的分区。例如,系统100可以确定与地址[26]相关联的数据元素被分区为分配给处理器13的数据分片,与地址[96]和[99]相关联的数据元素被分区为分配给处理器15的数据分片,或者与地址[912]相关联的数据元素被分区为分配给处理器3的数据分片。
以此方式,且对于地址的每一分区,系统可以使用相应处理器和数据分片中的其它相应的数据元素(例如权重值)从经过地址分区中的地址标识的存储器位置中获取第一输入,相应处理器被指派去检索输入,数据分片被指派给相应的处理器。例如,可以将地址的每个分区分配给具有对应于多维稀疏张量的向量元素的激活值或增益值的数据分片。在一些实施方式中,具有激活或增益值的每个数据分片被分配给特定处理器,用于与相应的权重向量相乘以执行神经网络计算。
系统100从所获得的第一输入产生神经网络层的输出,例如嵌入输出(612)。在一些实施方式中,神经网络层是神经网络的嵌入层,并且嵌入输出包括嵌入特征向量。分散电路202被配置为确定唯一标识符与嵌入层的批次输入中的特定输入的重复地址的反向映射。在一些实施方式中,为多组输入特征的特定输入确定唯一标识符与重复地址的反向映射。
基于唯一标识符到特定输入的重复地址的反向映射,可操作系统100以生成一个或多个向量(例如,嵌入特征向量)作为嵌入层的输出。例如,基于反向映射生成神经网络层的输出(例如,嵌入输出)可以包括分析解析重复地址的地址列表,以将嵌入特征向量映射回神经网络层的批次输入中的特定输入,嵌入特征向量是为重复地址生成的、且对应于唯一标识符。
在一些示例中,产生嵌入层的输出可以包括响应于与嵌入值的稀疏表相关联的处理数据而产生一个或多个密集矩阵。与表相关联的数据可以以矩阵的形式表示。可以基于包括矩阵乘法的线性代数算法来使用系统100的处理器和计算资源来操纵数据。矩阵可以是一维向量或多维矩阵。矩阵可以由数据结构表示,例如数据库表或变量。嵌入表可以在例如行和列维度中被分片,并且被存储在存储器的一部分中,该部分被映射到形成多核处理单元104的多个处理器中的特定处理器。
在本说明书中描述的主题和功能操作可以在数字电子电路中、有形体现的计算机软件或固件中、计算机硬件中实现,包括在本说明书中公开的结构及其结构等价物,或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即,编码在有形的非暂时性程序载体上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。
可替换地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成来编码信息以传输到适当的接收机设备以便由数据处理设备执行。计算机存储介质可以是机器可读存储设备,机器可读存储衬底、随机或串行存取存储器设备、或它们中的一个或多个的组合。
术语“计算系统”包括用于处理数据的各种装置、设备、和机器,包括例如可编程处理器、计算机、或多处理器或多计算机。装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。
计算机程序(其也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本、或代码)可以以任何形式的编程语言来编写,包括编译或解释语言、或声明性语言或过程语言,并且可以以任何形式来部署,包括作为独立程序或作为模块、或适用于计算环境的组件、子例程、或其它单元。
计算机程序可以对应于,但不是必须对应于文件系统中的文件。程序可以存储在保存其它程序或数据的文件的一部分中,例如,存储在标记语言文档中、存储在专用于所述程序的单个文件中、或者存储在多个协调文件中的一个或多个脚本,多个协调文件例如为,存储一个或多个模块、子程序、或代码部分的文件。计算机程序可被部署为在一个计算机上或在位于一个站点或分布在多个站点上并通过通信网络互连的多个计算机上执行。
本说明书中描述的过程和逻辑流程可以由一个或多个可编程计算机执行,可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可由专用逻辑电路执行,逻辑电路例如为,FPGA(现场可编程门阵列)、ASIC(专用集成电路)、或GPGPU(通用图形处理单元))执行,且装置也可实施为专用逻辑电路。
例如,适于执行计算机程序的计算机可以基于通用、或专用微处理器、或两者均有、或任何其它类型的中央处理单元。通常,中央处理单元将从只读存储器、或随机存取存储器、或两者接收指令和数据。计算机的一些元件是用于执行和实施指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或被可操作地耦合以从一个或多个大容量存储设备接收数据或向一个或多个大容量存储设备传送数据,所述大容量存储设备用于存储数据,例如磁盘,磁光盘或光盘。然而,计算机不必具有这样的设备。此外,仅举几个例子,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频、或视频播放器、游戏控制台、全球定位系统(GPS)接收器、或便携式存储设备,例如通用串行总线(USB)闪存驱动器。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CDROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或结合在专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有显示设备的计算机上实现,例如LCD(液晶显示器)监视器,以向用户显示信息,计算机具有键盘和定点设备,例如鼠标或轨迹球,用户可向计算机提供输入。也可以使用其它类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以包括声学、语音或触觉输入的任何形式来接收来自用户的输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收的请求向用户的客户端设备上的web浏览器发送网页。
本说明书描述的主题的实施例可以在计算系统中实现,计算系统包括后端部件,例如,数据服务器、或者包括中间件部件,例如,应用服务器、或者包括前端部件,例如,具有图形用户界面或Web浏览器的客户端计算机,用户可以通过其与此处描述的系统和技术的实现、或者这些后端、中间件或前端部件的任意组合来进行交互。系统的各部件可以通过任何形式或媒介的数字数据通信互连,例如,通信网络。通信网络的示例包括局域网(LAN)和广域网(WAN),例如互联网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系是由于在各自的计算机上运行的计算机程序而产生的,并且彼此之间具有客户端-服务器关系。
虽然本说明书包含许多具体的实现细节,但这些不应被解释为对任何发明的范围或所要求保护的范围的限制,而应被解释为对特定发明的特定实施例可能特定的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合来实现。此外,尽管上面可以将特征描述为在某些组合中起作用,并且甚至最初如此要求保护,但是在一些情况下,可以从组合中去除要求保护的组合中的一个或多个特征,并且要求保护的组合可以针对子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描述了操作,但这不应被理解为要求以所示的特定顺序或以顺序的顺序执行这些操作,或者要求执行所有示出的操作以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为需要所有实施例中的这种分离,并且应当理解,所描述的程序组件和系统通常可以被集成到单个软件产品中或者被封装到多个软件产品中。
已经描述了本主题的特定实施例。其它实施方式在以下权利要求的范围内。例如,权利要求中的动作可以以不同的顺序执行,并且仍然获得期望的结果。作为一个示例,附图中所示的过程不一定需要所示的特定顺序或顺序,以获得所需的结果。在某些实施方式中,多任务和并行处理可能是有利的。
Claims (22)
1.一种使用系统执行神经网络计算的方法,所述系统被配置为在硬件电路上实现神经网络,其特征在于,所述方法包括:
主机接收到神经网络层的批次输入,其中所述批次输入中的每个输入存储在由地址标识的存储器位置中;
识别所述批次输入中的一个或多个输入的地址列表中的一个或多个重复地址;对于每个重复地址:
生成唯一标识符,所述唯一标识符标识所述地址列表中的所述重复地址;
对于所述批次输入,从存储器位置获取第一输入,所述存储器位置由与所述唯一标识符相对应的地址所标识;
从获取的所述第一输入中生成所述神经网络层的嵌入输出。
2.根据权利要求1所述的方法,其特征在于,所述神经网络层是所述神经网络的嵌入层,所述嵌入输出包括嵌入特征向量,并且所述方法还包括:
所述系统的分散电路确定所述唯一标识符与到所述嵌入层的所述批次输入中的特定输入的重复地址的反向映射;并且
基于所述唯一标识符与所述特定输入的所述重复地址的所述反向映射,生成一个或多个嵌入向量作为所述嵌入层的输出。
3.根据权利要求2所述的方法,其特征在于,所述方法包括:
基于一个或多个唯一标识符生成所述批次输入的过滤后的地址列表;
为所述过滤后的地址列表中的地址确定多个处理器中的每个处理器之间的地址分区;以及
其中,获取所述第一输入包括:对于每一地址分区,使用被分配为从所述地址检索输入的相应处理器,从由所述地址分区中的地址所标识的存储器位置获得第一输入。
4.根据权利要求2所述的方法,其特征在于,其中基于所述反向映射生成所述神经网络层的所述嵌入输出包括:
解析包括所述重复地址的所述地址列表,以将为重复地址生成的与唯一标识符相对应的嵌入特征向量映射回到所述神经网络层的所述批次输入中的所述特定输入。
5.根据权利要求2所述的方法,其特征在于,所述方法包括:
请求处理器向远程处理器提供与唯一标识符对应的第一输入的地址和对所述第一输入的请求;
所述请求处理器从所述远程处理器接收所述第一输入,所述第一输入存储于被分配给所述远程处理器的数据分片的存储器位置;并且
执行一个或多个减小操作,以从所述数据分片获得的第一输入生成所述神经网络层的所述嵌入输出。
6.根据权利要求2所述的方法,其特征在于,所述地址列表用于形成包括多组输入特征的输入特征样本的批次输入,并且生成所述唯一标识符包括:
为所述输入特征样本中的相应组输入特征上的每个重复地址生成所述唯一标识符。
7.根据权利要求6所述的方法,其特征在于,确定所述唯一标识符与重复地址的所述反向映射包括:
确定所述唯一标识符与所述多组输入特征的特定输入的重复地址的所述反向映射。
8.根据权利要求6所述的方法,其特征在于,其中:
重复地址是存储到神经网络层的输入的存储器位置的特定地址,
所述特定地址在所述多个处理器中的每个处理器的对应数据分片之间是公共的,并且
在(i)一组输入特征、或(ii)所述输入特征样本之间,所述特定地址是重复的。
9.根据权利要求2所述的方法,其特征在于,其中:
将每个地址分区分配给对应于多维稀疏张量的向量元素的激活值或增益值的数据分片;并且
激活值或增益值的每个数据分片被分配给特定处理器,用于与相应的权重向量相乘以执行所述神经网络计算。
10.根据权利要求1所述的方法,其特征在于,生成所述神经网络层的所述嵌入输出包括:
从远程处理器向请求处理器提供多个输入,所述多个输入存储于被分配给所述远程处理器核的数据分片的存储器位置;并且
执行查找以获得相应的权重向量,所述权重向量包括用于与所述多个输入中的输入相乘的相应权重值,以为后续神经网络层生成部分激活。
11.根据权利要求10所述的方法,其特征在于,其中:
从由非重复地址标识的所述存储器位置;或从由原始列表中不存在重复地址的地址所标识的存储器位置,接收多个输入的一部分。
12.一种在硬件电路上实现神经网络以执行神经网络计算的系统,其特征在于,所述系统包括:
一个或多个处理装置;和
一个或多个非暂态机器可读存储装置,用于存储指令,所述指令可由所述一个或多个处理装置执行,以执行包括以下的操作:
主机接收到神经网络层的批次输入,其中所述批次输入中的每个输入存储在由地址标识的存储器位置中;
识别所述批次输入中的一个或多个输入的地址列表中的一个或多个重复地址;
对于每个重复地址:
生成唯一标识符,所述唯一标识符标识所述地址列表中的所述重复地址;
对于所述批次输入,从存储器位置获取第一输入,所述存储器位置由与所述唯一标识符相对应的地址所标识;
从获取的所述第一输入中生成所述神经网络层的嵌入输出。
13.根据权利要求12所述的系统,其特征在于,所述神经网络层是所述神经网络的嵌入层,所述嵌入输出包括嵌入特征向量,并且所述方法还包括:
所述系统的分散电路确定所述唯一标识符与到所述嵌入层的所述批次输入中的特定输入的重复地址的反向映射;并且
基于所述唯一标识符与所述特定输入的所述重复地址的所述反向映射,生成一个或多个向量作为所述嵌入层的输出。
14.根据权利要求13所述的系统,其特征在于,所述系统还包括:
基于一个或多个唯一标识符生成所述批次输入的过滤后的地址列表;
为所述过滤后的地址列表中的地址确定多个处理器中的每个处理器之间的地址分区;以及
其中,获取所述第一输入包括:对于每一地址分区,使用被分配为从所述地址检索输入的相应处理器,从由所述地址分区中的地址所标识的存储器位置获得第一输入。
15.根据权利要求13所述的系统,其特征在于,基于所述反向映射生成所述神经网络层的所述嵌入输出包括:
解析包括所述重复地址的所述地址列表,以将为重复地址生成的与唯一标识符相对应的嵌入特征向量映射回到所述神经网络层的所述批次输入中的所述特定输入。
16.根据权利要求13所述的系统,其特征在于,所述系统还包括:
请求处理器向远程处理器提供第一输入的地址,所述第一输入的地址与唯一标识符和所述第一输入的请求相对应;
所述请求处理器从所述远程处理器接收所述第一输入,所述第一输入存储于被分配给所述远程处理器的数据分片的存储器位置;并且
执行一个或多个减小操作,以从所述数据分片获得的第一输入生成所述神经网络层的所述嵌入输出。
17.根据权利要求13所述的系统,其特征在于,所述地址列表用于形成包括多组输入特征的输入特征样本的批次输入,并且生成所述唯一标识符包括:
为所述输入特征样本中的相应组输入特征上的每个重复地址生成所述唯一标识符。
18.根据权利要求17所述的系统,其特征在于,确定所述唯一标识符到重复地址的反向映射包括,
确定所述唯一标识符与所述多组输入特征的特定输入的重复地址的所述反向映射。
19.根据权利要求17所述的系统,其特征在于,其中:
重复地址是存储到神经网络层的输入的存储器位置的特定地址,
所述特定地址在所述多个处理器中的每个处理器的对应数据分片之间是公共的,并且
在(i)一组输入特征、或(ii)所述输入特征样本之间,所述特定地址是重复的。
20.根据权利要求13所述的系统,其特征在于,其中:
将每个地址分区分配给对应于多维稀疏张量的向量元素的激活值或增益值的数据分片;并且
激活值或增益值的每个数据分片被分配给特定处理器,用于与相应的权重向量相乘以执行所述神经网络计算。
21.根据权利要求21所述的系统,其特征在于,生成所述神经网络层的所述嵌入输出包括:
从远程处理器向请求处理器提供多个输入,所述多个输入存储于被分配给所述远程处理器核的数据分片的存储器位置;并且
执行查找以获得相应的权重向量,所述权重向量包括用于与所述多个输入的输入相乘的相应权重值,以为后续神经网络层生成部分激活。
22.一个或多个非暂态机器可读存储设备,其特征在于,用于在硬件电路上实现神经网络以执行神经网络计算,并且用于存储指令,所述指令可由一个或多个处理设备执行,以执行包括以下的操作:
主机接收到神经网络层的批次输入,其中所述批次输入中的每个输入存储在由地址标识的存储器位置中;
识别所述批次输入中的一个或多个输入的地址列表中的一个或多个重复地址;对于每个重复地址:
生成唯一标识符,所述唯一标识符标识所述地址列表中的所述重复地址;
对于所述批次输入,从存储器位置获取第一输入,所述存储器位置由与所述唯一标识符相对应的地址所标识;
从获取的所述第一输入中生成所述神经网络层的嵌入输出。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962909667P | 2019-10-02 | 2019-10-02 | |
US62/909,667 | 2019-10-02 | ||
PCT/US2020/053442 WO2021067376A1 (en) | 2019-10-02 | 2020-09-30 | Accelerated embedding layer computations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114503128A true CN114503128A (zh) | 2022-05-13 |
Family
ID=72744594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080060592.XA Pending CN114503128A (zh) | 2019-10-02 | 2020-09-30 | 加速嵌入层计算 |
Country Status (7)
Country | Link |
---|---|
US (2) | US11651209B1 (zh) |
EP (1) | EP3800590A1 (zh) |
JP (2) | JP7325615B2 (zh) |
KR (1) | KR20220034236A (zh) |
CN (1) | CN114503128A (zh) |
TW (1) | TW202131236A (zh) |
WO (1) | WO2021067376A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117318892A (zh) * | 2023-11-27 | 2023-12-29 | 阿里云计算有限公司 | 计算系统、数据处理方法、网卡、主机及存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115730116A (zh) * | 2021-08-31 | 2023-03-03 | 华为技术有限公司 | 一种数据检索方法及相关设备 |
KR102609562B1 (ko) * | 2021-10-15 | 2023-12-05 | 인하대학교 산학협력단 | 추천 시스템의 임베딩을 위한 하이브리드 니어-메모리 프로세싱 구조 및 방법 |
US20230146611A1 (en) * | 2021-11-11 | 2023-05-11 | Samsung Electronics Co., Ltd. | Neural network training with acceleration |
KR102515159B1 (ko) | 2022-07-12 | 2023-03-29 | 인하대학교 산학협력단 | 딥러닝 기반 추천 시스템에서 메모리 크기와 에너지를 줄일 수 있는 임베딩의 니어-메모리 프로세싱 방법 및 시스템 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7139739B2 (en) | 2000-04-03 | 2006-11-21 | Johnson & Johnson Pharmaceutical Research & Development, L.L.C. | Method, system, and computer program product for representing object relationships in a multidimensional space |
US8679278B2 (en) | 2008-07-17 | 2014-03-25 | Basf Se | Method for continuously producing multi-layered composite bodies |
US8380647B2 (en) | 2009-08-14 | 2013-02-19 | Xerox Corporation | Training a classifier by dimension-wise embedding of training data |
JP6161396B2 (ja) | 2013-05-15 | 2017-07-12 | オリンパス株式会社 | 演算装置 |
US9304971B2 (en) * | 2013-06-27 | 2016-04-05 | International Business Machines Corporation | Lookup table sharing for memory-based computing |
EP3091450B1 (en) * | 2015-05-06 | 2017-04-05 | Örjan Vestgöte | Method and system for performing binary searches |
KR20180033670A (ko) * | 2016-09-26 | 2018-04-04 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그의 동작 방법 |
WO2018081089A1 (en) | 2016-10-26 | 2018-05-03 | Deepmind Technologies Limited | Processing text sequences using neural networks |
CN109952583A (zh) | 2016-11-15 | 2019-06-28 | 谷歌有限责任公司 | 神经网络的半监督训练 |
EP3542319B1 (en) | 2016-11-15 | 2023-07-26 | Google LLC | Training neural networks using a clustering loss |
US20180150256A1 (en) | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
WO2018170510A1 (en) | 2017-03-17 | 2018-09-20 | Google Llc | Mirror loss neural networks |
WO2018213840A1 (en) | 2017-05-19 | 2018-11-22 | Google Llc | Depthwise separable convolutions for neural machine translation |
US20190073580A1 (en) | 2017-09-01 | 2019-03-07 | Facebook, Inc. | Sparse Neural Network Modeling Infrastructure |
US10943171B2 (en) | 2017-09-01 | 2021-03-09 | Facebook, Inc. | Sparse neural network training optimization |
GB2567190B (en) * | 2017-10-05 | 2020-02-26 | Advanced Risc Mach Ltd | Error recovery for intra-core lockstep mode |
US10997065B2 (en) * | 2017-11-13 | 2021-05-04 | SK Hynix Inc. | Memory system and operating method thereof |
US20190164036A1 (en) * | 2017-11-29 | 2019-05-30 | Electronics And Telecommunications Research Institute | Method and apparatus for generating address of data of artificial neural network |
US10678508B2 (en) * | 2018-03-23 | 2020-06-09 | Amazon Technologies, Inc. | Accelerated quantized multiply-and-add operations |
US11507846B2 (en) | 2018-03-26 | 2022-11-22 | Nvidia Corporation | Representing a neural network utilizing paths within the network to improve a performance of the neural network |
KR102619954B1 (ko) * | 2018-03-29 | 2024-01-02 | 삼성전자주식회사 | 데이터를 처리하기 위한 방법 및 이를 지원하는 전자 장치 |
US10621489B2 (en) * | 2018-03-30 | 2020-04-14 | International Business Machines Corporation | Massively parallel neural inference computing elements |
CN108447520B (zh) * | 2018-05-03 | 2023-10-13 | 长鑫存储技术有限公司 | 存储器电路装置及存储器检测方法 |
KR102524804B1 (ko) * | 2019-01-04 | 2023-04-24 | 삼성전자주식회사 | 원-타임 프로그램가능한 메모리 셀, 및 이를 구비하는 otp 메모리 및 메모리 시스템 |
SE543186C2 (en) * | 2019-01-11 | 2020-10-20 | Zeropoint Tech Ab | Systems, methods and devices for eliminating duplicates and value redundancy in computer memories |
US11227120B2 (en) * | 2019-05-02 | 2022-01-18 | King Fahd University Of Petroleum And Minerals | Open domain targeted sentiment classification using semisupervised dynamic generation of feature attributes |
KR20210000414A (ko) * | 2019-06-25 | 2021-01-05 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
EP3767486B1 (en) * | 2019-07-19 | 2023-03-22 | Microsoft Technology Licensing, LLC | Multi-record index structure for key-value stores |
EP3786959A1 (en) * | 2019-08-30 | 2021-03-03 | TTTech Computertechnik Aktiengesellschaft | Method of error detection in a ternary content addressable memory |
US11429573B2 (en) * | 2019-10-16 | 2022-08-30 | Dell Products L.P. | Data deduplication system |
US11620503B2 (en) * | 2020-03-18 | 2023-04-04 | Arm Limited | Neural network processing |
US11212219B1 (en) * | 2020-06-26 | 2021-12-28 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | In-band telemetry packet size optimization |
US20220100518A1 (en) * | 2020-09-25 | 2022-03-31 | Advanced Micro Devices, Inc. | Compression metadata assisted computation |
-
2019
- 2019-10-21 US US16/659,527 patent/US11651209B1/en active Active
-
2020
- 2020-09-30 TW TW109134099A patent/TW202131236A/zh unknown
- 2020-09-30 JP JP2022511014A patent/JP7325615B2/ja active Active
- 2020-09-30 KR KR1020227005451A patent/KR20220034236A/ko not_active Application Discontinuation
- 2020-09-30 CN CN202080060592.XA patent/CN114503128A/zh active Pending
- 2020-09-30 WO PCT/US2020/053442 patent/WO2021067376A1/en active Application Filing
- 2020-10-02 EP EP20199770.7A patent/EP3800590A1/en active Pending
-
2023
- 2023-04-21 US US18/305,297 patent/US11948086B2/en active Active
- 2023-08-01 JP JP2023125258A patent/JP2023162181A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117318892A (zh) * | 2023-11-27 | 2023-12-29 | 阿里云计算有限公司 | 计算系统、数据处理方法、网卡、主机及存储介质 |
CN117318892B (zh) * | 2023-11-27 | 2024-04-02 | 阿里云计算有限公司 | 计算系统、数据处理方法、网卡、主机及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2023162181A (ja) | 2023-11-08 |
WO2021067376A1 (en) | 2021-04-08 |
US11651209B1 (en) | 2023-05-16 |
JP2022550254A (ja) | 2022-12-01 |
US11948086B2 (en) | 2024-04-02 |
KR20220034236A (ko) | 2022-03-17 |
TW202131236A (zh) | 2021-08-16 |
US20230376759A1 (en) | 2023-11-23 |
JP7325615B2 (ja) | 2023-08-14 |
EP3800590A1 (en) | 2021-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114503128A (zh) | 加速嵌入层计算 | |
CN107045493B (zh) | 矩阵处理装置 | |
CN107045492B (zh) | 矩阵处理装置 | |
US20210019570A1 (en) | Dynamic minibatch sizes | |
CN115114283A (zh) | 数据处理方法、装置、计算机可读介质及电子设备 | |
Kim | Performance of Distributed Database System built on Multicore Systems |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40072706 Country of ref document: HK |