CN109409505A - 一种用于分布式深度学习的压缩梯度的方法 - Google Patents
一种用于分布式深度学习的压缩梯度的方法 Download PDFInfo
- Publication number
- CN109409505A CN109409505A CN201811216896.1A CN201811216896A CN109409505A CN 109409505 A CN109409505 A CN 109409505A CN 201811216896 A CN201811216896 A CN 201811216896A CN 109409505 A CN109409505 A CN 109409505A
- Authority
- CN
- China
- Prior art keywords
- gradient
- layer
- entropy
- residual error
- training
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种用于分布式深度学习的压缩梯度的方法,利用每一层计算出的梯度矩阵的熵来判断这一层梯度中所包含信息的多少,以此来判断每一层梯度的重要性。之后,利用熵来计算出每一层需要发送多少百分比的梯度,这样既可以减少人工经验的影响,又可以在保证不降低准确率的情况下有效的对梯度进行压缩。
Description
技术领域
本发明涉及分布式训练和深度学习,更具体的说是涉及一种用于分布式深度学习的压缩梯度的方法。
背景技术
随着大数据和高效计算资源的出现,深度学习在人工智能的很多领域都取得了重大突破。然而,面对越来越复杂的任务,数据和深度学习模型的规模都变得日益庞大。为了提高深度学习模型的训练效率,减少训练时间,采用了分布式技术来执行训练任务。通过增加训练节点的数量和利用数据并行的优势,可以极大减少在同等规模训练数据上的前向反向的总计算时间。然而,在反向计算出每一层的梯度之后,梯度交换的成本很高,工作节点之间需要频繁地进行梯度通信,而且由于反向计算出的梯度大部分会趋近于0,而这样的梯度对之后的训练是没有帮助的。所以由并行训练带来的计算时间上的节省,可能将不足以补偿通信时间上代价的增长。因此,网络带宽成为分布式训练规模化的最大瓶颈。
对于这样的瓶颈,目前主要有两种解决方法,梯度量化和梯度稀疏化。
梯度量化主要是将梯度量化到低精度值以减少通信带宽,主要的方法是1bit量化。
梯度稀疏化又叫做阈值量化,在现有的技术中,梯度稀疏化的方法主要依靠人工定义的恒定的阈值或固定的比例来确定需要发送的梯度。
因此,如何提供一种减少人工经验对于训练效果的影响,且不降低准确率的用于分布式深度学习的压缩梯度的方法是本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明提供了一种用于分布式深度学习的压缩梯度的方法,利用每一层计算出的梯度矩阵的熵来判断这一层梯度中所包含信息的多少,以此来判断每一层梯度的重要性。之后,利用熵来计算出每一层需要发送多少百分比的梯度,这样既可以减少人工经验的影响,又可以在保证不降低准确率的情况下有效的对梯度进行压缩。
为了实现上述目的,本发明提供如下技术方案:
一种用于分布式深度学习的压缩梯度的方法,包括如下具体步骤:
步骤1:工作节点读入本地的一批训练数据到内存中;
步骤2:判断是否是第一次迭代训练,如果是第一次迭代训练则初始化模型参数,同时初始化梯度残差G执行步骤3;如果不是第一次迭代训练则执行步骤3;
步骤3:工作节点利用读入的样本数据及对应的期望输出,进行前向传播;在前向传播的过程中,深度神经网络的每一层接受上层的输入x,通过线性变换输出y、非线性变换输出z,作为下一层的输入,最后一层的输出作为深度神经网络的输出;
步骤4:工作节点根据前向传播的最后一层的输出与样本数据的期望输出的误差得到损失值Loss;根据损失值Loss进行反向传播,逐层计算参数梯度u;
步骤5:工作节点在每一层计算出梯度u之后,对计算出的梯度u进行压缩梯度的处理;
其中,所述压缩梯度的具体步骤如下:
步骤51:初始化层数l为1,并且判断层数l是否小于或等于所述深度学习模型的层数L,若小于或等于则执行步骤52,若大于则读取数据进行下一次迭代的训练执行步骤1;
步骤52:对于工作节点训练第l层神经网络计算出的梯度u(l),将梯度平均分成m个区间;假设每个梯度区间中包含j个梯度,对每个区间的梯度计算平均值根据平均值h(i)计算出每个区间的梯度占这一层总梯度的概率值
步骤53:根据每个区间占这一层总梯度的概率值P(i),利用熵的计算公式计算出每一层的梯度的熵值
步骤54:每一层的梯度的熵的取值范围是0≤Hl≤log|m|;利用计算出的熵值Hl以及熵的最大值log|m|,计算出这一层所要发送梯度的百分比
步骤55:利用所述百分比K,对这一层的梯度进行降序排序,对排序后的梯度选择前百分之K的梯度发送给其他的工作节点;
步骤56:在选择发送前百分之K的梯度后,将之前初始化的每个梯度的梯度残差G进行更新;
步骤57:更新完每个梯度的梯度残差G之后,将层数l加1,然后判断层数l是否小于或等于L,若小于或等于则执行步骤52,若大于则读取数据进行下一次迭代的训练执行步骤1。
步骤58:判断是否本地还存在没有训练的数据分片,如果存在则进行下一次迭代训练执行步骤1,如果没有则表示训练完成。
需要了解的是:对于神经网络的训练,在开始训练神经网络的时候,会对初始化模型参数和梯度残差进行随机初始化,在对初始化模型参数和梯度残差进行初始化之前,会对初始化模型参数和梯度残差进行定义,但是这时初始化模型参数和梯度残差并没有初始值,所以判断初始化模型参数和梯度残差是否有初始值,如果有则不是第一次迭代,如果没有则是第一次迭代。
进一步需要了解的是:深度学习的基本模块:卷积层,池化层,全链接层。
其中步骤3中的线性变换具体指通过卷积运算,可以使原信号特征增强,并且降低噪音。主要是对输入数据进行卷积运算,用一个可训练的滤波器去卷积一个输入的数据,计算公式为:xl=f((∑xl-1*Kl+bl));
非线性变换具体指针对池化层,一般的方法是最大池化。主要作用是:减少网络的参数来减小计算量,并且能够在一定程度上控制过拟合。其中最大池化是用不重叠的矩形框将输入层分成不同的区域,对于每个矩形框的数取最大值作为输出层。
优选的,在上述的一种用于分布式深度学习的压缩梯度的方法中,所述步骤56中更新梯度残差分两种情况:
(1)若梯度已经发送给其他工作节点,则该梯度的梯度残差G=0;
(2)若梯度未发送给其他工作节点,则该梯度的梯度残差G=G+u。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种用于分布式深度学习的压缩梯度的方法,利用每一层计算出的梯度矩阵的熵来判断这一层梯度中所包含信息的多少,以此来判断每一层梯度的重要性。之后,利用熵来计算出每一层需要发送多少百分比的梯度,这样既可以减少人工经验的影响,又可以在保证不降低准确率的情况下有效的对梯度进行压缩。本发明考虑到梯度的熵值体现了梯度的重要性,利用每一层的梯度的熵值,通过和最大值的比例来确定需要发送的梯度的百分比,而且,在本发明中虽然需要给定区间个数m,其中m的取值对整个层的梯度的熵值的计算并没有多大影响,这样就有效的减少了人工的经验所带来的负面的影响。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1附图为本发明的流程图;
图2附图为本发明的步骤3中线性变换示意图;
图3附图为本发明的步骤3中非线性变换示意图;
图4附图为本发明的卷积神经网络模型图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种用于分布式深度学习的压缩梯度的方法,利用每一层计算出的梯度矩阵的熵来判断这一层梯度中所包含信息的多少,以此来判断每一层梯度的重要性。之后,利用熵来计算出每一层需要发送多少百分比的梯度,这样既可以减少人工经验的影响,又可以在保证不降低准确率的情况下有效的对梯度进行压缩。
一种用于分布式深度学习的压缩梯度的方法,包括如下具体步骤:
步骤1:工作节点读入本地的一批训练数据到内存中;
步骤2:判断是否是第一次迭代训练,如果是第一次迭代训练则初始化模型参数,同时初始化梯度残差G执行步骤3;如果不是第一次迭代训练则执行步骤3;
步骤3:工作节点利用读入的样本数据及对应的期望输出,进行前向传播;在前向传播的过程中,深度神经网络的每一层接受上层的输入x,通过线性变换输出y、非线性变换输出z,作为下一层的输入,最后一层的输出作为深度神经网络的输出;
步骤4:工作节点根据前向传播的最后一层的输出与样本数据的期望输出的误差得到损失值Loss;根据损失值Loss进行反向传播,逐层计算参数梯度u;
步骤5:工作节点在每一层计算出梯度u之后,对计算出的梯度u进行压缩梯度的处理;
其中,压缩梯度的具体步骤如下:
步骤51:初始化层数l为1,并且判断层数l是否小于或等于深度学习模型的层数L,若小于或等于则执行步骤52,若大于则读取数据进行下一次迭代的训练执行步骤1;
步骤52:对于工作节点训练第l层神经网络计算出的梯度u(l),将梯度平均分成m个区间;假设每个梯度区间中包含j个梯度,对每个区间的梯度计算平均值根据平均值h(i)计算出每个区间的梯度占这一层总梯度的概率值
步骤53:根据每个区间占这一层总梯度的概率值P(i),利用熵的计算公式计算出每一层的梯度的熵值
步骤54:每一层的梯度的熵的取值范围是0≤Hl≤log|m|;利用计算出的熵值Hl以及熵的最大值log|m|,计算出这一层所要发送梯度的百分比
步骤55:利用百分比K,对这一层的梯度进行降序排序,对排序后的梯度选择前百分之K的梯度发送给其他的工作节点;
步骤56:在选择发送前百分之K的梯度后,将之前初始化的每个梯度的梯度残差G进行更新;
步骤57:更新完每个梯度的梯度残差G之后,将层数l加1,然后判断层数l是否小于或等于L,若小于或等于则执行步骤52,若大于则读取数据进行下一次迭代的训练执行步骤1。
步骤58:判断是否本地还存在没有训练的数据分片,如果存在则进行下一次迭代训练执行步骤1,如果没有则表示训练完成。
需要了解的是:对于神经网络的训练,在开始训练神经网络的时候,会对初始化模型参数和梯度残差进行随机初始化,在对初始化模型参数和梯度残差进行初始化之前,会对初始化模型参数和梯度残差进行定义,但是这时初始化模型参数和梯度残差并没有初始值,所以判断初始化模型参数和梯度残差是否有初始值,如果有则不是第一次迭代,如果没有则是第一次迭代。
进一步需要了解的是:深度学习的基本模块:卷积层,池化层,全链接层。
其中,步骤3中的线性变换如图2所示,具体指通过卷积运算,可以使原信号特征增强,并且降低噪音。主要是对输入数据进行卷积运算,用一个可训练的滤波器去卷积一个输入的数据,计算公式为:xl=f((∑xl-1*Kl+bl));
非线性变换如图3所示,具体指针对池化层,一般的方法是最大池化。主要作用是:减少网络的参数来减小计算量,并且能够在一定程度上控制过拟合。其中最大池化是用不重叠的矩形框将输入层分成不同的区域,对于每个矩形框的数取最大值作为输出层。
步骤3的神经网络模型以卷积神经网络为例如图4所示,在卷积神经网络中,C1层是卷积层,其输入为输入图像,主要是根据三个卷积核和偏移量进行卷积运算,输出为三个特征映射图。
S2层是采样层(池化层),输入为三个特征映射图,主要是对特征图进行下采样操作实现数据降维,每个像素块通过取最大值的方式缩为一个像素,并通过Sigmoid函数得到三个S2层的特征图。
C3层是卷积层,和C1层相似,输入为S2层的特征图,输出为特征映射图。
S4层是采样层(池化层),和S2层相似,输入为特征映射图,输出为S4层的特征图。
最后一层为全连接层,先将S4层的特征图连接成一个向量作为输入,输出为分类处理的结果。
为了进一步优化上述技术方案,步骤56中更新梯度残差分两种情况:
(1)若梯度已经发送给其他工作节点,则该梯度的梯度残差G=0;
(2)若梯度未发送给其他工作节点,则该梯度的梯度残差G=G+u。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (2)
1.一种用于分布式深度学习的压缩梯度的方法,其特征在于,包括如下具体步骤:
步骤1:工作节点读入本地的一批训练数据到内存中;
步骤2:判断是否是第一次迭代训练,如果是第一次迭代训练则初始化模型参数,同时初始化梯度残差G执行步骤3;如果不是第一次迭代训练则执行步骤3;
步骤3:工作节点利用读入的样本数据及对应的期望输出,进行前向传播;在前向传播的过程中,深度神经网络的每一层接受上层的输入x,通过线性变换输出y、非线性变换输出z,作为下一层的输入,最后一层的输出作为深度神经网络的输出;
步骤4:工作节点根据前向传播的最后一层的输出与样本数据的期望输出的误差得到损失值Loss;根据损失值Loss进行反向传播,逐层计算参数梯度u;
步骤5:工作节点在每一层计算出梯度u之后,对计算出的梯度u进行压缩梯度的处理;
其中,所述压缩梯度的具体步骤如下:
步骤51:初始化层数l为1,并且判断层数l是否小于或等于所述深度学习模型的层数L,若小于或等于则执行步骤52,若大于则读取数据进行下一次迭代的训练执行步骤1;
步骤52:对于工作节点训练第l层神经网络计算出的梯度u(l),将梯度平均分成m个区间;假设每个梯度区间中包含j个梯度,对每个区间的梯度计算平均值根据平均值h(i)计算出每个区间的梯度占这一层总梯度的概率值
步骤53:根据每个区间占这一层总梯度的概率值P(i),利用熵的计算公式计算出每一层的梯度的熵值
步骤54:每一层的梯度的熵的取值范围是0≤Hl≤log|m|;利用计算出的熵值Hl以及熵的最大值log|m|,计算出这一层所要发送梯度的百分比
步骤55:利用所述百分比K,对这一层的梯度进行降序排序,对排序后的梯度选择前百分之K的梯度发送给其他的工作节点;
步骤56:在选择发送前百分之K的梯度后,将之前初始化的每个梯度的梯度残差G进行更新;
步骤57:更新完每个梯度的梯度残差G之后,将层数l加1,然后判断层数l是否小于或等于L,若小于或等于则执行步骤52,若大于则读取数据进行下一次迭代的训练执行步骤1。
步骤58:判断是否本地还存在没有训练的数据分片,如果存在则进行下一次迭代训练执行步骤1,如果没有则表示训练完成。
2.根据权利要求1所述的一种用于分布式深度学习的压缩梯度的方法,其特征在于,所述步骤56中更新梯度残差分两种情况:
(1)若梯度已经发送给其他工作节点,则该梯度的梯度残差G=0;
(2)若梯度未发送给其他工作节点,则该梯度的梯度残差G=G+u。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811216896.1A CN109409505A (zh) | 2018-10-18 | 2018-10-18 | 一种用于分布式深度学习的压缩梯度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811216896.1A CN109409505A (zh) | 2018-10-18 | 2018-10-18 | 一种用于分布式深度学习的压缩梯度的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109409505A true CN109409505A (zh) | 2019-03-01 |
Family
ID=65467613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811216896.1A Pending CN109409505A (zh) | 2018-10-18 | 2018-10-18 | 一种用于分布式深度学习的压缩梯度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109409505A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110619388A (zh) * | 2019-09-20 | 2019-12-27 | 北京金山数字娱乐科技有限公司 | 一种分布式训练中梯度同步方法及装置 |
CN111027671A (zh) * | 2019-11-12 | 2020-04-17 | 华中科技大学 | 一种基于模型结构特性的分布式深度学习通信方法和系统 |
CN113467949A (zh) * | 2021-07-07 | 2021-10-01 | 河海大学 | 边缘计算环境下用于分布式dnn训练的梯度压缩方法 |
CN114298277A (zh) * | 2021-12-28 | 2022-04-08 | 四川大学 | 一种基于层稀疏化的分布式深度学习训练方法及系统 |
WO2022267036A1 (zh) * | 2021-06-25 | 2022-12-29 | 华为技术有限公司 | 神经网络模型训练方法和装置、数据处理方法和装置 |
-
2018
- 2018-10-18 CN CN201811216896.1A patent/CN109409505A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110619388A (zh) * | 2019-09-20 | 2019-12-27 | 北京金山数字娱乐科技有限公司 | 一种分布式训练中梯度同步方法及装置 |
CN110619388B (zh) * | 2019-09-20 | 2024-04-02 | 北京金山数字娱乐科技有限公司 | 一种分布式训练中梯度同步方法及装置 |
CN111027671A (zh) * | 2019-11-12 | 2020-04-17 | 华中科技大学 | 一种基于模型结构特性的分布式深度学习通信方法和系统 |
WO2022267036A1 (zh) * | 2021-06-25 | 2022-12-29 | 华为技术有限公司 | 神经网络模型训练方法和装置、数据处理方法和装置 |
CN113467949A (zh) * | 2021-07-07 | 2021-10-01 | 河海大学 | 边缘计算环境下用于分布式dnn训练的梯度压缩方法 |
CN114298277A (zh) * | 2021-12-28 | 2022-04-08 | 四川大学 | 一种基于层稀疏化的分布式深度学习训练方法及系统 |
CN114298277B (zh) * | 2021-12-28 | 2023-09-12 | 四川大学 | 一种基于层稀疏化的分布式深度学习训练方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109409505A (zh) | 一种用于分布式深度学习的压缩梯度的方法 | |
CN112181666B (zh) | 一种基于边缘智能的设备评估和联邦学习重要性聚合方法 | |
CN111835827B (zh) | 物联网边缘计算任务卸载方法及系统 | |
CN110728361B (zh) | 一种基于强化学习的深度神经网络压缩方法 | |
CN111628855B (zh) | 基于深度强化学习的工业5g动态多优先级多接入方法 | |
CN113905391B (zh) | 集成学习网络流量预测方法、系统、设备、终端、介质 | |
CN111814973B (zh) | 一种适用于神经常微分方程网络计算的存内计算系统 | |
CN108334945A (zh) | 深度神经网络的加速与压缩方法及装置 | |
CN113595993B (zh) | 边缘计算下模型结构优化的车载感知设备联合学习方法 | |
CN113098714A (zh) | 一种基于深度强化学习的低时延网络切片的方法 | |
Irwin-Harris et al. | A graph-based encoding for evolutionary convolutional neural network architecture design | |
CN110033089A (zh) | 基于分布式估计算法的深度神经网络参数优化方法及系统 | |
CN114358295B (zh) | 基于机器学习框架的二分类方法及相关装置 | |
CN111126599A (zh) | 一种基于迁移学习的神经网络权重初始化方法 | |
CN112288080A (zh) | 面向脉冲神经网络的自适应模型转化方法及系统 | |
CN111382840B (zh) | 一种面向自然语言处理的基于循环学习单元的htm设计方法 | |
CN109635938A (zh) | 一种自主学习脉冲神经网络权值量化方法 | |
Verma et al. | A" Network Pruning Network''Approach to Deep Model Compression | |
CN116306780B (zh) | 一种动态图链接生成方法 | |
CN111488981A (zh) | 基于高斯分布估计选取深度网络参数稀疏阈值的方法 | |
CN111740925A (zh) | 一种基于深度强化学习的Coflow调度方法 | |
CN109697511B (zh) | 数据推理方法、装置及计算机设备 | |
CN115758643A (zh) | 一种基于时空特征融合的网络流量预测方法、装置及存储介质 | |
CN115904533A (zh) | 一种基于深度强化学习的边缘计算任务卸载方法 | |
CN114611673A (zh) | 神经网络压缩方法、装置、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190301 |
|
RJ01 | Rejection of invention patent application after publication |