联邦学习框架fedml中集成谷歌提供的差分隐私框架opacus遇到的问题
由于opacus
提供的是DP-SGD
,在fedml
中将代码定位到具体客户端训练的.py
文件中,如my_model_trainer_classification.py
根据opacus
的官网教程,在对应位置添加如下代码(超参要自己模型调整):
保存,运行,在第一轮训练完第一个客户端,准备训练第二个客户端时报错,报错如下:“Trying to add hooks twice to the same model”,即对模型重复两次调梯度,怀疑可能是model = self.model
这边有问题,遂将代码改为:
即重新new
了一个模型,抛弃使用self.model
,并且将函数的返回值做了一定的修改,报错完美解决