With just a little over two weeks until Flower AI Day in San Francisco (Sep 25) and the Flower Decentralized AI Hackathon at Stanford (Sep 26), the Flower team is excited to announce the release of Flower 1.21 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
, Evram
, Heng Pan
, Javier
, Robert Steiner
, Yan Gao
What’s new?
-
Introduce Message API strategies (#5710, #5766, #5770, #5771, #5774, #5779, #5787, #5794, #5798, #5804, #5807, #5813, #5824, #5831, #5838)
Introduces a new abstract base class
Strategy
that operate onMessage
replies, mirroring the design of those operating onFitIns/FitRes
orEvaluateIns/EvaluteRes
while providing more versatility on the type of payloads that can be federated with Flower. The first batch ofMessage
-based strategies are:FedAvg
,FedOpt
,FedAdam
,FedAdagrad
,FedYogi
, and fixed-clipping Differential Privacy strategies. More will follow in subsequent releases. A migration guide has been added to help users transition their existing Flower Apps operating on the originalStrategy
andNumPyClient
abstractions to the Message API. -
Introduce Flower SuperExec (#5659, #5674, #5678, #5680, #5682, #5683, #5685, #5696, #5699, #5700, #5701, #5702, #5703, #5706, #5713, #5726, #5731, #5734, #5735, #5737, #5751, #5759, #5811, #5828)
SuperExec is a new component responsible for scheduling, launching, and managing app processes (e.g.,
ServerApp
,ClientApp
) within the Flower deployment runtime. It is automatically spawned when running a SuperLink or SuperNode in subprocess mode (default). This also introduces a token-based mechanism that improves security by assigning a unique token to each app execution. Supporting changes include new RPCs, protocol updates, plugin abstractions, and Docker image support for SuperExec. For more details, refer to the updated Flower architecture explainer. Documentation has been revised to reflect the introduction of Flower SuperExec, including guides and tutorials such as quickstart with Docker, GCP deployment, and network communication to consistently use SuperExec. -
Update quickstart-pytorch to use Message API (#5785, #5786, #5802)
The
quickstart-pytorch
tutorial has been migrated to the Message API, using the newFedAvg
strategy and the newflwr new
template. -
New PyTorch template with Message API (#5784)
A new PyTorch template using the Message API is now available through
flwr new
. -
Add OpenShift deployment guide for Flower (#5781)
Introduces a guide for deploying Flower on Red Hat OpenShift, including setup steps and configuration examples.
-
Improve Helm documentation (#5711, #5733, #5748, #5758, #5765, #5816)
Helm guide has been enhanced with additional configuration details and updated formatting. Changes include adding a parameters section, documenting how to set a custom
secretKey
, updating TLS instructions for version 1.20, introducing audit logging configuration, and using SuperExec. -
Improve documentation (#5159, #5655, #5668, #5692, #5723, #5738, #5739, #5740, #5753, #5764, #5769, #5775, #5782, #5788, #5795, #5809, #5812, #5817, #5819, #5825, #5836)
Restructures the tutorial series, removes
flower-simulation
references, and updates versioned docs to use the correctflwr
versions. The framework documentation homepage now defaults to the latest stable release instead of themain
branch. -
Re-export user-facing API from
flwr.*app
(#5814, #5821, #5832, #5835)The following classes are now re-exported:
- From
flwr.serverapp
:ServerApp
,Grid
- From
flwr.clientapp
:ClientApp
,arrays_size_mod
,message_size_mod
- From
flwr.app
:Array
,ArrayRecord
,ConfigRecord
,Context
,Message
,MetricRecord
,RecordDict
Importing these from
flwr.server
,flwr.client
, orflwr.common
is deprecated. Please update your imports to useflwr.serverapp
,flwr.clientapp
, orflwr.app
instead to ensure forward compatibility. - From
-
Add
--health-server-address
flag to Flower SuperLink/SuperNode/SuperExec (#5792) -
Update CI/CD workflows and dependencies (#5647, #5650, #5651, #5656, #5712, #5714, #5747, #5754, #5755, #5796, #5806, #5808, #5829)
-
General improvements (#5622, #5660, #5673, #5675, #5676, #5686, #5697, #5708, #5719, #5720, #5722, #5736, #5746, #5750, #5757, #5776, #5777, #5789, #5805, #5797, #5820)
As always, many parts of the Flower framework and quality infrastructure were improved and updated.
Incompatible changes
-
Rename Exec API to Control API (#5663, #5665, #5667, #5671)
The Exec API has been fully renamed to Control API to make its purpose clearer and avoid confusion with SuperExec. This includes renaming
exec.proto
tocontrol.proto
, updating documentation, and changing the--exec-api-address
flag to--control-api-address
. For backward compatibility, the old flag is still supported. -
Deprecate
flwr-*
commands (#5707, #5725, #5727, #5760)The long-running commands
flwr-serverapp
,flwr-clientapp
, andflwr-simulation
are deprecated in favor of SuperExec. Invoking them now launches the corresponding SuperExec process for backward compatibility. -
Remove
--executor*
flags (#5657, #5745, #5749)The
--executor
,--executor-dir
, and--executor-config
flags have been deprecated and the executor code removed. Use the new--simulation
flag to run SuperLink with the simulation runtime.