一种深度学习分布式框架用的数据交换方法与装置转让专利

申请号 : CN201811130223.4

文献号 : CN109343978B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵旭东景璐

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本发明公开了一种深度学习分布式框架用的数据交换方法与装置,包括:使每个计算单元持续生成待交换数据;将待交换数据存入计算单元的缓冲区;使用比例因子压缩待交换数据的精度范围;根据计算单元的参数确定交换阈值;当缓冲区内存储的待交换数据达到交换阈值时,交换待交换数据。本发明的技术方案能够在不同计算单元或不同类型的计算单元之间按照需要交换数据,在保证数据交换时限的前提下充分利用缓存,提高数据通信性能和效率,使云计算环境下大规模数据训练的性能表现最大化。

权利要求 :

1.一种深度学习分布式框架用的数据交换方法,其特征在于,包括以下步骤:使每个计算单元持续生成待交换数据;

将所述待交换数据存入所述计算单元的缓冲区;

使用比例因子压缩所述待交换数据的精度范围;

根据处理器数量、计算模型层数量、反向传播平均耗时、通信延迟中至少之一来确定交换阈值,并且所述交换阈值 其中P为处理器数量,L为计算模型层数量,Eavg,b为第反向传播过程平均耗时,α为通信延迟;

当所述缓冲区内存储的所述待交换数据达到所述交换阈值时,交换所述待交换数据。

2.根据权利要求1所述的方法,其特征在于,所述待交换数据为梯度参数。

3.根据权利要求1所述的方法,其特征在于,所述计算单元的参数包括以下至少之一:处理器数量、计算模型层数量、反向传播平均耗时、通信延迟。

4.根据权利要求3所述的方法,其特征在于,所述通信延迟由单次通信的信息量决定。

5.根据权利要求1所述的方法,其特征在于,使用所述比例因子压缩所述待交换数据的精度范围包括:使用所述比例因子正向处理所述待交换数据;

通过修改数据类型来压缩处理过的所述待交换数据的精度。

6.根据权利要求5所述的方法,其特征在于,在所述待交换数据被交换之后,还执行以下步骤:通过修改数据类型来解压缩处理过的所述待交换数据的精度;

使用所述比例因子对处理过的所述待交换数据进行逆向处理。

7.根据权利要求5所述的方法,其特征在于,所述比例因子由所述待交换数据的取值范围与其数据类型的精度范围之比决定。

8.一种深度学习分布式框架用的数据交换装置,其特征在于,包括:存储器,存储有可运行的程序代码;

至少一个处理器,在运行所述存储器存储的所述程序代码时执行如权利要求1-7中任意一项所述的数据交换方法。

9.一种计算系统,其特征在于,包括多个计算单元和如权利要求8所述的数据交换装置。

说明书 :

一种深度学习分布式框架用的数据交换方法与装置

技术领域

[0001] 本发明涉及计算机领域,并且更具体地,特别是涉及一种深度学习分布式框架用的数据交换方法与装置。

背景技术

[0002] 在现有的深度学习模型中,模型为了获取更高的计算精度而变得越来越复杂。随着模型变得复杂,隐藏层的个数也增加到了多达152层,计算量相对于早期的深度学习模型也增加了许多。除了模型计算复杂度的增加以外,训练集中的样本数也呈现爆炸式的增长。如何能够快速的对大规模的数据进行训练并及时获得模型训练的参数结果,是目前所有的深度学习模型分布式算法设计过程中急需解决的问题之一。
[0003] 现有的深度学习数学模型基本上都可以实现在多GPU上的计算,但是扩展到多机多卡的情况时,根据数学模型算法的需要,不同GPU的计算结果需要进行规约处理,并将规约后的结果广播给所有GPU。
[0004] 现有技术中已经存在TensorFlow标准分布式方法Parameter Server和Uber开发的开源软件Horovod,Horovod为TensorFlow分布式框架提供了高性能ring-allreduce接口。然而,现有技术的参数服务器的分布式框架易造成网络堵塞、跨机通信亲和性低、并且难以编写;另外,由于深度神经网络模型训练过程中需要频繁的对少量数据进行通信操作,无法充分利用带宽的性能,导致不同GPU之间的数据通信性能和效率很低。
[0005] 针对现有技术中计算单元之间的数据通信性能和效率很低的问题,目前尚未有有效的解决方案。

