分布式深度学习的梯度量化方法和系统技术方案

技术编号:28049603 阅读:22 留言:0更新日期:2021-04-14 13:06
本申请涉及一种分布式深度学习的梯度量化方法和系统。所述方法包括:获取各个分布式的worker节点计算得到的梯度值,根据梯度值建立一维梯度数组,对一维梯度数组中进行随机采样,对采样得到的梯度值进行聚类,根据聚类结果,建立多个哈希表,根据梯度值对应的类簇,将一维梯度数组中的梯度值插入多个哈希表的哈希桶中,根据梯度值对应的数组序号和梯度值存入所述哈希桶的类簇,生成映射关系表,将插入梯度值的多个哈希表和映射关系表发送给参数服务器完成深度学习的梯度量化。采用本方法能够提高梯度量化的效率。够提高梯度量化的效率。够提高梯度量化的效率。

【技术实现步骤摘要】
分布式深度学习的梯度量化方法和系统


[0001]本申请涉及计算机
,特别是涉及一种分布式深度学习的梯度量化方法和系统。

技术介绍

[0002]近些年来,深度学习技术给人工智能带来了再一次的复兴,并且带动了计算机视觉、自动驾驶、神经翻译等新兴技术产业化。同时,针对深度学习,学术界和工业界研发了多种深度学习系统框架,如TensorFlow,MxNet,Pytorch等,极大方便了研究人员开发和部署深度学习应用。这些深度学习框架可以支持数据并行和模型并行,许多应用受益于这种并行性,可以处理大数据和大模型的训练,例如,模型参数量方面,谷歌BERT模型达到了30个参数,预训练ImageNet的VGG16模型包括了13.8亿个模型,同时在数据量方面,图像数据集OpenImage有18TB,视频数据集YouTube8M占用1PB存储。深度学习模型的训练过程需要在这些大数据上计算大模型长达几十个Epoch(训练回合),消耗的时间常常难以承受。
[0003]目前解决这个问题主要从提高大规模分布式深度学习的可扩展性的角度进行研究。当节点数增多时,通信量的增加导致通信开销限制了系统的可扩展性。目前基于参数服务器的通信机制会导致过量的通信开销。在每一次训练批次之后,分布式SGD(Stochastic Gradient Descent,随机梯度下降)算法需要在参数服务器进行同步,每个节点将梯度更新发送给参数服务器,当所有节点在同一时间发送梯度时,通信时间会很多。目前减少通信量的方法主要是基于梯度量化。其中梯度量化方法主要包括:(1)1-bit量化,每次只传输+τ或者-τ的信息,τ为梯度的量化值;(2)Terngrad,将梯度量化为三类{-1,0,+1},并结合每一层梯度的无穷范数来量化;(3)SketchML,使用Quantile Sketch将梯度进行量化,并进一步提出MinMax Sketch来存储量化后的梯度,最后用Delta-Binary Encoding来减少索引key的通信量。梯度稀疏化与量化结合的方法主要包括:(1)梯度延迟更新技术,对于小于阈值τ的梯度就不进行传输,而是在本地计算节点将每个权重的小梯度累加起来,称为gradient residual,直到这些gradient residual累加超过τ了才进行传输。而且每次传输也只是传输一个τ(正或负),多余的部分依然保留下来作为gradient residual;(2)AdaComp,根据梯度的分布自适应地调整量化的阈值τ;(3)DEEP GRADIENT COMPRESSION,针对Momentum SGD提出了momentum correction和local gradient clipping两个技术来提高准确率,针对gradients residual带来的staleness的问题,提出momentum factor masking和warmup training两个技术来缓解。另外还有基于梯度矩阵分解的方法:(1)ATOMO,对梯度进行SVD分解,在固定比特数的情况下可以得到最小的量化方差;(2)GradiVeQ,对梯度进行PCA分解,可以直接在量化数据上进行梯度相加,减少在RingAllreduce中的量化代价。
[0004]然而,这些现有方法很少考虑梯度的分布特点以及不同梯度的重要性,从而导致目前梯度量化方法对梯度值的大小适应能力不足以及梯度量化效率不高的问题。

技术实现思路

