The Flower Team is excited to announce the release of Flower 1.2 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):
Adam Narozniak, Charles Beauville, Daniel J. Beutel, Edoardo, L. Jiang, Ragy, Taner Topal, dannymcy
Over the coming weeks, we will be releasing a number of new reference implementations useful especially to FL newcomers. They will typically revisit well known papers from the literature, and be suitable for integration in your own application or for experimentation, in order to deepen your knowledge of FL in general. Today's release is the first in this series. Read more.
Improve GPU support in simulations (#1555)
The Ray-based Virtual Client Engine (start_simulation) has been updated to improve GPU support. The update includes some of the hard-earned lessons from scaling simulations in GPU cluster environments. New defaults make running GPU-based simulations substantially more robust.
Some users reported that Jupyter Notebooks have not always been easy to use on GPU instances. We listened and made improvements to all of our Jupyter notebooks! Check out the updated notebooks here:
After a request for feedback from the community, the Flower open-source project introduces optional collection of anonymous usage metrics to make well-informed decisions to improve Flower. Doing this enables the Flower team to understand how Flower is used and what challenges users might face.
Flower is a friendly framework for collaborative AI and data science. Staying true to this statement, Flower makes it easy to disable telemetry for users that do not want to share anonymous usage metrics. Read more..
Flower now has a new (experimental) Driver API which will enable fully programmable, async, and multi-tenant Federated Learning and Federated Analytics applications. Phew, that's a lot! Going forward, the Driver API will be the abstraction that many upcoming features will be built on - and you can start building those things now, too.
The Driver API also enables a new execution mode in which the server runs indefinitely. Multiple individual workloads can run concurrently and start and stop their execution independent of the server. This is especially useful for users who want to deploy Flower in production.
To learn more, check out the mt-pytorch code example. We look forward to you feedback!
Please note: The Driver API is still experimental and will likely change significantly over time.
A new code example (quickstart_pandas) demonstrates federated analytics with Pandas and Flower. You can find it here: quickstart_pandas.
Add new strategies: Krum and MultiKrum (#1481)
Edoardo, a computer science student at the Sapienza University of Rome, contributed a new Krum strategy that enables users to easily use Krum and MultiKrum in their workloads.
Update C++ example to be compatible with Flower v1.2.0 (#1495)
The C++ code example has received a substantial update to make it compatible with the latest version of Flower.
Flower received many improvements under the hood, too many to list here.
As usual, the documentation has improved quite a bit. It is another step in our effort to make the Flower documentation the best documentation of any project. Stay tuned and as always, feel free to provide feedback!
One highlight is the new first time contributor guide: if you've never contributed on GitHub before, this is the perfect place to start!