一种基于梯度下降法的数据处理方法及相关装置与流程

文档序号:17625249发布日期:2019-05-10 23:35阅读:157来源:国知局
一种基于梯度下降法的数据处理方法及相关装置与流程

本发明涉及深度学习与共享计算领域,尤其涉及一种基于梯度下降法的数据处理方法及相关装置。



背景技术:

当前,以深度学习为代表的新一代人工智能技术正在广泛地影响着人们的生活和工作,通过赋能新物流、新制造等经济活动形式,对经济结构优化和产业升级有重大拉动作用。对于广大的企业经营者而言,如何利用人工智能来提高企业决策、资源分配效率和用户体验,成为了必须要考虑的问题。作为当前人工智能技术浪潮的代表,深度学习本质上就是通过对数据进行挖掘和归纳,从而找到其中蕴藏的规律,目前已经在视频、语音、自然语言理解等方向有着广泛应用。为了保证所归纳的规律能够尽可能符合应用场景的特点,因此需要收集大量的待训练数据并构造参数容量足够大的数学模型,以上要求导致了深度学习技术应用是存储密集和计算密集,而且由于数学模型的构造需要用到一种基于梯度下降反向传播的优化算法,使得模型的构造过程是通信密集。

整个流程中模型参数的梯度总共需要传输2次,即为统计数据的节点传输至服务器的过程以及服务器返回节点的过程,由于梯度的数据规模往往正比于模型参数量,因此整个系统的通信开销非常庞大,设每个节点需要传输的梯度为g,通信带宽为b,共有n个节点,则单个节点的传输时间t=2*g/b,参数服务器传输时间t=2*n*g/b,由于数据的庞大,造成了通信时间较长的问题。

现有技术中由于通信时间较长,想要降低通信时间都通过加大带宽的方式,因此可用于提供深度学习服务的机器只能放在数据中心,机器间采用大带宽连接,而建造数据中心的成本非常高,也就使得目前市场上深度学习云服务的单价很高,所以使计算数据的过程在共享领域内完成是一个亟待解决的问题。

申请内容

本申请实施例提供了一种基于梯度下降法的数据处理方法及相关装置,用于降低所需传输的数据量,从而降低了传输所需的带宽,为在共享计算节点上部署深度学习提供支持。

本申请第一方面提供一种梯度压缩的方法,包括:

计算获得当前节点的原始梯度;

对当前节点的原始梯度进行压缩,获得压缩梯度;

将所述压缩梯度发送至参数服务器,以使所述参数服务器根据各共享节点发送的压缩梯度计算梯度均值;

接收参数服务器发送的梯度均值以更新模型参数。

可选地,所述对当前节点的原始梯度进行压缩,包括对原始梯度进行梯度裁剪,所述梯度裁剪包括:

根据梯度压缩需求设置裁剪参数,所述裁剪参数为比例参数。

可选地,对所述原始梯度进行裁剪包括:

对所有需计算的梯度裁剪元素取绝对值;

对所述取得的绝对值进行从大到小排列;

根据所述裁剪参数的值,取得比例内的最小的梯度裁剪元素的绝对值作为裁剪阈值;

筛选出绝对值大于所述裁剪阈值的梯度裁剪元素,所述梯度裁剪元素用于进行梯度压缩元素的筛选。

可选地,所述对当前节点的原始梯度进行压缩,包括:

根据梯度压缩需求设置目标比特值,所述目标比特值用于表示梯度压缩元素。

可选地,对所述当前节点的原始梯度进行压缩,还包括对原始梯度进行梯度量化,梯度量化为使用所述目标比特值表示所述压缩参数梯度。

可选地,所述梯度量化为使用所述目标比特值表示所述参数梯度具体包括:

对需要计算的梯度压缩元素取绝对值,并求出绝对值中的最大值;

根据所述绝对值得出梯度压缩元素的符号性,所述符号为正负性;

在0-所述最大值的范围内,生成所述需要计算的梯度压缩元素的随机均匀分布;

筛选出绝对值大于随机均匀分布值的所述梯度压缩元素,并计算筛选出的梯度压缩元素的符号性,所述已计算出符号性的梯度压缩元素用于发送至所述服务器。

