Flower 1.9.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):
Adam Narozniak
, Charles Beauville
, Chong Shen Ng
, Daniel J. Beutel
, Daniel Nata Nugraha
, Heng Pan
, Javier
, Mahdi Beitollahi
, Robert Steiner
, Taner Topal
, Yan Gao
, bapic
, mohammadnaseri
What's new?
-
Introduce built-in authentication (preview) (#2946, #3388, #2948, #2917, #3386, #3308, #3001, #3409, #2999, #2979, #3389, #3503, #3366, #3357)
Flower 1.9 introduces the first build-in version of client node authentication. In previous releases, users often wrote glue code to connect Flower to external authentication systems. With this release, the SuperLink can authenticate SuperNodes using a built-in authentication system. A new how-to guide and a new code example help you to get started.
This is the first preview release of the Flower-native authentication system. Many additional features are on the roadmap for upcoming Flower releases - stay tuned.
-
Introduce end-to-end Docker support (#3483, #3266, #3390, #3283, #3285, #3391, #3403, #3458, #3533, #3453, #3486, #3290)
Full Flower Next Docker support is here! With the release of Flower 1.9, Flower provides stable Docker images for the Flower SuperLink, the Flower SuperNode, and the Flower
ServerApp
. This set of images enables you to run all Flower components in Docker. Check out the new how-to guide to get stated. -
Re-architect Flower Next simulation engine (#3307, #3355, #3272, #3273, #3417, #3281, #3343, #3326)
Flower Next simulations now use a new in-memory
Driver
that improves the reliability of simulations, especially in notebook environments. This is a significant step towards a complete overhaul of the Flower Next simulation architecture. -
Upgrade simulation engine (#3354, #3378, #3262, #3435, #3501, #3482, #3494)
The Flower Next simulation engine comes with improved and configurable logging. The Ray-based simulation backend in Flower 1.9 was updated to use Ray 2.10.
-
Introduce FedPFT baseline (#3268)
FedPFT allows you to perform one-shot Federated Learning by leveraging widely available foundational models, dramatically reducing communication costs while delivering high performing models. This is work led by Mahdi Beitollahi from Huawei Noah's Ark Lab (Montreal, Canada). Read all the details in their paper: "Parametric Feature Transfer: One-shot Federated Learning with Foundation Models" (arxiv)
-
Launch additional
flwr new
templates for Apple MLX, Hugging Face Transformers, scikit-learn and TensorFlow (#3291, #3139, #3284, #3251, #3376, #3287)The
flwr
CLI'sflwr new
command is starting to become everone's favorite way of creating new Flower projects. This release introduces additionalflwr new
templates for Apple MLX, Hugging Face Transformers, scikit-learn and TensorFlow. In addition to that, existing templates also received updates. -
Refine
RecordSet
API (#3209, #3331, #3334, #3335, #3375, #3368)RecordSet
is part of the Flower Next low-level API preview release. In Flower 1.9,RecordSet
received a number of usability improvements that make it easier to buildRecordSet
-basedServerApp
s andClientApp
s. -
Beautify logging (#3379, #3430, #3461, #3360, #3433)
Logs received a substantial update. Not only are logs now much nicer to look at, but they are also more configurable.
-
Improve reliability (#3564, #3561, #3566, #3462, #3225, #3514, #3535, #3372)
Flower 1.9 includes reliability improvements across many parts of the system. One example is a much improved SuperNode shutdown procedure.
-
Update Swift and C++ SDKs (#3321, #2763)
In the C++ SDK, communication-related code is now separate from main client logic. A new abstract class
Communicator
has been introduced alongside a gRPC implementation of it. -
Improve testing, tooling and CI/CD infrastructure (#3294, #3282, #3311, #2878, #3333, #3255, #3349, #3400, #3401, #3399, #3346, #3398, #3397, #3347, #3502, #3387, #3542, #3396, #3496, #3465, #3473, #3484, #3521, #3363, #3497, #3464, #3495, #3478, #3271)
As always, the Flower tooling, testing, and CI/CD infrastructure has received many updates.
-
Improve documentation (#3530, #3539, #3425, #3520, #3286, #3516, #3523, #3545, #3498, #3439, #3440, #3382, #3559, #3432, #3278, #3371, #3519, #3267, #3204, #3274)
As always, the Flower documentation has received many updates. Notable new pages include:
-
General updates to Flower Examples (#3205, #3226, #3211, #3252, #3427, #3410, #3426, #3228, #3342, #3200, #3202, #3394, #3488, #3329, #3526, #3392, #3474, #3269)
As always, Flower code examples have received many updates.
-
General improvements (#3532, #3318, #3565, #3296, #3305, #3246, #3224, #3475, #3297, #3317, #3429, #3196, #3534, #3240, #3365, #3407, #3563, #3344, #3330, #3436, #3300, #3327, #3254, #3253, #3419, #3289, #3208, #3245, #3319, #3203, #3423, #3352, #3292, #3261)
Deprecations
-
Deprecate Python 3.8 support
Python 3.8 will stop receiving security fixes in October 2024. Support for Python 3.8 is now deprecated and will be removed in an upcoming release.
-
Deprecate (experimental)
flower-driver-api
andflower-fleet-api
(#3416, #3420)Flower 1.9 deprecates the two (experimental) commands
flower-driver-api
andflower-fleet-api
. Both commands will be removed in an upcoming release. Useflower-superlink
instead. -
Deprecate
--server
in favor of--superlink
(#3518)The commands
flower-server-app
andflower-client-app
should use--superlink
instead of the now deprecated--server
. Support for--server
will be removed in a future release.
Incompatible changes
-
Replace
flower-superlink
CLI option--certificates
with--ssl-ca-certfile
,--ssl-certfile
and--ssl-keyfile
(#3512, #3408)SSL-related
flower-superlink
CLI arguments were restructured in an incompatible way. Instead of passing a single--certificates
flag with three values, you now need to pass three flags (--ssl-ca-certfile
,--ssl-certfile
and--ssl-keyfile
) with one value each. Check out the SSL connections documentation page for details. -
Remove SuperLink
--vce
option (#3513)Instead of separately starting a SuperLink and a
ServerApp
for simulation, simulations must now be started using the singleflower-simulation
command. -
Merge
--grpc-rere
and--rest
SuperLink options (#3527)To simplify the usage of
flower-superlink
, previously separate sets of CLI options for gRPC and REST were merged into one unified set of options. Consult the Flower CLI reference documentation for details.