AGQFL: Communication-efficient Federated Learning via Automatic Gradient Quantization in Edge Heterogeneous Systems
Zirui Lian, Jing Cao, Yanru Zuo, Weihong Liu, Zongwei Zhu*
International Conference on Computer Design (ICCD)
CCF B 会
2021
一、动机和贡献
动机:边缘设备带宽的不同导致 ”通信异质性” 的问题,但是现阶段FL的量化却使用固定量化精度,这就导致了 “straggler” 问题。
注:straggler 问题是指,在FL同步更新策略中,通信速度慢的client会减缓全局轮数。
贡献:提出了一种 AGQFL 算法框架,用以平衡 通讯速度 和 模型收敛精度。主要包括三个模块,即:
- quantization indicator module:设计了一种指示器,MQI,用以测量模型的 “收敛能力”,并决定后续量化精度调整方向(增加/减少)。具体来说,如果 “当前模型” 收敛能力强于 “历史模型”,那么降低量化精度以保证速度;反之,增加量化精度以保证收敛。
- quantization strategy module:根据每个客户端的 实际设备带宽 和 模型收敛能力(MQI),给出具体调整client的量化精度的幅度。
- quantization optimizer module:通过对 学习率 的调整,设计了新的优化器(optimizer)来进一步增加模型收敛性能。
二、算法设计
2.1 Quantization Indicator
核心思想:一般来说,随着量化精度地下降,模型的方差会逐渐增大,这就导致了训练过程中较大的梯度误差,导致模型泛化性能下降。本文设计的 Indicator 通过定义
M
Q
I
MQI
MQI 来近似模拟模型方差(即表征模型泛化能力)。通过对某个 client 的 历史模型
M
Q
I
MQI
MQI 和 当前模型
M
Q
I
MQI
MQI 的对比,得到模型下一步量化精度的方向(增加/减少)。
量化精度
↓
⇒
模型方差
↑
⇒
梯度误差
↑
⇒
泛化能力
↓
\text{量化精度}\downarrow\Rightarrow\text{模型方差}\uparrow\Rightarrow\text{梯度误差}\uparrow\Rightarrow\text{泛化能力}\downarrow
量化精度↓⇒模型方差↑⇒梯度误差↑⇒泛化能力↓。
M
Q
I
MQI
MQI 定义如下:
M
Q
I
=
∥
W
∥
2
∥
g
∥
2
,
MQI = \frac{\|W\|_2}{\|g\|_2},
MQI=∥g∥2∥W∥2,
其中,
W
W
W 表示模型权重,
g
g
g 表示梯度值,
∥
⋅
∥
\|\cdot\|
∥⋅∥ 表示2范数。如下图所示,展示了
M
Q
I
MQI
MQI 和 模型方差之间的关系。从中可以得出结论:
M
Q
I
MQI
MQI 和 模型方差呈反比关系,因此可以通过
M
Q
I
MQI
MQI 表征模型泛化能力。
M
Q
I
↑
⇒
模型方差
↓
⇒
模型泛化能力
↑
⇒
量化精度需
↓
MQI \uparrow\Rightarrow \text{模型方差}\downarrow\Rightarrow\text{模型泛化能力}\uparrow\Rightarrow\text{量化精度需}\downarrow
MQI↑⇒模型方差↓⇒模型泛化能力↑⇒量化精度需↓
M
Q
I
↓
⇒
模型方差
↑
⇒
模型泛化能力
↓
⇒
量化精度需
↑
MQI \downarrow\Rightarrow \text{模型方差}\uparrow\Rightarrow\text{模型泛化能力}\downarrow\Rightarrow\text{量化精度需}\uparrow
MQI↓⇒模型方差↑⇒模型泛化能力↓⇒量化精度需↑
但是,直接粗略地通过
M
Q
I
MQI
MQI 的变化来决定量化方向是不太合理的。文章采用 “自适应动量估计” 的思想,即定义:
历史
M
Q
I
t
h
=
β
∗
M
Q
I
t
−
1
h
+
(
1
−
β
)
∗
M
Q
I
t
,
差值
Δ
M
Q
I
t
=
M
Q
I
t
−
M
Q
I
t
h
.
\begin{equation*} \begin{split} &\text{历史}~MQI^h_t=\beta*MQI^h_{t-1}+(1-\beta)*MQI_t,\\ &\text{差值}~\Delta MQI_t=MQI_t-MQI^h_t. \end{split} \end{equation*}
历史 MQIth=β∗MQIt−1h+(1−β)∗MQIt,差值 ΔMQIt=MQIt−MQIth.
2.2 Quantization Strategy
核心思想:根据client的通信带宽,定义一个概率函数
b
∼
β
N
(
b
i
n
i
t
k
,
1
)
b\sim\beta N(b^k_{init},1)
b∼βN(binitk,1),其中
b
i
n
i
t
k
b^k_{init}
binitk 表示当前客户端最有可能选择的量化精度(谨慎远离
b
i
n
i
t
b_{init}
binit量化精度)。若 当前量化精度
b
l
>
b
i
n
i
t
b_l>b_{init}
bl>binit,则采用 “慢增快降” 策略;反之,采用 “慢降快增” 策略。和
M
Q
I
MQI
MQI 结合可以描述为:
b
l
>
b
i
n
i
t
&
{
Δ
M
Q
I
t
>
threhold
1
⇒
增
↑
Δ
M
Q
I
t
<
threhold
2
⇒
降
↓
↓
↓
b
l
<
b
i
n
i
t
&
{
Δ
M
Q
I
t
>
threhold
1
⇒
增
↑
↑
↑
Δ
M
Q
I
t
<
threhold
2
⇒
降
↓
b_l>b_{init} ~\&~\begin{cases} \Delta MQI_t>\text{threhold}_1 & \Rightarrow \text{增}\uparrow\\ \Delta MQI_t<\text{threhold}_2 & \Rightarrow \text{降}\downarrow\downarrow\downarrow \end{cases}\\ b_l<b_{init} ~\&~\begin{cases} \Delta MQI_t>\text{threhold}_1 & \Rightarrow \text{增}\uparrow\uparrow\uparrow\\ \Delta MQI_t<\text{threhold}_2 & \Rightarrow \text{降}\downarrow \end{cases}
bl>binit & {ΔMQIt>threhold1ΔMQIt<threhold2⇒增↑⇒降↓↓↓bl<binit & {ΔMQIt>threhold1ΔMQIt<threhold2⇒增↑↑↑⇒降↓用一句话概括为:
M
Q
I
MQI
MQI决定了量化方向(增/降);
b
i
n
i
t
b_{init}
binit决定了量化速度(快/慢)。
注:每个client的通信带宽是静态的,同时必须提前测量好,这样才能为每个client估计相应的 b i n i t b_{init} binit。
具体的更新策略可以描述为:
criterion:
∣
∣
Δ
M
Q
I
t
∣
∣
>
α
∗
M
Q
I
t
update:
b
k
=
b
l
k
+
s
g
n
[
b
i
n
i
t
k
−
b
l
k
]
∗
m
i
n
[
1
,
−
s
g
n
(
Δ
M
Q
I
t
)
∗
γ
∗
(
N
(
b
i
n
i
t
k
)
−
N
(
b
l
k
)
)
]
\begin{equation*} \begin{split} &\text{criterion:}\quad||\Delta MQI_{t}||>\alpha*MQI_{t}\\ &\text{update:}\quad b^{k} =b_l^k+\boldsymbol{sgn}[b_{init}^k-b_l^k]\\ &\qquad\qquad\qquad\qquad*\boldsymbol{min}[1,-sgn(\Delta MQI_t)*\boldsymbol{\gamma}*(\boldsymbol{N}(b_{init}^{k})-\boldsymbol{N}(b_{l}^{k}))] \end{split} \end{equation*}
criterion:∣∣ΔMQIt∣∣>α∗MQItupdate:bk=blk+sgn[binitk−blk]∗min[1,−sgn(ΔMQIt)∗γ∗(N(binitk)−N(blk))]其中,
α
\alpha
α 表示超参;
N
(
⋅
)
N(\cdot)
N(⋅)表示基于概率的选择函数,可以保证量化精度尽可能保持到初始精度,即在
b
i
n
i
t
b_{init}
binit附近。
注:目前感觉这个公式有问题,尤其是
N
(
⋅
)
N(\cdot)
N(⋅)原文没有定义,但是公式想表达的思想是明确的。
2.3 Quantization Optimizer
核心思想:根据一个得出的结论,认为可以通过调整学习率 η \eta η 的方式增加模型的收敛性能,降低模型误差,提高模型泛化能力。
神经网络中,通常使用如下准则定义模型的收敛性能,即:
R
(
T
)
=
∑
t
=
1
T
(
f
t
(
w
t
)
−
f
t
(
w
∗
)
)
R(T)=\sum_{t=1}^T(f_t(w_t)-f_t(w^*))
R(T)=t=1∑T(ft(wt)−ft(w∗))其中,
T
T
T表示训练总轮数;
w
∗
w^*
w∗表示
t
t
t轮时理论最佳模型权重。模型收敛意味着:
当
t
→
∞
时,
R
(
T
)
→
0
\text{当}t\rightarrow\infty\text{时},R(T)\rightarrow 0
当t→∞时,R(T)→0。
Theorem 1:可以有如下结论:
R
(
T
)
T
≤
D
∞
2
T
η
t
+
D
∞
T
∑
t
=
1
T
∣
∣
ε
t
∣
∣
+
1
T
∑
t
=
1
T
η
t
∗
S
∗
∣
∣
ε
t
∣
∣
2
2
m
\frac{R(T)}{T}\leq\frac{D_{\infty}}{2T\eta_{t}}+\frac{D_{\infty}}{T}\sum_{t=1}^{T}||\varepsilon_{t}||+\frac{1}{T}\sum_{t=1}^{T}\frac{\eta_{t}*S*||\varepsilon_{t}||^{2}}{2\sqrt{m}}
TR(T)≤2TηtD∞+TD∞t=1∑T∣∣εt∣∣+T1t=1∑T2mηt∗S∗∣∣εt∣∣2其中,
S
S
S表示量化精度;
∥
ε
t
∥
\|\varepsilon_t\|
∥εt∥表示量化误差。因此可以得出:
R
(
T
)
∝
η
t
,
S
,
∥
ε
t
∥
R(T)\propto\eta_t,S,\|\varepsilon_t\|
R(T)∝ηt,S,∥εt∥而根据2.2中描述,通过控制量化精度
S
S
S来控制量化误差
∥
ε
t
∥
\|\varepsilon_t\|
∥εt∥,因此可以通过将学习率调整为
∥
ε
t
∥
\|\varepsilon_t\|
∥εt∥的反方向(即
S
S
S正方向)来进一步促进模型收敛。
由2.1可知,量化精度的方向是由
M
Q
I
MQI
MQI 决定的,因此优化算法如下:
W
t
+
1
=
W
t
−
η
t
∗
ρ
t
∗
▽
f
(
W
t
)
ρ
t
=
μ
∗
c
o
s
<
g
t
,
g
^
t
>
∗
∣
∣
W
t
∣
∣
2
∣
∣
g
t
∣
∣
2
+
w
d
∗
∣
∣
W
t
∣
∣
2
W_{t+1}=W_t-\eta_t*\rho_t*\bigtriangledown f(W_t)\\\rho_t=\mu*cos<g_t,\hat{g}_t>*\frac{||W_t||_2}{||g_t||_2+wd*||W_t||_2}
Wt+1=Wt−ηt∗ρt∗▽f(Wt)ρt=μ∗cos<gt,g^t>∗∣∣gt∣∣2+wd∗∣∣Wt∣∣2∣∣Wt∣∣2其中,
w
d
wd
wd表示正则化参数;
c
o
s
<
g
t
,
g
^
t
>
cos<g_t,\hat{g}_t>
cos<gt,g^t>表示量化前后梯度向量的余弦相似度;
μ
\mu
μ表示一个超参。
2.4 总算法流程
三、讨论
本文根据 “泛化性能( M Q I MQI MQI)”来获得量化的具体方向;通过与 “期望量化精度( b i n i t b_{init} binit)”比较获得量化速度。这就导致几个问题:
- 如何事先获取模型带宽,并得到相应的 “期望量化精度( b i n i t b_{init} binit)”?
- 如果client带宽不是静态的,而是动态的,应该怎么处理?
- 调整量化精度策略中,本质上只有 “模型泛化性能” 的因素,对于 “client带宽” 只是简单的通过概率来引入,这样做是否合理?有没有更好的方式?