本申请第二方面提供一种数据处理的装置,所述装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的梯度压缩的程序,所述梯度压缩的程序被所述处理器执行时实现所述数据处理的方法。

可选地,所述装置为组成cdn网络或者区块链网络的节点。

本申请第三方面提供一种数据处理的系统,所述系统包括:

计算单元,用于计算获得当前节点的原始梯度;

压缩单元,对当前节点的原始梯度进行压缩,获得压缩梯度;

发送单元,将所述压缩梯度发送至参数服务器,以使所述参数服务器根据各共享节点发送的压缩梯度计算梯度均值;

接收单元,接收参数服务器发送的梯度均值以更新模型参数。

本申请第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据处理的程序,所述数据处理的程序可被一个或者多个处理器执行,以实现所述数据处理的方法。

本申请第五方面提供一种计算机程序产品,包括计算机指令,当其在计算机上运行时,使得计算机可以执行所述的数据处理的方法。

从以上技术方案可以看出,本申请实施例具有以下优点:本实施例中,计算获得当前节点的原始梯度,对当前节点的原始梯度进行压缩,获得压缩梯度,将所述压缩梯度发送至参数服务器,以使所述参数服务器根据各共享节点发送的压缩梯度计算梯度均值,接收参数服务器发送的梯度均值以更新模型参数。由于通过梯度压缩降低了所需传输的数据量,从而降低了传输所需的带宽,为在共享计算节点上部署深度学习提供支持。

附图说明

图1为本申请实施例中一种数据处理的方法实施例的一个示意图;

图2为本申请实施例中一种数据处理的方法实施例的另一个示意图;

图3为本申请实施例中一种数据处理的方法实施例的另一个示意图;

图4为本申请实施例中一种数据处理的系统实施例的一个示意图;

图5为本申请实施例中一种计算机装置的一个示意图。

具体实施方式

本申请实施例提供了一种基于梯度下降法的数据处理方法及相关装置,用于降低所需传输的数据量,从而降低了传输所需的带宽,为在共享计算节点上部署深度学习提供支持。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了便于理解,下面对本申请实施例中的具体流程进行描述,请参阅图1,本申请实施例中一种数据处理的方法的一种实施例包括:

101、计算获得当前节点的原始梯度;

本实施例中,设每个节点的梯度为g,g为一个张量,包含m个矩阵,每个矩阵包含n个元素,每个元素占用l个比特,故g=m*n*l,计算获得当前节点的原始梯度即为根据当前节点获取的对应上述三个参数进行上述计算,从而得到原始梯度。

102、对当前节点的原始梯度进行压缩,获得压缩梯度;

具体地,对于参数梯度进行压缩主要从减少n与l两个方面。减少n为梯度裁剪,减少l为梯度量化,根据g=m*n*l,剪裁后r=m*v*l,r为剪裁后的g,v<<n,v为保留的参数量,n为剪裁前的参数量,梯度裁剪是通过减少需要计算的元素从而减少计算量,此时每个参数梯度均使用l位比特表示,由于不同的比特位所需的计算量也不同,梯度量化目的就是把高位比特变成低位比特,即为从l位比特改为t位比特,t<<l。

103、将所述压缩梯度发送至参数服务器,以使所述参数服务器根据各共享节点发送的压缩梯度计算梯度均值;

本实施例中,将压缩后的参数梯度发送至参数服务器,参数服务器用于计算所述参数梯度,参数服务器计算所述参数梯度的过程具体包括:

参数服务器需要接受所有节点传来的参数梯度,并对计算对应梯度的均值。

由于本申请主要基于共享计算的领域内,将统计参数的任务从数据中心分摊至各可以提供云计算服务的节点内,导致节点的数量较大,参数服务器会对接收到的参数梯度进行求均值,并将结果返回至各节点。

104、接收参数服务器发送的梯度均值以更新模型参数。

本实施例中,为了保证所归纳的规律能够尽可能符合应用场景的特点,因此需要收集大量的待训练数据并构造参数容量足够大的数学模型,接收到的从参数服务器返回的计算结果,即是为了更新已存储在节点内的参数梯度模型。

