Announcing Flower 1.1

Photo of Daniel J. Beutel
Daniel J. Beutel
Co-Creator of Flower

The Flower Team is excited to announce the release of Flower 1.1 stable. 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):

Akis Linardos, Christopher S, Daniel J. Beutel, George, Jan Schlicht, Mohammad Fares, Pedro Porto Buarque de Gusmão, Philipp Wiesner, Rob Luke, Taner Topal, VasundharaAgarwal, danielnugraha, edogab33

What's new?

  • Introduce Differential Privacy wrappers (preview) (#1357, #1460)

    The first (experimental) preview of pluggable Differential Privacy wrappers enables easy configuration and usage of differential privacy (DP). The pluggable DP wrappers enable framework-agnostic and strategy-agnostic usage of both client-side DP and server-side DP. Head over to the Flower docs, a new explainer goes into more detail.

  • New iOS CoreML code example (#1289)

    Flower goes iOS! A massive new code example shows how Flower clients can be built for iOS. The code example contains both Flower iOS SDK components that can be used for many tasks, and one task example running on CoreML.

  • New FedMedian strategy (#1461)

    The new FedMedian strategy implements Federated Median (FedMedian) by Yin et al., 2018.

  • Log Client exceptions in Virtual Client Engine (#1493)

    All Client exceptions happening in the VCE are now logged by default and not just exposed to the configured Strategy (via the failures argument).

  • Improve Virtual Client Engine internals (#1401, #1453)

    Some internals of the Virtual Client Engine have been revamped. The VCE now uses Ray 2.0 under the hood, the value type of the client_resources dictionary changed to float to allow fractions of resources to be allocated.

  • Support optional Client/NumPyClient methods in Virtual Client Engine

    The Virtual Client Engine now has full support for optional Client (and NumPyClient) methods.

  • Provide type information to packages using flwr (#1377)

    The package flwr is now bundled with a py.typed file indicating that the package is typed. This enables typing support for projects or packages that use flwr by enabling them to improve their code using static type checkers like mypy.

  • Updated code example (#1344, #1347)

    The code examples covering scikit-learn and PyTorch Lightning have been updated to work with the latest version of Flower.

  • Updated documentation (#1355, #1558, #1379, #1380, #1381, #1332, #1391, #1403, #1364, #1409, #1419, #1444, #1448, #1417, #1449, #1465, #1467)

    There have been so many documentation updates that it doesn't even make sense to list them individually.

  • Restructured documentation (#1387)

    The documentation has been restructured to make it easier to navigate. This is just the first step in a larger effort to make the Flower documentation the best documentation of any project ever. Stay tuned!

  • Open in Colab button (#1389)

    The four parts of the Flower Federated Learning Tutorial now come with a new Open in Colab button. No need to install anything on your local machine, you can now use and learn about Flower in your browser, it's only a single click away.

  • Improved tutorial (#1468, #1470, #1472, #1473, #1474, #1475)

    The Flower Federated Learning Tutorial has two brand-new parts covering custom strategies (still WIP) and the distinction between Client and NumPyClient. The existing parts one and two have also been improved (many small changes and fixes).

Incompatible changes