Announcing Flower 1.13

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). The flwr CLI now targets SuperLink’s Exec API. Additionally, SuperLink introduces two isolation modes for running ServerApps: subprocess (default) and process, 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 a ServerApp process. This process communicates with SuperLink to load and execute the ServerApp 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’s Simulation Engine, updating the XGBoost, scikit-learn, and JAX quickstart tutorials to use flwr 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 via flwr install.

  • Improve flwr log command (#4391, #4411, #4390, #4397)

  • 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 the flwr run command instead.

  • Remove app argument from flower-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 the flower-superlink command to reflect the renaming of the Driver service to the ServerAppIo service.

  • Rename CLI arguments for flwr-serverapp and flwr-clientapp commands (#4495)

    The CLI arguments have been renamed for clarity and consistency. Specifically, --superlink for flwr-serverapp is now --serverappio-api-address, and --supernode for flwr-clientapp is now --clientappio-api-address.

5 Likes