发明内容

[0006] 有鉴于此,本发明实施例的目的在于提出一种深度学习分布式框架用的数据交换方法与装置,能够在不同计算单元或不同类型的计算单元之间按照需要交换数据,在保证数据交换时限的前提下充分利用缓存,提高数据通信性能和效率,使云计算环境下大规模数据训练的性能表现最大化。
[0007] 基于上述目的,本发明实施例的一方面提供了一种深度学习分布式框架用的数据交换方法,包括以下步骤:
[0008] 使每个计算单元持续生成待交换数据;
[0009] 将待交换数据存入计算单元的缓冲区;
[0010] 使用比例因子压缩待交换数据的精度范围;
[0011] 根据计算单元的参数确定交换阈值;
[0012] 当缓冲区内存储的待交换数据达到交换阈值时,交换待交换数据。
[0013] 在一些实施方式中,待交换数据为梯度参数。
[0014] 在一些实施方式中,计算单元的参数包括以下至少之一:处理器数量、计算模型层数量、反向传播平均耗时、通信延迟;根据计算单元的参数确定交换阈值为:根据处理器数量、计算模型层数量、反向传播平均耗时、通信延迟中至少之一来确定交换阈值。
[0015] 在一些实施方式中,通信延迟由单次通信的信息量决定。
[0016] 在一些实施方式中,交换阈值 其中P为处理器数量,L为计算模型层数量,Eavg,b为第反向传播过程平均耗时,α为通信延迟。
[0017] 在一些实施方式中,使用比例因子压缩待交换数据的精度范围包括:
[0018] 使用比例因子正向处理待交换数据;
[0019] 通过修改数据类型来压缩处理过的待交换数据的精度。
[0020] 在一些实施方式中,在待交换数据被交换之后,还执行以下步骤:
[0021] 通过修改数据类型来解压缩处理过的待交换数据的精度;
[0022] 使用比例因子对处理过的待交换数据进行逆向处理。
[0023] 在一些实施方式中,比例因子由待交换数据的取值范围与其数据类型的精度范围之比决定。
[0024] 本发明实施例的另一方面,还提供了一种深度学习分布式框架用的数据交换装置,包括:
[0025] 存储器,存储有可运行的程序代码;
[0026] 至少一个处理器,在运行存储器存储的程序代码时执行上述的数据交换方法。
[0027] 本发明实施例的另一方面,还提供了一种计算系统,包括多个计算单元和上述的数据交换装置。
[0028] 本发明具有以下有益技术效果:本发明实施例提供的深度学习分布式框架用的数据交换方法与装置,通过使每个计算单元持续生成待交换数据,将待交换数据存入计算单元的缓冲区,使用比例因子压缩待交换数据的精度范围,根据计算单元的参数确定交换阈值,当缓冲区内存储的待交换数据达到交换阈值时交换待交换数据的技术方案,能够在不同计算单元或不同类型的计算单元之间按照需要交换数据,在保证数据交换时限的前提下充分利用缓存,提高数据通信性能和效率,使云计算环境下大规模数据训练的性能表现最大化。

附图说明

[0029] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030] 图1为本发明提供的深度学习分布式框架用的数据交换方法的流程示意图;
[0031] 图2为本发明提供的深度学习分布式框架用的数据交换方法的梯度参数-交换阈值折线图。

具体实施方式

