WwZzz

Results 38 comments of WwZzz

好的,感谢支持,心意已领

你好,如何自定义数据集这方面需要注意通过TaskPipe定义数据存取的格式,以及通过TaskCalculaotr定义数据和模型训练测试的pipeline。关于这方面还没系统地写相应的教程,我过阵子放假了会更新一下近期汇总的bug和推相应的教程。二维码现已更新。

测试了下发现是除以0导致的。为了不影响正常训练,可以把gi.normalize()那里归一化的方式替换成以下形式 ``` for i in range(len(grads)): gi_norm = 0.0 for p in grads[i].parameters(): gi_norm += (p**2).sum() grads[i] = grads[i]/(torch.sqrt(gi_norm) + 1e-8) ``` ![image](https://github.com/WwZzz/easyFL/assets/20792079/87ab430d-2aca-4693-a08a-f2bbeafc7ec0) 修改后我这里在提到的第一个设置下运行500轮无报错。

你好,之前有人在flgo交流群中提出了同样的问题,该问题是因为qfedavg的代码中使用norm接口直接计算模型的范数,norm结构默认调用的是flgo.utiles.fmodule._model_dict_norm,而model.state_dict()中通常包含了统计量参数,使得带bn层的模型由该接口得到的范数都会非常大,若是更新过程中除以了模型范数的话,会出现这种模型更新被放缩到0的情形,我这里贴上我修复后的qfedavg代码,稍后会将该更新整合到flgo中

`"""This is a non-official implementation of 'Fair Resource Allocation in Federated Learning' (http://arxiv.org/abs/1905.10497). And this implementation refers to the official github repository https://github.com/litian96/fair_flearn """ import flgo.algorithm.fedbase as fedbase import flgo.utils.fmodule...

将涉及到norm计算的地方替换成基于model.parameter计算可以修复该问题,但是由于bn和niid在联邦学习中具有天然冲突,建议直接使用不带bn或是将bn替换成gn的模型

> 希望调用同态加密之类的密码学算法实现梯度加密,在这个框架的那部分进行修改能够实现? 你好,需要修改Client.initialize初始化密钥,修改Client.pack加密上传的内容,修改Server.iterate处理接收到的内容的方式

你好,默认不提供通过设置参数来保存模型。如需保存模型,建议继承类flgo.experiment.logger.BasicLogger并重写log_once函数,它每隔数轮(eval_interval)会被执行一次 ,用于评估当前模型,这里头也适用于写模型参数的保存部分,例如: `class MyLogger(BasicLogger): def log_once(self): # 保存模型 ... torch.save(self.server.model, save_path) ... flgo.init(...,Logger=MyLogger, ...) `

你好,非常感谢你的反馈。我尝试运行与你相同的命令,但是没有复现出你的bug。我所运行的代码是 ``` import flgo gen_config = { 'benchmark':{'name':'flgo.benchmark.cifar10_classification'}, # 'partitioner':{'name':'IIDPartitioner', 'para':{'num_clients':100}} 'partitioner':{'name': 'DirichletPartitioner','para':{'num_clients':20, 'alpha':0.5,'imbalance':0.5}} } op = {"sample": "md", "aggregate": "uniform", "num_rounds": 100, "proportion": 0.6, "learning_rate_decay": 0.998, "lr_scheduler": -1, "early_stop":...

> 这是我复现过程中的完整参数设置,除了展示的fedprox外,其他方法存在同样问题。 {"option": {"sample": "md", "aggregate": "uniform", "num_rounds": 100, "proportion": 0.6, "learning_rate_decay": 0.998, "lr_scheduler": -1, "early_stop": -1, "num_epochs": 2, "num_steps": -1, "learning_rate": 0.1, "batch_size": 64.0, "optimizer": "SGD", "clip_grad": 0.0, "momentum":...