KarhouTam / FL-bench

Benchmark of federated learning. Dedicated to the community. 🤗
GNU General Public License v3.0
505 stars 82 forks source link

For pFedMe #41

Closed Flying7514 closed 1 year ago

Flying7514 commented 1 year ago

感谢您的开源代码,麻烦问一下,您在pFedMe代码中是先采样客户端进行训练的,而pFedMe源码中是先训练所有客户端然后采样进行聚合。不理解为什么源码和论文是这样设计的,这样设计会多训练很多没有用的客户,训练时间会增加。而FedAvg是先采样后训练的初衷就是增加训练速度。不知道我的理解对不对。 还请问,先采样后训练这种方式是不是不影响pFedAvg的性能。 image

KarhouTam commented 1 year ago

不理解为什么源码和论文是这样设计的,这样设计会多训练很多没有用的客户,训练时间会增加

说实话我也不是很理解为什么要在每个 global round 把模型参数发送给所有 client 却只取回部分 client 的模型参数。感觉唯一说得过去的假设就是 server 是希望每轮参加的 client 越多越好的,所以会尽可能把模型参数发送给 client 去训练,但由于现实中会有种种不稳定因素导致 client 可能并不会成功走完训练模型到返回模型参数这个 workflow,所以 server 这边用一个采样的方式来模拟这一点(感觉很牵强,但我也想不出别的解释了😂)。

先采样后训练这种方式是不是不影响pFedAvg的性能

先采样客户端后训练应该是绝大多数 FL 算法的共识,所以个人感觉影响性能这一说法并不成立。

Flying7514 commented 1 year ago

非常感谢您的解释 !