fedn icon indicating copy to clipboard operation
fedn copied to clipboard

Which communication protocol and serialization method is supported?

Open Rene36 opened this issue 11 months ago • 1 comments

Dear FedN Team,

I am currently writing a survey paper on Federated Computing. One part of it describes existing FL frameworks. Could you please let me know which communication protocol (e.g., gRPC, WebSocket, HTTP, GLOO) and serialization method (e.g., Pickle, JSON, Protobuf, FOBS) you supports I already saw in your documentation that you support gRPC, but maybe there is more.

Any help is highly appreciated.

Rene36 avatar Mar 21 '24 12:03 Rene36

Hi Rene, we use gRPC for communication between aggregation server (combiner) and clients, controller. Clients use HTTP to assign to the FL network, and users use HTTP to interact with the REST API for managing exeperimens.

For model serialization, you as a user/developer can decide this by implementing a custom "helper". The default Python3 helper represents parameters as lists of numpy arrays and we serialize to bytes. The framework will then chunk-up the blob and uses gRPC streaming under the hood to send it to/from the server (combiner). The Android/Kotlin helper uses JSON. We strongly advice against using pickle for marshalling in any production-like setting, since it is insecure. For more information see here: https://fedn.readthedocs.io/en/stable/helpers.html

If you have more questions, just jump into our Discord server and interact with our core developers.

ahellander avatar Mar 31 '24 07:03 ahellander