Page 404 - 《软件学报》2026年第3期
P. 404

刘建春 等: 基于块级多输出和知识自蒸馏的高效联邦学习框架                                                   1367



                 5.       for 对于每个   R k,m ∈ R m  do
                 6.       根据公式    (19) 计算  D k,m ;
                 7.       end
                 8.       为客户端    k 做出本轮决策:      t         ;
                                               m = argmaxV k,m
                                                 k
                                                     m
                 9.       更新客户端     k 接收  m  个全局模型块的频次:     F k,m = F k,m +1;
                 10.     客户端     k 执行算法  2;
                 11.   end
                 12.   服务器收到客户端本地模型后通过公式              (3) 聚合模型以获得     x ;
                                                                      t
                 13. End

                 算法  2. 客户端块级多输出正则化算法 (BMR).
                                    t
                 输入: 全局模型块数量      m , 本地批次大小    B, 本地迭代次数     e, 温度  δ, 学习率  γ;
                                    k
                                      t
                                      x
                 输出: 客户端   k 的本地模型  , 通信时间      H k,b , 计算时间  H k,c .
                                      k
                      t                 t
                 1. 将  m  块全局模型块和   M −m  本地模型块进行结合形成组合模型;
                      k                 k
                 2. for 对于每个本地迭代    E = {1,2,...,e} do
                 3.   按照图   2  所示得到多条输出;
                 4.   根据公式    (13) 进行本地训练迭代;
                 5. end
                 6. 记录通信时间    H k,b  和计算时间  H k,c ;
                     H k,b 、   t
                 7. 将    H k,c  和  x  返回给服务器;
                               k
                    在算法   1  中, 我们首先对参数进行初始化 (第          1  行). 接着, 对于每个客户端      k  通过相关公式求解得到       D k,m
                 (第  3–7  行). 我们为客户端  k 做出本轮决策得到      m , 并更新客户端上接收       m  个全局模型块的频次 (第      8、9  行). 随
                                                       t
                                                       k
                 后, 每个客户端分别执行算法         2 (第  10  行). 最后, 服务器会对接收到的模型进行聚合获得全局模型 (第             12  行). 在算
                 法  2  中, 客户端首先对本地模型和全局模型进行组合 (第             1  行), 随后对组合模型进行多次训练迭代 (第          2–5  行). 在
                 此过程中, 我们记录下通信时间和计算时间, 并返回给服务器进行接下来的运算 (第                        6、7  行).

                    此外, 我们也对算法的时间复杂度进行了分析. 具体而言, 在每一轮训练                   t ∈ {1,...,T} 中, 每个客户端   k ∈ {1,...,K}
                 首先会计算收到      m (最大为  M) 个全局模型块的反馈信息, 接着客户端进行              e 次本地迭代执行块级多输出算法, 需
                 要消耗   O(M+e) 的时间复杂度, 综上所述, 整个算法的时间复杂度为              O(TK(M+e)).

                  5   实验分析

                    在本节中, 我们分别做了        5  组实验来验证所提框架       FedAlt 的有效性和高效性. 首先介绍实验配置, 然后展示
                 实验的结果.
                  5.1   实验设置
                    ● 实验环境. 我们构建了一个联邦学习的仿真环境, 由一个                  AMAX  深度学习工作站      (Intel(R) Xeon(R) Gold
                 5218R CPU, 8 NVIDIA GeForce RTX 3090 GPUs, 256 GB RAM) 组成, 并且在  PyTorch  框架下  [39] 完成了所有的实
                 验, Python  库的  MPI 被用来建立客户端和参数服务器之间的通信. 参考文献               [40] 中的实验设置, 我们生成了        100
                 个客户端并且随机激活了其中的            10  个客户端, 通过这种设置我们可以模拟           FedAlt 和所有基线方法的联邦训练
                 过程.
                    ● 数据集和模型. 我们在       CIFAR-10  和  CIFAR-100  数据集  [41] 上分别评估了  FedAlt 和所有基线方法的性能.
   399   400   401   402   403   404   405   406   407   408   409