大足网站建设,上海网站托管,做网页素材,wordpress设置文章目录摘要—基于参数服务器架构的异步训练广泛应用于大规模数据集和深度神经网络模型的扩展训练。在大规模分布式深度学习系统中#xff0c;通信一直被认为是主要瓶颈。最近的研究尝试通过梯度稀疏化和量化方法来减少通信流量。我们发现前期研究存在三个限制。首先#xff0c;他们…摘要—基于参数服务器架构的异步训练广泛应用于大规模数据集和深度神经网络模型的扩展训练。在大规模分布式深度学习系统中通信一直被认为是主要瓶颈。最近的研究尝试通过梯度稀疏化和量化方法来减少通信流量。我们发现前期研究存在三个限制。首先他们的梯度稀疏化工作的基本准则是梯度的大小。然而梯度的大小表示当前的优化方向而不能指示参数的重要性这可能导致对重要参数的延迟更新。其次他们基于整个模型的梯度量化方法往往会导致梯度聚合时的误差累积因为DNN模型不同层的梯度遵循不同的分布。第三以前的量化方法对CPU的使用较多给服务器带来了较大的开销。我们提出了MIPD一种自适应的、逐层的梯度稀疏化框架根据模型解释性和梯度的概率分布来压缩梯度。MIPD根据其参数的相应重要性由模型解释性定义来压缩梯度。还提出了指数平滑方法来补偿服务器上丢失的梯度以减小梯度误差。MIPD建议在每个训练步骤中更新一半的参数以减少服务器的CPU开销。它基于梯度的概率分布对梯度进行编码从而最小化近似误差。在GPU集群上进行的大量实验结果表明所提出的框架可以将DNN的训练性能提高多达36.2%与最先进的解决方案相比确保了高精度。相应地服务器的CPU和网络使用分别下降了最多42.0%和32.7%。
关键词—指数平滑预测梯度稀疏化模型解释性概率分布量化
1 引言
近年来深度学习在各种研究和工业领域如计算机视觉和自然语言处理取得了显著发展。通过互联网和高性能计算产生的大数据促进了深度学习的蓬勃发展并为分布式深度学习的革命提供了强有力的支持。参数服务器架构下的异步训练已被证明是扩展深度神经网络训练的有效方法。然而收敛时间与线性可扩展性存在很大差异。由于训练过程中传输的数据量巨大通信被确定为瓶颈。由于工作节点频繁与服务器交换数据通信往往占据了整体训练时间的相当大部分 90%。大多数知名DNN的数据规模通常在Gb级别。因此即使使用高吞吐量网络如Infiniband在数百万次迭代中重复传输如此大量的数据也是难以承受的昂贵代价。此外GPU计算的快速革新导致计算时间的极端压缩进一步凸显了通信带来的瓶颈。
已经提出了各种方法来减少分布式DNN训练的通信开销。通过分析通信策略可以自然地确定三种可能的通信减少途径1减少参数更新频率无损2将通信与计算重叠无损3梯度压缩有损。减少更新频率的努力是对有损方法的补充。重叠解决方案对于线性神经网络架构如VGG、AlexNet效果良好但最近的网络如ResNet和Inception限制了这种重叠的机会。几项最近的研究表明由于随机梯度下降SGD的迭代特性深度学习训练可以通过有损梯度实现收敛。这为通过积极压缩梯度来减轻通信开销创造了新机遇。
因此梯度压缩仍然是分布式深度学习研究人员关注的一个主要领域。梯度压缩的关键部分包括识别不重要的梯度并对其进行过滤以减少通信开销。与先前研究采用的方法不同我们着重于识别重要参数并为它们提供更高的更新优先级以加快训练速度。先前研究用于识别不重要梯度的主要标准是其大小。然而梯度不能指示参数的重要性即定义为它们对DNN模型预测准确性的贡献。我们确定了先前研究的四个局限性。
首先先前的工作中的稀疏化和量化方法都是对DNNs的模型无关的方法。压缩标准仅取决于梯度的大小。这导致重要参数的更新潜在延迟并减慢了收敛速度因为梯度的大小不能指示其对应参数的重要性。对于最常用的CNNs来说在提取微小细节特征方面浅层主要起到作用。深层主要集中于特征整合和解读整体轮廓[8]。通过跨不同层使用参数对最终预测的准确性的影响是不同的。及时更新重要参数有利于DNN训练的收敛。因此有必要探索一种模型相关的方法来识别重要参数并优先高更新它们以加速训练。
其次先前的工作没有为服务器上被丢弃的梯度提供有效的补偿策略从而导致梯度误差的积累并影响收敛。它们丢失了接近零周围的大量实际梯度并产生大的逼近误差从而减慢了收敛速度。
第三先前的研究通过假设梯度遵循均匀分布来量化梯度[18][29]从而导致较大的梯度误差。一些研究提出基于梯度概率分布来量化整个模型的梯度可以减少其分布产生的梯度误差。然而不同层遵循不同的概率分布。因此基于整个模型量化梯度会增加梯度误差并可能减慢收敛速度。
第四我们确定了影响分布式DNN训练系统性能的两个关键因素网络带宽和服务器的CPU/内存性能。大多数通信减少研究仅关注减少梯度传输开销。他们忽略了服务器上参数更新开销CPU/内存开销。当扩展具有大型DNN模型的分布式DNN训练时服务器上的参数更新成为一个障碍仅仅减少通信开销是不够高效的。
为了解决上述问题我们设计了一种自适应梯度稀疏化框架MIPD根据模型可解释性和指数平滑预测方法来识别各层的重要梯度从而减少DNN训练的通信开销。MIPD还为服务器提供了梯度补偿策略以减少稀疏化产生的梯度误差。为了减少服务器的参数更新开销MIPD建议每次迭代只更新一半的参数。此外MIPD提供了基于概率分布的梯度量化和逼近算法进一步减少梯度量化过程中的通信开销和逼近误差。具体来说我们在表1中比较了各种梯度稀疏化和量化方法并总结了我们的贡献如下 我们为工作节点设计了一个轻量级参数拉取接口可以确定每个训练步骤中要拉取和更新的参数数量。大多数先前的研究关注如何减少推送阶段的数据传输开销。我们的研究提供了双向稀疏化策略在DNN训练过程中包括拉取和推送阶段以减少通信开销和服务器的参数更新负担。 我们提出了一种基于模型可解释性的新算法以识别各层的重要梯度从而减少训练过程中的参数更新开销。在我们的框架中重要参数以高优先级进行更新以加速DNN的训练。 我们还提供了一种基于指数平滑预测的算法进一步识别重要梯度从而增强系统的鲁棒性。该算法还被提出用于服务器上的梯度补偿以减少稀疏化产生的梯度误差率。 我们提出了一种梯度量化方法根据各层的概率分布进一步减少通信开销和梯度的逼近误差。该算法的关键思想是聚类方法根据基于密度的聚类方法将接近彼此的梯度分组。这种方法可以将梯度的逼近误差限制在一个小范围内。 本文的剩余部分组织如下我们在第2节描述动机第3节给出系统概述并在第4、5节提供所提出框架的详细描述。在第6节我们讨论实验设置并随后呈现基准结果。我们在第7节分析梯度压缩方法的现有解决方案并在第8节结束论文。 (a) 对于1-10层的精度降级的比较(b)指数平滑预测和真实值在不同层之间的梯度差异。 2 背景和动机
2.1 参数更新的瓶颈分析
在考虑与参数服务器架构在 GPU 集群上同步分布式 DNN 训练后参数更新被确定为严重影响训练性能的瓶颈。我们还确定了两个可能减慢训练速度的关键因素梯度的传输和聚合。它们的性能主要取决于服务器的网络带宽和计算资源。因此为了减少参数更新的开销并提高训练性能我们需要专注于减少服务器和工作者之间的数据传输以及服务器的计算资源利用率。
2.2 梯度稀疏化与量化挑战
在分布式 DNN 的训练过程中使用参数服务器架构在服务器和工作者之间交换大量数据产生了很大的通信开销并成为一个障碍。最近的研究表明梯度稀疏化和量化是减少通信开销的有效方法。梯度压缩的关键元素它通过识别显著梯度稀疏化并用低精度进行编码量化来实现通信减少在每一步训练过程中消除非必要的通信。准确区分显著梯度以加速分布式 DNN 训练是一个挑战。
2.3 模型可解释性和梯度与参数的重要性
深度学习DL的快速发展引起了对人类如何理解 DL 模型运作以及设计在关键情况下能够如预期运行的模型的担忧。对于理解 DL 模型的需求的日益认识已经从单向关注模型准确性转变为更广泛的视角其中包括对 DL 可解释性的强调。针对黑盒模型的许多方法已被提出来解决模型可解释性问题包括 LIME 和 SHAP它们专注于提供一组“权重”以提供关于模型如何处理每个实例的见解。受 SHAP 方法的启发我们的方法涉及根据其对 DNN 模型的预测准确性的贡献来识别显著参数。
以前的研究使用了各种基于从梯度中提取信息的方法来压缩梯度例如梯度的大小或在频域中使用基于 FFT 的方法对梯度进行稀疏化等。从梯度中提取的信息只能指示 DNN 训练的优化方向不能用于推断参数的重要性。与以往研究不同我们根据参数对 DNN 模型的预测准确性的贡献量来量化参数的重要性以识别显著梯度。
2.4 观察、挑战和机遇
根据对梯度稀疏化和量化评估结果的观察和分析我们确定了五个优化方向如下所述。
2.4.1 稀疏化逐层对比整个模型
通常梯度稀疏化可以应用于不同的粒度例如整个模型、逐层等。大多数现有稀疏化方法的理论分析假设梯度的稀疏化应用于整个模型的梯度。重要的是一般来说逐层稀疏化与整个模型稀疏化不同尽管对于某些量化方法结果是相同的。我们在以前的研究中确定了两个问题。首先我们评估了使用稀疏化比率为 50% 的 Top k 方法不同层的丢弃率突出显示当使用整个模型稀疏化时不同层的丢弃率相似即它们都在约 50% 左右如图 3a 所示。然而不同层的重要性不同。我们比较了针对预训练的 DNN 模型在不同层删除不同百分比参数时的精度降级如图 1a 所示并观察到不同层之间的精度降级不同。因此对所有层使用相同的梯度压缩率是一种低效的方法。第二在使用整个模型稀疏化时几乎所有 DNN 模型的偏差都已被删除如图 3a 所示这减慢了收敛速度。我们比较了在删除所有偏差和在正常训练中使用所有参数时的精度曲线如图 3b 所示并观察到在 DNN 训练中删除偏差时精度下降高达 12.25%。 (a) 对于总体丢弃比率为50%不同层的丢弃率比较 (b) 在使用整个模型和丢弃所有偏置项进行训练时验证准确性比较。 偏差的机会DNN 模型中的偏差数量远少于其他参数。它占总体模型参数的一小部分通常少于 1%。因此在训练期间可以传输所有偏差而无需对其进行压缩以加速收敛。
2.4.2 机会模型可解释性和 SHAP
受 SHAP 方法 [12] 对模型可解释性的启发该方法旨在为特定预测为每个特征参数分配重要值我们使用类似的方法评估 MobileNet 每个层的参数的重要性如图 2a 所示。根据图 2a我们观察到在每个层删除一定百分比参数时精度降级差异很大这意味着不同层之间的重要性不同。我们进一步分析了训练过程中参数的重要性并发现每层的参数 L2 范数与层的重要性呈正相关。基于这一观察我们评估了 MobileNet 每层的参数 L2 范数如图 2b 所示并发现它与通过删除预训练模型一定百分比参数来评估的精度降级呈正相关。这一观察也得到了知识蒸馏和模型压缩用于有效推理的支持。因此我们根据参数的 L2 范数在训练过程中计算每层的丢弃率。 (a) 对于第4至第8层的精度降级比较(b) 第4至第8层参数的L2范数。 2.4.3 双向压缩挑战
在训练过程中服务器和工作节点之间的训练信息传输是双向的包括数据的拉取和推送。因此在拉取和推送过程中传输的数据都希望进行压缩以实现最佳的通信性能。然而稀疏化和量化都是计算密集型任务。当使用双向压缩方法时服务器和工作节点都需要处理压缩和解压缩过程这给服务器带来了强大的计算开销[13][14][15]。因此为了减轻服务器的计算开销我们选择将部分参数撤回到工作节点而不进行压缩。我们在图4b中比较了半参数更新方法和普通的随机梯度下降法SGD观察到半更新策略可以达到与普通SGD相同的收敛精度。 a普通SGD和指数平滑预测ESP方法的比较b普通SGD和一半参数更新方法的比较。 2.4.4 指数平滑预测方法ESP
上述策略可能导致优先级较低的层未能及时更新从而减慢了收敛速度。为了实现一个稳健的更新策略我们提供了一种指数平滑预测方法用于校正每个层的下降率。选择这种方法的原因是DNN训练是一个连续的时间优化过程。因此历史数据可以在一定程度上用于预测未来。我们评估了预测梯度与真实梯度之间的差异如图1b所示。我们观察到差异小于0.0012这意味着当我们使用预测值来补偿真实值时误差率在可接受的范围内。此外在图4a中比较了使用普通SGD和ESP进行DNN训练的性能它们通过ESP估计的预测梯度更新参数并观察到它们的训练性能相似。这表明我们可以在服务器上运行一个预测程序为训练过程中丢弃的梯度提供一个估计值。
2.4.5 梯度概率分布的量化
以前的研究要么通过假设梯度服从均匀分布[18][29]要么根据整个模型的概率分布对梯度进行量化[3][4]这会产生较大的梯度误差并减慢收敛速度。不同层之间的梯度遵循不同的概率分布。基于整个模型对梯度进行量化可能会产生较大的梯度误差。为了减小梯度误差我们基于各层的概率分布逐层量化梯度。我们发现不同层之间的梯度大致遵循变化的正态分布。因此我们使用正态分布的3σ规则逐层量化梯度以最小化梯度误差并加速训练过程。
3 系统概述
MIPD通过采用参数服务器架构实现了异步参数更新策略。在训练过程中服务器和工作节点维护各自的模型参数。工作节点从服务器拉取选定的全局参数例如一半的参数到本地级别并使用拉取的全局参数更新本地参数。随后工作节点生成梯度并使用计算得到的梯度更新本地参数。然后工作节点使用第4节介绍的方法选择重要的梯度并使用第5节介绍的方法量化重要的梯度。最后工作节点将量化的梯度推送给服务器。服务器解压缩接收到的梯度以更新全局参数。我们的框架主要由三个模块组成包括工作节点上的参数拉取和推送模块以及服务器上的梯度解压缩和补偿模块。详细信息请参见算法1符号请参见表2。 工作者驱动的参数拉取模块我们为工作者设计了一个轻量级的、逐层的参数拉取接口允许工作者有选择地从服务器拉取参数。由于参数更新是一个CPU密集型任务该接口被设计成从部分层向工作者拉取参数以减少服务器的CPU开销从而提高训练性能。确定每个训练步骤中更新哪些层的工作由工作者完成因此与基于层的普通SGD相比服务器没有额外的开销。
梯度稀疏化和量化模块我们设计了一个参数推送模块包括逐层梯度丢弃率定义部分和基于概率的梯度量化部分。逐层丢弃率定义部分包括两种算法基于模型可解释性的算法和基于指数平滑的算法用于在推送阶段为每个层定义梯度的丢弃率。基于概率的梯度量化部分用于量化选定的梯度并将其推送到服务器以减少传输数据的开销。
参数更新模块我们在服务器上设计了一个参数更新模块用于解压工作者接收的梯度。这个解压算法可以最小化梯度的近似误差因为我们根据聚类方法设计了它。梯度补偿策略也包括在这部分中以减少梯度稀疏化产生的梯度误差。
4 层次逐层丢弃策略
4.1 根据模型可解释性定义丢弃率
利用梯度稀疏化方法进行通信减少的关键标准是 - 哪些梯度是不重要的在训练过程中应该被丢弃
特别地DNN 训练类似于黑匣子我们从训练过程中获取的信息是有限的并且单一标量损失和准确度是对这个高维动态过程最常见的观点[22]。因此在训练中识别重要的梯度是困难的。一般而言梯度的大小可以指示其重要性因为较大的梯度对降低损失的贡献更大。然而梯度只能指示当前训练阶段对降低损失的贡献而忽略了神经网络结构。从梯度中提取的信息无法表明参数的重要性。由于参数和梯度总是成对出现我们的工作侧重于根据整个神经网络结构概述参数对 DNN 模型预测准确性的影响从而确定用于更新全局参数的重要梯度。
4.1.1 层次重要性定义
每个层中参数的重要性定义为在将其丢弃时准确度的降级情况。我们比较了在不同层中丢弃一定百分比的参数时预训练的 DNN 模型的准确度降级并评估了不同层的 L2-范数。我们发现参数的 L2-范数与参数的层次重要性呈正相关。因此我们通过参数的 L2-范数来定义每个层中参数的重要性。 4.1.2 通过模型可解释性计算丢弃率
由于我们发现参数的 L2-范数与参数的层次重要性呈正相关具有较大 L2-范数值的参数相关梯度也需要快速更新。因此这些梯度需要按照较高优先级发送到服务器以加速训练的收敛。因此我们计算层 i 参数的 L2-范数为 。由于具有较大 L2-范数值的参数层比具有较小值的层更重要因此具有较大 L2-范数的层被分配较大的权重。每个层的权重计算为该层的 L2-范数值占所有层 L2-范数之和的百分比。我们计算层 i 的权重为 。对这些具有较大权重的层分配较小的丢弃率。因此每个层的丢弃率计算为该参数的 L2-范数在所有层 L2-范数之和中的反比。因此对于层 i根据模型可解释性计算的丢弃率定义如下方程1所示。 4.2 通过指数平滑定义丢弃率
在上述部分中根据其相应参数的重要性逐层丢弃梯度。这可能导致一些不重要参数训练不足从而减缓收敛速度。因此为了增加我们方法的健壮性我们提出了一个基于指数平滑预测的算法该算法校正每个层的丢弃率并补偿被丢弃的梯度。
4.2.1 ESP 方法
指数平滑方法经常用于时间序列预测模型以预测给定实体 i 在时间 t 处的目标值 的未来值。每个实体代表时间信息的逻辑分组 - 例如气候学中来自个别天气站的测量值或医学中不同患者的生命体征 - 并且可以同时观测到[25]。令 为时间 t 处的观测序列。那么时间 T 处的点预测表示估计未来值 给定 t 时的信息: ∀t ≤ T其中 h 表示预测时段[24]。在最简单的情况下一步预测模型采用如下方程2的形式 其中 被定义为模型的预测 为目标的观测值 为在回顾窗口 k 内的输入数据。s_i 为与实体相关的静态元数据例如初始化的 。 为指数平滑预测函数。
我们采用指数平滑方法的加权平均形式以预测未来值。因此T1 时刻的预测值可由 T 时刻的观测值和预测值表示为如下方程3 其中 0 ≤ α ≤ 1 为平滑系数。预测过程从某一特定时间开始定义起始时间的值为 y_0我们可以获得以下方程4。 4.2.2 通过 ESP 计算丢弃率
根据上述 ESP 方法的分析可以使用上一次迭代中计算的梯度的预测值和真实值方程3来预测梯度即如下方程5所示。 根据梯度的预测值和真实值之间的差异我们为每个层定义丢弃率。根据上述差异的 L2-范数计算层 i 的权重为 。我们为那些具有大权重的层分配较小的丢弃率而为那些具有较小权重的层分配较大的丢弃率。这是因为当某一层的梯度预测值与真实值之间的差异较小时我们可以使用预测值来补偿全局参数的梯度并将误差率控制在可接受范围内。每个层的丢弃率通过其差异在所有层中的反比计算。对于层 i根据方程6定义了其丢弃率。 4.2.3全局梯度补偿
由于根据上述章节4.1和4.2介绍的丢弃策略每一层的非零梯度部分会被丢弃为了减少通信开销梯度的不足导致了服务器上梯度聚合时的误差。因此为了减少这种误差我们提出了全局梯度补偿策略作为梯度稀疏化框架的一部分。指数平滑预测方法用于在服务器上预测梯度。预测公式如方程5所示。我们使用由服务器利用指数平滑预测方法计算的预测值填充丢弃的梯度从而减少由梯度丢弃策略产生的梯度误差。
4.3 梯度丢弃策略
根据基于模型可解释性和指数平滑预测算法的丢弃率定义可以自适应地为每一层计算最终的丢弃率使用以下方程7 这里是第层的最终丢弃率和分别是基于模型可解释性和指数平滑预测算法定义的丢弃率是平滑系数。平滑系数可以根据应用需求自适应定义。随着的增加最终的丢弃率倾向于信任模型可解释性定义的丢弃策略。
最后在将整体稀疏化率定义为s%时我们得到了对于第层需要丢弃的梯度数量为。这里是打算丢弃的第层的梯度数量N是整个模型的总梯度数量s%是用户定义的丢弃率是第层的最终丢弃率。在训练过程中为每一层定义了丢弃率之后我们使用Top-k方法来丢弃不重要的梯度。Top-k方法适用于参数计算的梯度除了偏置在第2.4.1节介绍。
5 逐层梯度近似
为了进一步减少基于丢弃策略的分布式深度神经网络训练的通信开销选定的梯度根据其概率分布进行压缩。基于数据压缩的观点我们致力于找到一个能够将高精度数据映射到低精度版本的映射规则。为了实现这一目标首先我们需要找到数据的分布其次我们需要探索一种近似方法来计算原始数据的近似值最后我们需要定义一条规则将高精度数据映射到低精度数据。
5.1 概率分布分析和梯度近似
我们通过对 MobileNet 进行评估分析了每层梯度的分布并在图 5a 和图 5b 中绘制出来。为了使观察更具有说服力我们还可视化了 ResNet101 和 ResNet152 的梯度分布并在图 5c 和图 5d 中展示。我们发现每层梯度近似地遵循高斯分布图 5a不同层具有不同的均值和方差图 5b。因此我们基于它们的概率分布对梯度进行逐层压缩。 图5.a一个层的梯度分布b不同层的梯度分布c和dResNet101和ResNet152的梯度分布。 对于梯度的近似我们的研究旨在探索用低精度数据表示原始梯度。由于每层梯度近似地遵循正态分布我们将梯度的分布范围划分为 n 个间隔。然后我们使用 n 个低精度数据表示原始梯度。每个低精度数据表示一个间隔。我们根据梯度的概率分布将分布范围划分并允许每个间隔包含相似数量的梯度。
以标准正态分布为例如图 6 所示我们分析了正态分布的特征并提供了将 n 的采样间隔划分为基线。使用正态分布的 规则将每层梯度划分为若干组间隔。 规则表明68、95和99.7的数据分别落在距离平均值的第一、二和三个标准差内[23]。为了使每个间隔包含相似数量的梯度我们将 3-s 间隔划分如下 和 划分为 68% × n 个间隔 和 划分为 28% × n 个间隔 和 划分为 4% × n 个间隔。其中n 表示总间隔数是一个用户定义的参数表示压缩或近似率。以上划分间隔的动机是数据密度分布在均值周围更高在离均值越远的地方越低。 当将标准正态分布扩展到一般正态分布时上述 3-s 间隔可以重新定义为 。对于上述 3-s 间隔中任意区间 [g1, g2]我们可以计算区间 [g1, g2] 中的梯度的平均值并将此平均值分配为代表落在该区间内的原始梯度值的代理。为了减少计算大量数据的平均值的计算开销我们根据正态分布的密度函数推导出平均值如下所示 正态分布的概率密度函数定义如下其中μ为均值σ为标准差。对于某一特定层中的任意区间[g1, g2]我们将作为该区间的均值。接下来我们可以计算值如下所示的方程8。为了简化符号我们设eg1 eg2 。详细推导见附录A3可在计算机学会数字图书馆http://doi.ieeecomputersociety.org/10.1109/TPDS.2022.3154387找到。 根据以上分析我们将分配为代理以近似区间[gi, gi1]中的原始梯度。因此代理系列将与压缩梯度一起发送到服务器。
5.2 梯度编码和解码
由于梯度分布被划分为 n 个区间我们可以使用低精度数据来表示原始梯度。数据的精度取决于区间数 n。低精度数据可以定义为 m 1 位用于表示原始梯度其中1 位用于指示正负。因此我们可以得到 m 的值为 。
最后我们基于上述分析提供了梯度的编码策略。对于特定的梯度1) 首先我们需要将其与 和 进行比较如果梯度大于 或小于 则将其发送到服务器因为具有较大幅度的梯度是显著的2) 其次我们需要确定梯度的位置找到梯度属于哪个区间并将其分配给一个具有 m 1 位的低精度数据以便将其发送到服务器3) 如果梯度涉及 DNN 模型的偏置它将直接发送到服务器而无需压缩。详细的编码和解码过程在算法 2 中显示。
对于梯度的解码服务器按层接收压缩的梯度 和代理系列 。每个压缩梯度 被替换为代理该代理定义为梯度在其所属区间内gi的均值。
5.2.1 梯度偏差分析
由于我们使用具有函数值 的 g 作为代理来近似某个区间 [g1, g2] 内的梯度我们可以估计梯度的误差界限。对于某个区间 [g1, g2]根据方程 (8)梯度 gi 的误差率受到限制在区间内 (9)。 因此最大的误差界限出现在最大的区间中。由于随着 |g| 的增加区间大小也增加最大误差出现在大约为 的区间附近。在区间 或内有 个区间。因此最大的区间大小为 并且最接近 的区间为 。通过将这一区间映射到方程 (9) 中可以计算出误差界限的大小如方程 (10) 所示。 6 评估和结果分析
6.1 我们框架的实现
我们在 Tensorflow 上实现了我们的 MIPD。类似于 Google 团队和其他研究人员提出的分布式优化器的变体MIPD 将 Tensorflow 中的分布式优化器类进行封装并设计了一个新的分布式优化器通过重写用于更新参数的 apply_gradient() 函数来实现。
6.2 评估方法
测试平台。我们建立了一个由 9 台 GPU 服务器组成的集群8 台用于工作服务器1 台用于服务器每台服务器配备 Intel Xeon Silver 4210 处理器256GB 内存8 个 Quadro RTX6000 GPU任意两台服务器之间使用 CX-5 单端口 NICs 的 100 Gbps 网络带宽连接。每个工作服务器分配一个专用 GPU 卡。
基准DNN 模型和数据集。我们选择了六个 DNN 模型AlexNet、MobileNet、ResNet50、ResNet101、ResNet152 和 VGG16以及三个数据集Cifar10、Cifar100 和 TinyImagenet作为我们的评估基准。关于这些 DNN 模型的信息在表 3 中展示。 基线稀疏化模型。我们将我们的稀疏化框架与其他六种最先进的稀疏化模型进行比较(i) TernGrad SGD使用三元梯度加速分布式 DNN 训练(ii) A2SGD通过两级梯度平均A2SGD提供 O(1) 通信策略将所有梯度合并到每个工作服务器的仅两个本地平均值中然后计算两个全局平均值以更新模型(iii) Top-K SGD旨在减少通信流量只在训练过程中传输张量的少量元素例如仅传输前 k 个最大元素(iv) QSGD基于码本的随机压缩方案允许用户平滑地权衡通信带宽和收敛时间(v) Sketch使用 count-sketch 选择近似梯度向量的“重要元素”来近似 Top-k 成分以及 (vi) Vanilla SGD采用异步参数更新策略。 6.3 训练性能比较和分析
6.3.1速度提升与准确性
我们基于图 7a-c、g-i 中的每个 DNN 模型比较不同种类的梯度稀疏化和量化方法。受到截断均值的启发[31]我们根据验证准确度的趋势为每个 DNN 模型定义训练的停止条件例如当目标最高准确度第三次达到时。我们观察到我们的方法在分布式 DNN 训练中实现的令人满意的加速效果根据本图中的评估结果我们看到 MIPD 框架相对于其他方法在六个基准模型上的表现提高了18:8%至36:2%。
在图 7a-c、g-i 中我们注意到我们的框架还提高了大多数 DNN 模型的收敛准确性相对于其他最先进的梯度压缩方法在相同的超参数设置下可高达5%。与更小的 DNN 模型例如 MobileNet相比我们的框架可以实现更高的大型 DNN 模型例如 AlexNet、VGG16的加速。这是合理的因为我们的稀疏化框架每次训练步骤只更新一半的参数并且可以将通信开销减少 50%至87:5%。因此我们的框架对于大型 DNN 模型效果更好因为与小型模型相比大型 DNN 模型的通信开销较小。因此减少通信开销可以为这些大型 DNN 模型带来更大的加速。我们基于指数平滑方法的全局梯度补偿策略可以减少参数更新的梯度误差进一步保证 DNN 训练以实现更高的验证准确度。
6.3.2压缩率与性能
除了识别显著梯度外我们的工作提出在每次迭代中更新一半的参数以进一步减少通信开销和服务器的 CPU 负担从而提高训练性能。
上述六种稀疏化和量化方法在第 6.2 节介绍的稀疏率包括梯度拉取/推送数据类型、数据大小、参数读/写数据大小和总体稀疏率如表 4 所示。我们以 VGG16 为例说明不同方法的稀疏率。VGG16 的原始梯度大小float32为 4.1 Gb。其他 DNN 模型与 VGG16 类似。在我们的实验中服务器和工作者之间交换的梯度从原始的 float32 压缩到 int8。此外我们建议每次训练步骤更新一半的参数甚至舍弃其中的 50%以进一步减少通信开销。我们假设 DNN 模型的梯度大小为 S。因此每个工作者的拉取数据大小为 50%*S。推送数据大小为 舍弃 50% 并将数据精度从 float32 压缩到 int8。在我们的实验中整个模型的总舍弃率为 50%在训练过程中保持恒定。这种舍弃率可以根据不同应用的要求进行调整。需要更新的参数大小为 50% * S。我们的框架的总体稀疏率为 71.8%。结果表明我们的研究可以保证更好的训练性能和准确性具有更高的压缩比。 6.3.3错误率与性能
我们的框架的关键思想与聚类分析类似我们将梯度划分为每层的 I 个区间。每个子集包括 个最接近梯度的梯度。这可以确保在使用均值表示真实值时所有子集都具有最小误差。我们框架每层的误差可以估计为 其中 是层的每个区间的方差。整体错误可以估计为 。
根据统计分析我们可以得出 如附录 B1 中所述可在在线补充资料中找到。Top - k 方法的错误率高度依赖于 k 的定义。因此Top - k 与其他方法之间的错误率比较需要参考 k 的值。减少梯度误差可以加速 DNN 训练的收敛。
6.3.4不同层级的舍弃率
每层的舍弃率由模型可解释性和指数平滑预测方法定义。使用平滑系数 来控制这两种舍弃策略的百分比。在我们的实验中我们建议 为 0.5可以根据需求进行调整。不同 DNN 的不同层的舍弃率如图 7d-f、j-l 所示我们观察到不同层具有不同的舍弃率。与单调标准相比我们的策略可以识别对 DNN 模型收敛产生更多贡献的重要层并为这些层更新更多参数。从图 7d-f、j-l 中我们还观察到深度神经网络如 ResNets不同层的重要性彼此相似。相比之下对于参数较多的浅层神经网络如 AlexNet、VGG16不同层的重要性差异很大。
6.3.5 系统性能分析
根据上述部分的分析我们指出服务器的CPU性能和内存带宽以及网络经常充当分布式DNN训练的瓶颈对于今天用于DNN训练的常见服务器CPU的峰值性能通常受到内存带宽的限制。因此在具有高速网络的集群上训练DNN时通过压缩传输数据获得的性能改进通常有限。仅仅压缩传输数据可以减少数据传输时间。服务器上的梯度聚合和参数更新是消耗资源的任务。因此通过减少数据传输时间获得的性能改进是有限的。因此除了在训练过程中压缩传输数据以减少通信开销之外我们的工作还尝试减少服务器上的参数更新开销。在我们的评估基准中我们使用int8数据类型来编码梯度。与原始float32相比传输数据已经压缩了4倍。为了减少服务器的参数更新开销我们的框架还提出每个训练步骤更新50%的参数。每个训练步骤在服务器和工作节点之间传输的整体数据大小如表5所示。在这个表中我们观察到我们的工作可以将每个训练步骤的挂钟时间大大减少高达70.4%VGG16并且还有一些额外的计算时间例如对于VGG16为0.05秒同时保证训练收敛和准确性。
6.3.6 服务器的CPU和GPU使用情况
我们的工作建议在每个训练步骤中更新一半的参数以减少服务器CPU的计算开销。我们比较了服务器在不同稀疏化方法下的CPU和GPU使用情况如图8e-h和i-l所示。我们发现与其他稀疏化方法相比我们的框架平均释放了服务器的CPU负担2:2%至43:6%在四个基准测试中GPU使用情况并没有太大增加在图8i-l中。我们的研究还将服务器上的GPU使用情况降低了高达4:14%至24:9%。我们的框架和其他稀疏化方法的GPU使用情况高于原始的随机梯度下降ASP。这是因为稀疏化方法需要解压梯度以更新参数。我们还列出了不同稀疏化方法在工作节点上的GPU使用情况如图8m-p所示并注意到与其他方法相比Sketch需要更多的计算资源。 6.3.7 网络使用情况
我们比较了不同稀疏化方法的网络使用情况如图8a-d所示。我们观察到与原始的随机梯度下降ASP相比稀疏化方法大大减少了网络使用情况。通常服务器上的网络使用情况包括两部分输入和输出使用情况。为了减少服务器的CPU/内存开销我们的研究建议在每次迭代中更新一半的参数。因此与其他方法相比我们的框架可以理论上将网络的输出使用情况减少一半。我们在图8a-d中展示了输入使用情况。在这幅图中我们注意到我们的框架将网络使用情况输入在四个基准模型中减少了1:7%至32:7%。我们还观察到与不同基准测试相比我们的框架可以将网络使用情况减少到20 Gbps以下。
6.3.8 MIPD的详细性能分析
我们的框架主要由三个优化模块组成半更新、梯度丢弃和补偿以及梯度量化。为了阐明每个部分的贡献我们基于四组进行了不同实验A) 原始SGDB) 每次训练步骤更新一半的参数半更新C) 半更新与梯度丢弃和补偿策略D) 半更新与梯度丢弃/补偿和梯度量化基于ResNet152/TinyImagenet。上述四组的评估结果以及CPU/网络使用情况显示在图9中。我们看到我们的框架比原始SGD提高了44.68%上述四部分[A, B, C, D]的性能改进矩阵为19.46%、33.81%、44.68%。半更新策略获得了19.46%的改进丢弃/补偿策略和梯度量化进一步获得了14.53%和10.87%的改进。这是合理的因为半更新策略双向减少了网络和参数更新开销而丢弃/补偿和量化策略仅在梯度推送阶段减少了网络开销。这些结果进一步证明了我们的分析即服务器的计算资源CPU、内存和网络带宽极大地影响了训练性能。 6.3.9 可伸缩性
我们还进行了关于收敛时间加速度与目标准确性例如MobileNet/TinyImagenet的89%的可伸缩性研究基于MobileNet和ResNet101分别使用1、2、4、6、8、16、32个工作节点。如图10所示我们看到与基于参数服务器架构的异步原始SGDasp相比我们的框架在可伸缩性方面表现更好。实现在Tensorflow_v2.4之上的all-reduce架构与NCCL通信库相比对于收敛时间的可伸缩性表现不佳。我们还注意到所有方法在MobileNet上显示出比ResNet101更好的可伸缩性。这是因为小型DNN模型更容易扩展。 7 相关工作
梯度稀疏化。已经有几项研究提出通过梯度稀疏化来减少通信开销。Sparsification [19]、[20]、[21] 是一种流行的梯度压缩方法其中每个节点按幅度对梯度进行排序并仅传输一个子集如 Top k的分量其余在本地累积。这些方法可以实现每步高达三个数量级的高压缩率[19]。
梯度量化。量化方法将梯度映射到节省资源的参数空间构成另一种高效的梯度压缩技术。Terngrad 的研究工作[18]通过使用三个阈值将梯度映射为[-1,0,1]。QSGD[4]通过随机量化梯度并将梯度映射到一个比 Terngrad[18] 更大的均匀离散集合基于整个模型的梯度。这些方法可以实现更高的压缩率但会导致实际梯度与量化梯度之间的误差较大。
环形全局归约。Ring All Reduce[30]是一种高效的通信减少方法不同于参数服务器架构。这是一种同步参数更新策略被证明在小规模深度神经网络训练中有效。然而随着规模的增加由于长时间的参数更新延迟性能会显著下降。
8 结论
本文为分布式深度神经网络训练系统提供了一种高效的梯度稀疏化框架减少了对多种不同类型的深度神经网络模型和数据集的收敛时间同时保持了准确性。主要包括四个部分1) 基于工作节点驱动的双向稀疏化算法可以减少从服务器拉取的数据大小2) 基于模型可解释性的逐层丢弃率定义3) 基于指数平滑预测的丢弃率定义可以根据预测值为丢弃的梯度提供补偿以及4) 基于概率分布的数据近似算法可以进一步压缩从工作节点传输到服务器的数据。结果表明我们提出的稀疏化框架可以为分布式深度神经网络训练系统提供快速稳定的收敛保证。