Hello everyone!
I need to send updated weights to the server after every two rounds instead of every round. But I’m encountering some errors. Could someone provide guidance or a code example on how to achieve this modification successfully?
Hi @Ahmad, intersting setting. In your setup: Does the client get twice the global model (i.e. the model communicated from the server) and after doing local training for the second time, it send the model back ? i.e. it does two fit rounds as usual but only communicates back the model after completing the second?
Or are you implementing something different? Could you provide some extra details? Also, are you thinking of do FL with full participation? (i.e. all clients are sampled in all rounds – that can potentially simplify the approach)
To clarify, I’m attempting to send updated weights during odd-numbered rounds, the model will communicate with the server to receive updates. However, during even-numbered rounds, the model will update its weights locally without communicating with the server.
Regarding your inquiry about full participation, I am indeed considering full participation where all clients are sampled in every round.
This approach aims to reduce the communication load on both the server and clients by updating weights locally every other round.
I see, then following this logic: would communicating the model back to the server be be equivalent to having the clients do 2 epochs of local training?
if not, then what happens in even-numbered rounds? do clients receive something else from the server?
Yes, the initial logic that i used is like doing two rounds of local training on the client side. However, from this basic logic, i like to control which updates are sent to the server and which are kept locally . I aim to develop methods that reduce the load on both the server and clients.