[0032] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
[0033] 需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”、“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
[0034] 基于上述目的,本发明实施例的第一个方面,提出了一种能够在不同计算单元或不同类型的计算单元之间按照需要交换数据的方法的实施例。图1示出的是本发明提供的深度学习分布式框架用的数据交换方法的实施例的流程示意图。
[0035] 所述数据交换方法,包括以下步骤:
[0036] 步骤S101,使每个计算单元持续生成待交换数据;
[0037] 步骤S103,将待交换数据存入计算单元的缓冲区;
[0038] 步骤S105,使用比例因子压缩待交换数据的精度范围;
[0039] 步骤S107,根据计算单元的参数确定交换阈值;
[0040] 步骤S109,当缓冲区内存储的待交换数据达到交换阈值时,交换待交换数据。
[0041] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。所述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
[0042] 在一些实施方式中,待交换数据为梯度参数。
[0043] 在模型训练过程中需要进行频繁的梯度参数交换。在传统的分布式深度学习模型中,每个梯度参数计算结束后就开始数据交换,这种方式效率较低,每次传递的消息大小无法填充整个缓冲区,因此无法充分利用缓冲区的性能。针对这一问题,本发明实施例采用了梯度融合的方法,每次准备好进行数据通信的梯度参数先放入到缓冲区中,当存入的数据大小达到预先设定的阈值时,再进行数据通信的操作,这样可以充分利用缓冲区,进一步提升模型数据通信的性能。
[0044] 在一些实施方式中,计算单元的参数包括以下至少之一:处理器数量、计算模型层数量、反向传播平均耗时、通信延迟;根据计算单元的参数确定交换阈值为:根据处理器数量、计算模型层数量、反向传播平均耗时、通信延迟中至少之一来确定交换阈值。
[0045] 本发明实施例中的计算单元是GPU,并且不同GPU之间的Allreduce操作采用NCCL工具包实现。NCCL工具包是执行Allreduce、Gather、和Broadcast操作的工具包,本发明实施例中的Allreduce采用了Ring-Allreduce方法,针对GPU进行底层优化,在GPU之间进行Allreduce操作时性能优于原始的Allreduce算法。
[0046] 在一些实施方式中,通信延迟由单次通信的信息量决定。
[0047] 在一些实施方式中,交换阈值 其中P为处理器数量,L为计算模型层数量,Eavg,b为第反向传播过程平均耗时,α为通信延迟。
[0048] 交换阈值即(梯度参数的融合阈值)需要人为设定,现有技术难以选择合适的阈值。本发明实施例使用如图2所示的阈值性能曲线来拟合确定了交换阈值所能得到的最优解的计算公式,根据本发明实施例的方法确定的交换阈值能够使得性能收益最大化。本发明实施例根据不同参数在模型训练过程中直接自动获取性能收益最大化所需的交换阈值,使得模型训练的数据通信性能始终达到最佳,免于手工调整阈值参数,令分布式深度学习模型的训练过程更加自动化。
[0049] 结合这里的公开所描述的各种示例性步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现所述的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
[0050] 在一些实施方式中,使用比例因子压缩待交换数据的精度范围包括:
[0051] 使用比例因子正向处理待交换数据;
[0052] 通过修改数据类型来压缩处理过的待交换数据的精度。
[0053] 根据本发明实施例公开的方法还可以被实现为由CPU执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被CPU执行时,执行本发明实施例公开的方法中限定的上述功能。述方法步骤也可以利用控制器以及用于存储使得控制器实现上述步骤功能的计算机程序的计算机可读存储介质实现。
[0054] 在一些实施方式中,在待交换数据被交换之后,还执行以下步骤:
[0055] 通过修改数据类型来解压缩处理过的待交换数据的精度;
[0056] 使用比例因子对处理过的待交换数据进行逆向处理。
[0057] 在一些实施方式中,比例因子由待交换数据的取值范围与其数据类型的精度范围之比决定。
[0058] 根据本发明的一实施例,在Allreduce之前,利用TensorFlow的tensorflow.cast函数将数据类型由tensor.dtype(32位的单精度浮点数据)转换为tensor_fp16(16位的半精度浮点数据),通信结束后再将数据类型转换回tensor.dtype类型。通过这一操作,数据类型由32位浮点数转换位为16位浮点数,为此需要通信的数据大小减小了一半,有效的提升了数据通信的效率。
[0059] 然而待传输数据的取值范围变化会导致精度损失。为了降低损失,本发明实施例在进行数据类型转换之前将待传输数据乘以一个比例因子“scale”,使得待传输数据的取值范围能够最大程度地利用——即充分地占满——tensor_fp16类型数据的取值范围,这可以有效的缓解精度损失。
[0060] 应当明白,待传输数据——在本发明实施例中是梯度参数——的取值范围仅占据tensor.dtype的精度总范围中的极小一部分,直接传输tensor.dtype的32位浮点数据本身就是对带宽的浪费,这也就是本发明实施例为何要对其进行压缩。如果直接将tensor.dtype转换为tensor_fp16,待传输数据压缩后的取值范围仍然仅占据tensor_fp16的精度总范围中的极小一部分,对带宽的浪费仍然存在。因此本发明实施例使用比例因子与待传输数据相作用(例如相乘或其它常用线性手段),使得待传输数据压缩后的取值范围能够占据tensor_fp16的精度总范围的绝大部分甚至是全部,这等于在相当大的程度上降低了预期的精度损失。
[0061] 结合这里的公开所描述的方法步骤可以直接包含在硬件中、由处理器执行的软件模块中或这两者的组合中。软件模块可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域已知的任何其它形式的存储介质中。示例性的存储介质被耦合到处理器,使得处理器能够从该存储介质中读取信息或向该存储介质写入信息。在一个替换方案中,所述存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在用户终端中。在一个替换方案中,处理器和存储介质可以作为分立组件驻留在用户终端中。
[0062] 从上述实施例可以看出,本发明实施例提供的深度学习分布式框架用的数据交换方法,通过使每个计算单元持续生成待交换数据,将待交换数据存入计算单元的缓冲区,使用比例因子压缩待交换数据的精度范围,根据计算单元的参数确定交换阈值,当缓冲区内存储的待交换数据达到交换阈值时交换待交换数据的技术方案,能够在不同计算单元或不同类型的计算单元之间按照需要交换数据,在保证数据交换时限的前提下充分利用缓存,提高数据通信性能和效率,使云计算环境下大规模数据训练的性能表现最大化。
[0063] 需要特别指出的是,上述数据交换方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于数据交换方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。
[0064] 基于上述目的,本发明实施例的第二个方面,提出了一种深度学习分布式框架用的能够在不同计算单元或不同类型的计算单元之间按照需要交换数据的装置的实施例。所述装置包括:
[0065] 存储器,存储有可运行的程序代码;
[0066] 至少一个处理器,在运行存储器存储的程序代码时执行上述的数据交换方法。
[0067] 本发明实施例公开所述的装置等可为各种电子终端设备,例如手机、个人数字助理(PDA)、平板电脑(PAD)、智能电视等,也可以是大型终端设备,如服务器等,因此本发明实施例公开的保护范围不应限定为某种特定类型的装置。本发明实施例公开所述的客户端可以是以电子硬件、计算机软件或两者的组合形式应用于上述任意一种电子终端设备中。
[0068] 本文所述的计算机可读存储介质(例如存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、以及直接Rambus RAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
[0069] 基于上述目的,本发明实施例的第三个方面,提出了一种能够在不同计算单元或不同类型的计算单元之间按照需要交换数据的计算系统的实施例。计算系统包括多个计算单元和上述的数据交换装置。
[0070] 结合这里的公开所描述的各种示例性计算系统可以利用被设计成用于执行这里所述功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP和/或任何其它这种配置。
[0071] 从上述实施例可以看出,本发明实施例提供的深度学习分布式框架用的数据交换装置和计算系统,通过使每个计算单元持续生成待交换数据,将待交换数据存入计算单元的缓冲区,使用比例因子压缩待交换数据的精度范围,根据计算单元的参数确定交换阈值,当缓冲区内存储的待交换数据达到交换阈值时交换待交换数据的技术方案,能够在不同计算单元或不同类型的计算单元之间按照需要交换数据,在保证数据交换时限的前提下充分利用缓存,提高数据通信性能和效率,使云计算环境下大规模数据训练的性能表现最大化。
[0072] 需要特别指出的是,上述数据交换装置和计算系统的实施例采用了所述数据交换方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到所述数据交换方法的其他实施例中。当然,由于所述数据交换方法实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于所述数据交换装置和计算系统也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。
[0073] 以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
[0074] 应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
[0075] 所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。