Seeking examples of GetPropertiesIns. Besides, can heterogeneous FL be implemented via Flower?

I want to implement the FedRolex algorithm (https://github.com/AIoT-MLSys-Lab/FedRolex) in “heterogeneous federated learning” based on flwr. If you don’t know FedRolex, it doesn’t matter. Simply put, I want different clients in flwr to train with a part of the server’s global model (for example, Conv1 of the server’s global model has 64 3×3 convolutional kernels: Client A may train with the complete 64×3×3 kernels (in this case, the model-rate of Client A is defined as 1.0); Client B may train with half of them, i.e., 32×3×3 kernels (model-rate=0.5 for Client B); Client C may train with a quarter, i.e., 16×3×3 kernels (model-rate=0.25 for Client C), and so on).

I have the following questions, and I would be very grateful if you could answer even one of them:

① Is there any DEMO for the usage of the GetPropertiesIns message?

The flwr-examples repository has abundant examples of using messages like FitIns and EvaluateIns, but I haven’t found any examples of the GetPropertiesIns message.

I ask this because I hope that after clients connect to the server and before the server starts training, the server can query client information (such as the battery level, hardware configuration of mobile clients, or the aforementioned model-rate) through this message.

② Is it possible for the server to send different model parameters to different clients in the same training round?

To continue with the above example: Conv1 of the global model has 64 3×3 convolutional kernels. I hope to send the complete 64 kernels to Client A, a continuous segment of 32 kernels to Client B, and a continuous segment of 16 kernels to Client C. How to achieve this with flwr?

Hi @bling

With the latest Flower versions, this is easier using the Message API rather than GetPropertiesIns.

You can use the provided Grid object to send and receive custom messages to specific clients, including querying client metadata and sending different payloads per client in the same round.

A simple example is here:

Quickstart Pandas + Flower

A more advanced example (client-specific communication) is the Vertical FL example:

Vertical Federated Learning with Flower

Your FedRolex-style use case isn’t shown directly, but these examples cover the core mechanics you need. Hope it helps!

(Like your about-me, btw :smile: )

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.