动态小批量大小制造技术

技术编号:35564436 阅读:12 留言:0更新日期:2022-11-12 15:47
本发明专利技术涉及动态小批量大小。用于在神经网络训练期间使用动态小批量大小的方法、系统和设备,包括编码在计算机存储介质上的计算机程序。所述方法中的一个包括:由多个主机计算机中的每个接收相应批量的训练示例,每个训练示例具有零个或多个特征;计算所述主机计算机可以将相应批量的训练示例划分成的最小数量的小批量,使得所述主机计算机可以使用神经网络的嵌入层来处理每个小批量而不超过可用计算资源;确定任何主机计算机可以将其相应批量的训练示例划分成的最大的最小数量的小批量(N);从所述主机计算机所接收的相应批量的训练示例中生成N个小批量;以及由每个主机计算机使用嵌入层来处理所述N个小批量。机使用嵌入层来处理所述N个小批量。机使用嵌入层来处理所述N个小批量。

【技术实现步骤摘要】
动态小批量大小
[0001]分案说明
[0002]本申请属于申请日为2019年12月16日的中国专利技术专利申请No.201980058339.8的分案申请。

技术介绍

[0003]本说明书涉及人工神经网络。
[0004]神经网络是采用多个操作层来从一个或多个输入预测一个或多个输出的机器学习模型。神经网络通常包括位于输入层和输出层之间的一个或多个隐藏层。每个隐藏层的输出用作下一层(例如,下一隐藏层或输出层)的输入。
[0005]神经网络的每个层指定了要对该层的输入执行的一个或多个变换操作。一些神经网络层包括被称为神经元的单元。每个神经元接收一个或多个输入,并生成由其他神经网络层接收的输出。通常,每个神经元从一个或多个其他神经元接收输入,并且每个神经元向一个或多个其他神经元提供输出。
[0006]每个层使用该层的一组参数的当前值生成一个或多个输出。训练神经网络涉及连续地对输入执行正向传递,计算梯度值,以及更新每个层的参数集的当前值。一旦神经网络被训练,就可以使用最终的参数集来进行预测。
[0007]一些神经网络具有作为嵌入层的隐藏层。通常,嵌入层将稀疏神经网络输入(即,相对于总数特征仅具有少量具有非零值的特征的神经网络输入)变换成称作嵌入的低维向量。

技术实现思路

