Releases: adap/flower
Flower 1.16.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):
Alan Silva
, Andrej Jovanović
, Charles Beauville
, Chong Shen Ng
, Daniel J. Beutel
, Dimitris Stripelis
, Heng Pan
, Javier
, Kevin Ta
, Li Shaoyu
, Mohammad Naseri
, Taner Topal
, Yan Gao
What's new?
-
Enhance
RecordSet
andArray
for improved usability (#4963, #4980, #4918)RecordSet
now supports dictionary-like access, allowing interactions similar to built-in Python dictionaries. For example, instead ofrecordset.parameters_records["model"]
, users can simply userecordset["model"]
. This enhancement maintains backward compatibility with existingrecordset.*_records
properties.Additionally, the
Array
class now acceptsnumpy.ndarray
instances directly in its constructor, enabling instantiation with a NumPy array viaArray(your_numpy_ndarray)
. -
Support function-specific Flower Mods for
ClientApp
(#4954, #4962)Flower Mods can now be applied to individual functions within the
ClientApp
rather than affecting the entire application. This allows for more granular control. The documentation has been updated to reflect these changes — please refer to How to Use Built-in Mods for details. -
Introduce
@app.lifespan()
for lifecycle management (#4929, #4986)ServerApp
andClientApp
now support@app.lifespan()
, enabling custom enter/exit handlers for resource setup and cleanup. Throughout the entire FL training, these handlers inClientApp
may run multiple times as instances are dynamically managed. -
Add FedRAG example (#4955, #5036, #5042)
Adds a FedRAG example, integrating Federated Learning with Retrieval Augmented Generation (RAG). This approach allows Large Language Models (LLMs) to query distributed data silos without centrally aggregating the corpora, enhancing performance while preserving data privacy.
-
Upgrade FedProx baseline to a Flower App (#4937)
Updates FedProx to the a Flower App by removing Hydra, migrating configs to
pyproject.toml
, usingClientApp
andServerApp
, integratingflwr-datasets
withDistributionPartitioner
, enabling result saving, and updatingREADME.md
. This baseline now supportsflwr run
. -
Migrate framework to Message-based system (#4959, #4993, #4979, #4999)
The Flower framework has been fully migrated from a
TaskIns
/TaskRes
-based system to aMessage
-based system, aligning with the user-facingMessage
class. This includes adding validator functions forMessage
, introducingLinkState
methods that operate onMessage
, updatingLinkState
to useMessage
-only methods, and removing theTask
-related code entirely. -
Introduce event logging extension points (#4948, #5013)
Begins implementing an event logging system for SuperLink, allowing RPC calls to be logged when enabled. These changes introduce initial extension points.
-
Increase default TTL and message size (#5011, #5028)
The default TTL for messages is now 12 hours (up from 1 hour), and the gRPC message size limit has increased from 512MB to 2GB. TTL sets a hard limit on the time between the
ServerApp
sending an instruction and receiving a reply from theClientApp
. -
Improve documentation (#4945, #4965, #4994, #4964, #4991, #5014, #4970, #4990, #4978, #4944, #5022, #5007, #4988, #5053)
-
Update CI/CD (#4943, #4942, #4953, #4985, #4984, #5025, #4987, #4912, #5049)
-
General Improvements (#4947, #4972, #4992, #5020, #5018, #4989, #4957, #5000, #5012, #5001)
As always, many parts of the Flower framework and quality infrastructure were improved and updated.
Incompatible changes
-
Remove deprecated CLI commands (#4855)
Removes deprecated CLI commands:
flower-server-app
,flower-superexec
, andflower-client-app
. These commands are no longer available in the framework. -
Bump minimum Python and
cryptography
versions (#4946)Bumps the minimum Python version from 3.9 to 3.9.2 and updates the
cryptography
package from 43.0.1 to 44.0.1. This change ensures compatibility with the latest security updates and features.
Flower 1.15.2
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
, Heng Pan
, Javier
, Leandro Collier
, Stephane Moroso
, Yan Gao
What's new?
Free processed messages in LinkState (#4934)
When the ServerApp pulls the replies the SuperNodes sent to the SuperLink, these should be removed from the LinkState. In some situations, these weren't erased, which could lead to high memory utilization by the SuperLink.
Introduce Windows CI tests (#4908)
We continue improving the experience of running Flower on Windows. Now, an automated CI test is run to ensure compatibility.
Update Ray version (Simulation Engine) (#4926)
The Simulation Engine has been upgraded to a version of Ray that is compatible with Python 3.12.
Flower 1.15.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):
Dimitris Stripelis
, Heng Pan
, Javier
, Taner Topal
, Yan Gao
What's new?
-
Improve time drift compensation in automatic SuperNode authentication (#4899)
In addition to allowing for a time delay (positive time difference), SuperLink now also accounts for time drift, which might result in negative time differences between timestamps in SuperLink and SuperNode during authentication.
-
Rename constants for gRPC metadata (#4902)
All metadata keys in gRPC messages that previously used underscores (
_
) have been replaced with hyphens (-
). Using underscores is not recommended in setups where SuperLink may be deployed behind load balancers or reverse proxies. -
Filtering out non-Fleet API requests at the
FleetServicer
(#4900)The Fleet API endpoint will now reject gRPC requests that are not part of its API.
-
Fix exit handlers mechanism for Windows (#4907)
The
SIGQUIT
Python signal is not supported on Windows. This signal is now excluded when Flower is executed on Windows. -
Updated Examples (#4895, #4158, #4879)
Examples have been updated to the latest version of Flower. Some examples have also had their dependencies upgraded. The Federated Finetuning of a Whisper model example has been updated to use the new Flower execution method:
flwr run
. -
Update FlowerTuneLLM Leaderboard evaluation scripts (#4919)
We have updated the package versions used in the evaluation scripts. There is still time to participate in the Flower LLM Leaderboard!
Flower 1.15.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):
Charles Beauville
, Chong Shen Ng
, Daniel J. Beutel
, Daniel Nata Nugraha
, Haoran Jie
, Heng Pan
, Ivelin Ivanov
, Javier
, Kevin Patel
, Mohammad Naseri
, Pavlos Bouzinis
, Robert Steiner
What's new?
-
Enhance SuperNode authentication (#4767, #4791, #4765, #4857, #4867)
Enhances the SuperNode authentication system, making it more efficient and resilient against replay attacks. There's no longer a need to pass
--auth-superlink-private-key
and--auth-superlink-public-key
when running the SuperLink. Additionally, Flower now enables automatic node authentication by default, preventing impersonation even when node authentication is not explicitly used. For more details, see the documentation. -
Add guide for running Flower with Deployment Engine (#4811, #4733)
Introduces the How to run Flower with Deployment Engine guide, providing detailed instructions on deploying Federated Learning in production environments using the Flower Deployment Engine.
-
Add Flower Network Communication reference documentation (#4805)
Introduces the Flower Network Communication documentation, which details the network connections used in a deployed Flower federated AI system.
-
Add LeRobot quickstart example (#4607, #4816)
Introduces an example demonstrating federated training of a Diffusion policy on the PushT dataset using LeRobot and Flower. The dataset is partitioned with Flower Datasets, and the example runs best with a GPU. More details: Flower LeRobot Example.
-
Add video tutorial to simulation documentation (#4768)
The Flower AI Simulation 2025 tutorial series is now available on YouTube. You can watch all the videos here or via the embedded previews in the documentation. The accompanying code for the tutorial can be found in the Flower GitHub repository.
-
Introduce StatAvg baseline (#3921)
StatAvg mitigates non-IID feature distributions in federated learning by sharing and aggregating data statistics before training. It is compatible with any FL aggregation strategy. More details: StatAvg baseline.
-
Allow setting log level via environment variable (#4860, #4880, #4886)
Log level can now be configured using the
FLWR_LOG_LEVEL
environment variable. For example, runningFLWR_LOG_LEVEL=DEBUG flower-superlink --insecure
will set the log level to DEBUG. For more details, see the guide. -
Enable dynamic overrides for federation configuration in CLI (#4841, #4843, #4838)
Similar to how the
--run-config
flag allows overriding the run configuration inflwr run
, the new--federation-config
flag enables dynamic overrides for federation configurations. This flag is supported in allflwr
CLI commands exceptflwr build
,flwr install
, andflwr new
. -
Migrate TaskIns/TaskRes to Message-based communication (#4311, #4310, #4849, #4308, #4307, #4800, #4309, #4875, #4874, #4877, #4876)
The Fleet API and the ServerAppIO API (formerly known as the Driver API) now use message-based communication instead of TaskIns/TaskRes, making interactions more intuitive and better aligned with their Python counterparts. This migration introduces new RPCs, such as
PullMessages
,PushMessages
, and other message-based operations in the gRPC stack. -
Introduce exit codes (#4801, #4845)
Improves system error and help messages by introducing a dedicated
flwr_exit
function with standardized exit codes. -
Update gRPC-related dependencies (#4833, #4836, #4887)
Increases the version numbers of gRPC-related dependencies. In rare cases, if you encounter pip warnings about unresolved gRPC dependencies, it may be due to residual dependencies from older Flower versions.
-
Update
app-pytorch
example (#4842)The app-pytorch example is revamped to use the low-level API.
-
Improve CLI-side user authentication (#4862, #4861, #4832, #4850, #4703, #4885)
User authentication in the CLI is enhanced with better handling, configuration options, and security enforcement.
-
Ensure graceful exit for SuperLink and SuperNode (#4829, #4846, #4798, #4826, #4881, #4797)
Ensures proper resource cleanup and prevents zombie subprocesses during SuperLink and SuperNode shutdown.
-
Improve documentation (#4380, #4853, #4214, #4215, #4863, #4825, #4759, #4851, #4779, #4813, #4812, #4761, #4859, #4754, #4839, #4216, #4852, #4869)
Updates PyTorch device selection in the tutorial series notebook and adds two molecular datasets to the
recommended-fl-datasets
table. Additional improvements include metadata updates, translation updates, and refinements to various documentation sections. -
Update Docker dependencies and documentation (#4763, #4804, #4762, #4803, #4753)
-
Update CI/CD (#4756, #4834, #4824, #3493, #4096, #4807, #3956, #3168, #4835, #4884)
-
General improvements (#4748, #4799, #4645, #4819, #4755, #4789, [#4771](...
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...