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 ls
command (#4460, #4459, #4477)The
flwr ls
command 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
). Theflwr
CLI 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-serverapp
command (#4394, #4370, #4367, #4350, #4364, #4400, #4363, #4401, #4388, #4402)The
flwr-serverapp
command has been introduced as a CLI entry point that runs aServerApp
process. This process communicates with SuperLink to load and execute theServerApp
object, enabling isolated execution and more flexible deployment. -
Improve simulation engine and introduce
flwr-simulation
command (#4433, #4486, #4448, #4427, #4438, #4421, #4430, #4462)The simulation engine has been significantly improved, resulting in dramatically faster simulations. Additionally, the
flwr-simulation
command 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
ClientApp
objects, 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-tensorflow
examples, 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-action
to 6.9.0, and improving Docker documentation. -
Allow app installation without internet access (#4479, #4475)
The
flwr build
command 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-superexec
command (#4351)The
flower-superexec
command, 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-app
command (#4490)The
flower-server-app
command has been removed. To start a Flower app, please use theflwr run
command instead. -
Remove
app
argument fromflower-supernode
command (#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-superlink
command (#4412)The
--driver-api-address
argument has been renamed to--serverappio-api-address
in theflower-superlink
command to reflect the renaming of theDriver
service to theServerAppIo
service. -
Rename CLI arguments for
flwr-serverapp
andflwr-clientapp
commands (#4495)The CLI arguments have been renamed for clarity and consistency. Specifically,
--superlink
forflwr-serverapp
is now--serverappio-api-address
, and--supernode
forflwr-clientapp
is now--clientappio-api-address
.