WwZzz / easyFL

An experimental platform for federated learning.
Apache License 2.0
543 stars 92 forks source link

目前实现的算法都是在Client里deepcopy一个模型吗? #44

Closed Guncuke closed 1 year ago

Guncuke commented 1 year ago

在复杂模型下开几十个客户端是不是就容易爆显存

WwZzz commented 1 year ago

在复杂模型下开几十个客户端是不是就容易爆显存

你好,是的,默认方式为使用deepcopy,当遇到OOM的问题,则可以通过在flgo.init函数中设置option = {..., 'num_parallels':0, 'server_with_cpu':True}来令用户串行训练且令用户发送到服务器的模型放置在内存上(e.g. 用户默认不存储全局模型的副本),来防止在显卡上存储过多的模型;或是可以设置option = {..., 'gpu':[0, 1, 2, 3], 'server_with_cpu':True}来为不同的用户分配不同的GPU,也可以一定程度上缓解OOM的问题。由于每轮服务器一般均进行用户采样,因此实际情况中OOM的情况还是比较有限的。如果遇到实在复杂的模型,无法使用deepcopy,则建议继承fedbase中的类,并重写Server.pack和Client.unpack函数,来修改服务器发送和用户接收的内容

Guncuke commented 1 year ago

谢谢