TsingZ0 / PFLlib

37 traditional FL (tFL) or personalized FL (pFL) algorithms, 3 scenarios, and 20 datasets.
GNU General Public License v2.0
1.35k stars 283 forks source link

SCAFFOLD训练失败 #152

Closed JokerZhang66 closed 8 months ago

JokerZhang66 commented 9 months ago

image loss值训练几轮之后为Nan,学习率从0.1-0.00001调整都没用,SCAFFOLD参数没动,不知是否实现上有问题

TsingZ0 commented 9 months ago

SCAFFOLD还有一个超参数server_learning_rate,需要匹配local_learning_rate进行调整。

按照我之前用常见的模型跑的情况来看,SCAFFOLD有时候确实会发散,何况你这里用的还是你自己的myCNN。

更重要的一点是:虽然SCAFFOLD给了收敛性的理论证明,但SCAFFOLD假设每个client每个iteration执行相同数量(K)的SGD steps,这与大多数其他论文中的实验设定不匹配,也与FedAvg考虑的non-IID场景不匹配。而本项目采用的是用的最多的non-IID场景,也就是FedAvg的那种。每个client每个iteration执行相同数量(E)的local epochs,每个epoch都会完整过一遍该客户机的整个training set,由于unbalanced data,不同client上的training set大小不一样,所以每个client上的SGD steps都不同。

所以,其实SCAFFOLD能适用的场景比较有限。你可以手动修改数据库分割代码,来匹配SCAFFOLD的场景。