论文链接:https://ojs.aaai.org/index.php/AAAI/article/view/16920
摘要
在联邦学习最经常使用的模型训练算法“本地随机梯度”之外,提出一种新的高效通信分布式随机梯度算法,可以通过误差补偿双重压缩机制,对worker和server之间交换的梯度进行压缩。解决在联邦学习大规模模型有效训练中通信开销较大的难题,在保证收敛性能和模型精度的条件下,显著降低通信成本。
一、介绍
联邦学习的目标为解决以下分布式优化问题(针对非凸问题 -> 假设 f() 为光滑非凸函数):
min
x
f
(
x
)
=
1
K
∑
k
=
1
K
f
(
k
)
(
x
)
\displaystyle \min_{x}f\left ( x \right )=\frac{1}{K}\sum_{k=1}^{K}f^{\left ( k \right )}\left ( x \right )
xminf(x)=K1k=1∑Kf(k)(x)
并行SGD (P-SGD):每个节点将局部随机梯度发送到中心服务器,并在每次迭代时从中心服务器获得平均梯度
本地SGD:每个节点在本地使用p次SGD迭代后,更新模型参数,再与中心服务器交互
在不影响收敛速度和通信复杂度的情况下将压缩梯度应用于本地SGD -> 提出两种通信高效的本地SGD方法;
通过错误补偿的压缩机制来压缩交换的所有梯度;
没有有界梯度假设,且压缩梯度是有偏的。
本文贡献如下:
- 提出通信效率高的一种本地SGD和一种动量本地SGD,是第一个具有双重压缩机制的(动量)本地SGD
- 提出一种新的理论分析策略,用于分析没有有界梯度假设的误差补偿的双重压缩方法
- 通过以上理论分析策略,对压缩误差进行充分约束,证明提出的方法与全精度方法有相同的通信复杂性
- 实验结果证实两种方法的有效性
二、相关工作
在分布式机器学习领域,为了减少通信开销,有两种策略:减少通信轮数、降低每个通信轮的开销。
减少通信轮数:本地SGD在多次迭代时本地更新模型参数,然后进行通信以同步模型参数。局部SGD可以通过更多的局部计算和更少的通信来减少通信轮数。
降低每个通信轮的通信成本:对梯度进行压缩(梯度稀疏化、梯度量化);误差补偿方法可以减少梯度压缩带来的误差。
没有有界梯度假设,且压缩梯度是有偏的。
三、预备知识
假设1:所有局部函数
f
(
k
)
(
⋅
)
f^{(k)} ( · )
f(k)(⋅) 都是L-平滑
假设2:每个局部节点都是有界梯度方差(有更改)
一些符号表示:
x t ( k ) x_{t}^{(k)} xt(k):第k个节点在第t轮迭代时的模型参数
x t = 1 K ∑ k = 1 K x t ( k ) x_{t}=\frac{1}{K}\sum_{k=1}^{K}x_{t}^{(k)} xt=K1∑k=1Kxt(k):所有节点在第t次迭代时的平均模型参数
▽ F ( k ) ( x t ( k ) ; ξ t ( k ) ) \triangledown F^{(k)} ( x_{t}^{(k)};\xi _{t}^{(k)} ) ▽F(k)(xt(k);ξt(k)):第k个节点在第t次迭代时的随机梯度(根据局部模型参数和数据计算得出)
▽ f ( k ) ( x t ( k ) ) = E ξ ∼ D ( k ) ▽ F ( k ) ( x t ( k ) ; ξ t ( k ) ) \triangledown f^{(k)} ( x_{t}^{(k)} )= E_{\xi \sim D^{(k)}}\triangledown F^{(k)} ( x_{t}^{(k)};\xi _{t}^{(k)} ) ▽f(k)(xt(k))=Eξ∼D(k)▽F(k)(xt(k);ξt(k)):第k个节点第t次迭代的全部梯度
▽ f ( x t ) = 1 K ∑ k = 1 K ▽ f ( k ) ( x t ( k ) ) \triangledown f ( x_{t} )= \frac{1}{K}\sum_{k=1}^{K}\triangledown f^{(k)} ( x_{t}^{(k)} ) ▽f(xt)=K1∑k=1K▽f(k)(xt(k)):所有节点在第t次迭代时的平均梯度
m t ( k ) m_{t}^{(k)} mt(k):第k个节点在第t轮迭代时的动量
m t = 1 K ∑ k = 1 K m t ( k ) m_{t}=\frac{1}{K}\sum_{k=1}^{K}m_{t}^{(k)} mt=K1∑k=1Kmt(k):所有节点在第t次迭代时的平均动量
四、带压缩梯度的高效通信的分布式SGD
带有压缩梯度的局部SGD
如算法1所示,核心思想是利用δ-压缩算子对 从节点到中心服务器 和 从中心服务器到节点 发送的梯度进行压缩。
η为学习率;p为通讯周期;mod(t+1,p)=0时第t+1轮迭代与中心服务器通信;Q(·)为使用的压缩函数;
e t ( k ) e_{t}^{(k)} et(k):第k个节点在第t轮迭代时的残差(压缩前后的差);用于缓解压缩梯度方差过大的问题,利用残差进行补偿;
v
t
(
k
)
v_{t}^{(k)}
vt(k):第k个节点在第t轮迭代时的误差补偿梯度,指上次通信后变化的梯度
定义1(δ-压缩算子):如top-k稀疏化算子
算法1的收敛速度和通信复杂度:
定理1:根据假设1和假设2推出RHS的后两项与梯度压缩有关。
推论1:基于假设1和假设2选择合适的η和p,可得到不等式。进一步推出算法1的收敛速度为
O
(
1
K
T
)
O(\frac{1}{\sqrt{KT}})
O(KT1) ;通信复杂度为
O
(
K
3
/
4
T
1
/
2
)
O(K^{3/4}T^{1/2})
O(K3/4T1/2)
理论证明与全精度本地SGD相比:收敛速度更快(线性加速),通信复杂度不变,故通信效率更高。
带有压缩梯度的动量局部SGD
动量技术被广泛用于训练机器学习模型,特别是深度神经网络。但是这种方法应用于联邦学习时,会有很大的通信开销。为了探究 动量局部SGD方法能否利用带有误差补偿的双压缩梯度(保持全精度条件下的收敛速度和通讯轮数),提出算法2。
算法2的收敛速度和通信复杂度:
定理2:根据假设1和假设2推出RHS的后两项与梯度压缩有关。
推论2:基于假设1和假设2选择合适的η和p,可得到不等式。进一步推出算法1的通信复杂度为
O
(
K
3
/
2
T
1
/
2
)
O(K^{3/2}T^{1/2})
O(K3/2T1/2)
理论证明与全精度本地SGD相比:收敛速度更快(线性加速),通信复杂度不变,故通信效率更高。
五、实验
1.top-1测试精度:
ResNet56@CIFAR10:local SGD 和 Alg1
ResNet50@ImageNet:local SGDM 和 Alg22.关于 epoch和通信成本 的 训练损失和测试精度:
ResNet56@CIFAR10:local和Alg1(Alg1-p1等同于DoubleSqueeze)
ResNet56@CIFAR10:Alg1和QL-SGD
没有将我们的方法与FedPAQ等进行比较,因为现有的工作已经表明,这种没有误差补偿机制的方法的收敛性和泛化性能更差。
-
首先,与全精度方法相比,梯度压缩的方法具有相似的收敛性能(收敛到几乎相同的值,并达到几乎相同的精度);其次,当通信周期p为1时,local-p1为传统的并行SGD(P-SGD)方法,而我们的方法等同于DoubleSqueeze方法。与这两种最先进的方法相比,当增加p时,我们的方法收敛到几乎相同的值,并达到与P-SGD和DoubleSqueeze几乎相同的精度。
与全精度方法相比,我们的压缩梯度方法的通信成本要低得多,却达到了几乎相同的性能。基于这些观察,我们可以得出结论,尽管我们的方法压缩了梯度并减少了通信轮数,但并没有损害最终模型的性能。 -
将其与Qsparse-local-SGD(QL-SGD)进行了比较,后者只对从工作者发送到服务器的梯度进行压缩。(为了进行公平的比较,采用了相同的压缩操作:前10%的稀疏化)可以看出,我们的方法与QL-SGD具有相似的收敛性能,但通信成本要低得多,因为我们的方法对从工作者发送到服务器的梯度和从服务器发送到工作者的平均梯度进行压缩。因此,我们的方法比QL-SGD更具有通信效率。
ResNet50@ImageNet:local SGDM和Alg2(Alg2-p1等同于dist-EF-SGDM)
没有将我们的方法与Qsparse-local-SGD进行比较,因为这种方法只研究了常规梯度而不是动量情况。
- 将算法2(Alg2)与全精度动量局部SGD(local SGDM)和dist-EF-SGDM进行比较。
从图3(a)和3(b)中可以发现,我们的方法优化的模型与全精度方法学习的模型有类似的收敛行为。
从表3的最终测试精度来看,我们的方法和全精度局部SGD取得了相似的性能。这表明,压缩梯度通信不仅有利于加速训练周期的收敛,而且也不会损害最终模型的性能。
从图3(c)和3(d)可以看出,增加通信周期自然会降低通信成本。与使用相同通信周期的本地SGD相比,我们的方法需要更少的通信成本,这对通信受限的联合学习场景最为有利,因为中央服务器和用户设备之间的上行和下行带宽可能非常有限;与dist-EF-SGDM相比我们的方法也有更少的通信成本,但有相同的准确性,这进一步证实了我们的方法在通信方面是有效的,在计算方面是正确的。