首页 / 专利库 / 数学与统计 / 优化算法 / 一种分布式深度学习的梯度压缩方法

一种分布式深度学习的梯度压缩方法

阅读:752发布:2023-12-30

专利汇可以提供一种分布式深度学习的梯度压缩方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及 人工智能 领域,更具体的,涉及一种分布式 深度学习 的梯度压缩方法,利用基于梯度方差的方法,改变传统梯度稀疏化中采用固定 阈值 或百分比的方法来决定是否发送该梯度。由于使用固定阈值或百分比的方法往往需要实验者拥有一定的先验知识,若初始阈值或百分比选择不恰当,会导致实验无法达到预期效果。本 专利 采用基于梯度方差的方法,与 现有技术 相比,大大的减少了人为因素的干预,使梯度稀疏化更加灵活,更加科学。,下面是一种分布式深度学习的梯度压缩方法专利的具体信息内容。

1.一种分布式深度学习的梯度压缩方法,其特征在于,包括以下步骤:
步骤S1:每个Worker节点读取一批训练数据到内存中;
步骤S2:Worker节点利用读入的样本数据及对应的期望输出,进行前向传播,最后得到模型的输出值;
步骤S3:Worker节点根据前向传播得到的模型输出值计算与样本数的期望输出的误差得到损失值Loss,根据损失值Loss进行反向传播,并且加上残差梯度rt,得到参数梯度向量步骤S4:当梯度元素 满足 和
时,选择发送该梯度;未发送的梯度则作为残差梯度,保留至下一次迭代;其中 为梯度向量, 为梯度元素,|B|为MiniBatch训练数据大小,α′为预设准确率,z为MiniBatch中的某个样本,fz、fB为损失函数, 为第i个参数在MiniBatchB中的样本梯度方差,τ为每轮迭代中梯度的最大值,σ上一轮迭代中的压缩率;
步骤S5:Worker节点将需要发送的梯度封装并发送给参数服务器,参数服务器聚集所有Worker节点发来的压缩梯度,将梯度进行聚合,生成新的梯度向量,并分发给所有Worker节点;
步骤S6:节点收到由参数服务器发来的全局参数梯度更新向量,采用Adadelta优化算法进行参数更新,然后继续读入下一批训练数据进行新一轮的迭代;
步骤S7:判断训练迭代次数是否满足要求,若满足,结束迭代,如不满足,进行新一轮的迭代。

说明书全文

一种分布式深度学习的梯度压缩方法

技术领域

[0001] 本发明涉及人工智能领域,更具体的,涉及一种分布式深度学习的梯度压缩方法。

背景技术

[0002] 典型的分布式深度学习通常采用参数服务器或Allreduce的方式进行全局参数的维护和更新。由于深度学习使用的神经网络模型结构复杂,模型参数规模庞大。大规模的分布式深度学习需要参数服务器与训练节点频繁地进行参数交换,但节点间网络带宽的不足逐渐成为了制约分布式训练发展的瓶颈
[0003] 通常情况下,模型大部分参数每一轮迭代的梯度变化比较小,几乎接近于0。所以有人提出了梯度压缩方法,即压缩每一轮迭代产生的梯度。从而减少通信量,减轻对于带宽的负担。在梯度压缩中,有两种常用的方法——梯度量化和梯度稀疏化。梯度量化主要是通过减少表示梯度的比特数,通过减小梯度数据量的大小实现梯度压缩,当前最常用的就是1-Bit量化方法。梯度稀疏化则是通过算法决定发送某一小部分梯度参加参数更新,而大部分变化值较小的梯度则暂缓更新,通过减少梯度的数量实现梯度压缩,当前最常用的就是阈值稀疏化方法。
[0004] 当前对梯度稀疏化方法进行优化的改进算法有很多,其中通过百分比动态筛选梯度的方法应用广泛。它不再采用固定的阈值进行梯度稀疏化,而是通过先在模型参数中采样的方法,以一定的百分比来挑选阈值。百分比的设定可以根据用户对于梯度压缩率的需要自行调节,通常情况下压缩率R%有90%,99%和99.9%。实验中,选取一部分梯度作为采样梯度,将采样梯度进行排序比较,挑选梯度值大小为前(1-R%)的梯度,并以R%大的临界梯度作为阈值。通过采样数据集得到的阈值将作为该轮迭代的全局阈值进行梯度稀疏化。未发送的梯度将作为残差梯度累加至下一次的梯度计算结果中参与下一轮迭代。由于传统的1-Bit量化和固定阈值稀疏化方法中没有考虑残差梯度的问题,导致模型收敛性会出现一定的影响,并且准确率会有小幅度的降低。
[0005] 由于当前梯度稀疏化的方法还是普遍的根据选定的阈值来对梯度值进行判定是否发送该梯度进行参数更新。但无论是采用固定阈值还是通过百分比动态选择阈值,都绕不开用户的介入,即设定阈值或设定百分比。这些值的设定都依赖于用户的经验知识。以及,传统的分布式深度学习采用参数服务器架构进行梯度的聚合以及参数的更新时,每当参数服务器完成参数更新后,都需要将完整的模型参数下发至Worker端,但实际上由于模型参数只更新了一小部分的参数,绝大部分的参数还是维持原样的,所以会产生大量的冗余通信。在参数更新部分,现在有很多改进的优化算法,例如动量SGD、顿动量、AdaGrad、RMSProp、Adadelta和Adam方法。传统的Minibatch SGD在稀疏梯度的情况下,可能对模型收敛带来影响。综上所述,现有的梯度稀疏化方法仍存在较多改进的空间。

