The Flower team is excited to announce the release of Flower 1.20 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):
Charles Beauville
, Chong Shen Ng
, Daniel J. Beutel
, Daniel Nata Nugraha
, Dimitris Stripelis
, Heng Pan
, Javier
, Kumbham Ajay Goud
, Robert Steiner
, William Lindskog
, Yan Gao
What’s new?
-
Send/receive arbitrarily large models (#5552, #5550, #5600, #5611, #5614, #5551)
Flower 1.20 can send and receive arbitrarily large models like LLMs, way beyond the 2GB limit imposed by gRPC. It does so by chunking messages sent and received. The best part? This happens automatically without the user having to do anything.
-
Implement object-based messaging between SuperNode and ClientApp (#5540, #5577, #5581, #5582, #5583, #5584, #5585, #5586, #5587, #5589, #5590, #5592, #5595, #5597, #5598, #5599, #5602, #5604, #5605, #5606, #5607, #5609, #5613, #5616, #5624, #5645)
Redesigns the messaging system to enable object-based communication between the SuperNode and ClientApp, replacing the previous message-coupled design. Introduces new RPCs and enhances the
ClientAppIo
and Fleet APIs to faciliate better object storage in SuperNode and decoupleObjectStore
fromMessage
, improving maintainability and extensibility. Several refactorings improve modularity, naming consistency, and model weight streaming. -
Refactor SuperNode to use NodeState exclusively (#5535, #5536, #5537, #5541, #5542, #5610, #5628)
Refactors SuperNode to rely solely on
NodeState
for managing all information, decoupling internal components for improved maintainability and clearer state handling. RPCs of theClientAppIo
API have been refactored accordingly, laying the groundwork for future concurrent ClientApps support. -
Enforce maximum size limit for FAB files (#5493)
Limits the size of FAB files to a maximum of 10MB to prevent oversized artifacts. Developers can reduce FAB size by excluding unnecessary files via the
.gitignore
file in the Flower app directory. -
Add CatBoost federated learning quickstart example (#5564)
This example shows how to use CatBoost with Flower for federated binary classification on the Adult Census Income dataset. It applies a tree-based bagging aggregation method. View the example for more details.
-
Fix Windows path issue in FAB builds (#5608)
Updates the way FAB files represent relative paths to their internal files to ensure consistency across different operating systems. This fixes an issue where a FAB built on Windows would fail integrity checks when run on UNIX-based systems (e.g., Ubuntu).
-
Add explainer for
pyproject.toml
configuration (#5636)Adds a guide explaining how to configure a Flower app using its
pyproject.toml
file. The documentation is available here. -
Improve
flwr new
templates with TOML comments and README links (#5635)Adds comments to the generated
pyproject.toml
and a new section in theREADME.md
, both linking to the TOML explainer. -
Warn when running Ray backend on Windows and update simulation guide (#5579)
Logs a warning when using the Ray backend for simulation on Windows. Updates the simulation guide to include a corresponding note about limited Windows support.
-
Add Helm deployment guide (#5637)
The documentation now includes a comprehensive guide for deploying Flower SuperLink and SuperNode using Helm charts. For full instructions, refer to the Helm Guide.
-
Add docs for user authentication and audit logging (#5630, #5643, #5649)
Introduces documentation for configuring user authentication (User Authentication Guide) and audit logging (Audit Logging Guide) in Flower.
-
Support gRPC health check by default (#5591)
-
Improve and update documentation (#5558, #5603, #5538, #5626, #5566, #5553, #5588, #5549, #5618, #5612, #5646)
-
General improvements (#5543, #5594, #5623, #5615, #5629, #5571, #5617, #5563, #5620, #5619, #5546, #5601, #5641, #5555, #5533, #5548, #5557, #5565, #5554, #5621, #5644, #5576, #5648)
As always, many parts of the Flower framework and quality infrastructure were improved and updated.
Incompatible changes
-
Remove non-
grpc-bidi
transport support from deprecatedstart_client
(#5593)Drops support for non-
grpc-bidi
transport in the deprecatedstart_client
API. Pleaes useflower-supernode
instead.