Flower 1.5.0
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):
achiverram28
, Adam Narozniak
, Anass Anhari
, Charles Beauville
, Dana-Farber
, Daniel J. Beutel
, Daniel Nata Nugraha
, Edoardo Gabrielli
, eunchung
, Gustavo Bertoli
, Heng Pan
, Javier
, Mahdi
, Ruth Galindo
, Steven Hé (Sīchàng)
, Taner Topal
What's new?
-
Introduce new simulation engine (#1969, #2221, #2248)
The new simulation engine has been rewritten from the ground up, yet it remains fully backwards compatible. It offers much improved stability and memory handling, especially when working with GPUs. Simulations transparently adapt to different settings to scale simulation in CPU-only, CPU+GPU, multi-GPU, or multi-node multi-GPU environments.
Comprehensive documentation includes a new how-to run simulations guide, new simulation-pytorch and simulation-tensorflow notebooks, and a new YouTube tutorial series.
-
Restructure Flower Docs (#1824, #1865, #1884, #1887, #1919, #1922, #1920, #1923, #1924, #1962, #2006, #2133, #2203, #2215, #2122, #2223, #2219, #2232, #2233, #2234, #2235, #2237, #2238, #2242, #2231, #2243, #2227)
Much effort went into a completely restructured Flower docs experience. The documentation on flower.dev/docs is now divided into Flower Framework, Flower Baselines, Flower Android SDK, Flower iOS SDK, and code example projects.
-
Introduce Flower Swift SDK (#1858, #1897)
This is the first preview release of the Flower Swift SDK. Flower support on iOS is improving, and alongside the Swift SDK and code example, there is now also an iOS quickstart tutorial.
-
Introduce Flower Android SDK (#2131)
This is the first preview release of the Flower Kotlin SDK. Flower support on Android is improving, and alongside the Kotlin SDK and code example, there is now also an Android quickstart tutorial.
-
Introduce new end-to-end testing infrastructure (#1842, #2071, #2072, #2068, #2067, #2069, #2073, #2070, #2074, #2082, #2084, #2093, #2109, #2095, #2140, #2137, #2165)
A new testing infrastructure ensures that new changes stay compatible with existing framework integrations or strategies.
-
Deprecate Python 3.7
Since Python 3.7 reached its end of life (EOL) on 2023-06-27, support for Python 3.7 is now deprecated and will be removed in an upcoming release.
-
Add new
FedTrimmedAvg
strategy (#1769, #1853)The new
FedTrimmedAvg
strategy implements Trimmed Mean by Dong Yin, 2018. -
Introduce start_driver (#1697)
In addition to
start_server
and using the raw Driver API, there is a newstart_driver
function that allows for runningstart_server
scripts as a Flower driver with only a single-line code change. Check out themt-pytorch
code example to see a working example usingstart_driver
. -
Add parameter aggregation to
mt-pytorch
code example (#1785)The
mt-pytorch
example shows how to aggregate parameters when writing a driver script. The includeddriver.py
andserver.py
have been aligned to demonstrate both the low-level way and the high-level way of building server-side logic. -
Migrate experimental REST API to Starlette (2171)
The (experimental) REST API used to be implemented in FastAPI, but it has now been migrated to use Starlette directly.
Please note: The REST request-response API is still experimental and will likely change significantly over time.
-
Introduce experimental gRPC request-response API (#1867, #1901)
In addition to the existing gRPC API (based on bidirectional streaming) and the experimental REST API, there is now a new gRPC API that uses a request-response model to communicate with client nodes.
Please note: The gRPC request-response API is still experimental and will likely change significantly over time.
-
Replace the experimental
start_client(rest=True)
with the newstart_client(transport="rest")
(#1880)The (experimental)
start_client
argumentrest
was deprecated in favour of a new argumenttransport
.start_client(transport="rest")
will yield the same behaviour asstart_client(rest=True)
did before. All code should migrate to the new argumenttransport
. The deprecated argumentrest
will be removed in a future release. -
Add a new gRPC option (#2197)
We now start a gRPC server with the
grpc.keepalive_permit_without_calls
option set to 0 by default. This prevents the clients from sending keepalive pings when there is no outstanding stream. -
Improve example notebooks (#2005)
There's a new 30min Federated Learning PyTorch tutorial!
-
Example updates (#1772, #1873, #1981, #1988, #1984, #1982, #2112, #2144, #2174, #2225, #2183)
Many examples have received significant updates, including simplified advanced-tensorflow and advanced-pytorch examples, improved macOS compatibility of TensorFlow examples, and code examples for simulation. A major upgrade is that all code examples now have a
requirements.txt
(in addition topyproject.toml
). -
General improvements (#1872, #1866, #1884, #1837, #1477, #2171)
Flower received many improvements under the hood, too many to list here.
Incompatible changes
None