[0008]本说明书描述一种可以在神经网络的训练期间处理所述神经网络的嵌入层的分布式计算系统。系统包括各自存储可训练的嵌入查找表的分区的主机计算机。为了处理特定训练示例,对于训练示例的每个特征,主机计算机从存储在相应主机计算机上的查找表的相应一个分区获得嵌入。获得嵌入涉及向存储嵌入所属的查找表的分区的主机计算机发送查找请求。在获得每个特征的嵌入之后,主机计算机处理该些嵌入以生成用于训练示例的嵌入层输出。
[0009]主机计算机一次处理多个训练示例。具体地,每个主机计算机接收相应批量的训练示例以用于在训练的迭代期间进行处理。通常,每个批量的训练示例具有相同数量的训练示例,并且每个训练示例具有一个或多个特征。每个主机计算机计算所述主机计算机可以将其批量的训练示例划分成的最小数量的嵌入小批量,使得主机计算机可以使用神经网络的嵌入层来处理每个嵌入小批量,而不会超出主机计算机上的可用计算资源。在本说明书中,嵌入小批量将被简称为“小批量”。系统确定任何主机计算机可以将其批量的训练示例划分成的最大的最小数量的小批量(N)。每个主机计算机将其批量的训练示例划分成N个小批量,并且使用神经网络的嵌入层来处理N个小批量。
[0010]分布式计算系统在几种约束下进行操作。第一,每个主机计算机通常必须处理与
每个其他主机计算机相同数量的小批量。这是因为(i)主机计算机接收同步并行指令,以及(ii)主机计算机必须在训练的每个迭代期间相互交换嵌入。第二,主机计算机各自具有有限量的存储从其他主机计算机获得的嵌入的存储器。更具体地,主机计算机是用于处理神经网络的专用计算机,只有少量暂存存储器来存储嵌入,而传统的CPU则有大量的主存储器或高速缓冲存储器。暂存存储器是高速内部存储器,用于临时存储计算、数据和其他正在进行的工作。因此,主机计算机一次可以获得的嵌入数量是有限的,这又限制了最大的小批量大小。第三,每个训练示例中的特征数量以及存储每个训练示例的嵌入所需的暂存存储器的量变化。
[0011]在一些实现方式中,分布式计算系统被配置成执行包括以下各项的操作:由多个主机计算机中的每个接收相应批量的训练示例,每个训练示例具有零个或多个特征;由每个主机计算机计算所述主机计算机可以将相应批量的训练示例划分成的最小数量的小批量,使得所述主机计算机可以使用神经网络的嵌入层来处理每个小批量而不超过可用计算资源;基于所计算的最小数量的小批量来确定任何主机计算机可以将其相应批量的训练示例划分成的最大的最小数量的小批量(N);由每个主机计算机从所述主机计算机所接收的相应批量的训练示例中产生N个小批量;以及由每个主机计算机使用嵌入层来处理所述N个小批量。
[0012]考虑到这些约束,本说明书中描述的主题可以实现在特定实施例中以便实现以下优点中的一个或多个。将一批量的训练示例划分成大量的小批量,增加了每个主机计算机必须从其他主机计算机获得嵌入的次数,从而产生了可避免的读/写等待时间。另一方面,由于每个主机计算机上的可用资源,例如暂存存储器,将一批量的训练示例划分成具有大量训练示例的少量小批量可能是不可能的。本说明书中描述的系统在训练的每个迭代之前动态调整小批量的数量。具体地,系统计算任何主机计算机可以将其相应批量的训练示例划分成的最大的最小数量的小批量(N),而不会超出任何主机计算机上的可用计算资源。每个主机计算机然后将其批量的训练示例划分成N个小批量。此过程最小化了在训练的每个迭代中每个组唯一的训练示例被划分成的小批量的数量。这又减少了与训练的每个迭代相关联的等待时间和开销,这减少了训练过程消耗的总训练时间和计算资源量,例如处理能力。
[0013]在附图和以下描述中陈述本说明书中的主题的一或多个实施例的细节。主题的其他特征、方面和优点将从具体实施方式、附图和权利要求变得显而易见。
附图说明
[0014]图1是示例性分布式计算系统的图。
[0015]图2是用于将批量的神经网络训练示例划分成小批量的示例性过程的流程图。
[0016]图3是用于处理小批量的示例性过程的流程图。
[0017]各图中的相同附图标记和名称指示相同的元件。
具体实施方式
[0018]图1是示例性分布式计算系统100的图。分布式计算系统100被配置成处理神经网络的嵌入层。
[0019]本说明书结合系统、装置和计算机程序组件使用术语“被配置成”。对于被配置成执行特定操作或动作的一个或多个计算机的系统意味着:该系统已在其上安装软件、固件、硬件或其组合,在操作中使得该系统执行所述操作或动作。
[0020]嵌入层是将稀疏的神经网络输入变换为嵌入的神经网络层。嵌入是输入的密集多维向量表示。直观地说,特定嵌入的每个维度的值编码了嵌入所代表的输入的不同特性。
[0021]通常,嵌入层通过以下操作来训练:完成对嵌入层所属的整个神经网络的前向传递;确定神经网络的实际输出和给定输入的预期输出之间是否存在差异;以及例如通过使用常规的反向传播技术或本领域中已知的类似技术来更新神经网络的权重,包括嵌入层的权重。换句话说,可以在神经网络的正常训练过程期间训练嵌入层。
[0022]嵌入层可以简化为查找表,该查找表存储神经网络输入的每个潜在特征的嵌入。例如,如果特定神经网络被配置成通过对用户的观看历史进行建模来为流传输服务的用户生成电影推荐,则神经网络的查找表可以存储用于流传输服务上可用的每个电影的单独嵌入。作为另一示例,如果特定神经网络被配置成基于用英语书写的查询来生成搜索引擎结果,则神经网络的查找表可以存储用于英语中的每个单词的单独嵌入。
[0023]每个特征由不同的索引表示,例如由不同的整数表示。特征可以通过索引布置在查找表中。使用本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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个小批量;以及由每个主机计算机使用所述神...

【专利技术属性】
技术研发人员:杰里迈亚
申请(专利权)人:谷歌有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1