发明内容

[0006] 为了解决现有技术中没有考虑残差梯度的问题导致影响模型的收敛性并且准确率会有小幅度的降低,而且会产生大量的冗余通信的不足,本发明提供了一种分布式深度学习的梯度压缩方法。
[0007] 为实现以上发明目的,采用的技术方案是:
[0008] 步骤S1:每个Worker节点读取一批训练数据到内存中;
[0009] 步骤S2:Worker节点利用读入的样本数据及对应的期望输出,进行前向传播,最后得到模型的输出值,各Worker节点间互不影响,彼此计算独立;
[0010] 步骤S3:Worker节点根据前向传播得到的模型输出计算与样本数据的期望输出的误差得到损失值Loss,根据损失值Loss进行反向传播,并且加上残差梯度rt,得到参数梯度向量
[0011] 步骤S4:当梯度元素 满足 和
[0012] 时,选择发送该梯度,未发送的梯度则作为残差梯度,保留至下一次迭代;其中 为梯度向量, 为梯度元素,|B|为MiniBatch训练数据大小,α′为预设准确率,z为MiniBatch中的某个样本,fz、fB为损失函数, 为第i个参数在MiniBatchB中的样本梯度方差,τ为每轮迭代中梯度的最大值,σ上一轮迭代中的压缩率;
[0013] 步骤S5:Worker节点将需要发送的梯度封装并发送给参数服务器,参数服务器聚集所有Worker节点发来的压缩梯度,将梯度进行聚合,生成新的梯度向量,并分发给所有Worker节点;
[0014] 步骤S6:节点收到由参数服务器发来的全局参数梯度更新向量,采用Adadelta优化算法进行参数更新,然后继续读入下一批训练数据进行新一轮的迭代。
[0015] 步骤S7:判断训练迭代次数是否满足要求,若满足,结束迭代,如不满足,进行新一轮的迭代。
[0016] 与现有技术相比,本发明的有益效果是:
[0017] 本发明利用基于梯度方差的方法,改变传统梯度稀疏化中采用固定阈值或百分比的方法来决定是否发送该梯度。由于使用固定阈值或百分比的方法往往需要实验者拥有一定的先验知识,若初始阈值或百分比选择不恰当,会导致实验无法达到预期效果。本发明采用基于梯度方差的方法,与现有技术相比,大大的减少了人为因素的干预,使梯度稀疏化更加灵活,更加科学。
[0018] 本发明引入的动态阈值方法作为附加条件,只有当梯度的变化值同时大于梯度方差和阈值时,才选择发送。双限制的方法将进一步的提高梯度压缩率。现有技术通常只采用单一的方法进行限制,本方法将加强对于梯度的限制,实现梯度的稀疏化。
[0019] 本发明还改进了参数服务器架构,将参数服务器作为一个梯度共享服务器,在梯度稀疏化任务中只负责完成梯度聚合的任务,梯度聚合完成后,对所有Worker节点只发送聚合梯度,不再发送完整的模型参数。与现有技术相比,将大量地减少网络带宽中的通信量,缓解分布式系统中通信压
[0020] 本发明将梯度稀疏化中常用的MiniBatch方法改变为Adadelta优化方法,Adadelta比现有的MiniBatch方法更适合处理稀疏梯度的参数更新。有助于加速模型的收敛,并且保证模型准确率。附图说明
[0021] 图1为本发明的流程图

具体实施方式

[0022] 附图仅用于示例性说明,不能理解为对本发明的限制;
[0023] 以下结合附图和实施例对本发明做进一步的阐述。
[0024] 实施例1
[0025] 如图1所示,一种分布式深度学习的梯度压缩方法,具体步骤如下:
[0026] 步骤S1:每个Worker节点读取一批训练数据到内存中;
[0027] 步骤S2:Worker节点利用读入的样本数据及对应的期望输出,进行前向传播,最后得到模型的输出值,各Worker节点间互不影响,彼此计算独立;
[0028] 步骤S3:Worker节点根据前向传播得到的模型输出计算与样本数据的期望输出的误差得到损失值Loss,根据损失值Loss进行反向传播,并且加上残差梯度rt,得到参数梯度向量
[0029] 步骤S4:当梯度元素 满足 和
[0030] 时,选择发送该梯度,未发送的梯度则作为残差梯度,保留至下一次迭代;其中 为梯度向量, 为梯度元素,|B|为MiniBatch训练数据大小,α′为预设准确率,z为MiniBatch中的某个样本,fz、fB为损失函数, 为第i个参数在MiniBatchB中的样本梯度方差,τ为每轮迭代中梯度的最大值,σ上一轮迭代中的压缩率;
[0031] 步骤S5:Worker节点将需要发送的梯度封装并发送给参数服务器,参数服务器聚集所有Worker节点发来的压缩梯度,将梯度进行聚合,生成新的梯度向量,并分发给所有Worker节点;
[0032] 步骤S6:节点收到由参数服务器发来的全局参数梯度更新向量,采用Adadelta优化算法进行参数更新,然后继续读入下一批训练数据进行新一轮的迭代。
[0033] 步骤S7:判断训练迭代次数是否满足要求,若满足,结束迭代,如不满足,进行新一轮的迭代。
[0034] 显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