Flower 1.6.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):
Aashish Kolluri
, Adam Narozniak
, Alessio Mora
, Barathwaja S
, Charles Beauville
, Daniel J. Beutel
, Daniel Nata Nugraha
, Gabriel Mota
, Heng Pan
, Ivan Agarský
, JS.KIM
, Javier
, Marius Schlegel
, Navin Chandra
, Nic Lane
, Peterpan828
, Qinbin Li
, Shaz-hash
, Steve Laskaridis
, Taner Topal
, William Lindskog
, Yan Gao
, cnxdeveloper
, k3nfalt
What's new?
-
Add experimental support for Python 3.12 (#2565)
-
Add new XGBoost examples (#2612, #2554, #2617, #2618, #2619, #2567)
We have added a new
xgboost-quickstart
example alongside a newxgboost-comprehensive
example that goes more in-depth. -
Add Vertical FL example (#2598)
We had many questions about Vertical Federated Learning using Flower, so we decided to add an simple example for it on the Titanic dataset alongside a tutorial (in the README).
-
Support custom
ClientManager
instart_driver()
(#2292) -
Update REST API to support create and delete nodes (#2283)
-
Update the Android SDK (#2187)
Add gRPC request-response capability to the Android SDK.
-
Update the C++ SDK (#2537, #2528, #2523, #2522)
Add gRPC request-response capability to the C++ SDK.
-
Make HTTPS the new default (#2591, #2636)
Flower is moving to HTTPS by default. The new
flower-server
requires passing--certificates
, but users can enable--insecure
to use HTTP for prototyping. The same applies toflower-client
, which can either use user-provided credentials or gRPC-bundled certificates to connect to an HTTPS-enabled server or requires opt-out via passing--insecure
to enable insecure HTTP connections.For backward compatibility,
start_client()
andstart_numpy_client()
will still start in insecure mode by default. In a future release, insecure connections will require user opt-in by passinginsecure=True
. -
Unify client API (#2303, #2390, #2493)
Using the
client_fn
, Flower clients can interchangeably run as standalone processes (i.e. viastart_client
) or in simulation (i.e. viastart_simulation
) without requiring changes to how the client class is defined and instantiated. Theto_client()
function is introduced to convert aNumPyClient
to aClient
. -
Add new
Bulyan
strategy (#1817, #1891)The new
Bulyan
strategy implements Bulyan by El Mhamdi et al., 2018 -
Add new
XGB Bagging
strategy (#2611) -
Update Flower Baselines
-
General updates to Flower Examples (#2384,#2425, #2526, #2302, #2545)
-
General updates to Flower Baselines (#2301, #2305, #2307, #2327, #2435, #2462, #2463, #2461, #2469, #2466, #2471, #2472, #2470)
-
General updates to the simulation engine (#2331, #2447, #2448, #2294)
-
General updates to Flower SDKs (#2288, #2429, #2555, #2543, #2544, #2597, #2623)
-
General improvements (#2309, #2310, 2313, #2316, 2317, #2349, #2360, #2402, #2446, #2561, #2273, #2267, #2274, #2275, #2432, #2251, #2321, #1936, #2408, #2413, #2401, #2531, #2534, #2535, #2521, #2553, #2596)
Flower received many improvements under the hood, too many to list here.
Incompatible changes
-
Remove support for Python 3.7 (#2280, #2299, #2304, #2306, #2355, #2356)
Python 3.7 support was deprecated in Flower 1.5, and this release removes support. Flower now requires Python 3.8.
-
Remove experimental argument
rest
fromstart_client
(#2324)The (still experimental) argument
rest
was removed fromstart_client
andstart_numpy_client
. Usetransport="rest"
to opt into the experimental REST API instead.