From 55142ee310c701a1bbb6aabb4c3a229f3563a81c Mon Sep 17 00:00:00 2001 From: "Daniel J. Beutel" Date: Mon, 1 Apr 2024 21:14:04 +0200 Subject: [PATCH 1/9] Update changelog --- doc/source/ref-changelog.md | 133 ++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) diff --git a/doc/source/ref-changelog.md b/doc/source/ref-changelog.md index 1a6524d29353..d23a24c223c9 100644 --- a/doc/source/ref-changelog.md +++ b/doc/source/ref-changelog.md @@ -1,9 +1,142 @@ # Changelog +Last PR merged: Remove experimental / add preview feature warnings (#3187) + ## Unreleased ### What's new? +- **Introduce Flower Next high-level API (stable)** ([#0000](https://github.com/adap/flower/pull/0000) + - **Make `ServerApp` shutdown at the end.** ([#3002](https://github.com/adap/flower/pull/3002)) + - **Load ServerApp** ([#2934](https://github.com/adap/flower/pull/2934)) + - **Add Flower Client App connection error handling** ([#2969](https://github.com/adap/flower/pull/2969)) + The `flower-client-app` will now try to reconnect indefinitely to the `flower-superlink` in case of connection error. The arguments `--max-retries` and `--max-wait-time` can now be passed to the `flower-client-app`, `--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 client gives up trying to reconnect to the Superlink. + - **Introduce ServerApp compatibility mode** ([#2958](https://github.com/adap/flower/pull/2958)) + - **Add `pushed_at` into `Task`** ([#3173](https://github.com/adap/flower/pull/3173)) + - **Add `created_at` to `Metadata`** ([#3174](https://github.com/adap/flower/pull/3174)) + - **Add flower-server-app command** ([#2923](https://github.com/adap/flower/pull/2923)) + - **Add `group_id` to `ClientProxy`** ([#2691](https://github.com/adap/flower/pull/2691)) + - **Improve ServerApp logging** ([#3079](https://github.com/adap/flower/pull/3079)) + We made our logging system simpler and clearer to read! You can now see some colours and some nicely formatted results. + - **Add new fields to `Metadata` class** ([#2961](https://github.com/adap/flower/pull/2961)) + - **Move driver/fleet/state into superlink subpackage** ([#2924](https://github.com/adap/flower/pull/2924)) + - **Make `ttl` a `float`** ([#3166](https://github.com/adap/flower/pull/3166)) + - **Move `run_driver_api_grpc`** ([#3031](https://github.com/adap/flower/pull/3031)) + - **Update logging levels** ([#3057](https://github.com/adap/flower/pull/3057)) + - **Move server functions to `server.py`** ([#3000](https://github.com/adap/flower/pull/3000)) + - **Make `InMemoryState` thread-safe (again)** ([#3113](https://github.com/adap/flower/pull/3113)) + - **Create server-side compatibility package** ([#2957](https://github.com/adap/flower/pull/2957)) + - **Support custom wait functions in `RetryInvoker`** ([#3183](https://github.com/adap/flower/pull/3183)) + - **Update default `TTL` logic in message replies** ([#3180](https://github.com/adap/flower/pull/3180)) + - **Make `DriverServicer` log as `DEBUG` most actions.** ([#3035](https://github.com/adap/flower/pull/3035)) + +- **Introduce Flower Next low-level API (preview)** ([#0000](https://github.com/adap/flower/pull/0000) + - **Introduce ClientApp train/evaluate/query** ([#3062](https://github.com/adap/flower/pull/3062)) + - **Define `Error` structure in `common.Message`.** ([#3034](https://github.com/adap/flower/pull/3034)) + - **Create ClientApp fn example** ([#3069](https://github.com/adap/flower/pull/3069)) + +- **Introduce Flower Mods (preview)** ([#0000](https://github.com/adap/flower/pull/0000) + - **Add custom Flower Mods example** ([#3054](https://github.com/adap/flower/pull/3054)) + Added a new example showing how to implement simple Flower Mods for monitoring clients during training (using W&B or Tensorboard). + - **Rename middleware layers to mods** ([#2911](https://github.com/adap/flower/pull/2911)) + - **Add `count_bytes` method to `RecordSets`** ([#3083](https://github.com/adap/flower/pull/3083)) + +- **[DP]** ([#0000](https://github.com/adap/flower/pull/0000) + - **Central DP (server-side fixed clipping)** ([#2798](https://github.com/adap/flower/pull/2798)) + - **Local DP Modifier** ([#2959](https://github.com/adap/flower/pull/2959)) + - **Differential Privacy Explainer** ([#3038](https://github.com/adap/flower/pull/3038)) + - **Fix minor central DP docs** ([#3147](https://github.com/adap/flower/pull/3147)) + - **Central DP (server-side adaptive clipping)** ([#2909](https://github.com/adap/flower/pull/2909)) + - **Central DP (client-side fixed clipping)** ([#2893](https://github.com/adap/flower/pull/2893)) + - **Central DP (client-side adaptive clipping)** ([#2892](https://github.com/adap/flower/pull/2892)) + - **DP in Flower how-to guide** ([#3039](https://github.com/adap/flower/pull/3039)) + - **Add an error msg check in central DP mods** ([#3074](https://github.com/adap/flower/pull/3074)) + +- **[SA]** ([#0000](https://github.com/adap/flower/pull/0000) + - **Fix `SecAggPlusWorkflow` and `secaggplus_mod`** ([#3120](https://github.com/adap/flower/pull/3120)) + - **Add `SecAggWorkflow` and `secagg_mod`** ([#3110](https://github.com/adap/flower/pull/3110)) + - **Update secaggplus workflow log** ([#3108](https://github.com/adap/flower/pull/3108)) + +- **Add CLI to Flower** ([#2942](https://github.com/adap/flower/pull/2942)) + - **Update CLI `new` command templates** ([#3055](https://github.com/adap/flower/pull/3055)) + - **[feat] Validate the name property in `pyproject.toml` file** ([#3111](https://github.com/adap/flower/pull/3111)) + - **Improve the CLI command logs** ([#3130](https://github.com/adap/flower/pull/3130)) + - **Improve the flower.toml loading module** ([#3136](https://github.com/adap/flower/pull/3136)) + - **Make the CLI Prompt for project_name when not given** ([#3094](https://github.com/adap/flower/pull/3094)) + - **Add NumPy template to new command** ([#3059](https://github.com/adap/flower/pull/3059)) + - **Add `flwr run` to command line interface** ([#3049](https://github.com/adap/flower/pull/3049)) + - **Not loading config in `flwr run`** ([#3142](https://github.com/adap/flower/pull/3142)) + +- **[SIMULATION]** ([#0000](https://github.com/adap/flower/pull/0000)) + - **Make `flower-simulation` accept `ClientApp` and `ServerApp` objects** ([#3024](https://github.com/adap/flower/pull/3024)) + - **Update `run_simulation`** ([#3061](https://github.com/adap/flower/pull/3061)) + - **Add `RayBackend` and `SimpleActorPool`** ([#2997](https://github.com/adap/flower/pull/2997)) + - **Make VCE use `Message` and `Flower` callable** ([#2783](https://github.com/adap/flower/pull/2783)) + - **Add delay to `Simulation Engine` termination** ([#3184](https://github.com/adap/flower/pull/3184)) + - **Handle `ClientApp` exception simulation** ([#3075](https://github.com/adap/flower/pull/3075)) + - **Improve threading in `Simulation Engine`.** ([#3047](https://github.com/adap/flower/pull/3047)) + - **Complete `VCE Fleet` API loop** ([#2998](https://github.com/adap/flower/pull/2998)) + - **Introduce `flower-simulation` command and update simulation examples** ([#3009](https://github.com/adap/flower/pull/3009)) + - **Add `terminate` method to backends and introduce `asyncio` stopping event.** ([#3008](https://github.com/adap/flower/pull/3008)) + +- **General updates to Flower Baselines** ([#2904](https://github.com/adap/flower/pull/2904)) + - **FedStar** ([#2482](https://github.com/adap/flower/pull/2482)) + - **Update models.py** ([#2985](https://github.com/adap/flower/pull/2985)) + - **Merges dependencies** ([#2968](https://github.com/adap/flower/pull/2968)) + +- **General updates to Flower Datasets** ([#0000](https://github.com/adap/flower/pull/0000)) + - **Add InnerDirichletPartitioner** ([#2794](https://github.com/adap/flower/pull/2794)) + - **Rename `node_id` to `partition_id` in examples** ([#3023](https://github.com/adap/flower/pull/3023)) + - **Add dirichlet partitioner** ([#2795](https://github.com/adap/flower/pull/2795)) + - **Add shard partitioner** ([#2792](https://github.com/adap/flower/pull/2792)) + - **Add partition division** ([#2951](https://github.com/adap/flower/pull/2951)) + +- **Docs** + - **fix(docs): Fix diverse typos** ([#3050](https://github.com/adap/flower/pull/3050)) + fix(docs): Fix diverse typos + - **fix(docs): Fix typos in docs/locals/** ([#3044](https://github.com/adap/flower/pull/3044)) + fix(docs): Fix typos in docs/locals/* + - **fix(docs): Fix typos in baseline/** ([#3043](https://github.com/adap/flower/pull/3043)) + fix(docs): Fix typos in baseline/* + - **Fix small typos** ([#2986](https://github.com/adap/flower/pull/2986)) + - **Replace dead links, typo fixes and general improvements in framework docs** ([#2989](https://github.com/adap/flower/pull/2989)) + - Links to internal documents have been replaced by `:doc:` instead of the hardcoded URL. Should make links to internal documents more consistent. + - Added a `make` command to check for broken links in the documentation: `make checklinks` + - Replaced dead or redirected (external) links with updated working links. + - Fixed several small typos in framework docs. + - Ensure proper docstring formatting in `driver.py` + - flower.dev links have been replaced with flower.ai + - **fix(docs): Fix typos in examples/** ([#3041](https://github.com/adap/flower/pull/3041)) + fix(docs): Fix typos in examples/* + - **fix(docs): Fix obsolet links** ([#3046](https://github.com/adap/flower/pull/3046)) + fix(docs): Fix obsolet links + - **fix(docs): Fix typos in src/py src/flwr/ e2e/ dev** ([#3042](https://github.com/adap/flower/pull/3042)) + fix(docs): Fix typos in src/py* src/flwr/* e2e/* dev + - **Translations update from Hosted Weblate** ([#2978](https://github.com/adap/flower/pull/2978)) + - **Update URL in source code** ([#2952](https://github.com/adap/flower/pull/2952)) + - **fix(): replaced flower.ai and adap.com on some occasions** ([#3167](https://github.com/adap/flower/pull/3167)) + - **Update URL in documentation** ([#2953](https://github.com/adap/flower/pull/2953)) + - **fix(docs): Fix typos in docs/source/** ([#3045](https://github.com/adap/flower/pull/3045)) + fix(docs): Fix typos in docs/source/* + - **Translations update from Hosted Weblate** ([#2654](https://github.com/adap/flower/pull/2654)) + - **Add footer for iOS docs** ([#3082](https://github.com/adap/flower/pull/3082)) + - **Update the top level domain in examples** ([#2990](https://github.com/adap/flower/pull/2990)) + +- **General updates to Flower Examples** ([#3029](https://github.com/adap/flower/pull/3029), [3134](https://github.com/adap/flower/pull/3134), [3114](https://github.com/adap/flower/pull/3114), [3089](https://github.com/adap/flower/pull/3089), [2996](https://github.com/adap/flower/pull/2996), [3092](https://github.com/adap/flower/pull/3092), [3100](https://github.com/adap/flower/pull/3100), [2930](https://github.com/adap/flower/pull/2930), [2967](https://github.com/adap/flower/pull/2967), [2467](https://github.com/adap/flower/pull/2467), [3172](https://github.com/adap/flower/pull/3172), [2910](https://github.com/adap/flower/pull/2910), [3162](https://github.com/adap/flower/pull/3162)) + - **Merge mt-pytorch examples** ([#2918](https://github.com/adap/flower/pull/2918)) + - **Add MONAI quickstart example** ([#2773](https://github.com/adap/flower/pull/2773)) + [MONAI](https://docs.monai.io/en/latest/index.html) (Medical Open Network for AI) is a PyTorch-based, open-source framework for deep learning in healthcare imaging, part of the PyTorch Ecosystem. You can find the example at https://github.com/adap/flower/tree/main/examples/quickstart-monai. + - **Add `ViT` example** ([#3063](https://github.com/adap/flower/pull/3063)) + +- **General improvements** ([#3171](https://github.com/adap/flower/pull/3171), [3099](https://github.com/adap/flower/pull/3099), [3003](https://github.com/adap/flower/pull/3003), [3145](https://github.com/adap/flower/pull/3145), [3017](https://github.com/adap/flower/pull/3017), [3085](https://github.com/adap/flower/pull/3085), [3012](https://github.com/adap/flower/pull/3012), [3119](https://github.com/adap/flower/pull/3119), [2991](https://github.com/adap/flower/pull/2991), [2970](https://github.com/adap/flower/pull/2970), [2980](https://github.com/adap/flower/pull/2980), [3086](https://github.com/adap/flower/pull/3086), [2932](https://github.com/adap/flower/pull/2932), [2928](https://github.com/adap/flower/pull/2928), [2941](https://github.com/adap/flower/pull/2941), [2933](https://github.com/adap/flower/pull/2933), [3181](https://github.com/adap/flower/pull/3181), [2973](https://github.com/adap/flower/pull/2973), [2992](https://github.com/adap/flower/pull/2992), [2915](https://github.com/adap/flower/pull/2915), [3040](https://github.com/adap/flower/pull/3040), [3022](https://github.com/adap/flower/pull/3022), [3032](https://github.com/adap/flower/pull/3032), [2902](https://github.com/adap/flower/pull/2902), [2931](https://github.com/adap/flower/pull/2931), [3005](https://github.com/adap/flower/pull/3005), [3132](https://github.com/adap/flower/pull/3132), [3115](https://github.com/adap/flower/pull/3115), [2944](https://github.com/adap/flower/pull/2944), [3064](https://github.com/adap/flower/pull/3064), [3106](https://github.com/adap/flower/pull/3106), [2974](https://github.com/adap/flower/pull/2974), [3178](https://github.com/adap/flower/pull/3178), [2993](https://github.com/adap/flower/pull/2993), [3186](https://github.com/adap/flower/pull/3186), [3091](https://github.com/adap/flower/pull/3091), [3125](https://github.com/adap/flower/pull/3125), [3093](https://github.com/adap/flower/pull/3093), [3013](https://github.com/adap/flower/pull/3013), [3033](https://github.com/adap/flower/pull/3033), [3133](https://github.com/adap/flower/pull/3133), [3068](https://github.com/adap/flower/pull/3068), [2916](https://github.com/adap/flower/pull/2916), [2975](https://github.com/adap/flower/pull/2975), [2984](https://github.com/adap/flower/pull/2984), [2846](https://github.com/adap/flower/pull/2846), [3077](https://github.com/adap/flower/pull/3077), [3143](https://github.com/adap/flower/pull/3143), [2921](https://github.com/adap/flower/pull/2921), [3101](https://github.com/adap/flower/pull/3101), [2927](https://github.com/adap/flower/pull/2927), [2995](https://github.com/adap/flower/pull/2995), [2972](https://github.com/adap/flower/pull/2972), [2912](https://github.com/adap/flower/pull/2912), [3065](https://github.com/adap/flower/pull/3065), [3028](https://github.com/adap/flower/pull/3028), [2922](https://github.com/adap/flower/pull/2922), [2982](https://github.com/adap/flower/pull/2982), [2914](https://github.com/adap/flower/pull/2914), [3179](https://github.com/adap/flower/pull/3179), [3080](https://github.com/adap/flower/pull/3080), [2994](https://github.com/adap/flower/pull/2994), [3187](https://github.com/adap/flower/pull/3187), [2926](https://github.com/adap/flower/pull/2926), [3018](https://github.com/adap/flower/pull/3018), [3144](https://github.com/adap/flower/pull/3144), [3011](https://github.com/adap/flower/pull/3011)) + - **Remove legacy `flwr_examples`** ([#3152](https://github.com/adap/flower/pull/3152)) + Those examples were already deprecated but now they will be entirely removed, as up-to-date equivalents can be found under the `examples/` folder. + - **Bump actions/cache from 3 to 4** ([#2836](https://github.com/adap/flower/pull/2836)) + - **Bump actions/download-artifact from 4.1.1 to 4.1.2** ([#2929](https://github.com/adap/flower/pull/2929)) + - **Add pytest-watcher instead of unmainted pytest-watch** ([#2943](https://github.com/adap/flower/pull/2943)) + - **Update docformatter to latest version** ([#2955](https://github.com/adap/flower/pull/2955)) + - **Update poetry version to latest** ([#2954](https://github.com/adap/flower/pull/2954)) + ### Incompatible changes ## v1.7.0 (2024-02-05) From 43c93d66e84679f11a75cbef0d72803d182ed891 Mon Sep 17 00:00:00 2001 From: "Daniel J. Beutel" Date: Tue, 2 Apr 2024 15:32:57 +0200 Subject: [PATCH 2/9] Update changelog --- doc/source/ref-changelog.md | 123 ++++++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 46 deletions(-) diff --git a/doc/source/ref-changelog.md b/doc/source/ref-changelog.md index d23a24c223c9..aeff3bb6afff 100644 --- a/doc/source/ref-changelog.md +++ b/doc/source/ref-changelog.md @@ -1,16 +1,14 @@ # Changelog -Last PR merged: Remove experimental / add preview feature warnings (#3187) - ## Unreleased +Last PR merged: Remove experimental / add preview feature warnings (#3187) + ### What's new? -- **Introduce Flower Next high-level API (stable)** ([#0000](https://github.com/adap/flower/pull/0000) - - **Make `ServerApp` shutdown at the end.** ([#3002](https://github.com/adap/flower/pull/3002)) +- **Introduce Flower Next high-level API (stable)** ([#3002](https://github.com/adap/flower/pull/3002), [#2934](https://github.com/adap/flower/pull/2934), [#2958](https://github.com/adap/flower/pull/2958), [#3173](https://github.com/adap/flower/pull/3173), [#3174](https://github.com/adap/flower/pull/3174), [#2923](https://github.com/adap/flower/pull/2923), [#2691](https://github.com/adap/flower/pull/2691), [#3079](https://github.com/adap/flower/pull/3079), [#2961](https://github.com/adap/flower/pull/2961), [#2924](https://github.com/adap/flower/pull/2924), [#3166](https://github.com/adap/flower/pull/3166), [#3031](https://github.com/adap/flower/pull/3031), [#3057](https://github.com/adap/flower/pull/3057), [#3000](https://github.com/adap/flower/pull/3000), [#3113](https://github.com/adap/flower/pull/3113), [#2957](https://github.com/adap/flower/pull/2957), [#3183](https://github.com/adap/flower/pull/3183), [#3180](https://github.com/adap/flower/pull/3180), [#3035](https://github.com/adap/flower/pull/3035)) + -- **Introduce Flower Next low-level API (preview)** ([#0000](https://github.com/adap/flower/pull/0000) - - **Introduce ClientApp train/evaluate/query** ([#3062](https://github.com/adap/flower/pull/3062)) + The Flower Next high-level API is stable! Flower Next is the future of Flower - all new features (like Flower Mods) will build on top of it. You can start to migrate your existing projects to Flower Next by using `ServerApp` and `ClientApp` (check out `quickstart-pytorch` or `quickstart-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 use `Strategy`, `NumPyClient` & co! + +- **Introduce Flower Next low-level API (preview)** ([#3062](https://github.com/adap/flower/pull/3062), [#3034](https://github.com/adap/flower/pull/3034), [#3069](https://github.com/adap/flower/pull/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 new `ServerApp` supports registering a custom `main` function that allows writing custom training loops for methods like async FL, cyclic training, or federated analytics. The new `ClientApp` supports registering `train`, `evaluate` and `query` functions that can access the raw message received from the `ServerApp`. New abstractions like `RecordSet`, `Message` and `Context` further enable sending multiple models, multiple sets of config values and metrics, stateful computations on the client node and implementation of custom SMPC protocols, to name just a few. -- **Introduce Flower Mods (preview)** ([#0000](https://github.com/adap/flower/pull/0000) - - **Add custom Flower Mods example** ([#3054](https://github.com/adap/flower/pull/3054)) +- **Introduce Flower Mods (preview)** ([#3054](https://github.com/adap/flower/pull/3054), [#2911](https://github.com/adap/flower/pull/2911), [#3083](https://github.com/adap/flower/pull/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. + +- **Introduce built-in Differential Privacy** ([#0000](https://github.com/adap/flower/pull/0000) + + + 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 how-to guide describes [how to use the new Differential Privacy components](https://flower.ai/docs/framework/how-to-use-differential-privacy.html) in Flower. -- **[SA]** ([#0000](https://github.com/adap/flower/pull/0000) - - **Fix `SecAggPlusWorkflow` and `secaggplus_mod`** ([#3120](https://github.com/adap/flower/pull/3120)) +- **Introduce built-in Secure Aggregation** ([#0000](https://github.com/adap/flower/pull/0000) + -- **Add CLI to Flower** ([#2942](https://github.com/adap/flower/pull/2942)) - - **Update CLI `new` command templates** ([#3055](https://github.com/adap/flower/pull/3055)) + 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. Until then, you can already check out the new code examples that shows how to use Flower to easily combine Fedrated Learning, Differential Privacy and Secure Aggregation in the same project. + +- **Introduce** `flwr` **CLI** ([#2942](https://github.com/adap/flower/pull/2942)) + + + A new `flwr` CLI command allow creating new Flower projects using `flwr new` and then running them using the simulation engine via `flwr run`. -- **[SIMULATION]** ([#0000](https://github.com/adap/flower/pull/0000)) - - **Make `flower-simulation` accept `ClientApp` and `ServerApp` objects** ([#3024](https://github.com/adap/flower/pull/3024)) +- **Support Flower Next in Simulation Engine** ([#0000](https://github.com/adap/flower/pull/0000)) + + + The Flower Simulation Engine can now run Flower Next projects. For notebook environments, there's also a new `run_simulation` function that can run `ServerApp` and `ClientApp`. + +- **Handle SuperNode connection errors** ([#2969](https://github.com/adap/flower/pull/2969)) -- **General updates to Flower Baselines** ([#2904](https://github.com/adap/flower/pull/2904)) - - **FedStar** ([#2482](https://github.com/adap/flower/pull/2482)) + 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 the `flower-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](https://github.com/adap/flower/pull/2904), [#2482](https://github.com/adap/flower/pull/2482), [#2985](https://github.com/adap/flower/pull/2985), [#2968](https://github.com/adap/flower/pull/2968)) + + + There's a new [FedStar](https://flower.ai/docs/baselines/fedstar.html) baseline. Several other baselined have been updated as well. -- **General updates to Flower Datasets** ([#0000](https://github.com/adap/flower/pull/0000)) + -- **Docs** - - **fix(docs): Fix diverse typos** ([#3050](https://github.com/adap/flower/pull/3050)) +- **Improve documentation and translations** ([#3050](https://github.com/adap/flower/pull/3050), [#3044](https://github.com/adap/flower/pull/3044), [#3043](https://github.com/adap/flower/pull/3043), [#2986](https://github.com/adap/flower/pull/2986), [#3041](https://github.com/adap/flower/pull/3041), [#3046](https://github.com/adap/flower/pull/3046), [#3042](https://github.com/adap/flower/pull/3042), [#2978](https://github.com/adap/flower/pull/2978), [#2952](https://github.com/adap/flower/pull/2952), [#3167](https://github.com/adap/flower/pull/3167), [#2953](https://github.com/adap/flower/pull/2953), [#3045](https://github.com/adap/flower/pull/3045), [#2654](https://github.com/adap/flower/pull/2654), [#3082](https://github.com/adap/flower/pull/3082), [#2990](https://github.com/adap/flower/pull/2990), [#2989](https://github.com/adap/flower/pull/2989)) + + + As usual, we merged many smaller and larger improvements to the documentation. A special thank you goes to [Sebastian van der Voort](https://github.com/svdvoort) for landing a big documentation PR! -- **General updates to Flower Examples** ([#3029](https://github.com/adap/flower/pull/3029), [3134](https://github.com/adap/flower/pull/3134), [3114](https://github.com/adap/flower/pull/3114), [3089](https://github.com/adap/flower/pull/3089), [2996](https://github.com/adap/flower/pull/2996), [3092](https://github.com/adap/flower/pull/3092), [3100](https://github.com/adap/flower/pull/3100), [2930](https://github.com/adap/flower/pull/2930), [2967](https://github.com/adap/flower/pull/2967), [2467](https://github.com/adap/flower/pull/2467), [3172](https://github.com/adap/flower/pull/3172), [2910](https://github.com/adap/flower/pull/2910), [3162](https://github.com/adap/flower/pull/3162)) - - **Merge mt-pytorch examples** ([#2918](https://github.com/adap/flower/pull/2918)) +- **General updates to Flower Examples** ([#3029](https://github.com/adap/flower/pull/3029), [3134](https://github.com/adap/flower/pull/3134), [3114](https://github.com/adap/flower/pull/3114), [3089](https://github.com/adap/flower/pull/3089), [2996](https://github.com/adap/flower/pull/2996), [3092](https://github.com/adap/flower/pull/3092), [3100](https://github.com/adap/flower/pull/3100), [2930](https://github.com/adap/flower/pull/2930), [2967](https://github.com/adap/flower/pull/2967), [2467](https://github.com/adap/flower/pull/2467), [3172](https://github.com/adap/flower/pull/3172), [2910](https://github.com/adap/flower/pull/2910), [3162](https://github.com/adap/flower/pull/3162), [#2918](https://github.com/adap/flower/pull/2918), [#2773](https://github.com/adap/flower/pull/2773), [#3063](https://github.com/adap/flower/pull/3063)) + -- **General improvements** ([#3171](https://github.com/adap/flower/pull/3171), [3099](https://github.com/adap/flower/pull/3099), [3003](https://github.com/adap/flower/pull/3003), [3145](https://github.com/adap/flower/pull/3145), [3017](https://github.com/adap/flower/pull/3017), [3085](https://github.com/adap/flower/pull/3085), [3012](https://github.com/adap/flower/pull/3012), [3119](https://github.com/adap/flower/pull/3119), [2991](https://github.com/adap/flower/pull/2991), [2970](https://github.com/adap/flower/pull/2970), [2980](https://github.com/adap/flower/pull/2980), [3086](https://github.com/adap/flower/pull/3086), [2932](https://github.com/adap/flower/pull/2932), [2928](https://github.com/adap/flower/pull/2928), [2941](https://github.com/adap/flower/pull/2941), [2933](https://github.com/adap/flower/pull/2933), [3181](https://github.com/adap/flower/pull/3181), [2973](https://github.com/adap/flower/pull/2973), [2992](https://github.com/adap/flower/pull/2992), [2915](https://github.com/adap/flower/pull/2915), [3040](https://github.com/adap/flower/pull/3040), [3022](https://github.com/adap/flower/pull/3022), [3032](https://github.com/adap/flower/pull/3032), [2902](https://github.com/adap/flower/pull/2902), [2931](https://github.com/adap/flower/pull/2931), [3005](https://github.com/adap/flower/pull/3005), [3132](https://github.com/adap/flower/pull/3132), [3115](https://github.com/adap/flower/pull/3115), [2944](https://github.com/adap/flower/pull/2944), [3064](https://github.com/adap/flower/pull/3064), [3106](https://github.com/adap/flower/pull/3106), [2974](https://github.com/adap/flower/pull/2974), [3178](https://github.com/adap/flower/pull/3178), [2993](https://github.com/adap/flower/pull/2993), [3186](https://github.com/adap/flower/pull/3186), [3091](https://github.com/adap/flower/pull/3091), [3125](https://github.com/adap/flower/pull/3125), [3093](https://github.com/adap/flower/pull/3093), [3013](https://github.com/adap/flower/pull/3013), [3033](https://github.com/adap/flower/pull/3033), [3133](https://github.com/adap/flower/pull/3133), [3068](https://github.com/adap/flower/pull/3068), [2916](https://github.com/adap/flower/pull/2916), [2975](https://github.com/adap/flower/pull/2975), [2984](https://github.com/adap/flower/pull/2984), [2846](https://github.com/adap/flower/pull/2846), [3077](https://github.com/adap/flower/pull/3077), [3143](https://github.com/adap/flower/pull/3143), [2921](https://github.com/adap/flower/pull/2921), [3101](https://github.com/adap/flower/pull/3101), [2927](https://github.com/adap/flower/pull/2927), [2995](https://github.com/adap/flower/pull/2995), [2972](https://github.com/adap/flower/pull/2972), [2912](https://github.com/adap/flower/pull/2912), [3065](https://github.com/adap/flower/pull/3065), [3028](https://github.com/adap/flower/pull/3028), [2922](https://github.com/adap/flower/pull/2922), [2982](https://github.com/adap/flower/pull/2982), [2914](https://github.com/adap/flower/pull/2914), [3179](https://github.com/adap/flower/pull/3179), [3080](https://github.com/adap/flower/pull/3080), [2994](https://github.com/adap/flower/pull/2994), [3187](https://github.com/adap/flower/pull/3187), [2926](https://github.com/adap/flower/pull/2926), [3018](https://github.com/adap/flower/pull/3018), [3144](https://github.com/adap/flower/pull/3144), [3011](https://github.com/adap/flower/pull/3011)) - - **Remove legacy `flwr_examples`** ([#3152](https://github.com/adap/flower/pull/3152)) + Two new examples show federated training of a Vision Transformer (ViT) and federated learning in a medical context using the popular MONAI library. Many other examples received considerable updates as well. + +- **General improvements** ([#3171](https://github.com/adap/flower/pull/3171), [3099](https://github.com/adap/flower/pull/3099), [3003](https://github.com/adap/flower/pull/3003), [3145](https://github.com/adap/flower/pull/3145), [3017](https://github.com/adap/flower/pull/3017), [3085](https://github.com/adap/flower/pull/3085), [3012](https://github.com/adap/flower/pull/3012), [3119](https://github.com/adap/flower/pull/3119), [2991](https://github.com/adap/flower/pull/2991), [2970](https://github.com/adap/flower/pull/2970), [2980](https://github.com/adap/flower/pull/2980), [3086](https://github.com/adap/flower/pull/3086), [2932](https://github.com/adap/flower/pull/2932), [2928](https://github.com/adap/flower/pull/2928), [2941](https://github.com/adap/flower/pull/2941), [2933](https://github.com/adap/flower/pull/2933), [3181](https://github.com/adap/flower/pull/3181), [2973](https://github.com/adap/flower/pull/2973), [2992](https://github.com/adap/flower/pull/2992), [2915](https://github.com/adap/flower/pull/2915), [3040](https://github.com/adap/flower/pull/3040), [3022](https://github.com/adap/flower/pull/3022), [3032](https://github.com/adap/flower/pull/3032), [2902](https://github.com/adap/flower/pull/2902), [2931](https://github.com/adap/flower/pull/2931), [3005](https://github.com/adap/flower/pull/3005), [3132](https://github.com/adap/flower/pull/3132), [3115](https://github.com/adap/flower/pull/3115), [2944](https://github.com/adap/flower/pull/2944), [3064](https://github.com/adap/flower/pull/3064), [3106](https://github.com/adap/flower/pull/3106), [2974](https://github.com/adap/flower/pull/2974), [3178](https://github.com/adap/flower/pull/3178), [2993](https://github.com/adap/flower/pull/2993), [3186](https://github.com/adap/flower/pull/3186), [3091](https://github.com/adap/flower/pull/3091), [3125](https://github.com/adap/flower/pull/3125), [3093](https://github.com/adap/flower/pull/3093), [3013](https://github.com/adap/flower/pull/3013), [3033](https://github.com/adap/flower/pull/3033), [3133](https://github.com/adap/flower/pull/3133), [3068](https://github.com/adap/flower/pull/3068), [2916](https://github.com/adap/flower/pull/2916), [2975](https://github.com/adap/flower/pull/2975), [2984](https://github.com/adap/flower/pull/2984), [2846](https://github.com/adap/flower/pull/2846), [3077](https://github.com/adap/flower/pull/3077), [3143](https://github.com/adap/flower/pull/3143), [2921](https://github.com/adap/flower/pull/2921), [3101](https://github.com/adap/flower/pull/3101), [2927](https://github.com/adap/flower/pull/2927), [2995](https://github.com/adap/flower/pull/2995), [2972](https://github.com/adap/flower/pull/2972), [2912](https://github.com/adap/flower/pull/2912), [3065](https://github.com/adap/flower/pull/3065), [3028](https://github.com/adap/flower/pull/3028), [2922](https://github.com/adap/flower/pull/2922), [2982](https://github.com/adap/flower/pull/2982), [2914](https://github.com/adap/flower/pull/2914), [3179](https://github.com/adap/flower/pull/3179), [3080](https://github.com/adap/flower/pull/3080), [2994](https://github.com/adap/flower/pull/2994), [3187](https://github.com/adap/flower/pull/3187), [2926](https://github.com/adap/flower/pull/2926), [3018](https://github.com/adap/flower/pull/3018), [3144](https://github.com/adap/flower/pull/3144), [3011](https://github.com/adap/flower/pull/3011), [#3152](https://github.com/adap/flower/pull/3152), [#2836](https://github.com/adap/flower/pull/2836), [#2929](https://github.com/adap/flower/pull/2929), [#2943](https://github.com/adap/flower/pull/2943), [#2955](https://github.com/adap/flower/pull/2955), [#2954](https://github.com/adap/flower/pull/2954)) + ### Incompatible changes +None + ## v1.7.0 (2024-02-05) ### Thanks to our contributors From 6ef4c724efc661e73c824fa3e950e2174c227586 Mon Sep 17 00:00:00 2001 From: "Daniel J. Beutel" Date: Tue, 2 Apr 2024 16:47:27 +0200 Subject: [PATCH 3/9] Add new PRs --- doc/source/ref-changelog.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/source/ref-changelog.md b/doc/source/ref-changelog.md index aeff3bb6afff..31e6507cab5a 100644 --- a/doc/source/ref-changelog.md +++ b/doc/source/ref-changelog.md @@ -2,11 +2,11 @@ ## Unreleased -Last PR merged: Remove experimental / add preview feature warnings (#3187) +Last PR merged: Warn once if TTL is set #3195 ### What's new? -- **Introduce Flower Next high-level API (stable)** ([#3002](https://github.com/adap/flower/pull/3002), [#2934](https://github.com/adap/flower/pull/2934), [#2958](https://github.com/adap/flower/pull/2958), [#3173](https://github.com/adap/flower/pull/3173), [#3174](https://github.com/adap/flower/pull/3174), [#2923](https://github.com/adap/flower/pull/2923), [#2691](https://github.com/adap/flower/pull/2691), [#3079](https://github.com/adap/flower/pull/3079), [#2961](https://github.com/adap/flower/pull/2961), [#2924](https://github.com/adap/flower/pull/2924), [#3166](https://github.com/adap/flower/pull/3166), [#3031](https://github.com/adap/flower/pull/3031), [#3057](https://github.com/adap/flower/pull/3057), [#3000](https://github.com/adap/flower/pull/3000), [#3113](https://github.com/adap/flower/pull/3113), [#2957](https://github.com/adap/flower/pull/2957), [#3183](https://github.com/adap/flower/pull/3183), [#3180](https://github.com/adap/flower/pull/3180), [#3035](https://github.com/adap/flower/pull/3035)) +- **Introduce Flower Next high-level API (stable)** ([#3002](https://github.com/adap/flower/pull/3002), [#2934](https://github.com/adap/flower/pull/2934), [#2958](https://github.com/adap/flower/pull/2958), [#3173](https://github.com/adap/flower/pull/3173), [#3174](https://github.com/adap/flower/pull/3174), [#2923](https://github.com/adap/flower/pull/2923), [#2691](https://github.com/adap/flower/pull/2691), [#3079](https://github.com/adap/flower/pull/3079), [#2961](https://github.com/adap/flower/pull/2961), [#2924](https://github.com/adap/flower/pull/2924), [#3166](https://github.com/adap/flower/pull/3166), [#3031](https://github.com/adap/flower/pull/3031), [#3057](https://github.com/adap/flower/pull/3057), [#3000](https://github.com/adap/flower/pull/3000), [#3113](https://github.com/adap/flower/pull/3113), [#2957](https://github.com/adap/flower/pull/2957), [#3183](https://github.com/adap/flower/pull/3183), [#3180](https://github.com/adap/flower/pull/3180), [#3035](https://github.com/adap/flower/pull/3035), [#3189](https://github.com/adap/flower/pull/3189), [#3185](https://github.com/adap/flower/pull/3185), [#3190](https://github.com/adap/flower/pull/3190), [#3191](https://github.com/adap/flower/pull/3191), [#3195](https://github.com/adap/flower/pull/3195)) + - **Add partition division** ([#2951](https://github.com/adap/flower/pull/2951)) + - **Bump up datasets version in Flower Datasets** ([#3193](https://github.com/adap/flower/pull/3193)) --> - **Improve documentation and translations** ([#3050](https://github.com/adap/flower/pull/3050), [#3044](https://github.com/adap/flower/pull/3044), [#3043](https://github.com/adap/flower/pull/3043), [#2986](https://github.com/adap/flower/pull/2986), [#3041](https://github.com/adap/flower/pull/3041), [#3046](https://github.com/adap/flower/pull/3046), [#3042](https://github.com/adap/flower/pull/3042), [#2978](https://github.com/adap/flower/pull/2978), [#2952](https://github.com/adap/flower/pull/2952), [#3167](https://github.com/adap/flower/pull/3167), [#2953](https://github.com/adap/flower/pull/2953), [#3045](https://github.com/adap/flower/pull/3045), [#2654](https://github.com/adap/flower/pull/2654), [#3082](https://github.com/adap/flower/pull/3082), [#2990](https://github.com/adap/flower/pull/2990), [#2989](https://github.com/adap/flower/pull/2989)) + + ### What's new? - **Introduce Flower Next high-level API (stable)** ([#3002](https://github.com/adap/flower/pull/3002), [#2934](https://github.com/adap/flower/pull/2934), [#2958](https://github.com/adap/flower/pull/2958), [#3173](https://github.com/adap/flower/pull/3173), [#3174](https://github.com/adap/flower/pull/3174), [#2923](https://github.com/adap/flower/pull/2923), [#2691](https://github.com/adap/flower/pull/2691), [#3079](https://github.com/adap/flower/pull/3079), [#2961](https://github.com/adap/flower/pull/2961), [#2924](https://github.com/adap/flower/pull/2924), [#3166](https://github.com/adap/flower/pull/3166), [#3031](https://github.com/adap/flower/pull/3031), [#3057](https://github.com/adap/flower/pull/3057), [#3000](https://github.com/adap/flower/pull/3000), [#3113](https://github.com/adap/flower/pull/3113), [#2957](https://github.com/adap/flower/pull/2957), [#3183](https://github.com/adap/flower/pull/3183), [#3180](https://github.com/adap/flower/pull/3180), [#3035](https://github.com/adap/flower/pull/3035), [#3189](https://github.com/adap/flower/pull/3189), [#3185](https://github.com/adap/flower/pull/3185), [#3190](https://github.com/adap/flower/pull/3190), [#3191](https://github.com/adap/flower/pull/3191), [#3195](https://github.com/adap/flower/pull/3195)) - The Flower Next high-level API is stable! Flower Next is the future of Flower - all new features (like Flower Mods) will build on top of it. You can start to migrate your existing projects to Flower Next by using `ServerApp` and `ClientApp` (check out `quickstart-pytorch` or `quickstart-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 use `Strategy`, `NumPyClient` & co! - **Introduce Flower Next low-level API (preview)** ([#3062](https://github.com/adap/flower/pull/3062), [#3034](https://github.com/adap/flower/pull/3034), [#3069](https://github.com/adap/flower/pull/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 new `ServerApp` supports registering a custom `main` function that allows writing custom training loops for methods like async FL, cyclic training, or federated analytics. The new `ClientApp` supports registering `train`, `evaluate` and `query` functions that can access the raw message received from the `ServerApp`. New abstractions like `RecordSet`, `Message` and `Context` further enable sending multiple models, multiple sets of config values and metrics, stateful computations on the client node and implementation of custom SMPC protocols, to name just a few. - **Introduce Flower Mods (preview)** ([#3054](https://github.com/adap/flower/pull/3054), [#2911](https://github.com/adap/flower/pull/2911), [#3083](https://github.com/adap/flower/pull/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. - **Introduce built-in Differential Privacy** ([#0000](https://github.com/adap/flower/pull/0000) - 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 how-to guide describes [how to use the new Differential Privacy components](https://flower.ai/docs/framework/how-to-use-differential-privacy.html) in Flower. - **Introduce built-in Secure Aggregation** ([#0000](https://github.com/adap/flower/pull/0000) - 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. Until then, you can already check out the new code examples that shows how to use Flower to easily combine Fedrated Learning, Differential Privacy and Secure Aggregation in the same project. - **Introduce** `flwr` **CLI** ([#2942](https://github.com/adap/flower/pull/2942)) - A new `flwr` CLI command allow creating new Flower projects using `flwr new` and then running them using the simulation engine via `flwr run`. - **Support Flower Next in Simulation Engine** ([#0000](https://github.com/adap/flower/pull/0000)) - The Flower Simulation Engine can now run Flower Next projects. For notebook environments, there's also a new `run_simulation` function that can run `ServerApp` and `ClientApp`. @@ -103,69 +47,18 @@ Last PR merged: Warn once if TTL is set #3195 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 the `flower-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](https://github.com/adap/flower/pull/2904), [#2482](https://github.com/adap/flower/pull/2482), [#2985](https://github.com/adap/flower/pull/2985), [#2968](https://github.com/adap/flower/pull/2968)) - There's a new [FedStar](https://flower.ai/docs/baselines/fedstar.html) baseline. Several other baselined have been updated as well. - - - **Improve documentation and translations** ([#3050](https://github.com/adap/flower/pull/3050), [#3044](https://github.com/adap/flower/pull/3044), [#3043](https://github.com/adap/flower/pull/3043), [#2986](https://github.com/adap/flower/pull/2986), [#3041](https://github.com/adap/flower/pull/3041), [#3046](https://github.com/adap/flower/pull/3046), [#3042](https://github.com/adap/flower/pull/3042), [#2978](https://github.com/adap/flower/pull/2978), [#2952](https://github.com/adap/flower/pull/2952), [#3167](https://github.com/adap/flower/pull/3167), [#2953](https://github.com/adap/flower/pull/2953), [#3045](https://github.com/adap/flower/pull/3045), [#2654](https://github.com/adap/flower/pull/2654), [#3082](https://github.com/adap/flower/pull/3082), [#2990](https://github.com/adap/flower/pull/2990), [#2989](https://github.com/adap/flower/pull/2989)) - As usual, we merged many smaller and larger improvements to the documentation. A special thank you goes to [Sebastian van der Voort](https://github.com/svdvoort) for landing a big documentation PR! - **General updates to Flower Examples** ([#3029](https://github.com/adap/flower/pull/3029), [3134](https://github.com/adap/flower/pull/3134), [3114](https://github.com/adap/flower/pull/3114), [3089](https://github.com/adap/flower/pull/3089), [2996](https://github.com/adap/flower/pull/2996), [3092](https://github.com/adap/flower/pull/3092), [3100](https://github.com/adap/flower/pull/3100), [2930](https://github.com/adap/flower/pull/2930), [2967](https://github.com/adap/flower/pull/2967), [2467](https://github.com/adap/flower/pull/2467), [3172](https://github.com/adap/flower/pull/3172), [2910](https://github.com/adap/flower/pull/2910), [3162](https://github.com/adap/flower/pull/3162), [#2918](https://github.com/adap/flower/pull/2918), [#2773](https://github.com/adap/flower/pull/2773), [#3063](https://github.com/adap/flower/pull/3063)) - Two new examples show federated training of a Vision Transformer (ViT) and federated learning in a medical context using the popular MONAI library. Many other examples received considerable updates as well. - **General improvements** ([#3171](https://github.com/adap/flower/pull/3171), [3099](https://github.com/adap/flower/pull/3099), [3003](https://github.com/adap/flower/pull/3003), [3145](https://github.com/adap/flower/pull/3145), [3017](https://github.com/adap/flower/pull/3017), [3085](https://github.com/adap/flower/pull/3085), [3012](https://github.com/adap/flower/pull/3012), [3119](https://github.com/adap/flower/pull/3119), [2991](https://github.com/adap/flower/pull/2991), [2970](https://github.com/adap/flower/pull/2970), [2980](https://github.com/adap/flower/pull/2980), [3086](https://github.com/adap/flower/pull/3086), [2932](https://github.com/adap/flower/pull/2932), [2928](https://github.com/adap/flower/pull/2928), [2941](https://github.com/adap/flower/pull/2941), [2933](https://github.com/adap/flower/pull/2933), [3181](https://github.com/adap/flower/pull/3181), [2973](https://github.com/adap/flower/pull/2973), [2992](https://github.com/adap/flower/pull/2992), [2915](https://github.com/adap/flower/pull/2915), [3040](https://github.com/adap/flower/pull/3040), [3022](https://github.com/adap/flower/pull/3022), [3032](https://github.com/adap/flower/pull/3032), [2902](https://github.com/adap/flower/pull/2902), [2931](https://github.com/adap/flower/pull/2931), [3005](https://github.com/adap/flower/pull/3005), [3132](https://github.com/adap/flower/pull/3132), [3115](https://github.com/adap/flower/pull/3115), [2944](https://github.com/adap/flower/pull/2944), [3064](https://github.com/adap/flower/pull/3064), [3106](https://github.com/adap/flower/pull/3106), [2974](https://github.com/adap/flower/pull/2974), [3178](https://github.com/adap/flower/pull/3178), [2993](https://github.com/adap/flower/pull/2993), [3186](https://github.com/adap/flower/pull/3186), [3091](https://github.com/adap/flower/pull/3091), [3125](https://github.com/adap/flower/pull/3125), [3093](https://github.com/adap/flower/pull/3093), [3013](https://github.com/adap/flower/pull/3013), [3033](https://github.com/adap/flower/pull/3033), [3133](https://github.com/adap/flower/pull/3133), [3068](https://github.com/adap/flower/pull/3068), [2916](https://github.com/adap/flower/pull/2916), [2975](https://github.com/adap/flower/pull/2975), [2984](https://github.com/adap/flower/pull/2984), [2846](https://github.com/adap/flower/pull/2846), [3077](https://github.com/adap/flower/pull/3077), [3143](https://github.com/adap/flower/pull/3143), [2921](https://github.com/adap/flower/pull/2921), [3101](https://github.com/adap/flower/pull/3101), [2927](https://github.com/adap/flower/pull/2927), [2995](https://github.com/adap/flower/pull/2995), [2972](https://github.com/adap/flower/pull/2972), [2912](https://github.com/adap/flower/pull/2912), [3065](https://github.com/adap/flower/pull/3065), [3028](https://github.com/adap/flower/pull/3028), [2922](https://github.com/adap/flower/pull/2922), [2982](https://github.com/adap/flower/pull/2982), [2914](https://github.com/adap/flower/pull/2914), [3179](https://github.com/adap/flower/pull/3179), [3080](https://github.com/adap/flower/pull/3080), [2994](https://github.com/adap/flower/pull/2994), [3187](https://github.com/adap/flower/pull/3187), [2926](https://github.com/adap/flower/pull/2926), [3018](https://github.com/adap/flower/pull/3018), [3144](https://github.com/adap/flower/pull/3144), [3011](https://github.com/adap/flower/pull/3011), [#3152](https://github.com/adap/flower/pull/3152), [#2836](https://github.com/adap/flower/pull/2836), [#2929](https://github.com/adap/flower/pull/2929), [#2943](https://github.com/adap/flower/pull/2943), [#2955](https://github.com/adap/flower/pull/2955), [#2954](https://github.com/adap/flower/pull/2954)) - ### Incompatible changes From e76d1f61e6f9b8ba1b60e6c922ebb198aefa4dc8 Mon Sep 17 00:00:00 2001 From: "Daniel J. Beutel" Date: Tue, 2 Apr 2024 17:12:42 +0200 Subject: [PATCH 5/9] Add missing PRs --- doc/source/ref-changelog.md | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/doc/source/ref-changelog.md b/doc/source/ref-changelog.md index b9c8d85c59d8..21f30eadb7bd 100644 --- a/doc/source/ref-changelog.md +++ b/doc/source/ref-changelog.md @@ -4,14 +4,6 @@ - - ### What's new? - **Introduce Flower Next high-level API (stable)** ([#3002](https://github.com/adap/flower/pull/3002), [#2934](https://github.com/adap/flower/pull/2934), [#2958](https://github.com/adap/flower/pull/2958), [#3173](https://github.com/adap/flower/pull/3173), [#3174](https://github.com/adap/flower/pull/3174), [#2923](https://github.com/adap/flower/pull/2923), [#2691](https://github.com/adap/flower/pull/2691), [#3079](https://github.com/adap/flower/pull/3079), [#2961](https://github.com/adap/flower/pull/2961), [#2924](https://github.com/adap/flower/pull/2924), [#3166](https://github.com/adap/flower/pull/3166), [#3031](https://github.com/adap/flower/pull/3031), [#3057](https://github.com/adap/flower/pull/3057), [#3000](https://github.com/adap/flower/pull/3000), [#3113](https://github.com/adap/flower/pull/3113), [#2957](https://github.com/adap/flower/pull/2957), [#3183](https://github.com/adap/flower/pull/3183), [#3180](https://github.com/adap/flower/pull/3180), [#3035](https://github.com/adap/flower/pull/3035), [#3189](https://github.com/adap/flower/pull/3189), [#3185](https://github.com/adap/flower/pull/3185), [#3190](https://github.com/adap/flower/pull/3190), [#3191](https://github.com/adap/flower/pull/3191), [#3195](https://github.com/adap/flower/pull/3195)) @@ -26,19 +18,19 @@ 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. -- **Introduce built-in Differential Privacy** ([#0000](https://github.com/adap/flower/pull/0000) +- **Introduce built-in Differential Privacy (preview)** ([#2798](https://github.com/adap/flower/pull/2798), [#2959](https://github.com/adap/flower/pull/2959), [#3038](https://github.com/adap/flower/pull/3038), [#3147](https://github.com/adap/flower/pull/3147), [#2909](https://github.com/adap/flower/pull/2909), [#2893](https://github.com/adap/flower/pull/2893), [#2892](https://github.com/adap/flower/pull/2892), [#3039](https://github.com/adap/flower/pull/3039), [#3074](https://github.com/adap/flower/pull/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 how-to guide describes [how to use the new Differential Privacy components](https://flower.ai/docs/framework/how-to-use-differential-privacy.html) in Flower. -- **Introduce built-in Secure Aggregation** ([#0000](https://github.com/adap/flower/pull/0000) +- **Introduce built-in Secure Aggregation (preview)** ([#3120](https://github.com/adap/flower/pull/3120), [#3110](https://github.com/adap/flower/pull/3110), [#3108](https://github.com/adap/flower/pull/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. Until then, you can already check out the new code examples that shows how to use Flower to easily combine Fedrated Learning, Differential Privacy and Secure Aggregation in the same project. -- **Introduce** `flwr` **CLI** ([#2942](https://github.com/adap/flower/pull/2942)) +- **Introduce** `flwr` **CLI** ([#2942](https://github.com/adap/flower/pull/2942), [#3055](https://github.com/adap/flower/pull/3055), [#3111](https://github.com/adap/flower/pull/3111), [#3130](https://github.com/adap/flower/pull/3130), [#3136](https://github.com/adap/flower/pull/3136), [#3094](https://github.com/adap/flower/pull/3094), [#3059](https://github.com/adap/flower/pull/3059), [#3049](https://github.com/adap/flower/pull/3049), [#3142](https://github.com/adap/flower/pull/3142)) A new `flwr` CLI command allow creating new Flower projects using `flwr new` and then running them using the simulation engine via `flwr run`. -- **Support Flower Next in Simulation Engine** ([#0000](https://github.com/adap/flower/pull/0000)) +- **Support Flower Next in Simulation Engine** ([#3024](https://github.com/adap/flower/pull/3024), [#3061](https://github.com/adap/flower/pull/3061), [#2997](https://github.com/adap/flower/pull/2997), [#2783](https://github.com/adap/flower/pull/2783), [#3184](https://github.com/adap/flower/pull/3184), [#3075](https://github.com/adap/flower/pull/3075), [#3047](https://github.com/adap/flower/pull/3047), [#2998](https://github.com/adap/flower/pull/2998), [#3009](https://github.com/adap/flower/pull/3009), [#3008](https://github.com/adap/flower/pull/3008)) The Flower Simulation Engine can now run Flower Next projects. For notebook environments, there's also a new `run_simulation` function that can run `ServerApp` and `ClientApp`. From a95312afea6d0f357bd108a046d729f57c26314f Mon Sep 17 00:00:00 2001 From: "Daniel J. Beutel" Date: Tue, 2 Apr 2024 17:38:49 +0200 Subject: [PATCH 6/9] Edit changelog --- doc/source/ref-changelog.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/source/ref-changelog.md b/doc/source/ref-changelog.md index 21f30eadb7bd..cd01899823f9 100644 --- a/doc/source/ref-changelog.md +++ b/doc/source/ref-changelog.md @@ -8,11 +8,11 @@ - **Introduce Flower Next high-level API (stable)** ([#3002](https://github.com/adap/flower/pull/3002), [#2934](https://github.com/adap/flower/pull/2934), [#2958](https://github.com/adap/flower/pull/2958), [#3173](https://github.com/adap/flower/pull/3173), [#3174](https://github.com/adap/flower/pull/3174), [#2923](https://github.com/adap/flower/pull/2923), [#2691](https://github.com/adap/flower/pull/2691), [#3079](https://github.com/adap/flower/pull/3079), [#2961](https://github.com/adap/flower/pull/2961), [#2924](https://github.com/adap/flower/pull/2924), [#3166](https://github.com/adap/flower/pull/3166), [#3031](https://github.com/adap/flower/pull/3031), [#3057](https://github.com/adap/flower/pull/3057), [#3000](https://github.com/adap/flower/pull/3000), [#3113](https://github.com/adap/flower/pull/3113), [#2957](https://github.com/adap/flower/pull/2957), [#3183](https://github.com/adap/flower/pull/3183), [#3180](https://github.com/adap/flower/pull/3180), [#3035](https://github.com/adap/flower/pull/3035), [#3189](https://github.com/adap/flower/pull/3189), [#3185](https://github.com/adap/flower/pull/3185), [#3190](https://github.com/adap/flower/pull/3190), [#3191](https://github.com/adap/flower/pull/3191), [#3195](https://github.com/adap/flower/pull/3195)) - The Flower Next high-level API is stable! Flower Next is the future of Flower - all new features (like Flower Mods) will build on top of it. You can start to migrate your existing projects to Flower Next by using `ServerApp` and `ClientApp` (check out `quickstart-pytorch` or `quickstart-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 use `Strategy`, `NumPyClient` & co! + 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` and `ClientApp` (check out `quickstart-pytorch` or `quickstart-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 use `Strategy`, `NumPyClient` & co. - **Introduce Flower Next low-level API (preview)** ([#3062](https://github.com/adap/flower/pull/3062), [#3034](https://github.com/adap/flower/pull/3034), [#3069](https://github.com/adap/flower/pull/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 new `ServerApp` supports registering a custom `main` function that allows writing custom training loops for methods like async FL, cyclic training, or federated analytics. The new `ClientApp` supports registering `train`, `evaluate` and `query` functions that can access the raw message received from the `ServerApp`. New abstractions like `RecordSet`, `Message` and `Context` further enable sending multiple models, multiple sets of config values and metrics, stateful computations on the client node and implementation of custom SMPC protocols, to name just a few. + 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 new `ServerApp` supports registering a custom `main` function that allows writing custom training loops for methods like async FL, cyclic training, or federated analytics. The new `ClientApp` supports registering `train`, `evaluate` and `query` functions that can access the raw message received from the `ServerApp`. New abstractions like `RecordSet`, `Message` and `Context` 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](https://github.com/adap/flower/pull/3054), [#2911](https://github.com/adap/flower/pull/2911), [#3083](https://github.com/adap/flower/pull/3083)) @@ -20,17 +20,17 @@ - **Introduce built-in Differential Privacy (preview)** ([#2798](https://github.com/adap/flower/pull/2798), [#2959](https://github.com/adap/flower/pull/2959), [#3038](https://github.com/adap/flower/pull/3038), [#3147](https://github.com/adap/flower/pull/3147), [#2909](https://github.com/adap/flower/pull/2909), [#2893](https://github.com/adap/flower/pull/2893), [#2892](https://github.com/adap/flower/pull/2892), [#3039](https://github.com/adap/flower/pull/3039), [#3074](https://github.com/adap/flower/pull/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 how-to guide describes [how to use the new Differential Privacy components](https://flower.ai/docs/framework/how-to-use-differential-privacy.html) in Flower. + 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](https://flower.ai/docs/framework/explanation-differential-privacy.html) and a new how-to guide describes [how to use the new Differential Privacy components](https://flower.ai/docs/framework/how-to-use-differential-privacy.html) in Flower. - **Introduce built-in Secure Aggregation (preview)** ([#3120](https://github.com/adap/flower/pull/3120), [#3110](https://github.com/adap/flower/pull/3110), [#3108](https://github.com/adap/flower/pull/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. Until then, you can already check out the new code examples that shows how to use Flower to easily combine Fedrated Learning, Differential Privacy and Secure Aggregation in the same project. + 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** ([#2942](https://github.com/adap/flower/pull/2942), [#3055](https://github.com/adap/flower/pull/3055), [#3111](https://github.com/adap/flower/pull/3111), [#3130](https://github.com/adap/flower/pull/3130), [#3136](https://github.com/adap/flower/pull/3136), [#3094](https://github.com/adap/flower/pull/3094), [#3059](https://github.com/adap/flower/pull/3059), [#3049](https://github.com/adap/flower/pull/3049), [#3142](https://github.com/adap/flower/pull/3142)) +- **Introduce** `flwr` **CLI (preview)** ([#2942](https://github.com/adap/flower/pull/2942), [#3055](https://github.com/adap/flower/pull/3055), [#3111](https://github.com/adap/flower/pull/3111), [#3130](https://github.com/adap/flower/pull/3130), [#3136](https://github.com/adap/flower/pull/3136), [#3094](https://github.com/adap/flower/pull/3094), [#3059](https://github.com/adap/flower/pull/3059), [#3049](https://github.com/adap/flower/pull/3049), [#3142](https://github.com/adap/flower/pull/3142)) - A new `flwr` CLI command allow creating new Flower projects using `flwr new` and then running them using the simulation engine via `flwr run`. + A new `flwr` CLI command allows creating new Flower projects (`flwr new`) and then running them using the Simulation Engine (`flwr run`). -- **Support Flower Next in Simulation Engine** ([#3024](https://github.com/adap/flower/pull/3024), [#3061](https://github.com/adap/flower/pull/3061), [#2997](https://github.com/adap/flower/pull/2997), [#2783](https://github.com/adap/flower/pull/2783), [#3184](https://github.com/adap/flower/pull/3184), [#3075](https://github.com/adap/flower/pull/3075), [#3047](https://github.com/adap/flower/pull/3047), [#2998](https://github.com/adap/flower/pull/2998), [#3009](https://github.com/adap/flower/pull/3009), [#3008](https://github.com/adap/flower/pull/3008)) +- **Introduce Flower Next Simulation Engine** ([#3024](https://github.com/adap/flower/pull/3024), [#3061](https://github.com/adap/flower/pull/3061), [#2997](https://github.com/adap/flower/pull/2997), [#2783](https://github.com/adap/flower/pull/2783), [#3184](https://github.com/adap/flower/pull/3184), [#3075](https://github.com/adap/flower/pull/3075), [#3047](https://github.com/adap/flower/pull/3047), [#2998](https://github.com/adap/flower/pull/2998), [#3009](https://github.com/adap/flower/pull/3009), [#3008](https://github.com/adap/flower/pull/3008)) The Flower Simulation Engine can now run Flower Next projects. For notebook environments, there's also a new `run_simulation` function that can run `ServerApp` and `ClientApp`. From 71077ee284c9fc0836872028debbb953f6b6dee0 Mon Sep 17 00:00:00 2001 From: "Daniel J. Beutel" Date: Tue, 2 Apr 2024 19:09:45 +0200 Subject: [PATCH 7/9] Add latest changes --- doc/source/ref-changelog.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/source/ref-changelog.md b/doc/source/ref-changelog.md index cd01899823f9..6dbcb8d8f4e2 100644 --- a/doc/source/ref-changelog.md +++ b/doc/source/ref-changelog.md @@ -2,8 +2,6 @@ ## Unreleased - - ### What's new? - **Introduce Flower Next high-level API (stable)** ([#3002](https://github.com/adap/flower/pull/3002), [#2934](https://github.com/adap/flower/pull/2934), [#2958](https://github.com/adap/flower/pull/2958), [#3173](https://github.com/adap/flower/pull/3173), [#3174](https://github.com/adap/flower/pull/3174), [#2923](https://github.com/adap/flower/pull/2923), [#2691](https://github.com/adap/flower/pull/2691), [#3079](https://github.com/adap/flower/pull/3079), [#2961](https://github.com/adap/flower/pull/2961), [#2924](https://github.com/adap/flower/pull/2924), [#3166](https://github.com/adap/flower/pull/3166), [#3031](https://github.com/adap/flower/pull/3031), [#3057](https://github.com/adap/flower/pull/3057), [#3000](https://github.com/adap/flower/pull/3000), [#3113](https://github.com/adap/flower/pull/3113), [#2957](https://github.com/adap/flower/pull/2957), [#3183](https://github.com/adap/flower/pull/3183), [#3180](https://github.com/adap/flower/pull/3180), [#3035](https://github.com/adap/flower/pull/3035), [#3189](https://github.com/adap/flower/pull/3189), [#3185](https://github.com/adap/flower/pull/3185), [#3190](https://github.com/adap/flower/pull/3190), [#3191](https://github.com/adap/flower/pull/3191), [#3195](https://github.com/adap/flower/pull/3195)) @@ -46,9 +44,9 @@ As usual, we merged many smaller and larger improvements to the documentation. A special thank you goes to [Sebastian van der Voort](https://github.com/svdvoort) for landing a big documentation PR! -- **General updates to Flower Examples** ([#3029](https://github.com/adap/flower/pull/3029), [3134](https://github.com/adap/flower/pull/3134), [3114](https://github.com/adap/flower/pull/3114), [3089](https://github.com/adap/flower/pull/3089), [2996](https://github.com/adap/flower/pull/2996), [3092](https://github.com/adap/flower/pull/3092), [3100](https://github.com/adap/flower/pull/3100), [2930](https://github.com/adap/flower/pull/2930), [2967](https://github.com/adap/flower/pull/2967), [2467](https://github.com/adap/flower/pull/2467), [3172](https://github.com/adap/flower/pull/3172), [2910](https://github.com/adap/flower/pull/2910), [3162](https://github.com/adap/flower/pull/3162), [#2918](https://github.com/adap/flower/pull/2918), [#2773](https://github.com/adap/flower/pull/2773), [#3063](https://github.com/adap/flower/pull/3063)) +- **General updates to Flower Examples** ([#3029](https://github.com/adap/flower/pull/3029), [3134](https://github.com/adap/flower/pull/3134), [3114](https://github.com/adap/flower/pull/3114), [3089](https://github.com/adap/flower/pull/3089), [2996](https://github.com/adap/flower/pull/2996), [3092](https://github.com/adap/flower/pull/3092), [3100](https://github.com/adap/flower/pull/3100), [2930](https://github.com/adap/flower/pull/2930), [2967](https://github.com/adap/flower/pull/2967), [2467](https://github.com/adap/flower/pull/2467), [3172](https://github.com/adap/flower/pull/3172), [2910](https://github.com/adap/flower/pull/2910), [3162](https://github.com/adap/flower/pull/3162), [#2918](https://github.com/adap/flower/pull/2918), [#2773](https://github.com/adap/flower/pull/2773), [#3063](https://github.com/adap/flower/pull/3063), [#3116](https://github.com/adap/flower/pull/3116), [#3117](https://github.com/adap/flower/pull/3117)) - Two new examples show federated training of a Vision Transformer (ViT) and federated learning in a medical context using the popular MONAI library. Many other examples received considerable updates as well. + Two new examples show federated training of a Vision Transformer (ViT) and federated learning in a medical context using the popular MONAI library. `quickstart-pytorch` and `quickstart-tensorflow` demonstrate the new Flower Next `ServerApp` and `ClientApp`. Many other examples received considerable updates as well. - **General improvements** ([#3171](https://github.com/adap/flower/pull/3171), [3099](https://github.com/adap/flower/pull/3099), [3003](https://github.com/adap/flower/pull/3003), [3145](https://github.com/adap/flower/pull/3145), [3017](https://github.com/adap/flower/pull/3017), [3085](https://github.com/adap/flower/pull/3085), [3012](https://github.com/adap/flower/pull/3012), [3119](https://github.com/adap/flower/pull/3119), [2991](https://github.com/adap/flower/pull/2991), [2970](https://github.com/adap/flower/pull/2970), [2980](https://github.com/adap/flower/pull/2980), [3086](https://github.com/adap/flower/pull/3086), [2932](https://github.com/adap/flower/pull/2932), [2928](https://github.com/adap/flower/pull/2928), [2941](https://github.com/adap/flower/pull/2941), [2933](https://github.com/adap/flower/pull/2933), [3181](https://github.com/adap/flower/pull/3181), [2973](https://github.com/adap/flower/pull/2973), [2992](https://github.com/adap/flower/pull/2992), [2915](https://github.com/adap/flower/pull/2915), [3040](https://github.com/adap/flower/pull/3040), [3022](https://github.com/adap/flower/pull/3022), [3032](https://github.com/adap/flower/pull/3032), [2902](https://github.com/adap/flower/pull/2902), [2931](https://github.com/adap/flower/pull/2931), [3005](https://github.com/adap/flower/pull/3005), [3132](https://github.com/adap/flower/pull/3132), [3115](https://github.com/adap/flower/pull/3115), [2944](https://github.com/adap/flower/pull/2944), [3064](https://github.com/adap/flower/pull/3064), [3106](https://github.com/adap/flower/pull/3106), [2974](https://github.com/adap/flower/pull/2974), [3178](https://github.com/adap/flower/pull/3178), [2993](https://github.com/adap/flower/pull/2993), [3186](https://github.com/adap/flower/pull/3186), [3091](https://github.com/adap/flower/pull/3091), [3125](https://github.com/adap/flower/pull/3125), [3093](https://github.com/adap/flower/pull/3093), [3013](https://github.com/adap/flower/pull/3013), [3033](https://github.com/adap/flower/pull/3033), [3133](https://github.com/adap/flower/pull/3133), [3068](https://github.com/adap/flower/pull/3068), [2916](https://github.com/adap/flower/pull/2916), [2975](https://github.com/adap/flower/pull/2975), [2984](https://github.com/adap/flower/pull/2984), [2846](https://github.com/adap/flower/pull/2846), [3077](https://github.com/adap/flower/pull/3077), [3143](https://github.com/adap/flower/pull/3143), [2921](https://github.com/adap/flower/pull/2921), [3101](https://github.com/adap/flower/pull/3101), [2927](https://github.com/adap/flower/pull/2927), [2995](https://github.com/adap/flower/pull/2995), [2972](https://github.com/adap/flower/pull/2972), [2912](https://github.com/adap/flower/pull/2912), [3065](https://github.com/adap/flower/pull/3065), [3028](https://github.com/adap/flower/pull/3028), [2922](https://github.com/adap/flower/pull/2922), [2982](https://github.com/adap/flower/pull/2982), [2914](https://github.com/adap/flower/pull/2914), [3179](https://github.com/adap/flower/pull/3179), [3080](https://github.com/adap/flower/pull/3080), [2994](https://github.com/adap/flower/pull/2994), [3187](https://github.com/adap/flower/pull/3187), [2926](https://github.com/adap/flower/pull/2926), [3018](https://github.com/adap/flower/pull/3018), [3144](https://github.com/adap/flower/pull/3144), [3011](https://github.com/adap/flower/pull/3011), [#3152](https://github.com/adap/flower/pull/3152), [#2836](https://github.com/adap/flower/pull/2836), [#2929](https://github.com/adap/flower/pull/2929), [#2943](https://github.com/adap/flower/pull/2943), [#2955](https://github.com/adap/flower/pull/2955), [#2954](https://github.com/adap/flower/pull/2954)) From 3df5dc82ff49fe952afa1d1d3846b6a9a3140857 Mon Sep 17 00:00:00 2001 From: "Daniel J. Beutel" Date: Tue, 2 Apr 2024 19:43:23 +0200 Subject: [PATCH 8/9] Add LLM FlowerTune --- doc/source/ref-changelog.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/source/ref-changelog.md b/doc/source/ref-changelog.md index 6dbcb8d8f4e2..65e2fc88596a 100644 --- a/doc/source/ref-changelog.md +++ b/doc/source/ref-changelog.md @@ -16,6 +16,10 @@ 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](https://github.com/adap/flower/pull/3029), [#3089](https://github.com/adap/flower/pull/3089), [#3092](https://github.com/adap/flower/pull/3092), [#3100](https://github.com/adap/flower/pull/3100), [#3114](https://github.com/adap/flower/pull/3114), [#3162](https://github.com/adap/flower/pull/3162), [#3172](https://github.com/adap/flower/pull/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](https://flower.ai/blog/2024-03-14-llm-flowertune-federated-llm-finetuning-with-flower/) for more details. + - **Introduce built-in Differential Privacy (preview)** ([#2798](https://github.com/adap/flower/pull/2798), [#2959](https://github.com/adap/flower/pull/2959), [#3038](https://github.com/adap/flower/pull/3038), [#3147](https://github.com/adap/flower/pull/3147), [#2909](https://github.com/adap/flower/pull/2909), [#2893](https://github.com/adap/flower/pull/2893), [#2892](https://github.com/adap/flower/pull/2892), [#3039](https://github.com/adap/flower/pull/3039), [#3074](https://github.com/adap/flower/pull/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](https://flower.ai/docs/framework/explanation-differential-privacy.html) and a new how-to guide describes [how to use the new Differential Privacy components](https://flower.ai/docs/framework/how-to-use-differential-privacy.html) in Flower. @@ -44,7 +48,7 @@ As usual, we merged many smaller and larger improvements to the documentation. A special thank you goes to [Sebastian van der Voort](https://github.com/svdvoort) for landing a big documentation PR! -- **General updates to Flower Examples** ([#3029](https://github.com/adap/flower/pull/3029), [3134](https://github.com/adap/flower/pull/3134), [3114](https://github.com/adap/flower/pull/3114), [3089](https://github.com/adap/flower/pull/3089), [2996](https://github.com/adap/flower/pull/2996), [3092](https://github.com/adap/flower/pull/3092), [3100](https://github.com/adap/flower/pull/3100), [2930](https://github.com/adap/flower/pull/2930), [2967](https://github.com/adap/flower/pull/2967), [2467](https://github.com/adap/flower/pull/2467), [3172](https://github.com/adap/flower/pull/3172), [2910](https://github.com/adap/flower/pull/2910), [3162](https://github.com/adap/flower/pull/3162), [#2918](https://github.com/adap/flower/pull/2918), [#2773](https://github.com/adap/flower/pull/2773), [#3063](https://github.com/adap/flower/pull/3063), [#3116](https://github.com/adap/flower/pull/3116), [#3117](https://github.com/adap/flower/pull/3117)) +- **General updates to Flower Examples** ([3134](https://github.com/adap/flower/pull/3134), [2996](https://github.com/adap/flower/pull/2996), [2930](https://github.com/adap/flower/pull/2930), [2967](https://github.com/adap/flower/pull/2967), [2467](https://github.com/adap/flower/pull/2467), [2910](https://github.com/adap/flower/pull/2910), [#2918](https://github.com/adap/flower/pull/2918), [#2773](https://github.com/adap/flower/pull/2773), [#3063](https://github.com/adap/flower/pull/3063), [#3116](https://github.com/adap/flower/pull/3116), [#3117](https://github.com/adap/flower/pull/3117)) Two new examples show federated training of a Vision Transformer (ViT) and federated learning in a medical context using the popular MONAI library. `quickstart-pytorch` and `quickstart-tensorflow` demonstrate the new Flower Next `ServerApp` and `ClientApp`. Many other examples received considerable updates as well. From daeeda5140053b2b8eb5adca3a751b3d1a1a5abb Mon Sep 17 00:00:00 2001 From: "Daniel J. Beutel" Date: Tue, 2 Apr 2024 20:40:01 +0200 Subject: [PATCH 9/9] Add latest PR --- doc/source/ref-changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/ref-changelog.md b/doc/source/ref-changelog.md index 65e2fc88596a..10edbd2446fb 100644 --- a/doc/source/ref-changelog.md +++ b/doc/source/ref-changelog.md @@ -4,7 +4,7 @@ ### What's new? -- **Introduce Flower Next high-level API (stable)** ([#3002](https://github.com/adap/flower/pull/3002), [#2934](https://github.com/adap/flower/pull/2934), [#2958](https://github.com/adap/flower/pull/2958), [#3173](https://github.com/adap/flower/pull/3173), [#3174](https://github.com/adap/flower/pull/3174), [#2923](https://github.com/adap/flower/pull/2923), [#2691](https://github.com/adap/flower/pull/2691), [#3079](https://github.com/adap/flower/pull/3079), [#2961](https://github.com/adap/flower/pull/2961), [#2924](https://github.com/adap/flower/pull/2924), [#3166](https://github.com/adap/flower/pull/3166), [#3031](https://github.com/adap/flower/pull/3031), [#3057](https://github.com/adap/flower/pull/3057), [#3000](https://github.com/adap/flower/pull/3000), [#3113](https://github.com/adap/flower/pull/3113), [#2957](https://github.com/adap/flower/pull/2957), [#3183](https://github.com/adap/flower/pull/3183), [#3180](https://github.com/adap/flower/pull/3180), [#3035](https://github.com/adap/flower/pull/3035), [#3189](https://github.com/adap/flower/pull/3189), [#3185](https://github.com/adap/flower/pull/3185), [#3190](https://github.com/adap/flower/pull/3190), [#3191](https://github.com/adap/flower/pull/3191), [#3195](https://github.com/adap/flower/pull/3195)) +- **Introduce Flower Next high-level API (stable)** ([#3002](https://github.com/adap/flower/pull/3002), [#2934](https://github.com/adap/flower/pull/2934), [#2958](https://github.com/adap/flower/pull/2958), [#3173](https://github.com/adap/flower/pull/3173), [#3174](https://github.com/adap/flower/pull/3174), [#2923](https://github.com/adap/flower/pull/2923), [#2691](https://github.com/adap/flower/pull/2691), [#3079](https://github.com/adap/flower/pull/3079), [#2961](https://github.com/adap/flower/pull/2961), [#2924](https://github.com/adap/flower/pull/2924), [#3166](https://github.com/adap/flower/pull/3166), [#3031](https://github.com/adap/flower/pull/3031), [#3057](https://github.com/adap/flower/pull/3057), [#3000](https://github.com/adap/flower/pull/3000), [#3113](https://github.com/adap/flower/pull/3113), [#2957](https://github.com/adap/flower/pull/2957), [#3183](https://github.com/adap/flower/pull/3183), [#3180](https://github.com/adap/flower/pull/3180), [#3035](https://github.com/adap/flower/pull/3035), [#3189](https://github.com/adap/flower/pull/3189), [#3185](https://github.com/adap/flower/pull/3185), [#3190](https://github.com/adap/flower/pull/3190), [#3191](https://github.com/adap/flower/pull/3191), [#3195](https://github.com/adap/flower/pull/3195), [#3197](https://github.com/adap/flower/pull/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` and `ClientApp` (check out `quickstart-pytorch` or `quickstart-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 use `Strategy`, `NumPyClient` & co.