Releases: adap/flower
Flower 1.14.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 Nata Nugraha
, Dimitris Stripelis
, Heng Pan
, Javier
, Meng Yan
, Mohammad Naseri
, Robert Steiner
, Taner Topal
, Vidit Khandelwal
, Yan Gao
What's new?
-
Introduce
flwr stop
command (#4647, #4629, #4694, #4646, #4634, #4700, #4684, #4642, #4682, #4683, #4639, #4668, #4658, #4693, #4704, #4729)The
flwr stop
command is now available to stop a submitted run. You can use it as follows:flwr stop <run-id>
flwr stop <run-id> [<app>] [<federation>]
This command instructs the SuperLink to terminate the specified run. While the execution of
ServerApp
andClientApp
processes will not be interrupted instantly, they will be informed of the stopped run and will gracefully terminate when they next communicate with the SuperLink. -
Add JSON format output for CLI commands (#4610, #4613, #4710, #4621, #4612, #4619, #4611, #4620, #4712, #4633, #4632, #4711, #4714, #4734, #4738)
The
flwr run
,flwr ls
, andflwr stop
commands now support JSON-formatted output using the--format json
flag. This makes it easier to parse and integrate CLI output with other tools. Feel free to check the "How to Use CLI JSON output" guide for details! -
Document Microsoft Azure deployment (#4625)
A new how-to guide shows a simple Flower deployment for federated learning on Microsoft Azure VM instances.
-
Introduce OIDC user authentication infrastructure (#4630, #4244, #4602, #4618, #4717, #4719, #4745)
Flower has supported SuperNode authentication since Flower 1.9. This release adds initial extension points for user authentication via OpenID Connect (OIDC).
-
Update FedRep baseline (#4681)
We have started the process of migrating some baselines from using
start_simulation
to be launched viaflwr run
. We choseFedRep
as the first baseline to migrate due to its very impressive results. New baselines can be created following aflwr run
-compatible format by starting from theflwr new
template for baselines. We welcome contributions! Read more in the how to contribute a baseline documentation. -
Revamp simulation series tutorial (#4663, #4696)
We have updated the Step-by-step Tutorial Series for Simulations. It now shows how to create and run Flower Apps via
flwr run
. The videos walk you through the process of creating custom strategies, effectively make use of metrics betweenClientApp
andServerApp
, create global model checkpoints, log metrics to Weights & Biases, and more. -
Improve connection reliability (#4649, #4636, #4637)
Connections between ServerApp<>SuperLink, ClientApp<>SuperNode, and SuperLink<>Simulation are now more robust against network issues.
-
Fix
flwr new
issue on Windows (#4653)The
flwr new
command now works correctly on Windows by setting UTF-8 encoding, ensuring compatibility across all platforms when creating and transferring files. -
Update examples and
flwr new
templates (#4725, #4724, #4589, #4690, #4708, #4689, #4740, #4741, #4744)Code examples and
flwr new
templates have been updated to improve compatibility and usability. Notable changes include removing unnecessarynumpy
dependencies, upgrading themlx
version, and enhancing the authentication example. A link to previous tutorial versions has also been added for reference. -
Improve documentation (#4713, #4624, #4606, #4596, #4695, #4654, #4656, #4603, #4727, #4723, #4598, #4661, #4655, #4659)
Documentation has been improved with updated docstrings, typo fixes, and new contributions guidance. Automated updates ensure source texts for translations stay current.
-
Update infrastructure and CI/CD (#4614, #4686, #4587, #4715, #4728, #4679, #4675, #4680, #4676)
-
General improvements (#4631, #4660, #4599, #4672, #4705, #4688, #4691, #4706, #4709, #4623, #4697, #4597, #4721, #4730, #4720, #4747, #4716, #4752)
As always, many parts of the Flower framework and quality infrastructure were improved and updated.
Incompatible changes
-
Remove
context
property fromClient
andNumPyClient
(#4652)Now that
Context
is available as an argument inclient_fn
andserver_fn
, thecontext
property is removed fromClient
andNumPyClient
. This feature has been deprecated for several releases and is now removed.
Flower 1.13.1
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
, Heng Pan
, Javier
, Robert Steiner
What's new?
-
Fix
SimulationEngine
Executor for SuperLink (#4563, #4568, #4570)Resolved an issue that prevented SuperLink from functioning correctly when using the
SimulationEngine
executor. -
Improve FAB build and install (#4571)
An updated FAB build and install process produces smaller FAB files and doesn't rely on
pip install
any more. It also resolves an issue where all files were unnecessarily included in the FAB file. Theflwr
CLI commands now correctly pack only the necessary files, such as.md
,.toml
and.py
, ensuring more efficient and accurate packaging. -
Update
embedded-devices
example (#4381)The example now uses the
flwr run
command and the Deployment Engine. -
Update Documentation (#4566, #4569, #4560, #4556, #4581, #4537, #4562, #4582)
Enhanced documentation across various aspects, including updates to translation workflows, Docker-related READMEs, and recommended datasets. Improvements also include formatting fixes for dataset partitioning docs and better references to resources in the datasets documentation index.
-
Update Infrastructure and CI/CD (#4577, #4578, #4558, #4551, #3356, #4559, #4575)
-
General improvements (#4557, #4564, #4573, #4561, #4579, #4572)
As always, many parts of the Flower framework and quality infrastructure were improved and updated.
Flower 1.13.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
, Dimitris Stripelis
, Heng Pan
, Javier
, Mohammad Naseri
, Robert Steiner
, Waris Gill
, William Lindskog
, Yan Gao
, Yao Xu
, wwjang
What's new?
-
Introduce
flwr ls
command (#4460, #4459, #4477)The
flwr ls
command is now available to display details about all runs (or one specific run). It supports the following usage options:flwr ls --runs [<app>] [<federation>]
: Lists all runs.flwr ls --run-id <run-id> [<app>] [<federation>]
: Displays details for a specific run.
This command provides information including the run ID, FAB ID and version, run status, elapsed time, and timestamps for when the run was created, started running, and finished.
-
Fuse SuperLink and SuperExec (#4358, #4403, #4406, #4357, #4359, #4354, #4229, #4283, #4352)
SuperExec has been integrated into SuperLink, enabling SuperLink to directly manage ServerApp processes (
flwr-serverapp
). Theflwr
CLI now targets SuperLink's Exec API. Additionally, SuperLink introduces two isolation modes for running ServerApps:subprocess
(default) andprocess
, which can be specified using the--isolation {subprocess,process}
flag. -
Introduce
flwr-serverapp
command (#4394, #4370, #4367, #4350, #4364, #4400, #4363, #4401, #4388, #4402)The
flwr-serverapp
command has been introduced as a CLI entry point that runs aServerApp
process. This process communicates with SuperLink to load and execute theServerApp
object, enabling isolated execution and more flexible deployment. -
Improve simulation engine and introduce
flwr-simulation
command (#4433, #4486, #4448, #4427, #4438, #4421, #4430, #4462)The simulation engine has been significantly improved, resulting in dramatically faster simulations. Additionally, the
flwr-simulation
command has been introduced to enhance maintainability and provide a dedicated entry point for running simulations. -
Improve SuperLink message management (#4378, #4369)
SuperLink now validates the destination node ID of instruction messages and checks the TTL (time-to-live) for reply messages. When pulling reply messages, an error reply will be generated and returned if the corresponding instruction message does not exist, has expired, or if the reply message exists but has expired.
-
Introduce FedDebug baseline (#3783)
FedDebug is a framework that enhances debugging in Federated Learning by enabling interactive inspection of the training process and automatically identifying clients responsible for degrading the global model's performance—all without requiring testing data or labels. Learn more in the FedDebug baseline documentation.
-
Update documentation (#4511, #4010, #4396, #4499, #4269, #3340, #4482, #4387, #4342, #4492, #4474, #4500, #4514, #4236, #4112, #3367, #4501, #4373, #4409, #4356, #4520, #4524, #4525, #4526, #4527, #4528, #4545, #4522, #4534, #4513, #4529, #4441, #4530, #4470, #4553, #4531, #4554, #4555, #4552, #4533)
Many documentation pages and tutorials have been updated to improve clarity, fix typos, incorporate user feedback, and stay aligned with the latest features in the framework. Key updates include adding a guide for designing stateful
ClientApp
objects, updating the comprehensive guide for setting up and running Flower'sSimulation Engine
, updating the XGBoost, scikit-learn, and JAX quickstart tutorials to useflwr run
, updating DP guide, removing outdated pages, updating Docker docs, and marking legacy functions as deprecated. The Secure Aggregation Protocols page has also been updated. -
Update examples and templates (#4510, #4368, #4121, #4329, #4382, #4248, #4395, #4386, #4408)
Multiple examples and templates have been updated to enhance usability and correctness. The updates include the
30-minute-tutorial
,quickstart-jax
,quickstart-pytorch
,advanced-tensorflow
examples, and the FlowerTune template. -
Improve Docker support (#4506, #4424, #4224, #4413, #4414, #4336, #4420, #4407, #4422, #4532, #4540)
Docker images and configurations have been updated, including updating Docker Compose files to version 1.13.0, refactoring the Docker build matrix for better maintainability, updating
docker/build-push-action
to 6.9.0, and improving Docker documentation. -
Allow app installation without internet access (#4479, #4475)
The
flwr build
command now includes a wheel file in the FAB, enabling Flower app installation in environments without internet access viaflwr install
. -
Refactor SuperNode for better maintainability and efficiency (#4439, #4348, #4512, #4485)
-
Support NumPy
2.0
(#4440) -
Update infrastructure and CI/CD (#4466, #4419, #4338, #4334, [#4456](https:...
Flower 1.12.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
, Audris
, Charles Beauville
, Chong Shen Ng
, Daniel J. Beutel
, Daniel Nata Nugraha
, Heng Pan
, Javier
, Jiahao Tan
, Julian Rußmeyer
, Mohammad Naseri
, Ray Sun
, Robert Steiner
, Yan Gao
, xiliguguagua
What's new?
-
Introduce SuperExec log streaming (#3577, #3584, #4242, #3611, #3613)
Flower now supports log streaming from a remote SuperExec using the
flwr log
command. This new feature allows you to monitor logs from SuperExec in real time viaflwr log <run-id>
(orflwr log <run-id> <app-dir> <federation>
). -
Improve
flwr new
templates (#4291, #4292, #4293, #4294, #4295)The
flwr new
command templates for MLX, NumPy, sklearn, JAX, and PyTorch have been updated to improve usability and consistency across frameworks. -
Migrate ID handling to use unsigned 64-bit integers (#4170, #4237, #4243)
Node IDs, run IDs, and related fields have been migrated from signed 64-bit integers (
sint64
) to unsigned 64-bit integers (uint64
). To support this change, theuint64
type is fully supported in all communications. You may now useuint64
values in config and metric dictionaries. For Python users, that means usingint
values larger than the maximum value ofsint64
but less than the maximum value ofuint64
. -
Add Flower architecture explanation (#3270)
A new Flower architecture explainer page introduces Flower components step-by-step. Check out the
EXPLANATIONS
section of the Flower documentation if you're interested. -
Introduce FedRep baseline (#3790)
FedRep is a federated learning algorithm that learns shared data representations across clients while allowing each to maintain personalized local models, balancing collaboration and individual adaptation. Read all the details in the paper: "Exploiting Shared Representations for Personalized Federated Learning" (arxiv)
-
Improve FlowerTune template and LLM evaluation pipelines (#4286, #3769, #4272, #4257, #4220, #4282, #4171, #4228, #4258, #4296, #4287, #4217, #4249, #4324, #4219, #4327)
Refined evaluation pipelines, metrics, and documentation for the upcoming FlowerTune LLM Leaderboard across multiple domains including Finance, Medical, and general NLP. Stay tuned for the official launch—we welcome all federated learning and LLM enthusiasts to participate in this exciting challenge!
-
Enhance Docker Support and Documentation (#4191, #4251, #4190, #3928, #4298, #4192, #4136, #4187, #4261, #4177, #4176, #4189, #4297, #4226)
Upgraded Ubuntu base image to 24.04, added SBOM and gcc to Docker images, and comprehensively updated Docker documentation including quickstart guides and distributed Docker Compose instructions.
-
Introduce Flower glossary (#4165, #4235)
Added the Federated Learning glossary to the Flower repository, located under the
flower/glossary/
directory. This resource aims to provide clear definitions and explanations of key FL concepts. Community contributions are highly welcomed to help expand and refine this knowledge base — this is probably the easiest way to become a Flower contributor! -
Implement Message Time-to-Live (TTL) (#3620, #3596, #3615, #3609, #3635)
Added comprehensive TTL support for messages in Flower's SuperLink. Messages are now automatically expired and cleaned up based on configurable TTL values, available through the low-level API (and used by default in the high-level API).
-
Improve FAB handling (#4303, #4264, #4305, #4304)
An 8-character hash is now appended to the FAB file name. The
flwr install
command installs FABs with a more flattened folder structure, reducing it from 3 levels to 1. -
Update documentation (#3341, #3338, #3927, #4152, #4151, #3993)
Updated quickstart tutorials (PyTorch Lightning, TensorFlow, Hugging Face, Fastai) to use the new
flwr run
command and removed default title from documentation base template. A new blockchain example has been added to FAQ. -
Update example projects (#3716, #4007, #4130, #4234, #4206, #4188, #4247, #4331)
Refreshed multiple example projects including vertical FL, PyTorch (advanced), Pandas, Secure Aggregation, and XGBoost examples. Optimized Hugging Face quickstart with a smaller language model and removed legacy simulation examples.
-
Update translations (#4070, #4316, #4252, #4256, #4210, #4263, #4259)
-
General improvements (#4239, 4276, 4204, 4184, 4227, 4183, 4202, 4250, 4267, 4246, 4240, 4265, 4238, 4275, 4318, #4178, #4315, #4241, #4289, #4290, #4181, #4208, #4225, #4314, #4174, #4203, #4274, #3154, #4201, #4268, #4254, #3990, #4212, #2938, #4205, [#4222](https:/...
Flower 1.11.1
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):
Charles Beauville
, Chong Shen Ng
, Daniel J. Beutel
, Heng Pan
, Javier
, Robert Steiner
, Yan Gao
Improvements
-
Implement
keys/values/items
methods forTypedDict
(#4146) -
Fix parsing of
--executor-config
if present (#4125) -
Adjust framework name in templates docstrings (#4127)
-
Update
flwr new
Hugging Face template (#4169) -
Fix
flwr new
FlowerTune template (#4123) -
Add buffer time after
ServerApp
thread initialization (#4119) -
Handle unsuitable resources for simulation (#4143)
-
Update example READMEs (#4117)
-
Update SuperNode authentication docs (#4160)
Incompatible changes
None
Flower 1.11.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
, Danny
, Edoardo Gabrielli
, Heng Pan
, Javier
, Meng Yan
, Michal Danilowski
, Mohammad Naseri
, Robert Steiner
, Steve Laskaridis
, Taner Topal
, Yan Gao
What's new?
-
Deliver Flower App Bundle (FAB) to SuperLink and SuperNodes (#4006, #3945, #3999, #4027, #3851, #3946, #4003, #4029, #3942, #3957, #4020, #4044, #3852, #4019, #4031, #4036, #4049, #4017, #3943, #3944, #4011, #3619)
Dynamic code updates are here!
flwr run
can now ship and install the latest version of yourServerApp
andClientApp
to an already-running federation (SuperLink and SuperNodes).How does it work?
flwr run
bundles your Flower app into a single FAB (Flower App Bundle) file. It then ships this FAB file, via the SuperExec, to both the SuperLink and those SuperNodes that need it. This allows you to keep SuperExec, SuperLink and SuperNodes running as permanent infrastructure, and then ship code updates (including completely new projects!) dynamically.flwr run
is all you need. -
Introduce isolated
ClientApp
execution (#3970, #3976, #4002, #4001, #4034, #4037, #3977, #4042, #3978, #4039, #4033, #3971, #4035, #3973, #4032)The SuperNode can now run your
ClientApp
in a fully isolated way. In an enterprise deployment, this allows you to set strict limits on what theClientApp
can and cannot do.flower-supernode
supports three--isolation
modes:- Unset: The SuperNode runs the
ClientApp
in the same process (as in previous versions of Flower). This is the default mode. --isolation=subprocess
: The SuperNode starts a subprocess to run theClientApp
.--isolation=process
: The SuperNode expects an externally-managed process to run theClientApp
. This external process is not managed by the SuperNode, so it has to be started beforehand and terminated manually. The common way to use this isolation mode is via the newflwr/clientapp
Docker image.
- Unset: The SuperNode runs the
-
Improve Docker support for enterprise deployments (#4050, #4090, #3784, #3998, #4094, #3722)
Flower 1.11 ships many Docker improvements that are especially useful for enterprise deployments:
flwr/supernode
comes with a new Alpine Docker image.flwr/clientapp
is a new image to be used with the--isolation=process
option. In this mode, SuperNode andClientApp
run in two different Docker containers.flwr/supernode
(preferably the Alpine version) runs the long-running SuperNode with--isolation=process
.flwr/clientapp
runs theClientApp
. This is the recommended way to deploy Flower in enterprise settings.- New all-in-one Docker Compose enables you to easily start a full Flower Deployment Engine on a single machine.
- Completely new Docker documentation: https://flower.ai/docs/framework/docker/index.html
-
Improve SuperNode authentication (#4043, #4047, #4074)
SuperNode auth has been improved in several ways, including improved logging, improved testing, and improved error handling.
-
Update
flwr new
templates (#3933, #3894, #3930, #3931, #3997, #3979, #3965, #4013, #4064)All
flwr new
templates have been updated to show the latest recommended use of Flower APIs. -
Improve Simulation Engine (#4095, #3913, #4059, #3954, #4071, #3985, #3988)
The Flower Simulation Engine comes with several updates, including improved run config support, verbose logging, simulation backend configuration via
flwr run
, and more. -
Improve
RecordSet
(#4052, #3218, #4016)RecordSet
is the core object to exchange model parameters, configuration values and metrics betweenClientApp
andServerApp
. This release ships several smaller improvements toRecordSet
and related*Record
types. -
Update documentation (#3972, #3925, #4061, #3984, #3917, #3900, #4066, #3765, #4021, #3906, #4063, #4076, #3920, #3916)
Many parts of the documentation, including the main tutorial, have been migrated to show new Flower APIs and other new Flower features like the improved Docker support.
-
Migrate code example to use new Flower APIs (#3758, #3701, #3919, #3918, #3934, #3893, #3833, #3922, #3846, #3777, #3874, #3873, #3935, #3754, #3980, #4089, #4046, #3314, #3316, #3295, #3313)
Many code examples have been migrated to use new Flower APIs.
-
Update Flower framework, framework internals and quality infrastructure (#4018, #4053, #4098, #4067, #4105, #4048, #4107, #4069, #3915, #4101, #4108, #3914, #4068, #4041, #4040, #3986, #4026, #3961, [#3975](http...
Flower 1.10.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
, Danny
, Gustavo Bertoli
, Heng Pan
, Ikko Eltociear Ashimine
, Javier
, Jiahao Tan
, Mohammad Naseri
, Robert Steiner
, Sebastian van der Voort
, Taner Topal
, Yan Gao
What's new?
-
Introduce
flwr run
(beta) (#3810, #3826, #3880, #3807, #3800, #3814, #3811, #3809, #3819)Flower 1.10 ships the first beta release of the new
flwr run
command.flwr run
can run different projects usingflwr run path/to/project
, it enables you to easily switch between different federations usingflwr run . federation
and it runs your Flower project using either local simulation or the new (experimental) SuperExec service. This allows Flower to scale federatated learning from fast local simulation to large-scale production deployment, seamlessly. All projects generated withflwr new
are immediately runnable usingflwr run
. Give it a try: useflwr new
to generate a project and then run it usingflwr run
. -
Introduce run config (#3751, #3750, #3845, #3824, #3746, #3728, #3730, #3725, #3729, #3580, #3578, #3576, #3798, #3732, #3815)
The new run config feature allows you to run your Flower project in different configurations without having to change a single line of code. You can now build a configurable
ServerApp
andClientApp
that read configuration values at runtime. This enables you to specify config values likelearning-rate=0.01
inpyproject.toml
(under the[tool.flwr.app.config]
key). These config values can then be easily overridden viaflwr run --run-config learning-rate=0.02
, and read fromContext
usinglr = context.run_config["learning-rate"]
. Create a new project usingflwr new
to see run config in action. -
Generalize
client_fn
signature toclient_fn(context: Context) -> Client
(#3779, #3697, #3694, #3696)The
client_fn
signature has been generalized toclient_fn(context: Context) -> Client
. It now receives aContext
object instead of the (now depreacated)cid: str
.Context
allows accessingnode_id
,node_config
andrun_config
, among other things. This enables you to build a configurableClientApp
that leverages the new run config system.The previous signature
client_fn(cid: str)
is now deprecated and support for it will be removed in a future release. Useclient_fn(context: Context) -> Client
everywhere. -
Introduce new
server_fn(context)
(#3773, #3796, #3771)In addition to the new
client_fn(context:Context)
, a newserver_fn(context: Context) -> ServerAppComponents
can now be passed toServerApp
(instead of passing, for example,Strategy
, directly). This enables you to leverage the fullContext
on the server-side to build a configurableServerApp
. -
Relaunch all
flwr new
templates (#3877, #3821, #3587, #3795, #3875, #3859, #3760)All
flwr new
templates have been significantly updated to showcase new Flower features and best practices. This includes usingflwr run
and the new run config feature. You can now easily create a new project usingflwr new
and, after following the instructions to install it,flwr run
it. -
Introduce
flower-supernode
(preview) (#3353)The new
flower-supernode
CLI is here to replaceflower-client-app
.flower-supernode
brings full multi-app support to the Flower client-side. It also allows to pass--node-config
to the SuperNode, which is accessible in yourClientApp
viaContext
(using the newclient_fn(context: Context)
signature). -
Introduce node config (#3782, #3780, #3695, #3886)
A new node config feature allows you to pass a static configuration to the SuperNode. This configuration is read-only and available to every
ClientApp
running on that SuperNode. AClientApp
can access the node config viaContext
(context.node_config
). -
Introduce SuperExec (experimental) (#3605, #3723, #3731, #3589, #3604, #3622, #3838, #3720, #3606, #3602, #3603, #3555, #3808, #3724, #3658, #3629)
This is the first experimental release of Flower SuperExec, a new service that executes your runs. It's not ready for production deployment just yet, but don't hesitate to give it a try if you're interested.
-
Add new federated learning with tabular data example (#3568)
A new code example exemplifies a federated learning setup using the Flower framework on the Adult Census Income tabular dataset.
-
Create generic adapter layer (preview) (#3538, #3536, #3540)
A new generic gRPC adapter layer allows 3rd-party frameworks to integrate with Flower in a transparent way. This makes Flower more modular and allows for integration into other federated learning solutions and platforms.
-
Refactor Flower Simulation Engine (#3581, #3471, #3804, #3468, #3839, #3806, #3861, #3543, #3472, #3829, #3469)
The Simulation Engine was significantly refactored. This results in faster and more stable simulations. It is also the foundation for upcoming changes that aim to provide the next level of performance and configurability in federated learning simulations.
-
Optimize Docker containers (#3591)
Flower Docker containers were optimized and updated to use that latest Flower framework features.
-
Improve logging (#3776, #3789)
Improved logging aims to be more concise and helpful to show you the details you actually care about.
-
Refactor framework internals (#3621, #3792, #3772, #3805, #3583, #3825, #3597, #3802, #3569)
As always, many parts of the Flower framework and quality infrastructure were improved and updated.
Documentation improvements
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 Fl...
Flower 1.8.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
, Daniel J. Beutel
, Daniel Nata Nugraha
, Danny
, Gustavo Bertoli
, Heng Pan
, Ikko Eltociear Ashimine
, Jack Cook
, Javier
, Raj Parekh
, Robert Steiner
, Sebastian van der Voort
, Taner Topal
, Yan Gao
, mohammadnaseri
, tabdar-khan
What's new?
-
Introduce Flower Next high-level API (stable) (#3002, #2934, #2958, #3173, #3174, #2923, #2691, #3079, #2961, #2924, #3166, #3031, #3057, #3000, #3113, #2957, #3183, #3180, #3035, #3189, #3185, #3190, #3191, #3195, #3197)
The Flower Next high-level API is stable! Flower Next is the future of Flower - all new features (like Flower Mods) will be built on top of it. You can start to migrate your existing projects to Flower Next by using
ServerApp
andClientApp
(check outquickstart-pytorch
orquickstart-tensorflow
, a detailed migration guide will follow shortly). Flower Next allows you to run multiple projects concurrently (we call this multi-run) and execute the same project in either simulation environments or deployment environments without having to change a single line of code. The best part? It's fully compatible with existing Flower projects that useStrategy
,NumPyClient
& co. -
Introduce Flower Next low-level API (preview) (#3062, #3034, #3069)
In addition to the Flower Next high-level API that uses
Strategy
,NumPyClient
& co, Flower 1.8 also comes with a preview version of the new Flower Next low-level API. The low-level API allows for granular control of every aspect of the learning process by sending/receiving individual messages to/from client nodes. The newServerApp
supports registering a custommain
function that allows writing custom training loops for methods like async FL, cyclic training, or federated analytics. The newClientApp
supports registeringtrain
,evaluate
andquery
functions that can access the raw message received from theServerApp
. New abstractions likeRecordSet
,Message
andContext
further enable sending multiple models, multiple sets of config values and metrics, stateful computations on the client node and implementations of custom SMPC protocols, to name just a few. -
Introduce Flower Mods (preview) (#3054, #2911, #3083)
Flower Modifiers (we call them Mods) can intercept messages and analyze, edit or handle them directly. Mods can be used to develop pluggable modules that work across different projects. Flower 1.8 already includes mods to log the size of a message, the number of parameters sent over the network, differential privacy with fixed clipping and adaptive clipping, local differential privacy and secure aggregation protocols SecAgg and SecAgg+. The Flower Mods API is released as a preview, but researchers can already use it to experiment with arbirtrary SMPC protocols.
-
Fine-tune LLMs with LLM FlowerTune (#3029, #3089, #3092, #3100, #3114, #3162, #3172)
We are introducing LLM FlowerTune, an introductory example that demonstrates federated LLM fine-tuning of pre-trained Llama2 models on the Alpaca-GPT4 dataset. The example is built to be easily adapted to use different models and/or datasets. Read our blog post LLM FlowerTune: Federated LLM Fine-tuning with Flower for more details.
-
Introduce built-in Differential Privacy (preview) (#2798, #2959, #3038, #3147, #2909, #2893, #2892, #3039, #3074)
Built-in Differential Privacy is here! Flower supports both central and local differential privacy (DP). Central DP can be configured with either fixed or adaptive clipping. The clipping can happen either on the server-side or the client-side. Local DP does both clipping and noising on the client-side. A new documentation page explains Differential Privacy approaches and a new how-to guide describes how to use the new Differential Privacy components in Flower.
-
Introduce built-in Secure Aggregation (preview) (#3120, #3110, #3108)
Built-in Secure Aggregation is here! Flower now supports different secure aggregation protocols out-of-the-box. The best part? You can add secure aggregation to your Flower projects with only a few lines of code. In this initial release, we inlcude support for SecAgg and SecAgg+, but more protocols will be implemented shortly. We'll also add detailed docs that explain secure aggregation and how to use it in Flower. You can already check out the new code example that shows how to use Flower to easily combine Federated Learning, Differential Privacy and Secure Aggregation in the same project.
-
Introduce
flwr
CLI (preview) (#2942, #3055, #3111, #3130, #3136, #3094, #3059, #3049, #3142)A new
flwr
CLI command allows creating new Flower projects (flwr new
) and then running them using the Simulation Engine (flwr run
). -
Introduce Flower Next Simulation Engine (#3024, #3061, #2997, #2783, #3184, #3075, #3047, #2998, #3009, #3008)
The Flower Simulation Engine can now run Flower Next projects. For notebook environments, there's also a new
run_simulation
function that can runServerApp
andClientApp
. -
Handle SuperNode connection errors (#2969)
A SuperNode will now try to reconnect indefinitely to the SuperLink in case of connection errors. The arguments
--max-retries
and--max-wait-time
can now be passed to theflower-client-app
command.--max-retries
will define the number of tentatives the client should make before it gives up trying to reconnect to the SuperLink, and,--max-wait-time
defines the time before the SuperNode gives up trying to reconnect to the SuperLink. -
General updates to Flower Baselines (#2904, #2482, #2985, #2968)
There's a new FedStar baseline. Several other baselined have been updated as well.
-
Improve documentation and translations (#3050, #3044, #3043, #2986, #3041, #3046, #3042, #2978, #2952, [#316...
Flower 1.7.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):
Aasheesh Singh
, Adam Narozniak
, Aml Hassan Esmil
, Charles Beauville
, Daniel J. Beutel
, Daniel Nata Nugraha
, Edoardo Gabrielli
, Gustavo Bertoli
, HelinLin
, Heng Pan
, Javier
, M S Chaitanya Kumar
, Mohammad Naseri
, Nikos Vlachakis
, Pritam Neog
, Robert Kuska
, Robert Steiner
, Taner Topal
, Yahia Salaheldin Shaaban
, Yan Gao
, Yasar Abbas
What's new?
-
Introduce stateful clients (experimental) (#2770, #2686, #2696, #2643, #2769)
Subclasses of
Client
andNumPyClient
can now store local state that remains on the client. Let's start with the highlight first: this new feature is compatible with both simulated clients (viastart_simulation
) and networked clients (viastart_client
). It's also the first preview of new abstractions likeContext
andRecordSet
. Clients can access state of typeRecordSet
viastate: RecordSet = self.context.state
. Changes to thisRecordSet
are preserved across different rounds of execution to enable stateful computations in a unified way across simulation and deployment. -
Improve performance (#2293)
Flower is faster than ever. All
FedAvg
-derived strategies now use in-place aggregation to reduce memory consumption. The Flower client serialization/deserialization has been rewritten from the ground up, which results in significant speedups, especially when the client-side training time is short. -
Support Federated Learning with Apple MLX and Flower (#2693)
Flower has official support for federated learning using Appple MLX via the new
quickstart-mlx
code example. -
Introduce new XGBoost cyclic strategy (#2666, #2668)
A new strategy called
FedXgbCyclic
supports a client-by-client style of training (often called cyclic). Thexgboost-comprehensive
code example shows how to use it in a full project. In addition to that,xgboost-comprehensive
now also supports simulation mode. With this, Flower offers best-in-class XGBoost support. -
Support Python 3.11 (#2394)
Framework tests now run on Python 3.8, 3.9, 3.10, and 3.11. This will ensure better support for users using more recent Python versions.
-
Update gRPC and ProtoBuf dependencies (#2814)
The
grpcio
andprotobuf
dependencies were updated to their latest versions for improved security and performance. -
Introduce Docker image for Flower server (#2700, #2688, #2705, #2695, #2747, #2746, #2680, #2682, #2701)
The Flower server can now be run using an official Docker image. A new how-to guide explains how to run Flower using Docker. An official Flower client Docker image will follow.
-
Introduce
flower-via-docker-compose
example (#2626) -
Introduce
quickstart-sklearn-tabular
example (#2719) -
Introduce
custom-metrics
example (#1958) -
Update code examples to use Flower Datasets (#2450, #2456, #2318, #2712)
Several code examples were updated to use Flower Datasets.
-
General updates to Flower Examples (#2381, #2805, #2782, #2806, #2829, #2825, #2816, #2726, #2659, #2655)
Many Flower code examples received substantial updates.
-
Update Flower Baselines
-
Improve documentation (#2674, #2480, #2826, #2727, #2761, #2900)
-
Improved testing and development infrastructure (#2797, #2676, #2644, #2656, #2848, #2675, #2735, #2767, #2732, #2744, #2681, #2699, #2745, #2734, #2731, #2652, #2720, #2721, #2717, #2864, #2694, #2709, #2658, #2796, #2692, #2657, #2813, #2661, #2398)
The Flower testing and development infrastructure has received substantial updates. This makes Flower 1.7 the most tested release ever.
-
Update dependencies (#2753, #2651, #2739, #2837, #2788, #2811, #2774, #2790, #2751, #2850, #2812, #2872, #2736, #2756, #2857, #2757, #2810, #2740, #2789)
-
General improvements (#2803, #2847, #2877, #2690, #2889, #2874, #2819, #2689, #2457, #2870, #2669, #2876, #2885, #2858, #2867, #2351, #2886, #2860, #2828, #2869, #2875, #2733, #2488, #2646, #2879, #2821, [#2855](https://...