The Flower Team is excited to announce the release of Flower 1.13 stable and it’s packed with 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):
Adam Narozniak, Charles Beauville, Chong Shen Ng, Daniel J. Beutel, Daniel Nata Nugraha, Dimitris Stripelis, Heng Pan, Javier, Mohammad Naseri, Robert Steiner, Waris Gill, William Lindskog, Yan Gao, Yao Xu, wwjang
What’s new?
-
Introduce
flwr lscommand (#4460, #4459, #4477)The
flwr lscommand is now available to display details about all runs (or one specific run). It supports the following usage options:flwr ls --runs [<app>] [<federation>]: Lists all runs.flwr ls --run-id <run-id> [<app>] [<federation>]: Displays details for a specific run.
This command provides information including the run ID, FAB ID and version, run status, elapsed time, and timestamps for when the run was created, started running, and finished.
-
Fuse SuperLink and SuperExec (#4358, #4403, #4406, #4357, #4359, #4354, #4229, #4283, #4352)
SuperExec has been integrated into SuperLink, enabling SuperLink to directly manage ServerApp processes (
flwr-serverapp). TheflwrCLI now targets SuperLink’s Exec API. Additionally, SuperLink introduces two isolation modes for running ServerApps:subprocess(default) andprocess, which can be specified using the--isolation {subprocess,process}flag. -
Introduce
flwr-serverappcommand (#4394, #4370, #4367, #4350, #4364, #4400, #4363, #4401, #4388, #4402)The
flwr-serverappcommand has been introduced as a CLI entry point that runs aServerAppprocess. This process communicates with SuperLink to load and execute theServerAppobject, enabling isolated execution and more flexible deployment. -
Improve simulation engine and introduce
flwr-simulationcommand (#4433, #4486, #4448, #4427, #4438, #4421, #4430, #4462)The simulation engine has been significantly improved, resulting in dramatically faster simulations. Additionally, the
flwr-simulationcommand has been introduced to enhance maintainability and provide a dedicated entry point for running simulations. -
Improve SuperLink message management (#4378, #4369)
SuperLink now validates the destination node ID of instruction messages and checks the TTL (time-to-live) for reply messages. When pulling reply messages, an error reply will be generated and returned if the corresponding instruction message does not exist, has expired, or if the reply message exists but has expired.
-
Introduce FedDebug baseline (#3783)
FedDebug is a framework that enhances debugging in Federated Learning by enabling interactive inspection of the training process and automatically identifying clients responsible for degrading the global model’s performance—all without requiring testing data or labels. Learn more in the FedDebug baseline documentation.
-
Update documentation (#4511, #4010, #4396, #4499, #4269, #3340, #4482, #4387, #4342, #4492, #4474, #4500, #4514, #4236, #4112, #3367, #4501, #4373, #4409, #4356, #4520, #4524, #4525, #4526, #4527, #4528, #4545, #4522, #4534, #4513, #4529, #4441, #4530, #4470, #4553, #4531, #4554, #4555, #4552, #4533)
Many documentation pages and tutorials have been updated to improve clarity, fix typos, incorporate user feedback, and stay aligned with the latest features in the framework. Key updates include adding a guide for designing stateful
ClientAppobjects, updating the comprehensive guide for setting up and running Flower’sSimulation Engine, updating the XGBoost, scikit-learn, and JAX quickstart tutorials to useflwr run, updating DP guide, removing outdated pages, updating Docker docs, and marking legacy functions as deprecated. The Secure Aggregation Protocols page has also been updated. -
Update examples and templates (#4510, #4368, #4121, #4329, #4382, #4248, #4395, #4386, #4408)
Multiple examples and templates have been updated to enhance usability and correctness. The updates include the
30-minute-tutorial,quickstart-jax,quickstart-pytorch,advanced-tensorflowexamples, and the FlowerTune template. -
Improve Docker support (#4506, #4424, #4224, #4413, #4414, #4336, #4420, #4407, #4422, #4532, #4540)
Docker images and configurations have been updated, including updating Docker Compose files to version 1.13.0, refactoring the Docker build matrix for better maintainability, updating
docker/build-push-actionto 6.9.0, and improving Docker documentation. -
Allow app installation without internet access (#4479, #4475)
The
flwr buildcommand now includes a wheel file in the FAB, enabling Flower app installation in environments without internet access viaflwr install. -
Refactor SuperNode for better maintainability and efficiency (#4439, #4348, #4512, #4485)
-
Support NumPy
2.0(#4440) -
Update infrastructure and CI/CD (#4466, #4419, #4338, #4334, #4456, #4446, #4415)
-
Bugfixes (#4404, #4518, #4452, #4376, #4493, #4436, #4410, #4442, #4375, #4515)
-
General improvements (#4454, #4365, #4423, #4516, #4509, #4498, #4371, #4449, #4488, #4478, #4392, #4483, #4517, #4330, #4458, #4347, #4429, #4463, #4496, #4508, #4444, #4417, #4504, #4418, #4480, #4455, #4468, #4385, #4487, #4393, #4489, #4389, #4507, #4469, #4340, #4353, #4494, #4461, #4362, #4473, #4405, #4416, #4453, #4491, #4539, #4542, #4538, #4543, #4541, #4550, #4481)
As always, many parts of the Flower framework and quality infrastructure were improved and updated.
Deprecations
-
Deprecate Python 3.9
Flower is deprecating support for Python 3.9 as several of its dependencies are phasing out compatibility with this version. While no immediate changes have been made, users are encouraged to plan for upgrading to a supported Python version.
Incompatible changes
-
Remove
flower-superexeccommand (#4351)The
flower-superexeccommand, previously used to launch SuperExec, is no longer functional as SuperExec has been merged into SuperLink. Starting an additional SuperExec is no longer necessary when SuperLink is initiated. -
Remove
flower-server-appcommand (#4490)The
flower-server-appcommand has been removed. To start a Flower app, please use theflwr runcommand instead. -
Remove
appargument fromflower-supernodecommand (#4497)The usage of
flower-supernode <app-dir>has been removed. SuperNode will now load the FAB delivered by SuperLink, and it is no longer possible to directly specify an app directory. -
Remove support for non-app simulations (#4431)
The simulation engine (via
flower-simulation) now exclusively supports passing an app. -
Rename CLI arguments for
flower-superlinkcommand (#4412)The
--driver-api-addressargument has been renamed to--serverappio-api-addressin theflower-superlinkcommand to reflect the renaming of theDriverservice to theServerAppIoservice. -
Rename CLI arguments for
flwr-serverappandflwr-clientappcommands (#4495)The CLI arguments have been renamed for clarity and consistency. Specifically,
--superlinkforflwr-serverappis now--serverappio-api-address, and--supernodeforflwr-clientappis now--clientappio-api-address.