[0005]基于此,有必要针对上述技术问题,提供一种能够解决目前梯度量化方法对梯度值的大小适应能力不足以及梯度量化效率不高的问题的分布式深度学习的梯度量化方法和系统、计算机设备和存储介质。
[0006]一种分布式深度学习的梯度量化方法,所述方法包括:
[0007]获取各个分布式的worker节点计算得到的梯度值,根据所述梯度值建立一维梯度数组;其中,所述一维梯度数组中每个梯度值对应一个数组序号;
[0008]对所述一维梯度数组中进行随机采样,对采样得到的梯度值进行聚类;
[0009]根据聚类结果,建立多个哈希表;其中,所述多个哈希表包括多个类簇对应的哈希桶;
[0010]根据所述梯度值对应的类簇,将所述一维梯度数组中的梯度值插入所述多个哈希表的哈希桶中;
[0011]根据所述梯度值对应的数组序号和所述梯度值存入所述哈希桶的类簇,生成映射关系表;
[0012]将插入梯度值的所述多个哈希表和所述映射关系表发送给参数服务器完成深度学习的梯度量化。
[0013]在其中一个实施例中,还包括:当检测到各个worker节点通过反向传播计算出梯度值时,获取所有worker节点计算得到的梯度值;将所述张量形式的梯度值转移到Numpy数组中,并改变所述梯度值的数组形式为一维数组;将所述梯度值对应的一维数组进行拼接,得到一维梯度数组。
[0014]在其中一个实施例中,还包括:对所述一维梯度数组进行随机采样,得到N个梯度值作为样本;采用预先设置的K-means聚类算法,对所述样本中的梯度值进行聚类,得到多个聚类中心和所述聚类中心对应的类簇。
[0015]在其中一个实施例中,还包括:获取所述类簇的类簇密度、所述类簇中聚类中心的中心值和所述类簇的信息熵;对所述类簇密度、所述中心值和所述信息熵分别进行标准化,将标准化之后的结果相乘,得到每个类簇对应的标准值;根据每个类簇对应的标准值,给每个所述类簇分配对应数量的哈希桶;根据所述类簇对应的哈希桶,共同组成多个哈希表。
[0016]在其中一个实施例中,还包括:指定GPU中的一个线程,所述线程根据梯度值与所述聚类中心的距离,将所述一维梯度数组中的梯度值指派到所述类簇中;所述线程根据所述梯度值对应的类簇,将所述梯度值插入所述多个哈希表的哈希桶中;其中,所述哈希桶保存插入的所述梯度值的梯度之和以及利用计数器记录梯度值的数量,并根据所述梯度之和与所述梯度值的数量计算得到平均值。
[0017]在其中一个实施例中,还包括:将插入梯度值的所述多个哈希表和所述映射关系表发送给参数服务器,以使所述参数服务器根据多个哈希表和所述映射关系表查询并更新梯度,并得到模型参数;将所述模型参数广播给各个worker节点,计算新的梯度值。
[0018]在其中一个实施例中,还包括:根据所述数组序号,查询所述映射关系表,得到所述数组序列号对应的类簇;在所述类簇中,通过哈希数据查询指令,查询所述数组序号对应的梯度值。
[0019]一种分布式深度学习的梯度量化系统,所述系统包括:
[0020]数组获取模块,用于获取各个分布式的worker节点计算得到的梯度值,根据所述梯度值建立一维梯度数组;其中,所述一维梯度数组中每个梯度值对应一个数组序号;
[0021]哈希表获取模块,用于对所述一维梯度数组中进行随机采样,对采样得到的梯度值进行聚类;根据聚类结果,建立多个哈希表;其中,所述多个哈希表包括多个类簇对应的哈希桶;
[0022]数据插入模块,用于根据所述梯度值对应的类簇,将所述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式深度学习的梯度量化方法,所述方法包括:获取各个分布式的worker节点计算得到的梯度值,根据所述梯度值建立一维梯度数组;其中,所述一维梯度数组中每个梯度值对应一个数组序号;对所述一维梯度数组中进行随机采样,对采样得到的梯度值进行聚类;根据聚类结果,建立多个哈希表;其中,所述哈希表包括多个类簇对应的哈希桶;根据所述梯度值对应的类簇,将所述一维梯度数组中的梯度值插入所述多个哈希表的哈希桶中;根据所述梯度值对应的数组序号和所述梯度值存入所述哈希桶的类簇,生成映射关系表;将插入梯度值的所述多个哈希表和所述映射关系表发送给参数服务器完成深度学习的梯度量化。2.根据权利要求1所述的方法,其特征在于,所述获取各个分布式worker节点计算得到的梯度值,根据所述梯度值建立一维梯度数组,包括:当检测到各个worker节点通过反向传播计算出梯度值时,获取所有worker节点计算得到的梯度值;将所述张量形式的梯度值转移到Numpy数组中,并改变所述梯度值的数组形式为一维数组;将所述梯度值对应的一维数组进行拼接,得到一维梯度数组。3.根据权利要求1所述的方法,其特征在于,对所述一维梯度数组中进行随机采样,对采样得到的梯度值进行聚类,包括:对所述一维梯度数组进行随机采样,得到N个梯度值作为样本;采用预先设置的K-means聚类算法,对所述样本中的梯度值进行聚类,得到多个聚类中心和所述聚类中心对应的类簇。4.根据权利要求3所述的方法,其特征在于,所述根据聚类结果,建立多个哈希表,包括:获取所述类簇的类簇密度、所述类簇中聚类中心的中心值和所述类簇的信息熵;对所述类簇密度、所述中心值和所述信息熵分别进行标准化,将标准化之后的结果相乘,得到每个类簇对应的标准值;根据每个类簇对应的标准值,给每个所述类簇分配对应数量的哈希桶;根据所述类簇对应的哈希桶,共同组成多个哈希表。5.根据权利要求3或4所述的方法,其特征在于,根据所述梯度值对应的类簇,将所述一维梯度数组中的梯度值插入所述多个哈希表的哈希桶中,包括:指定GPU线程,利用所述GPU线程根据梯度值与所述聚类中心的距离,将所述一维梯度数组中的梯度值指派到...

【专利技术属性】
技术研发人员:李东升葛可适符永铨
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

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

1