您现在的位置是:首页 >技术交流 >【FATE联邦学习】FATE 自定义Trainer网站首页技术交流

【FATE联邦学习】FATE 自定义Trainer

Yonggie 2024-09-12 12:01:04
简介【FATE联邦学习】FATE 自定义Trainer

背景

自己定义了模型后,需要自行定义训练方式。

这里文档给了方法,但是大部分还是需要自己看源码摸索。

我的做法

federatedml.nn.homo.trainer里面加入自己的trainer。
我自己直接复制了原先的FedAvgTrainer的代码,然后改掉了train的代码成自己代码了。

有几个注意的点

  • Fateboard中打印loss:找callback_loss,参照FedAvgTrainer的代码加上就行,loss已经在base类里实现了,你也参考call back loss的代码可以直接新写个指标。

我碰到的坑是:必须float+cpu()一下、或者用item()取值才行,即便是我的torch版本是支持cuda的,不然报错。我的写法是self.callback(float(my_loss.cpu().detach()), idx),但是我打印了FedAvg的loss他本身是numpy类型的,但是我直接numpy()就不行。不知道怎么回事。

self.callback(my_loss.cpu().detach().numpy(), idx),不报错,但是Fateboard加载不出来
self.callback(my_loss, idx),报错,说cuda available是False,我真醉了

  • FedAvgTrainerfederation process是与是否收敛convergence相关的,加入那段代码能有快速结束训练的效果(达到收敛标准可立即结束,跟early stopping差不多)。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。