CN115329140A - 动态小批量大小 - Google Patents
动态小批量大小 Download PDFInfo
- Publication number
- CN115329140A CN115329140A CN202210852423.0A CN202210852423A CN115329140A CN 115329140 A CN115329140 A CN 115329140A CN 202210852423 A CN202210852423 A CN 202210852423A CN 115329140 A CN115329140 A CN 115329140A
- Authority
- CN
- China
- Prior art keywords
- host computer
- mini
- batches
- batch
- training
- 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
- 238000012549 training Methods 0.000 claims abstract description 182
- 238000000034 method Methods 0.000 claims abstract description 71
- 238000013528 artificial neural network Methods 0.000 claims abstract description 64
- 230000008569 process Effects 0.000 claims abstract description 53
- 238000012545 processing Methods 0.000 claims abstract description 37
- 230000015654 memory Effects 0.000 claims description 47
- 238000004590 computer program Methods 0.000 abstract description 11
- 238000005192 partition Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 210000002569 neuron Anatomy 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 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/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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
- G06F18/2148—Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
-
- 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
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Databases & Information Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Image Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及动态小批量大小。用于在神经网络训练期间使用动态小批量大小的方法、系统和设备,包括编码在计算机存储介质上的计算机程序。所述方法中的一个包括:由多个主机计算机中的每个接收相应批量的训练示例,每个训练示例具有零个或多个特征;计算所述主机计算机可以将相应批量的训练示例划分成的最小数量的小批量,使得所述主机计算机可以使用神经网络的嵌入层来处理每个小批量而不超过可用计算资源;确定任何主机计算机可以将其相应批量的训练示例划分成的最大的最小数量的小批量(N);从所述主机计算机所接收的相应批量的训练示例中生成N个小批量;以及由每个主机计算机使用嵌入层来处理所述N个小批量。
Description
分案说明
本申请属于申请日为2019年12月16日的中国发明专利申请No.201980058339.8的分案申请。
背景技术
本说明书涉及人工神经网络。
神经网络是采用多个操作层来从一个或多个输入预测一个或多个输出的机器学习模型。神经网络通常包括位于输入层和输出层之间的一个或多个隐藏层。每个隐藏层的输出用作下一层(例如,下一隐藏层或输出层)的输入。
神经网络的每个层指定了要对该层的输入执行的一个或多个变换操作。一些神经网络层包括被称为神经元的单元。每个神经元接收一个或多个输入,并生成由其他神经网络层接收的输出。通常,每个神经元从一个或多个其他神经元接收输入,并且每个神经元向一个或多个其他神经元提供输出。
每个层使用该层的一组参数的当前值生成一个或多个输出。训练神经网络涉及连续地对输入执行正向传递,计算梯度值,以及更新每个层的参数集的当前值。一旦神经网络被训练,就可以使用最终的参数集来进行预测。
一些神经网络具有作为嵌入层的隐藏层。通常,嵌入层将稀疏神经网络输入(即,相对于总数特征仅具有少量具有非零值的特征的神经网络输入)变换成称作嵌入的低维向量。
发明内容
本说明书描述一种可以在神经网络的训练期间处理所述神经网络的嵌入层的分布式计算系统。系统包括各自存储可训练的嵌入查找表的分区的主机计算机。为了处理特定训练示例,对于训练示例的每个特征,主机计算机从存储在相应主机计算机上的查找表的相应一个分区获得嵌入。获得嵌入涉及向存储嵌入所属的查找表的分区的主机计算机发送查找请求。在获得每个特征的嵌入之后,主机计算机处理该些嵌入以生成用于训练示例的嵌入层输出。
主机计算机一次处理多个训练示例。具体地,每个主机计算机接收相应批量的训练示例以用于在训练的迭代期间进行处理。通常,每个批量的训练示例具有相同数量的训练示例,并且每个训练示例具有一个或多个特征。每个主机计算机计算所述主机计算机可以将其批量的训练示例划分成的最小数量的嵌入小批量,使得主机计算机可以使用神经网络的嵌入层来处理每个嵌入小批量,而不会超出主机计算机上的可用计算资源。在本说明书中,嵌入小批量将被简称为“小批量”。系统确定任何主机计算机可以将其批量的训练示例划分成的最大的最小数量的小批量(N)。每个主机计算机将其批量的训练示例划分成N个小批量,并且使用神经网络的嵌入层来处理N个小批量。
分布式计算系统在几种约束下进行操作。第一,每个主机计算机通常必须处理与每个其他主机计算机相同数量的小批量。这是因为(i)主机计算机接收同步并行指令,以及(ii)主机计算机必须在训练的每个迭代期间相互交换嵌入。第二,主机计算机各自具有有限量的存储从其他主机计算机获得的嵌入的存储器。更具体地,主机计算机是用于处理神经网络的专用计算机,只有少量暂存存储器来存储嵌入,而传统的CPU则有大量的主存储器或高速缓冲存储器。暂存存储器是高速内部存储器,用于临时存储计算、数据和其他正在进行的工作。因此,主机计算机一次可以获得的嵌入数量是有限的,这又限制了最大的小批量大小。第三,每个训练示例中的特征数量以及存储每个训练示例的嵌入所需的暂存存储器的量变化。
在一些实现方式中,分布式计算系统被配置成执行包括以下各项的操作:由多个主机计算机中的每个接收相应批量的训练示例,每个训练示例具有零个或多个特征;由每个主机计算机计算所述主机计算机可以将相应批量的训练示例划分成的最小数量的小批量,使得所述主机计算机可以使用神经网络的嵌入层来处理每个小批量而不超过可用计算资源;基于所计算的最小数量的小批量来确定任何主机计算机可以将其相应批量的训练示例划分成的最大的最小数量的小批量(N);由每个主机计算机从所述主机计算机所接收的相应批量的训练示例中产生N个小批量;以及由每个主机计算机使用嵌入层来处理所述N个小批量。
考虑到这些约束,本说明书中描述的主题可以实现在特定实施例中以便实现以下优点中的一个或多个。将一批量的训练示例划分成大量的小批量,增加了每个主机计算机必须从其他主机计算机获得嵌入的次数,从而产生了可避免的读/写等待时间。另一方面,由于每个主机计算机上的可用资源,例如暂存存储器,将一批量的训练示例划分成具有大量训练示例的少量小批量可能是不可能的。本说明书中描述的系统在训练的每个迭代之前动态调整小批量的数量。具体地,系统计算任何主机计算机可以将其相应批量的训练示例划分成的最大的最小数量的小批量(N),而不会超出任何主机计算机上的可用计算资源。每个主机计算机然后将其批量的训练示例划分成N个小批量。此过程最小化了在训练的每个迭代中每个组唯一的训练示例被划分成的小批量的数量。这又减少了与训练的每个迭代相关联的等待时间和开销,这减少了训练过程消耗的总训练时间和计算资源量,例如处理能力。
在附图和以下描述中陈述本说明书中的主题的一或多个实施例的细节。主题的其他特征、方面和优点将从具体实施方式、附图和权利要求变得显而易见。
附图说明
图1是示例性分布式计算系统的图。
图2是用于将批量的神经网络训练示例划分成小批量的示例性过程的流程图。
图3是用于处理小批量的示例性过程的流程图。
各图中的相同附图标记和名称指示相同的元件。
具体实施方式
图1是示例性分布式计算系统100的图。分布式计算系统100被配置成处理神经网络的嵌入层。
本说明书结合系统、装置和计算机程序组件使用术语“被配置成”。对于被配置成执行特定操作或动作的一个或多个计算机的系统意味着:该系统已在其上安装软件、固件、硬件或其组合,在操作中使得该系统执行所述操作或动作。
嵌入层是将稀疏的神经网络输入变换为嵌入的神经网络层。嵌入是输入的密集多维向量表示。直观地说,特定嵌入的每个维度的值编码了嵌入所代表的输入的不同特性。
通常,嵌入层通过以下操作来训练:完成对嵌入层所属的整个神经网络的前向传递;确定神经网络的实际输出和给定输入的预期输出之间是否存在差异;以及例如通过使用常规的反向传播技术或本领域中已知的类似技术来更新神经网络的权重,包括嵌入层的权重。换句话说,可以在神经网络的正常训练过程期间训练嵌入层。
嵌入层可以简化为查找表,该查找表存储神经网络输入的每个潜在特征的嵌入。例如,如果特定神经网络被配置成通过对用户的观看历史进行建模来为流传输服务的用户生成电影推荐,则神经网络的查找表可以存储用于流传输服务上可用的每个电影的单独嵌入。作为另一示例,如果特定神经网络被配置成基于用英语书写的查询来生成搜索引擎结果,则神经网络的查找表可以存储用于英语中的每个单词的单独嵌入。
每个特征由不同的索引表示,例如由不同的整数表示。特征可以通过索引布置在查找表中。使用嵌入层来处理输入涉及:在查找表中查找输入中每个特征的索引;在每个索引处检索嵌入;以及例如通过将嵌入相加在一起来组合嵌入。在嵌入层的查找表实现方式中,训练嵌入层涉及在正常训练过程期间更新查找表中的值。
分布式计算系统100包括主机计算机110a-110n。主机计算机110a-110n各自都在嵌入存储器112a-112n中存储嵌入层的查找表的分区。查找表分布在主机计算机之间,因为输入特征的数量和每个特征的维数使得整个查找表不适合单个主机计算机上的暂存存储器。另外,并行从多个主机计算机获得嵌入比从单个主机计算机获得所有嵌入要快。在一些实现方式中,嵌入存储器112a-112n存储多个查找表的分区,其中每个查找表可以存储用于不同类型的特征的嵌入。例如,再次参考被配置成通过对用户的观看历史进行建模来为流传输服务的用户生成电影推荐的神经网络,该神经网络可以另外接收指定用户的流派偏好的输入。单独的查找表可以存储流派嵌入。
在训练的迭代期间,分布式计算系统100中的每个主机计算机接收一批量的训练示例。每个训练示例包括一个或多个特征。为了处理特定训练示例,主机计算机从查找表的一个分区(即,从嵌入存储器112a-112n中的一个或多个)获得训练示例中每个特征的嵌入。主机计算机使用输入/输出单元114a-114n交换嵌入。输入/输出单元是包括临时寄存器空间和通信信道(例如,总线,其将主机计算机彼此连接)的硬件组件。主计算机在暂存存储器118a-118n中存储所获得的嵌入和关于那些嵌入的元数据,例如,重复数据删除信息和训练示例中的嵌入数量。暂存存储器118a-118n是高速内部存储器,在物理上非常接近处理单元116a-116n,并且用于计算和数据的临时存储。暂存存储器118a-118n可以是任何适当的存储器结构,例如SRAM。
使用单独的嵌入,主机计算机使用处理单元116a-116n来计算用于它们相应的训练示例的嵌入层输出。处理单元116a-116n可以包括专用硬件组件来计算嵌入层输出。主机计算机可以包括图1中未描绘的附加处理组件,例如通用CPU。这些附加组件可以执行本说明书中描述的一些或全部技术来确定小批量大小。
分布式计算系统中的每个主机计算机可以向实现神经网络的剩余层的系统或子系统提供嵌入层输出。此类系统或子系统可以被实现在主机计算机上或单独的物理硬件上。如上文所述继续进行训练。更新嵌入层涉及:通过每个主机计算机基于从实现神经网络的剩余层的其他系统或子系统接收的梯度来更新存储在主机计算机上的查找表的分区中的值。
因为每个主机计算机具有有限量的暂存存储器来存储获得的嵌入,所以每个主机计算机可以一次只能获得有限数量的训练示例的嵌入。然而,训练示例使用的暂存存储器的量根据训练示例具有的特征数量而变化。例如,再次参考被配置成通过对用户的观看历史进行建模来为流传输服务的用户生成电影推荐的神经网络,一些用户具有比其他用户更大的观看历史。例如,第一用户的训练示例可以包括几百个特征(即,电影),而第二用户的训练示例可以只包括几十个特征。因为第一用户的训练示例具有更多的特征,所以主机计算机将不得不为第一训练示例获得并存储更多的嵌入,并且那些嵌入将在暂存存储器中占据更多的空间。作为另一示例,再次参考被配置成基于用英语书写的查询来生成搜索引擎结果的神经网络,一些查询具有比其他查询更多的单词。主机计算机将不得不为具有更多单词的查询获得并存储更多的嵌入,并且那些嵌入将在暂存存储器中占据比具有较少单词的查询的嵌入更多的空间。另外,神经网络可以考虑用户的查询历史,但是查询历史中的查询数量可以因用户而变化。具有较大查询数量的查询历史具有较多的嵌入,且因此在暂存存储器中占据较多的空间。相反,一些查询包括重复的单词。主机计算机仅需要获得用于任何重复单词的嵌入的单个副本,因此具有重复单词的查询将具有较少的嵌入,且因此在暂存存储器中占据较少的空间。类似地,单个小批量中的两个训练示例可能具有共同的特征。主机计算机仅需要获得用于训练示例之间重复的任何特征的嵌入的单个副本。
总而言之,基于训练示例的性质,主机计算机一次可以处理的训练示例的数量变化很大。具体地,在给定的一组训练示例中出现的独特特征越多,主机计算机必须从查找表中获得的嵌入就越多。较多的嵌入比较少的嵌入在暂存存储器中占据更多的空间。本说明书中描述的分布式计算系统可以优化主机计算机一次处理的训练示例的数量,即,每个小批量的大小,且因此每个批量的训练示例的小批量数量。具体地,每个主机计算机接收一批量的训练示例,将该批量训练示例分成最佳数量的小批量N,并且一次处理一个小批量,直到它为每个训练示例生成嵌入。将参考图2更详细地描述此方法。
图2是用于将一批量的神经网络训练示例划分成适当数量的小批量的示例性过程200的流程图。示例性过程200可以由分布式计算系统100来执行。
系统中的每个主机计算机接收相应批量的训练示例以用于在用于训练神经网络的训练过程的迭代期间进行处理(210)。每个批量的训练示例通常具有相同数量的训练示例。每个训练示例具有零个或多个特征。每个训练示例中的特征数量变化。
每个主机计算机计算其可以将所接收的相应批量的训练示例划分成的小批量的最小数量,使得它可以使用神经网络的嵌入层来处理每个小批量,而不会超出主机计算机的计算资源(220)。通常,主机计算机受到主机计算机上的暂存存储器(例如,SRAM)的量的限制,因为为了处理训练示例,主机计算机对于每个训练示例中的每个特征,从存储在分布式计算系统的主机计算机中的一个上的查找表的分区获得嵌入。主机计算机将所获得的嵌入存储在主机计算机上的暂存存储器中,为处理那些嵌入做准备。
计算主机计算机可以将其批量的训练示例划分成的最小数量的小批量涉及对于从上限到下限的M值,重复以下操作:(i)将主机计算机所接收的相应批量的训练示例拆分成M个小批量;以及(ii)对于每个小批量,确定对应于小批量中的每个训练示例中的每个输入特征的嵌入是否适合主机计算机上的暂存存储器。
下面的伪代码说明了这个过程:
在伪代码中,i是训练示例索引,并且len是该批量的训练示例中的训练示例总数。第一条件语句测试包括训练示例0到i-1的小批量是否适合主机计算机上的暂存存储器。如果是,主机计算机增加i。主机计算机重复这个过程,直到包括训练示例0到i-1的小批量不适合暂存存储器。如果主机计算机上适合暂存存储器的最后一个小批量没有训练示例,主机计算机将返回一个错误。否则,主机计算机输出适合暂存存储器的下一个最大小批量,即包括训练示例0到i-2的小批量。假设i等于7。这意味着包括训练示例0到5的小批量适合暂存存储器,但包括训练示例0到6的小批量不适合。然后主机计算机将该变量设为从6开始,并对包括训练示例6到i-1的小批量重复此过程。这个迭代过程的结果是许多小批量,每个都适合主机计算机上的暂存存储器。
在一些实现方式中,修改上述算法来测试非依序训练示例。例如,尽管包括训练示例0到6的小批量可能不适合主机计算机上的暂存存储器,但包括训练示例0到5和7的小批量可以适合。如上文提及,这是因为每个训练示例的大小变化。在一些情况下,以此方式修改算法可以减少所得小批量的数量。上述算法仅仅是说明性的,并且可以使用其他适当的算法。
确定特定训练示例集合(即特定小批量)是否适合主机计算机上的暂存存储器通常涉及:(i)例如,通过将每个训练示例中的特征数量乘以特征的大小来计算每个训练示例使用的暂存存储器的量,(ii)使步骤(i)的结果相加,以及(iii)确定总和是否超过主机计算机上的总可用暂存存储器。在计算特定训练示例使用的暂存存储器的量时,主机计算机考虑已经考虑的任何嵌入,例如来自先前训练示例的重复嵌入。在此示例中,所需的暂存存储器的量减少了对应于来自先前训练示例的重复嵌入的量。
主机计算机还考虑了它用于处理(例如,用于执行上述优化算法)的暂存存储器的量。
使用在前一步骤中计算的结果,系统确定主机计算机中的任一个可以将其相应批量的训练示例划分成的最大的最小数量的小批量(N)(230)。在一些实现方式中,主机计算机之一是指定的主控主机,并且该指定的主控主机进行确定。在此类实现方式中,每个其他主机计算机向指定的主控主机发送其计算出的最小数量的小批量,主控主机确定该些最小值中的最大值。指定的主控主机可以在主机计算机当中轮换,用于训练过程的不同迭代。这是有利的,因为系统可以同时计算多批量的训练示例的小批量的数量。在计算N后,指定的主控主机将值N广播给所有其他主机计算机。在一些其他实现方式中,每个主机将其计算的最小数量发送到分布式计算系统的单独组件,该组件确定该些最小值中的最大值。对于确定最大的最小数量的小批量的其他技术也是可能的。
每个主机计算机将主机计算机所接收的相应批量的训练示例划分成N个小批量(240)。在一些实现方式中,当主机计算机计算该主机计算机可以将相应批量的训练示例划分成的最小数量的小批量时,其还将该批量的训练示例划分成该数量的小批量。在此类实现方式中,将相应批量的训练示例划分成N个小批量涉及将已存在于主机计算机上的小批量重新划分或再划分成N个小批量。在一些情况下,N和主机计算机的最小数量的小批量可能相同。在其他情况下,N可能大于主机计算机的最小数量的小批量。在此类情况下,主机计算机可以生成没有训练示例的小批量。在其他实现方式中,主机计算机可以将一个小批量拆分成多个小批量,这可以涉及将小批量拆分成具有相同数量训练示例的两个小批量。其他的拆分方式是可能的。
最后,每个主机计算机使用神经网络的嵌入层来处理N个小批量(250)。每个主机计算机一次仅处理一个小批量。将参考图3更详细地描述此过程。
图3是用于处理小批量的示例性过程300的流程图。过程300可以由分布式计算系统100来执行。
分布式计算系统的主机计算机各自接收指令来执行一批量的训练示例(310)。通常,每个批量中的训练示例的数量是相同的,但每个批量中的训练示例是不同的。
主机计算机执行参考图2描述的过程,即,每个主机计算机将其相应批量的训练示例划分成N个小批量(320)。主机计算机并行处理这些小批量。然而,由于先前描述的计算约束,特定主机计算机一次仅处理其N个小批量中的一个。
由主机计算机处理小批量涉及,对于小批量中的每个训练示例中的每个输入特征,从可训练查找表获得对应于输入特征的嵌入(330)。可训练的查找表分布在主机计算机当中,因此获得嵌入包括向其他主机计算机发送查找请求。查找请求包括所需嵌入的索引。主机计算机将所获得的嵌入存储在主机计算机上的暂存存储器中。
主机计算机处理该些嵌入以生成用于每个训练示例的嵌入层输出(340)。生成用于特定训练示例的嵌入层输出涉及将特定训练示例的每个特征的嵌入相加或连接在一起。在美国专利号9,898,441中更详细地描述了特定技术,所述专利通过引用的方式并入本文中。
主机计算机将用于每个训练示例的嵌入层输出提供给被配置成实现神经网络的剩余层的系统(350)。此类系统可以被实现在主机计算机上或单独的物理硬件上。
在嵌入被更新作为用于训练神经网络的训练过程的一部分的一些情况下,主机计算机从其他系统接收反向传播数据。主机计算机使用反向传播数据来更新存储在分布式查找表中的嵌入(360)。具体地,使用该批量的训练示例的反向传播数据,每个主机计算机可以计算损失相对于主机计算机存储的每个嵌入的每个维度的当前值的梯度。为了减少每个维度的损失贡献,主机计算机可以通过梯度的比率来调整维度的值。这被称为随机梯度下降。本领域已知的其他适当方法可以用于更新这些嵌入。这完成了一次训练的迭代。通过简单地省略步骤360,示例性过程300还可以在推理期间用于处理批量的输入。
本说明书中描述的主题和功能操作的实施例可以实现在数字电子电路中、有形体现的计算机软件或固件中、计算机硬件中(包括本说明书中公开的结构及其结构等效物)、或其中的一个或多个的组合中。本说明书中描述的主题的实施例可以实现为一或多个计算机程序(即,计算机程序指令的一个或多个模块),其编码于有形非暂时性存储介质上用于由数据处理设备执行或控制数据处理设备的操作。计算机存储介质可以是机器可读存储装置、机器可读存储衬底、随机或串行存取存储器装置、或其中的一个或多个的组合。可替代地或另外地,程序指令可以编码在人工产生的传播信号上,例如机器产生的电气、光学或电磁信号,产生所述信号以对信息进行编码用于传输到合适的接收器设备用于由数据处理设备来执行。
术语“数据处理设备”是指数据处理硬件,且包括所有种类的用于处理数据的设备、装置和机器,例如包括可编程处理器、计算机或多个处理器或计算机。所述设备还可以是或还包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,所述设备可以任选地包括创建用于计算机程序的执行环境的代码,例如构成处理器固件、协议堆栈、数据库管理系统、操作系统或其中的一个或多个的组合的代码。
计算机程序(还可以称作或描述为程序、软件、软件应用程序、app、模块、软件模块、脚本或代码)可以通过任何形式的编程语言来编写,包括编译或解释语言、或声明性或过程式语言,并且其可以任何形式来部署,包括作为独立程序或作为模块、组件、子例程或适于在计算环境中使用的其他单元。程序可以(但无需)对应于文件系统中的文件。程序可以存储在保持其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于讨论中的程序的单个文件中,或存储在多个协调文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中。计算机程序可以经部署以执行在一个计算机上或多个计算机上,所述计算机位于一个站点处或跨越多个站点而分布且通过数据通信网络而互连。
对于被配置成执行特定操作或动作的一个或多个计算机的系统意味着:该系统已在其上安装软件、固件、硬件或其组合,在操作中使得该系统执行操作或动作。对于被配置成执行特定操作或动作的一个或多个计算机程序意味着:所述一个或多个程序包括在被数据处理设备执行时使得所述设备执行操作或动作的指令。
本说明书中描述的过程和逻辑流可以由执行一个或多个计算机程序的一个或多个可编程计算机来执行,从而通过对输入数据进行操作并产生输出来执行功能。过程和逻辑流还可以通过专用逻辑电路(例如,FPGA或ASIC)或者通过专用逻辑电路与一个或多个编程计算机的组合来执行。
适于执行计算机程序的计算机可以基于通用或专用微处理器或两者、或任何其他种类的中央处理单元。通常,中央处理单元将接收来自只读存储器或随机存取存储器或两者的指令和数据。计算机的基本元件是用于执行或实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器装置。中央处理单元和存储器可以通过专用逻辑电路来补充或并入专用逻辑电路中。通常,计算机还将包括用于存储数据的一个或多个大容量存储装置(例如,磁盘、磁光盘或光盘),或者以操作方式耦合以接收来自所述一个或多个大容量存储装置的数据或传递数据到所述一个或多个大容量存储装置或两者都有。然而,计算机无需具有此类装置。此外,计算机可以嵌入于另一装置中,例如移动电话、个人数字助手(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储装置,例如通用串行总线(USB)快闪驱动器等。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,例如包括:半导体存储器装置,例如EPROM、EEPROM和快闪存储器装置;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM光盘。
为了提供与用户的交互,本说明书中描述的标的物的实施例可以在计算机上实现,所述计算机具有用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器),以及用户可以向计算机提供输入的键盘和指向装置(例如鼠标、轨迹球或存在敏感显示器或其他表面)。也可以使用其他种类的装置来提供与用户的交互;例如,提供到用户的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或触觉反馈;且来自用户的输入可以任何形式来接收,包括声学、语音或触觉输入。此外,计算机可以通过向用户使用的装置发送文档并从其接收文档来与用户进行交互;例如,通过响应于从web浏览器接收的请求,将网页发送到用户装置上的web浏览器。而且,计算机可以通过向个人装置(例如,智能电话)发送文本消息或其他形式的消息,运行消息传递应用程序,并接收从用户返回的响应消息来与用户进行交互。
虽然本说明书包括许多特定实现方式细节,当不应将这些细节理解为对任何发明的范围或对要求保护的内容范围的限制,而是作为可以对特定发明的特定实施例特定的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征还可以分别实现于多个实施例中或任何合适的子组合中。此外,尽管上文可以将特征描述为在某些组合中起作用且甚至最初如此要求,但在一些情况下,来自所要求组合的一个或多个特征可以从所述组合删除,且所要求组合可以涉及子组合或子组合的变体。
类似地,虽然在图中按特定顺序来描绘操作,但这不应被理解为要求按所展示的特定顺序或按依次顺序来执行此类操作,或执行所有所说明操作,从而实现所需要的结果。在某些情况下,多任务处理和平行处理可能是有利的。此外,上述实施例中各种系统模块和组件的分离不应理解为要求所有实施例中的此类分离,且应理解,一般可以将所描述程序组件和系统一起集成在单个软件产品中或封装在多个软件产品中。
已描述所述标的物的特定实施例。其他实施例是在所附权利要求的范围内。例如,权利要求书中所叙述的动作可以按不同顺序执行且仍实现所需要的结果。作为一个示例,附图中所描绘的过程未必要求所展示的特定顺序或依次顺序,以实现所需的结果。在某些情况下,多任务处理和并行处理可能是有利的。
Claims (20)
1.一种包括多个主机计算机的系统,所述多个主机计算机被配置成在神经网络的训练期间处理所述神经网络的嵌入层,其中所述系统被配置成执行操作,所述操作包括:
由每个主机计算机接收相应批量的训练示例用于在训练所述神经网络的训练过程的迭代期间进行处理,每个训练示例具有零个或更多个特征,并且其中,由所述主机计算机接收的所述相应批量中的至少两个不同的训练示例具有不同数量的特征;
基于由所述主机计算机接收的相应批量中的训练示例中的每一个中的特征的数目,计算所述主机计算机能够将所述相应批量的训练示例划分成的最小数量的小批量,使得所述主机计算机能够使用所述神经网络的所述嵌入层来处理每个小批量,而不会超出所述主机计算机上的可用计算资源,其中,作为所述至少两个不同的训练示例具有不同数量的特征的结果,所述主机计算机中的至少两个主机计算机计算不同的最小数量的小批量;
根据所述最小数量的小批量,确定每个主机计算机的所计算的最小数量的小批量当中的最大的最小数量的小批量N;
从由所述主机计算机所接收的所述相应批量的训练示例中生成N个小批量;以及
由每个主机计算机使用所述神经网络的所述嵌入层来处理所述训练示例的所述N个小批量。
2.根据权利要求1所述的系统,其中,使用所述神经网络的所述嵌入层来处理相应小批量的训练示例包括:
对于所述小批量中的每个训练示例中的每个输入特征,从可训练的查找表获得对应于所述输入特征的向量;以及
对于每个训练示例,处理所获得的向量以生成向量表示。
3.根据权利要求2所述的系统,其中,所述可训练的查找表分布在所述主机计算机中。
4.根据权利要求3所述的系统,其中,计算所述主机计算机能够将所述相应批量的训练示例划分成的最小数量的小批量M包括对于从上限开始的M值重复:
将由所述主机计算机所接收的所述相应批量的训练示例拆分成M个小批量;
对于所述M个小批量中的每个小批量,确定与所述小批量中的每个训练示例中的每个输入特征相对应的所述向量是否适合所述主机计算机上的存储器;以及
直到所述M个小批量中的任一个小批量不适合所述主机计算机上的存储器,递减M。
5.根据权利要求1所述的系统,其中,所述操作还包括:
将由所述主机计算机所接收的所述相应批量的训练示例划分成所述主机计算机的所计算的最小数量的小批量;以及
如果N大于所述主机计算机的所计算的最小数量的小批量,则将一个小批量重新划分成多个小批量。
6.根据权利要求5所述的系统,其中,将一个小批量拆分成多个小批量包括生成没有训练示例的小批量。
7.根据权利要求1所述的系统,其中,所述主机计算机中的一个是指定的主控主机,其中,所述指定的主控主机被配置成执行包括以下的操作:
从每个主机计算机接收所述主机计算机能够将所述相应批量的训练示例划分成的所述最小数量的小批量;
确定任何主机计算机能够将其相应批量的训练示例划分成的所述最大的最小数量的小批量N;以及
向每个主机计算机发送指定N的数据。
8.根据权利要求7所述的系统,其中,所述指定的主控主机在所述主机计算机当中轮换以用于所述训练过程的不同迭代。
9.一种由多个主机计算机执行的方法,所述多个主机计算机被配置成在神经网络的训练期间处理所述神经网络的嵌入层,所述方法包括:
由每个主机计算机接收相应批量的训练示例以用于在训练所述神经网络的训练过程的迭代期间进行处理,每个训练示例具有零个或更多个特征,并且其中,由所述主机计算机接收的相应批量中的至少两个不同的训练示例具有不同数量的特征;
基于由所述主机计算机接收的相应批量中的训练示例中的每一个中的特征的数目,计算所述主机计算机能够将所述相应批量的训练示例划分成的最小数量的小批量,使得所述主机计算机能够使用所述神经网络的所述嵌入层来处理每个小批量,而不会超出所述主机计算机上的可用计算资源,其中,作为所述至少两个不同的训练示例具有不同数量的特征的结果,所述主机计算机中的至少两个主机计算机计算不同的最小数量的小批量;
根据所述最小数量的小批量,确定每个主机计算机的所计算的最小数量的小批量当中的最大的最小数量的小批量N;
从由所述主机计算机所接收的所述相应批量的训练示例中生成N个小批量;以及
由每个主机计算机使用所述神经网络的所述嵌入层来处理所述训练示例的所述N个小批量。
10.根据权利要求9所述的方法,其中,使用所述神经网络的所述嵌入层来处理相应小批量的训练示例包括:
对于所述小批量中的每个训练示例中的每个输入特征,从可训练的查找表获得对应于所述输入特征的向量;以及
对于每个训练示例,处理所获得的向量以生成向量表示。
11.根据权利要求10所述的方法,其中,所述可训练的查找表分布在所述主机计算机中。
12.根据权利要求11所述的方法,其中,计算所述主机计算机能够将所述相应批量的训练示例划分成的最小数量的小批量M包括对于从上限开始的M值重复:
将由所述主机计算机所接收的所述相应批量的训练示例拆分成M个小批量;
对于所述M个小批量中的每个小批量,确定与所述小批量中的每个训练示例中的每个输入特征相对应的所述向量是否适合所述主机计算机上的存储器;以及
直到所述M个小批量中的任一个小批量不适合所述主机计算机上的存储器,递减M。
13.根据权利要求9所述的方法,还包括:
将由所述主机计算机所接收的所述相应批量的训练示例划分成所述主机计算机的所计算的最小数量的小批量;以及
如果N大于所述主机计算机的所计算的最小数量的小批量,则将一个小批量重新划分成多个小批量。
14.根据权利要求13所述的方法,其中,将一个小批量拆分成多个小批量包括生成没有训练示例的小批量。
15.根据权利要求9所述的方法,其中,所述主机计算机中的一个是指定的主控主机,其中,所述指定的主控主机被配置成执行包括以下的操作:
从每个主机计算机接收所述主机计算机能够将所述相应批量的训练示例划分成的所述最小数量的小批量;
确定任何主机计算机能够将其相应批量的训练示例划分成的所述最大的最小数量的小批量N;以及
向每个主机计算机发送指定N的数据。
16.根据权利要求15所述的方法,其中,所述指定的主控主机在所述主机计算机当中轮换以用于所述训练过程的不同迭代。
17.一种存储指令的一个或多个非暂时性计算机可读存储介质,所述指令在由包括被配置成在神经网络的训练期间处理所述神经网络的嵌入层的多个主机计算机的系统的处理器执行时使得所述系统执行操作,所述操作包括:
由每个主机计算机接收相应批量的训练示例以用于在训练所述神经网络的训练过程的迭代期间进行处理,每个训练示例具有零个或更多个特征,并且其中,由所述主机计算机接收的相应批量中的至少两个不同的训练示例具有不同数量的特征;
基于由所述主机计算机接收的相应批量中的训练示例中的每一个中的特征的数目,计算所述主机计算机能够将所述相应批量的训练示例划分成的最小数量的小批量,使得所述主机计算机能够使用所述神经网络的所述嵌入层来处理每个小批量,而不会超出所述主机计算机上的可用计算资源,其中,作为所述至少两个不同的训练示例具有不同数量的特征的结果,所述主机计算机中的至少两个主机计算机计算不同的最小数量的小批量;
根据所述最小数量的小批量,确定每个主机计算机的所计算的最小数量的小批量当中的最大的最小数量的小批量N;
从由所述主机计算机所接收的所述相应批量的训练示例中生成N个小批量;以及
由每个主机计算机使用所述神经网络的所述嵌入层来处理所述训练示例的所述N个小批量。
18.根据权利要求17所述的计算机可读存储介质,其中,使用所述神经网络的所述嵌入层来处理相应小批量的训练示例包括:
对于所述小批量中的每个训练示例中的每个输入特征,从可训练的查找表获得对应于所述输入特征的向量;以及
对于每个训练示例,处理所获得的向量以生成向量表示。
19.根据权利要求18所述的计算机可读存储介质,其中,所述可训练的查找表分布在所述主机计算机中。
20.根据权利要求19所述的计算机可读存储介质,其中,计算所述主机计算机能够将所述相应批量的训练示例划分成的最小数量的小批量M包括对于从上限开始的M值重复:
将由所述主机计算机所接收的所述相应批量的训练示例拆分成M个小批量;
对于所述M个小批量中的每个小批量,确定与所述小批量中的每个训练示例中的每个输入特征相对应的所述向量是否适合所述主机计算机上的存储器;以及
直到所述M个小批量中的任一个小批量不适合所述主机计算机上的存储器,递减M。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/246,371 | 2019-01-11 | ||
US16/246,371 US10789510B2 (en) | 2019-01-11 | 2019-01-11 | Dynamic minibatch sizes |
PCT/US2019/066626 WO2020146098A1 (en) | 2019-01-11 | 2019-12-16 | Dynamic minibatch sizes |
CN201980058339.8A CN112655005B (zh) | 2019-01-11 | 2019-12-16 | 动态小批量大小 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980058339.8A Division CN112655005B (zh) | 2019-01-11 | 2019-12-16 | 动态小批量大小 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115329140A true CN115329140A (zh) | 2022-11-11 |
Family
ID=69174605
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210852423.0A Pending CN115329140A (zh) | 2019-01-11 | 2019-12-16 | 动态小批量大小 |
CN201980058339.8A Active CN112655005B (zh) | 2019-01-11 | 2019-12-16 | 动态小批量大小 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980058339.8A Active CN112655005B (zh) | 2019-01-11 | 2019-12-16 | 动态小批量大小 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10789510B2 (zh) |
EP (1) | EP3827376A1 (zh) |
CN (2) | CN115329140A (zh) |
TW (2) | TWI740338B (zh) |
WO (1) | WO2020146098A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11354573B2 (en) * | 2019-03-25 | 2022-06-07 | International Business Machines Corporation | Dynamically resizing minibatch in neural network execution |
WO2023195011A1 (en) * | 2022-04-04 | 2023-10-12 | R-Stealth Ltd. | System and method for model training in decentralized computing environments |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5006472B2 (ja) * | 2009-12-04 | 2012-08-22 | 隆敏 柳瀬 | 表検索装置、表検索方法、及び、表検索システム |
US8904149B2 (en) | 2010-06-24 | 2014-12-02 | Microsoft Corporation | Parallelization of online learning algorithms |
JP6588449B2 (ja) | 2014-01-31 | 2019-10-09 | グーグル エルエルシー | 文書のベクトル表現の生成 |
US20150324686A1 (en) | 2014-05-12 | 2015-11-12 | Qualcomm Incorporated | Distributed model learning |
ES2738319T3 (es) | 2014-09-12 | 2020-01-21 | Microsoft Technology Licensing Llc | Sistema informático para entrenar redes neuronales |
WO2016123409A1 (en) * | 2015-01-28 | 2016-08-04 | Google Inc. | Batch normalization layers |
US10083395B2 (en) * | 2015-05-21 | 2018-09-25 | Google Llc | Batch processing in a neural network processor |
US10552454B2 (en) * | 2015-11-13 | 2020-02-04 | Sap Se | Efficient partitioning of related database tables |
US9898441B2 (en) | 2016-02-05 | 2018-02-20 | Google Llc | Matrix processing apparatus |
JP6758406B2 (ja) * | 2016-04-13 | 2020-09-23 | グーグル エルエルシー | ワイドアンドディープマシンラーニングモデル |
CN106127702B (zh) * | 2016-06-17 | 2018-08-14 | 兰州理工大学 | 一种基于深度学习的图像去雾方法 |
US11394426B2 (en) * | 2016-06-22 | 2022-07-19 | Korrus, Inc. | Intelligent modules for intelligent networks |
JP2018018451A (ja) * | 2016-07-29 | 2018-02-01 | 富士通株式会社 | 機械学習方法、機械学習プログラム及び情報処理装置 |
WO2018126325A1 (en) * | 2017-01-06 | 2018-07-12 | The Toronto-Dominion Bank | Learning document embeddings with convolutional neural network architectures |
US10915817B2 (en) * | 2017-01-23 | 2021-02-09 | Fotonation Limited | Method of training a neural network |
US11144828B2 (en) * | 2017-06-09 | 2021-10-12 | Htc Corporation | Training task optimization system, training task optimization method and non-transitory computer readable medium for operating the same |
TWI636404B (zh) * | 2017-07-31 | 2018-09-21 | 財團法人工業技術研究院 | 深度神經網路、使用深度神經網路的方法與電腦可讀媒體 |
-
2019
- 2019-01-11 US US16/246,371 patent/US10789510B2/en active Active
- 2019-12-16 CN CN202210852423.0A patent/CN115329140A/zh active Pending
- 2019-12-16 WO PCT/US2019/066626 patent/WO2020146098A1/en unknown
- 2019-12-16 CN CN201980058339.8A patent/CN112655005B/zh active Active
- 2019-12-16 EP EP19839215.1A patent/EP3827376A1/en active Pending
- 2019-12-31 TW TW108148515A patent/TWI740338B/zh active
- 2019-12-31 TW TW110131206A patent/TWI758223B/zh active
-
2020
- 2020-09-28 US US17/034,338 patent/US20210019570A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN112655005B (zh) | 2022-07-29 |
TW202026954A (zh) | 2020-07-16 |
TWI758223B (zh) | 2022-03-11 |
US20210019570A1 (en) | 2021-01-21 |
CN112655005A (zh) | 2021-04-13 |
US20200226424A1 (en) | 2020-07-16 |
WO2020146098A1 (en) | 2020-07-16 |
US10789510B2 (en) | 2020-09-29 |
TWI740338B (zh) | 2021-09-21 |
TW202145078A (zh) | 2021-12-01 |
EP3827376A1 (en) | 2021-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11687832B1 (en) | Training a model using parameter server shards | |
US20230252327A1 (en) | Neural architecture search for convolutional neural networks | |
US20210232929A1 (en) | Neural architecture search | |
US20240127058A1 (en) | Training neural networks using priority queues | |
WO2018201151A1 (en) | Neural network optimizer search | |
WO2019099193A1 (en) | Learning neural network structure | |
CN111652378B (zh) | 学习来选择类别特征的词汇 | |
WO2018093935A1 (en) | Training neural networks using a clustering loss | |
US11948086B2 (en) | Accelerated embedding layer computations | |
WO2021195095A1 (en) | Neural architecture search with weight sharing | |
CN112655005B (zh) | 动态小批量大小 | |
EP4295277A2 (en) | Full-stack hardware accelerator search | |
EP4182850A1 (en) | Hardware-optimized neural architecture search | |
WO2021062219A1 (en) | Clustering data using neural networks based on normalized cuts | |
JP2024504179A (ja) | 人工知能推論モデルを軽量化する方法およびシステム | |
CN109145107A (zh) | 基于卷积神经网络的主题提取方法、装置、介质和设备 | |
CN118265983A (zh) | 存储器优化的对比学习 | |
US12001484B2 (en) | Low latency multi-constraint ranking of content items | |
US20240220768A1 (en) | Optimizing off-chip memory accesses on a neural network hardware accelerator |
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: 40082723 Country of ref document: HK |