背景
传统的联邦学习在当某些客户端的计算资源有限(即需要更长的训练时间)或者在无线信道状况较差(即导致上传时间更长)时,整个训练的过程可能会变得效率低下。这篇文章提出了一个新的FL协议FedCS,可以缓解上述问题。它的一个思想是根据客户端的资源状况来主动管理客户端,然后选择合适的客户端来进行模型聚合
FedCS
文章提出了一个FedCS协议,下面是该协议的过程:
![](https://img-blog.csdnimg.cn/20210424154525461.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDI2Mjkz,size_16,color_FFFFFF,t_70)
翻译一下上述协议过程:
- 初始化:跟传统联邦一样,服务器随机初始化全局模型
- 资源请求:服务器随机选择 K × C K \times C K×C个客户端参与到该轮训练,其中 K K K是所有客户端的数量, C ∈ ( 0 , 1 ] C \in (0,1] C∈(0,1]代表选择的百分数。之后服务器向选择的客户端发送资源信息的请求
- 客户端选择:服务器得收到了关于客户端的资源信息之后,便可以利用这些信息作出决断,然后选择那些合适的客户端进行模型的聚合
- 分发模型:服务器将全局模型发送给选择出来的客户端
- 局部模型更新和上传:客户端在本地数据集上训练分发下来的模型,然后上传梯度给服务器
- 模型聚合:同传统联邦一样,使用上传的梯度来更新全局模型
- 重复以上除了”初始化“以外的工作
其实上述协议跟传统的联邦学习的不同之处便在于多了一个Resource Request
的过程,这个过程的作用便是让服务器拿到客户端的一个关于资源的信息,比如带宽、内存之类会影响训练速度和上传速度的信息,然后根据这个信息去做决策,选择合适的客户端进行训练,如下图所示:
![](https://img-blog.csdnimg.cn/202104241611430.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDI2Mjkz,size_16,color_FFFFFF,t_70)
Algorithm for Client Selection Step
经过上述的分析,这个FedSC协议其实并没有什么特别的地方,重点在于它是如何根据上传的资源信息进行决策的
假设 K = 1 , . . . , K \mathbb{K} = {1,...,K} K=1,...,K表示 K K K个客户端组成的集合,然后每次只挑选 K × C K \times C K×C个客户端参与训练,挑选出来的客户端形成的子集为 K ′ \mathbb{K'} K′。在这之中被选择参与模型聚合的客户端集合表示为 S = [ k 1 , k 2 , . . . , k ∣ S ∣ ] \mathbb{S} = [k_1,k_2,...,k_{|\mathbb{S}|}] S=[k1,k2,...,k∣S∣]。 T r o u n d ∈ R + T_{round} \in R^{+} Tround∈R+表示该训练轮次的最后期限(DDL), T f i n a l ∈ R + T_{final} \in R^+ Tfinal∈R+表示整个训练过程的最后期限(DDL), T c s ∈ R + T_{cs} \in R^+ Tcs∈R+表示选择客户端的时间, T a g g T_{agg} Tagg表示模型聚合所需要的时间, T S d ∈ R + T_{\mathbb{S}}^d \in R^+ TSd∈R+表示分发模型的时间,它取决于选择的客户端 S \mathbb{S} S, t k U D t_k^{UD} tkUD和 t k U L t_k^{UL} tkUL表示第 k k k个客户端训练模型和上传模型所需要的时间,这两个参数的值可以在资源请求步骤中得到。那么整个训练过程从模型更新和上传开始直到最后一个客户端完成上传所需要的时间为
![](https://img-blog.csdnimg.cn/20210424164350408.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDI2Mjkz,size_16,color_FFFFFF,t_70)
其中 T i U D = ∑ j = 1 i m a x { 0 , t t j U D − θ j − 1 } T_i^{UD} = \sum_{j=1}^i max\{0,t_{t_j}^{UD} - \theta_{j-1}\} TiUD=∑j=1imax{0,ttjUD−θj−1}, T i U L = ∑ j = 1 i t k j U L T_i^{UL} = \sum_{j=1}^i t_{k_j}^{UL} TiUL=∑j=1itkjUL
然后客户端选择的问题便可以表示为最大化能够选择的客户端数量的问题,如下所示:
m a x S ∣ S ∣ s . t . T r o u n d ≥ T c s + T S d + θ ∣ S ∣ + T a g g max_{\mathbb{S}}|\mathbb{S}| \\ s.t. T_{round} \geq T_{cs} + T_{\mathbb{S}}^d + \theta_{|\mathbb{S}|} + T_{agg} maxS∣S∣s.t.Tround≥Tcs+TSd+θ∣S∣+Tagg
然后文章用的是贪心算法来解决上述最优化问题,如下图所示:
![](https://img-blog.csdnimg.cn/20210424165007860.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDI2Mjkz,size_16,color_FFFFFF,t_70)
基本思想就是每一次都找出需要的总时间最少的客户端,然后判断目前的预计训练时间是否满足DDL要求,如果满足的话便将客户端加入集合 S \mathbb{S} S中,最后就能得到适合进行模型聚合的客户端集合 S \mathbb{S} S
总结
思想还是比较简单,服务器通过请求客户端拿到该客户端训练模型和上传模型需要的时间,然后设定一个DDL,从需要总时间最小的客户端开始将其加入一个集合中,之后将需要总时间第二小的客户端加入集合中…,直到集合里面的客户端需要的总时间加起来大于DDL,集合里面的客户端便是可以用来聚合全局模型的客户端
缺点:那些计算能力比较差、或者通信能力不好的客户端将很少有机会能参与到联邦训练中来,这其实一定程度影响到了全局模型的准确率,并且对于这些客户端而言也是不公平的