本实施例中,由于通过梯度压缩降低了所需传输的数据量,从而降低了传输所需的带宽,为在共享计算节点上部署深度学习提供支持。

本申请实施例中,基于图1所述实施例,对参数梯度的裁剪进行进一步的介绍,具体请参阅图2,一种数据处理的方法的另一个实施例包括:

20、对原始梯度进行梯度裁剪,所述梯度剪裁按照预先设定的裁剪参数对所述原始梯度裁剪。

本实施例中,根据g=m*n*l,首先可以减少n的数量,即可以把权重较大的元素与权重较小的元素分别处理,步骤如下:

根据梯度压缩需求设置裁剪参数,所述裁剪参数为比例参数,对所有需计算的梯度裁剪元素取绝对值,对所述取得的绝对值进行从大到小排列,根据所述裁剪参数的值,取得比例内的最小的梯度裁剪元素的绝对值作为裁剪阈值,筛选出绝对值大于所述裁剪阈值的梯度裁剪元素,所述梯度裁剪元素用于进行梯度压缩元素的筛选。

具体地,梯度裁剪算法如下:

设g={g[1],..,g[m]},g[i]代表第i组参数的梯度且为矩阵,即g[i]={g[i][1],..,g[i][n]},可以根据梯度压缩需求以及节点计算的能力在压缩之前设置裁剪参数s,裁剪参数为一个比例参数,即为设置权重阈值的方法,示例性地,若裁减参数设为0.1,那么就相当于将前10%权重的参数梯度筛选出来;

对每个g[i]计算绝对值|g[i]|,i=1..m,计算绝对值是为了方便比较,因梯度存在正负号的问题,所以将每个g[i]计算绝对值|g[i]|;

对每个|g[i][k]|进行由大到小的排序,k=1..n,并选择前s*n的最小值为候选阈值thr[i],是为选出进行计算的参数做准备,确定一个确认的范围,排序之后,只需要将每个元素与阈值thr[i]对应的元素作比较,根据比较结果对所有的元素进行分类;

对每个|g[i]|选择大于阈值thr[i]的元素,即mask[i]=|g[i]|>thr[i],对每个g[i]使用mask[i]过滤,即r[i]=mask[i]*g[i],p[i]=~mask[i]*g[i],其中对mask[i]取反得~mask[i],即为筛选的过程,将确定计算的参数加一个索引函数即mask[i],这样在将需要计算的数据传输至参数服务器的时候,通过索引函数mask[i]过滤一次即可,对mask取反得~mask[i],通过取反函数筛选的话,可以筛选出不会传输至参数服务器的数据。由于权重小的数据对要计算出的模型影响可以忽略不计,所以对于不会传输至参数服务器的数据,本申请不会做具体限定。

对r={r[1],..,r[m]}上传参数服务器,p={p[1],..,p[m]}保存在本节点,其中r={r[1],..,r[m]}即为筛选出的需要计算的数据传输至参数服务器,p={p[1],..,p[m]}即为筛选出不会传输至参数服务器的数据。

本申请实施例中,基于图2所述实施例,对参数梯度的量化进行进一步的介绍,具体请参阅图3,一种数据处理的方法的另一个实施例包括:

30、对原始梯度进行梯度量化,梯度量化为使用所述目标比特值表示所述参数梯度。

本实施例中,根据g=m*n*l,剪裁后r=m*v*l,v<<n,v为保留的参数量,n为剪裁前的参数量,s=v/n,此时每个参数梯度均使用l位比特表示,梯度量化目的就是把高位比特变成低位比特以节省计算数量,所以会根据梯度压缩需求设置目标比特值,所述目标比特值用于表示梯度压缩元素,步骤如下:

对需要计算的梯度压缩元素取绝对值,并求出绝对值中的最大值,根据所述绝对值得出梯度压缩元素的符号性,所述符号为正负性,在0-所述最大值的范围内,生成所述需要计算的梯度压缩元素的随机均匀分布,筛选出绝对值大于随机均匀分布值的所述梯度压缩元素,并计算筛选出的梯度压缩元素的符号性,所述已计算出符号性的梯度压缩元素用于发送至所述服务器。

