我读了一篇关于深度神经网络压缩的论文(链接:https ://openreview.net/forum?id=SkhQHMW0W )并遇到了一个术语“梯度交换”,我试图理解它但不能完全理解什么它直观地指代。梯度交换一词是什么意思?
梯度交换
数据挖掘
神经网络
深度学习
2022-03-05 15:37:22
1个回答
梯度交换发生在执行梯度下降的分布式学习系统中,当分布式系统的一部分需要使用来自另一部分的梯度值来完成任务时。
例如,您可能会在多个节点之间分布一个大型数据集,并希望计算梯度下降步骤作为优化的一部分。一种方法是计算每个节点上的批梯度子集,并在单个节点上对它们进行整理,以便同步更改参数。这意味着有必要将所有节点的梯度提取到单个节点中,以便可以计算某些权重参数的组合梯度,并在更新步骤中一致地更新参数。
梯度交换只是描述该事件的术语 - 节点 A 需要节点 B 计算的一些梯度,因此它们被请求(或推送)并且必须在节点之间移动。这是一个相对较慢的 I/O 过程 - 分布式系统必须工作,但为了获得高性能,您希望最大限度地减少移动数据所花费的时间。
其他数据(如参数)也需要在节点之间共享。由于作者发现了一种在不损失学习算法性能的情况下显着压缩它的方法,因此本文将这一关于梯度的特定数据单独列出。这部分是因为梯度可以首先被近似处理。许多学习算法在计算梯度后会进一步调整或归一化梯度,因此使用超精确值并不像您想象的那么重要。
也可能有巧妙的方法来拆分更新工作,这样每个节点只需要一些梯度,并且在每一步只更新一些参数。这将使节点 CPU 保持忙碌,可能会以更复杂的通信为代价。我不知道任何优化的分布式学习系统的细节,以便告诉您正在发生的精确数据交换和优化。可能会有一些变化,具体取决于框架和正在实施的算法。
其它你可能感兴趣的问题