我读了一篇关于深度神经网络压缩(link:https://openreview.net/forum?id=SkhQHMW0W)的论文,遇到了一个术语“梯度交换”,我试着理解它的含义,但我无法准确地理解它所指的是什么。梯度交换这个词是什么意思?
发布于 2018-01-05 17:16:26
梯度交换发生在执行梯度下降的分布式学习系统中,当分布式系统的一部分需要使用来自另一部分的梯度值才能完成任务时。
例如,您可以在多个节点之间分布一个大型数据集,并希望作为优化的一部分计算梯度下降步骤。这样做的一种方法是计算每个节点上的批处理梯度的子集,并在单个节点上对它们进行排序,以便同步更改参数。这意味着必须将所有节点的梯度提取到单个节点中,以便可以计算某些权重参数的组合梯度,并在更新步骤中一致更新参数。
梯度交换只是描述事件节点A需要节点B计算的一些梯度的术语,因此它们被请求(或推送)并在节点之间移动。这是一个相对较慢的I/O过程--对于分布式系统来说,这是必要的,但是为了高性能,您需要尽量减少移动数据的时间。
其他数据(如参数)也需要在节点之间共享。由于作者发现了一种在不损失学习算法性能的情况下对其进行显著压缩的方法,因此本文专门挑选了关于梯度的这一特定数据。这在一定程度上是因为渐变最初可以近似地被处理。许多学习算法在计算之后会进一步调整或规范梯度,所以使用超精确的值并不像你想象的那么重要。
也可能有一些聪明的方法来分割更新工作,以便每个节点只需要一些渐变,并且在每个步骤中只更新一些参数。这将使节点CPU忙碌,可能以牺牲更复杂的通信为代价。我不知道任何优化的分布式学习系统的细节,以便告诉您正在进行的精确的数据交换和优化。可能会有一些变化,取决于框架和正在实现的算法。
https://datascience.stackexchange.com/questions/26327
复制相似问题