Announcing Flower 1.21.0

With just a little over two weeks until Flower AI Day in San Francisco (Sep 25) and the Flower Decentralized AI Hackathon at Stanford (Sep 26), the Flower team is excited to announce the release of Flower 1.21 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.

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, Dimitris Stripelis, Evram, Heng Pan, Javier, Robert Steiner, Yan Gao

What’s new?

  • Introduce Message API strategies (#5710, #5766, #5770, #5771, #5774, #5779, #5787, #5794, #5798, #5804, #5807, #5813, #5824, #5831, #5838)

    Introduces a new abstract base class Strategy that operate on Message replies, mirroring the design of those operating on FitIns/FitRes or EvaluateIns/EvaluteRes while providing more versatility on the type of payloads that can be federated with Flower. The first batch of Message-based strategies are: FedAvg, FedOpt, FedAdam, FedAdagrad, FedYogi, and fixed-clipping Differential Privacy strategies. More will follow in subsequent releases. A migration guide has been added to help users transition their existing Flower Apps operating on the original Strategy and NumPyClient abstractions to the Message API.

  • Introduce Flower SuperExec (#5659, #5674, #5678, #5680, #5682, #5683, #5685, #5696, #5699, #5700, #5701, #5702, #5703, #5706, #5713, #5726, #5731, #5734, #5735, #5737, #5751, #5759, #5811, #5828)

    SuperExec is a new component responsible for scheduling, launching, and managing app processes (e.g., ServerApp, ClientApp) within the Flower deployment runtime. It is automatically spawned when running a SuperLink or SuperNode in subprocess mode (default). This also introduces a token-based mechanism that improves security by assigning a unique token to each app execution. Supporting changes include new RPCs, protocol updates, plugin abstractions, and Docker image support for SuperExec. For more details, refer to the updated Flower architecture explainer. Documentation has been revised to reflect the introduction of Flower SuperExec, including guides and tutorials such as quickstart with Docker, GCP deployment, and network communication to consistently use SuperExec.

  • Update quickstart-pytorch to use Message API (#5785, #5786, #5802)

    The quickstart-pytorch tutorial has been migrated to the Message API, using the new FedAvg strategy and the new flwr new template.

  • New PyTorch template with Message API (#5784)

    A new PyTorch template using the Message API is now available through flwr new.

  • Add OpenShift deployment guide for Flower (#5781)

    Introduces a guide for deploying Flower on Red Hat OpenShift, including setup steps and configuration examples.

  • Improve Helm documentation (#5711, #5733, #5748, #5758, #5765, #5816)

    Helm guide has been enhanced with additional configuration details and updated formatting. Changes include adding a parameters section, documenting how to set a custom secretKey, updating TLS instructions for version 1.20, introducing audit logging configuration, and using SuperExec.

  • Improve documentation (#5159, #5655, #5668, #5692, #5723, #5738, #5739, #5740, #5753, #5764, #5769, #5775, #5782, #5788, #5795, #5809, #5812, #5817, #5819, #5825, #5836)

    Restructures the tutorial series, removes flower-simulation references, and updates versioned docs to use the correct flwr versions. The framework documentation homepage now defaults to the latest stable release instead of the main branch.

  • Re-export user-facing API from flwr.*app (#5814, #5821, #5832, #5835)

    The following classes are now re-exported:

    • From flwr.serverapp: ServerApp, Grid
    • From flwr.clientapp: ClientApp, arrays_size_mod, message_size_mod
    • From flwr.app: Array, ArrayRecord, ConfigRecord, Context, Message, MetricRecord, RecordDict

    Importing these from flwr.server, flwr.client, or flwr.common is deprecated. Please update your imports to use flwr.serverapp, flwr.clientapp, or flwr.app instead to ensure forward compatibility.

  • Add --health-server-address flag to Flower SuperLink/SuperNode/SuperExec (#5792)

  • Update CI/CD workflows and dependencies (#5647, #5650, #5651, #5656, #5712, #5714, #5747, #5754, #5755, #5796, #5806, #5808, #5829)

  • General improvements (#5622, #5660, #5673, #5675, #5676, #5686, #5697, #5708, #5719, #5720, #5722, #5736, #5746, #5750, #5757, #5776, #5777, #5789, #5805, #5797, #5820)

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

Incompatible changes

  • Rename Exec API to Control API (#5663, #5665, #5667, #5671)

    The Exec API has been fully renamed to Control API to make its purpose clearer and avoid confusion with SuperExec. This includes renaming exec.proto to control.proto, updating documentation, and changing the --exec-api-address flag to --control-api-address. For backward compatibility, the old flag is still supported.

  • Deprecate flwr-* commands (#5707, #5725, #5727, #5760)

    The long-running commands flwr-serverapp, flwr-clientapp, and flwr-simulation are deprecated in favor of SuperExec. Invoking them now launches the corresponding SuperExec process for backward compatibility.

  • Remove --executor* flags (#5657, #5745, #5749)

    The --executor, --executor-dir, and --executor-config flags have been deprecated and the executor code removed. Use the new --simulation flag to run SuperLink with the simulation runtime.

1 Like