0.18.0
What's new?
-
Improved Virtual Client Engine compatibility with Jupyter Notebook / Google Colab (866, 872, 833, 1036)
Simulations (using the Virtual Client Engine through
start_simulation
) now work more smoothly on Jupyter Notebooks (incl. Google Colab) after installing Flower with thesimulation
extra (pip install flwr[simulation]
). -
New Jupyter Notebook code example (833)
A new code example (
quickstart_simulation
) demonstrates Flower simulations using the Virtual Client Engine through Jupyter Notebook (incl. Google Colab). -
Client properties (feature preview) (795)
Clients can implement a new method
get_properties
to enable server-side strategies to query client properties. -
Experimental Android support with TFLite (865)
Android support has finally arrived in
main
! Flower is both client-agnostic and framework-agnostic by design. One can integrate arbitrary client platforms and with this release, using Flower on Android has become a lot easier.The example uses TFLite on the client side, along with a new
FedAvgAndroid
strategy. The Android client andFedAvgAndroid
are still experimental, but they are a first step towards a fully-fledged Android SDK and a unifiedFedAvg
implementation that integrated the new functionality fromFedAvgAndroid
. -
Make gRPC keepalive time user-configurable and decrease default keepalive time (1069)
The default gRPC keepalive time has been reduced to increase the compatibility of Flower with more cloud environments (for example, Microsoft Azure). Users can configure the keepalive time to customize the gRPC stack based on specific requirements.
-
New differential privacy example using Opacus and PyTorch (805)
A new code example (
opacus
) demonstrates differentially-private federated learning with Opacus, PyTorch, and Flower. -
New Hugging Face Transformers code example (863)
A new code example (
quickstart_huggingface
) demonstrates usage of Hugging Face Transformers with Flower. -
New MLCube code example (779, 1034, 1065, 1090)
A new code example (
quickstart_mlcube
) demonstrates usage of MLCube with Flower. -
SSL-enabled server and client (842, 844, 845, 847, 993, 994)
SSL enables secure encrypted connections between clients and servers. This release open-sources the Flower secure gRPC implementation to make encrypted communication channels accessible to all Flower users.
-
Updated
FedAdam
andFedYogi
strategies (885, 895)FedAdam
andFedAdam
match the latest version of the Adaptive Federated Optimization paper. -
Initialize
start_simulation
with a list of client IDs (860)start_simulation
can now be called with a list of client IDs (clients_ids
, type:List[str]
). Those IDs will be passed to theclient_fn
whenever a client needs to be initialized, which can make it easier to load data partitions that are not accessible throughint
identifiers. -
Minor updates
- Update
num_examples
calculation in PyTorch code examples in (909) - Expose Flower version through
flwr.__version__
(952) start_server
inapp.py
now returns aHistory
object containing metrics from training (974)- Make
max_workers
(used byThreadPoolExecutor
) configurable (978) - Increase sleep time after server start to three seconds in all code examples (1086)
- Added a new FAQ section to the documentation (948)
- And many more under-the-hood changes, library updates, documentation changes, and tooling improvements!
- Update
Incompatible changes:
-
Removed
flwr_example
andflwr_experimental
from release build (869)The packages
flwr_example
andflwr_experimental
have been deprecated since Flower 0.12.0 and they are not longer included in Flower release builds. The associated extras (baseline
,examples-pytorch
,examples-tensorflow
,http-logger
,ops
) are now no-op and will be removed in an upcoming release.