具体地,梯度量化的算法如下:

设置目标比特位为t,t<<l;

本申请使用t=2,即梯度采用{-1,0,1}表示,量化压缩率q=t/l,量化过程如下:

对每个r[i],计算|r[i]|,并求|r[i]|的最大值,即s[i]=max(abs(r[i])),先对剪裁后的参数进行求绝对值,求出|r[i]|的最大值是为了确定出阈值范围,并通过阈值范围确定出本申请需要的量化范围;

对每个r[i],计算符号,即sign(r[i]),由于元素本身有正负号的属性,通过符号函数表示出其本身的正负;

对每个r[i],令p[i]=random_uniform(0,s[i]),即在[0,s[i]]范围生成随机均匀分布,生成一个点的分布图,为下一步的筛选比较做准备;

对每个r[i],mask[i]=abs(r[i])>p[i],由于生成的随机均匀分布,都是与元素一一对应的,会将经过随机均匀分布前的元素即r[i]与随机均匀分布内的元素即p[i]一一进行比较,若r[i]>p[i],则该元素的梯度取为1,若r[i]<p[i],则该元素取为0;

对每个r[i],求量化梯度q[i]=mask[i]*sign(r[i]),由于本申请在具体的实现过程中采用t=2的情况,即为梯度采用{-1,0,1}表示,所以需要将元素本身的符号属性还原回去。

综上,进行量化后的梯度压缩为q=m*v*2,总的梯度压缩率:

ratio=(m*v*2)/(m*n*l)=s*2/l。

示例性地,对图2图3的实施例进行说明,取s=0.1,l=32,则总的压缩率ratio=160,即原传输量的0.625%,在此实例中原梯度参数量大小为72mb,压缩后为450kb,若公共网络可用上行带宽为12.5m,则传输时间由原来约6秒变成0.04秒。

下面从实体装置的角度对本申请实施例中的计算机装置进行描述,请参阅图4,本申请实施例中一种数据处理的系统实施例包括:

计算单元,用于计算获得当前节点的原始梯度;

压缩单元,对当前节点的原始梯度进行压缩,获得压缩梯度;

发送单元,将所述压缩梯度发送至参数服务器,以使所述参数服务器根据各共享节点发送的压缩梯度计算梯度均值;

接收单元,接收参数服务器发送的梯度均值以更新模型参数。

本实施例中,计算单元,用于计算获得当前节点的原始梯度,压缩单元,对当前节点的原始梯度进行压缩,获得压缩梯度,发送单元,将所述压缩梯度发送至参数服务器,以使所述参数服务器根据各共享节点发送的压缩梯度计算梯度均值,接收单元,接收参数服务器发送的梯度均值以更新模型参数。计算获得当前节点的原始梯度;对当前节点的原始梯度进行压缩,获得压缩梯度;将所述压缩梯度发送至参数服务器,以使所述参数服务器根据各共享节点发送的压缩梯度计算梯度均值;接收参数服务器发送的梯度均值以更新模型参数。由于通过梯度压缩降低了所需传输的数据量,从而降低了传输所需的带宽,为在共享计算节点上部署深度学习提供支持。

下面从实体装置的角度对本申请实施例中的计算机装置进行描述,请参阅图5,本申请实施例中计算机装置的一个实施例包括:

该计算机装置500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)501(例如,一个或一个以上处理器)和存储器505,该存储器505中存储有一个或一个以上的应用程序或数据。

其中,存储器505可以是易失性存储或持久存储。存储在存储器505的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器501可以设置为与存储器505通信,在智能终端500上执行存储器505中的一系列指令操作。

该计算机装置500还可以包括一个或一个以上电源502,一个或一个以上有线或无线网络接口503,一个或一个以上输入输出接口504,和/或,一个或一个以上操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

可以理解的是,在本申请的各种实施例中,上述各步骤的序号的大小并不意味着执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以记录在一个计算机可读取记录介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品记录在一个记录介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的记录介质包括:u盘、移动硬盘、只读记录器(rom,read-onlymemory)、随机存取记录器(ram,randomaccessmemory)、磁碟或者光盘等各种可以记录程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1