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 和所有基线方法的性能.

