I have basic experience with gRPC, but I’m not familiar with the specifics of sending files via gRPC, the changes to the .proto protocol between different versions of Flower, and how Flower utilizes gRPC under the hood. I would greatly appreciate it if you could help me answer the following questions!
If a client has already connected to a Flower server via gRPC, how can the server send files to the client (these could be .tflite model files or supplementary datasets)? Additionally, would it be necessary to modify and recompile the proto files?
Let me add some context about the usage scenario (though this likely won’t affect the answer to this post): Flower had an great Android demo ( flower/examples/android at main · adap/flower · GitHub ) for federated training between a PC server and Android clients. In this demo, the .tflite model files and datasets had to be packaged into the .apk during compilation. I want to extend this functionality to allow the .tflite model files and datasets to be dynamically updated by the server, eliminating the need to recompile and redeploy the .apk every time they change.
One thing to note is that this Android demo was written several years ago, and the Android client’s proto file looks like this ( flower/examples/android/client/app/src/main/proto/transport.proto at main · adap/flower · GitHub ). I’m unsure if the version of Flower used on the PC server will cause any compatibility issues. For reference, I’m currently using flwr 1.18.0 on PC server, which I’ve verified works correctly. However, I’m not sure if this flwr version satisfies my requirements. If I need to migrate the PC-based Flower server to the latest version to achieve my goals, I’m concerned about potential side effects that might arise from the Android client’s .proto file.