FedNova Strategy
FedNova¶
根据论文 Tackling the Objective Inconsistency Problem in Heterogeneous Federated Optimization , 我们实现了FedNova聚合算法
完整的该示例的源代码参考FedNova。
To start a FedNova server¶
strategy = message_type.STRATEGY_FEDNOVA # define server type
server = AggregateServer(args.addr, strategy, args.num)
server.run()
To start a client¶
See how to use
FedNova涉及客户端的样本数(sample_num
)和每轮训练优化的次数(batch_num
),因此需要覆盖Trainer.config
方法以返回这两个值
def config(self) -> dict():
return {
"batch_num": len(self._train_loader),
"sample_num": len(self._train_loader) * self._train_loader.batch_size,
}
FedNova 还需要重写 Trainer.get
方法,以返回客户端当前模型和上一轮模型之间的差异。