Just 15 days away from the Flower AI Summit 2025, the Flower team is excited to announce the release of Flower 1.16 stable, packed with new updates!
Flower is a friendly framework for collaborative AI and data science.
It makes novel approaches such as federated learning, federated evaluation,
federated analytics, and fleet learning accessible to a wide audience of researchers and engineers.
Thanks to our contributors
We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):
Alan Silva, Andrej Jovanović, Charles Beauville, Chong Shen Ng, Daniel J. Beutel, Dimitris Stripelis, Heng Pan, Javier, Kevin Ta, Li Shaoyu, Mohammad Naseri, Taner Topal, Yan Gao
What’s new?
-
Enhance
RecordSetandArrayfor improved usability (#4963, #4980, #4918)RecordSetnow supports dictionary-like access, allowing interactions similar to built-in Python dictionaries. For example, instead ofrecordset.parameters_records["model"], users can simply userecordset["model"]. This enhancement maintains backward compatibility with existingrecordset.*_recordsproperties.Additionally, the
Arrayclass now acceptsnumpy.ndarrayinstances directly in its constructor, enabling instantiation with a NumPy array viaArray(your_numpy_ndarray). -
Support function-specific Flower Mods for
ClientApp(#4954, #4962)Flower Mods can now be applied to individual functions within the
ClientApprather than affecting the entire application. This allows for more granular control. The documentation has been updated to reflect these changes — please refer to How to Use Built-in Mods for details. -
Introduce
@app.lifespan()for lifecycle management (#4929, #4986)ServerAppandClientAppnow support@app.lifespan(), enabling custom enter/exit handlers for resource setup and cleanup. Throughout the entire FL training, these handlers inClientAppmay run multiple times as instances are dynamically managed. -
Add FedRAG example (#4955, #5036, #5042)
Adds a FedRAG example, integrating Federated Learning with Retrieval Augmented Generation (RAG). This approach allows Large Language Models (LLMs) to query distributed data silos without centrally aggregating the corpora, enhancing performance while preserving data privacy.
-
Upgrade FedProx baseline to a Flower App (#4937)
Updates FedProx to the a Flower App by removing Hydra, migrating configs to
pyproject.toml, usingClientAppandServerApp, integratingflwr-datasetswithDistributionPartitioner, enabling result saving, and updatingREADME.md. This baseline now supportsflwr run. -
Migrate framework to Message-based system (#4959, #4993, #4979, #4999)
The Flower framework has been fully migrated from a
TaskIns/TaskRes-based system to aMessage-based system, aligning with the user-facingMessageclass. This includes adding validator functions forMessage, introducingLinkStatemethods that operate onMessage, updatingLinkStateto useMessage-only methods, and removing theTask-related code entirely. -
Introduce event logging extension points (#4948, #5013)
Begins implementing an event logging system for SuperLink, allowing RPC calls to be logged when enabled. These changes introduce initial extension points.
-
Increase default TTL and message size (#5011, #5028)
The default TTL for messages is now 12 hours (up from 1 hour), and the gRPC message size limit has increased from 512MB to 2GB. TTL sets a hard limit on the time between the
ServerAppsending an instruction and receiving a reply from theClientApp. -
Improve documentation (#4945, #4965, #4994, #4964, #4991, #5014, #4970, #4990, #4978, #4944, #5022, #5007, #4988, #5053)
-
Update CI/CD (#4943, #4942, #4953, #4985, #4984, #5025, #4987, #4912, #5049)
-
General Improvements (#4947, #4972, #4992, #5020, #5018, #4989, #4957, #5000, #5012, #5001)
As always, many parts of the Flower framework and quality infrastructure were improved and updated.
Incompatible changes
-
Remove deprecated CLI commands (#4855)
Removes deprecated CLI commands:
flower-server-app,flower-superexec, andflower-client-app. These commands are no longer available in the framework. -
Bump minimum Python and
cryptographyversions (#4946)Bumps the minimum Python version from 3.9 to 3.9.2 and updates the
cryptographypackage from 43.0.1 to 44.0.1. This change ensures compatibility with the latest security updates and features.
