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?