Published

Announcing Flower 1.15

Photo of Pan Heng
Pan Heng
Research Scientist at Flower Labs

Share this post

In the first month of 2025, the Flower team is excited to announce the release of Flower 1.15 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.

Happy Year of the Snake to all our users and contributors! 🧧🎉

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, Haoran Jie, Heng Pan, Ivelin Ivanov, Javier, Kevin Patel, Mohammad Naseri, Pavlos Bouzinis, Robert Steiner

What's new?

  • Enhance SuperNode authentication (#4767, #4791, #4765, #4857, #4867)

    Enhances the SuperNode authentication system, making it more efficient and resilient against replay attacks. There's no longer a need to pass --auth-superlink-private-key and --auth-superlink-public-key when running the SuperLink. Additionally, Flower now enables automatic node authentication by default, preventing impersonation even when node authentication is not explicitly used. For more details, see the documentation.

  • Add guide for running Flower with Deployment Engine (#4811, #4733)

    Introduces the How to run Flower with Deployment Engine guide, providing detailed instructions on deploying Federated Learning in production environments using the Flower Deployment Engine.

  • Add Flower Network Communication reference documentation (#4805)

    Introduces the Flower Network Communication documentation, which details the network connections used in a deployed Flower federated AI system.

  • Add LeRobot quickstart example (#4607, #4816)

    Introduces an example demonstrating federated training of a Diffusion policy on the PushT dataset using LeRobot and Flower. The dataset is partitioned with Flower Datasets, and the example runs best with a GPU. More details: Flower LeRobot Example.

  • Add video tutorial to simulation documentation (#4768)

    The Flower AI Simulation 2025 tutorial series is now available on YouTube. You can watch all the videos here or via the embedded previews in the documentation. The accompanying code for the tutorial can be found in the Flower GitHub repository.

  • Introduce StatAvg baseline (#3921)

    StatAvg mitigates non-IID feature distributions in federated learning by sharing and aggregating data statistics before training. It is compatible with any FL aggregation strategy. More details: StatAvg baseline.

  • Allow setting log level via environment variable (#4860, #4880, #4886)

    Log level can now be configured using the FLWR_LOG_LEVEL environment variable. For example, running FLWR_LOG_LEVEL=DEBUG flower-superlink --insecure will set the log level to DEBUG. For more details, see the guide.

  • Enable dynamic overrides for federation configuration in CLI (#4841, #4843, #4838)

    Similar to how the --run-config flag allows overriding the run configuration in flwr run, the new --federation-config flag enables dynamic overrides for federation configurations. This flag is supported in all flwr CLI commands except flwr build, flwr install, and flwr new.

  • Migrate TaskIns/TaskRes to Message-based communication (#4311, #4310, #4849, #4308, #4307, #4800, #4309, #4875, #4874, #4877, #4876)

    The Fleet API and the ServerAppIO API (formerly known as the Driver API) now use message-based communication instead of TaskIns/TaskRes, making interactions more intuitive and better aligned with their Python counterparts. This migration introduces new RPCs, such as PullMessages, PushMessages, and other message-based operations in the gRPC stack.

  • Introduce exit codes (#4801, #4845)

    Improves system error and help messages by introducing a dedicated flwr_exit function with standardized exit codes.

  • Update gRPC-related dependencies (#4833, #4836, #4887)

    Increases the version numbers of gRPC-related dependencies. In rare cases, if you encounter pip warnings about unresolved gRPC dependencies, it may be due to residual dependencies from older Flower versions.

  • Update app-pytorch example (#4842)

    The app-pytorch example is revamped to use the low-level API.

  • Improve CLI-side user authentication (#4862, #4861, #4832, #4850, #4703, #4885)

    User authentication in the CLI is enhanced with better handling, configuration options, and security enforcement.

  • Ensure graceful exit for SuperLink and SuperNode (#4829, #4846, #4798, #4826, #4881, #4797)

    Ensures proper resource cleanup and prevents zombie subprocesses during SuperLink and SuperNode shutdown.

  • Improve documentation (#4380, #4853, #4214, #4215, #4863, #4825, #4759, #4851, #4779, #4813, #4812, #4761, #4859, #4754, #4839, #4216, #4852, #4869)

    Updates PyTorch device selection in the tutorial series notebook and adds two molecular datasets to the recommended-fl-datasets table. Additional improvements include metadata updates, translation updates, and refinements to various documentation sections.

  • Update Docker dependencies and documentation (#4763, #4804, #4762, #4803, #4753)

  • Update CI/CD (#4756, #4834, #4824, #3493, #4096, #4807, #3956, #3168, #4835, #4884)

  • Bugfixes (#4766, #4764, #4795, #4840, #4868, #4872, #4890)

  • General improvements (#4748, #4799, #4645, #4819, #4755, #4789, #4771, #4854, #4796, #4865, #4820, #4790, #4821, #4822, #4751, #4793, #4871, #4785, #4787, #4775, #4783, #4818, #4786, #4773, #4772, #4784, #4810, #4770, #4870, #4878, #4889, #4893)

    As always, many parts of the Flower framework and quality infrastructure were improved and updated.

Incompatible changes

  • Remove deprecated app/--server arguments from flower-supernode (#4864, #4891)

    The deprecated app and --server arguments in flower-supernode has been removed. Please use --superlink instead of --server.

  • Deprecate --auth-superlink-private-key/--auth-superlink-public-key arguments from flower-superlink (#4848)

    The two arguments are no longer necessary for SuperNode authentication following the recent improvement mentioned above.


Share this post