概述
这篇论文的脉络是比较清晰的,讲的就两件事:
- 使用分布式的Adam优化来代替传统的FedAvg,减少通信轮次
- 对模型进行压缩和解压缩,减少通信开销
算法
框架图
整个算法的步骤如上图所示:
- 下载模型
- 本地训练
- 模型压缩
- 上传模型
- 模型解压
- 模型聚合
从这里可以看到该论文提出的框架与传统的联邦框架并没有什么不同,唯二的区别在以下两个方面:
- 本地训练使用的方法并不是SGD,而是AdamSGD,这两者的区别在于训练的步长是否发生变化
- 在客户端上多了一个压缩模型的操作,相对应地在服务器上多了一个解压缩的操作
客户端
上图展示了客户端的本地训练、更新参数、压缩模型等操作,首先27行表示的是客户端从服务器上下载模型到本地;28-34行表示每个客户端都使用AdamSGD方法来进行训练;35-40行是客户端在本地对需要上传的模型参数进行压缩。压缩的方式有两种,分别是Uniform Quantization (UniQ)
和Exponential Quantization (ExpQ)
,由于我对于这些压缩/解压缩的算法不太熟悉,因此想要深入了解的可以找原论文看看…
服务器
与传统的FL一样,每一轮服务器都会选客户端的一部分子集来进行训练(line 5),然后在6-18行,服务器使用相对应的解压缩方式来对上传的模型进行解压,并在20-22行,使用解压之后的模型参数来更新全局模型
压缩和解压缩
一共有两种对应的压缩/解压缩方式,分别是平均量化Uniform Quantization (UniQ)
和指数量化Exponential Quantization (ExpQ)
,有兴趣的可以看下原论文研究一下
总结
这篇论文所介绍的方法和所要解决的问题都是比较直接。文章的目标主要是达到两个目标:1.减少通信轮次。2.减少通信开销。然后使用的方法也是两种:1.AdamSGD。2.压缩/解压缩。
看下来的话有几点感受:
- 好像IoT场景下的联邦跟普通场景下的联邦并没有什么太大的差别
- 虽然这种压缩/解压缩的方式确实可以减少一部分的通信开销,因为确实能减少参数的数量,但也不可避免地对模型的参数造成一些损失。但我也想不到有更好的办法,因为这只是仅仅在模型参数层面上进行优化。其他的一些做法是对模型进行分段,然后在服务器上对应地分段聚合。目前主流的做法好像就这两种
- 这篇文章用的AdamSGD方法也是现有的一种算法,好像算不上一种创新?并且在这片文章并没有对该算法在FL场景下进行改进,一开始我是抱着这种期待来看这篇文章的…