From 54ef3138473daac8850f5418839936546f65fb16 Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Wed, 27 Nov 2024 12:33:12 +0000 Subject: [PATCH 001/104] refactor(examples) Update authentication example (#4589) Co-authored-by: jafermarq --- examples/flower-authentication/README.md | 33 +++++++------------ examples/flower-authentication/pyproject.toml | 12 +++---- 2 files changed, 17 insertions(+), 28 deletions(-) diff --git a/examples/flower-authentication/README.md b/examples/flower-authentication/README.md index 4f312608503d..323362060c5a 100644 --- a/examples/flower-authentication/README.md +++ b/examples/flower-authentication/README.md @@ -10,7 +10,7 @@ framework: [torch, torchvision] > 🧪 = This example covers experimental features that might change in future versions of Flower. > Please consult the regular PyTorch examples ([quickstart](https://github.com/adap/flower/tree/main/examples/quickstart-pytorch), [advanced](https://github.com/adap/flower/tree/main/examples/advanced-pytorch)) to learn how to use Flower with PyTorch. -The following steps describe how to start a long-running Flower server (SuperLink+SuperExec) and a long-running Flower clients (SuperNode) with authentication enabled. The task is to train a simple CNN for image classification using PyTorch. +The following steps describe how to start a long-running Flower server (SuperLink) and a long-running Flower clients (SuperNode) with authentication enabled. The task is to train a simple CNN for image classification using PyTorch. ## Project Setup @@ -65,13 +65,13 @@ The script also generates a CSV file that includes each of the generated (client ./generate.sh {your_number_of_clients} ``` -## Start the long-running Flower server-side (SuperLink+SuperExec) +## Start the long-running Flower server (SuperLink) -Starting long-running Flower server-side components (SuperLink+SuperExec) and enable authentication is very easy; all you need to do is type +Starting long-running Flower server component (SuperLink) and enable authentication is very easy; all you need to do is type `--auth-list-public-keys` containing file path to the known `client_public_keys.csv`, `--auth-superlink-private-key` containing file path to the SuperLink's private key `server_credentials`, and `--auth-superlink-public-key` containing file path to the SuperLink's public key `server_credentials.pub`. Notice that you can only enable authentication with a secure TLS connection. -Let's first launche the `SuperLink`: +Let's first launch the `SuperLink`: ```bash flower-superlink \ @@ -83,20 +83,9 @@ flower-superlink \ --auth-superlink-public-key keys/server_credentials.pub ``` -Then launch the `SuperExec`: +At this point your server-side is idling. Next, let's connect two `SuperNode`s, and then we'll start a run. -```bash -flower-superexec \ - --ssl-ca-certfile certificates/ca.crt \ - --ssl-certfile certificates/server.pem \ - --ssl-keyfile certificates/server.key \ - --executor-config "root-certificates='certificates/ca.crt'" \ - --executor flwr.superexec.deployment:executor -``` - -At this point your server-side is idling. First, let's connect two `SuperNodes`, and then we'll start a run. - -## Start the long-running Flower client-side (SuperNode) +## Start the long-running Flower client (SuperNode) > \[!NOTE\] > Typically each `SuperNode` runs in a different entity/organization which has access to a dataset. In this example we are going to artificially create N dataset splits and saved them into a new directory called `datasets/`. Then, each `SuperNode` will be pointed to the dataset it should load via the `--node-config` argument. We provide a script that does the download, partition and saving of CIFAR-10. @@ -110,10 +99,10 @@ In a new terminal window, start the first long-running Flower client (SuperNode) ```bash flower-supernode \ --root-certificates certificates/ca.crt \ - --superlink 127.0.0.1:9092 \ --auth-supernode-private-key keys/client_credentials_1 \ --auth-supernode-public-key keys/client_credentials_1.pub \ - --node-config 'dataset-path="datasets/cifar10_part_1"' + --node-config 'dataset-path="datasets/cifar10_part_1"' \ + --clientappio-api-address="0.0.0.0:9094" ``` In yet another new terminal window, start the second long-running Flower client: @@ -121,10 +110,10 @@ In yet another new terminal window, start the second long-running Flower client: ```bash flower-supernode \ --root-certificates certificates/ca.crt \ - --superlink 127.0.0.1:9092 \ --auth-supernode-private-key keys/client_credentials_2 \ --auth-supernode-public-key keys/client_credentials_2.pub \ - --node-config 'dataset-path="datasets/cifar10_part_2"' + --node-config 'dataset-path="datasets/cifar10_part_2"' \ + --clientappio-api-address="0.0.0.0:9095" ``` If you generated more than 2 client credentials, you can add more clients by opening new terminal windows and running the command @@ -142,7 +131,7 @@ above. Don't forget to specify the correct client private and public keys for ea ## Run the Flower App -With both the long-running server-side (SuperLink+SuperExec) and two SuperNodes up and running, we can now start run. Note that the command below points to a federation named `my-federation`. Its entry point is defined in the `pyproject.toml`. +With both the long-running server (SuperLink) and two SuperNodes up and running, we can now start the run. Note that the command below points to a federation named `my-federation`. Its entry point is defined in the `pyproject.toml`. ```bash flwr run . my-federation diff --git a/examples/flower-authentication/pyproject.toml b/examples/flower-authentication/pyproject.toml index 2dfaf616527f..963fb2af3564 100644 --- a/examples/flower-authentication/pyproject.toml +++ b/examples/flower-authentication/pyproject.toml @@ -8,10 +8,10 @@ version = "1.0.0" description = "Federated Learning with PyTorch and authenticated Flower " license = "Apache-2.0" dependencies = [ - "flwr==1.12.0", - "flwr-datasets[vision]>=0.3.0", - "torch==2.2.1", - "torchvision==0.17.1", + "flwr>=1.13.1", + "flwr-datasets[vision]>=0.4.0", + "torch>=2.5.0,<3.0.0", + "torchvision>=0.20.1,<0.21.0", ] [tool.hatch.build.targets.wheel] @@ -32,8 +32,8 @@ learning-rate = 0.1 batch-size = 32 [tool.flwr.federations] -default = "superexec" +default = "my-federation" [tool.flwr.federations.my-federation] -address = "127.0.0.1:9093" # Address of the SuperExec +address = "127.0.0.1:9093" # Address of the Exec API root-certificates = "certificates/ca.crt" From a875480d13196d28437a51915822192077511c3e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 13:28:36 +0100 Subject: [PATCH 002/104] Update text and language files (#4596) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- doc/locales/fr/LC_MESSAGES/framework-docs.po | 1708 +++++++++-------- doc/locales/ko/LC_MESSAGES/framework-docs.po | 1668 ++++++++-------- .../pt_BR/LC_MESSAGES/framework-docs.po | 1659 ++++++++-------- .../zh_Hans/LC_MESSAGES/framework-docs.po | 1706 ++++++++-------- 4 files changed, 3666 insertions(+), 3075 deletions(-) diff --git a/doc/locales/fr/LC_MESSAGES/framework-docs.po b/doc/locales/fr/LC_MESSAGES/framework-docs.po index 0895987d1d84..6b0a297dd720 100644 --- a/doc/locales/fr/LC_MESSAGES/framework-docs.po +++ b/doc/locales/fr/LC_MESSAGES/framework-docs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower Docs\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-11-22 08:46+0000\n" +"POT-Creation-Date: 2024-11-28 00:32+0000\n" "PO-Revision-Date: 2023-09-05 17:54+0000\n" "Last-Translator: Charles Beauville \n" "Language: fr\n" @@ -3474,10 +3474,10 @@ msgstr "Démarrage rapide fastai" #: ../../source/docker/run-quickstart-examples-docker-compose.rst:119 #: ../../source/docker/run-quickstart-examples-docker-compose.rst:121 #: ../../source/docker/run-quickstart-examples-docker-compose.rst:125 -#: ../../source/ref-changelog.md:214 ../../source/ref-changelog.md:580 -#: ../../source/ref-changelog.md:857 ../../source/ref-changelog.md:921 -#: ../../source/ref-changelog.md:979 ../../source/ref-changelog.md:1048 -#: ../../source/ref-changelog.md:1110 +#: ../../source/ref-changelog.md:236 ../../source/ref-changelog.md:602 +#: ../../source/ref-changelog.md:879 ../../source/ref-changelog.md:943 +#: ../../source/ref-changelog.md:1001 ../../source/ref-changelog.md:1070 +#: ../../source/ref-changelog.md:1132 msgid "None" msgstr "Aucun" @@ -14836,7 +14836,7 @@ msgid "" msgstr "" #: ../../source/ref-api/flwr.server.strategy.FedAdagrad.rst:2 -#: ../../source/ref-changelog.md:1412 +#: ../../source/ref-changelog.md:1434 msgid "FedAdagrad" msgstr "FedAdagrad" @@ -16650,78 +16650,186 @@ msgstr "Changelog" #: ../../source/ref-changelog.md:3 #, fuzzy -msgid "Unreleased" -msgstr "Inédit" +msgid "v1.13.1 (2024-11-26)" +msgstr "v1.4.0 (2023-04-21)" + +#: ../../source/ref-changelog.md:5 ../../source/ref-changelog.md:37 +#: ../../source/ref-changelog.md:138 ../../source/ref-changelog.md:208 +#: ../../source/ref-changelog.md:240 ../../source/ref-changelog.md:344 +#: ../../source/ref-changelog.md:442 ../../source/ref-changelog.md:542 +#: ../../source/ref-changelog.md:606 ../../source/ref-changelog.md:699 +#: ../../source/ref-changelog.md:799 ../../source/ref-changelog.md:883 +#: ../../source/ref-changelog.md:947 ../../source/ref-changelog.md:1005 +#: ../../source/ref-changelog.md:1074 ../../source/ref-changelog.md:1143 +msgid "Thanks to our contributors" +msgstr "Merci à nos contributeurs" + +#: ../../source/ref-changelog.md:7 ../../source/ref-changelog.md:39 +#: ../../source/ref-changelog.md:140 ../../source/ref-changelog.md:210 +#: ../../source/ref-changelog.md:242 ../../source/ref-changelog.md:346 +#: ../../source/ref-changelog.md:444 ../../source/ref-changelog.md:544 +#: ../../source/ref-changelog.md:608 ../../source/ref-changelog.md:701 +#: ../../source/ref-changelog.md:801 ../../source/ref-changelog.md:885 +#: ../../source/ref-changelog.md:949 ../../source/ref-changelog.md:1007 +msgid "" +"We would like to give our special thanks to all the contributors who made" +" the new version of Flower possible (in `git shortlog` order):" +msgstr "" +"Nous tenons à remercier tout particulièrement tous les contributeurs qui " +"ont rendu possible la nouvelle version de Flower (dans l'ordre `git " +"shortlog`) :" + +#: ../../source/ref-changelog.md:9 +msgid "" +"`Adam Narozniak`, `Charles Beauville`, `Heng Pan`, `Javier`, `Robert " +"Steiner` " +msgstr "" -#: ../../source/ref-changelog.md:5 ../../source/ref-changelog.md:21 -#: ../../source/ref-changelog.md:122 ../../source/ref-changelog.md:224 -#: ../../source/ref-changelog.md:328 ../../source/ref-changelog.md:426 -#: ../../source/ref-changelog.md:526 ../../source/ref-changelog.md:590 -#: ../../source/ref-changelog.md:683 ../../source/ref-changelog.md:783 -#: ../../source/ref-changelog.md:867 ../../source/ref-changelog.md:931 -#: ../../source/ref-changelog.md:989 ../../source/ref-changelog.md:1058 -#: ../../source/ref-changelog.md:1187 ../../source/ref-changelog.md:1229 -#: ../../source/ref-changelog.md:1296 ../../source/ref-changelog.md:1362 -#: ../../source/ref-changelog.md:1407 ../../source/ref-changelog.md:1446 -#: ../../source/ref-changelog.md:1479 ../../source/ref-changelog.md:1529 +#: ../../source/ref-changelog.md:11 ../../source/ref-changelog.md:43 +#: ../../source/ref-changelog.md:144 ../../source/ref-changelog.md:246 +#: ../../source/ref-changelog.md:350 ../../source/ref-changelog.md:448 +#: ../../source/ref-changelog.md:548 ../../source/ref-changelog.md:612 +#: ../../source/ref-changelog.md:705 ../../source/ref-changelog.md:805 +#: ../../source/ref-changelog.md:889 ../../source/ref-changelog.md:953 +#: ../../source/ref-changelog.md:1011 ../../source/ref-changelog.md:1080 +#: ../../source/ref-changelog.md:1209 ../../source/ref-changelog.md:1251 +#: ../../source/ref-changelog.md:1318 ../../source/ref-changelog.md:1384 +#: ../../source/ref-changelog.md:1429 ../../source/ref-changelog.md:1468 +#: ../../source/ref-changelog.md:1501 ../../source/ref-changelog.md:1551 msgid "What's new?" msgstr "Quoi de neuf ?" -#: ../../source/ref-changelog.md:7 +#: ../../source/ref-changelog.md:13 #, fuzzy -msgid "Other changes" -msgstr "Changements incompatibles" +msgid "" +"**Fix `SimulationEngine` Executor for SuperLink** " +"([#4563](https://github.com/adap/flower/pull/4563), " +"[#4568](https://github.com/adap/flower/pull/4568), " +"[#4570](https://github.com/adap/flower/pull/4570))" +msgstr "" +"**Mettre à jour les exemples de code** " +"([#1291](https://github.com/adap/flower/pull/1291), " +"[#1286](https://github.com/adap/flower/pull/1286), " +"[#1282](https://github.com/adap/flower/pull/1282))" -#: ../../source/ref-changelog.md:9 ../../source/ref-changelog.md:388 +#: ../../source/ref-changelog.md:15 +msgid "" +"Resolved an issue that prevented SuperLink from functioning correctly " +"when using the `SimulationEngine` executor." +msgstr "" + +#: ../../source/ref-changelog.md:17 #, fuzzy -msgid "Documentation improvements" -msgstr "Améliorations facultatives" +msgid "" +"**Improve FAB build and install** " +"([#4571](https://github.com/adap/flower/pull/4571))" +msgstr "" +"**Nouvelle stratégie de FedMedian** " +"([#1461](https://github.com/adap/flower/pull/1461))" -#: ../../source/ref-changelog.md:11 ../../source/ref-changelog.md:88 -#: ../../source/ref-changelog.md:178 ../../source/ref-changelog.md:212 -#: ../../source/ref-changelog.md:292 ../../source/ref-changelog.md:408 -#: ../../source/ref-changelog.md:504 ../../source/ref-changelog.md:578 -#: ../../source/ref-changelog.md:653 ../../source/ref-changelog.md:765 -#: ../../source/ref-changelog.md:855 ../../source/ref-changelog.md:919 -#: ../../source/ref-changelog.md:977 ../../source/ref-changelog.md:1046 -#: ../../source/ref-changelog.md:1108 ../../source/ref-changelog.md:1127 -#: ../../source/ref-changelog.md:1283 ../../source/ref-changelog.md:1354 -#: ../../source/ref-changelog.md:1391 ../../source/ref-changelog.md:1434 -msgid "Incompatible changes" -msgstr "Changements incompatibles" +#: ../../source/ref-changelog.md:19 +msgid "" +"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. The `flwr` CLI " +"commands now correctly pack only the necessary files, such as `.md`, " +"`.toml` and `.py`, ensuring more efficient and accurate packaging." +msgstr "" -#: ../../source/ref-changelog.md:13 +#: ../../source/ref-changelog.md:21 #, fuzzy -msgid "v1.13.0 (2024-11-20)" -msgstr "v1.4.0 (2023-04-21)" +msgid "" +"**Update** `embedded-devices` **example** " +"([#4381](https://github.com/adap/flower/pull/4381))" +msgstr "" +"**Ajouter une nouvelle stratégie `FedProx`** " +"([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:15 ../../source/ref-changelog.md:116 -#: ../../source/ref-changelog.md:186 ../../source/ref-changelog.md:218 -#: ../../source/ref-changelog.md:322 ../../source/ref-changelog.md:420 -#: ../../source/ref-changelog.md:520 ../../source/ref-changelog.md:584 -#: ../../source/ref-changelog.md:677 ../../source/ref-changelog.md:777 -#: ../../source/ref-changelog.md:861 ../../source/ref-changelog.md:925 -#: ../../source/ref-changelog.md:983 ../../source/ref-changelog.md:1052 -#: ../../source/ref-changelog.md:1121 -msgid "Thanks to our contributors" -msgstr "Merci à nos contributeurs" +#: ../../source/ref-changelog.md:23 +msgid "The example now uses the `flwr run` command and the Deployment Engine." +msgstr "" -#: ../../source/ref-changelog.md:17 ../../source/ref-changelog.md:118 -#: ../../source/ref-changelog.md:188 ../../source/ref-changelog.md:220 -#: ../../source/ref-changelog.md:324 ../../source/ref-changelog.md:422 -#: ../../source/ref-changelog.md:522 ../../source/ref-changelog.md:586 -#: ../../source/ref-changelog.md:679 ../../source/ref-changelog.md:779 -#: ../../source/ref-changelog.md:863 ../../source/ref-changelog.md:927 -#: ../../source/ref-changelog.md:985 +#: ../../source/ref-changelog.md:25 +#, fuzzy msgid "" -"We would like to give our special thanks to all the contributors who made" -" the new version of Flower possible (in `git shortlog` order):" +"**Update Documentation** " +"([#4566](https://github.com/adap/flower/pull/4566), " +"[#4569](https://github.com/adap/flower/pull/4569), " +"[#4560](https://github.com/adap/flower/pull/4560), " +"[#4556](https://github.com/adap/flower/pull/4556), " +"[#4581](https://github.com/adap/flower/pull/4581), " +"[#4537](https://github.com/adap/flower/pull/4537), " +"[#4562](https://github.com/adap/flower/pull/4562), " +"[#4582](https://github.com/adap/flower/pull/4582))" msgstr "" -"Nous tenons à remercier tout particulièrement tous les contributeurs qui " -"ont rendu possible la nouvelle version de Flower (dans l'ordre `git " -"shortlog`) :" +"**Tutoriel amélioré** ([#1468](https://github.com/adap/flower/pull/1468)," +" [#1470](https://github.com/adap/flower/pull/1470), " +"[#1472](https://github.com/adap/flower/pull/1472), " +"[#1473](https://github.com/adap/flower/pull/1473), " +"[#1474](https://github.com/adap/flower/pull/1474), " +"[#1475](https://github.com/adap/flower/pull/1475))" -#: ../../source/ref-changelog.md:19 +#: ../../source/ref-changelog.md:27 +msgid "" +"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." +msgstr "" + +#: ../../source/ref-changelog.md:29 +#, fuzzy +msgid "" +"**Update Infrastructure and CI/CD** " +"([#4577](https://github.com/adap/flower/pull/4577), " +"[#4578](https://github.com/adap/flower/pull/4578), " +"[#4558](https://github.com/adap/flower/pull/4558), " +"[#4551](https://github.com/adap/flower/pull/4551), " +"[#3356](https://github.com/adap/flower/pull/3356), " +"[#4559](https://github.com/adap/flower/pull/4559), " +"[#4575](https://github.com/adap/flower/pull/4575))" +msgstr "" +"**Tutoriel amélioré** ([#1468](https://github.com/adap/flower/pull/1468)," +" [#1470](https://github.com/adap/flower/pull/1470), " +"[#1472](https://github.com/adap/flower/pull/1472), " +"[#1473](https://github.com/adap/flower/pull/1473), " +"[#1474](https://github.com/adap/flower/pull/1474), " +"[#1475](https://github.com/adap/flower/pull/1475))" + +#: ../../source/ref-changelog.md:31 +#, fuzzy +msgid "" +"**General improvements** " +"([#4557](https://github.com/adap/flower/pull/4557), " +"[#4564](https://github.com/adap/flower/pull/4564), " +"[#4573](https://github.com/adap/flower/pull/4573), " +"[#4561](https://github.com/adap/flower/pull/4561), " +"[#4579](https://github.com/adap/flower/pull/4579), " +"[#4572](https://github.com/adap/flower/pull/4572))" +msgstr "" +"**Mise à jour de la documentation** " +"([#1629](https://github.com/adap/flower/pull/1629), " +"[#1628](https://github.com/adap/flower/pull/1628), " +"[#1620](https://github.com/adap/flower/pull/1620), " +"[#1618](https://github.com/adap/flower/pull/1618), " +"[#1617](https://github.com/adap/flower/pull/1617), " +"[#1613](https://github.com/adap/flower/pull/1613), " +"[#1614](https://github.com/adap/flower/pull/1614))" + +#: ../../source/ref-changelog.md:33 ../../source/ref-changelog.md:102 +#: ../../source/ref-changelog.md:198 ../../source/ref-changelog.md:301 +#: ../../source/ref-changelog.md:408 +msgid "" +"As always, many parts of the Flower framework and quality infrastructure " +"were improved and updated." +msgstr "" + +#: ../../source/ref-changelog.md:35 +#, fuzzy +msgid "v1.13.0 (2024-11-20)" +msgstr "v1.4.0 (2023-04-21)" + +#: ../../source/ref-changelog.md:41 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " "Beutel`, `Daniel Nata Nugraha`, `Dimitris Stripelis`, `Heng Pan`, " @@ -16729,7 +16837,7 @@ msgid "" "Lindskog`, `Yan Gao`, `Yao Xu`, `wwjang` " msgstr "" -#: ../../source/ref-changelog.md:23 +#: ../../source/ref-changelog.md:45 #, fuzzy msgid "" "**Introduce `flwr ls` command** " @@ -16742,30 +16850,30 @@ msgstr "" "[#1544](https://github.com/adap/flower/pull/1544), " "[#1584](https://github.com/adap/flower/pull/1584))" -#: ../../source/ref-changelog.md:25 +#: ../../source/ref-changelog.md:47 msgid "" "The `flwr ls` command is now available to display details about all runs " "(or one specific run). It supports the following usage options:" msgstr "" -#: ../../source/ref-changelog.md:27 +#: ../../source/ref-changelog.md:49 msgid "`flwr ls --runs [] []`: Lists all runs." msgstr "" -#: ../../source/ref-changelog.md:28 +#: ../../source/ref-changelog.md:50 msgid "" "`flwr ls --run-id [] []`: Displays details for " "a specific run." msgstr "" -#: ../../source/ref-changelog.md:30 +#: ../../source/ref-changelog.md:52 msgid "" "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." msgstr "" -#: ../../source/ref-changelog.md:32 +#: ../../source/ref-changelog.md:54 #, fuzzy msgid "" "**Fuse SuperLink and SuperExec** " @@ -16785,7 +16893,7 @@ msgstr "" "[#1065](https://github.com/adap/flower/pull/1065), " "[#1090](https://github.com/adap/flower/pull/1090))" -#: ../../source/ref-changelog.md:34 +#: ../../source/ref-changelog.md:56 msgid "" "SuperExec has been integrated into SuperLink, enabling SuperLink to " "directly manage ServerApp processes (`flwr-serverapp`). The `flwr` CLI " @@ -16795,7 +16903,7 @@ msgid "" "{subprocess,process}` flag." msgstr "" -#: ../../source/ref-changelog.md:36 +#: ../../source/ref-changelog.md:58 #, fuzzy msgid "" "**Introduce `flwr-serverapp` command** " @@ -16817,7 +16925,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475))" -#: ../../source/ref-changelog.md:38 +#: ../../source/ref-changelog.md:60 msgid "" "The `flwr-serverapp` command has been introduced as a CLI entry point " "that runs a `ServerApp` process. This process communicates with SuperLink" @@ -16825,7 +16933,7 @@ msgid "" "and more flexible deployment." msgstr "" -#: ../../source/ref-changelog.md:40 +#: ../../source/ref-changelog.md:62 #, fuzzy msgid "" "**Improve simulation engine and introduce `flwr-simulation` command** " @@ -16844,7 +16952,7 @@ msgstr "" "[#1065](https://github.com/adap/flower/pull/1065), " "[#1090](https://github.com/adap/flower/pull/1090))" -#: ../../source/ref-changelog.md:42 +#: ../../source/ref-changelog.md:64 msgid "" "The simulation engine has been significantly improved, resulting in " "dramatically faster simulations. Additionally, the `flwr-simulation` " @@ -16852,7 +16960,7 @@ msgid "" "dedicated entry point for running simulations." msgstr "" -#: ../../source/ref-changelog.md:44 +#: ../../source/ref-changelog.md:66 #, fuzzy msgid "" "**Improve SuperLink message management** " @@ -16863,7 +16971,7 @@ msgstr "" "([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" -#: ../../source/ref-changelog.md:46 +#: ../../source/ref-changelog.md:68 msgid "" "SuperLink now validates the destination node ID of instruction messages " "and checks the TTL (time-to-live) for reply messages. When pulling reply " @@ -16872,7 +16980,7 @@ msgid "" "reply message exists but has expired." msgstr "" -#: ../../source/ref-changelog.md:48 +#: ../../source/ref-changelog.md:70 #, fuzzy msgid "" "**Introduce FedDebug baseline** " @@ -16881,7 +16989,7 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:50 +#: ../../source/ref-changelog.md:72 msgid "" "FedDebug is a framework that enhances debugging in Federated Learning by " "enabling interactive inspection of the training process and automatically" @@ -16891,7 +16999,7 @@ msgid "" "documentation](https://flower.ai/docs/baselines/feddebug.html)." msgstr "" -#: ../../source/ref-changelog.md:52 +#: ../../source/ref-changelog.md:74 msgid "" "**Update documentation** " "([#4511](https://github.com/adap/flower/pull/4511), " @@ -16936,7 +17044,7 @@ msgid "" "[#4533](https://github.com/adap/flower/pull/4533))" msgstr "" -#: ../../source/ref-changelog.md:54 +#: ../../source/ref-changelog.md:76 msgid "" "Many documentation pages and tutorials have been updated to improve " "clarity, fix typos, incorporate user feedback, and stay aligned with the " @@ -16950,7 +17058,7 @@ msgid "" "aggregation-protocols.html) page has also been updated." msgstr "" -#: ../../source/ref-changelog.md:56 +#: ../../source/ref-changelog.md:78 #, fuzzy msgid "" "**Update examples and templates** " @@ -16973,7 +17081,7 @@ msgstr "" "[#1770](https://github.com/adap/flower/pull/1770), " "[#1733](https://github.com/adap/flower/pull/1733))" -#: ../../source/ref-changelog.md:58 +#: ../../source/ref-changelog.md:80 msgid "" "Multiple examples and templates have been updated to enhance usability " "and correctness. The updates include the `30-minute-tutorial`, " @@ -16981,7 +17089,7 @@ msgid "" "and the FlowerTune template." msgstr "" -#: ../../source/ref-changelog.md:60 +#: ../../source/ref-changelog.md:82 #, fuzzy msgid "" "**Improve Docker support** " @@ -17006,7 +17114,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:62 +#: ../../source/ref-changelog.md:84 msgid "" "Docker images and configurations have been updated, including updating " "Docker Compose files to version 1.13.0, refactoring the Docker build " @@ -17014,7 +17122,7 @@ msgid "" " 6.9.0, and improving Docker documentation." msgstr "" -#: ../../source/ref-changelog.md:64 +#: ../../source/ref-changelog.md:86 #, fuzzy msgid "" "**Allow app installation without internet access** " @@ -17025,14 +17133,14 @@ msgstr "" "([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" -#: ../../source/ref-changelog.md:66 +#: ../../source/ref-changelog.md:88 msgid "" "The `flwr build` command now includes a wheel file in the FAB, enabling " "Flower app installation in environments without internet access via `flwr" " install`." msgstr "" -#: ../../source/ref-changelog.md:68 +#: ../../source/ref-changelog.md:90 #, fuzzy msgid "" "**Improve `flwr log` command** " @@ -17047,7 +17155,7 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310))" -#: ../../source/ref-changelog.md:70 +#: ../../source/ref-changelog.md:92 #, fuzzy msgid "" "**Refactor SuperNode for better maintainability and efficiency** " @@ -17062,7 +17170,7 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310))" -#: ../../source/ref-changelog.md:72 +#: ../../source/ref-changelog.md:94 #, fuzzy msgid "" "**Support NumPy `2.0`** " @@ -17071,7 +17179,7 @@ msgstr "" "**Support Python 3.10** " "([#1320](https://github.com/adap/flower/pull/1320))" -#: ../../source/ref-changelog.md:74 +#: ../../source/ref-changelog.md:96 #, fuzzy msgid "" "**Update infrastructure and CI/CD** " @@ -17092,7 +17200,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:76 +#: ../../source/ref-changelog.md:98 #, fuzzy msgid "" "**Bugfixes** ([#4404](https://github.com/adap/flower/pull/4404), " @@ -17115,7 +17223,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:78 +#: ../../source/ref-changelog.md:100 msgid "" "**General improvements** " "([#4454](https://github.com/adap/flower/pull/4454), " @@ -17171,25 +17279,18 @@ msgid "" "[#4481](https://github.com/adap/flower/pull/4481))" msgstr "" -#: ../../source/ref-changelog.md:80 ../../source/ref-changelog.md:176 -#: ../../source/ref-changelog.md:279 ../../source/ref-changelog.md:386 -msgid "" -"As always, many parts of the Flower framework and quality infrastructure " -"were improved and updated." -msgstr "" - -#: ../../source/ref-changelog.md:82 ../../source/ref-changelog.md:281 -#: ../../source/ref-changelog.md:398 ../../source/ref-changelog.md:490 -#: ../../source/ref-changelog.md:1473 +#: ../../source/ref-changelog.md:104 ../../source/ref-changelog.md:303 +#: ../../source/ref-changelog.md:420 ../../source/ref-changelog.md:512 +#: ../../source/ref-changelog.md:1495 msgid "Deprecations" msgstr "Dépréciations" -#: ../../source/ref-changelog.md:84 +#: ../../source/ref-changelog.md:106 #, fuzzy msgid "**Deprecate Python 3.9**" msgstr "**Créer le PR**" -#: ../../source/ref-changelog.md:86 +#: ../../source/ref-changelog.md:108 msgid "" "Flower is deprecating support for Python 3.9 as several of its " "dependencies are phasing out compatibility with this version. While no " @@ -17197,7 +17298,20 @@ msgid "" "upgrading to a supported Python version." msgstr "" -#: ../../source/ref-changelog.md:90 +#: ../../source/ref-changelog.md:110 ../../source/ref-changelog.md:200 +#: ../../source/ref-changelog.md:234 ../../source/ref-changelog.md:314 +#: ../../source/ref-changelog.md:430 ../../source/ref-changelog.md:526 +#: ../../source/ref-changelog.md:600 ../../source/ref-changelog.md:675 +#: ../../source/ref-changelog.md:787 ../../source/ref-changelog.md:877 +#: ../../source/ref-changelog.md:941 ../../source/ref-changelog.md:999 +#: ../../source/ref-changelog.md:1068 ../../source/ref-changelog.md:1130 +#: ../../source/ref-changelog.md:1149 ../../source/ref-changelog.md:1305 +#: ../../source/ref-changelog.md:1376 ../../source/ref-changelog.md:1413 +#: ../../source/ref-changelog.md:1456 +msgid "Incompatible changes" +msgstr "Changements incompatibles" + +#: ../../source/ref-changelog.md:112 #, fuzzy msgid "" "**Remove `flower-superexec` command** " @@ -17206,7 +17320,7 @@ msgstr "" "**Supprimez KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:92 +#: ../../source/ref-changelog.md:114 msgid "" "The `flower-superexec` command, previously used to launch SuperExec, is " "no longer functional as SuperExec has been merged into SuperLink. " @@ -17214,7 +17328,7 @@ msgid "" " initiated." msgstr "" -#: ../../source/ref-changelog.md:94 +#: ../../source/ref-changelog.md:116 #, fuzzy msgid "" "**Remove `flower-server-app` command** " @@ -17223,13 +17337,13 @@ msgstr "" "**Supprimez KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:96 +#: ../../source/ref-changelog.md:118 msgid "" "The `flower-server-app` command has been removed. To start a Flower app, " "please use the `flwr run` command instead." msgstr "" -#: ../../source/ref-changelog.md:98 +#: ../../source/ref-changelog.md:120 #, fuzzy msgid "" "**Remove `app` argument from `flower-supernode` command** " @@ -17238,14 +17352,14 @@ msgstr "" "**Supprimez KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:100 +#: ../../source/ref-changelog.md:122 msgid "" "The usage of `flower-supernode ` has been removed. SuperNode " "will now load the FAB delivered by SuperLink, and it is no longer " "possible to directly specify an app directory." msgstr "" -#: ../../source/ref-changelog.md:102 +#: ../../source/ref-changelog.md:124 #, fuzzy msgid "" "**Remove support for non-app simulations** " @@ -17254,13 +17368,13 @@ msgstr "" "**Améliorer la prise en charge des GPU dans les simulations** " "([#1555](https://github.com/adap/flower/pull/1555))" -#: ../../source/ref-changelog.md:104 +#: ../../source/ref-changelog.md:126 msgid "" "The simulation engine (via `flower-simulation`) now exclusively supports " "passing an app." msgstr "" -#: ../../source/ref-changelog.md:106 +#: ../../source/ref-changelog.md:128 #, fuzzy msgid "" "**Rename CLI arguments for `flower-superlink` command** " @@ -17269,14 +17383,14 @@ msgstr "" "**Supprimez KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:108 +#: ../../source/ref-changelog.md:130 msgid "" "The `--driver-api-address` argument has been renamed to `--serverappio-" "api-address` in the `flower-superlink` command to reflect the renaming of" " the `Driver` service to the `ServerAppIo` service." msgstr "" -#: ../../source/ref-changelog.md:110 +#: ../../source/ref-changelog.md:132 #, fuzzy msgid "" "**Rename CLI arguments for `flwr-serverapp` and `flwr-clientapp` " @@ -17285,7 +17399,7 @@ msgstr "" "**Supprimez KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:112 +#: ../../source/ref-changelog.md:134 msgid "" "The CLI arguments have been renamed for clarity and consistency. " "Specifically, `--superlink` for `flwr-serverapp` is now `--serverappio-" @@ -17293,12 +17407,12 @@ msgid "" "`--clientappio-api-address`." msgstr "" -#: ../../source/ref-changelog.md:114 +#: ../../source/ref-changelog.md:136 #, fuzzy msgid "v1.12.0 (2024-10-14)" msgstr "v1.1.0 (2022-10-31)" -#: ../../source/ref-changelog.md:120 +#: ../../source/ref-changelog.md:142 msgid "" "`Adam Narozniak`, `Audris`, `Charles Beauville`, `Chong Shen Ng`, `Daniel" " J. Beutel`, `Daniel Nata Nugraha`, `Heng Pan`, `Javier`, `Jiahao Tan`, " @@ -17306,7 +17420,7 @@ msgid "" "Gao`, `xiliguguagua` " msgstr "" -#: ../../source/ref-changelog.md:124 +#: ../../source/ref-changelog.md:146 #, fuzzy msgid "" "**Introduce SuperExec log streaming** " @@ -17322,7 +17436,7 @@ msgstr "" "[#1065](https://github.com/adap/flower/pull/1065), " "[#1090](https://github.com/adap/flower/pull/1090))" -#: ../../source/ref-changelog.md:126 +#: ../../source/ref-changelog.md:148 msgid "" "Flower now supports log streaming from a remote SuperExec using the `flwr" " log` command. This new feature allows you to monitor logs from SuperExec" @@ -17330,7 +17444,7 @@ msgid "" "`)." msgstr "" -#: ../../source/ref-changelog.md:128 +#: ../../source/ref-changelog.md:150 #, fuzzy msgid "" "**Improve `flwr new` templates** " @@ -17347,14 +17461,14 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475))" -#: ../../source/ref-changelog.md:130 +#: ../../source/ref-changelog.md:152 msgid "" "The `flwr new` command templates for MLX, NumPy, sklearn, JAX, and " "PyTorch have been updated to improve usability and consistency across " "frameworks." msgstr "" -#: ../../source/ref-changelog.md:132 +#: ../../source/ref-changelog.md:154 #, fuzzy msgid "" "**Migrate ID handling to use unsigned 64-bit integers** " @@ -17367,7 +17481,7 @@ msgstr "" "[#1286](https://github.com/adap/flower/pull/1286), " "[#1282](https://github.com/adap/flower/pull/1282))" -#: ../../source/ref-changelog.md:134 +#: ../../source/ref-changelog.md:156 msgid "" "Node IDs, run IDs, and related fields have been migrated from signed " "64-bit integers (`sint64`) to unsigned 64-bit integers (`uint64`). To " @@ -17378,7 +17492,7 @@ msgid "" "`uint64`." msgstr "" -#: ../../source/ref-changelog.md:136 +#: ../../source/ref-changelog.md:158 #, fuzzy msgid "" "**Add Flower architecture explanation** " @@ -17387,7 +17501,7 @@ msgstr "" "**Documentation restructurée** " "([#1387](https://github.com/adap/flower/pull/1387))" -#: ../../source/ref-changelog.md:138 +#: ../../source/ref-changelog.md:160 msgid "" "A new [Flower architecture explainer](https://flower.ai/docs/framework" "/explanation-flower-architecture.html) page introduces Flower components " @@ -17395,7 +17509,7 @@ msgid "" "documentation if you're interested." msgstr "" -#: ../../source/ref-changelog.md:140 +#: ../../source/ref-changelog.md:162 #, fuzzy msgid "" "**Introduce FedRep baseline** " @@ -17404,7 +17518,7 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:142 +#: ../../source/ref-changelog.md:164 msgid "" "FedRep is a federated learning algorithm that learns shared data " "representations across clients while allowing each to maintain " @@ -17414,7 +17528,7 @@ msgid "" "([arxiv](https://arxiv.org/abs/2102.07078))" msgstr "" -#: ../../source/ref-changelog.md:144 +#: ../../source/ref-changelog.md:166 #, fuzzy msgid "" "**Improve FlowerTune template and LLM evaluation pipelines** " @@ -17447,7 +17561,7 @@ msgstr "" "[#1305](https://github.com/adap/flower/pull/1305), " "[#1307](https://github.com/adap/flower/pull/1307))" -#: ../../source/ref-changelog.md:146 +#: ../../source/ref-changelog.md:168 msgid "" "Refined evaluation pipelines, metrics, and documentation for the upcoming" " FlowerTune LLM Leaderboard across multiple domains including Finance, " @@ -17456,7 +17570,7 @@ msgid "" "exciting challenge!" msgstr "" -#: ../../source/ref-changelog.md:148 +#: ../../source/ref-changelog.md:170 #, fuzzy msgid "" "**Enhance Docker Support and Documentation** " @@ -17482,7 +17596,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475))" -#: ../../source/ref-changelog.md:150 +#: ../../source/ref-changelog.md:172 msgid "" "Upgraded Ubuntu base image to 24.04, added SBOM and gcc to Docker images," " and comprehensively updated [Docker " @@ -17490,7 +17604,7 @@ msgid "" "including quickstart guides and distributed Docker Compose instructions." msgstr "" -#: ../../source/ref-changelog.md:152 +#: ../../source/ref-changelog.md:174 #, fuzzy msgid "" "**Introduce Flower glossary** " @@ -17501,7 +17615,7 @@ msgstr "" "([#1621](https://github.com/adap/flower/pull/1621), " "[#1764](https://github.com/adap/flower/pull/1764))" -#: ../../source/ref-changelog.md:154 +#: ../../source/ref-changelog.md:176 msgid "" "Added the [Federated Learning glossary](https://flower.ai/glossary/) to " "the Flower repository, located under the `flower/glossary/` directory. " @@ -17511,7 +17625,7 @@ msgid "" "become a Flower contributor!" msgstr "" -#: ../../source/ref-changelog.md:156 +#: ../../source/ref-changelog.md:178 #, fuzzy msgid "" "**Implement Message Time-to-Live (TTL)** " @@ -17530,7 +17644,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:158 +#: ../../source/ref-changelog.md:180 msgid "" "Added comprehensive TTL support for messages in Flower's SuperLink. " "Messages are now automatically expired and cleaned up based on " @@ -17538,7 +17652,7 @@ msgid "" " default in the high-level API)." msgstr "" -#: ../../source/ref-changelog.md:160 +#: ../../source/ref-changelog.md:182 #, fuzzy msgid "" "**Improve FAB handling** " @@ -17553,14 +17667,14 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310))" -#: ../../source/ref-changelog.md:162 +#: ../../source/ref-changelog.md:184 msgid "" "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." msgstr "" -#: ../../source/ref-changelog.md:164 +#: ../../source/ref-changelog.md:186 #, fuzzy msgid "" "**Update documentation** " @@ -17577,7 +17691,7 @@ msgstr "" "[#1065](https://github.com/adap/flower/pull/1065), " "[#1090](https://github.com/adap/flower/pull/1090))" -#: ../../source/ref-changelog.md:166 +#: ../../source/ref-changelog.md:188 msgid "" "Updated quickstart tutorials (PyTorch Lightning, TensorFlow, Hugging " "Face, Fastai) to use the new `flwr run` command and removed default title" @@ -17585,7 +17699,7 @@ msgid "" "added to FAQ." msgstr "" -#: ../../source/ref-changelog.md:168 +#: ../../source/ref-changelog.md:190 #, fuzzy msgid "" "**Update example projects** " @@ -17607,7 +17721,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:170 +#: ../../source/ref-changelog.md:192 msgid "" "Refreshed multiple example projects including vertical FL, PyTorch " "(advanced), Pandas, Secure Aggregation, and XGBoost examples. Optimized " @@ -17615,7 +17729,7 @@ msgid "" "simulation examples." msgstr "" -#: ../../source/ref-changelog.md:172 +#: ../../source/ref-changelog.md:194 #, fuzzy msgid "" "**Update translations** " @@ -17636,7 +17750,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:174 +#: ../../source/ref-changelog.md:196 msgid "" "**General improvements** " "([#4239](https://github.com/adap/flower/pull/4239), " @@ -17683,7 +17797,7 @@ msgid "" "[#4333](https://github.com/adap/flower/pull/4333))" msgstr "" -#: ../../source/ref-changelog.md:180 +#: ../../source/ref-changelog.md:202 #, fuzzy msgid "" "**Drop Python 3.8 support and update minimum version to 3.9** " @@ -17705,7 +17819,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:182 +#: ../../source/ref-changelog.md:204 msgid "" "Python 3.8 support was deprecated in Flower 1.9, and this release removes" " support. Flower now requires Python 3.9 or later (Python 3.11 is " @@ -17713,23 +17827,23 @@ msgid "" "minimum supported version. Flower now supports Python 3.9 to 3.12." msgstr "" -#: ../../source/ref-changelog.md:184 +#: ../../source/ref-changelog.md:206 #, fuzzy msgid "v1.11.1 (2024-09-11)" msgstr "v1.3.0 (2023-02-06)" -#: ../../source/ref-changelog.md:190 +#: ../../source/ref-changelog.md:212 msgid "" "`Charles Beauville`, `Chong Shen Ng`, `Daniel J. Beutel`, `Heng Pan`, " "`Javier`, `Robert Steiner`, `Yan Gao` " msgstr "" -#: ../../source/ref-changelog.md:192 +#: ../../source/ref-changelog.md:214 #, fuzzy msgid "Improvements" msgstr "Améliorations facultatives" -#: ../../source/ref-changelog.md:194 +#: ../../source/ref-changelog.md:216 #, fuzzy msgid "" "**Implement** `keys/values/items` **methods for** `TypedDict` " @@ -17738,7 +17852,7 @@ msgstr "" "**Make** `get_parameters` **configurable** " "([#1242](https://github.com/adap/flower/pull/1242))" -#: ../../source/ref-changelog.md:196 +#: ../../source/ref-changelog.md:218 #, fuzzy msgid "" "**Fix parsing of** `--executor-config` **if present** " @@ -17747,7 +17861,7 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:198 +#: ../../source/ref-changelog.md:220 #, fuzzy msgid "" "**Adjust framework name in templates docstrings** " @@ -17756,7 +17870,7 @@ msgstr "" "**Nouvel exemple de code scikit-learn** " "([#748](https://github.com/adap/flower/pull/748))" -#: ../../source/ref-changelog.md:200 +#: ../../source/ref-changelog.md:222 #, fuzzy msgid "" "**Update** `flwr new` **Hugging Face template** " @@ -17765,7 +17879,7 @@ msgstr "" "**Nouvel exemple de code pour les Transformers à visage embrassant** " "([#863](https://github.com/adap/flower/pull/863))" -#: ../../source/ref-changelog.md:202 +#: ../../source/ref-changelog.md:224 #, fuzzy msgid "" "**Fix** `flwr new` **FlowerTune template** " @@ -17774,7 +17888,7 @@ msgstr "" "**Nouvel exemple de code CoreML pour iOS** " "([#1289](https://github.com/adap/flower/pull/1289))" -#: ../../source/ref-changelog.md:204 +#: ../../source/ref-changelog.md:226 #, fuzzy msgid "" "**Add buffer time after** `ServerApp` **thread initialization** " @@ -17783,7 +17897,7 @@ msgstr "" "**Ajouter des mesures de formation à** `History` **objet pendant les " "simulations** ([#1696](https://github.com/adap/flower/pull/1696))" -#: ../../source/ref-changelog.md:206 +#: ../../source/ref-changelog.md:228 #, fuzzy msgid "" "**Handle unsuitable resources for simulation** " @@ -17792,7 +17906,7 @@ msgstr "" "**Ajouter un nouveau guide pratique pour le suivi des simulations** " "([#1649](https://github.com/adap/flower/pull/1649))" -#: ../../source/ref-changelog.md:208 +#: ../../source/ref-changelog.md:230 #, fuzzy msgid "" "**Update example READMEs** " @@ -17801,7 +17915,7 @@ msgstr "" "**Introduire une nouvelle ligne de base pour les fleurs : FedAvg " "FEMNIST** ([#1655](https://github.com/adap/flower/pull/1655))" -#: ../../source/ref-changelog.md:210 +#: ../../source/ref-changelog.md:232 #, fuzzy msgid "" "**Update SuperNode authentication docs** " @@ -17810,12 +17924,12 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:216 +#: ../../source/ref-changelog.md:238 #, fuzzy msgid "v1.11.0 (2024-08-30)" msgstr "v1.3.0 (2023-02-06)" -#: ../../source/ref-changelog.md:222 +#: ../../source/ref-changelog.md:244 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " "Beutel`, `Daniel Nata Nugraha`, `Danny`, `Edoardo Gabrielli`, `Heng Pan`," @@ -17824,7 +17938,7 @@ msgid "" "TOKEN_v1.11.0-->" msgstr "" -#: ../../source/ref-changelog.md:226 +#: ../../source/ref-changelog.md:248 msgid "" "**Deliver Flower App Bundle (FAB) to SuperLink and SuperNodes** " "([#4006](https://github.com/adap/flower/pull/4006), " @@ -17851,14 +17965,14 @@ msgid "" "[#3619](https://github.com/adap/flower/pull/3619))" msgstr "" -#: ../../source/ref-changelog.md:228 +#: ../../source/ref-changelog.md:250 msgid "" "Dynamic code updates are here! `flwr run` can now ship and install the " "latest version of your `ServerApp` and `ClientApp` to an already-running " "federation (SuperLink and SuperNodes)." msgstr "" -#: ../../source/ref-changelog.md:230 +#: ../../source/ref-changelog.md:252 msgid "" "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," @@ -17868,11 +17982,11 @@ msgid "" "projects!) dynamically." msgstr "" -#: ../../source/ref-changelog.md:232 +#: ../../source/ref-changelog.md:254 msgid "`flwr run` is all you need." msgstr "" -#: ../../source/ref-changelog.md:234 +#: ../../source/ref-changelog.md:256 #, fuzzy msgid "" "**Introduce isolated** `ClientApp` **execution** " @@ -17907,30 +18021,30 @@ msgstr "" "[#1564](https://github.com/adap/flower/pull/1564), " "[#1566](https://github.com/adap/flower/pull/1566))" -#: ../../source/ref-changelog.md:236 +#: ../../source/ref-changelog.md:258 msgid "" "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 the " "`ClientApp` can and cannot do." msgstr "" -#: ../../source/ref-changelog.md:238 +#: ../../source/ref-changelog.md:260 msgid "`flower-supernode` supports three `--isolation` modes:" msgstr "" -#: ../../source/ref-changelog.md:240 +#: ../../source/ref-changelog.md:262 msgid "" "Unset: The SuperNode runs the `ClientApp` in the same process (as in " "previous versions of Flower). This is the default mode." msgstr "" -#: ../../source/ref-changelog.md:241 +#: ../../source/ref-changelog.md:263 msgid "" "`--isolation=subprocess`: The SuperNode starts a subprocess to run the " "`ClientApp`." msgstr "" -#: ../../source/ref-changelog.md:242 +#: ../../source/ref-changelog.md:264 msgid "" "`--isolation=process`: The SuperNode expects an externally-managed " "process to run the `ClientApp`. This external process is not managed by " @@ -17939,7 +18053,7 @@ msgid "" "`flwr/clientapp` Docker image." msgstr "" -#: ../../source/ref-changelog.md:244 +#: ../../source/ref-changelog.md:266 #, fuzzy msgid "" "**Improve Docker support for enterprise deployments** " @@ -17956,17 +18070,17 @@ msgstr "" "[#1065](https://github.com/adap/flower/pull/1065), " "[#1090](https://github.com/adap/flower/pull/1090))" -#: ../../source/ref-changelog.md:246 +#: ../../source/ref-changelog.md:268 msgid "" "Flower 1.11 ships many Docker improvements that are especially useful for" " enterprise deployments:" msgstr "" -#: ../../source/ref-changelog.md:248 +#: ../../source/ref-changelog.md:270 msgid "`flwr/supernode` comes with a new Alpine Docker image." msgstr "" -#: ../../source/ref-changelog.md:249 +#: ../../source/ref-changelog.md:271 msgid "" "`flwr/clientapp` is a new image to be used with the `--isolation=process`" " option. In this mode, SuperNode and `ClientApp` run in two different " @@ -17976,19 +18090,19 @@ msgid "" "enterprise settings." msgstr "" -#: ../../source/ref-changelog.md:250 +#: ../../source/ref-changelog.md:272 msgid "" "New all-in-one Docker Compose enables you to easily start a full Flower " "Deployment Engine on a single machine." msgstr "" -#: ../../source/ref-changelog.md:251 +#: ../../source/ref-changelog.md:273 msgid "" "Completely new Docker documentation: " "https://flower.ai/docs/framework/docker/index.html" msgstr "" -#: ../../source/ref-changelog.md:253 +#: ../../source/ref-changelog.md:275 #, fuzzy msgid "" "**Improve SuperNode authentication** " @@ -18001,13 +18115,13 @@ msgstr "" "[#1286](https://github.com/adap/flower/pull/1286), " "[#1282](https://github.com/adap/flower/pull/1282))" -#: ../../source/ref-changelog.md:255 +#: ../../source/ref-changelog.md:277 msgid "" "SuperNode auth has been improved in several ways, including improved " "logging, improved testing, and improved error handling." msgstr "" -#: ../../source/ref-changelog.md:257 +#: ../../source/ref-changelog.md:279 #, fuzzy msgid "" "**Update** `flwr new` **templates** " @@ -18030,13 +18144,13 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:259 +#: ../../source/ref-changelog.md:281 msgid "" "All `flwr new` templates have been updated to show the latest recommended" " use of Flower APIs." msgstr "" -#: ../../source/ref-changelog.md:261 +#: ../../source/ref-changelog.md:283 #, fuzzy msgid "" "**Improve Simulation Engine** " @@ -18054,14 +18168,14 @@ msgstr "" "[#1065](https://github.com/adap/flower/pull/1065), " "[#1090](https://github.com/adap/flower/pull/1090))" -#: ../../source/ref-changelog.md:263 +#: ../../source/ref-changelog.md:285 msgid "" "The Flower Simulation Engine comes with several updates, including " "improved run config support, verbose logging, simulation backend " "configuration via `flwr run`, and more." msgstr "" -#: ../../source/ref-changelog.md:265 +#: ../../source/ref-changelog.md:287 #, fuzzy msgid "" "**Improve** `RecordSet` " @@ -18074,7 +18188,7 @@ msgstr "" "[#1286](https://github.com/adap/flower/pull/1286), " "[#1282](https://github.com/adap/flower/pull/1282))" -#: ../../source/ref-changelog.md:267 +#: ../../source/ref-changelog.md:289 msgid "" "`RecordSet` is the core object to exchange model parameters, " "configuration values and metrics between `ClientApp` and `ServerApp`. " @@ -18082,7 +18196,7 @@ msgid "" "related `*Record` types." msgstr "" -#: ../../source/ref-changelog.md:269 +#: ../../source/ref-changelog.md:291 #, fuzzy msgid "" "**Update documentation** " @@ -18113,14 +18227,14 @@ msgstr "" "[#1305](https://github.com/adap/flower/pull/1305), " "[#1307](https://github.com/adap/flower/pull/1307))" -#: ../../source/ref-changelog.md:271 +#: ../../source/ref-changelog.md:293 msgid "" "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." msgstr "" -#: ../../source/ref-changelog.md:273 +#: ../../source/ref-changelog.md:295 msgid "" "**Migrate code example to use new Flower APIs** " "([#3758](https://github.com/adap/flower/pull/3758), " @@ -18146,11 +18260,11 @@ msgid "" "[#3313](https://github.com/adap/flower/pull/3313))" msgstr "" -#: ../../source/ref-changelog.md:275 +#: ../../source/ref-changelog.md:297 msgid "Many code examples have been migrated to use new Flower APIs." msgstr "" -#: ../../source/ref-changelog.md:277 +#: ../../source/ref-changelog.md:299 msgid "" "**Update Flower framework, framework internals and quality " "infrastructure** ([#4018](https://github.com/adap/flower/pull/4018), " @@ -18192,7 +18306,7 @@ msgid "" "[#4038](https://github.com/adap/flower/pull/4038))" msgstr "" -#: ../../source/ref-changelog.md:283 +#: ../../source/ref-changelog.md:305 #, fuzzy msgid "" "**Deprecate accessing `Context` via `Client.context`** " @@ -18201,7 +18315,7 @@ msgstr "" "**Supprimer les installations supplémentaires no-op dépréciées** " "([#973](https://github.com/adap/flower/pull/973))" -#: ../../source/ref-changelog.md:285 +#: ../../source/ref-changelog.md:307 msgid "" "Now that both `client_fn` and `server_fn` receive a `Context` object, " "accessing `Context` via `Client.context` is deprecated. `Client.context` " @@ -18210,7 +18324,7 @@ msgid "" " instance in `client_fn`:" msgstr "" -#: ../../source/ref-changelog.md:294 +#: ../../source/ref-changelog.md:316 #, fuzzy msgid "" "**Update CLIs to accept an app directory instead of** `ClientApp` **and**" @@ -18223,7 +18337,7 @@ msgstr "" "[#1544](https://github.com/adap/flower/pull/1544), " "[#1584](https://github.com/adap/flower/pull/1584))" -#: ../../source/ref-changelog.md:296 +#: ../../source/ref-changelog.md:318 msgid "" "The CLI commands `flower-supernode` and `flower-server-app` now accept an" " app directory as argument (instead of references to a `ClientApp` or " @@ -18233,7 +18347,7 @@ msgid "" "`flwr new`." msgstr "" -#: ../../source/ref-changelog.md:298 +#: ../../source/ref-changelog.md:320 #, fuzzy msgid "" "**Disable** `flower-client-app` **CLI command** " @@ -18242,11 +18356,11 @@ msgstr "" "**Introduire une nouvelle ligne de base pour les fleurs : FedAvg " "FEMNIST** ([#1655](https://github.com/adap/flower/pull/1655))" -#: ../../source/ref-changelog.md:300 +#: ../../source/ref-changelog.md:322 msgid "`flower-client-app` has been disabled. Use `flower-supernode` instead." msgstr "" -#: ../../source/ref-changelog.md:302 +#: ../../source/ref-changelog.md:324 #, fuzzy msgid "" "**Use spaces instead of commas for separating config args** " @@ -18255,17 +18369,17 @@ msgstr "" "**Métriques personnalisées pour le serveur et les stratégies** " "([#717](https://github.com/adap/flower/pull/717))" -#: ../../source/ref-changelog.md:304 +#: ../../source/ref-changelog.md:326 msgid "" "When passing configs (run config, node config) to Flower, you now need to" " separate key-value pairs using spaces instead of commas. For example:" msgstr "" -#: ../../source/ref-changelog.md:310 +#: ../../source/ref-changelog.md:332 msgid "Previously, you could pass configs using commas, like this:" msgstr "" -#: ../../source/ref-changelog.md:316 +#: ../../source/ref-changelog.md:338 #, fuzzy msgid "" "**Remove** `flwr example` **CLI command** " @@ -18274,18 +18388,18 @@ msgstr "" "**Supprimez KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:318 +#: ../../source/ref-changelog.md:340 msgid "" "The experimental `flwr example` CLI command has been removed. Use `flwr " "new` to generate a project and then run it using `flwr run`." msgstr "" -#: ../../source/ref-changelog.md:320 +#: ../../source/ref-changelog.md:342 #, fuzzy msgid "v1.10.0 (2024-07-24)" msgstr "v1.0.0 (2022-07-28)" -#: ../../source/ref-changelog.md:326 +#: ../../source/ref-changelog.md:348 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " "Beutel`, `Daniel Nata Nugraha`, `Danny`, `Gustavo Bertoli`, `Heng Pan`, " @@ -18294,7 +18408,7 @@ msgid "" "---TOKEN_v1.10.0-->" msgstr "" -#: ../../source/ref-changelog.md:330 +#: ../../source/ref-changelog.md:352 #, fuzzy msgid "" "**Introduce** `flwr run` **(beta)** " @@ -18315,7 +18429,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475))" -#: ../../source/ref-changelog.md:332 +#: ../../source/ref-changelog.md:354 msgid "" "Flower 1.10 ships the first beta release of the new `flwr run` command. " "`flwr run` can run different projects using `flwr run path/to/project`, " @@ -18328,7 +18442,7 @@ msgid "" "`flwr new` to generate a project and then run it using `flwr run`." msgstr "" -#: ../../source/ref-changelog.md:334 +#: ../../source/ref-changelog.md:356 #, fuzzy msgid "" "**Introduce run config** " @@ -18357,7 +18471,7 @@ msgstr "" "[#1770](https://github.com/adap/flower/pull/1770), " "[#1733](https://github.com/adap/flower/pull/1733))" -#: ../../source/ref-changelog.md:336 +#: ../../source/ref-changelog.md:358 msgid "" "The new run config feature allows you to run your Flower project in " "different configurations without having to change a single line of code. " @@ -18370,7 +18484,7 @@ msgid "" "new project using `flwr new` to see run config in action." msgstr "" -#: ../../source/ref-changelog.md:338 +#: ../../source/ref-changelog.md:360 #, fuzzy msgid "" "**Generalize** `client_fn` **signature to** `client_fn(context: Context) " @@ -18385,7 +18499,7 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310))" -#: ../../source/ref-changelog.md:340 +#: ../../source/ref-changelog.md:362 msgid "" "The `client_fn` signature has been generalized to `client_fn(context: " "Context) -> Client`. It now receives a `Context` object instead of the " @@ -18395,14 +18509,14 @@ msgid "" "system." msgstr "" -#: ../../source/ref-changelog.md:342 +#: ../../source/ref-changelog.md:364 msgid "" "The previous signature `client_fn(cid: str)` is now deprecated and " "support for it will be removed in a future release. Use " "`client_fn(context: Context) -> Client` everywhere." msgstr "" -#: ../../source/ref-changelog.md:344 +#: ../../source/ref-changelog.md:366 #, fuzzy msgid "" "**Introduce new** `server_fn(context)` " @@ -18415,7 +18529,7 @@ msgstr "" "[#1544](https://github.com/adap/flower/pull/1544), " "[#1584](https://github.com/adap/flower/pull/1584))" -#: ../../source/ref-changelog.md:346 +#: ../../source/ref-changelog.md:368 msgid "" "In addition to the new `client_fn(context:Context)`, a new " "`server_fn(context: Context) -> ServerAppComponents` can now be passed to" @@ -18424,7 +18538,7 @@ msgid "" "build a configurable `ServerApp`." msgstr "" -#: ../../source/ref-changelog.md:348 +#: ../../source/ref-changelog.md:370 #, fuzzy msgid "" "**Relaunch all** `flwr new` **templates** " @@ -18445,7 +18559,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:350 +#: ../../source/ref-changelog.md:372 msgid "" "All `flwr new` templates have been significantly updated to showcase new " "Flower features and best practices. This includes using `flwr run` and " @@ -18454,7 +18568,7 @@ msgid "" "run` it." msgstr "" -#: ../../source/ref-changelog.md:352 +#: ../../source/ref-changelog.md:374 #, fuzzy msgid "" "**Introduce** `flower-supernode` **(preview)** " @@ -18463,7 +18577,7 @@ msgstr "" "**Introduire une nouvelle ligne de base pour les fleurs : FedAvg " "FEMNIST** ([#1655](https://github.com/adap/flower/pull/1655))" -#: ../../source/ref-changelog.md:354 +#: ../../source/ref-changelog.md:376 msgid "" "The new `flower-supernode` CLI is here to replace `flower-client-app`. " "`flower-supernode` brings full multi-app support to the Flower client-" @@ -18472,7 +18586,7 @@ msgid "" "`client_fn(context: Context)` signature)." msgstr "" -#: ../../source/ref-changelog.md:356 +#: ../../source/ref-changelog.md:378 #, fuzzy msgid "" "**Introduce node config** " @@ -18487,7 +18601,7 @@ msgstr "" "[#1681](https://github.com/adap/flower/pull/1681), " "[#1679](https://github.com/adap/flower/pull/1679))" -#: ../../source/ref-changelog.md:358 +#: ../../source/ref-changelog.md:380 msgid "" "A new node config feature allows you to pass a static configuration to " "the SuperNode. This configuration is read-only and available to every " @@ -18495,7 +18609,7 @@ msgid "" "config via `Context` (`context.node_config`)." msgstr "" -#: ../../source/ref-changelog.md:360 +#: ../../source/ref-changelog.md:382 msgid "" "**Introduce SuperExec (experimental)** " "([#3605](https://github.com/adap/flower/pull/3605), " @@ -18516,14 +18630,14 @@ msgid "" "[#3629](https://github.com/adap/flower/pull/3629))" msgstr "" -#: ../../source/ref-changelog.md:362 +#: ../../source/ref-changelog.md:384 msgid "" "This is the first experimental release of Flower SuperExec, a new service" " that executes your runs. It's not ready for production deployment just " "yet, but don't hesitate to give it a try if you're interested." msgstr "" -#: ../../source/ref-changelog.md:364 +#: ../../source/ref-changelog.md:386 #, fuzzy msgid "" "**Add new federated learning with tabular data example** " @@ -18532,13 +18646,13 @@ msgstr "" "**Ajouter un nouvel exemple d'apprentissage fédéré utilisant fastai et " "Flower** ([#1598](https://github.com/adap/flower/pull/1598))" -#: ../../source/ref-changelog.md:366 +#: ../../source/ref-changelog.md:388 msgid "" "A new code example exemplifies a federated learning setup using the " "Flower framework on the Adult Census Income tabular dataset." msgstr "" -#: ../../source/ref-changelog.md:368 +#: ../../source/ref-changelog.md:390 #, fuzzy msgid "" "**Create generic adapter layer (preview)** " @@ -18551,7 +18665,7 @@ msgstr "" "[#1286](https://github.com/adap/flower/pull/1286), " "[#1282](https://github.com/adap/flower/pull/1282))" -#: ../../source/ref-changelog.md:370 +#: ../../source/ref-changelog.md:392 msgid "" "A new generic gRPC adapter layer allows 3rd-party frameworks to integrate" " with Flower in a transparent way. This makes Flower more modular and " @@ -18559,7 +18673,7 @@ msgid "" "platforms." msgstr "" -#: ../../source/ref-changelog.md:372 +#: ../../source/ref-changelog.md:394 #, fuzzy msgid "" "**Refactor Flower Simulation Engine** " @@ -18582,7 +18696,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475))" -#: ../../source/ref-changelog.md:374 +#: ../../source/ref-changelog.md:396 msgid "" "The Simulation Engine was significantly refactored. This results in " "faster and more stable simulations. It is also the foundation for " @@ -18590,7 +18704,7 @@ msgid "" "configurability in federated learning simulations." msgstr "" -#: ../../source/ref-changelog.md:376 +#: ../../source/ref-changelog.md:398 #, fuzzy msgid "" "**Optimize Docker containers** " @@ -18599,13 +18713,13 @@ msgstr "" "Nouveau thème de documentation " "([#551](https://github.com/adap/flower/pull/551))" -#: ../../source/ref-changelog.md:378 +#: ../../source/ref-changelog.md:400 msgid "" "Flower Docker containers were optimized and updated to use that latest " "Flower framework features." msgstr "" -#: ../../source/ref-changelog.md:380 +#: ../../source/ref-changelog.md:402 #, fuzzy msgid "" "**Improve logging** ([#3776](https://github.com/adap/flower/pull/3776), " @@ -18615,13 +18729,13 @@ msgstr "" "([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" -#: ../../source/ref-changelog.md:382 +#: ../../source/ref-changelog.md:404 msgid "" "Improved logging aims to be more concise and helpful to show you the " "details you actually care about." msgstr "" -#: ../../source/ref-changelog.md:384 +#: ../../source/ref-changelog.md:406 #, fuzzy msgid "" "**Refactor framework internals** " @@ -18642,7 +18756,12 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475))" -#: ../../source/ref-changelog.md:390 +#: ../../source/ref-changelog.md:410 +#, fuzzy +msgid "Documentation improvements" +msgstr "Améliorations facultatives" + +#: ../../source/ref-changelog.md:412 #, fuzzy msgid "" "**Add 🇰🇷 Korean translations** " @@ -18651,7 +18770,7 @@ msgstr "" "**Ouvrir dans le bouton Colab** " "([#1389](https://github.com/adap/flower/pull/1389))" -#: ../../source/ref-changelog.md:392 +#: ../../source/ref-changelog.md:414 #, fuzzy msgid "" "**Update translations** " @@ -18672,7 +18791,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475))" -#: ../../source/ref-changelog.md:394 +#: ../../source/ref-changelog.md:416 #, fuzzy msgid "" "**Update documentation** " @@ -18695,18 +18814,18 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:396 +#: ../../source/ref-changelog.md:418 msgid "" "Updated documentation includes new install instructions for different " "shells, a new Flower Code Examples documentation landing page, new `flwr`" " CLI docs and an updated federated XGBoost code example." msgstr "" -#: ../../source/ref-changelog.md:400 +#: ../../source/ref-changelog.md:422 msgid "**Deprecate** `client_fn(cid: str)`" msgstr "" -#: ../../source/ref-changelog.md:402 +#: ../../source/ref-changelog.md:424 msgid "" "`client_fn` used to have a signature `client_fn(cid: str) -> Client`. " "This signature is now deprecated. Use the new signature " @@ -18719,13 +18838,13 @@ msgid "" " the dataset on each simulated or deployed SuperNode." msgstr "" -#: ../../source/ref-changelog.md:404 +#: ../../source/ref-changelog.md:426 msgid "" "**Deprecate passing** `Server/ServerConfig/Strategy/ClientManager` **to**" " `ServerApp` **directly**" msgstr "" -#: ../../source/ref-changelog.md:406 +#: ../../source/ref-changelog.md:428 msgid "" "Creating `ServerApp` using `ServerApp(config=config, strategy=strategy)` " "is now deprecated. Instead of passing " @@ -18738,7 +18857,7 @@ msgid "" " the `run_config`)." msgstr "" -#: ../../source/ref-changelog.md:410 +#: ../../source/ref-changelog.md:432 #, fuzzy msgid "" "**Remove support for `client_ids` in `start_simulation`** " @@ -18747,7 +18866,7 @@ msgstr "" "**Améliorer la prise en charge des GPU dans les simulations** " "([#1555](https://github.com/adap/flower/pull/1555))" -#: ../../source/ref-changelog.md:412 +#: ../../source/ref-changelog.md:434 msgid "" "The (rarely used) feature that allowed passing custom `client_ids` to the" " `start_simulation` function was removed. This removal is part of a " @@ -18755,7 +18874,7 @@ msgid "" "internals work in simulation and deployment." msgstr "" -#: ../../source/ref-changelog.md:414 +#: ../../source/ref-changelog.md:436 #, fuzzy msgid "" "**Remove `flower-driver-api` and `flower-fleet-api`** " @@ -18764,19 +18883,19 @@ msgstr "" "**Supprimez KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:416 +#: ../../source/ref-changelog.md:438 msgid "" "The two deprecated CLI commands `flower-driver-api` and `flower-fleet-" "api` were removed in an effort to streamline the SuperLink developer " "experience. Use `flower-superlink` instead." msgstr "" -#: ../../source/ref-changelog.md:418 +#: ../../source/ref-changelog.md:440 #, fuzzy msgid "v1.9.0 (2024-06-10)" msgstr "v1.3.0 (2023-02-06)" -#: ../../source/ref-changelog.md:424 +#: ../../source/ref-changelog.md:446 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " "Beutel`, `Daniel Nata Nugraha`, `Heng Pan`, `Javier`, `Mahdi Beitollahi`," @@ -18784,7 +18903,7 @@ msgid "" "---TOKEN_v1.9.0-->" msgstr "" -#: ../../source/ref-changelog.md:428 +#: ../../source/ref-changelog.md:450 #, fuzzy msgid "" "**Introduce built-in authentication (preview)** " @@ -18814,7 +18933,7 @@ msgstr "" "[#1519](https://github.com/adap/flower/pull/1519), " "[#1515](https://github.com/adap/flower/pull/1515))" -#: ../../source/ref-changelog.md:430 +#: ../../source/ref-changelog.md:452 msgid "" "Flower 1.9 introduces the first build-in version of client node " "authentication. In previous releases, users often wrote glue code to " @@ -18826,14 +18945,14 @@ msgid "" "authentication) help you to get started." msgstr "" -#: ../../source/ref-changelog.md:432 +#: ../../source/ref-changelog.md:454 msgid "" "This is the first preview release of the Flower-native authentication " "system. Many additional features are on the roadmap for upcoming Flower " "releases - stay tuned." msgstr "" -#: ../../source/ref-changelog.md:434 +#: ../../source/ref-changelog.md:456 #, fuzzy msgid "" "**Introduce end-to-end Docker support** " @@ -18859,7 +18978,7 @@ msgstr "" "[#1770](https://github.com/adap/flower/pull/1770), " "[#1733](https://github.com/adap/flower/pull/1733))" -#: ../../source/ref-changelog.md:436 +#: ../../source/ref-changelog.md:458 msgid "" "Full Flower Next Docker support is here! With the release of Flower 1.9, " "Flower provides stable Docker images for the Flower SuperLink, the Flower" @@ -18869,7 +18988,7 @@ msgid "" "docker.html) to get stated." msgstr "" -#: ../../source/ref-changelog.md:438 +#: ../../source/ref-changelog.md:460 #, fuzzy msgid "" "**Re-architect Flower Next simulation engine** " @@ -18891,7 +19010,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:440 +#: ../../source/ref-changelog.md:462 msgid "" "Flower Next simulations now use a new in-memory `Driver` that improves " "the reliability of simulations, especially in notebook environments. This" @@ -18899,7 +19018,7 @@ msgid "" "simulation architecture." msgstr "" -#: ../../source/ref-changelog.md:442 +#: ../../source/ref-changelog.md:464 #, fuzzy msgid "" "**Upgrade simulation engine** " @@ -18920,14 +19039,14 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:444 +#: ../../source/ref-changelog.md:466 msgid "" "The Flower Next simulation engine comes with improved and configurable " "logging. The Ray-based simulation backend in Flower 1.9 was updated to " "use Ray 2.10." msgstr "" -#: ../../source/ref-changelog.md:446 +#: ../../source/ref-changelog.md:468 #, fuzzy msgid "" "**Introduce FedPFT baseline** " @@ -18936,7 +19055,7 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:448 +#: ../../source/ref-changelog.md:470 msgid "" "FedPFT allows you to perform one-shot Federated Learning by leveraging " "widely available foundational models, dramatically reducing communication" @@ -18947,7 +19066,7 @@ msgid "" "([arxiv](https://arxiv.org/abs/2402.01862))" msgstr "" -#: ../../source/ref-changelog.md:450 +#: ../../source/ref-changelog.md:472 #, fuzzy msgid "" "**Launch additional** `flwr new` **templates for Apple MLX, Hugging Face " @@ -18965,7 +19084,7 @@ msgstr "" "[#1065](https://github.com/adap/flower/pull/1065), " "[#1090](https://github.com/adap/flower/pull/1090))" -#: ../../source/ref-changelog.md:452 +#: ../../source/ref-changelog.md:474 msgid "" "The `flwr` CLI's `flwr new` command is starting to become everone's " "favorite way of creating new Flower projects. This release introduces " @@ -18974,7 +19093,7 @@ msgid "" "also received updates." msgstr "" -#: ../../source/ref-changelog.md:454 +#: ../../source/ref-changelog.md:476 #, fuzzy msgid "" "**Refine** `RecordSet` **API** " @@ -18994,14 +19113,14 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:456 +#: ../../source/ref-changelog.md:478 msgid "" "`RecordSet` is part of the Flower Next low-level API preview release. In " "Flower 1.9, `RecordSet` received a number of usability improvements that " "make it easier to build `RecordSet`-based `ServerApp`s and `ClientApp`s." msgstr "" -#: ../../source/ref-changelog.md:458 +#: ../../source/ref-changelog.md:480 #, fuzzy msgid "" "**Beautify logging** ([#3379](https://github.com/adap/flower/pull/3379), " @@ -19016,13 +19135,13 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310))" -#: ../../source/ref-changelog.md:460 +#: ../../source/ref-changelog.md:482 msgid "" "Logs received a substantial update. Not only are logs now much nicer to " "look at, but they are also more configurable." msgstr "" -#: ../../source/ref-changelog.md:462 +#: ../../source/ref-changelog.md:484 #, fuzzy msgid "" "**Improve reliability** " @@ -19042,13 +19161,13 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475))" -#: ../../source/ref-changelog.md:464 +#: ../../source/ref-changelog.md:486 msgid "" "Flower 1.9 includes reliability improvements across many parts of the " "system. One example is a much improved SuperNode shutdown procedure." msgstr "" -#: ../../source/ref-changelog.md:466 +#: ../../source/ref-changelog.md:488 #, fuzzy msgid "" "**Update Swift and C++ SDKs** " @@ -19059,14 +19178,14 @@ msgstr "" "([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" -#: ../../source/ref-changelog.md:468 +#: ../../source/ref-changelog.md:490 msgid "" "In the C++ SDK, communication-related code is now separate from main " "client logic. A new abstract class `Communicator` has been introduced " "alongside a gRPC implementation of it." msgstr "" -#: ../../source/ref-changelog.md:470 +#: ../../source/ref-changelog.md:492 msgid "" "**Improve testing, tooling and CI/CD infrastructure** " "([#3294](https://github.com/adap/flower/pull/3294), " @@ -19100,13 +19219,13 @@ msgid "" "[#3271](https://github.com/adap/flower/pull/3271))" msgstr "" -#: ../../source/ref-changelog.md:472 +#: ../../source/ref-changelog.md:494 msgid "" "As always, the Flower tooling, testing, and CI/CD infrastructure has " "received many updates." msgstr "" -#: ../../source/ref-changelog.md:474 +#: ../../source/ref-changelog.md:496 msgid "" "**Improve documentation** " "([#3530](https://github.com/adap/flower/pull/3530), " @@ -19131,32 +19250,32 @@ msgid "" "[#3274](https://github.com/adap/flower/pull/3274))" msgstr "" -#: ../../source/ref-changelog.md:476 +#: ../../source/ref-changelog.md:498 msgid "" "As always, the Flower documentation has received many updates. Notable " "new pages include:" msgstr "" -#: ../../source/ref-changelog.md:478 +#: ../../source/ref-changelog.md:500 msgid "" "[How-to upgrate to Flower Next (Flower Next migration " "guide)](https://flower.ai/docs/framework/how-to-upgrade-to-flower-" "next.html)" msgstr "" -#: ../../source/ref-changelog.md:480 +#: ../../source/ref-changelog.md:502 msgid "" "[How-to run Flower using Docker](https://flower.ai/docs/framework/how-to-" "run-flower-using-docker.html)" msgstr "" -#: ../../source/ref-changelog.md:482 +#: ../../source/ref-changelog.md:504 msgid "" "[Flower Mods reference](https://flower.ai/docs/framework/ref-" "api/flwr.client.mod.html#module-flwr.client.mod)" msgstr "" -#: ../../source/ref-changelog.md:484 +#: ../../source/ref-changelog.md:506 #, fuzzy msgid "" "**General updates to Flower Examples** " @@ -19191,11 +19310,11 @@ msgstr "" "[#1305](https://github.com/adap/flower/pull/1305), " "[#1307](https://github.com/adap/flower/pull/1307))" -#: ../../source/ref-changelog.md:486 +#: ../../source/ref-changelog.md:508 msgid "As always, Flower code examples have received many updates." msgstr "" -#: ../../source/ref-changelog.md:488 +#: ../../source/ref-changelog.md:510 msgid "" "**General improvements** " "([#3532](https://github.com/adap/flower/pull/3532), " @@ -19234,19 +19353,19 @@ msgid "" "[#3261](https://github.com/adap/flower/pull/3261))" msgstr "" -#: ../../source/ref-changelog.md:492 +#: ../../source/ref-changelog.md:514 #, fuzzy msgid "**Deprecate Python 3.8 support**" msgstr "**Créer le PR**" -#: ../../source/ref-changelog.md:494 +#: ../../source/ref-changelog.md:516 msgid "" "Python 3.8 will stop receiving security fixes in [October " "2024](https://devguide.python.org/versions/). Support for Python 3.8 is " "now deprecated and will be removed in an upcoming release." msgstr "" -#: ../../source/ref-changelog.md:496 +#: ../../source/ref-changelog.md:518 #, fuzzy msgid "" "**Deprecate (experimental)** `flower-driver-api` **and** `flower-fleet-" @@ -19257,14 +19376,14 @@ msgstr "" "([#1258](https://github.com/adap/flower/pull/1258), " "[#1259](https://github.com/adap/flower/pull/1259))" -#: ../../source/ref-changelog.md:498 +#: ../../source/ref-changelog.md:520 msgid "" "Flower 1.9 deprecates the two (experimental) commands `flower-driver-api`" " and `flower-fleet-api`. Both commands will be removed in an upcoming " "release. Use `flower-superlink` instead." msgstr "" -#: ../../source/ref-changelog.md:500 +#: ../../source/ref-changelog.md:522 #, fuzzy msgid "" "**Deprecate** `--server` **in favor of** `--superlink` " @@ -19273,14 +19392,14 @@ msgstr "" "**Autoriser le passage d'une **instance `Server` à** `start_simulation` " "([#1281](https://github.com/adap/flower/pull/1281))" -#: ../../source/ref-changelog.md:502 +#: ../../source/ref-changelog.md:524 msgid "" "The commands `flower-server-app` and `flower-client-app` should use " "`--superlink` instead of the now deprecated `--server`. Support for " "`--server` will be removed in a future release." msgstr "" -#: ../../source/ref-changelog.md:506 +#: ../../source/ref-changelog.md:528 msgid "" "**Replace** `flower-superlink` **CLI option** `--certificates` **with** " "`--ssl-ca-certfile` **,** `--ssl-certfile` **and** `--ssl-keyfile` " @@ -19288,7 +19407,7 @@ msgid "" "[#3408](https://github.com/adap/flower/pull/3408))" msgstr "" -#: ../../source/ref-changelog.md:508 +#: ../../source/ref-changelog.md:530 msgid "" "SSL-related `flower-superlink` CLI arguments were restructured in an " "incompatible way. Instead of passing a single `--certificates` flag with " @@ -19298,7 +19417,7 @@ msgid "" "connections.html) documentation page for details." msgstr "" -#: ../../source/ref-changelog.md:510 +#: ../../source/ref-changelog.md:532 #, fuzzy msgid "" "**Remove SuperLink** `--vce` **option** " @@ -19307,14 +19426,14 @@ msgstr "" "**Documentation restructurée** " "([#1387](https://github.com/adap/flower/pull/1387))" -#: ../../source/ref-changelog.md:512 +#: ../../source/ref-changelog.md:534 msgid "" "Instead of separately starting a SuperLink and a `ServerApp` for " "simulation, simulations must now be started using the single `flower-" "simulation` command." msgstr "" -#: ../../source/ref-changelog.md:514 +#: ../../source/ref-changelog.md:536 #, fuzzy msgid "" "**Merge** `--grpc-rere` **and** `--rest` **SuperLink options** " @@ -19323,7 +19442,7 @@ msgstr "" "**Rename** `rnd` **to** `server_round` " "([#1321](https://github.com/adap/flower/pull/1321))" -#: ../../source/ref-changelog.md:516 +#: ../../source/ref-changelog.md:538 msgid "" "To simplify the usage of `flower-superlink`, previously separate sets of " "CLI options for gRPC and REST were merged into one unified set of " @@ -19332,12 +19451,12 @@ msgid "" "details." msgstr "" -#: ../../source/ref-changelog.md:518 +#: ../../source/ref-changelog.md:540 #, fuzzy msgid "v1.8.0 (2024-04-03)" msgstr "v1.3.0 (2023-02-06)" -#: ../../source/ref-changelog.md:524 +#: ../../source/ref-changelog.md:546 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Daniel J. Beutel`, `Daniel Nata " "Nugraha`, `Danny`, `Gustavo Bertoli`, `Heng Pan`, `Ikko Eltociear " @@ -19346,7 +19465,7 @@ msgid "" "`tabdar-khan` " msgstr "" -#: ../../source/ref-changelog.md:528 +#: ../../source/ref-changelog.md:550 msgid "" "**Introduce Flower Next high-level API (stable)** " "([#3002](https://github.com/adap/flower/pull/3002), " @@ -19376,7 +19495,7 @@ msgid "" "[#3197](https://github.com/adap/flower/pull/3197))" msgstr "" -#: ../../source/ref-changelog.md:530 +#: ../../source/ref-changelog.md:552 msgid "" "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. " @@ -19390,7 +19509,7 @@ msgid "" "projects that use `Strategy`, `NumPyClient` & co." msgstr "" -#: ../../source/ref-changelog.md:532 +#: ../../source/ref-changelog.md:554 #, fuzzy msgid "" "**Introduce Flower Next low-level API (preview)** " @@ -19403,7 +19522,7 @@ msgstr "" "[#1286](https://github.com/adap/flower/pull/1286), " "[#1282](https://github.com/adap/flower/pull/1282))" -#: ../../source/ref-changelog.md:534 +#: ../../source/ref-changelog.md:556 msgid "" "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 " @@ -19420,7 +19539,7 @@ msgid "" "custom SMPC protocols, to name just a few." msgstr "" -#: ../../source/ref-changelog.md:536 +#: ../../source/ref-changelog.md:558 #, fuzzy msgid "" "**Introduce Flower Mods (preview)** " @@ -19433,7 +19552,7 @@ msgstr "" "[#1544](https://github.com/adap/flower/pull/1544), " "[#1584](https://github.com/adap/flower/pull/1584))" -#: ../../source/ref-changelog.md:538 +#: ../../source/ref-changelog.md:560 msgid "" "Flower Modifiers (we call them Mods) can intercept messages and analyze, " "edit or handle them directly. Mods can be used to develop pluggable " @@ -19445,7 +19564,7 @@ msgid "" "can already use it to experiment with arbirtrary SMPC protocols." msgstr "" -#: ../../source/ref-changelog.md:540 +#: ../../source/ref-changelog.md:562 #, fuzzy msgid "" "**Fine-tune LLMs with LLM FlowerTune** " @@ -19464,7 +19583,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475))" -#: ../../source/ref-changelog.md:542 +#: ../../source/ref-changelog.md:564 msgid "" "We are introducing LLM FlowerTune, an introductory example that " "demonstrates federated LLM fine-tuning of pre-trained Llama2 models on " @@ -19474,7 +19593,7 @@ msgid "" "-llm-flowertune-federated-llm-finetuning-with-flower/) for more details." msgstr "" -#: ../../source/ref-changelog.md:544 +#: ../../source/ref-changelog.md:566 #, fuzzy msgid "" "**Introduce built-in Differential Privacy (preview)** " @@ -19495,7 +19614,7 @@ msgstr "" "[#993](https://github.com/adap/flower/pull/993), " "[#994](https://github.com/adap/flower/pull/994))" -#: ../../source/ref-changelog.md:546 +#: ../../source/ref-changelog.md:568 msgid "" "Built-in Differential Privacy is here! Flower supports both central and " "local differential privacy (DP). Central DP can be configured with either" @@ -19508,7 +19627,7 @@ msgid "" "/how-to-use-differential-privacy.html) in Flower." msgstr "" -#: ../../source/ref-changelog.md:548 +#: ../../source/ref-changelog.md:570 #, fuzzy msgid "" "**Introduce built-in Secure Aggregation (preview)** " @@ -19521,7 +19640,7 @@ msgstr "" "[#1544](https://github.com/adap/flower/pull/1544), " "[#1584](https://github.com/adap/flower/pull/1584))" -#: ../../source/ref-changelog.md:550 +#: ../../source/ref-changelog.md:572 msgid "" "Built-in Secure Aggregation is here! Flower now supports different secure" " aggregation protocols out-of-the-box. The best part? You can add secure " @@ -19534,7 +19653,7 @@ msgid "" "in the same project." msgstr "" -#: ../../source/ref-changelog.md:552 +#: ../../source/ref-changelog.md:574 #, fuzzy msgid "" "**Introduce** `flwr` **CLI (preview)** " @@ -19557,13 +19676,13 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:554 +#: ../../source/ref-changelog.md:576 msgid "" "A new `flwr` CLI command allows creating new Flower projects (`flwr new`)" " and then running them using the Simulation Engine (`flwr run`)." msgstr "" -#: ../../source/ref-changelog.md:556 +#: ../../source/ref-changelog.md:578 #, fuzzy msgid "" "**Introduce Flower Next Simulation Engine** " @@ -19587,14 +19706,14 @@ msgstr "" "[#1770](https://github.com/adap/flower/pull/1770), " "[#1733](https://github.com/adap/flower/pull/1733))" -#: ../../source/ref-changelog.md:558 +#: ../../source/ref-changelog.md:580 msgid "" "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`." msgstr "" -#: ../../source/ref-changelog.md:560 +#: ../../source/ref-changelog.md:582 #, fuzzy msgid "" "**Handle SuperNode connection errors** " @@ -19603,7 +19722,7 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:562 +#: ../../source/ref-changelog.md:584 msgid "" "A SuperNode will now try to reconnect indefinitely to the SuperLink in " "case of connection errors. The arguments `--max-retries` and `--max-wait-" @@ -19614,7 +19733,7 @@ msgid "" "reconnect to the SuperLink." msgstr "" -#: ../../source/ref-changelog.md:564 +#: ../../source/ref-changelog.md:586 #, fuzzy msgid "" "**General updates to Flower Baselines** " @@ -19629,13 +19748,13 @@ msgstr "" "[#1681](https://github.com/adap/flower/pull/1681), " "[#1679](https://github.com/adap/flower/pull/1679))" -#: ../../source/ref-changelog.md:566 +#: ../../source/ref-changelog.md:588 msgid "" "There's a new [FedStar](https://flower.ai/docs/baselines/fedstar.html) " "baseline. Several other baselined have been updated as well." msgstr "" -#: ../../source/ref-changelog.md:568 +#: ../../source/ref-changelog.md:590 msgid "" "**Improve documentation and translations** " "([#3050](https://github.com/adap/flower/pull/3050), " @@ -19656,14 +19775,14 @@ msgid "" "[#2989](https://github.com/adap/flower/pull/2989))" msgstr "" -#: ../../source/ref-changelog.md:570 +#: ../../source/ref-changelog.md:592 msgid "" "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!" msgstr "" -#: ../../source/ref-changelog.md:572 +#: ../../source/ref-changelog.md:594 #, fuzzy msgid "" "**General updates to Flower Examples** " @@ -19690,7 +19809,7 @@ msgstr "" "[#1519](https://github.com/adap/flower/pull/1519), " "[#1515](https://github.com/adap/flower/pull/1515))" -#: ../../source/ref-changelog.md:574 +#: ../../source/ref-changelog.md:596 msgid "" "Two new examples show federated training of a Vision Transformer (ViT) " "and federated learning in a medical context using the popular MONAI " @@ -19699,7 +19818,7 @@ msgid "" "received considerable updates as well." msgstr "" -#: ../../source/ref-changelog.md:576 +#: ../../source/ref-changelog.md:598 msgid "" "**General improvements** " "([#3171](https://github.com/adap/flower/pull/3171), " @@ -19777,12 +19896,12 @@ msgid "" "[#2954](https://github.com/adap/flower/pull/2954))" msgstr "" -#: ../../source/ref-changelog.md:582 +#: ../../source/ref-changelog.md:604 #, fuzzy msgid "v1.7.0 (2024-02-05)" msgstr "v1.3.0 (2023-02-06)" -#: ../../source/ref-changelog.md:588 +#: ../../source/ref-changelog.md:610 msgid "" "`Aasheesh Singh`, `Adam Narozniak`, `Aml Hassan Esmil`, `Charles " "Beauville`, `Daniel J. Beutel`, `Daniel Nata Nugraha`, `Edoardo " @@ -19792,7 +19911,7 @@ msgid "" "Shaaban`, `Yan Gao`, `Yasar Abbas` " msgstr "" -#: ../../source/ref-changelog.md:592 +#: ../../source/ref-changelog.md:614 #, fuzzy msgid "" "**Introduce stateful clients (experimental)** " @@ -19809,7 +19928,7 @@ msgstr "" "[#993](https://github.com/adap/flower/pull/993), " "[#994](https://github.com/adap/flower/pull/994))" -#: ../../source/ref-changelog.md:594 +#: ../../source/ref-changelog.md:616 msgid "" "Subclasses of `Client` and `NumPyClient` can now store local state that " "remains on the client. Let's start with the highlight first: this new " @@ -19822,7 +19941,7 @@ msgid "" "unified way across simulation and deployment." msgstr "" -#: ../../source/ref-changelog.md:596 +#: ../../source/ref-changelog.md:618 #, fuzzy msgid "" "**Improve performance** " @@ -19831,7 +19950,7 @@ msgstr "" "**Supprimer les stratégies expérimentales** " "([#1280](https://github.com/adap/flower/pull/1280))" -#: ../../source/ref-changelog.md:598 +#: ../../source/ref-changelog.md:620 msgid "" "Flower is faster than ever. All `FedAvg`-derived strategies now use in-" "place aggregation to reduce memory consumption. The Flower client " @@ -19840,7 +19959,7 @@ msgid "" "training time is short." msgstr "" -#: ../../source/ref-changelog.md:600 +#: ../../source/ref-changelog.md:622 #, fuzzy msgid "" "**Support Federated Learning with Apple MLX and Flower** " @@ -19849,14 +19968,14 @@ msgstr "" "**Ajouter un nouvel exemple d'apprentissage fédéré utilisant fastai et " "Flower** ([#1598](https://github.com/adap/flower/pull/1598))" -#: ../../source/ref-changelog.md:602 +#: ../../source/ref-changelog.md:624 msgid "" "Flower has official support for federated learning using [Apple " "MLX](https://ml-explore.github.io/mlx) via the new `quickstart-mlx` code " "example." msgstr "" -#: ../../source/ref-changelog.md:604 +#: ../../source/ref-changelog.md:626 #, fuzzy msgid "" "**Introduce new XGBoost cyclic strategy** " @@ -19867,7 +19986,7 @@ msgstr "" "([#1621](https://github.com/adap/flower/pull/1621), " "[#1764](https://github.com/adap/flower/pull/1764))" -#: ../../source/ref-changelog.md:606 +#: ../../source/ref-changelog.md:628 msgid "" "A new strategy called `FedXgbCyclic` supports a client-by-client style of" " training (often called cyclic). The `xgboost-comprehensive` code example" @@ -19876,7 +19995,7 @@ msgid "" "offers best-in-class XGBoost support." msgstr "" -#: ../../source/ref-changelog.md:608 +#: ../../source/ref-changelog.md:630 #, fuzzy msgid "" "**Support Python 3.11** " @@ -19885,13 +20004,13 @@ msgstr "" "**Support Python 3.10** " "([#1320](https://github.com/adap/flower/pull/1320))" -#: ../../source/ref-changelog.md:610 +#: ../../source/ref-changelog.md:632 msgid "" "Framework tests now run on Python 3.8, 3.9, 3.10, and 3.11. This will " "ensure better support for users using more recent Python versions." msgstr "" -#: ../../source/ref-changelog.md:612 +#: ../../source/ref-changelog.md:634 #, fuzzy msgid "" "**Update gRPC and ProtoBuf dependencies** " @@ -19900,13 +20019,13 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:614 +#: ../../source/ref-changelog.md:636 msgid "" "The `grpcio` and `protobuf` dependencies were updated to their latest " "versions for improved security and performance." msgstr "" -#: ../../source/ref-changelog.md:616 +#: ../../source/ref-changelog.md:638 #, fuzzy msgid "" "**Introduce Docker image for Flower server** " @@ -19927,7 +20046,7 @@ msgstr "" "[#993](https://github.com/adap/flower/pull/993), " "[#994](https://github.com/adap/flower/pull/994))" -#: ../../source/ref-changelog.md:618 +#: ../../source/ref-changelog.md:640 msgid "" "The Flower server can now be run using an official Docker image. A new " "how-to guide explains [how to run Flower using " @@ -19935,7 +20054,7 @@ msgid "" "docker.html). An official Flower client Docker image will follow." msgstr "" -#: ../../source/ref-changelog.md:620 +#: ../../source/ref-changelog.md:642 #, fuzzy msgid "" "**Introduce** `flower-via-docker-compose` **example** " @@ -19944,7 +20063,7 @@ msgstr "" "**Introduire une nouvelle ligne de base pour les fleurs : FedAvg " "FEMNIST** ([#1655](https://github.com/adap/flower/pull/1655))" -#: ../../source/ref-changelog.md:622 +#: ../../source/ref-changelog.md:644 #, fuzzy msgid "" "**Introduce** `quickstart-sklearn-tabular` **example** " @@ -19953,7 +20072,7 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:624 +#: ../../source/ref-changelog.md:646 #, fuzzy msgid "" "**Introduce** `custom-metrics` **example** " @@ -19962,7 +20081,7 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:626 +#: ../../source/ref-changelog.md:648 #, fuzzy msgid "" "**Update code examples to use Flower Datasets** " @@ -19977,13 +20096,13 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310))" -#: ../../source/ref-changelog.md:628 +#: ../../source/ref-changelog.md:650 msgid "" "Several code examples were updated to use [Flower " "Datasets](https://flower.ai/docs/datasets/)." msgstr "" -#: ../../source/ref-changelog.md:630 +#: ../../source/ref-changelog.md:652 #, fuzzy msgid "" "**General updates to Flower Examples** " @@ -20009,16 +20128,16 @@ msgstr "" "[#1662](https://github.com/adap/flower/pull/1662), " "[#1794](https://github.com/adap/flower/pull/1794))" -#: ../../source/ref-changelog.md:632 +#: ../../source/ref-changelog.md:654 msgid "Many Flower code examples received substantial updates." msgstr "" -#: ../../source/ref-changelog.md:634 ../../source/ref-changelog.md:727 +#: ../../source/ref-changelog.md:656 ../../source/ref-changelog.md:749 #, fuzzy msgid "**Update Flower Baselines**" msgstr "Demande pour une nouvelle Flower Baseline" -#: ../../source/ref-changelog.md:636 +#: ../../source/ref-changelog.md:658 #, fuzzy msgid "" "HFedXGBoost ([#2226](https://github.com/adap/flower/pull/2226), " @@ -20028,38 +20147,38 @@ msgstr "" "([#906](https://github.com/adap/flower/pull/906), " "[#1143](https://github.com/adap/flower/pull/1143))" -#: ../../source/ref-changelog.md:637 +#: ../../source/ref-changelog.md:659 #, fuzzy msgid "FedVSSL ([#2412](https://github.com/adap/flower/pull/2412))" msgstr "" "Amélioration de la documentation sur le serveur gRPC " "([#841](https://github.com/adap/flower/pull/841))" -#: ../../source/ref-changelog.md:638 +#: ../../source/ref-changelog.md:660 #, fuzzy msgid "FedNova ([#2179](https://github.com/adap/flower/pull/2179))" msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:639 +#: ../../source/ref-changelog.md:661 #, fuzzy msgid "HeteroFL ([#2439](https://github.com/adap/flower/pull/2439))" msgstr "Nouvelle référence API ([#554](https://github.com/adap/flower/pull/554))" -#: ../../source/ref-changelog.md:640 +#: ../../source/ref-changelog.md:662 #, fuzzy msgid "FedAvgM ([#2246](https://github.com/adap/flower/pull/2246))" msgstr "Nouvelle référence API ([#554](https://github.com/adap/flower/pull/554))" -#: ../../source/ref-changelog.md:641 +#: ../../source/ref-changelog.md:663 #, fuzzy msgid "FedPara ([#2722](https://github.com/adap/flower/pull/2722))" msgstr "" "**Renommé stratégie q-FedAvg** " "([#802](https://github.com/adap/flower/pull/802))" -#: ../../source/ref-changelog.md:643 +#: ../../source/ref-changelog.md:665 #, fuzzy msgid "" "**Improve documentation** " @@ -20079,7 +20198,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:645 +#: ../../source/ref-changelog.md:667 msgid "" "**Improved testing and development infrastructure** " "([#2797](https://github.com/adap/flower/pull/2797), " @@ -20113,13 +20232,13 @@ msgid "" "[#2398](https://github.com/adap/flower/pull/2398))" msgstr "" -#: ../../source/ref-changelog.md:647 +#: ../../source/ref-changelog.md:669 msgid "" "The Flower testing and development infrastructure has received " "substantial updates. This makes Flower 1.7 the most tested release ever." msgstr "" -#: ../../source/ref-changelog.md:649 +#: ../../source/ref-changelog.md:671 msgid "" "**Update dependencies** " "([#2753](https://github.com/adap/flower/pull/2753), " @@ -20143,7 +20262,7 @@ msgid "" "[#2789](https://github.com/adap/flower/pull/2789))" msgstr "" -#: ../../source/ref-changelog.md:651 +#: ../../source/ref-changelog.md:673 msgid "" "**General improvements** " "([#2803](https://github.com/adap/flower/pull/2803), " @@ -20184,7 +20303,7 @@ msgid "" "[#2759](https://github.com/adap/flower/pull/2759))" msgstr "" -#: ../../source/ref-changelog.md:655 +#: ../../source/ref-changelog.md:677 #, fuzzy msgid "" "**Deprecate** `start_numpy_client` " @@ -20195,7 +20314,7 @@ msgstr "" "([#828](https://github.com/adap/flower/pull/828) " "[#822](https://github.com/adap/flower/pull/822))" -#: ../../source/ref-changelog.md:657 +#: ../../source/ref-changelog.md:679 msgid "" "Until now, clients of type `NumPyClient` needed to be started via " "`start_numpy_client`. In our efforts to consolidate framework APIs, we " @@ -20206,7 +20325,7 @@ msgid "" "updated accordingly." msgstr "" -#: ../../source/ref-changelog.md:659 +#: ../../source/ref-changelog.md:681 #, fuzzy msgid "" "**Deprecate legacy DP wrappers** " @@ -20215,14 +20334,14 @@ msgstr "" "**Supprimez KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:661 +#: ../../source/ref-changelog.md:683 msgid "" "Legacy DP wrapper classes are deprecated, but still functional. This is " "in preparation for an all-new pluggable version of differential privacy " "support in Flower." msgstr "" -#: ../../source/ref-changelog.md:663 +#: ../../source/ref-changelog.md:685 #, fuzzy msgid "" "**Make optional arg** `--callable` **in** `flower-client` **a required " @@ -20231,7 +20350,7 @@ msgstr "" "**Log** `Client` **exceptions dans le moteur de client virtuel** " "([#1493](https://github.com/adap/flower/pull/1493))" -#: ../../source/ref-changelog.md:665 +#: ../../source/ref-changelog.md:687 #, fuzzy msgid "" "**Rename** `certificates` **to** `root_certificates` **in** `Driver` " @@ -20240,7 +20359,7 @@ msgstr "" "**Rename** `rnd` **to** `server_round` " "([#1321](https://github.com/adap/flower/pull/1321))" -#: ../../source/ref-changelog.md:667 +#: ../../source/ref-changelog.md:689 #, fuzzy msgid "" "**Drop experimental** `Task` **fields** " @@ -20251,14 +20370,14 @@ msgstr "" "([#1258](https://github.com/adap/flower/pull/1258), " "[#1259](https://github.com/adap/flower/pull/1259))" -#: ../../source/ref-changelog.md:669 +#: ../../source/ref-changelog.md:691 msgid "" "Experimental fields `sa`, `legacy_server_message` and " "`legacy_client_message` were removed from `Task` message. The removed " "fields are superseded by the new `RecordSet` abstraction." msgstr "" -#: ../../source/ref-changelog.md:671 +#: ../../source/ref-changelog.md:693 #, fuzzy msgid "" "**Retire MXNet examples** " @@ -20267,19 +20386,19 @@ msgstr "" "**Nouvel exemple de code scikit-learn** " "([#748](https://github.com/adap/flower/pull/748))" -#: ../../source/ref-changelog.md:673 +#: ../../source/ref-changelog.md:695 msgid "" "The development of the MXNet fremework has ended and the project is now " "[archived on GitHub](https://github.com/apache/mxnet). Existing MXNet " "examples won't receive updates." msgstr "" -#: ../../source/ref-changelog.md:675 +#: ../../source/ref-changelog.md:697 #, fuzzy msgid "v1.6.0 (2023-11-28)" msgstr "v1.4.0 (2023-04-21)" -#: ../../source/ref-changelog.md:681 +#: ../../source/ref-changelog.md:703 msgid "" "`Aashish Kolluri`, `Adam Narozniak`, `Alessio Mora`, `Barathwaja S`, " "`Charles Beauville`, `Daniel J. Beutel`, `Daniel Nata Nugraha`, `Gabriel " @@ -20289,7 +20408,7 @@ msgid "" "`cnxdeveloper`, `k3nfalt` " msgstr "" -#: ../../source/ref-changelog.md:685 +#: ../../source/ref-changelog.md:707 #, fuzzy msgid "" "**Add experimental support for Python 3.12** " @@ -20298,7 +20417,7 @@ msgstr "" "**Ajouter la prise en charge expérimentale de Python 3.10 et Python " "3.11** ([#1135](https://github.com/adap/flower/pull/1135))" -#: ../../source/ref-changelog.md:687 +#: ../../source/ref-changelog.md:709 #, fuzzy msgid "" "**Add new XGBoost examples** " @@ -20317,13 +20436,13 @@ msgstr "" "[#1551](https://github.com/adap/flower/pull/1551), " "[#1567](https://github.com/adap/flower/pull/1567))" -#: ../../source/ref-changelog.md:689 +#: ../../source/ref-changelog.md:711 msgid "" "We have added a new `xgboost-quickstart` example alongside a new " "`xgboost-comprehensive` example that goes more in-depth." msgstr "" -#: ../../source/ref-changelog.md:691 +#: ../../source/ref-changelog.md:713 #, fuzzy msgid "" "**Add Vertical FL example** " @@ -20332,7 +20451,7 @@ msgstr "" "**Nouvel exemple de code CoreML pour iOS** " "([#1289](https://github.com/adap/flower/pull/1289))" -#: ../../source/ref-changelog.md:693 +#: ../../source/ref-changelog.md:715 msgid "" "We had many questions about Vertical Federated Learning using Flower, so " "we decided to add an simple example for it on the [Titanic " @@ -20340,7 +20459,7 @@ msgid "" "tutorial (in the README)." msgstr "" -#: ../../source/ref-changelog.md:695 +#: ../../source/ref-changelog.md:717 #, fuzzy msgid "" "**Support custom** `ClientManager` **in** `start_driver()` " @@ -20350,7 +20469,7 @@ msgstr "" "paramètre de `start_simulation` " "([#1171](https://github.com/adap/flower/pull/1171))" -#: ../../source/ref-changelog.md:697 +#: ../../source/ref-changelog.md:719 #, fuzzy msgid "" "**Update REST API to support create and delete nodes** " @@ -20359,7 +20478,7 @@ msgstr "" "**Nouvelle stratégie expérimentale TensorBoard** " "([#789](https://github.com/adap/flower/pull/789))" -#: ../../source/ref-changelog.md:699 +#: ../../source/ref-changelog.md:721 #, fuzzy msgid "" "**Update the Android SDK** " @@ -20368,11 +20487,11 @@ msgstr "" "**Introduire une nouvelle ligne de base pour les fleurs : FedAvg " "FEMNIST** ([#1655](https://github.com/adap/flower/pull/1655))" -#: ../../source/ref-changelog.md:701 +#: ../../source/ref-changelog.md:723 msgid "Add gRPC request-response capability to the Android SDK." msgstr "" -#: ../../source/ref-changelog.md:703 +#: ../../source/ref-changelog.md:725 #, fuzzy msgid "" "**Update the C++ SDK** " @@ -20387,11 +20506,11 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310))" -#: ../../source/ref-changelog.md:705 +#: ../../source/ref-changelog.md:727 msgid "Add gRPC request-response capability to the C++ SDK." msgstr "" -#: ../../source/ref-changelog.md:707 +#: ../../source/ref-changelog.md:729 #, fuzzy msgid "" "**Make HTTPS the new default** " @@ -20402,7 +20521,7 @@ msgstr "" "([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" -#: ../../source/ref-changelog.md:709 +#: ../../source/ref-changelog.md:731 msgid "" "Flower is moving to HTTPS by default. The new `flower-server` requires " "passing `--certificates`, but users can enable `--insecure` to use HTTP " @@ -20412,14 +20531,14 @@ msgid "" "enable insecure HTTP connections." msgstr "" -#: ../../source/ref-changelog.md:711 +#: ../../source/ref-changelog.md:733 msgid "" "For backward compatibility, `start_client()` and `start_numpy_client()` " "will still start in insecure mode by default. In a future release, " "insecure connections will require user opt-in by passing `insecure=True`." msgstr "" -#: ../../source/ref-changelog.md:713 +#: ../../source/ref-changelog.md:735 #, fuzzy msgid "" "**Unify client API** ([#2303](https://github.com/adap/flower/pull/2303), " @@ -20431,7 +20550,7 @@ msgstr "" "[#1286](https://github.com/adap/flower/pull/1286), " "[#1282](https://github.com/adap/flower/pull/1282))" -#: ../../source/ref-changelog.md:715 +#: ../../source/ref-changelog.md:737 msgid "" "Using the `client_fn`, Flower clients can interchangeably run as " "standalone processes (i.e. via `start_client`) or in simulation (i.e. via" @@ -20440,7 +20559,7 @@ msgid "" "convert a `NumPyClient` to a `Client`." msgstr "" -#: ../../source/ref-changelog.md:717 +#: ../../source/ref-changelog.md:739 #, fuzzy msgid "" "**Add new** `Bulyan` **strategy** " @@ -20451,7 +20570,7 @@ msgstr "" "([#828](https://github.com/adap/flower/pull/828) " "[#822](https://github.com/adap/flower/pull/822))" -#: ../../source/ref-changelog.md:719 +#: ../../source/ref-changelog.md:741 #, fuzzy msgid "" "The new `Bulyan` strategy implements Bulyan by [El Mhamdi et al., " @@ -20461,7 +20580,7 @@ msgstr "" "(FedMedian) par [Yin et al., 2018] " "(https://arxiv.org/pdf/1803.01498v1.pdf)." -#: ../../source/ref-changelog.md:721 +#: ../../source/ref-changelog.md:743 #, fuzzy msgid "" "**Add new** `XGB Bagging` **strategy** " @@ -20470,7 +20589,7 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:723 ../../source/ref-changelog.md:725 +#: ../../source/ref-changelog.md:745 ../../source/ref-changelog.md:747 #, fuzzy msgid "" "**Introduce `WorkloadState`** " @@ -20481,7 +20600,7 @@ msgstr "" "([#828](https://github.com/adap/flower/pull/828) " "[#822](https://github.com/adap/flower/pull/822))" -#: ../../source/ref-changelog.md:729 +#: ../../source/ref-changelog.md:751 #, fuzzy msgid "" "FedProx ([#2210](https://github.com/adap/flower/pull/2210), " @@ -20493,7 +20612,7 @@ msgstr "" "[#1286](https://github.com/adap/flower/pull/1286), " "[#1282](https://github.com/adap/flower/pull/1282))" -#: ../../source/ref-changelog.md:731 +#: ../../source/ref-changelog.md:753 #, fuzzy msgid "" "Baselines Docs ([#2290](https://github.com/adap/flower/pull/2290), " @@ -20503,7 +20622,7 @@ msgstr "" "([#906](https://github.com/adap/flower/pull/906), " "[#1143](https://github.com/adap/flower/pull/1143))" -#: ../../source/ref-changelog.md:733 +#: ../../source/ref-changelog.md:755 #, fuzzy msgid "" "FedMLB ([#2340](https://github.com/adap/flower/pull/2340), " @@ -20513,7 +20632,7 @@ msgstr "" "([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" -#: ../../source/ref-changelog.md:735 +#: ../../source/ref-changelog.md:757 #, fuzzy msgid "" "TAMUNA ([#2254](https://github.com/adap/flower/pull/2254), " @@ -20523,48 +20642,48 @@ msgstr "" "([#828](https://github.com/adap/flower/pull/828) " "[#822](https://github.com/adap/flower/pull/822))" -#: ../../source/ref-changelog.md:737 +#: ../../source/ref-changelog.md:759 #, fuzzy msgid "FedMeta [#2438](https://github.com/adap/flower/pull/2438)" msgstr "Nouvelle référence API ([#554](https://github.com/adap/flower/pull/554))" -#: ../../source/ref-changelog.md:739 +#: ../../source/ref-changelog.md:761 #, fuzzy msgid "FjORD [#2431](https://github.com/adap/flower/pull/2431)" msgstr "" "Amélioration de la documentation sur le serveur gRPC " "([#841](https://github.com/adap/flower/pull/841))" -#: ../../source/ref-changelog.md:741 +#: ../../source/ref-changelog.md:763 #, fuzzy msgid "MOON [#2421](https://github.com/adap/flower/pull/2421)" msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:743 +#: ../../source/ref-changelog.md:765 #, fuzzy msgid "DepthFL [#2295](https://github.com/adap/flower/pull/2295)" msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:745 +#: ../../source/ref-changelog.md:767 #, fuzzy msgid "FedPer [#2266](https://github.com/adap/flower/pull/2266)" msgstr "Nouvelle référence API ([#554](https://github.com/adap/flower/pull/554))" -#: ../../source/ref-changelog.md:747 +#: ../../source/ref-changelog.md:769 #, fuzzy msgid "FedWav2vec [#2551](https://github.com/adap/flower/pull/2551)" msgstr "Nouvelle référence API ([#554](https://github.com/adap/flower/pull/554))" -#: ../../source/ref-changelog.md:749 +#: ../../source/ref-changelog.md:771 #, fuzzy msgid "niid-Bench [#2428](https://github.com/adap/flower/pull/2428)" msgstr "Nouvelle référence API ([#554](https://github.com/adap/flower/pull/554))" -#: ../../source/ref-changelog.md:751 +#: ../../source/ref-changelog.md:773 #, fuzzy msgid "" "FedBN ([#2608](https://github.com/adap/flower/pull/2608), " @@ -20574,7 +20693,7 @@ msgstr "" "([#828](https://github.com/adap/flower/pull/828) " "[#822](https://github.com/adap/flower/pull/822))" -#: ../../source/ref-changelog.md:753 +#: ../../source/ref-changelog.md:775 #, fuzzy msgid "" "**General updates to Flower Examples** " @@ -20590,7 +20709,7 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310))" -#: ../../source/ref-changelog.md:755 +#: ../../source/ref-changelog.md:777 #, fuzzy msgid "" "**General updates to Flower Baselines** " @@ -20623,7 +20742,7 @@ msgstr "" "[#1564](https://github.com/adap/flower/pull/1564), " "[#1566](https://github.com/adap/flower/pull/1566))" -#: ../../source/ref-changelog.md:757 +#: ../../source/ref-changelog.md:779 #, fuzzy msgid "" "**General updates to the simulation engine** " @@ -20638,7 +20757,7 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310))" -#: ../../source/ref-changelog.md:759 +#: ../../source/ref-changelog.md:781 #, fuzzy msgid "" "**General updates to Flower SDKs** " @@ -20657,7 +20776,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475))" -#: ../../source/ref-changelog.md:761 +#: ../../source/ref-changelog.md:783 msgid "" "**General improvements** " "([#2309](https://github.com/adap/flower/pull/2309), " @@ -20689,15 +20808,15 @@ msgid "" "[#2596](https://github.com/adap/flower/pull/2596))" msgstr "" -#: ../../source/ref-changelog.md:763 ../../source/ref-changelog.md:853 -#: ../../source/ref-changelog.md:917 ../../source/ref-changelog.md:971 -#: ../../source/ref-changelog.md:1038 +#: ../../source/ref-changelog.md:785 ../../source/ref-changelog.md:875 +#: ../../source/ref-changelog.md:939 ../../source/ref-changelog.md:993 +#: ../../source/ref-changelog.md:1060 msgid "Flower received many improvements under the hood, too many to list here." msgstr "" "Flower a reçu de nombreuses améliorations sous le capot, trop nombreuses " "pour être énumérées ici." -#: ../../source/ref-changelog.md:767 +#: ../../source/ref-changelog.md:789 #, fuzzy msgid "" "**Remove support for Python 3.7** " @@ -20714,13 +20833,13 @@ msgstr "" "[#1065](https://github.com/adap/flower/pull/1065), " "[#1090](https://github.com/adap/flower/pull/1090))" -#: ../../source/ref-changelog.md:769 +#: ../../source/ref-changelog.md:791 msgid "" "Python 3.7 support was deprecated in Flower 1.5, and this release removes" " support. Flower now requires Python 3.8." msgstr "" -#: ../../source/ref-changelog.md:771 +#: ../../source/ref-changelog.md:793 #, fuzzy msgid "" "**Remove experimental argument** `rest` **from** `start_client` " @@ -20729,19 +20848,19 @@ msgstr "" "**Supprimer les stratégies expérimentales** " "([#1280](https://github.com/adap/flower/pull/1280))" -#: ../../source/ref-changelog.md:773 +#: ../../source/ref-changelog.md:795 msgid "" "The (still experimental) argument `rest` was removed from `start_client` " "and `start_numpy_client`. Use `transport=\"rest\"` to opt into the " "experimental REST API instead." msgstr "" -#: ../../source/ref-changelog.md:775 +#: ../../source/ref-changelog.md:797 #, fuzzy msgid "v1.5.0 (2023-08-31)" msgstr "v1.4.0 (2023-04-21)" -#: ../../source/ref-changelog.md:781 +#: ../../source/ref-changelog.md:803 msgid "" "`Adam Narozniak`, `Anass Anhari`, `Charles Beauville`, `Dana-Farber`, " "`Daniel J. Beutel`, `Daniel Nata Nugraha`, `Edoardo Gabrielli`, `Gustavo " @@ -20750,7 +20869,7 @@ msgid "" "TOKEN_v1.5.0-->" msgstr "" -#: ../../source/ref-changelog.md:785 +#: ../../source/ref-changelog.md:807 #, fuzzy msgid "" "**Introduce new simulation engine** " @@ -20763,7 +20882,7 @@ msgstr "" "[#1544](https://github.com/adap/flower/pull/1544), " "[#1584](https://github.com/adap/flower/pull/1584))" -#: ../../source/ref-changelog.md:787 +#: ../../source/ref-changelog.md:809 msgid "" "The new simulation engine has been rewritten from the ground up, yet it " "remains fully backwards compatible. It offers much improved stability and" @@ -20772,7 +20891,7 @@ msgid "" "only, CPU+GPU, multi-GPU, or multi-node multi-GPU environments." msgstr "" -#: ../../source/ref-changelog.md:789 +#: ../../source/ref-changelog.md:811 msgid "" "Comprehensive documentation includes a new [how-to run " "simulations](https://flower.ai/docs/framework/how-to-run-" @@ -20783,7 +20902,7 @@ msgid "" "series](https://www.youtube.com/watch?v=cRebUIGB5RU&list=PLNG4feLHqCWlnj8a_E1A_n5zr2-8pafTB)." msgstr "" -#: ../../source/ref-changelog.md:791 +#: ../../source/ref-changelog.md:813 msgid "" "**Restructure Flower Docs** " "([#1824](https://github.com/adap/flower/pull/1824), " @@ -20815,7 +20934,7 @@ msgid "" "[#2227](https://github.com/adap/flower/pull/2227))" msgstr "" -#: ../../source/ref-changelog.md:793 +#: ../../source/ref-changelog.md:815 msgid "" "Much effort went into a completely restructured Flower docs experience. " "The documentation on [flower.ai/docs](https://flower.ai/docs) is now " @@ -20823,7 +20942,7 @@ msgid "" "Flower iOS SDK, and code example projects." msgstr "" -#: ../../source/ref-changelog.md:795 +#: ../../source/ref-changelog.md:817 #, fuzzy msgid "" "**Introduce Flower Swift SDK** " @@ -20834,14 +20953,14 @@ msgstr "" "([#1621](https://github.com/adap/flower/pull/1621), " "[#1764](https://github.com/adap/flower/pull/1764))" -#: ../../source/ref-changelog.md:797 +#: ../../source/ref-changelog.md:819 msgid "" "This is the first preview release of the Flower Swift SDK. Flower support" " on iOS is improving, and alongside the Swift SDK and code example, there" " is now also an iOS quickstart tutorial." msgstr "" -#: ../../source/ref-changelog.md:799 +#: ../../source/ref-changelog.md:821 #, fuzzy msgid "" "**Introduce Flower Android SDK** " @@ -20850,14 +20969,14 @@ msgstr "" "**Introduire une nouvelle ligne de base pour les fleurs : FedAvg " "FEMNIST** ([#1655](https://github.com/adap/flower/pull/1655))" -#: ../../source/ref-changelog.md:801 +#: ../../source/ref-changelog.md:823 msgid "" "This is the first preview release of the Flower Kotlin SDK. Flower " "support on Android is improving, and alongside the Kotlin SDK and code " "example, there is now also an Android quickstart tutorial." msgstr "" -#: ../../source/ref-changelog.md:803 +#: ../../source/ref-changelog.md:825 #, fuzzy msgid "" "**Introduce new end-to-end testing infrastructure** " @@ -20890,24 +21009,24 @@ msgstr "" "[#1662](https://github.com/adap/flower/pull/1662), " "[#1794](https://github.com/adap/flower/pull/1794))" -#: ../../source/ref-changelog.md:805 +#: ../../source/ref-changelog.md:827 msgid "" "A new testing infrastructure ensures that new changes stay compatible " "with existing framework integrations or strategies." msgstr "" -#: ../../source/ref-changelog.md:807 +#: ../../source/ref-changelog.md:829 #, fuzzy msgid "**Deprecate Python 3.7**" msgstr "**Créer le PR**" -#: ../../source/ref-changelog.md:809 +#: ../../source/ref-changelog.md:831 msgid "" "Since Python 3.7 reached its end of life (EOL) on 2023-06-27, support for" " Python 3.7 is now deprecated and will be removed in an upcoming release." msgstr "" -#: ../../source/ref-changelog.md:811 +#: ../../source/ref-changelog.md:833 #, fuzzy msgid "" "**Add new** `FedTrimmedAvg` **strategy** " @@ -20918,7 +21037,7 @@ msgstr "" "([#1469](https://github.com/adap/flower/pull/1469), " "[#1535](https://github.com/adap/flower/pull/1535))" -#: ../../source/ref-changelog.md:813 +#: ../../source/ref-changelog.md:835 #, fuzzy msgid "" "The new `FedTrimmedAvg` strategy implements Trimmed Mean by [Dong Yin, " @@ -20928,7 +21047,7 @@ msgstr "" "(FedMedian) par [Yin et al., 2018] " "(https://arxiv.org/pdf/1803.01498v1.pdf)." -#: ../../source/ref-changelog.md:815 +#: ../../source/ref-changelog.md:837 #, fuzzy msgid "" "**Introduce start_driver** " @@ -20937,7 +21056,7 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:817 +#: ../../source/ref-changelog.md:839 msgid "" "In addition to `start_server` and using the raw Driver API, there is a " "new `start_driver` function that allows for running `start_server` " @@ -20946,7 +21065,7 @@ msgid "" "`start_driver`." msgstr "" -#: ../../source/ref-changelog.md:819 +#: ../../source/ref-changelog.md:841 #, fuzzy msgid "" "**Add parameter aggregation to** `mt-pytorch` **code example** " @@ -20955,7 +21074,7 @@ msgstr "" "**Nouvel exemple de code PyTorch avancé** " "([#1007](https://github.com/adap/flower/pull/1007))" -#: ../../source/ref-changelog.md:821 +#: ../../source/ref-changelog.md:843 msgid "" "The `mt-pytorch` example shows how to aggregate parameters when writing a" " driver script. The included `driver.py` and `server.py` have been " @@ -20963,7 +21082,7 @@ msgid "" "building server-side logic." msgstr "" -#: ../../source/ref-changelog.md:823 +#: ../../source/ref-changelog.md:845 #, fuzzy msgid "" "**Migrate experimental REST API to Starlette** " @@ -20972,14 +21091,14 @@ msgstr "" "**Nouvelle stratégie expérimentale TensorBoard** " "([#789](https://github.com/adap/flower/pull/789))" -#: ../../source/ref-changelog.md:825 +#: ../../source/ref-changelog.md:847 msgid "" "The (experimental) REST API used to be implemented in " "[FastAPI](https://fastapi.tiangolo.com/), but it has now been migrated to" " use [Starlette](https://www.starlette.io/) directly." msgstr "" -#: ../../source/ref-changelog.md:827 +#: ../../source/ref-changelog.md:849 #, fuzzy msgid "" "Please note: The REST request-response API is still experimental and will" @@ -20988,7 +21107,7 @@ msgstr "" "Remarque : l'API REST est encore expérimentale et est susceptible de " "changer de manière significative au fil du temps." -#: ../../source/ref-changelog.md:829 +#: ../../source/ref-changelog.md:851 #, fuzzy msgid "" "**Introduce experimental gRPC request-response API** " @@ -20999,14 +21118,14 @@ msgstr "" "([#1357](https://github.com/adap/flower/pull/1357), " "[#1460](https://github.com/adap/flower/pull/1460))" -#: ../../source/ref-changelog.md:831 +#: ../../source/ref-changelog.md:853 msgid "" "In addition to the existing gRPC API (based on bidirectional streaming) " "and the experimental REST API, there is now a new gRPC API that uses a " "request-response model to communicate with client nodes." msgstr "" -#: ../../source/ref-changelog.md:833 +#: ../../source/ref-changelog.md:855 #, fuzzy msgid "" "Please note: The gRPC request-response API is still experimental and will" @@ -21015,7 +21134,7 @@ msgstr "" "Remarque : l'API REST est encore expérimentale et est susceptible de " "changer de manière significative au fil du temps." -#: ../../source/ref-changelog.md:835 +#: ../../source/ref-changelog.md:857 #, fuzzy msgid "" "**Replace the experimental** `start_client(rest=True)` **with the new** " @@ -21025,7 +21144,7 @@ msgstr "" "**Initialise** `start_simulation` **avec une liste d'ID de clients** " "([#860](https://github.com/adap/flower/pull/860))" -#: ../../source/ref-changelog.md:837 +#: ../../source/ref-changelog.md:859 msgid "" "The (experimental) `start_client` argument `rest` was deprecated in " "favour of a new argument `transport`. `start_client(transport=\"rest\")` " @@ -21034,7 +21153,7 @@ msgid "" "argument `rest` will be removed in a future release." msgstr "" -#: ../../source/ref-changelog.md:839 +#: ../../source/ref-changelog.md:861 #, fuzzy msgid "" "**Add a new gRPC option** " @@ -21043,14 +21162,14 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:841 +#: ../../source/ref-changelog.md:863 msgid "" "We now start a gRPC server with the `grpc.keepalive_permit_without_calls`" " option set to 0 by default. This prevents the clients from sending " "keepalive pings when there is no outstanding stream." msgstr "" -#: ../../source/ref-changelog.md:843 +#: ../../source/ref-changelog.md:865 #, fuzzy msgid "" "**Improve example notebooks** " @@ -21059,12 +21178,12 @@ msgstr "" "**Supprimer les stratégies expérimentales** " "([#1280](https://github.com/adap/flower/pull/1280))" -#: ../../source/ref-changelog.md:845 +#: ../../source/ref-changelog.md:867 #, fuzzy msgid "There's a new 30min Federated Learning PyTorch tutorial!" msgstr "Bienvenue au tutoriel sur l'apprentissage fédéré de la fleur !" -#: ../../source/ref-changelog.md:847 +#: ../../source/ref-changelog.md:869 msgid "" "**Example updates** ([#1772](https://github.com/adap/flower/pull/1772), " "[#1873](https://github.com/adap/flower/pull/1873), " @@ -21079,7 +21198,7 @@ msgid "" "[#2183](https://github.com/adap/flower/pull/2183))" msgstr "" -#: ../../source/ref-changelog.md:849 +#: ../../source/ref-changelog.md:871 msgid "" "Many examples have received significant updates, including simplified " "advanced-tensorflow and advanced-pytorch examples, improved macOS " @@ -21088,7 +21207,7 @@ msgid "" "(in addition to `pyproject.toml`)." msgstr "" -#: ../../source/ref-changelog.md:851 +#: ../../source/ref-changelog.md:873 #, fuzzy msgid "" "**General improvements** " @@ -21108,11 +21227,11 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:859 +#: ../../source/ref-changelog.md:881 msgid "v1.4.0 (2023-04-21)" msgstr "v1.4.0 (2023-04-21)" -#: ../../source/ref-changelog.md:865 +#: ../../source/ref-changelog.md:887 msgid "" "`Adam Narozniak`, `Alexander Viala Bellander`, `Charles Beauville`, " "`Chenyang Ma (Danny)`, `Daniel J. Beutel`, `Edoardo`, `Gautam Jajoo`, " @@ -21128,7 +21247,7 @@ msgstr "" "Lane`, `Nikolaos Episkopos`, `Ragy`, `Saurav Maheshkar`, `Semo Yang`, " "`Steve Laskaridis`, `Steven Hé (Sīchàng)`, `Taner Topal`" -#: ../../source/ref-changelog.md:869 +#: ../../source/ref-changelog.md:891 msgid "" "**Introduce support for XGBoost (**`FedXgbNnAvg` **strategy and " "example)** ([#1694](https://github.com/adap/flower/pull/1694), " @@ -21146,7 +21265,7 @@ msgstr "" "[#1763](https://github.com/adap/flower/pull/1763), " "[#1795](https://github.com/adap/flower/pull/1795))" -#: ../../source/ref-changelog.md:871 +#: ../../source/ref-changelog.md:893 msgid "" "XGBoost is a tree-based ensemble machine learning algorithm that uses " "gradient boosting to improve model accuracy. We added a new `FedXgbNnAvg`" @@ -21163,7 +21282,7 @@ msgstr "" "qui démontre l'utilisation de cette nouvelle stratégie dans un projet " "XGBoost." -#: ../../source/ref-changelog.md:873 +#: ../../source/ref-changelog.md:895 msgid "" "**Introduce iOS SDK (preview)** " "([#1621](https://github.com/adap/flower/pull/1621), " @@ -21173,7 +21292,7 @@ msgstr "" "([#1621](https://github.com/adap/flower/pull/1621), " "[#1764](https://github.com/adap/flower/pull/1764))" -#: ../../source/ref-changelog.md:875 +#: ../../source/ref-changelog.md:897 msgid "" "This is a major update for anyone wanting to implement Federated Learning" " on iOS mobile devices. We now have a swift iOS SDK present under " @@ -21192,7 +21311,7 @@ msgstr "" "iOS](https://github.com/adap/flower/tree/main/examples/ios) a également " "été mis à jour !" -#: ../../source/ref-changelog.md:877 +#: ../../source/ref-changelog.md:899 msgid "" "**Introduce new \"What is Federated Learning?\" tutorial** " "([#1657](https://github.com/adap/flower/pull/1657), " @@ -21202,7 +21321,7 @@ msgstr "" " \"** ([#1657](https://github.com/adap/flower/pull/1657), " "[#1721](https://github.com/adap/flower/pull/1721))" -#: ../../source/ref-changelog.md:879 +#: ../../source/ref-changelog.md:901 #, fuzzy msgid "" "A new [entry-level tutorial](https://flower.ai/docs/framework/tutorial-" @@ -21218,7 +21337,7 @@ msgstr "" " voyage avec Flower. Fais-le suivre à tous ceux qui s'intéressent à " "l'apprentissage fédéré !" -#: ../../source/ref-changelog.md:881 +#: ../../source/ref-changelog.md:903 msgid "" "**Introduce new Flower Baseline: FedProx MNIST** " "([#1513](https://github.com/adap/flower/pull/1513), " @@ -21232,7 +21351,7 @@ msgstr "" "[#1681](https://github.com/adap/flower/pull/1681), " "[#1679](https://github.com/adap/flower/pull/1679))" -#: ../../source/ref-changelog.md:883 +#: ../../source/ref-changelog.md:905 msgid "" "This new baseline replicates the MNIST+CNN task from the paper [Federated" " Optimization in Heterogeneous Networks (Li et al., " @@ -21245,7 +21364,7 @@ msgstr "" "qui vise à rendre la convergence plus robuste dans des contextes " "hétérogènes." -#: ../../source/ref-changelog.md:885 +#: ../../source/ref-changelog.md:907 msgid "" "**Introduce new Flower Baseline: FedAvg FEMNIST** " "([#1655](https://github.com/adap/flower/pull/1655))" @@ -21253,7 +21372,7 @@ msgstr "" "**Introduire une nouvelle ligne de base pour les fleurs : FedAvg " "FEMNIST** ([#1655](https://github.com/adap/flower/pull/1655))" -#: ../../source/ref-changelog.md:887 +#: ../../source/ref-changelog.md:909 msgid "" "This new baseline replicates an experiment evaluating the performance of " "the FedAvg algorithm on the FEMNIST dataset from the paper [LEAF: A " @@ -21265,7 +21384,7 @@ msgstr "" " l'article [LEAF : A Benchmark for Federated Settings (Caldas et al., " "2018)] (https://arxiv.org/abs/1812.01097)." -#: ../../source/ref-changelog.md:889 +#: ../../source/ref-changelog.md:911 msgid "" "**Introduce (experimental) REST API** " "([#1594](https://github.com/adap/flower/pull/1594), " @@ -21285,7 +21404,7 @@ msgstr "" "[#1770](https://github.com/adap/flower/pull/1770), " "[#1733](https://github.com/adap/flower/pull/1733))" -#: ../../source/ref-changelog.md:891 +#: ../../source/ref-changelog.md:913 msgid "" "A new REST API has been introduced as an alternative to the gRPC-based " "communication stack. In this initial version, the REST API only supports " @@ -21295,7 +21414,7 @@ msgstr "" "communication basée sur gRPC. Dans cette version initiale, l'API REST ne " "prend en charge que les clients anonymes." -#: ../../source/ref-changelog.md:893 +#: ../../source/ref-changelog.md:915 msgid "" "Please note: The REST API is still experimental and will likely change " "significantly over time." @@ -21303,7 +21422,7 @@ msgstr "" "Remarque : l'API REST est encore expérimentale et est susceptible de " "changer de manière significative au fil du temps." -#: ../../source/ref-changelog.md:895 +#: ../../source/ref-changelog.md:917 msgid "" "**Improve the (experimental) Driver API** " "([#1663](https://github.com/adap/flower/pull/1663), " @@ -21327,7 +21446,7 @@ msgstr "" "[#1662](https://github.com/adap/flower/pull/1662), " "[#1794](https://github.com/adap/flower/pull/1794))" -#: ../../source/ref-changelog.md:897 +#: ../../source/ref-changelog.md:919 msgid "" "The Driver API is still an experimental feature, but this release " "introduces some major upgrades. One of the main improvements is the " @@ -21345,7 +21464,7 @@ msgstr "" "considérablement l'efficacité de la mémoire d'un serveur Flower " "fonctionnant depuis longtemps." -#: ../../source/ref-changelog.md:899 +#: ../../source/ref-changelog.md:921 msgid "" "**Fix spilling issues related to Ray during simulations** " "([#1698](https://github.com/adap/flower/pull/1698))" @@ -21353,7 +21472,7 @@ msgstr "" "**Répare les problèmes de déversement liés à Ray pendant les " "simulations** ([#1698](https://github.com/adap/flower/pull/1698))" -#: ../../source/ref-changelog.md:901 +#: ../../source/ref-changelog.md:923 #, fuzzy msgid "" "While running long simulations, `ray` was sometimes spilling huge amounts" @@ -21364,7 +21483,7 @@ msgstr "" "d'énormes quantités de données qui rendaient l'entraînement incapable de " "continuer. ce problème est maintenant corrigé ! 🎉" -#: ../../source/ref-changelog.md:903 +#: ../../source/ref-changelog.md:925 msgid "" "**Add new example using** `TabNet` **and Flower** " "([#1725](https://github.com/adap/flower/pull/1725))" @@ -21372,7 +21491,7 @@ msgstr "" "**Ajouter un nouvel exemple utilisant** `TabNet` **et Flower** " "([#1725](https://github.com/adap/flower/pull/1725))" -#: ../../source/ref-changelog.md:905 +#: ../../source/ref-changelog.md:927 msgid "" "TabNet is a powerful and flexible framework for training machine learning" " models on tabular data. We now have a federated example using Flower: " @@ -21385,7 +21504,7 @@ msgstr "" "tabnet](https://github.com/adap/flower/tree/main/examples/quickstart-" "tabnet)." -#: ../../source/ref-changelog.md:907 +#: ../../source/ref-changelog.md:929 msgid "" "**Add new how-to guide for monitoring simulations** " "([#1649](https://github.com/adap/flower/pull/1649))" @@ -21393,7 +21512,7 @@ msgstr "" "**Ajouter un nouveau guide pratique pour le suivi des simulations** " "([#1649](https://github.com/adap/flower/pull/1649))" -#: ../../source/ref-changelog.md:909 +#: ../../source/ref-changelog.md:931 msgid "" "We now have a documentation guide to help users monitor their performance" " during simulations." @@ -21401,7 +21520,7 @@ msgstr "" "Nous avons maintenant un guide de documentation pour aider les " "utilisateurs à surveiller leurs performances pendant les simulations." -#: ../../source/ref-changelog.md:911 +#: ../../source/ref-changelog.md:933 msgid "" "**Add training metrics to** `History` **object during simulations** " "([#1696](https://github.com/adap/flower/pull/1696))" @@ -21409,7 +21528,7 @@ msgstr "" "**Ajouter des mesures de formation à** `History` **objet pendant les " "simulations** ([#1696](https://github.com/adap/flower/pull/1696))" -#: ../../source/ref-changelog.md:913 +#: ../../source/ref-changelog.md:935 msgid "" "The `fit_metrics_aggregation_fn` can be used to aggregate training " "metrics, but previous releases did not save the results in the `History` " @@ -21420,7 +21539,7 @@ msgstr "" "n'enregistraient pas les résultats dans l'objet `History`. c'est " "désormais le cas !" -#: ../../source/ref-changelog.md:915 +#: ../../source/ref-changelog.md:937 msgid "" "**General improvements** " "([#1659](https://github.com/adap/flower/pull/1659), " @@ -21495,11 +21614,11 @@ msgstr "" "[#1692](https://github.com/adap/flower/pull/1692), " "[#1705](https://github.com/ada" -#: ../../source/ref-changelog.md:923 +#: ../../source/ref-changelog.md:945 msgid "v1.3.0 (2023-02-06)" msgstr "v1.3.0 (2023-02-06)" -#: ../../source/ref-changelog.md:929 +#: ../../source/ref-changelog.md:951 msgid "" "`Adam Narozniak`, `Alexander Viala Bellander`, `Charles Beauville`, " "`Daniel J. Beutel`, `JDRanpariya`, `Lennart Behme`, `Taner Topal`" @@ -21507,7 +21626,7 @@ msgstr "" "`Adam Narozniak`, `Alexander Viala Bellander`, `Charles Beauville`, " "`Daniel J. Beutel`, `JDRanpariya`, `Lennart Behme`, `Taner Topal`" -#: ../../source/ref-changelog.md:933 +#: ../../source/ref-changelog.md:955 msgid "" "**Add support for** `workload_id` **and** `group_id` **in Driver API** " "([#1595](https://github.com/adap/flower/pull/1595))" @@ -21515,7 +21634,7 @@ msgstr "" "**Ajouter la prise en charge de** `workload_id` **et** `group_id` **dans " "l'API du pilote** ([#1595](https://github.com/adap/flower/pull/1595))" -#: ../../source/ref-changelog.md:935 +#: ../../source/ref-changelog.md:957 msgid "" "The (experimental) Driver API now supports a `workload_id` that can be " "used to identify which workload a task belongs to. It also supports a new" @@ -21530,7 +21649,7 @@ msgstr "" "en cours. Le `workload_id` et le `group_id` permettent tous deux aux " "nœuds clients de décider s'ils veulent traiter une tâche ou non." -#: ../../source/ref-changelog.md:937 +#: ../../source/ref-changelog.md:959 msgid "" "**Make Driver API and Fleet API address configurable** " "([#1637](https://github.com/adap/flower/pull/1637))" @@ -21539,7 +21658,7 @@ msgstr "" "flotte soit configurable** " "([#1637](https://github.com/adap/flower/pull/1637))" -#: ../../source/ref-changelog.md:939 +#: ../../source/ref-changelog.md:961 msgid "" "The (experimental) long-running Flower server (Driver API and Fleet API) " "can now configure the server address of both Driver API (via `--driver-" @@ -21550,7 +21669,7 @@ msgstr "" "`--driver-api-address`) et de Fleet API (via `--fleet-api-address`) lors " "de son démarrage :" -#: ../../source/ref-changelog.md:941 +#: ../../source/ref-changelog.md:963 #, fuzzy msgid "" "`flower-server --driver-api-address \"0.0.0.0:8081\" --fleet-api-address " @@ -21559,11 +21678,11 @@ msgstr "" "``flower-superlink --driver-api-address \"0.0.0.0:8081\" --fleet-api-" "address \"0.0.0.0:8086\" ``" -#: ../../source/ref-changelog.md:943 +#: ../../source/ref-changelog.md:965 msgid "Both IPv4 and IPv6 addresses are supported." msgstr "Les adresses IPv4 et IPv6 sont toutes deux prises en charge." -#: ../../source/ref-changelog.md:945 +#: ../../source/ref-changelog.md:967 msgid "" "**Add new example of Federated Learning using fastai and Flower** " "([#1598](https://github.com/adap/flower/pull/1598))" @@ -21571,7 +21690,7 @@ msgstr "" "**Ajouter un nouvel exemple d'apprentissage fédéré utilisant fastai et " "Flower** ([#1598](https://github.com/adap/flower/pull/1598))" -#: ../../source/ref-changelog.md:947 +#: ../../source/ref-changelog.md:969 msgid "" "A new code example (`quickstart-fastai`) demonstrates federated learning " "with [fastai](https://www.fast.ai/) and Flower. You can find it here: " @@ -21584,7 +21703,7 @@ msgstr "" "fastai](https://github.com/adap/flower/tree/main/examples/quickstart-" "fastai)." -#: ../../source/ref-changelog.md:949 +#: ../../source/ref-changelog.md:971 msgid "" "**Make Android example compatible with** `flwr >= 1.0.0` **and the latest" " versions of Android** " @@ -21594,7 +21713,7 @@ msgstr "" "dernières versions d'Android** " "([#1603](https://github.com/adap/flower/pull/1603))" -#: ../../source/ref-changelog.md:951 +#: ../../source/ref-changelog.md:973 #, fuzzy msgid "" "The Android code example has received a substantial update: the project " @@ -21608,7 +21727,7 @@ msgstr "" "est mis à jour pour être compatible avec les outils Android les plus " "récents." -#: ../../source/ref-changelog.md:953 +#: ../../source/ref-changelog.md:975 msgid "" "**Add new `FedProx` strategy** " "([#1619](https://github.com/adap/flower/pull/1619))" @@ -21616,7 +21735,7 @@ msgstr "" "**Ajouter une nouvelle stratégie `FedProx`** " "([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:955 +#: ../../source/ref-changelog.md:977 msgid "" "This " "[strategy](https://github.com/adap/flower/blob/main/src/py/flwr/server/strategy/fedprox.py)" @@ -21636,7 +21755,7 @@ msgstr "" "un paramètre appelé `proximal_mu` pour régulariser les modèles locaux par" " rapport aux modèles globaux." -#: ../../source/ref-changelog.md:957 +#: ../../source/ref-changelog.md:979 msgid "" "**Add new metrics to telemetry events** " "([#1640](https://github.com/adap/flower/pull/1640))" @@ -21644,7 +21763,7 @@ msgstr "" "**Ajouter de nouvelles métriques aux événements de télémétrie** " "([#1640](https://github.com/adap/flower/pull/1640))" -#: ../../source/ref-changelog.md:959 +#: ../../source/ref-changelog.md:981 msgid "" "An updated event structure allows, for example, the clustering of events " "within the same workload." @@ -21652,7 +21771,7 @@ msgstr "" "Une structure d'événements mise à jour permet, par exemple, de regrouper " "des événements au sein d'une même charge de travail." -#: ../../source/ref-changelog.md:961 +#: ../../source/ref-changelog.md:983 msgid "" "**Add new custom strategy tutorial section** " "[#1623](https://github.com/adap/flower/pull/1623)" @@ -21660,7 +21779,7 @@ msgstr "" "**Ajouter une nouvelle section de tutoriel sur les stratégies " "personnalisées** [#1623](https://github.com/adap/flower/pull/1623)" -#: ../../source/ref-changelog.md:963 +#: ../../source/ref-changelog.md:985 #, fuzzy msgid "" "The Flower tutorial now has a new section that covers implementing a " @@ -21674,7 +21793,7 @@ msgstr "" "Colab](https://colab.research.google.com/github/adap/flower/blob/main/doc/source/tutorial/Flower-3-Building-a" "-Strategy-PyTorch.ipynb)" -#: ../../source/ref-changelog.md:965 +#: ../../source/ref-changelog.md:987 msgid "" "**Add new custom serialization tutorial section** " "([#1622](https://github.com/adap/flower/pull/1622))" @@ -21682,7 +21801,7 @@ msgstr "" "**Ajouter une nouvelle section de tutoriel sur la sérialisation " "personnalisée** ([#1622](https://github.com/adap/flower/pull/1622))" -#: ../../source/ref-changelog.md:967 +#: ../../source/ref-changelog.md:989 #, fuzzy msgid "" "The Flower tutorial now has a new section that covers custom " @@ -21695,7 +21814,7 @@ msgstr "" "Colab](https://colab.research.google.com/github/adap/flower/blob/main/doc/source/tutorial/Flower-4" "-Client-and-NumPyClient-PyTorch.ipynb)" -#: ../../source/ref-changelog.md:969 +#: ../../source/ref-changelog.md:991 msgid "" "**General improvements** " "([#1638](https://github.com/adap/flower/pull/1638), " @@ -21754,7 +21873,7 @@ msgstr "" "[#1599](https://github.com/adap/flower/pull/1599), " "[#1600](https://github.com/ada" -#: ../../source/ref-changelog.md:973 +#: ../../source/ref-changelog.md:995 msgid "" "**Updated documentation** " "([#1629](https://github.com/adap/flower/pull/1629), " @@ -21774,7 +21893,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614))" -#: ../../source/ref-changelog.md:975 ../../source/ref-changelog.md:1042 +#: ../../source/ref-changelog.md:997 ../../source/ref-changelog.md:1064 msgid "" "As usual, the documentation has improved quite a bit. It is another step " "in our effort to make the Flower documentation the best documentation of " @@ -21785,11 +21904,11 @@ msgstr "" " meilleure documentation de tout projet. Reste à l'écoute et comme " "toujours, n'hésite pas à nous faire part de tes commentaires !" -#: ../../source/ref-changelog.md:981 +#: ../../source/ref-changelog.md:1003 msgid "v1.2.0 (2023-01-13)" msgstr "v1.2.0 (2023-01-13)" -#: ../../source/ref-changelog.md:987 +#: ../../source/ref-changelog.md:1009 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Daniel J. Beutel`, `Edoardo`, `L." " Jiang`, `Ragy`, `Taner Topal`, `dannymcy`" @@ -21797,7 +21916,7 @@ msgstr "" "adam Narozniak`, `Charles Beauville`, `Daniel J. Beutel`, `Edoardo`, `L. " "Jiang`, `Ragy`, `Taner Topal`, `dannymcy`" -#: ../../source/ref-changelog.md:991 +#: ../../source/ref-changelog.md:1013 msgid "" "**Introduce new Flower Baseline: FedAvg MNIST** " "([#1497](https://github.com/adap/flower/pull/1497), " @@ -21807,7 +21926,7 @@ msgstr "" "([#1497](https://github.com/adap/flower/pull/1497), " "[#1552](https://github.com/adap/flower/pull/1552))" -#: ../../source/ref-changelog.md:993 +#: ../../source/ref-changelog.md:1015 msgid "" "Over the coming weeks, we will be releasing a number of new reference " "implementations useful especially to FL newcomers. They will typically " @@ -21827,7 +21946,7 @@ msgstr "" "suite.](https://flower.ai/blog/2023-01-12-fl-starter-pack-fedavg-mnist-" "cnn/)" -#: ../../source/ref-changelog.md:995 +#: ../../source/ref-changelog.md:1017 msgid "" "**Improve GPU support in simulations** " "([#1555](https://github.com/adap/flower/pull/1555))" @@ -21835,7 +21954,7 @@ msgstr "" "**Améliorer la prise en charge des GPU dans les simulations** " "([#1555](https://github.com/adap/flower/pull/1555))" -#: ../../source/ref-changelog.md:997 +#: ../../source/ref-changelog.md:1019 msgid "" "The Ray-based Virtual Client Engine (`start_simulation`) has been updated" " to improve GPU support. The update includes some of the hard-earned " @@ -21849,7 +21968,7 @@ msgstr "" "paramètres par défaut rendent l'exécution des simulations basées sur les " "GPU beaucoup plus robuste." -#: ../../source/ref-changelog.md:999 +#: ../../source/ref-changelog.md:1021 msgid "" "**Improve GPU support in Jupyter Notebook tutorials** " "([#1527](https://github.com/adap/flower/pull/1527), " @@ -21859,7 +21978,7 @@ msgstr "" "Notebook** ([#1527](https://github.com/adap/flower/pull/1527), " "[#1558](https://github.com/adap/flower/pull/1558))" -#: ../../source/ref-changelog.md:1001 +#: ../../source/ref-changelog.md:1023 msgid "" "Some users reported that Jupyter Notebooks have not always been easy to " "use on GPU instances. We listened and made improvements to all of our " @@ -21870,7 +21989,7 @@ msgstr "" "écoutés et avons apporté des améliorations à tous nos carnets Jupyter ! " "Découvre les carnets mis à jour ici :" -#: ../../source/ref-changelog.md:1003 +#: ../../source/ref-changelog.md:1025 #, fuzzy msgid "" "[An Introduction to Federated Learning](https://flower.ai/docs/framework" @@ -21879,7 +21998,7 @@ msgstr "" "[Une introduction à l'apprentissage fédéré] " "(https://flower.ai/docs/tutorial/Flower-1-Intro-to-FL-PyTorch.html)" -#: ../../source/ref-changelog.md:1004 +#: ../../source/ref-changelog.md:1026 #, fuzzy msgid "" "[Strategies in Federated Learning](https://flower.ai/docs/framework" @@ -21888,7 +22007,7 @@ msgstr "" "[Stratégies d'apprentissage fédéré] " "(https://flower.ai/docs/tutorial/Flower-2-Strategies-in-FL-PyTorch.html)" -#: ../../source/ref-changelog.md:1005 +#: ../../source/ref-changelog.md:1027 #, fuzzy msgid "" "[Building a Strategy](https://flower.ai/docs/framework/tutorial-build-a" @@ -21898,7 +22017,7 @@ msgstr "" "(https://flower.ai/docs/tutorial/Flower-3-Building-a-Strategy-" "PyTorch.html)" -#: ../../source/ref-changelog.md:1006 +#: ../../source/ref-changelog.md:1028 #, fuzzy msgid "" "[Client and NumPyClient](https://flower.ai/docs/framework/tutorial-" @@ -21907,7 +22026,7 @@ msgstr "" "[Client et NumPyClient] (https://flower.ai/docs/tutorial/Flower-4-Client-" "and-NumPyClient-PyTorch.html)" -#: ../../source/ref-changelog.md:1008 +#: ../../source/ref-changelog.md:1030 msgid "" "**Introduce optional telemetry** " "([#1533](https://github.com/adap/flower/pull/1533), " @@ -21919,7 +22038,7 @@ msgstr "" "[#1544](https://github.com/adap/flower/pull/1544), " "[#1584](https://github.com/adap/flower/pull/1584))" -#: ../../source/ref-changelog.md:1010 +#: ../../source/ref-changelog.md:1032 msgid "" "After a [request for " "feedback](https://github.com/adap/flower/issues/1534) from the community," @@ -21936,7 +22055,7 @@ msgstr "" "comment Flower est utilisé et quels sont les défis auxquels les " "utilisateurs peuvent être confrontés." -#: ../../source/ref-changelog.md:1012 +#: ../../source/ref-changelog.md:1034 #, fuzzy msgid "" "**Flower is a friendly framework for collaborative AI and data science.**" @@ -21950,7 +22069,7 @@ msgstr "" "souhaitent pas partager des métriques d'utilisation anonymes.[Lire la " "suite.](https://flower.ai/docs/telemetry.html)." -#: ../../source/ref-changelog.md:1014 +#: ../../source/ref-changelog.md:1036 msgid "" "**Introduce (experimental) Driver API** " "([#1520](https://github.com/adap/flower/pull/1520), " @@ -21969,7 +22088,7 @@ msgstr "" "[#1551](https://github.com/adap/flower/pull/1551), " "[#1567](https://github.com/adap/flower/pull/1567))" -#: ../../source/ref-changelog.md:1016 +#: ../../source/ref-changelog.md:1038 msgid "" "Flower now has a new (experimental) Driver API which will enable fully " "programmable, async, and multi-tenant Federated Learning and Federated " @@ -21984,7 +22103,7 @@ msgstr "" "laquelle de nombreuses fonctionnalités à venir seront construites - et tu" " peux commencer à construire ces choses dès maintenant, aussi." -#: ../../source/ref-changelog.md:1018 +#: ../../source/ref-changelog.md:1040 msgid "" "The Driver API also enables a new execution mode in which the server runs" " indefinitely. Multiple individual workloads can run concurrently and " @@ -21997,7 +22116,7 @@ msgstr "" "leur exécution indépendamment du serveur. Ceci est particulièrement utile" " pour les utilisateurs qui souhaitent déployer Flower en production." -#: ../../source/ref-changelog.md:1020 +#: ../../source/ref-changelog.md:1042 msgid "" "To learn more, check out the `mt-pytorch` code example. We look forward " "to you feedback!" @@ -22005,7 +22124,7 @@ msgstr "" "Pour en savoir plus, consulte l'exemple de code `mt-pytorch`. Nous " "attendons tes commentaires avec impatience !" -#: ../../source/ref-changelog.md:1022 +#: ../../source/ref-changelog.md:1044 msgid "" "Please note: *The Driver API is still experimental and will likely change" " significantly over time.*" @@ -22013,7 +22132,7 @@ msgstr "" "Remarque : *L'API du pilote est encore expérimentale et est susceptible " "de changer de manière significative au fil du temps.*" -#: ../../source/ref-changelog.md:1024 +#: ../../source/ref-changelog.md:1046 msgid "" "**Add new Federated Analytics with Pandas example** " "([#1469](https://github.com/adap/flower/pull/1469), " @@ -22023,7 +22142,7 @@ msgstr "" "([#1469](https://github.com/adap/flower/pull/1469), " "[#1535](https://github.com/adap/flower/pull/1535))" -#: ../../source/ref-changelog.md:1026 +#: ../../source/ref-changelog.md:1048 msgid "" "A new code example (`quickstart-pandas`) demonstrates federated analytics" " with Pandas and Flower. You can find it here: [quickstart-" @@ -22035,7 +22154,7 @@ msgstr "" "pandas](https://github.com/adap/flower/tree/main/examples/quickstart-" "pandas)." -#: ../../source/ref-changelog.md:1028 +#: ../../source/ref-changelog.md:1050 msgid "" "**Add new strategies: Krum and MultiKrum** " "([#1481](https://github.com/adap/flower/pull/1481))" @@ -22043,7 +22162,7 @@ msgstr "" "**Ajouter de nouvelles stratégies : Krum et MultiKrum** " "([#1481](https://github.com/adap/flower/pull/1481))" -#: ../../source/ref-changelog.md:1030 +#: ../../source/ref-changelog.md:1052 msgid "" "Edoardo, a computer science student at the Sapienza University of Rome, " "contributed a new `Krum` strategy that enables users to easily use Krum " @@ -22053,7 +22172,7 @@ msgstr "" "contribué à une nouvelle stratégie `Krum` qui permet aux utilisateurs " "d'utiliser facilement Krum et MultiKrum dans leurs charges de travail." -#: ../../source/ref-changelog.md:1032 +#: ../../source/ref-changelog.md:1054 msgid "" "**Update C++ example to be compatible with Flower v1.2.0** " "([#1495](https://github.com/adap/flower/pull/1495))" @@ -22061,7 +22180,7 @@ msgstr "" "**Mettre à jour l'exemple C++ pour qu'il soit compatible avec Flower " "v1.2.0** ([#1495](https://github.com/adap/flower/pull/1495))" -#: ../../source/ref-changelog.md:1034 +#: ../../source/ref-changelog.md:1056 msgid "" "The C++ code example has received a substantial update to make it " "compatible with the latest version of Flower." @@ -22069,7 +22188,7 @@ msgstr "" "L'exemple de code C++ a reçu une mise à jour substantielle pour le rendre" " compatible avec la dernière version de Flower." -#: ../../source/ref-changelog.md:1036 +#: ../../source/ref-changelog.md:1058 msgid "" "**General improvements** " "([#1491](https://github.com/adap/flower/pull/1491), " @@ -22101,7 +22220,7 @@ msgstr "" "[#1564](https://github.com/adap/flower/pull/1564), " "[#1566](https://github.com/adap/flower/pull/1566))" -#: ../../source/ref-changelog.md:1040 +#: ../../source/ref-changelog.md:1062 msgid "" "**Updated documentation** " "([#1494](https://github.com/adap/flower/pull/1494), " @@ -22125,7 +22244,7 @@ msgstr "" "[#1519](https://github.com/adap/flower/pull/1519), " "[#1515](https://github.com/adap/flower/pull/1515))" -#: ../../source/ref-changelog.md:1044 +#: ../../source/ref-changelog.md:1066 msgid "" "One highlight is the new [first time contributor " "guide](https://flower.ai/docs/first-time-contributors.html): if you've " @@ -22135,11 +22254,11 @@ msgstr "" "(https://flower.ai/docs/first-time-contributors.html) : si tu n'as jamais" " contribué sur GitHub auparavant, c'est l'endroit idéal pour commencer !" -#: ../../source/ref-changelog.md:1050 +#: ../../source/ref-changelog.md:1072 msgid "v1.1.0 (2022-10-31)" msgstr "v1.1.0 (2022-10-31)" -#: ../../source/ref-changelog.md:1054 +#: ../../source/ref-changelog.md:1076 msgid "" "We would like to give our **special thanks** to all the contributors who " "made the new version of Flower possible (in `git shortlog` order):" @@ -22148,7 +22267,7 @@ msgstr "" " qui ont rendu possible la nouvelle version de Flower (dans l'ordre `git " "shortlog`) :" -#: ../../source/ref-changelog.md:1056 +#: ../../source/ref-changelog.md:1078 msgid "" "`Akis Linardos`, `Christopher S`, `Daniel J. Beutel`, `George`, `Jan " "Schlicht`, `Mohammad Fares`, `Pedro Porto Buarque de Gusmão`, `Philipp " @@ -22160,7 +22279,7 @@ msgstr "" "Wiesner`, `Rob Luke`, `Taner Topal`, `VasundharaAgarwal`, " "`danielnugraha`, `edogab33`" -#: ../../source/ref-changelog.md:1060 +#: ../../source/ref-changelog.md:1082 msgid "" "**Introduce Differential Privacy wrappers (preview)** " "([#1357](https://github.com/adap/flower/pull/1357), " @@ -22170,7 +22289,7 @@ msgstr "" "([#1357](https://github.com/adap/flower/pull/1357), " "[#1460](https://github.com/adap/flower/pull/1460))" -#: ../../source/ref-changelog.md:1062 +#: ../../source/ref-changelog.md:1084 msgid "" "The first (experimental) preview of pluggable Differential Privacy " "wrappers enables easy configuration and usage of differential privacy " @@ -22186,7 +22305,7 @@ msgstr "" "voir les documents de Flower, un nouvel explicatif va plus loin dans les " "détails." -#: ../../source/ref-changelog.md:1064 +#: ../../source/ref-changelog.md:1086 msgid "" "**New iOS CoreML code example** " "([#1289](https://github.com/adap/flower/pull/1289))" @@ -22194,7 +22313,7 @@ msgstr "" "**Nouvel exemple de code CoreML pour iOS** " "([#1289](https://github.com/adap/flower/pull/1289))" -#: ../../source/ref-changelog.md:1066 +#: ../../source/ref-changelog.md:1088 msgid "" "Flower goes iOS! A massive new code example shows how Flower clients can " "be built for iOS. The code example contains both Flower iOS SDK " @@ -22207,7 +22326,7 @@ msgstr "" "utilisés pour de nombreuses tâches, et un exemple de tâche fonctionnant " "sur CoreML." -#: ../../source/ref-changelog.md:1068 +#: ../../source/ref-changelog.md:1090 msgid "" "**New FedMedian strategy** " "([#1461](https://github.com/adap/flower/pull/1461))" @@ -22215,7 +22334,7 @@ msgstr "" "**Nouvelle stratégie de FedMedian** " "([#1461](https://github.com/adap/flower/pull/1461))" -#: ../../source/ref-changelog.md:1070 +#: ../../source/ref-changelog.md:1092 msgid "" "The new `FedMedian` strategy implements Federated Median (FedMedian) by " "[Yin et al., 2018](https://arxiv.org/pdf/1803.01498v1.pdf)." @@ -22224,7 +22343,7 @@ msgstr "" "(FedMedian) par [Yin et al., 2018] " "(https://arxiv.org/pdf/1803.01498v1.pdf)." -#: ../../source/ref-changelog.md:1072 +#: ../../source/ref-changelog.md:1094 msgid "" "**Log** `Client` **exceptions in Virtual Client Engine** " "([#1493](https://github.com/adap/flower/pull/1493))" @@ -22232,7 +22351,7 @@ msgstr "" "**Log** `Client` **exceptions dans le moteur de client virtuel** " "([#1493](https://github.com/adap/flower/pull/1493))" -#: ../../source/ref-changelog.md:1074 +#: ../../source/ref-changelog.md:1096 msgid "" "All `Client` exceptions happening in the VCE are now logged by default " "and not just exposed to the configured `Strategy` (via the `failures` " @@ -22242,7 +22361,7 @@ msgstr "" "maintenant enregistrées par défaut et ne sont pas seulement exposées à la" " `Stratégie` configurée (via l'argument `failures`)." -#: ../../source/ref-changelog.md:1076 +#: ../../source/ref-changelog.md:1098 msgid "" "**Improve Virtual Client Engine internals** " "([#1401](https://github.com/adap/flower/pull/1401), " @@ -22252,7 +22371,7 @@ msgstr "" "([#1401](https://github.com/adap/flower/pull/1401), " "[#1453](https://github.com/adap/flower/pull/1453))" -#: ../../source/ref-changelog.md:1078 +#: ../../source/ref-changelog.md:1100 msgid "" "Some internals of the Virtual Client Engine have been revamped. The VCE " "now uses Ray 2.0 under the hood, the value type of the `client_resources`" @@ -22263,7 +22382,7 @@ msgstr "" "dictionnaire `client_resources` a été remplacé par `float` pour permettre" " l'allocation de fractions de ressources." -#: ../../source/ref-changelog.md:1080 +#: ../../source/ref-changelog.md:1102 msgid "" "**Support optional** `Client`**/**`NumPyClient` **methods in Virtual " "Client Engine**" @@ -22271,7 +22390,7 @@ msgstr "" "**Support optional** `Client`**/**`NumPyClient` **methods in Virtual " "Client Engine**" -#: ../../source/ref-changelog.md:1082 +#: ../../source/ref-changelog.md:1104 msgid "" "The Virtual Client Engine now has full support for optional `Client` (and" " `NumPyClient`) methods." @@ -22279,7 +22398,7 @@ msgstr "" "Le moteur de client virtuel prend désormais en charge les méthodes " "optionnelles `Client` (et `NumPyClient`)." -#: ../../source/ref-changelog.md:1084 +#: ../../source/ref-changelog.md:1106 msgid "" "**Provide type information to packages using** `flwr` " "([#1377](https://github.com/adap/flower/pull/1377))" @@ -22287,7 +22406,7 @@ msgstr "" "**Fournir des informations de type aux paquets en utilisant** `flwr` " "([#1377](https://github.com/adap/flower/pull/1377))" -#: ../../source/ref-changelog.md:1086 +#: ../../source/ref-changelog.md:1108 msgid "" "The package `flwr` is now bundled with a `py.typed` file indicating that " "the package is typed. This enables typing support for projects or " @@ -22300,7 +22419,7 @@ msgstr "" "permettant d'améliorer leur code à l'aide de vérificateurs de types " "statiques comme `mypy`." -#: ../../source/ref-changelog.md:1088 +#: ../../source/ref-changelog.md:1110 msgid "" "**Updated code example** " "([#1344](https://github.com/adap/flower/pull/1344), " @@ -22310,7 +22429,7 @@ msgstr "" "([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" -#: ../../source/ref-changelog.md:1090 +#: ../../source/ref-changelog.md:1112 msgid "" "The code examples covering scikit-learn and PyTorch Lightning have been " "updated to work with the latest version of Flower." @@ -22318,7 +22437,7 @@ msgstr "" "Les exemples de code couvrant scikit-learn et PyTorch Lightning ont été " "mis à jour pour fonctionner avec la dernière version de Flower." -#: ../../source/ref-changelog.md:1092 +#: ../../source/ref-changelog.md:1114 msgid "" "**Updated documentation** " "([#1355](https://github.com/adap/flower/pull/1355), " @@ -22358,7 +22477,7 @@ msgstr "" "[#1465](https://github.com/adap/flower/pull/1465), " "[#1467](https://github.com/adap/flower/pull/1467))" -#: ../../source/ref-changelog.md:1094 +#: ../../source/ref-changelog.md:1116 msgid "" "There have been so many documentation updates that it doesn't even make " "sense to list them individually." @@ -22366,7 +22485,7 @@ msgstr "" "Il y a eu tellement de mises à jour de la documentation que cela n'a même" " pas de sens de les énumérer individuellement." -#: ../../source/ref-changelog.md:1096 +#: ../../source/ref-changelog.md:1118 msgid "" "**Restructured documentation** " "([#1387](https://github.com/adap/flower/pull/1387))" @@ -22374,7 +22493,7 @@ msgstr "" "**Documentation restructurée** " "([#1387](https://github.com/adap/flower/pull/1387))" -#: ../../source/ref-changelog.md:1098 +#: ../../source/ref-changelog.md:1120 msgid "" "The documentation has been restructured to make it easier to navigate. " "This is just the first step in a larger effort to make the Flower " @@ -22384,7 +22503,7 @@ msgstr "" "n'est que la première étape d'un effort plus important visant à faire de " "la documentation de Flower la meilleure documentation de tous les projets" -#: ../../source/ref-changelog.md:1100 +#: ../../source/ref-changelog.md:1122 msgid "" "**Open in Colab button** " "([#1389](https://github.com/adap/flower/pull/1389))" @@ -22392,7 +22511,7 @@ msgstr "" "**Ouvrir dans le bouton Colab** " "([#1389](https://github.com/adap/flower/pull/1389))" -#: ../../source/ref-changelog.md:1102 +#: ../../source/ref-changelog.md:1124 msgid "" "The four parts of the Flower Federated Learning Tutorial now come with a " "new `Open in Colab` button. No need to install anything on your local " @@ -22405,7 +22524,7 @@ msgstr "" "maintenant utiliser et apprendre à connaître Flower dans ton navigateur, " "il te suffit d'un simple clic." -#: ../../source/ref-changelog.md:1104 +#: ../../source/ref-changelog.md:1126 msgid "" "**Improved tutorial** ([#1468](https://github.com/adap/flower/pull/1468)," " [#1470](https://github.com/adap/flower/pull/1470), " @@ -22421,7 +22540,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475))" -#: ../../source/ref-changelog.md:1106 +#: ../../source/ref-changelog.md:1128 msgid "" "The Flower Federated Learning Tutorial has two brand-new parts covering " "custom strategies (still WIP) and the distinction between `Client` and " @@ -22434,27 +22553,27 @@ msgstr "" "existantes ont également été améliorées (beaucoup de petits changements " "et de corrections)." -#: ../../source/ref-changelog.md:1112 +#: ../../source/ref-changelog.md:1134 msgid "v1.0.0 (2022-07-28)" msgstr "v1.0.0 (2022-07-28)" -#: ../../source/ref-changelog.md:1114 +#: ../../source/ref-changelog.md:1136 msgid "Highlights" msgstr "Points forts" -#: ../../source/ref-changelog.md:1116 +#: ../../source/ref-changelog.md:1138 msgid "Stable **Virtual Client Engine** (accessible via `start_simulation`)" msgstr "Moteur de client virtuel stable** (accessible via `start_simulation`)" -#: ../../source/ref-changelog.md:1117 +#: ../../source/ref-changelog.md:1139 msgid "All `Client`/`NumPyClient` methods are now optional" msgstr "Toutes les méthodes `Client`/`NumPyClient` sont maintenant optionnelles" -#: ../../source/ref-changelog.md:1118 +#: ../../source/ref-changelog.md:1140 msgid "Configurable `get_parameters`" msgstr "`get_parameters` configurable" -#: ../../source/ref-changelog.md:1119 +#: ../../source/ref-changelog.md:1141 msgid "" "Tons of small API cleanups resulting in a more coherent developer " "experience" @@ -22462,7 +22581,7 @@ msgstr "" "Des tonnes de petits nettoyages d'API résultant en une expérience plus " "cohérente pour les développeurs" -#: ../../source/ref-changelog.md:1123 +#: ../../source/ref-changelog.md:1145 msgid "" "We would like to give our **special thanks** to all the contributors who " "made Flower 1.0 possible (in reverse [GitHub " @@ -22472,7 +22591,7 @@ msgstr "" "ont rendu Flower 1.0 possible (dans l'ordre inverse de [GitHub " "Contributors](https://github.com/adap/flower/graphs/contributors)) :" -#: ../../source/ref-changelog.md:1125 +#: ../../source/ref-changelog.md:1147 msgid "" "[@rtaiello](https://github.com/rtaiello), " "[@g-pichler](https://github.com/g-pichler), [@rob-" @@ -22532,7 +22651,7 @@ msgstr "" "/Jueun-Park), [@architjen](https://github.com/architjen), " "[@PratikGarai](https://github.com/PratikGarai), [@mrinaald](" -#: ../../source/ref-changelog.md:1129 +#: ../../source/ref-changelog.md:1151 msgid "" "**All arguments must be passed as keyword arguments** " "([#1338](https://github.com/adap/flower/pull/1338))" @@ -22540,7 +22659,7 @@ msgstr "" "**Tous les arguments doivent être passés comme des arguments de mot-clé**" " ([#1338](https://github.com/adap/flower/pull/1338))" -#: ../../source/ref-changelog.md:1131 +#: ../../source/ref-changelog.md:1153 #, fuzzy msgid "" "Pass all arguments as keyword arguments, positional arguments are not " @@ -22556,7 +22675,7 @@ msgstr "" "``start_client(server_address=\"127.0.0.1:8080\", " "client=FlowerClient())`)." -#: ../../source/ref-changelog.md:1133 +#: ../../source/ref-changelog.md:1155 msgid "" "**Introduce configuration object** `ServerConfig` **in** `start_server` " "**and** `start_simulation` " @@ -22566,7 +22685,7 @@ msgstr "" "`start_server` **et** `start_simulation` " "([#1317](https://github.com/adap/flower/pull/1317))" -#: ../../source/ref-changelog.md:1135 +#: ../../source/ref-changelog.md:1157 msgid "" "Instead of a config dictionary `{\"num_rounds\": 3, \"round_timeout\": " "600.0}`, `start_server` and `start_simulation` now expect a configuration" @@ -22582,7 +22701,7 @@ msgstr "" "sécurisé plus facile et les valeurs des paramètres par défaut plus " "transparentes." -#: ../../source/ref-changelog.md:1137 +#: ../../source/ref-changelog.md:1159 msgid "" "**Rename built-in strategy parameters for clarity** " "([#1334](https://github.com/adap/flower/pull/1334))" @@ -22590,7 +22709,7 @@ msgstr "" "**Renommer les paramètres de la stratégie intégrée pour plus de clarté** " "([#1334](https://github.com/adap/flower/pull/1334))" -#: ../../source/ref-changelog.md:1139 +#: ../../source/ref-changelog.md:1161 msgid "" "The following built-in strategy parameters were renamed to improve " "readability and consistency with other API's:" @@ -22598,19 +22717,19 @@ msgstr "" "Les paramètres de stratégie intégrés suivants ont été renommés pour " "améliorer la lisibilité et la cohérence avec d'autres API :" -#: ../../source/ref-changelog.md:1141 +#: ../../source/ref-changelog.md:1163 msgid "`fraction_eval` --> `fraction_evaluate`" msgstr "`fraction_eval` --> `fraction_evaluate`" -#: ../../source/ref-changelog.md:1142 +#: ../../source/ref-changelog.md:1164 msgid "`min_eval_clients` --> `min_evaluate_clients`" msgstr "`min_eval_clients` --> `min_evaluate_clients`" -#: ../../source/ref-changelog.md:1143 +#: ../../source/ref-changelog.md:1165 msgid "`eval_fn` --> `evaluate_fn`" msgstr "`eval_fn` --> `evaluate_fn`" -#: ../../source/ref-changelog.md:1145 +#: ../../source/ref-changelog.md:1167 msgid "" "**Update default arguments of built-in strategies** " "([#1278](https://github.com/adap/flower/pull/1278))" @@ -22618,7 +22737,7 @@ msgstr "" "**Mettre à jour les arguments par défaut des stratégies intégrées** " "([#1278](https://github.com/adap/flower/pull/1278))" -#: ../../source/ref-changelog.md:1147 +#: ../../source/ref-changelog.md:1169 msgid "" "All built-in strategies now use `fraction_fit=1.0` and " "`fraction_evaluate=1.0`, which means they select *all* currently " @@ -22633,11 +22752,11 @@ msgstr "" "peuvent retrouver le comportement antérieur en initialisant la stratégie " "de la manière suivante :" -#: ../../source/ref-changelog.md:1149 +#: ../../source/ref-changelog.md:1171 msgid "`strategy = FedAvg(fraction_fit=0.1, fraction_evaluate=0.1)`" msgstr "`stratégie = FedAvg(fraction_fit=0.1, fraction_evaluate=0.1)`" -#: ../../source/ref-changelog.md:1151 +#: ../../source/ref-changelog.md:1173 msgid "" "**Add** `server_round` **to** `Strategy.evaluate` " "([#1334](https://github.com/adap/flower/pull/1334))" @@ -22645,7 +22764,7 @@ msgstr "" "**Ajouter** `server_round` **à** `Strategy.evaluate` " "([#1334](https://github.com/adap/flower/pull/1334))" -#: ../../source/ref-changelog.md:1153 +#: ../../source/ref-changelog.md:1175 msgid "" "The `Strategy` method `evaluate` now receives the current round of " "federated learning/evaluation as the first parameter." @@ -22653,7 +22772,7 @@ msgstr "" "La méthode `Stratégie` `évaluer` reçoit maintenant le cycle actuel " "d'apprentissage/évaluation fédéré comme premier paramètre." -#: ../../source/ref-changelog.md:1155 +#: ../../source/ref-changelog.md:1177 msgid "" "**Add** `server_round` **and** `config` **parameters to** `evaluate_fn` " "([#1334](https://github.com/adap/flower/pull/1334))" @@ -22661,7 +22780,7 @@ msgstr "" "**Ajouter** `server_round` **et** `config` **paramètres à** `evaluate_fn`" " ([#1334](https://github.com/adap/flower/pull/1334))" -#: ../../source/ref-changelog.md:1157 +#: ../../source/ref-changelog.md:1179 msgid "" "The `evaluate_fn` passed to built-in strategies like `FedAvg` now takes " "three parameters: (1) The current round of federated learning/evaluation " @@ -22674,7 +22793,7 @@ msgstr "" " modèle à évaluer (`parameters`), et (3) un dictionnaire de configuration" " (`config`)." -#: ../../source/ref-changelog.md:1159 +#: ../../source/ref-changelog.md:1181 msgid "" "**Rename** `rnd` **to** `server_round` " "([#1321](https://github.com/adap/flower/pull/1321))" @@ -22682,7 +22801,7 @@ msgstr "" "**Rename** `rnd` **to** `server_round` " "([#1321](https://github.com/adap/flower/pull/1321))" -#: ../../source/ref-changelog.md:1161 +#: ../../source/ref-changelog.md:1183 msgid "" "Several Flower methods and functions (`evaluate_fn`, `configure_fit`, " "`aggregate_fit`, `configure_evaluate`, `aggregate_evaluate`) receive the " @@ -22697,7 +22816,7 @@ msgstr "" " la fiabilité et éviter la confusion avec *random*, ce paramètre a été " "renommé de `rnd` à `server_round`." -#: ../../source/ref-changelog.md:1163 +#: ../../source/ref-changelog.md:1185 msgid "" "**Move** `flwr.dataset` **to** `flwr_baselines` " "([#1273](https://github.com/adap/flower/pull/1273))" @@ -22705,11 +22824,11 @@ msgstr "" "**Déplacer** `flwr.dataset` **vers** `flwr_baselines` " "([#1273](https://github.com/adap/flower/pull/1273))" -#: ../../source/ref-changelog.md:1165 +#: ../../source/ref-changelog.md:1187 msgid "The experimental package `flwr.dataset` was migrated to Flower Baselines." msgstr "Le paquet expérimental `flwr.dataset` a été migré vers Flower Baselines." -#: ../../source/ref-changelog.md:1167 +#: ../../source/ref-changelog.md:1189 msgid "" "**Remove experimental strategies** " "([#1280](https://github.com/adap/flower/pull/1280))" @@ -22717,7 +22836,7 @@ msgstr "" "**Supprimer les stratégies expérimentales** " "([#1280](https://github.com/adap/flower/pull/1280))" -#: ../../source/ref-changelog.md:1169 +#: ../../source/ref-changelog.md:1191 msgid "" "Remove unmaintained experimental strategies (`FastAndSlow`, `FedFSv0`, " "`FedFSv1`)." @@ -22725,7 +22844,7 @@ msgstr "" "Supprimer les stratégies expérimentales non maintenues (`FastAndSlow`, " "`FedFSv0`, `FedFSv1`)." -#: ../../source/ref-changelog.md:1171 +#: ../../source/ref-changelog.md:1193 msgid "" "**Rename** `Weights` **to** `NDArrays` " "([#1258](https://github.com/adap/flower/pull/1258), " @@ -22735,7 +22854,7 @@ msgstr "" "([#1258](https://github.com/adap/flower/pull/1258), " "[#1259](https://github.com/adap/flower/pull/1259))" -#: ../../source/ref-changelog.md:1173 +#: ../../source/ref-changelog.md:1195 msgid "" "`flwr.common.Weights` was renamed to `flwr.common.NDArrays` to better " "capture what this type is all about." @@ -22743,7 +22862,7 @@ msgstr "" "`flwr.common.Weights` a été renommé en `flwr.common.NDArys` pour mieux " "rendre compte de la nature de ce type." -#: ../../source/ref-changelog.md:1175 +#: ../../source/ref-changelog.md:1197 msgid "" "**Remove antiquated** `force_final_distributed_eval` **from** " "`start_server` ([#1258](https://github.com/adap/flower/pull/1258), " @@ -22753,7 +22872,7 @@ msgstr "" "`start_server` ([#1258](https://github.com/adap/flower/pull/1258), " "[#1259](https://github.com/adap/flower/pull/1259))" -#: ../../source/ref-changelog.md:1177 +#: ../../source/ref-changelog.md:1199 msgid "" "The `start_server` parameter `force_final_distributed_eval` has long been" " a historic artefact, in this release it is finally gone for good." @@ -22762,7 +22881,7 @@ msgstr "" "été un artefact historique, dans cette version il a finalement disparu " "pour de bon." -#: ../../source/ref-changelog.md:1179 +#: ../../source/ref-changelog.md:1201 msgid "" "**Make** `get_parameters` **configurable** " "([#1242](https://github.com/adap/flower/pull/1242))" @@ -22770,7 +22889,7 @@ msgstr "" "**Make** `get_parameters` **configurable** " "([#1242](https://github.com/adap/flower/pull/1242))" -#: ../../source/ref-changelog.md:1181 +#: ../../source/ref-changelog.md:1203 msgid "" "The `get_parameters` method now accepts a configuration dictionary, just " "like `get_properties`, `fit`, and `evaluate`." @@ -22778,7 +22897,7 @@ msgstr "" "La méthode `get_parameters` accepte maintenant un dictionnaire de " "configuration, tout comme `get_properties`, `fit`, et `evaluate`." -#: ../../source/ref-changelog.md:1183 +#: ../../source/ref-changelog.md:1205 msgid "" "**Replace** `num_rounds` **in** `start_simulation` **with new** `config` " "**parameter** ([#1281](https://github.com/adap/flower/pull/1281))" @@ -22787,7 +22906,7 @@ msgstr "" " `config` **paramètre** " "([#1281](https://github.com/adap/flower/pull/1281))" -#: ../../source/ref-changelog.md:1185 +#: ../../source/ref-changelog.md:1207 msgid "" "The `start_simulation` function now accepts a configuration dictionary " "`config` instead of the `num_rounds` integer. This improves the " @@ -22799,7 +22918,7 @@ msgstr "" " cohérence entre `start_simulation` et `start_server` et facilite la " "transition entre les deux." -#: ../../source/ref-changelog.md:1189 +#: ../../source/ref-changelog.md:1211 msgid "" "**Support Python 3.10** " "([#1320](https://github.com/adap/flower/pull/1320))" @@ -22807,7 +22926,7 @@ msgstr "" "**Support Python 3.10** " "([#1320](https://github.com/adap/flower/pull/1320))" -#: ../../source/ref-changelog.md:1191 +#: ../../source/ref-changelog.md:1213 msgid "" "The previous Flower release introduced experimental support for Python " "3.10, this release declares Python 3.10 support as stable." @@ -22816,7 +22935,7 @@ msgstr "" "expérimentale de Python 3.10, cette version déclare la prise en charge de" " Python 3.10 comme stable." -#: ../../source/ref-changelog.md:1193 +#: ../../source/ref-changelog.md:1215 msgid "" "**Make all** `Client` **and** `NumPyClient` **methods optional** " "([#1260](https://github.com/adap/flower/pull/1260), " @@ -22826,7 +22945,7 @@ msgstr "" "**facultatives** ([#1260](https://github.com/adap/flower/pull/1260), " "[#1277](https://github.com/adap/flower/pull/1277))" -#: ../../source/ref-changelog.md:1195 +#: ../../source/ref-changelog.md:1217 msgid "" "The `Client`/`NumPyClient` methods `get_properties`, `get_parameters`, " "`fit`, and `evaluate` are all optional. This enables writing clients that" @@ -22839,7 +22958,7 @@ msgstr "" "méthode. Pas besoin d'implémenter `evaluate` quand on utilise " "l'évaluation centralisée !" -#: ../../source/ref-changelog.md:1197 +#: ../../source/ref-changelog.md:1219 msgid "" "**Enable passing a** `Server` **instance to** `start_simulation` " "([#1281](https://github.com/adap/flower/pull/1281))" @@ -22847,7 +22966,7 @@ msgstr "" "**Autoriser le passage d'une **instance `Server` à** `start_simulation` " "([#1281](https://github.com/adap/flower/pull/1281))" -#: ../../source/ref-changelog.md:1199 +#: ../../source/ref-changelog.md:1221 msgid "" "Similar to `start_server`, `start_simulation` now accepts a full `Server`" " instance. This enables users to heavily customize the execution of " @@ -22860,7 +22979,7 @@ msgstr "" "l'exécution, par exemple, de FL asynchrones à l'aide du moteur de client " "virtuel." -#: ../../source/ref-changelog.md:1201 +#: ../../source/ref-changelog.md:1223 msgid "" "**Update code examples** " "([#1291](https://github.com/adap/flower/pull/1291), " @@ -22872,7 +22991,7 @@ msgstr "" "[#1286](https://github.com/adap/flower/pull/1286), " "[#1282](https://github.com/adap/flower/pull/1282))" -#: ../../source/ref-changelog.md:1203 +#: ../../source/ref-changelog.md:1225 msgid "" "Many code examples received small or even large maintenance updates, " "among them are" @@ -22880,31 +22999,31 @@ msgstr "" "De nombreux exemples de code ont reçu de petites ou même de grandes mises" " à jour de maintenance" -#: ../../source/ref-changelog.md:1205 +#: ../../source/ref-changelog.md:1227 msgid "`scikit-learn`" msgstr "`scikit-learn`" -#: ../../source/ref-changelog.md:1206 +#: ../../source/ref-changelog.md:1228 msgid "`simulation_pytorch`" msgstr "`simulation_pytorch`" -#: ../../source/ref-changelog.md:1207 +#: ../../source/ref-changelog.md:1229 msgid "`quickstart_pytorch`" msgstr "`quickstart_pytorch` (démarrage rapide)" -#: ../../source/ref-changelog.md:1208 +#: ../../source/ref-changelog.md:1230 msgid "`quickstart_simulation`" msgstr "`quickstart_simulation`" -#: ../../source/ref-changelog.md:1209 +#: ../../source/ref-changelog.md:1231 msgid "`quickstart_tensorflow`" msgstr "`quickstart_tensorflow`" -#: ../../source/ref-changelog.md:1210 +#: ../../source/ref-changelog.md:1232 msgid "`advanced_tensorflow`" msgstr "`advanced_tensorflow` (en anglais)" -#: ../../source/ref-changelog.md:1212 +#: ../../source/ref-changelog.md:1234 msgid "" "**Remove the obsolete simulation example** " "([#1328](https://github.com/adap/flower/pull/1328))" @@ -22912,7 +23031,7 @@ msgstr "" "**Supprime l'exemple de simulation obsolète** " "([#1328](https://github.com/adap/flower/pull/1328))" -#: ../../source/ref-changelog.md:1214 +#: ../../source/ref-changelog.md:1236 msgid "" "Removes the obsolete `simulation` example and renames " "`quickstart_simulation` to `simulation_tensorflow` so it fits withs the " @@ -22922,7 +23041,7 @@ msgstr "" "`quickstart_simulation` en `simulation_tensorflow` pour qu'il corresponde" " au nom de `simulation_pytorch`" -#: ../../source/ref-changelog.md:1216 +#: ../../source/ref-changelog.md:1238 msgid "" "**Update documentation** " "([#1223](https://github.com/adap/flower/pull/1223), " @@ -22948,7 +23067,7 @@ msgstr "" "[#1305](https://github.com/adap/flower/pull/1305), " "[#1307](https://github.com/adap/flower/pull/1307))" -#: ../../source/ref-changelog.md:1218 +#: ../../source/ref-changelog.md:1240 msgid "" "One substantial documentation update fixes multiple smaller rendering " "issues, makes titles more succinct to improve navigation, removes a " @@ -22965,12 +23084,12 @@ msgstr "" "markdown, migre le changelog de `.rst` vers `.md`, et corrige un certain " "nombre de détails plus petits !" -#: ../../source/ref-changelog.md:1220 ../../source/ref-changelog.md:1275 -#: ../../source/ref-changelog.md:1344 ../../source/ref-changelog.md:1383 +#: ../../source/ref-changelog.md:1242 ../../source/ref-changelog.md:1297 +#: ../../source/ref-changelog.md:1366 ../../source/ref-changelog.md:1405 msgid "**Minor updates**" msgstr "**Mises à jour mineures**" -#: ../../source/ref-changelog.md:1222 +#: ../../source/ref-changelog.md:1244 msgid "" "Add round number to fit and evaluate log messages " "([#1266](https://github.com/adap/flower/pull/1266))" @@ -22978,7 +23097,7 @@ msgstr "" "Ajoute un chiffre rond pour ajuster et évaluer les messages du journal " "([#1266](https://github.com/adap/flower/pull/1266))" -#: ../../source/ref-changelog.md:1223 +#: ../../source/ref-changelog.md:1245 msgid "" "Add secure gRPC connection to the `advanced_tensorflow` code example " "([#847](https://github.com/adap/flower/pull/847))" @@ -22986,7 +23105,7 @@ msgstr "" "Ajouter une connexion gRPC sécurisée à l'exemple de code " "`advanced_tensorflow` ([#847](https://github.com/adap/flower/pull/847))" -#: ../../source/ref-changelog.md:1224 +#: ../../source/ref-changelog.md:1246 msgid "" "Update developer tooling " "([#1231](https://github.com/adap/flower/pull/1231), " @@ -23000,7 +23119,7 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310))" -#: ../../source/ref-changelog.md:1225 +#: ../../source/ref-changelog.md:1247 msgid "" "Rename ProtoBuf messages to improve consistency " "([#1214](https://github.com/adap/flower/pull/1214), " @@ -23012,11 +23131,11 @@ msgstr "" "[#1258](https://github.com/adap/flower/pull/1258), " "[#1259](https://github.com/adap/flower/pull/1259))" -#: ../../source/ref-changelog.md:1227 +#: ../../source/ref-changelog.md:1249 msgid "v0.19.0 (2022-05-18)" msgstr "v0.19.0 (2022-05-18)" -#: ../../source/ref-changelog.md:1231 +#: ../../source/ref-changelog.md:1253 msgid "" "**Flower Baselines (preview): FedOpt, FedBN, FedAvgM** " "([#919](https://github.com/adap/flower/pull/919), " @@ -23028,7 +23147,7 @@ msgstr "" "[#1127](https://github.com/adap/flower/pull/1127), " "[#914](https://github.com/adap/flower/pull/914))" -#: ../../source/ref-changelog.md:1233 +#: ../../source/ref-changelog.md:1255 #, fuzzy msgid "" "The first preview release of Flower Baselines has arrived! We're " @@ -23047,7 +23166,7 @@ msgstr "" "également la communauté à [contribuer à leurs propres lignes de " "base](https://flower.ai/docs/baselines/how-to-contribute-baselines.html)." -#: ../../source/ref-changelog.md:1235 +#: ../../source/ref-changelog.md:1257 msgid "" "**C++ client SDK (preview) and code example** " "([#1111](https://github.com/adap/flower/pull/1111))" @@ -23055,7 +23174,7 @@ msgstr "" "**SDK client C++ (aperçu) et exemple de code** " "([#1111](https://github.com/adap/flower/pull/1111))" -#: ../../source/ref-changelog.md:1237 +#: ../../source/ref-changelog.md:1259 msgid "" "Preview support for Flower clients written in C++. The C++ preview " "includes a Flower client SDK and a quickstart code example that " @@ -23065,7 +23184,7 @@ msgstr "" "code de démarrage rapide qui démontre un client C++ simple utilisant le " "SDK." -#: ../../source/ref-changelog.md:1239 +#: ../../source/ref-changelog.md:1261 msgid "" "**Add experimental support for Python 3.10 and Python 3.11** " "([#1135](https://github.com/adap/flower/pull/1135))" @@ -23073,7 +23192,7 @@ msgstr "" "**Ajouter la prise en charge expérimentale de Python 3.10 et Python " "3.11** ([#1135](https://github.com/adap/flower/pull/1135))" -#: ../../source/ref-changelog.md:1241 +#: ../../source/ref-changelog.md:1263 msgid "" "Python 3.10 is the latest stable release of Python and Python 3.11 is due" " to be released in October. This Flower release adds experimental support" @@ -23083,7 +23202,7 @@ msgstr "" "devrait sortir en octobre. Cette version de Flower ajoute une prise en " "charge expérimentale pour les deux versions de Python." -#: ../../source/ref-changelog.md:1243 +#: ../../source/ref-changelog.md:1265 msgid "" "**Aggregate custom metrics through user-provided functions** " "([#1144](https://github.com/adap/flower/pull/1144))" @@ -23091,7 +23210,7 @@ msgstr "" "**Agréger des mesures personnalisées grâce à des fonctions fournies par " "l'utilisateur** ([#1144](https://github.com/adap/flower/pull/1144))" -#: ../../source/ref-changelog.md:1245 +#: ../../source/ref-changelog.md:1267 msgid "" "Custom metrics (e.g., `accuracy`) can now be aggregated without having to" " customize the strategy. Built-in strategies support two new arguments, " @@ -23103,7 +23222,7 @@ msgstr "" "permettent de passer des fonctions d'agrégation de métriques " "personnalisées." -#: ../../source/ref-changelog.md:1247 +#: ../../source/ref-changelog.md:1269 msgid "" "**User-configurable round timeout** " "([#1162](https://github.com/adap/flower/pull/1162))" @@ -23111,7 +23230,7 @@ msgstr "" "**Temps d'attente configurable par l'utilisateur** " "([#1162](https://github.com/adap/flower/pull/1162))" -#: ../../source/ref-changelog.md:1249 +#: ../../source/ref-changelog.md:1271 msgid "" "A new configuration value allows the round timeout to be set for " "`start_server` and `start_simulation`. If the `config` dictionary " @@ -23123,7 +23242,7 @@ msgstr "" "valeur `float` en secondes), le serveur attendra *au moins* " "`round_timeout` secondes avant de fermer la connexion." -#: ../../source/ref-changelog.md:1251 +#: ../../source/ref-changelog.md:1273 msgid "" "**Enable both federated evaluation and centralized evaluation to be used " "at the same time in all built-in strategies** " @@ -23133,7 +23252,7 @@ msgstr "" "l'évaluation centralisée dans toutes les stratégies intégrées** " "([#1091](https://github.com/adap/flower/pull/1091))" -#: ../../source/ref-changelog.md:1253 +#: ../../source/ref-changelog.md:1275 msgid "" "Built-in strategies can now perform both federated evaluation (i.e., " "client-side) and centralized evaluation (i.e., server-side) in the same " @@ -23145,7 +23264,7 @@ msgstr "" "(c'est-à-dire côté serveur) dans le même tour. L'évaluation fédérée peut " "être désactivée en réglant `fraction_eval` sur `0.0`." -#: ../../source/ref-changelog.md:1255 +#: ../../source/ref-changelog.md:1277 msgid "" "**Two new Jupyter Notebook tutorials** " "([#1141](https://github.com/adap/flower/pull/1141))" @@ -23153,7 +23272,7 @@ msgstr "" "**Deux nouveaux tutoriels Jupyter Notebook** " "([#1141](https://github.com/adap/flower/pull/1141))" -#: ../../source/ref-changelog.md:1257 +#: ../../source/ref-changelog.md:1279 msgid "" "Two Jupyter Notebook tutorials (compatible with Google Colab) explain " "basic and intermediate Flower features:" @@ -23161,7 +23280,7 @@ msgstr "" "Deux tutoriels Jupyter Notebook (compatibles avec Google Colab) " "expliquent les fonctionnalités de base et intermédiaires de Flower :" -#: ../../source/ref-changelog.md:1259 +#: ../../source/ref-changelog.md:1281 msgid "" "*An Introduction to Federated Learning*: [Open in " "Colab](https://colab.research.google.com/github/adap/flower/blob/main/tutorials/Flower-1" @@ -23171,7 +23290,7 @@ msgstr "" "Colab](https://colab.research.google.com/github/adap/flower/blob/main/tutorials/Flower-1" "-Intro-to-FL-PyTorch.ipynb)" -#: ../../source/ref-changelog.md:1261 +#: ../../source/ref-changelog.md:1283 msgid "" "*Using Strategies in Federated Learning*: [Open in " "Colab](https://colab.research.google.com/github/adap/flower/blob/main/tutorials/Flower-2" @@ -23181,7 +23300,7 @@ msgstr "" "Colab](https://colab.research.google.com/github/adap/flower/blob/main/tutorials/Flower-2" "-Strategies-in-FL-PyTorch.ipynb)" -#: ../../source/ref-changelog.md:1263 +#: ../../source/ref-changelog.md:1285 msgid "" "**New FedAvgM strategy (Federated Averaging with Server Momentum)** " "([#1076](https://github.com/adap/flower/pull/1076))" @@ -23189,7 +23308,7 @@ msgstr "" "**Nouvelle stratégie FedAvgM (Federated Averaging with Server Momentum)**" " ([#1076](https://github.com/adap/flower/pull/1076))" -#: ../../source/ref-changelog.md:1265 +#: ../../source/ref-changelog.md:1287 #, fuzzy msgid "" "The new `FedAvgM` strategy implements Federated Averaging with Server " @@ -23198,7 +23317,7 @@ msgstr "" "La nouvelle stratégie `FedAvgM` met en œuvre la moyenne fédérée avec le " "momentum du serveur [Hsu et al., 2019]." -#: ../../source/ref-changelog.md:1267 +#: ../../source/ref-changelog.md:1289 msgid "" "**New advanced PyTorch code example** " "([#1007](https://github.com/adap/flower/pull/1007))" @@ -23206,7 +23325,7 @@ msgstr "" "**Nouvel exemple de code PyTorch avancé** " "([#1007](https://github.com/adap/flower/pull/1007))" -#: ../../source/ref-changelog.md:1269 +#: ../../source/ref-changelog.md:1291 msgid "" "A new code example (`advanced_pytorch`) demonstrates advanced Flower " "concepts with PyTorch." @@ -23214,7 +23333,7 @@ msgstr "" "Un nouvel exemple de code (`advanced_pytorch`) démontre des concepts de " "fleur avancés avec PyTorch." -#: ../../source/ref-changelog.md:1271 +#: ../../source/ref-changelog.md:1293 msgid "" "**New JAX code example** " "([#906](https://github.com/adap/flower/pull/906), " @@ -23224,7 +23343,7 @@ msgstr "" "([#906](https://github.com/adap/flower/pull/906), " "[#1143](https://github.com/adap/flower/pull/1143))" -#: ../../source/ref-changelog.md:1273 +#: ../../source/ref-changelog.md:1295 msgid "" "A new code example (`jax_from_centralized_to_federated`) shows federated " "learning with JAX and Flower." @@ -23232,7 +23351,7 @@ msgstr "" "Un nouvel exemple de code (`jax_from_centralized_to_federated`) montre " "l'apprentissage fédéré avec JAX et Flower." -#: ../../source/ref-changelog.md:1277 +#: ../../source/ref-changelog.md:1299 msgid "" "New option to keep Ray running if Ray was already initialized in " "`start_simulation` ([#1177](https://github.com/adap/flower/pull/1177))" @@ -23241,7 +23360,7 @@ msgstr "" "initialisé dans `start_simulation` " "([#1177](https://github.com/adap/flower/pull/1177))" -#: ../../source/ref-changelog.md:1278 +#: ../../source/ref-changelog.md:1300 msgid "" "Add support for custom `ClientManager` as a `start_simulation` parameter " "([#1171](https://github.com/adap/flower/pull/1171))" @@ -23250,7 +23369,7 @@ msgstr "" "paramètre de `start_simulation` " "([#1171](https://github.com/adap/flower/pull/1171))" -#: ../../source/ref-changelog.md:1279 +#: ../../source/ref-changelog.md:1301 #, fuzzy msgid "" "New documentation for [implementing " @@ -23263,7 +23382,7 @@ msgstr "" "strategies.html) ([#1097](https://github.com/adap/flower/pull/1097), " "[#1175](https://github.com/adap/flower/pull/1175))" -#: ../../source/ref-changelog.md:1280 +#: ../../source/ref-changelog.md:1302 msgid "" "New mobile-friendly documentation theme " "([#1174](https://github.com/adap/flower/pull/1174))" @@ -23271,7 +23390,7 @@ msgstr "" "Nouveau thème de documentation adapté aux mobiles " "([#1174](https://github.com/adap/flower/pull/1174))" -#: ../../source/ref-changelog.md:1281 +#: ../../source/ref-changelog.md:1303 msgid "" "Limit version range for (optional) `ray` dependency to include only " "compatible releases (`>=1.9.2,<1.12.0`) " @@ -23281,7 +23400,7 @@ msgstr "" "n'inclure que les versions compatibles (`>=1.9.2,<1.12.0`) " "([#1205](https://github.com/adap/flower/pull/1205))" -#: ../../source/ref-changelog.md:1285 +#: ../../source/ref-changelog.md:1307 msgid "" "**Remove deprecated support for Python 3.6** " "([#871](https://github.com/adap/flower/pull/871))" @@ -23289,7 +23408,7 @@ msgstr "" "**Supprime la prise en charge obsolète de Python 3.6** " "([#871](https://github.com/adap/flower/pull/871))" -#: ../../source/ref-changelog.md:1286 +#: ../../source/ref-changelog.md:1308 msgid "" "**Remove deprecated KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" @@ -23297,7 +23416,7 @@ msgstr "" "**Supprimez KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:1287 +#: ../../source/ref-changelog.md:1309 msgid "" "**Remove deprecated no-op extra installs** " "([#973](https://github.com/adap/flower/pull/973))" @@ -23305,7 +23424,7 @@ msgstr "" "**Supprimer les installations supplémentaires no-op dépréciées** " "([#973](https://github.com/adap/flower/pull/973))" -#: ../../source/ref-changelog.md:1288 +#: ../../source/ref-changelog.md:1310 msgid "" "**Remove deprecated proto fields from** `FitRes` **and** `EvaluateRes` " "([#869](https://github.com/adap/flower/pull/869))" @@ -23313,7 +23432,7 @@ msgstr "" "**Supprimez les champs proto obsolètes de** `FitRes` **et** `EvaluateRes`" " ([#869](https://github.com/adap/flower/pull/869))" -#: ../../source/ref-changelog.md:1289 +#: ../../source/ref-changelog.md:1311 msgid "" "**Remove deprecated QffedAvg strategy (replaced by QFedAvg)** " "([#1107](https://github.com/adap/flower/pull/1107))" @@ -23321,7 +23440,7 @@ msgstr "" "**Supprime la stratégie QffedAvg (remplacée par QFedAvg)** " "([#1107](https://github.com/adap/flower/pull/1107))" -#: ../../source/ref-changelog.md:1290 +#: ../../source/ref-changelog.md:1312 msgid "" "**Remove deprecated DefaultStrategy strategy** " "([#1142](https://github.com/adap/flower/pull/1142))" @@ -23329,7 +23448,7 @@ msgstr "" "**Supprime la stratégie DefaultStrategy qui est obsolète** " "([#1142](https://github.com/adap/flower/pull/1142))" -#: ../../source/ref-changelog.md:1291 +#: ../../source/ref-changelog.md:1313 msgid "" "**Remove deprecated support for eval_fn accuracy return value** " "([#1142](https://github.com/adap/flower/pull/1142))" @@ -23337,7 +23456,7 @@ msgstr "" "**Supprimer la prise en charge obsolète de la valeur de retour de la " "précision eval_fn** ([#1142](https://github.com/adap/flower/pull/1142))" -#: ../../source/ref-changelog.md:1292 +#: ../../source/ref-changelog.md:1314 msgid "" "**Remove deprecated support for passing initial parameters as NumPy " "ndarrays** ([#1142](https://github.com/adap/flower/pull/1142))" @@ -23346,11 +23465,11 @@ msgstr "" " en tant que ndarrays NumPy** " "([#1142](https://github.com/adap/flower/pull/1142))" -#: ../../source/ref-changelog.md:1294 +#: ../../source/ref-changelog.md:1316 msgid "v0.18.0 (2022-02-28)" msgstr "v0.18.0 (2022-02-28)" -#: ../../source/ref-changelog.md:1298 +#: ../../source/ref-changelog.md:1320 msgid "" "**Improved Virtual Client Engine compatibility with Jupyter Notebook / " "Google Colab** ([#866](https://github.com/adap/flower/pull/866), " @@ -23365,7 +23484,7 @@ msgstr "" "[#833](https://github.com/adap/flower/pull/833), " "[#1036](https://github.com/adap/flower/pull/1036))" -#: ../../source/ref-changelog.md:1300 +#: ../../source/ref-changelog.md:1322 msgid "" "Simulations (using the Virtual Client Engine through `start_simulation`) " "now work more smoothly on Jupyter Notebooks (incl. Google Colab) after " @@ -23377,7 +23496,7 @@ msgstr "" "Notebooks Jupyter (y compris Google Colab) après avoir installé Flower " "avec l'option `simulation` (`pip install 'flwr[simulation]'`)." -#: ../../source/ref-changelog.md:1302 +#: ../../source/ref-changelog.md:1324 msgid "" "**New Jupyter Notebook code example** " "([#833](https://github.com/adap/flower/pull/833))" @@ -23385,7 +23504,7 @@ msgstr "" "**Nouvel exemple de code Jupyter Notebook** " "([#833](https://github.com/adap/flower/pull/833))" -#: ../../source/ref-changelog.md:1304 +#: ../../source/ref-changelog.md:1326 msgid "" "A new code example (`quickstart_simulation`) demonstrates Flower " "simulations using the Virtual Client Engine through Jupyter Notebook " @@ -23395,7 +23514,7 @@ msgstr "" "simulations de Flower en utilisant le moteur de client virtuel via " "Jupyter Notebook (y compris Google Colab)." -#: ../../source/ref-changelog.md:1306 +#: ../../source/ref-changelog.md:1328 msgid "" "**Client properties (feature preview)** " "([#795](https://github.com/adap/flower/pull/795))" @@ -23403,7 +23522,7 @@ msgstr "" "**Propriétés du client (aperçu des fonctionnalités)** " "([#795](https://github.com/adap/flower/pull/795))" -#: ../../source/ref-changelog.md:1308 +#: ../../source/ref-changelog.md:1330 msgid "" "Clients can implement a new method `get_properties` to enable server-side" " strategies to query client properties." @@ -23412,7 +23531,7 @@ msgstr "" "pour permettre aux stratégies côté serveur d'interroger les propriétés du" " client." -#: ../../source/ref-changelog.md:1310 +#: ../../source/ref-changelog.md:1332 msgid "" "**Experimental Android support with TFLite** " "([#865](https://github.com/adap/flower/pull/865))" @@ -23420,7 +23539,7 @@ msgstr "" "**Support expérimental d'Android avec TFLite** " "([#865](https://github.com/adap/flower/pull/865))" -#: ../../source/ref-changelog.md:1312 +#: ../../source/ref-changelog.md:1334 msgid "" "Android support has finally arrived in `main`! Flower is both client-" "agnostic and framework-agnostic by design. One can integrate arbitrary " @@ -23432,7 +23551,7 @@ msgstr "" "intégrer des plates-formes client arbitraires et avec cette version, " "l'utilisation de Flower sur Android est devenue beaucoup plus facile." -#: ../../source/ref-changelog.md:1314 +#: ../../source/ref-changelog.md:1336 msgid "" "The example uses TFLite on the client side, along with a new " "`FedAvgAndroid` strategy. The Android client and `FedAvgAndroid` are " @@ -23446,7 +23565,7 @@ msgstr "" "part entière et une implémentation unifiée de `FedAvg` intégrant la " "nouvelle fonctionnalité de `FedAvgAndroid`." -#: ../../source/ref-changelog.md:1316 +#: ../../source/ref-changelog.md:1338 msgid "" "**Make gRPC keepalive time user-configurable and decrease default " "keepalive time** ([#1069](https://github.com/adap/flower/pull/1069))" @@ -23455,7 +23574,7 @@ msgstr "" "diminuer le temps de garde par défaut** " "([#1069](https://github.com/adap/flower/pull/1069))" -#: ../../source/ref-changelog.md:1318 +#: ../../source/ref-changelog.md:1340 msgid "" "The default gRPC keepalive time has been reduced to increase the " "compatibility of Flower with more cloud environments (for example, " @@ -23468,7 +23587,7 @@ msgstr "" "de keepalive pour personnaliser la pile gRPC en fonction d'exigences " "spécifiques." -#: ../../source/ref-changelog.md:1320 +#: ../../source/ref-changelog.md:1342 msgid "" "**New differential privacy example using Opacus and PyTorch** " "([#805](https://github.com/adap/flower/pull/805))" @@ -23476,7 +23595,7 @@ msgstr "" "**Nouvel exemple de confidentialité différentielle utilisant Opacus et " "PyTorch** ([#805](https://github.com/adap/flower/pull/805))" -#: ../../source/ref-changelog.md:1322 +#: ../../source/ref-changelog.md:1344 msgid "" "A new code example (`opacus`) demonstrates differentially-private " "federated learning with Opacus, PyTorch, and Flower." @@ -23484,7 +23603,7 @@ msgstr "" "Un nouvel exemple de code (`opacus`) démontre l'apprentissage fédéré " "différentiellement privé avec Opacus, PyTorch et Flower." -#: ../../source/ref-changelog.md:1324 +#: ../../source/ref-changelog.md:1346 msgid "" "**New Hugging Face Transformers code example** " "([#863](https://github.com/adap/flower/pull/863))" @@ -23492,7 +23611,7 @@ msgstr "" "**Nouvel exemple de code pour les Transformers à visage embrassant** " "([#863](https://github.com/adap/flower/pull/863))" -#: ../../source/ref-changelog.md:1326 +#: ../../source/ref-changelog.md:1348 msgid "" "A new code example (`quickstart_huggingface`) demonstrates usage of " "Hugging Face Transformers with Flower." @@ -23500,7 +23619,7 @@ msgstr "" "Un nouvel exemple de code (`quickstart_huggingface`) démontre " "l'utilisation des transformateurs Hugging Face avec Flower." -#: ../../source/ref-changelog.md:1328 +#: ../../source/ref-changelog.md:1350 msgid "" "**New MLCube code example** " "([#779](https://github.com/adap/flower/pull/779), " @@ -23514,7 +23633,7 @@ msgstr "" "[#1065](https://github.com/adap/flower/pull/1065), " "[#1090](https://github.com/adap/flower/pull/1090))" -#: ../../source/ref-changelog.md:1330 +#: ../../source/ref-changelog.md:1352 msgid "" "A new code example (`quickstart_mlcube`) demonstrates usage of MLCube " "with Flower." @@ -23522,7 +23641,7 @@ msgstr "" "Un nouvel exemple de code (`quickstart_mlcube`) démontre l'utilisation de" " MLCube avec Flower." -#: ../../source/ref-changelog.md:1332 +#: ../../source/ref-changelog.md:1354 msgid "" "**SSL-enabled server and client** " "([#842](https://github.com/adap/flower/pull/842), " @@ -23539,7 +23658,7 @@ msgstr "" "[#993](https://github.com/adap/flower/pull/993), " "[#994](https://github.com/adap/flower/pull/994))" -#: ../../source/ref-changelog.md:1334 +#: ../../source/ref-changelog.md:1356 msgid "" "SSL enables secure encrypted connections between clients and servers. " "This release open-sources the Flower secure gRPC implementation to make " @@ -23550,7 +23669,7 @@ msgstr "" "l'implémentation gRPC sécurisée de Flower afin de rendre les canaux de " "communication cryptés accessibles à tous les utilisateurs de Flower." -#: ../../source/ref-changelog.md:1336 +#: ../../source/ref-changelog.md:1358 msgid "" "**Updated** `FedAdam` **and** `FedYogi` **strategies** " "([#885](https://github.com/adap/flower/pull/885), " @@ -23560,7 +23679,7 @@ msgstr "" "([#885](https://github.com/adap/flower/pull/885), " "[#895](https://github.com/adap/flower/pull/895))" -#: ../../source/ref-changelog.md:1338 +#: ../../source/ref-changelog.md:1360 msgid "" "`FedAdam` and `FedAdam` match the latest version of the Adaptive " "Federated Optimization paper." @@ -23568,7 +23687,7 @@ msgstr "" "`FedAdam` et `FedAdam` correspondent à la dernière version de l'article " "sur l'optimisation fédérée adaptative." -#: ../../source/ref-changelog.md:1340 +#: ../../source/ref-changelog.md:1362 msgid "" "**Initialize** `start_simulation` **with a list of client IDs** " "([#860](https://github.com/adap/flower/pull/860))" @@ -23576,7 +23695,7 @@ msgstr "" "**Initialise** `start_simulation` **avec une liste d'ID de clients** " "([#860](https://github.com/adap/flower/pull/860))" -#: ../../source/ref-changelog.md:1342 +#: ../../source/ref-changelog.md:1364 msgid "" "`start_simulation` can now be called with a list of client IDs " "(`clients_ids`, type: `List[str]`). Those IDs will be passed to the " @@ -23590,7 +23709,7 @@ msgstr "" "être initialisé, ce qui peut faciliter le chargement de partitions de " "données qui ne sont pas accessibles par des identifiants `int`." -#: ../../source/ref-changelog.md:1346 +#: ../../source/ref-changelog.md:1368 msgid "" "Update `num_examples` calculation in PyTorch code examples in " "([#909](https://github.com/adap/flower/pull/909))" @@ -23598,7 +23717,7 @@ msgstr "" "Mettre à jour le calcul de `num_examples` dans les exemples de code " "PyTorch dans ([#909](https://github.com/adap/flower/pull/909))" -#: ../../source/ref-changelog.md:1347 +#: ../../source/ref-changelog.md:1369 msgid "" "Expose Flower version through `flwr.__version__` " "([#952](https://github.com/adap/flower/pull/952))" @@ -23606,7 +23725,7 @@ msgstr "" "Exposer la version de Flower à travers `flwr.__version__` " "([#952](https://github.com/adap/flower/pull/952))" -#: ../../source/ref-changelog.md:1348 +#: ../../source/ref-changelog.md:1370 msgid "" "`start_server` in `app.py` now returns a `History` object containing " "metrics from training ([#974](https://github.com/adap/flower/pull/974))" @@ -23615,7 +23734,7 @@ msgstr "" "contenant les métriques de l'entraînement " "([#974](https://github.com/adap/flower/pull/974))" -#: ../../source/ref-changelog.md:1349 +#: ../../source/ref-changelog.md:1371 msgid "" "Make `max_workers` (used by `ThreadPoolExecutor`) configurable " "([#978](https://github.com/adap/flower/pull/978))" @@ -23623,7 +23742,7 @@ msgstr "" "Rendre `max_workers` (utilisé par `ThreadPoolExecutor`) configurable " "([#978](https://github.com/adap/flower/pull/978))" -#: ../../source/ref-changelog.md:1350 +#: ../../source/ref-changelog.md:1372 msgid "" "Increase sleep time after server start to three seconds in all code " "examples ([#1086](https://github.com/adap/flower/pull/1086))" @@ -23632,7 +23751,7 @@ msgstr "" "secondes dans tous les exemples de code " "([#1086](https://github.com/adap/flower/pull/1086))" -#: ../../source/ref-changelog.md:1351 +#: ../../source/ref-changelog.md:1373 msgid "" "Added a new FAQ section to the documentation " "([#948](https://github.com/adap/flower/pull/948))" @@ -23640,7 +23759,7 @@ msgstr "" "Ajout d'une nouvelle section FAQ à la documentation " "([#948](https://github.com/adap/flower/pull/948))" -#: ../../source/ref-changelog.md:1352 +#: ../../source/ref-changelog.md:1374 msgid "" "And many more under-the-hood changes, library updates, documentation " "changes, and tooling improvements!" @@ -23649,7 +23768,7 @@ msgstr "" "bibliothèque, des modifications de la documentation et des améliorations " "de l'outillage !" -#: ../../source/ref-changelog.md:1356 +#: ../../source/ref-changelog.md:1378 msgid "" "**Removed** `flwr_example` **and** `flwr_experimental` **from release " "build** ([#869](https://github.com/adap/flower/pull/869))" @@ -23657,7 +23776,7 @@ msgstr "" "**Supprimé** `flwr_example` **et** `flwr_experimental` **de la version " "release build** ([#869](https://github.com/adap/flower/pull/869))" -#: ../../source/ref-changelog.md:1358 +#: ../../source/ref-changelog.md:1380 msgid "" "The packages `flwr_example` and `flwr_experimental` have been deprecated " "since Flower 0.12.0 and they are not longer included in Flower release " @@ -23671,11 +23790,11 @@ msgstr "" "tensorflow`, `http-logger`, `ops`) sont maintenant no-op et seront " "supprimés dans une prochaine version." -#: ../../source/ref-changelog.md:1360 +#: ../../source/ref-changelog.md:1382 msgid "v0.17.0 (2021-09-24)" msgstr "v0.17.0 (2021-09-24)" -#: ../../source/ref-changelog.md:1364 +#: ../../source/ref-changelog.md:1386 msgid "" "**Experimental virtual client engine** " "([#781](https://github.com/adap/flower/pull/781) " @@ -23687,7 +23806,7 @@ msgstr "" "[#790](https://github.com/adap/flower/pull/790) " "[#791](https://github.com/adap/flower/pull/791))" -#: ../../source/ref-changelog.md:1366 +#: ../../source/ref-changelog.md:1388 msgid "" "One of Flower's goals is to enable research at scale. This release " "enables a first (experimental) peek at a major new feature, codenamed the" @@ -23705,7 +23824,7 @@ msgstr "" "fonctionnalité est de regarder les deux nouveaux exemples de code appelés" " `quickstart_simulation` et `simulation_pytorch`." -#: ../../source/ref-changelog.md:1368 +#: ../../source/ref-changelog.md:1390 msgid "" "The feature is still experimental, so there's no stability guarantee for " "the API. It's also not quite ready for prime time and comes with a few " @@ -23718,7 +23837,7 @@ msgstr "" " les personnes curieuses sont encouragées à l'essayer et à faire part de " "leurs réflexions." -#: ../../source/ref-changelog.md:1370 +#: ../../source/ref-changelog.md:1392 msgid "" "**New built-in strategies** " "([#828](https://github.com/adap/flower/pull/828) " @@ -23728,7 +23847,7 @@ msgstr "" "([#828](https://github.com/adap/flower/pull/828) " "[#822](https://github.com/adap/flower/pull/822))" -#: ../../source/ref-changelog.md:1372 +#: ../../source/ref-changelog.md:1394 msgid "" "FedYogi - Federated learning strategy using Yogi on server-side. " "Implementation based on https://arxiv.org/abs/2003.00295" @@ -23736,7 +23855,7 @@ msgstr "" "FedYogi - Stratégie d'apprentissage fédéré utilisant Yogi côté serveur. " "Mise en oeuvre basée sur https://arxiv.org/abs/2003.00295" -#: ../../source/ref-changelog.md:1373 +#: ../../source/ref-changelog.md:1395 msgid "" "FedAdam - Federated learning strategy using Adam on server-side. " "Implementation based on https://arxiv.org/abs/2003.00295" @@ -23744,7 +23863,7 @@ msgstr "" "FedAdam - Stratégie d'apprentissage fédéré utilisant Adam côté serveur. " "Mise en œuvre basée sur https://arxiv.org/abs/2003.00295" -#: ../../source/ref-changelog.md:1375 +#: ../../source/ref-changelog.md:1397 msgid "" "**New PyTorch Lightning code example** " "([#617](https://github.com/adap/flower/pull/617))" @@ -23752,7 +23871,7 @@ msgstr "" "**Nouvel exemple de code PyTorch Lightning** " "([#617](https://github.com/adap/flower/pull/617))" -#: ../../source/ref-changelog.md:1377 +#: ../../source/ref-changelog.md:1399 msgid "" "**New Variational Auto-Encoder code example** " "([#752](https://github.com/adap/flower/pull/752))" @@ -23760,7 +23879,7 @@ msgstr "" "**Nouvel exemple de code d'autocodage variationnel** " "([#752](https://github.com/adap/flower/pull/752))" -#: ../../source/ref-changelog.md:1379 +#: ../../source/ref-changelog.md:1401 msgid "" "**New scikit-learn code example** " "([#748](https://github.com/adap/flower/pull/748))" @@ -23768,7 +23887,7 @@ msgstr "" "**Nouvel exemple de code scikit-learn** " "([#748](https://github.com/adap/flower/pull/748))" -#: ../../source/ref-changelog.md:1381 +#: ../../source/ref-changelog.md:1403 msgid "" "**New experimental TensorBoard strategy** " "([#789](https://github.com/adap/flower/pull/789))" @@ -23776,7 +23895,7 @@ msgstr "" "**Nouvelle stratégie expérimentale TensorBoard** " "([#789](https://github.com/adap/flower/pull/789))" -#: ../../source/ref-changelog.md:1385 +#: ../../source/ref-changelog.md:1407 msgid "" "Improved advanced TensorFlow code example " "([#769](https://github.com/adap/flower/pull/769))" @@ -23784,7 +23903,7 @@ msgstr "" "Amélioration de l'exemple de code TensorFlow avancé " "([#769](https://github.com/adap/flower/pull/769))" -#: ../../source/ref-changelog.md:1386 +#: ../../source/ref-changelog.md:1408 msgid "" "Warning when `min_available_clients` is misconfigured " "([#830](https://github.com/adap/flower/pull/830))" @@ -23792,7 +23911,7 @@ msgstr "" "Avertissement lorsque `min_available_clients` est mal configuré " "([#830](https://github.com/adap/flower/pull/830))" -#: ../../source/ref-changelog.md:1387 +#: ../../source/ref-changelog.md:1409 msgid "" "Improved gRPC server docs " "([#841](https://github.com/adap/flower/pull/841))" @@ -23800,7 +23919,7 @@ msgstr "" "Amélioration de la documentation sur le serveur gRPC " "([#841](https://github.com/adap/flower/pull/841))" -#: ../../source/ref-changelog.md:1388 +#: ../../source/ref-changelog.md:1410 msgid "" "Improved error message in `NumPyClient` " "([#851](https://github.com/adap/flower/pull/851))" @@ -23808,7 +23927,7 @@ msgstr "" "Amélioration du message d'erreur dans `NumPyClient` " "([#851](https://github.com/adap/flower/pull/851))" -#: ../../source/ref-changelog.md:1389 +#: ../../source/ref-changelog.md:1411 msgid "" "Improved PyTorch quickstart code example " "([#852](https://github.com/adap/flower/pull/852))" @@ -23816,7 +23935,7 @@ msgstr "" "Exemple de code de démarrage rapide PyTorch amélioré " "([#852](https://github.com/adap/flower/pull/852))" -#: ../../source/ref-changelog.md:1393 +#: ../../source/ref-changelog.md:1415 msgid "" "**Disabled final distributed evaluation** " "([#800](https://github.com/adap/flower/pull/800))" @@ -23824,7 +23943,7 @@ msgstr "" "**Désactivé l'évaluation finale distribuée** " "([#800](https://github.com/adap/flower/pull/800))" -#: ../../source/ref-changelog.md:1395 +#: ../../source/ref-changelog.md:1417 msgid "" "Prior behaviour was to perform a final round of distributed evaluation on" " all connected clients, which is often not required (e.g., when using " @@ -23837,7 +23956,7 @@ msgstr "" "l'évaluation côté serveur). Le comportement précédent peut être activé en" " passant `force_final_distributed_eval=True` à `start_server`." -#: ../../source/ref-changelog.md:1397 +#: ../../source/ref-changelog.md:1419 msgid "" "**Renamed q-FedAvg strategy** " "([#802](https://github.com/adap/flower/pull/802))" @@ -23845,7 +23964,7 @@ msgstr "" "**Renommé stratégie q-FedAvg** " "([#802](https://github.com/adap/flower/pull/802))" -#: ../../source/ref-changelog.md:1399 +#: ../../source/ref-changelog.md:1421 msgid "" "The strategy named `QffedAvg` was renamed to `QFedAvg` to better reflect " "the notation given in the original paper (q-FFL is the optimization " @@ -23860,7 +23979,7 @@ msgstr "" "des raisons de compatibilité (elle sera supprimée dans une prochaine " "version)." -#: ../../source/ref-changelog.md:1401 +#: ../../source/ref-changelog.md:1423 msgid "" "**Deprecated and renamed code example** `simulation_pytorch` **to** " "`simulation_pytorch_legacy` " @@ -23870,7 +23989,7 @@ msgstr "" "`simulation_pytorch_legacy` " "([#791](https://github.com/adap/flower/pull/791))" -#: ../../source/ref-changelog.md:1403 +#: ../../source/ref-changelog.md:1425 msgid "" "This example has been replaced by a new example. The new example is based" " on the experimental virtual client engine, which will become the new " @@ -23885,11 +24004,11 @@ msgstr "" "conservé à des fins de référence, mais il pourrait être supprimé à " "l'avenir." -#: ../../source/ref-changelog.md:1405 +#: ../../source/ref-changelog.md:1427 msgid "v0.16.0 (2021-05-11)" msgstr "v0.16.0 (2021-05-11)" -#: ../../source/ref-changelog.md:1409 +#: ../../source/ref-changelog.md:1431 msgid "" "**New built-in strategies** " "([#549](https://github.com/adap/flower/pull/549))" @@ -23897,11 +24016,11 @@ msgstr "" "**Nouvelles stratégies intégrées** " "([#549](https://github.com/adap/flower/pull/549))" -#: ../../source/ref-changelog.md:1411 +#: ../../source/ref-changelog.md:1433 msgid "(abstract) FedOpt" msgstr "(résumé) FedOpt" -#: ../../source/ref-changelog.md:1414 +#: ../../source/ref-changelog.md:1436 msgid "" "**Custom metrics for server and strategies** " "([#717](https://github.com/adap/flower/pull/717))" @@ -23909,7 +24028,7 @@ msgstr "" "**Métriques personnalisées pour le serveur et les stratégies** " "([#717](https://github.com/adap/flower/pull/717))" -#: ../../source/ref-changelog.md:1416 +#: ../../source/ref-changelog.md:1438 msgid "" "The Flower server is now fully task-agnostic, all remaining instances of " "task-specific metrics (such as `accuracy`) have been replaced by custom " @@ -23925,7 +24044,7 @@ msgstr "" " À partir de cette version, les métriques personnalisées remplacent les " "métriques spécifiques à une tâche sur le serveur." -#: ../../source/ref-changelog.md:1418 +#: ../../source/ref-changelog.md:1440 #, fuzzy msgid "" "Custom metric dictionaries are now used in two user-facing APIs: they are" @@ -23943,7 +24062,7 @@ msgstr "" "stratégies peuvent même renvoyer des dictionnaires de métriques " "*agrégées* pour que le serveur puisse en garder la trace." -#: ../../source/ref-changelog.md:1420 +#: ../../source/ref-changelog.md:1442 #, fuzzy msgid "" "Strategy implementations should migrate their `aggregate_fit` and " @@ -23957,7 +24076,7 @@ msgstr "" "d'évaluation côté serveur doivent migrer de `return loss, accuracy` à " "`return loss, {\"accuracy\" : accuracy}`." -#: ../../source/ref-changelog.md:1422 +#: ../../source/ref-changelog.md:1444 msgid "" "Flower 0.15-style return types are deprecated (but still supported), " "compatibility will be removed in a future release." @@ -23966,7 +24085,7 @@ msgstr "" "pris en charge), la compatibilité sera supprimée dans une prochaine " "version." -#: ../../source/ref-changelog.md:1424 +#: ../../source/ref-changelog.md:1446 msgid "" "**Migration warnings for deprecated functionality** " "([#690](https://github.com/adap/flower/pull/690))" @@ -23974,7 +24093,7 @@ msgstr "" "**Avertissements de migration pour les fonctionnalités obsolètes** " "([#690](https://github.com/adap/flower/pull/690))" -#: ../../source/ref-changelog.md:1426 +#: ../../source/ref-changelog.md:1448 msgid "" "Earlier versions of Flower were often migrated to new APIs, while " "maintaining compatibility with legacy APIs. This release introduces " @@ -23990,7 +24109,7 @@ msgstr "" "vers des API plus récentes, facilitant ainsi la transition d'une version " "à l'autre." -#: ../../source/ref-changelog.md:1428 +#: ../../source/ref-changelog.md:1450 msgid "" "Improved docs and docstrings " "([#691](https://github.com/adap/flower/pull/691) " @@ -24002,11 +24121,11 @@ msgstr "" "[#692](https://github.com/adap/flower/pull/692) " "[#713](https://github.com/adap/flower/pull/713))" -#: ../../source/ref-changelog.md:1430 +#: ../../source/ref-changelog.md:1452 msgid "MXNet example and documentation" msgstr "Exemple et documentation MXNet" -#: ../../source/ref-changelog.md:1432 +#: ../../source/ref-changelog.md:1454 msgid "" "FedBN implementation in example PyTorch: From Centralized To Federated " "([#696](https://github.com/adap/flower/pull/696) " @@ -24018,7 +24137,7 @@ msgstr "" "[#702](https://github.com/adap/flower/pull/702) " "[#705](https://github.com/adap/flower/pull/705))" -#: ../../source/ref-changelog.md:1436 +#: ../../source/ref-changelog.md:1458 msgid "" "**Serialization-agnostic server** " "([#721](https://github.com/adap/flower/pull/721))" @@ -24026,7 +24145,7 @@ msgstr "" "**Serveur agnostique de sérialisation** " "([#721](https://github.com/adap/flower/pull/721))" -#: ../../source/ref-changelog.md:1438 +#: ../../source/ref-changelog.md:1460 msgid "" "The Flower server is now fully serialization-agnostic. Prior usage of " "class `Weights` (which represents parameters as deserialized NumPy " @@ -24046,7 +24165,7 @@ msgstr "" "d'octets doivent être interprétés (par exemple, pour la " "sérialisation/désérialisation)." -#: ../../source/ref-changelog.md:1440 +#: ../../source/ref-changelog.md:1462 msgid "" "Built-in strategies implement this approach by handling serialization and" " deserialization to/from `Weights` internally. Custom/3rd-party Strategy " @@ -24063,7 +24182,7 @@ msgstr "" "[#721](https://github.com/adap/flower/pull/721) pour voir comment les " "stratégies peuvent facilement migrer vers le nouveau format." -#: ../../source/ref-changelog.md:1442 +#: ../../source/ref-changelog.md:1464 msgid "" "Deprecated `flwr.server.Server.evaluate`, use " "`flwr.server.Server.evaluate_round` instead " @@ -24073,11 +24192,11 @@ msgstr "" "`flwr.server.Server.evaluate_round` à la place " "([#717](https://github.com/adap/flower/pull/717))" -#: ../../source/ref-changelog.md:1444 +#: ../../source/ref-changelog.md:1466 msgid "v0.15.0 (2021-03-12)" msgstr "v0.15.0 (2021-03-12)" -#: ../../source/ref-changelog.md:1448 +#: ../../source/ref-changelog.md:1470 msgid "" "**Server-side parameter initialization** " "([#658](https://github.com/adap/flower/pull/658))" @@ -24085,7 +24204,7 @@ msgstr "" "**Initialisation des paramètres côté serveur** " "([#658](https://github.com/adap/flower/pull/658))" -#: ../../source/ref-changelog.md:1450 +#: ../../source/ref-changelog.md:1472 msgid "" "Model parameters can now be initialized on the server-side. Server-side " "parameter initialization works via a new `Strategy` method called " @@ -24095,7 +24214,7 @@ msgstr "" "serveur. L'initialisation des paramètres côté serveur fonctionne via une " "nouvelle méthode `Strategy` appelée `initialize_parameters`." -#: ../../source/ref-changelog.md:1452 +#: ../../source/ref-changelog.md:1474 msgid "" "Built-in strategies support a new constructor argument called " "`initial_parameters` to set the initial parameters. Built-in strategies " @@ -24107,7 +24226,7 @@ msgstr "" "initiaux. Les stratégies intégrées fourniront ces paramètres initiaux au " "serveur au démarrage et les supprimeront ensuite pour libérer la mémoire." -#: ../../source/ref-changelog.md:1471 +#: ../../source/ref-changelog.md:1493 msgid "" "If no initial parameters are provided to the strategy, the server will " "continue to use the current behaviour (namely, it will ask one of the " @@ -24119,7 +24238,7 @@ msgstr "" "l'un des clients connectés ses paramètres et les utilisera comme " "paramètres globaux initiaux)." -#: ../../source/ref-changelog.md:1475 +#: ../../source/ref-changelog.md:1497 msgid "" "Deprecate `flwr.server.strategy.DefaultStrategy` (migrate to " "`flwr.server.strategy.FedAvg`, which is equivalent)" @@ -24127,11 +24246,11 @@ msgstr "" "Déclasser `flwr.server.strategy.DefaultStrategy` (migrer vers " "`flwr.server.strategy.FedAvg`, qui est équivalent)" -#: ../../source/ref-changelog.md:1477 +#: ../../source/ref-changelog.md:1499 msgid "v0.14.0 (2021-02-18)" msgstr "v0.14.0 (2021-02-18)" -#: ../../source/ref-changelog.md:1481 +#: ../../source/ref-changelog.md:1503 msgid "" "**Generalized** `Client.fit` **and** `Client.evaluate` **return values** " "([#610](https://github.com/adap/flower/pull/610) " @@ -24143,7 +24262,7 @@ msgstr "" "[#572](https://github.com/adap/flower/pull/572) " "[#633](https://github.com/adap/flower/pull/633))" -#: ../../source/ref-changelog.md:1483 +#: ../../source/ref-changelog.md:1505 msgid "" "Clients can now return an additional dictionary mapping `str` keys to " "values of the following types: `bool`, `bytes`, `float`, `int`, `str`. " @@ -24156,7 +24275,7 @@ msgstr "" "valeurs presque arbitraires de `fit`/`evaluate` et les utiliser du côté " "du serveur !" -#: ../../source/ref-changelog.md:1485 +#: ../../source/ref-changelog.md:1507 msgid "" "This improvement also allowed for more consistent return types between " "`fit` and `evaluate`: `evaluate` should now return a tuple `(float, int, " @@ -24169,7 +24288,7 @@ msgstr "" "d'exemples, et un dictionnaire contenant des valeurs arbitraires " "spécifiques au problème comme la précision." -#: ../../source/ref-changelog.md:1487 +#: ../../source/ref-changelog.md:1509 msgid "" "In case you wondered: this feature is compatible with existing projects, " "the additional dictionary return value is optional. New code should " @@ -24186,7 +24305,7 @@ msgstr "" "Scalar]`, `evaluate` : `float, int, Dict[str, Scalar]`). Voir l'exemple " "ci-dessous pour plus de détails." -#: ../../source/ref-changelog.md:1489 +#: ../../source/ref-changelog.md:1511 msgid "" "*Code example:* note the additional dictionary return values in both " "`FlwrClient.fit` and `FlwrClient.evaluate`:" @@ -24194,7 +24313,7 @@ msgstr "" "*Exemple de code:* note les valeurs de retour du dictionnaire " "supplémentaires dans `FlwrClient.fit` et `FlwrClient.evaluate` :" -#: ../../source/ref-changelog.md:1504 +#: ../../source/ref-changelog.md:1526 msgid "" "**Generalized** `config` **argument in** `Client.fit` **and** " "`Client.evaluate` ([#595](https://github.com/adap/flower/pull/595))" @@ -24202,7 +24321,7 @@ msgstr "" "**Généralisé** `config` **argument dans** `Client.fit` **et** " "`Client.evaluate` ([#595](https://github.com/adap/flower/pull/595))" -#: ../../source/ref-changelog.md:1506 +#: ../../source/ref-changelog.md:1528 msgid "" "The `config` argument used to be of type `Dict[str, str]`, which means " "that dictionary values were expected to be strings. The new release " @@ -24214,7 +24333,7 @@ msgstr "" "nouvelle version généralise cela pour permettre les valeurs des types " "suivants : `bool`, `bytes`, `float`, `int`, `str`." -#: ../../source/ref-changelog.md:1508 +#: ../../source/ref-changelog.md:1530 msgid "" "This means one can now pass almost arbitrary values to `fit`/`evaluate` " "using the `config` dictionary. Yay, no more `str(epochs)` on the server-" @@ -24225,7 +24344,7 @@ msgstr "" "Yay, plus de `str(epochs)` du côté serveur et `int(config[\"epochs\"])` " "du côté client !" -#: ../../source/ref-changelog.md:1510 +#: ../../source/ref-changelog.md:1532 msgid "" "*Code example:* note that the `config` dictionary now contains non-`str` " "values in both `Client.fit` and `Client.evaluate`:" @@ -24233,11 +24352,11 @@ msgstr "" "*Exemple de code:* Notez que le dictionnaire `config` contient maintenant" " des valeurs autres que `str` dans `Client.fit` et `Client.evaluate` :" -#: ../../source/ref-changelog.md:1527 +#: ../../source/ref-changelog.md:1549 msgid "v0.13.0 (2021-01-08)" msgstr "v0.13.0 (2021-01-08)" -#: ../../source/ref-changelog.md:1531 +#: ../../source/ref-changelog.md:1553 msgid "" "New example: PyTorch From Centralized To Federated " "([#549](https://github.com/adap/flower/pull/549))" @@ -24245,21 +24364,21 @@ msgstr "" "Nouvel exemple : PyTorch de centralisé à fédéré " "([#549](https://github.com/adap/flower/pull/549))" -#: ../../source/ref-changelog.md:1532 +#: ../../source/ref-changelog.md:1554 msgid "Improved documentation" msgstr "Amélioration de la documentation" -#: ../../source/ref-changelog.md:1533 +#: ../../source/ref-changelog.md:1555 msgid "New documentation theme ([#551](https://github.com/adap/flower/pull/551))" msgstr "" "Nouveau thème de documentation " "([#551](https://github.com/adap/flower/pull/551))" -#: ../../source/ref-changelog.md:1534 +#: ../../source/ref-changelog.md:1556 msgid "New API reference ([#554](https://github.com/adap/flower/pull/554))" msgstr "Nouvelle référence API ([#554](https://github.com/adap/flower/pull/554))" -#: ../../source/ref-changelog.md:1535 +#: ../../source/ref-changelog.md:1557 msgid "" "Updated examples documentation " "([#549](https://github.com/adap/flower/pull/549))" @@ -24267,7 +24386,7 @@ msgstr "" "Mise à jour de la documentation des exemples " "([#549](https://github.com/adap/flower/pull/549))" -#: ../../source/ref-changelog.md:1536 +#: ../../source/ref-changelog.md:1558 msgid "" "Removed obsolete documentation " "([#548](https://github.com/adap/flower/pull/548))" @@ -24275,11 +24394,11 @@ msgstr "" "Suppression de la documentation obsolète " "([#548](https://github.com/adap/flower/pull/548))" -#: ../../source/ref-changelog.md:1538 +#: ../../source/ref-changelog.md:1560 msgid "Bugfix:" msgstr "Correction de bogues :" -#: ../../source/ref-changelog.md:1540 +#: ../../source/ref-changelog.md:1562 msgid "" "`Server.fit` does not disconnect clients when finished, disconnecting the" " clients is now handled in `flwr.server.start_server` " @@ -24292,15 +24411,15 @@ msgstr "" "([#553](https://github.com/adap/flower/pull/553) " "[#540](https://github.com/adap/flower/issues/540))." -#: ../../source/ref-changelog.md:1542 +#: ../../source/ref-changelog.md:1564 msgid "v0.12.0 (2020-12-07)" msgstr "v0.12.0 (2020-12-07)" -#: ../../source/ref-changelog.md:1544 ../../source/ref-changelog.md:1560 +#: ../../source/ref-changelog.md:1566 ../../source/ref-changelog.md:1582 msgid "Important changes:" msgstr "Changements importants :" -#: ../../source/ref-changelog.md:1546 +#: ../../source/ref-changelog.md:1568 msgid "" "Added an example for embedded devices " "([#507](https://github.com/adap/flower/pull/507))" @@ -24308,7 +24427,7 @@ msgstr "" "Ajout d'un exemple pour les périphériques embarqués " "([#507](https://github.com/adap/flower/pull/507))" -#: ../../source/ref-changelog.md:1547 +#: ../../source/ref-changelog.md:1569 msgid "" "Added a new NumPyClient (in addition to the existing KerasClient) " "([#504](https://github.com/adap/flower/pull/504) " @@ -24318,7 +24437,7 @@ msgstr "" "([#504](https://github.com/adap/flower/pull/504) " "[#508](https://github.com/adap/flower/pull/508))" -#: ../../source/ref-changelog.md:1548 +#: ../../source/ref-changelog.md:1570 msgid "" "Deprecated `flwr_example` package and started to migrate examples into " "the top-level `examples` directory " @@ -24330,15 +24449,15 @@ msgstr "" "([#494](https://github.com/adap/flower/pull/494) " "[#512](https://github.com/adap/flower/pull/512))" -#: ../../source/ref-changelog.md:1550 +#: ../../source/ref-changelog.md:1572 msgid "v0.11.0 (2020-11-30)" msgstr "v0.11.0 (2020-11-30)" -#: ../../source/ref-changelog.md:1552 +#: ../../source/ref-changelog.md:1574 msgid "Incompatible changes:" msgstr "Changements incompatibles :" -#: ../../source/ref-changelog.md:1554 +#: ../../source/ref-changelog.md:1576 msgid "" "Renamed strategy methods " "([#486](https://github.com/adap/flower/pull/486)) to unify the naming of " @@ -24355,23 +24474,23 @@ msgstr "" "quatre méthodes de Stratégie. Pour migrer, renommez les méthodes de " "`Strategy` suivantes en conséquence :" -#: ../../source/ref-changelog.md:1555 +#: ../../source/ref-changelog.md:1577 msgid "`on_configure_evaluate` => `configure_evaluate`" msgstr "`on_configure_evaluate` => `configure_evaluate`" -#: ../../source/ref-changelog.md:1556 +#: ../../source/ref-changelog.md:1578 msgid "`on_aggregate_evaluate` => `aggregate_evaluate`" msgstr "`on_aggregate_evaluate` => `aggregate_evaluate`" -#: ../../source/ref-changelog.md:1557 +#: ../../source/ref-changelog.md:1579 msgid "`on_configure_fit` => `configure_fit`" msgstr "`on_configure_fit` => `configure_fit`" -#: ../../source/ref-changelog.md:1558 +#: ../../source/ref-changelog.md:1580 msgid "`on_aggregate_fit` => `aggregate_fit`" msgstr "`on_aggregate_fit` => `aggregate_fit`" -#: ../../source/ref-changelog.md:1562 +#: ../../source/ref-changelog.md:1584 msgid "" "Deprecated `DefaultStrategy` " "([#479](https://github.com/adap/flower/pull/479)). To migrate use " @@ -24381,7 +24500,7 @@ msgstr "" "([#479](https://github.com/adap/flower/pull/479)). Pour migrer, utilisez " "`FedAvg` à la place." -#: ../../source/ref-changelog.md:1563 +#: ../../source/ref-changelog.md:1585 msgid "" "Simplified examples and baselines " "([#484](https://github.com/adap/flower/pull/484))." @@ -24389,7 +24508,7 @@ msgstr "" "Exemples simplifiés et lignes de base " "([#484](https://github.com/adap/flower/pull/484))." -#: ../../source/ref-changelog.md:1564 +#: ../../source/ref-changelog.md:1586 msgid "" "Removed presently unused `on_conclude_round` from strategy interface " "([#483](https://github.com/adap/flower/pull/483))." @@ -24397,7 +24516,7 @@ msgstr "" "Suppression de `on_conclude_round` actuellement inutilisé de l'interface " "de stratégie ([#483](https://github.com/adap/flower/pull/483))." -#: ../../source/ref-changelog.md:1565 +#: ../../source/ref-changelog.md:1587 msgid "" "Set minimal Python version to 3.6.1 instead of 3.6.9 " "([#471](https://github.com/adap/flower/pull/471))." @@ -24405,7 +24524,7 @@ msgstr "" "Fixe la version minimale de Python à 3.6.1 au lieu de 3.6.9 " "([#471](https://github.com/adap/flower/pull/471))." -#: ../../source/ref-changelog.md:1566 +#: ../../source/ref-changelog.md:1588 msgid "" "Improved `Strategy` docstrings " "([#470](https://github.com/adap/flower/pull/470))." @@ -28787,7 +28906,7 @@ msgstr "" "chose d'autre, comme la régression linéaire classique." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|cf5fe148406b44b9a8b842fb01b5a7ea|" +msgid "|f150b8d6e0074250822c9f6f7a8de3e0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -28806,7 +28925,7 @@ msgstr "" " Go." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|ba25c91426d64cc1ae2d3febc5715b35|" +msgid "|72772d10debc4abd8373c0bc82985422|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -28838,7 +28957,7 @@ msgstr "" "chanson." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|fca67f83aaab4389aa9ebb4d9c5cd75e|" +msgid "|5815398552ad41d290a3a2631fe8f6ca|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -28859,7 +28978,7 @@ msgstr "" " données pour la même tâche." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|6f2e8f95c95443379b0df00ca9824654|" +msgid "|e6ac20744bf149378be20ac3dc309356|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -28881,7 +29000,7 @@ msgstr "" "cloud." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|c0ab3a1a733d4dbc9e1677aa608e8038|" +msgid "|a4011ef443c14725b15a8cf33b0e3443|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -28902,7 +29021,7 @@ msgstr "" "appuyés." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|8f0491bde07341ab9f2e23d50593c0be|" +msgid "|a22faa3617404c06803731525e1c609f|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -28928,7 +29047,7 @@ msgstr "" " sur un serveur centralisé." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|762fc099899943688361562252c5e600|" +msgid "|84a5c9b5041c43c3beab9786197c3e4e|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -28947,7 +29066,7 @@ msgstr "" "suffisantes pour former un bon modèle." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|f62d365fd0ae405b975d3ca01e7183fd|" +msgid "|b5c4be0b52d4493ba8c4af14d7c2db97|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -29178,7 +29297,7 @@ msgstr "" "partir d'un point de contrôle précédemment sauvegardé." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|2c78fc1816b143289f4d909388f92a80|" +msgid "|c1c784183d18481186ff65dc261d1335|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -29213,7 +29332,7 @@ msgstr "" "rendements décroissants." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|4230725aeebe497d8ad84a3efc2a912b|" +msgid "|669fcd1f44ab42f5bbd196c3cf1ecbc2|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -29246,7 +29365,7 @@ msgstr "" "données locales, ou même de quelques étapes (mini-batchs)." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|64b66a88417240eabe52f5cc55d89d0b|" +msgid "|edfb08758c9441afb6736045a59e154c|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -29277,7 +29396,7 @@ msgstr "" " l'entraînement local." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|726c8eca58bc4f859b06aa24a587b253|" +msgid "|82338b8bbad24d5ea9df3801aab37852|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -29337,7 +29456,7 @@ msgstr "" "times as much as each of the 100 examples." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|f9d869e4b33c4093b29cf24ed8dff80a|" +msgid "|518d994dd2c844898b441da03b858326|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -29481,7 +29600,7 @@ msgstr "" "quel cadre de ML et n'importe quel langage de programmation." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|4ab50bc01a9f426a91a2c0cbc3ab7a84|" +msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -42795,3 +42914,48 @@ msgstr "" #~ msgid "|dd4434075f374e99ac07f509a883778f|" #~ msgstr "" +#~ msgid "Other changes" +#~ msgstr "Changements incompatibles" + +#~ msgid "|cf5fe148406b44b9a8b842fb01b5a7ea|" +#~ msgstr "" + +#~ msgid "|ba25c91426d64cc1ae2d3febc5715b35|" +#~ msgstr "" + +#~ msgid "|fca67f83aaab4389aa9ebb4d9c5cd75e|" +#~ msgstr "" + +#~ msgid "|6f2e8f95c95443379b0df00ca9824654|" +#~ msgstr "" + +#~ msgid "|c0ab3a1a733d4dbc9e1677aa608e8038|" +#~ msgstr "" + +#~ msgid "|8f0491bde07341ab9f2e23d50593c0be|" +#~ msgstr "" + +#~ msgid "|762fc099899943688361562252c5e600|" +#~ msgstr "" + +#~ msgid "|f62d365fd0ae405b975d3ca01e7183fd|" +#~ msgstr "" + +#~ msgid "|2c78fc1816b143289f4d909388f92a80|" +#~ msgstr "" + +#~ msgid "|4230725aeebe497d8ad84a3efc2a912b|" +#~ msgstr "" + +#~ msgid "|64b66a88417240eabe52f5cc55d89d0b|" +#~ msgstr "" + +#~ msgid "|726c8eca58bc4f859b06aa24a587b253|" +#~ msgstr "" + +#~ msgid "|f9d869e4b33c4093b29cf24ed8dff80a|" +#~ msgstr "" + +#~ msgid "|4ab50bc01a9f426a91a2c0cbc3ab7a84|" +#~ msgstr "" + diff --git a/doc/locales/ko/LC_MESSAGES/framework-docs.po b/doc/locales/ko/LC_MESSAGES/framework-docs.po index 3d22083683a2..8775e9b1ca4d 100644 --- a/doc/locales/ko/LC_MESSAGES/framework-docs.po +++ b/doc/locales/ko/LC_MESSAGES/framework-docs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower main\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-22 08:46+0000\n" +"POT-Creation-Date: 2024-11-28 00:32+0000\n" "PO-Revision-Date: 2024-08-23 13:09+0000\n" "Last-Translator: Seulki Yun \n" "Language: ko\n" @@ -3346,10 +3346,10 @@ msgstr "빠른 시작 튜토리얼" #: ../../source/docker/run-quickstart-examples-docker-compose.rst:119 #: ../../source/docker/run-quickstart-examples-docker-compose.rst:121 #: ../../source/docker/run-quickstart-examples-docker-compose.rst:125 -#: ../../source/ref-changelog.md:214 ../../source/ref-changelog.md:580 -#: ../../source/ref-changelog.md:857 ../../source/ref-changelog.md:921 -#: ../../source/ref-changelog.md:979 ../../source/ref-changelog.md:1048 -#: ../../source/ref-changelog.md:1110 +#: ../../source/ref-changelog.md:236 ../../source/ref-changelog.md:602 +#: ../../source/ref-changelog.md:879 ../../source/ref-changelog.md:943 +#: ../../source/ref-changelog.md:1001 ../../source/ref-changelog.md:1070 +#: ../../source/ref-changelog.md:1132 msgid "None" msgstr "" @@ -14861,7 +14861,7 @@ msgid "" msgstr "" #: ../../source/ref-api/flwr.server.strategy.FedAdagrad.rst:2 -#: ../../source/ref-changelog.md:1412 +#: ../../source/ref-changelog.md:1434 msgid "FedAdagrad" msgstr "" @@ -16656,83 +16656,156 @@ msgid "Changelog" msgstr "" #: ../../source/ref-changelog.md:3 -#, fuzzy -msgid "Unreleased" -msgstr "릴리즈 빌드" +msgid "v1.13.1 (2024-11-26)" +msgstr "" -#: ../../source/ref-changelog.md:5 ../../source/ref-changelog.md:21 -#: ../../source/ref-changelog.md:122 ../../source/ref-changelog.md:224 -#: ../../source/ref-changelog.md:328 ../../source/ref-changelog.md:426 -#: ../../source/ref-changelog.md:526 ../../source/ref-changelog.md:590 -#: ../../source/ref-changelog.md:683 ../../source/ref-changelog.md:783 -#: ../../source/ref-changelog.md:867 ../../source/ref-changelog.md:931 -#: ../../source/ref-changelog.md:989 ../../source/ref-changelog.md:1058 -#: ../../source/ref-changelog.md:1187 ../../source/ref-changelog.md:1229 -#: ../../source/ref-changelog.md:1296 ../../source/ref-changelog.md:1362 -#: ../../source/ref-changelog.md:1407 ../../source/ref-changelog.md:1446 -#: ../../source/ref-changelog.md:1479 ../../source/ref-changelog.md:1529 -msgid "What's new?" +#: ../../source/ref-changelog.md:5 ../../source/ref-changelog.md:37 +#: ../../source/ref-changelog.md:138 ../../source/ref-changelog.md:208 +#: ../../source/ref-changelog.md:240 ../../source/ref-changelog.md:344 +#: ../../source/ref-changelog.md:442 ../../source/ref-changelog.md:542 +#: ../../source/ref-changelog.md:606 ../../source/ref-changelog.md:699 +#: ../../source/ref-changelog.md:799 ../../source/ref-changelog.md:883 +#: ../../source/ref-changelog.md:947 ../../source/ref-changelog.md:1005 +#: ../../source/ref-changelog.md:1074 ../../source/ref-changelog.md:1143 +msgid "Thanks to our contributors" msgstr "" -#: ../../source/ref-changelog.md:7 -#, fuzzy -msgid "Other changes" -msgstr "**변경사항 스테이징**" +#: ../../source/ref-changelog.md:7 ../../source/ref-changelog.md:39 +#: ../../source/ref-changelog.md:140 ../../source/ref-changelog.md:210 +#: ../../source/ref-changelog.md:242 ../../source/ref-changelog.md:346 +#: ../../source/ref-changelog.md:444 ../../source/ref-changelog.md:544 +#: ../../source/ref-changelog.md:608 ../../source/ref-changelog.md:701 +#: ../../source/ref-changelog.md:801 ../../source/ref-changelog.md:885 +#: ../../source/ref-changelog.md:949 ../../source/ref-changelog.md:1007 +msgid "" +"We would like to give our special thanks to all the contributors who made" +" the new version of Flower possible (in `git shortlog` order):" +msgstr "" -#: ../../source/ref-changelog.md:9 ../../source/ref-changelog.md:388 -#, fuzzy -msgid "Documentation improvements" -msgstr "선택적 개선 사항" +#: ../../source/ref-changelog.md:9 +msgid "" +"`Adam Narozniak`, `Charles Beauville`, `Heng Pan`, `Javier`, `Robert " +"Steiner` " +msgstr "" -#: ../../source/ref-changelog.md:11 ../../source/ref-changelog.md:88 -#: ../../source/ref-changelog.md:178 ../../source/ref-changelog.md:212 -#: ../../source/ref-changelog.md:292 ../../source/ref-changelog.md:408 -#: ../../source/ref-changelog.md:504 ../../source/ref-changelog.md:578 -#: ../../source/ref-changelog.md:653 ../../source/ref-changelog.md:765 -#: ../../source/ref-changelog.md:855 ../../source/ref-changelog.md:919 -#: ../../source/ref-changelog.md:977 ../../source/ref-changelog.md:1046 -#: ../../source/ref-changelog.md:1108 ../../source/ref-changelog.md:1127 -#: ../../source/ref-changelog.md:1283 ../../source/ref-changelog.md:1354 -#: ../../source/ref-changelog.md:1391 ../../source/ref-changelog.md:1434 -msgid "Incompatible changes" +#: ../../source/ref-changelog.md:11 ../../source/ref-changelog.md:43 +#: ../../source/ref-changelog.md:144 ../../source/ref-changelog.md:246 +#: ../../source/ref-changelog.md:350 ../../source/ref-changelog.md:448 +#: ../../source/ref-changelog.md:548 ../../source/ref-changelog.md:612 +#: ../../source/ref-changelog.md:705 ../../source/ref-changelog.md:805 +#: ../../source/ref-changelog.md:889 ../../source/ref-changelog.md:953 +#: ../../source/ref-changelog.md:1011 ../../source/ref-changelog.md:1080 +#: ../../source/ref-changelog.md:1209 ../../source/ref-changelog.md:1251 +#: ../../source/ref-changelog.md:1318 ../../source/ref-changelog.md:1384 +#: ../../source/ref-changelog.md:1429 ../../source/ref-changelog.md:1468 +#: ../../source/ref-changelog.md:1501 ../../source/ref-changelog.md:1551 +msgid "What's new?" msgstr "" #: ../../source/ref-changelog.md:13 -msgid "v1.13.0 (2024-11-20)" +msgid "" +"**Fix `SimulationEngine` Executor for SuperLink** " +"([#4563](https://github.com/adap/flower/pull/4563), " +"[#4568](https://github.com/adap/flower/pull/4568), " +"[#4570](https://github.com/adap/flower/pull/4570))" msgstr "" -#: ../../source/ref-changelog.md:15 ../../source/ref-changelog.md:116 -#: ../../source/ref-changelog.md:186 ../../source/ref-changelog.md:218 -#: ../../source/ref-changelog.md:322 ../../source/ref-changelog.md:420 -#: ../../source/ref-changelog.md:520 ../../source/ref-changelog.md:584 -#: ../../source/ref-changelog.md:677 ../../source/ref-changelog.md:777 -#: ../../source/ref-changelog.md:861 ../../source/ref-changelog.md:925 -#: ../../source/ref-changelog.md:983 ../../source/ref-changelog.md:1052 -#: ../../source/ref-changelog.md:1121 -msgid "Thanks to our contributors" +#: ../../source/ref-changelog.md:15 +msgid "" +"Resolved an issue that prevented SuperLink from functioning correctly " +"when using the `SimulationEngine` executor." msgstr "" -#: ../../source/ref-changelog.md:17 ../../source/ref-changelog.md:118 -#: ../../source/ref-changelog.md:188 ../../source/ref-changelog.md:220 -#: ../../source/ref-changelog.md:324 ../../source/ref-changelog.md:422 -#: ../../source/ref-changelog.md:522 ../../source/ref-changelog.md:586 -#: ../../source/ref-changelog.md:679 ../../source/ref-changelog.md:779 -#: ../../source/ref-changelog.md:863 ../../source/ref-changelog.md:927 -#: ../../source/ref-changelog.md:985 +#: ../../source/ref-changelog.md:17 msgid "" -"We would like to give our special thanks to all the contributors who made" -" the new version of Flower possible (in `git shortlog` order):" +"**Improve FAB build and install** " +"([#4571](https://github.com/adap/flower/pull/4571))" msgstr "" #: ../../source/ref-changelog.md:19 msgid "" +"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. The `flwr` CLI " +"commands now correctly pack only the necessary files, such as `.md`, " +"`.toml` and `.py`, ensuring more efficient and accurate packaging." +msgstr "" + +#: ../../source/ref-changelog.md:21 +msgid "" +"**Update** `embedded-devices` **example** " +"([#4381](https://github.com/adap/flower/pull/4381))" +msgstr "" + +#: ../../source/ref-changelog.md:23 +msgid "The example now uses the `flwr run` command and the Deployment Engine." +msgstr "" + +#: ../../source/ref-changelog.md:25 +msgid "" +"**Update Documentation** " +"([#4566](https://github.com/adap/flower/pull/4566), " +"[#4569](https://github.com/adap/flower/pull/4569), " +"[#4560](https://github.com/adap/flower/pull/4560), " +"[#4556](https://github.com/adap/flower/pull/4556), " +"[#4581](https://github.com/adap/flower/pull/4581), " +"[#4537](https://github.com/adap/flower/pull/4537), " +"[#4562](https://github.com/adap/flower/pull/4562), " +"[#4582](https://github.com/adap/flower/pull/4582))" +msgstr "" + +#: ../../source/ref-changelog.md:27 +msgid "" +"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." +msgstr "" + +#: ../../source/ref-changelog.md:29 +msgid "" +"**Update Infrastructure and CI/CD** " +"([#4577](https://github.com/adap/flower/pull/4577), " +"[#4578](https://github.com/adap/flower/pull/4578), " +"[#4558](https://github.com/adap/flower/pull/4558), " +"[#4551](https://github.com/adap/flower/pull/4551), " +"[#3356](https://github.com/adap/flower/pull/3356), " +"[#4559](https://github.com/adap/flower/pull/4559), " +"[#4575](https://github.com/adap/flower/pull/4575))" +msgstr "" + +#: ../../source/ref-changelog.md:31 +msgid "" +"**General improvements** " +"([#4557](https://github.com/adap/flower/pull/4557), " +"[#4564](https://github.com/adap/flower/pull/4564), " +"[#4573](https://github.com/adap/flower/pull/4573), " +"[#4561](https://github.com/adap/flower/pull/4561), " +"[#4579](https://github.com/adap/flower/pull/4579), " +"[#4572](https://github.com/adap/flower/pull/4572))" +msgstr "" + +#: ../../source/ref-changelog.md:33 ../../source/ref-changelog.md:102 +#: ../../source/ref-changelog.md:198 ../../source/ref-changelog.md:301 +#: ../../source/ref-changelog.md:408 +msgid "" +"As always, many parts of the Flower framework and quality infrastructure " +"were improved and updated." +msgstr "" + +#: ../../source/ref-changelog.md:35 +msgid "v1.13.0 (2024-11-20)" +msgstr "" + +#: ../../source/ref-changelog.md:41 +msgid "" "`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` " msgstr "" -#: ../../source/ref-changelog.md:23 +#: ../../source/ref-changelog.md:45 msgid "" "**Introduce `flwr ls` command** " "([#4460](https://github.com/adap/flower/pull/4460), " @@ -16740,30 +16813,30 @@ msgid "" "[#4477](https://github.com/adap/flower/pull/4477))" msgstr "" -#: ../../source/ref-changelog.md:25 +#: ../../source/ref-changelog.md:47 msgid "" "The `flwr ls` command is now available to display details about all runs " "(or one specific run). It supports the following usage options:" msgstr "" -#: ../../source/ref-changelog.md:27 +#: ../../source/ref-changelog.md:49 msgid "`flwr ls --runs [] []`: Lists all runs." msgstr "" -#: ../../source/ref-changelog.md:28 +#: ../../source/ref-changelog.md:50 msgid "" "`flwr ls --run-id [] []`: Displays details for " "a specific run." msgstr "" -#: ../../source/ref-changelog.md:30 +#: ../../source/ref-changelog.md:52 msgid "" "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." msgstr "" -#: ../../source/ref-changelog.md:32 +#: ../../source/ref-changelog.md:54 msgid "" "**Fuse SuperLink and SuperExec** " "([#4358](https://github.com/adap/flower/pull/4358), " @@ -16777,7 +16850,7 @@ msgid "" "[#4352](https://github.com/adap/flower/pull/4352))" msgstr "" -#: ../../source/ref-changelog.md:34 +#: ../../source/ref-changelog.md:56 msgid "" "SuperExec has been integrated into SuperLink, enabling SuperLink to " "directly manage ServerApp processes (`flwr-serverapp`). The `flwr` CLI " @@ -16787,7 +16860,7 @@ msgid "" "{subprocess,process}` flag." msgstr "" -#: ../../source/ref-changelog.md:36 +#: ../../source/ref-changelog.md:58 msgid "" "**Introduce `flwr-serverapp` command** " "([#4394](https://github.com/adap/flower/pull/4394), " @@ -16802,7 +16875,7 @@ msgid "" "[#4402](https://github.com/adap/flower/pull/4402))" msgstr "" -#: ../../source/ref-changelog.md:38 +#: ../../source/ref-changelog.md:60 msgid "" "The `flwr-serverapp` command has been introduced as a CLI entry point " "that runs a `ServerApp` process. This process communicates with SuperLink" @@ -16810,7 +16883,7 @@ msgid "" "and more flexible deployment." msgstr "" -#: ../../source/ref-changelog.md:40 +#: ../../source/ref-changelog.md:62 msgid "" "**Improve simulation engine and introduce `flwr-simulation` command** " "([#4433](https://github.com/adap/flower/pull/4433), " @@ -16823,7 +16896,7 @@ msgid "" "[#4462](https://github.com/adap/flower/pull/4462))" msgstr "" -#: ../../source/ref-changelog.md:42 +#: ../../source/ref-changelog.md:64 msgid "" "The simulation engine has been significantly improved, resulting in " "dramatically faster simulations. Additionally, the `flwr-simulation` " @@ -16831,14 +16904,14 @@ msgid "" "dedicated entry point for running simulations." msgstr "" -#: ../../source/ref-changelog.md:44 +#: ../../source/ref-changelog.md:66 msgid "" "**Improve SuperLink message management** " "([#4378](https://github.com/adap/flower/pull/4378), " "[#4369](https://github.com/adap/flower/pull/4369))" msgstr "" -#: ../../source/ref-changelog.md:46 +#: ../../source/ref-changelog.md:68 msgid "" "SuperLink now validates the destination node ID of instruction messages " "and checks the TTL (time-to-live) for reply messages. When pulling reply " @@ -16847,13 +16920,13 @@ msgid "" "reply message exists but has expired." msgstr "" -#: ../../source/ref-changelog.md:48 +#: ../../source/ref-changelog.md:70 msgid "" "**Introduce FedDebug baseline** " "([#3783](https://github.com/adap/flower/pull/3783))" msgstr "" -#: ../../source/ref-changelog.md:50 +#: ../../source/ref-changelog.md:72 msgid "" "FedDebug is a framework that enhances debugging in Federated Learning by " "enabling interactive inspection of the training process and automatically" @@ -16863,7 +16936,7 @@ msgid "" "documentation](https://flower.ai/docs/baselines/feddebug.html)." msgstr "" -#: ../../source/ref-changelog.md:52 +#: ../../source/ref-changelog.md:74 msgid "" "**Update documentation** " "([#4511](https://github.com/adap/flower/pull/4511), " @@ -16908,7 +16981,7 @@ msgid "" "[#4533](https://github.com/adap/flower/pull/4533))" msgstr "" -#: ../../source/ref-changelog.md:54 +#: ../../source/ref-changelog.md:76 msgid "" "Many documentation pages and tutorials have been updated to improve " "clarity, fix typos, incorporate user feedback, and stay aligned with the " @@ -16922,7 +16995,7 @@ msgid "" "aggregation-protocols.html) page has also been updated." msgstr "" -#: ../../source/ref-changelog.md:56 +#: ../../source/ref-changelog.md:78 msgid "" "**Update examples and templates** " "([#4510](https://github.com/adap/flower/pull/4510), " @@ -16936,7 +17009,7 @@ msgid "" "[#4408](https://github.com/adap/flower/pull/4408))" msgstr "" -#: ../../source/ref-changelog.md:58 +#: ../../source/ref-changelog.md:80 msgid "" "Multiple examples and templates have been updated to enhance usability " "and correctness. The updates include the `30-minute-tutorial`, " @@ -16944,7 +17017,7 @@ msgid "" "and the FlowerTune template." msgstr "" -#: ../../source/ref-changelog.md:60 +#: ../../source/ref-changelog.md:82 msgid "" "**Improve Docker support** " "([#4506](https://github.com/adap/flower/pull/4506), " @@ -16960,7 +17033,7 @@ msgid "" "[#4540](https://github.com/adap/flower/pull/4540))" msgstr "" -#: ../../source/ref-changelog.md:62 +#: ../../source/ref-changelog.md:84 msgid "" "Docker images and configurations have been updated, including updating " "Docker Compose files to version 1.13.0, refactoring the Docker build " @@ -16968,21 +17041,21 @@ msgid "" " 6.9.0, and improving Docker documentation." msgstr "" -#: ../../source/ref-changelog.md:64 +#: ../../source/ref-changelog.md:86 msgid "" "**Allow app installation without internet access** " "([#4479](https://github.com/adap/flower/pull/4479), " "[#4475](https://github.com/adap/flower/pull/4475))" msgstr "" -#: ../../source/ref-changelog.md:66 +#: ../../source/ref-changelog.md:88 msgid "" "The `flwr build` command now includes a wheel file in the FAB, enabling " "Flower app installation in environments without internet access via `flwr" " install`." msgstr "" -#: ../../source/ref-changelog.md:68 +#: ../../source/ref-changelog.md:90 msgid "" "**Improve `flwr log` command** " "([#4391](https://github.com/adap/flower/pull/4391), " @@ -16991,7 +17064,7 @@ msgid "" "[#4397](https://github.com/adap/flower/pull/4397))" msgstr "" -#: ../../source/ref-changelog.md:70 +#: ../../source/ref-changelog.md:92 msgid "" "**Refactor SuperNode for better maintainability and efficiency** " "([#4439](https://github.com/adap/flower/pull/4439), " @@ -17000,13 +17073,13 @@ msgid "" "[#4485](https://github.com/adap/flower/pull/4485))" msgstr "" -#: ../../source/ref-changelog.md:72 +#: ../../source/ref-changelog.md:94 msgid "" "**Support NumPy `2.0`** " "([#4440](https://github.com/adap/flower/pull/4440))" msgstr "" -#: ../../source/ref-changelog.md:74 +#: ../../source/ref-changelog.md:96 msgid "" "**Update infrastructure and CI/CD** " "([#4466](https://github.com/adap/flower/pull/4466), " @@ -17018,7 +17091,7 @@ msgid "" "[#4415](https://github.com/adap/flower/pull/4415))" msgstr "" -#: ../../source/ref-changelog.md:76 +#: ../../source/ref-changelog.md:98 msgid "" "**Bugfixes** ([#4404](https://github.com/adap/flower/pull/4404), " "[#4518](https://github.com/adap/flower/pull/4518), " @@ -17032,7 +17105,7 @@ msgid "" "[#4515](https://github.com/adap/flower/pull/4515))" msgstr "" -#: ../../source/ref-changelog.md:78 +#: ../../source/ref-changelog.md:100 msgid "" "**General improvements** " "([#4454](https://github.com/adap/flower/pull/4454), " @@ -17088,25 +17161,18 @@ msgid "" "[#4481](https://github.com/adap/flower/pull/4481))" msgstr "" -#: ../../source/ref-changelog.md:80 ../../source/ref-changelog.md:176 -#: ../../source/ref-changelog.md:279 ../../source/ref-changelog.md:386 -msgid "" -"As always, many parts of the Flower framework and quality infrastructure " -"were improved and updated." -msgstr "" - -#: ../../source/ref-changelog.md:82 ../../source/ref-changelog.md:281 -#: ../../source/ref-changelog.md:398 ../../source/ref-changelog.md:490 -#: ../../source/ref-changelog.md:1473 +#: ../../source/ref-changelog.md:104 ../../source/ref-changelog.md:303 +#: ../../source/ref-changelog.md:420 ../../source/ref-changelog.md:512 +#: ../../source/ref-changelog.md:1495 msgid "Deprecations" msgstr "" -#: ../../source/ref-changelog.md:84 +#: ../../source/ref-changelog.md:106 #, fuzzy msgid "**Deprecate Python 3.9**" msgstr "**PR 만들기**" -#: ../../source/ref-changelog.md:86 +#: ../../source/ref-changelog.md:108 msgid "" "Flower is deprecating support for Python 3.9 as several of its " "dependencies are phasing out compatibility with this version. While no " @@ -17114,13 +17180,26 @@ msgid "" "upgrading to a supported Python version." msgstr "" -#: ../../source/ref-changelog.md:90 +#: ../../source/ref-changelog.md:110 ../../source/ref-changelog.md:200 +#: ../../source/ref-changelog.md:234 ../../source/ref-changelog.md:314 +#: ../../source/ref-changelog.md:430 ../../source/ref-changelog.md:526 +#: ../../source/ref-changelog.md:600 ../../source/ref-changelog.md:675 +#: ../../source/ref-changelog.md:787 ../../source/ref-changelog.md:877 +#: ../../source/ref-changelog.md:941 ../../source/ref-changelog.md:999 +#: ../../source/ref-changelog.md:1068 ../../source/ref-changelog.md:1130 +#: ../../source/ref-changelog.md:1149 ../../source/ref-changelog.md:1305 +#: ../../source/ref-changelog.md:1376 ../../source/ref-changelog.md:1413 +#: ../../source/ref-changelog.md:1456 +msgid "Incompatible changes" +msgstr "" + +#: ../../source/ref-changelog.md:112 msgid "" "**Remove `flower-superexec` command** " "([#4351](https://github.com/adap/flower/pull/4351))" msgstr "" -#: ../../source/ref-changelog.md:92 +#: ../../source/ref-changelog.md:114 msgid "" "The `flower-superexec` command, previously used to launch SuperExec, is " "no longer functional as SuperExec has been merged into SuperLink. " @@ -17128,63 +17207,63 @@ msgid "" " initiated." msgstr "" -#: ../../source/ref-changelog.md:94 +#: ../../source/ref-changelog.md:116 msgid "" "**Remove `flower-server-app` command** " "([#4490](https://github.com/adap/flower/pull/4490))" msgstr "" -#: ../../source/ref-changelog.md:96 +#: ../../source/ref-changelog.md:118 msgid "" "The `flower-server-app` command has been removed. To start a Flower app, " "please use the `flwr run` command instead." msgstr "" -#: ../../source/ref-changelog.md:98 +#: ../../source/ref-changelog.md:120 msgid "" "**Remove `app` argument from `flower-supernode` command** " "([#4497](https://github.com/adap/flower/pull/4497))" msgstr "" -#: ../../source/ref-changelog.md:100 +#: ../../source/ref-changelog.md:122 msgid "" "The usage of `flower-supernode ` has been removed. SuperNode " "will now load the FAB delivered by SuperLink, and it is no longer " "possible to directly specify an app directory." msgstr "" -#: ../../source/ref-changelog.md:102 +#: ../../source/ref-changelog.md:124 msgid "" "**Remove support for non-app simulations** " "([#4431](https://github.com/adap/flower/pull/4431))" msgstr "" -#: ../../source/ref-changelog.md:104 +#: ../../source/ref-changelog.md:126 msgid "" "The simulation engine (via `flower-simulation`) now exclusively supports " "passing an app." msgstr "" -#: ../../source/ref-changelog.md:106 +#: ../../source/ref-changelog.md:128 msgid "" "**Rename CLI arguments for `flower-superlink` command** " "([#4412](https://github.com/adap/flower/pull/4412))" msgstr "" -#: ../../source/ref-changelog.md:108 +#: ../../source/ref-changelog.md:130 msgid "" "The `--driver-api-address` argument has been renamed to `--serverappio-" "api-address` in the `flower-superlink` command to reflect the renaming of" " the `Driver` service to the `ServerAppIo` service." msgstr "" -#: ../../source/ref-changelog.md:110 +#: ../../source/ref-changelog.md:132 msgid "" "**Rename CLI arguments for `flwr-serverapp` and `flwr-clientapp` " "commands** ([#4495](https://github.com/adap/flower/pull/4495))" msgstr "" -#: ../../source/ref-changelog.md:112 +#: ../../source/ref-changelog.md:134 msgid "" "The CLI arguments have been renamed for clarity and consistency. " "Specifically, `--superlink` for `flwr-serverapp` is now `--serverappio-" @@ -17192,11 +17271,11 @@ msgid "" "`--clientappio-api-address`." msgstr "" -#: ../../source/ref-changelog.md:114 +#: ../../source/ref-changelog.md:136 msgid "v1.12.0 (2024-10-14)" msgstr "" -#: ../../source/ref-changelog.md:120 +#: ../../source/ref-changelog.md:142 msgid "" "`Adam Narozniak`, `Audris`, `Charles Beauville`, `Chong Shen Ng`, `Daniel" " J. Beutel`, `Daniel Nata Nugraha`, `Heng Pan`, `Javier`, `Jiahao Tan`, " @@ -17204,7 +17283,7 @@ msgid "" "Gao`, `xiliguguagua` " msgstr "" -#: ../../source/ref-changelog.md:124 +#: ../../source/ref-changelog.md:146 msgid "" "**Introduce SuperExec log streaming** " "([#3577](https://github.com/adap/flower/pull/3577), " @@ -17214,7 +17293,7 @@ msgid "" "[#3613](https://github.com/adap/flower/pull/3613))" msgstr "" -#: ../../source/ref-changelog.md:126 +#: ../../source/ref-changelog.md:148 msgid "" "Flower now supports log streaming from a remote SuperExec using the `flwr" " log` command. This new feature allows you to monitor logs from SuperExec" @@ -17222,7 +17301,7 @@ msgid "" "`)." msgstr "" -#: ../../source/ref-changelog.md:128 +#: ../../source/ref-changelog.md:150 msgid "" "**Improve `flwr new` templates** " "([#4291](https://github.com/adap/flower/pull/4291), " @@ -17232,14 +17311,14 @@ msgid "" "[#4295](https://github.com/adap/flower/pull/4295))" msgstr "" -#: ../../source/ref-changelog.md:130 +#: ../../source/ref-changelog.md:152 msgid "" "The `flwr new` command templates for MLX, NumPy, sklearn, JAX, and " "PyTorch have been updated to improve usability and consistency across " "frameworks." msgstr "" -#: ../../source/ref-changelog.md:132 +#: ../../source/ref-changelog.md:154 msgid "" "**Migrate ID handling to use unsigned 64-bit integers** " "([#4170](https://github.com/adap/flower/pull/4170), " @@ -17247,7 +17326,7 @@ msgid "" "[#4243](https://github.com/adap/flower/pull/4243))" msgstr "" -#: ../../source/ref-changelog.md:134 +#: ../../source/ref-changelog.md:156 msgid "" "Node IDs, run IDs, and related fields have been migrated from signed " "64-bit integers (`sint64`) to unsigned 64-bit integers (`uint64`). To " @@ -17258,13 +17337,13 @@ msgid "" "`uint64`." msgstr "" -#: ../../source/ref-changelog.md:136 +#: ../../source/ref-changelog.md:158 msgid "" "**Add Flower architecture explanation** " "([#3270](https://github.com/adap/flower/pull/3270))" msgstr "" -#: ../../source/ref-changelog.md:138 +#: ../../source/ref-changelog.md:160 msgid "" "A new [Flower architecture explainer](https://flower.ai/docs/framework" "/explanation-flower-architecture.html) page introduces Flower components " @@ -17272,13 +17351,13 @@ msgid "" "documentation if you're interested." msgstr "" -#: ../../source/ref-changelog.md:140 +#: ../../source/ref-changelog.md:162 msgid "" "**Introduce FedRep baseline** " "([#3790](https://github.com/adap/flower/pull/3790))" msgstr "" -#: ../../source/ref-changelog.md:142 +#: ../../source/ref-changelog.md:164 msgid "" "FedRep is a federated learning algorithm that learns shared data " "representations across clients while allowing each to maintain " @@ -17288,7 +17367,7 @@ msgid "" "([arxiv](https://arxiv.org/abs/2102.07078))" msgstr "" -#: ../../source/ref-changelog.md:144 +#: ../../source/ref-changelog.md:166 msgid "" "**Improve FlowerTune template and LLM evaluation pipelines** " "([#4286](https://github.com/adap/flower/pull/4286), " @@ -17309,7 +17388,7 @@ msgid "" "[#4327](https://github.com/adap/flower/pull/4327))" msgstr "" -#: ../../source/ref-changelog.md:146 +#: ../../source/ref-changelog.md:168 msgid "" "Refined evaluation pipelines, metrics, and documentation for the upcoming" " FlowerTune LLM Leaderboard across multiple domains including Finance, " @@ -17318,7 +17397,7 @@ msgid "" "exciting challenge!" msgstr "" -#: ../../source/ref-changelog.md:148 +#: ../../source/ref-changelog.md:170 msgid "" "**Enhance Docker Support and Documentation** " "([#4191](https://github.com/adap/flower/pull/4191), " @@ -17337,7 +17416,7 @@ msgid "" "[#4226](https://github.com/adap/flower/pull/4226))" msgstr "" -#: ../../source/ref-changelog.md:150 +#: ../../source/ref-changelog.md:172 msgid "" "Upgraded Ubuntu base image to 24.04, added SBOM and gcc to Docker images," " and comprehensively updated [Docker " @@ -17345,14 +17424,14 @@ msgid "" "including quickstart guides and distributed Docker Compose instructions." msgstr "" -#: ../../source/ref-changelog.md:152 +#: ../../source/ref-changelog.md:174 msgid "" "**Introduce Flower glossary** " "([#4165](https://github.com/adap/flower/pull/4165), " "[#4235](https://github.com/adap/flower/pull/4235))" msgstr "" -#: ../../source/ref-changelog.md:154 +#: ../../source/ref-changelog.md:176 msgid "" "Added the [Federated Learning glossary](https://flower.ai/glossary/) to " "the Flower repository, located under the `flower/glossary/` directory. " @@ -17362,7 +17441,7 @@ msgid "" "become a Flower contributor!" msgstr "" -#: ../../source/ref-changelog.md:156 +#: ../../source/ref-changelog.md:178 msgid "" "**Implement Message Time-to-Live (TTL)** " "([#3620](https://github.com/adap/flower/pull/3620), " @@ -17372,7 +17451,7 @@ msgid "" "[#3635](https://github.com/adap/flower/pull/3635))" msgstr "" -#: ../../source/ref-changelog.md:158 +#: ../../source/ref-changelog.md:180 msgid "" "Added comprehensive TTL support for messages in Flower's SuperLink. " "Messages are now automatically expired and cleaned up based on " @@ -17380,7 +17459,7 @@ msgid "" " default in the high-level API)." msgstr "" -#: ../../source/ref-changelog.md:160 +#: ../../source/ref-changelog.md:182 msgid "" "**Improve FAB handling** " "([#4303](https://github.com/adap/flower/pull/4303), " @@ -17389,14 +17468,14 @@ msgid "" "[#4304](https://github.com/adap/flower/pull/4304))" msgstr "" -#: ../../source/ref-changelog.md:162 +#: ../../source/ref-changelog.md:184 msgid "" "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." msgstr "" -#: ../../source/ref-changelog.md:164 +#: ../../source/ref-changelog.md:186 msgid "" "**Update documentation** " "([#3341](https://github.com/adap/flower/pull/3341), " @@ -17407,7 +17486,7 @@ msgid "" "[#3993](https://github.com/adap/flower/pull/3993))" msgstr "" -#: ../../source/ref-changelog.md:166 +#: ../../source/ref-changelog.md:188 msgid "" "Updated quickstart tutorials (PyTorch Lightning, TensorFlow, Hugging " "Face, Fastai) to use the new `flwr run` command and removed default title" @@ -17415,7 +17494,7 @@ msgid "" "added to FAQ." msgstr "" -#: ../../source/ref-changelog.md:168 +#: ../../source/ref-changelog.md:190 msgid "" "**Update example projects** " "([#3716](https://github.com/adap/flower/pull/3716), " @@ -17428,7 +17507,7 @@ msgid "" "[#4331](https://github.com/adap/flower/pull/4331))" msgstr "" -#: ../../source/ref-changelog.md:170 +#: ../../source/ref-changelog.md:192 msgid "" "Refreshed multiple example projects including vertical FL, PyTorch " "(advanced), Pandas, Secure Aggregation, and XGBoost examples. Optimized " @@ -17436,7 +17515,7 @@ msgid "" "simulation examples." msgstr "" -#: ../../source/ref-changelog.md:172 +#: ../../source/ref-changelog.md:194 msgid "" "**Update translations** " "([#4070](https://github.com/adap/flower/pull/4070), " @@ -17448,7 +17527,7 @@ msgid "" "[#4259](https://github.com/adap/flower/pull/4259))" msgstr "" -#: ../../source/ref-changelog.md:174 +#: ../../source/ref-changelog.md:196 msgid "" "**General improvements** " "([#4239](https://github.com/adap/flower/pull/4239), " @@ -17495,7 +17574,7 @@ msgid "" "[#4333](https://github.com/adap/flower/pull/4333))" msgstr "" -#: ../../source/ref-changelog.md:180 +#: ../../source/ref-changelog.md:202 msgid "" "**Drop Python 3.8 support and update minimum version to 3.9** " "([#4180](https://github.com/adap/flower/pull/4180), " @@ -17508,7 +17587,7 @@ msgid "" "[#4194](https://github.com/adap/flower/pull/4194))" msgstr "" -#: ../../source/ref-changelog.md:182 +#: ../../source/ref-changelog.md:204 msgid "" "Python 3.8 support was deprecated in Flower 1.9, and this release removes" " support. Flower now requires Python 3.9 or later (Python 3.11 is " @@ -17516,80 +17595,80 @@ msgid "" "minimum supported version. Flower now supports Python 3.9 to 3.12." msgstr "" -#: ../../source/ref-changelog.md:184 +#: ../../source/ref-changelog.md:206 msgid "v1.11.1 (2024-09-11)" msgstr "" -#: ../../source/ref-changelog.md:190 +#: ../../source/ref-changelog.md:212 msgid "" "`Charles Beauville`, `Chong Shen Ng`, `Daniel J. Beutel`, `Heng Pan`, " "`Javier`, `Robert Steiner`, `Yan Gao` " msgstr "" -#: ../../source/ref-changelog.md:192 +#: ../../source/ref-changelog.md:214 #, fuzzy msgid "Improvements" msgstr "선택적 개선 사항" -#: ../../source/ref-changelog.md:194 +#: ../../source/ref-changelog.md:216 msgid "" "**Implement** `keys/values/items` **methods for** `TypedDict` " "([#4146](https://github.com/adap/flower/pull/4146))" msgstr "" -#: ../../source/ref-changelog.md:196 +#: ../../source/ref-changelog.md:218 msgid "" "**Fix parsing of** `--executor-config` **if present** " "([#4125](https://github.com/adap/flower/pull/4125))" msgstr "" -#: ../../source/ref-changelog.md:198 +#: ../../source/ref-changelog.md:220 msgid "" "**Adjust framework name in templates docstrings** " "([#4127](https://github.com/adap/flower/pull/4127))" msgstr "" -#: ../../source/ref-changelog.md:200 +#: ../../source/ref-changelog.md:222 msgid "" "**Update** `flwr new` **Hugging Face template** " "([#4169](https://github.com/adap/flower/pull/4169))" msgstr "" -#: ../../source/ref-changelog.md:202 +#: ../../source/ref-changelog.md:224 msgid "" "**Fix** `flwr new` **FlowerTune template** " "([#4123](https://github.com/adap/flower/pull/4123))" msgstr "" -#: ../../source/ref-changelog.md:204 +#: ../../source/ref-changelog.md:226 msgid "" "**Add buffer time after** `ServerApp` **thread initialization** " "([#4119](https://github.com/adap/flower/pull/4119))" msgstr "" -#: ../../source/ref-changelog.md:206 +#: ../../source/ref-changelog.md:228 msgid "" "**Handle unsuitable resources for simulation** " "([#4143](https://github.com/adap/flower/pull/4143))" msgstr "" -#: ../../source/ref-changelog.md:208 +#: ../../source/ref-changelog.md:230 msgid "" "**Update example READMEs** " "([#4117](https://github.com/adap/flower/pull/4117))" msgstr "" -#: ../../source/ref-changelog.md:210 +#: ../../source/ref-changelog.md:232 msgid "" "**Update SuperNode authentication docs** " "([#4160](https://github.com/adap/flower/pull/4160))" msgstr "" -#: ../../source/ref-changelog.md:216 +#: ../../source/ref-changelog.md:238 msgid "v1.11.0 (2024-08-30)" msgstr "" -#: ../../source/ref-changelog.md:222 +#: ../../source/ref-changelog.md:244 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " "Beutel`, `Daniel Nata Nugraha`, `Danny`, `Edoardo Gabrielli`, `Heng Pan`," @@ -17598,7 +17677,7 @@ msgid "" "TOKEN_v1.11.0-->" msgstr "" -#: ../../source/ref-changelog.md:226 +#: ../../source/ref-changelog.md:248 msgid "" "**Deliver Flower App Bundle (FAB) to SuperLink and SuperNodes** " "([#4006](https://github.com/adap/flower/pull/4006), " @@ -17625,14 +17704,14 @@ msgid "" "[#3619](https://github.com/adap/flower/pull/3619))" msgstr "" -#: ../../source/ref-changelog.md:228 +#: ../../source/ref-changelog.md:250 msgid "" "Dynamic code updates are here! `flwr run` can now ship and install the " "latest version of your `ServerApp` and `ClientApp` to an already-running " "federation (SuperLink and SuperNodes)." msgstr "" -#: ../../source/ref-changelog.md:230 +#: ../../source/ref-changelog.md:252 msgid "" "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," @@ -17642,11 +17721,11 @@ msgid "" "projects!) dynamically." msgstr "" -#: ../../source/ref-changelog.md:232 +#: ../../source/ref-changelog.md:254 msgid "`flwr run` is all you need." msgstr "" -#: ../../source/ref-changelog.md:234 +#: ../../source/ref-changelog.md:256 msgid "" "**Introduce isolated** `ClientApp` **execution** " "([#3970](https://github.com/adap/flower/pull/3970), " @@ -17666,30 +17745,30 @@ msgid "" "[#4032](https://github.com/adap/flower/pull/4032))" msgstr "" -#: ../../source/ref-changelog.md:236 +#: ../../source/ref-changelog.md:258 msgid "" "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 the " "`ClientApp` can and cannot do." msgstr "" -#: ../../source/ref-changelog.md:238 +#: ../../source/ref-changelog.md:260 msgid "`flower-supernode` supports three `--isolation` modes:" msgstr "" -#: ../../source/ref-changelog.md:240 +#: ../../source/ref-changelog.md:262 msgid "" "Unset: The SuperNode runs the `ClientApp` in the same process (as in " "previous versions of Flower). This is the default mode." msgstr "" -#: ../../source/ref-changelog.md:241 +#: ../../source/ref-changelog.md:263 msgid "" "`--isolation=subprocess`: The SuperNode starts a subprocess to run the " "`ClientApp`." msgstr "" -#: ../../source/ref-changelog.md:242 +#: ../../source/ref-changelog.md:264 msgid "" "`--isolation=process`: The SuperNode expects an externally-managed " "process to run the `ClientApp`. This external process is not managed by " @@ -17698,7 +17777,7 @@ msgid "" "`flwr/clientapp` Docker image." msgstr "" -#: ../../source/ref-changelog.md:244 +#: ../../source/ref-changelog.md:266 msgid "" "**Improve Docker support for enterprise deployments** " "([#4050](https://github.com/adap/flower/pull/4050), " @@ -17709,17 +17788,17 @@ msgid "" "[#3722](https://github.com/adap/flower/pull/3722))" msgstr "" -#: ../../source/ref-changelog.md:246 +#: ../../source/ref-changelog.md:268 msgid "" "Flower 1.11 ships many Docker improvements that are especially useful for" " enterprise deployments:" msgstr "" -#: ../../source/ref-changelog.md:248 +#: ../../source/ref-changelog.md:270 msgid "`flwr/supernode` comes with a new Alpine Docker image." msgstr "" -#: ../../source/ref-changelog.md:249 +#: ../../source/ref-changelog.md:271 msgid "" "`flwr/clientapp` is a new image to be used with the `--isolation=process`" " option. In this mode, SuperNode and `ClientApp` run in two different " @@ -17729,19 +17808,19 @@ msgid "" "enterprise settings." msgstr "" -#: ../../source/ref-changelog.md:250 +#: ../../source/ref-changelog.md:272 msgid "" "New all-in-one Docker Compose enables you to easily start a full Flower " "Deployment Engine on a single machine." msgstr "" -#: ../../source/ref-changelog.md:251 +#: ../../source/ref-changelog.md:273 msgid "" "Completely new Docker documentation: " "https://flower.ai/docs/framework/docker/index.html" msgstr "" -#: ../../source/ref-changelog.md:253 +#: ../../source/ref-changelog.md:275 msgid "" "**Improve SuperNode authentication** " "([#4043](https://github.com/adap/flower/pull/4043), " @@ -17749,13 +17828,13 @@ msgid "" "[#4074](https://github.com/adap/flower/pull/4074))" msgstr "" -#: ../../source/ref-changelog.md:255 +#: ../../source/ref-changelog.md:277 msgid "" "SuperNode auth has been improved in several ways, including improved " "logging, improved testing, and improved error handling." msgstr "" -#: ../../source/ref-changelog.md:257 +#: ../../source/ref-changelog.md:279 msgid "" "**Update** `flwr new` **templates** " "([#3933](https://github.com/adap/flower/pull/3933), " @@ -17769,13 +17848,13 @@ msgid "" "[#4064](https://github.com/adap/flower/pull/4064))" msgstr "" -#: ../../source/ref-changelog.md:259 +#: ../../source/ref-changelog.md:281 msgid "" "All `flwr new` templates have been updated to show the latest recommended" " use of Flower APIs." msgstr "" -#: ../../source/ref-changelog.md:261 +#: ../../source/ref-changelog.md:283 msgid "" "**Improve Simulation Engine** " "([#4095](https://github.com/adap/flower/pull/4095), " @@ -17787,14 +17866,14 @@ msgid "" "[#3988](https://github.com/adap/flower/pull/3988))" msgstr "" -#: ../../source/ref-changelog.md:263 +#: ../../source/ref-changelog.md:285 msgid "" "The Flower Simulation Engine comes with several updates, including " "improved run config support, verbose logging, simulation backend " "configuration via `flwr run`, and more." msgstr "" -#: ../../source/ref-changelog.md:265 +#: ../../source/ref-changelog.md:287 msgid "" "**Improve** `RecordSet` " "([#4052](https://github.com/adap/flower/pull/4052), " @@ -17802,7 +17881,7 @@ msgid "" "[#4016](https://github.com/adap/flower/pull/4016))" msgstr "" -#: ../../source/ref-changelog.md:267 +#: ../../source/ref-changelog.md:289 msgid "" "`RecordSet` is the core object to exchange model parameters, " "configuration values and metrics between `ClientApp` and `ServerApp`. " @@ -17810,7 +17889,7 @@ msgid "" "related `*Record` types." msgstr "" -#: ../../source/ref-changelog.md:269 +#: ../../source/ref-changelog.md:291 msgid "" "**Update documentation** " "([#3972](https://github.com/adap/flower/pull/3972), " @@ -17829,14 +17908,14 @@ msgid "" "[#3916](https://github.com/adap/flower/pull/3916))" msgstr "" -#: ../../source/ref-changelog.md:271 +#: ../../source/ref-changelog.md:293 msgid "" "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." msgstr "" -#: ../../source/ref-changelog.md:273 +#: ../../source/ref-changelog.md:295 msgid "" "**Migrate code example to use new Flower APIs** " "([#3758](https://github.com/adap/flower/pull/3758), " @@ -17862,11 +17941,11 @@ msgid "" "[#3313](https://github.com/adap/flower/pull/3313))" msgstr "" -#: ../../source/ref-changelog.md:275 +#: ../../source/ref-changelog.md:297 msgid "Many code examples have been migrated to use new Flower APIs." msgstr "" -#: ../../source/ref-changelog.md:277 +#: ../../source/ref-changelog.md:299 msgid "" "**Update Flower framework, framework internals and quality " "infrastructure** ([#4018](https://github.com/adap/flower/pull/4018), " @@ -17908,13 +17987,13 @@ msgid "" "[#4038](https://github.com/adap/flower/pull/4038))" msgstr "" -#: ../../source/ref-changelog.md:283 +#: ../../source/ref-changelog.md:305 msgid "" "**Deprecate accessing `Context` via `Client.context`** " "([#3797](https://github.com/adap/flower/pull/3797))" msgstr "" -#: ../../source/ref-changelog.md:285 +#: ../../source/ref-changelog.md:307 msgid "" "Now that both `client_fn` and `server_fn` receive a `Context` object, " "accessing `Context` via `Client.context` is deprecated. `Client.context` " @@ -17923,7 +18002,7 @@ msgid "" " instance in `client_fn`:" msgstr "" -#: ../../source/ref-changelog.md:294 +#: ../../source/ref-changelog.md:316 msgid "" "**Update CLIs to accept an app directory instead of** `ClientApp` **and**" " `ServerApp` ([#3952](https://github.com/adap/flower/pull/3952), " @@ -17931,7 +18010,7 @@ msgid "" "[#3850](https://github.com/adap/flower/pull/3850))" msgstr "" -#: ../../source/ref-changelog.md:296 +#: ../../source/ref-changelog.md:318 msgid "" "The CLI commands `flower-supernode` and `flower-server-app` now accept an" " app directory as argument (instead of references to a `ClientApp` or " @@ -17941,49 +18020,49 @@ msgid "" "`flwr new`." msgstr "" -#: ../../source/ref-changelog.md:298 +#: ../../source/ref-changelog.md:320 msgid "" "**Disable** `flower-client-app` **CLI command** " "([#4022](https://github.com/adap/flower/pull/4022))" msgstr "" -#: ../../source/ref-changelog.md:300 +#: ../../source/ref-changelog.md:322 msgid "`flower-client-app` has been disabled. Use `flower-supernode` instead." msgstr "" -#: ../../source/ref-changelog.md:302 +#: ../../source/ref-changelog.md:324 msgid "" "**Use spaces instead of commas for separating config args** " "([#4000](https://github.com/adap/flower/pull/4000))" msgstr "" -#: ../../source/ref-changelog.md:304 +#: ../../source/ref-changelog.md:326 msgid "" "When passing configs (run config, node config) to Flower, you now need to" " separate key-value pairs using spaces instead of commas. For example:" msgstr "" -#: ../../source/ref-changelog.md:310 +#: ../../source/ref-changelog.md:332 msgid "Previously, you could pass configs using commas, like this:" msgstr "" -#: ../../source/ref-changelog.md:316 +#: ../../source/ref-changelog.md:338 msgid "" "**Remove** `flwr example` **CLI command** " "([#4084](https://github.com/adap/flower/pull/4084))" msgstr "" -#: ../../source/ref-changelog.md:318 +#: ../../source/ref-changelog.md:340 msgid "" "The experimental `flwr example` CLI command has been removed. Use `flwr " "new` to generate a project and then run it using `flwr run`." msgstr "" -#: ../../source/ref-changelog.md:320 +#: ../../source/ref-changelog.md:342 msgid "v1.10.0 (2024-07-24)" msgstr "" -#: ../../source/ref-changelog.md:326 +#: ../../source/ref-changelog.md:348 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " "Beutel`, `Daniel Nata Nugraha`, `Danny`, `Gustavo Bertoli`, `Heng Pan`, " @@ -17992,7 +18071,7 @@ msgid "" "---TOKEN_v1.10.0-->" msgstr "" -#: ../../source/ref-changelog.md:330 +#: ../../source/ref-changelog.md:352 msgid "" "**Introduce** `flwr run` **(beta)** " "([#3810](https://github.com/adap/flower/pull/3810), " @@ -18006,7 +18085,7 @@ msgid "" "[#3819](https://github.com/adap/flower/pull/3819))" msgstr "" -#: ../../source/ref-changelog.md:332 +#: ../../source/ref-changelog.md:354 msgid "" "Flower 1.10 ships the first beta release of the new `flwr run` command. " "`flwr run` can run different projects using `flwr run path/to/project`, " @@ -18019,7 +18098,7 @@ msgid "" "`flwr new` to generate a project and then run it using `flwr run`." msgstr "" -#: ../../source/ref-changelog.md:334 +#: ../../source/ref-changelog.md:356 msgid "" "**Introduce run config** " "([#3751](https://github.com/adap/flower/pull/3751), " @@ -18039,7 +18118,7 @@ msgid "" "[#3815](https://github.com/adap/flower/pull/3815))" msgstr "" -#: ../../source/ref-changelog.md:336 +#: ../../source/ref-changelog.md:358 msgid "" "The new run config feature allows you to run your Flower project in " "different configurations without having to change a single line of code. " @@ -18052,7 +18131,7 @@ msgid "" "new project using `flwr new` to see run config in action." msgstr "" -#: ../../source/ref-changelog.md:338 +#: ../../source/ref-changelog.md:360 msgid "" "**Generalize** `client_fn` **signature to** `client_fn(context: Context) " "-> Client` ([#3779](https://github.com/adap/flower/pull/3779), " @@ -18061,7 +18140,7 @@ msgid "" "[#3696](https://github.com/adap/flower/pull/3696))" msgstr "" -#: ../../source/ref-changelog.md:340 +#: ../../source/ref-changelog.md:362 msgid "" "The `client_fn` signature has been generalized to `client_fn(context: " "Context) -> Client`. It now receives a `Context` object instead of the " @@ -18071,14 +18150,14 @@ msgid "" "system." msgstr "" -#: ../../source/ref-changelog.md:342 +#: ../../source/ref-changelog.md:364 msgid "" "The previous signature `client_fn(cid: str)` is now deprecated and " "support for it will be removed in a future release. Use " "`client_fn(context: Context) -> Client` everywhere." msgstr "" -#: ../../source/ref-changelog.md:344 +#: ../../source/ref-changelog.md:366 msgid "" "**Introduce new** `server_fn(context)` " "([#3773](https://github.com/adap/flower/pull/3773), " @@ -18086,7 +18165,7 @@ msgid "" "[#3771](https://github.com/adap/flower/pull/3771))" msgstr "" -#: ../../source/ref-changelog.md:346 +#: ../../source/ref-changelog.md:368 msgid "" "In addition to the new `client_fn(context:Context)`, a new " "`server_fn(context: Context) -> ServerAppComponents` can now be passed to" @@ -18095,7 +18174,7 @@ msgid "" "build a configurable `ServerApp`." msgstr "" -#: ../../source/ref-changelog.md:348 +#: ../../source/ref-changelog.md:370 msgid "" "**Relaunch all** `flwr new` **templates** " "([#3877](https://github.com/adap/flower/pull/3877), " @@ -18107,7 +18186,7 @@ msgid "" "[#3760](https://github.com/adap/flower/pull/3760))" msgstr "" -#: ../../source/ref-changelog.md:350 +#: ../../source/ref-changelog.md:372 msgid "" "All `flwr new` templates have been significantly updated to showcase new " "Flower features and best practices. This includes using `flwr run` and " @@ -18116,13 +18195,13 @@ msgid "" "run` it." msgstr "" -#: ../../source/ref-changelog.md:352 +#: ../../source/ref-changelog.md:374 msgid "" "**Introduce** `flower-supernode` **(preview)** " "([#3353](https://github.com/adap/flower/pull/3353))" msgstr "" -#: ../../source/ref-changelog.md:354 +#: ../../source/ref-changelog.md:376 msgid "" "The new `flower-supernode` CLI is here to replace `flower-client-app`. " "`flower-supernode` brings full multi-app support to the Flower client-" @@ -18131,7 +18210,7 @@ msgid "" "`client_fn(context: Context)` signature)." msgstr "" -#: ../../source/ref-changelog.md:356 +#: ../../source/ref-changelog.md:378 msgid "" "**Introduce node config** " "([#3782](https://github.com/adap/flower/pull/3782), " @@ -18140,7 +18219,7 @@ msgid "" "[#3886](https://github.com/adap/flower/pull/3886))" msgstr "" -#: ../../source/ref-changelog.md:358 +#: ../../source/ref-changelog.md:380 msgid "" "A new node config feature allows you to pass a static configuration to " "the SuperNode. This configuration is read-only and available to every " @@ -18148,7 +18227,7 @@ msgid "" "config via `Context` (`context.node_config`)." msgstr "" -#: ../../source/ref-changelog.md:360 +#: ../../source/ref-changelog.md:382 msgid "" "**Introduce SuperExec (experimental)** " "([#3605](https://github.com/adap/flower/pull/3605), " @@ -18169,26 +18248,26 @@ msgid "" "[#3629](https://github.com/adap/flower/pull/3629))" msgstr "" -#: ../../source/ref-changelog.md:362 +#: ../../source/ref-changelog.md:384 msgid "" "This is the first experimental release of Flower SuperExec, a new service" " that executes your runs. It's not ready for production deployment just " "yet, but don't hesitate to give it a try if you're interested." msgstr "" -#: ../../source/ref-changelog.md:364 +#: ../../source/ref-changelog.md:386 msgid "" "**Add new federated learning with tabular data example** " "([#3568](https://github.com/adap/flower/pull/3568))" msgstr "" -#: ../../source/ref-changelog.md:366 +#: ../../source/ref-changelog.md:388 msgid "" "A new code example exemplifies a federated learning setup using the " "Flower framework on the Adult Census Income tabular dataset." msgstr "" -#: ../../source/ref-changelog.md:368 +#: ../../source/ref-changelog.md:390 msgid "" "**Create generic adapter layer (preview)** " "([#3538](https://github.com/adap/flower/pull/3538), " @@ -18196,7 +18275,7 @@ msgid "" "[#3540](https://github.com/adap/flower/pull/3540))" msgstr "" -#: ../../source/ref-changelog.md:370 +#: ../../source/ref-changelog.md:392 msgid "" "A new generic gRPC adapter layer allows 3rd-party frameworks to integrate" " with Flower in a transparent way. This makes Flower more modular and " @@ -18204,7 +18283,7 @@ msgid "" "platforms." msgstr "" -#: ../../source/ref-changelog.md:372 +#: ../../source/ref-changelog.md:394 msgid "" "**Refactor Flower Simulation Engine** " "([#3581](https://github.com/adap/flower/pull/3581), " @@ -18220,7 +18299,7 @@ msgid "" "[#3469](https://github.com/adap/flower/pull/3469))" msgstr "" -#: ../../source/ref-changelog.md:374 +#: ../../source/ref-changelog.md:396 msgid "" "The Simulation Engine was significantly refactored. This results in " "faster and more stable simulations. It is also the foundation for " @@ -18228,31 +18307,31 @@ msgid "" "configurability in federated learning simulations." msgstr "" -#: ../../source/ref-changelog.md:376 +#: ../../source/ref-changelog.md:398 msgid "" "**Optimize Docker containers** " "([#3591](https://github.com/adap/flower/pull/3591))" msgstr "" -#: ../../source/ref-changelog.md:378 +#: ../../source/ref-changelog.md:400 msgid "" "Flower Docker containers were optimized and updated to use that latest " "Flower framework features." msgstr "" -#: ../../source/ref-changelog.md:380 +#: ../../source/ref-changelog.md:402 msgid "" "**Improve logging** ([#3776](https://github.com/adap/flower/pull/3776), " "[#3789](https://github.com/adap/flower/pull/3789))" msgstr "" -#: ../../source/ref-changelog.md:382 +#: ../../source/ref-changelog.md:404 msgid "" "Improved logging aims to be more concise and helpful to show you the " "details you actually care about." msgstr "" -#: ../../source/ref-changelog.md:384 +#: ../../source/ref-changelog.md:406 msgid "" "**Refactor framework internals** " "([#3621](https://github.com/adap/flower/pull/3621), " @@ -18266,13 +18345,18 @@ msgid "" "[#3569](https://github.com/adap/flower/pull/3569))" msgstr "" -#: ../../source/ref-changelog.md:390 +#: ../../source/ref-changelog.md:410 +#, fuzzy +msgid "Documentation improvements" +msgstr "선택적 개선 사항" + +#: ../../source/ref-changelog.md:412 msgid "" "**Add 🇰🇷 Korean translations** " "([#3680](https://github.com/adap/flower/pull/3680))" msgstr "" -#: ../../source/ref-changelog.md:392 +#: ../../source/ref-changelog.md:414 msgid "" "**Update translations** " "([#3586](https://github.com/adap/flower/pull/3586), " @@ -18286,7 +18370,7 @@ msgid "" "[#3631](https://github.com/adap/flower/pull/3631))" msgstr "" -#: ../../source/ref-changelog.md:394 +#: ../../source/ref-changelog.md:416 msgid "" "**Update documentation** " "([#3864](https://github.com/adap/flower/pull/3864), " @@ -18300,18 +18384,18 @@ msgid "" "[#3707](https://github.com/adap/flower/pull/3707))" msgstr "" -#: ../../source/ref-changelog.md:396 +#: ../../source/ref-changelog.md:418 msgid "" "Updated documentation includes new install instructions for different " "shells, a new Flower Code Examples documentation landing page, new `flwr`" " CLI docs and an updated federated XGBoost code example." msgstr "" -#: ../../source/ref-changelog.md:400 +#: ../../source/ref-changelog.md:422 msgid "**Deprecate** `client_fn(cid: str)`" msgstr "" -#: ../../source/ref-changelog.md:402 +#: ../../source/ref-changelog.md:424 msgid "" "`client_fn` used to have a signature `client_fn(cid: str) -> Client`. " "This signature is now deprecated. Use the new signature " @@ -18324,13 +18408,13 @@ msgid "" " the dataset on each simulated or deployed SuperNode." msgstr "" -#: ../../source/ref-changelog.md:404 +#: ../../source/ref-changelog.md:426 msgid "" "**Deprecate passing** `Server/ServerConfig/Strategy/ClientManager` **to**" " `ServerApp` **directly**" msgstr "" -#: ../../source/ref-changelog.md:406 +#: ../../source/ref-changelog.md:428 msgid "" "Creating `ServerApp` using `ServerApp(config=config, strategy=strategy)` " "is now deprecated. Instead of passing " @@ -18343,13 +18427,13 @@ msgid "" " the `run_config`)." msgstr "" -#: ../../source/ref-changelog.md:410 +#: ../../source/ref-changelog.md:432 msgid "" "**Remove support for `client_ids` in `start_simulation`** " "([#3699](https://github.com/adap/flower/pull/3699))" msgstr "" -#: ../../source/ref-changelog.md:412 +#: ../../source/ref-changelog.md:434 msgid "" "The (rarely used) feature that allowed passing custom `client_ids` to the" " `start_simulation` function was removed. This removal is part of a " @@ -18357,24 +18441,24 @@ msgid "" "internals work in simulation and deployment." msgstr "" -#: ../../source/ref-changelog.md:414 +#: ../../source/ref-changelog.md:436 msgid "" "**Remove `flower-driver-api` and `flower-fleet-api`** " "([#3418](https://github.com/adap/flower/pull/3418))" msgstr "" -#: ../../source/ref-changelog.md:416 +#: ../../source/ref-changelog.md:438 msgid "" "The two deprecated CLI commands `flower-driver-api` and `flower-fleet-" "api` were removed in an effort to streamline the SuperLink developer " "experience. Use `flower-superlink` instead." msgstr "" -#: ../../source/ref-changelog.md:418 +#: ../../source/ref-changelog.md:440 msgid "v1.9.0 (2024-06-10)" msgstr "" -#: ../../source/ref-changelog.md:424 +#: ../../source/ref-changelog.md:446 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " "Beutel`, `Daniel Nata Nugraha`, `Heng Pan`, `Javier`, `Mahdi Beitollahi`," @@ -18382,7 +18466,7 @@ msgid "" "---TOKEN_v1.9.0-->" msgstr "" -#: ../../source/ref-changelog.md:428 +#: ../../source/ref-changelog.md:450 msgid "" "**Introduce built-in authentication (preview)** " "([#2946](https://github.com/adap/flower/pull/2946), " @@ -18401,7 +18485,7 @@ msgid "" "[#3357](https://github.com/adap/flower/pull/3357))" msgstr "" -#: ../../source/ref-changelog.md:430 +#: ../../source/ref-changelog.md:452 msgid "" "Flower 1.9 introduces the first build-in version of client node " "authentication. In previous releases, users often wrote glue code to " @@ -18413,14 +18497,14 @@ msgid "" "authentication) help you to get started." msgstr "" -#: ../../source/ref-changelog.md:432 +#: ../../source/ref-changelog.md:454 msgid "" "This is the first preview release of the Flower-native authentication " "system. Many additional features are on the roadmap for upcoming Flower " "releases - stay tuned." msgstr "" -#: ../../source/ref-changelog.md:434 +#: ../../source/ref-changelog.md:456 msgid "" "**Introduce end-to-end Docker support** " "([#3483](https://github.com/adap/flower/pull/3483), " @@ -18437,7 +18521,7 @@ msgid "" "[#3290](https://github.com/adap/flower/pull/3290))" msgstr "" -#: ../../source/ref-changelog.md:436 +#: ../../source/ref-changelog.md:458 msgid "" "Full Flower Next Docker support is here! With the release of Flower 1.9, " "Flower provides stable Docker images for the Flower SuperLink, the Flower" @@ -18447,7 +18531,7 @@ msgid "" "docker.html) to get stated." msgstr "" -#: ../../source/ref-changelog.md:438 +#: ../../source/ref-changelog.md:460 msgid "" "**Re-architect Flower Next simulation engine** " "([#3307](https://github.com/adap/flower/pull/3307), " @@ -18460,7 +18544,7 @@ msgid "" "[#3326](https://github.com/adap/flower/pull/3326))" msgstr "" -#: ../../source/ref-changelog.md:440 +#: ../../source/ref-changelog.md:462 msgid "" "Flower Next simulations now use a new in-memory `Driver` that improves " "the reliability of simulations, especially in notebook environments. This" @@ -18468,7 +18552,7 @@ msgid "" "simulation architecture." msgstr "" -#: ../../source/ref-changelog.md:442 +#: ../../source/ref-changelog.md:464 msgid "" "**Upgrade simulation engine** " "([#3354](https://github.com/adap/flower/pull/3354), " @@ -18480,20 +18564,20 @@ msgid "" "[#3494](https://github.com/adap/flower/pull/3494))" msgstr "" -#: ../../source/ref-changelog.md:444 +#: ../../source/ref-changelog.md:466 msgid "" "The Flower Next simulation engine comes with improved and configurable " "logging. The Ray-based simulation backend in Flower 1.9 was updated to " "use Ray 2.10." msgstr "" -#: ../../source/ref-changelog.md:446 +#: ../../source/ref-changelog.md:468 msgid "" "**Introduce FedPFT baseline** " "([#3268](https://github.com/adap/flower/pull/3268))" msgstr "" -#: ../../source/ref-changelog.md:448 +#: ../../source/ref-changelog.md:470 msgid "" "FedPFT allows you to perform one-shot Federated Learning by leveraging " "widely available foundational models, dramatically reducing communication" @@ -18504,7 +18588,7 @@ msgid "" "([arxiv](https://arxiv.org/abs/2402.01862))" msgstr "" -#: ../../source/ref-changelog.md:450 +#: ../../source/ref-changelog.md:472 msgid "" "**Launch additional** `flwr new` **templates for Apple MLX, Hugging Face " "Transformers, scikit-learn and TensorFlow** " @@ -18516,7 +18600,7 @@ msgid "" "[#3287](https://github.com/adap/flower/pull/3287))" msgstr "" -#: ../../source/ref-changelog.md:452 +#: ../../source/ref-changelog.md:474 msgid "" "The `flwr` CLI's `flwr new` command is starting to become everone's " "favorite way of creating new Flower projects. This release introduces " @@ -18525,7 +18609,7 @@ msgid "" "also received updates." msgstr "" -#: ../../source/ref-changelog.md:454 +#: ../../source/ref-changelog.md:476 msgid "" "**Refine** `RecordSet` **API** " "([#3209](https://github.com/adap/flower/pull/3209), " @@ -18536,14 +18620,14 @@ msgid "" "[#3368](https://github.com/adap/flower/pull/3368))" msgstr "" -#: ../../source/ref-changelog.md:456 +#: ../../source/ref-changelog.md:478 msgid "" "`RecordSet` is part of the Flower Next low-level API preview release. In " "Flower 1.9, `RecordSet` received a number of usability improvements that " "make it easier to build `RecordSet`-based `ServerApp`s and `ClientApp`s." msgstr "" -#: ../../source/ref-changelog.md:458 +#: ../../source/ref-changelog.md:480 msgid "" "**Beautify logging** ([#3379](https://github.com/adap/flower/pull/3379), " "[#3430](https://github.com/adap/flower/pull/3430), " @@ -18552,13 +18636,13 @@ msgid "" "[#3433](https://github.com/adap/flower/pull/3433))" msgstr "" -#: ../../source/ref-changelog.md:460 +#: ../../source/ref-changelog.md:482 msgid "" "Logs received a substantial update. Not only are logs now much nicer to " "look at, but they are also more configurable." msgstr "" -#: ../../source/ref-changelog.md:462 +#: ../../source/ref-changelog.md:484 msgid "" "**Improve reliability** " "([#3564](https://github.com/adap/flower/pull/3564), " @@ -18571,27 +18655,27 @@ msgid "" "[#3372](https://github.com/adap/flower/pull/3372))" msgstr "" -#: ../../source/ref-changelog.md:464 +#: ../../source/ref-changelog.md:486 msgid "" "Flower 1.9 includes reliability improvements across many parts of the " "system. One example is a much improved SuperNode shutdown procedure." msgstr "" -#: ../../source/ref-changelog.md:466 +#: ../../source/ref-changelog.md:488 msgid "" "**Update Swift and C++ SDKs** " "([#3321](https://github.com/adap/flower/pull/3321), " "[#2763](https://github.com/adap/flower/pull/2763))" msgstr "" -#: ../../source/ref-changelog.md:468 +#: ../../source/ref-changelog.md:490 msgid "" "In the C++ SDK, communication-related code is now separate from main " "client logic. A new abstract class `Communicator` has been introduced " "alongside a gRPC implementation of it." msgstr "" -#: ../../source/ref-changelog.md:470 +#: ../../source/ref-changelog.md:492 msgid "" "**Improve testing, tooling and CI/CD infrastructure** " "([#3294](https://github.com/adap/flower/pull/3294), " @@ -18625,13 +18709,13 @@ msgid "" "[#3271](https://github.com/adap/flower/pull/3271))" msgstr "" -#: ../../source/ref-changelog.md:472 +#: ../../source/ref-changelog.md:494 msgid "" "As always, the Flower tooling, testing, and CI/CD infrastructure has " "received many updates." msgstr "" -#: ../../source/ref-changelog.md:474 +#: ../../source/ref-changelog.md:496 msgid "" "**Improve documentation** " "([#3530](https://github.com/adap/flower/pull/3530), " @@ -18656,32 +18740,32 @@ msgid "" "[#3274](https://github.com/adap/flower/pull/3274))" msgstr "" -#: ../../source/ref-changelog.md:476 +#: ../../source/ref-changelog.md:498 msgid "" "As always, the Flower documentation has received many updates. Notable " "new pages include:" msgstr "" -#: ../../source/ref-changelog.md:478 +#: ../../source/ref-changelog.md:500 msgid "" "[How-to upgrate to Flower Next (Flower Next migration " "guide)](https://flower.ai/docs/framework/how-to-upgrade-to-flower-" "next.html)" msgstr "" -#: ../../source/ref-changelog.md:480 +#: ../../source/ref-changelog.md:502 msgid "" "[How-to run Flower using Docker](https://flower.ai/docs/framework/how-to-" "run-flower-using-docker.html)" msgstr "" -#: ../../source/ref-changelog.md:482 +#: ../../source/ref-changelog.md:504 msgid "" "[Flower Mods reference](https://flower.ai/docs/framework/ref-" "api/flwr.client.mod.html#module-flwr.client.mod)" msgstr "" -#: ../../source/ref-changelog.md:484 +#: ../../source/ref-changelog.md:506 msgid "" "**General updates to Flower Examples** " "([#3205](https://github.com/adap/flower/pull/3205), " @@ -18704,11 +18788,11 @@ msgid "" "[#3269](https://github.com/adap/flower/pull/3269))" msgstr "" -#: ../../source/ref-changelog.md:486 +#: ../../source/ref-changelog.md:508 msgid "As always, Flower code examples have received many updates." msgstr "" -#: ../../source/ref-changelog.md:488 +#: ../../source/ref-changelog.md:510 msgid "" "**General improvements** " "([#3532](https://github.com/adap/flower/pull/3532), " @@ -18747,45 +18831,45 @@ msgid "" "[#3261](https://github.com/adap/flower/pull/3261))" msgstr "" -#: ../../source/ref-changelog.md:492 +#: ../../source/ref-changelog.md:514 msgid "**Deprecate Python 3.8 support**" msgstr "" -#: ../../source/ref-changelog.md:494 +#: ../../source/ref-changelog.md:516 msgid "" "Python 3.8 will stop receiving security fixes in [October " "2024](https://devguide.python.org/versions/). Support for Python 3.8 is " "now deprecated and will be removed in an upcoming release." msgstr "" -#: ../../source/ref-changelog.md:496 +#: ../../source/ref-changelog.md:518 msgid "" "**Deprecate (experimental)** `flower-driver-api` **and** `flower-fleet-" "api` ([#3416](https://github.com/adap/flower/pull/3416), " "[#3420](https://github.com/adap/flower/pull/3420))" msgstr "" -#: ../../source/ref-changelog.md:498 +#: ../../source/ref-changelog.md:520 msgid "" "Flower 1.9 deprecates the two (experimental) commands `flower-driver-api`" " and `flower-fleet-api`. Both commands will be removed in an upcoming " "release. Use `flower-superlink` instead." msgstr "" -#: ../../source/ref-changelog.md:500 +#: ../../source/ref-changelog.md:522 msgid "" "**Deprecate** `--server` **in favor of** `--superlink` " "([#3518](https://github.com/adap/flower/pull/3518))" msgstr "" -#: ../../source/ref-changelog.md:502 +#: ../../source/ref-changelog.md:524 msgid "" "The commands `flower-server-app` and `flower-client-app` should use " "`--superlink` instead of the now deprecated `--server`. Support for " "`--server` will be removed in a future release." msgstr "" -#: ../../source/ref-changelog.md:506 +#: ../../source/ref-changelog.md:528 msgid "" "**Replace** `flower-superlink` **CLI option** `--certificates` **with** " "`--ssl-ca-certfile` **,** `--ssl-certfile` **and** `--ssl-keyfile` " @@ -18793,7 +18877,7 @@ msgid "" "[#3408](https://github.com/adap/flower/pull/3408))" msgstr "" -#: ../../source/ref-changelog.md:508 +#: ../../source/ref-changelog.md:530 msgid "" "SSL-related `flower-superlink` CLI arguments were restructured in an " "incompatible way. Instead of passing a single `--certificates` flag with " @@ -18803,26 +18887,26 @@ msgid "" "connections.html) documentation page for details." msgstr "" -#: ../../source/ref-changelog.md:510 +#: ../../source/ref-changelog.md:532 msgid "" "**Remove SuperLink** `--vce` **option** " "([#3513](https://github.com/adap/flower/pull/3513))" msgstr "" -#: ../../source/ref-changelog.md:512 +#: ../../source/ref-changelog.md:534 msgid "" "Instead of separately starting a SuperLink and a `ServerApp` for " "simulation, simulations must now be started using the single `flower-" "simulation` command." msgstr "" -#: ../../source/ref-changelog.md:514 +#: ../../source/ref-changelog.md:536 msgid "" "**Merge** `--grpc-rere` **and** `--rest` **SuperLink options** " "([#3527](https://github.com/adap/flower/pull/3527))" msgstr "" -#: ../../source/ref-changelog.md:516 +#: ../../source/ref-changelog.md:538 msgid "" "To simplify the usage of `flower-superlink`, previously separate sets of " "CLI options for gRPC and REST were merged into one unified set of " @@ -18831,11 +18915,11 @@ msgid "" "details." msgstr "" -#: ../../source/ref-changelog.md:518 +#: ../../source/ref-changelog.md:540 msgid "v1.8.0 (2024-04-03)" msgstr "" -#: ../../source/ref-changelog.md:524 +#: ../../source/ref-changelog.md:546 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Daniel J. Beutel`, `Daniel Nata " "Nugraha`, `Danny`, `Gustavo Bertoli`, `Heng Pan`, `Ikko Eltociear " @@ -18844,7 +18928,7 @@ msgid "" "`tabdar-khan` " msgstr "" -#: ../../source/ref-changelog.md:528 +#: ../../source/ref-changelog.md:550 msgid "" "**Introduce Flower Next high-level API (stable)** " "([#3002](https://github.com/adap/flower/pull/3002), " @@ -18874,7 +18958,7 @@ msgid "" "[#3197](https://github.com/adap/flower/pull/3197))" msgstr "" -#: ../../source/ref-changelog.md:530 +#: ../../source/ref-changelog.md:552 msgid "" "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. " @@ -18888,7 +18972,7 @@ msgid "" "projects that use `Strategy`, `NumPyClient` & co." msgstr "" -#: ../../source/ref-changelog.md:532 +#: ../../source/ref-changelog.md:554 msgid "" "**Introduce Flower Next low-level API (preview)** " "([#3062](https://github.com/adap/flower/pull/3062), " @@ -18896,7 +18980,7 @@ msgid "" "[#3069](https://github.com/adap/flower/pull/3069))" msgstr "" -#: ../../source/ref-changelog.md:534 +#: ../../source/ref-changelog.md:556 msgid "" "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 " @@ -18913,7 +18997,7 @@ msgid "" "custom SMPC protocols, to name just a few." msgstr "" -#: ../../source/ref-changelog.md:536 +#: ../../source/ref-changelog.md:558 msgid "" "**Introduce Flower Mods (preview)** " "([#3054](https://github.com/adap/flower/pull/3054), " @@ -18921,7 +19005,7 @@ msgid "" "[#3083](https://github.com/adap/flower/pull/3083))" msgstr "" -#: ../../source/ref-changelog.md:538 +#: ../../source/ref-changelog.md:560 msgid "" "Flower Modifiers (we call them Mods) can intercept messages and analyze, " "edit or handle them directly. Mods can be used to develop pluggable " @@ -18933,7 +19017,7 @@ msgid "" "can already use it to experiment with arbirtrary SMPC protocols." msgstr "" -#: ../../source/ref-changelog.md:540 +#: ../../source/ref-changelog.md:562 msgid "" "**Fine-tune LLMs with LLM FlowerTune** " "([#3029](https://github.com/adap/flower/pull/3029), " @@ -18945,7 +19029,7 @@ msgid "" "[#3172](https://github.com/adap/flower/pull/3172))" msgstr "" -#: ../../source/ref-changelog.md:542 +#: ../../source/ref-changelog.md:564 msgid "" "We are introducing LLM FlowerTune, an introductory example that " "demonstrates federated LLM fine-tuning of pre-trained Llama2 models on " @@ -18955,7 +19039,7 @@ msgid "" "-llm-flowertune-federated-llm-finetuning-with-flower/) for more details." msgstr "" -#: ../../source/ref-changelog.md:544 +#: ../../source/ref-changelog.md:566 msgid "" "**Introduce built-in Differential Privacy (preview)** " "([#2798](https://github.com/adap/flower/pull/2798), " @@ -18969,7 +19053,7 @@ msgid "" "[#3074](https://github.com/adap/flower/pull/3074))" msgstr "" -#: ../../source/ref-changelog.md:546 +#: ../../source/ref-changelog.md:568 msgid "" "Built-in Differential Privacy is here! Flower supports both central and " "local differential privacy (DP). Central DP can be configured with either" @@ -18982,7 +19066,7 @@ msgid "" "/how-to-use-differential-privacy.html) in Flower." msgstr "" -#: ../../source/ref-changelog.md:548 +#: ../../source/ref-changelog.md:570 msgid "" "**Introduce built-in Secure Aggregation (preview)** " "([#3120](https://github.com/adap/flower/pull/3120), " @@ -18990,7 +19074,7 @@ msgid "" "[#3108](https://github.com/adap/flower/pull/3108))" msgstr "" -#: ../../source/ref-changelog.md:550 +#: ../../source/ref-changelog.md:572 msgid "" "Built-in Secure Aggregation is here! Flower now supports different secure" " aggregation protocols out-of-the-box. The best part? You can add secure " @@ -19003,7 +19087,7 @@ msgid "" "in the same project." msgstr "" -#: ../../source/ref-changelog.md:552 +#: ../../source/ref-changelog.md:574 msgid "" "**Introduce** `flwr` **CLI (preview)** " "([#2942](https://github.com/adap/flower/pull/2942), " @@ -19017,13 +19101,13 @@ msgid "" "[#3142](https://github.com/adap/flower/pull/3142))" msgstr "" -#: ../../source/ref-changelog.md:554 +#: ../../source/ref-changelog.md:576 msgid "" "A new `flwr` CLI command allows creating new Flower projects (`flwr new`)" " and then running them using the Simulation Engine (`flwr run`)." msgstr "" -#: ../../source/ref-changelog.md:556 +#: ../../source/ref-changelog.md:578 msgid "" "**Introduce Flower Next Simulation Engine** " "([#3024](https://github.com/adap/flower/pull/3024), " @@ -19038,20 +19122,20 @@ msgid "" "[#3008](https://github.com/adap/flower/pull/3008))" msgstr "" -#: ../../source/ref-changelog.md:558 +#: ../../source/ref-changelog.md:580 msgid "" "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`." msgstr "" -#: ../../source/ref-changelog.md:560 +#: ../../source/ref-changelog.md:582 msgid "" "**Handle SuperNode connection errors** " "([#2969](https://github.com/adap/flower/pull/2969))" msgstr "" -#: ../../source/ref-changelog.md:562 +#: ../../source/ref-changelog.md:584 msgid "" "A SuperNode will now try to reconnect indefinitely to the SuperLink in " "case of connection errors. The arguments `--max-retries` and `--max-wait-" @@ -19062,7 +19146,7 @@ msgid "" "reconnect to the SuperLink." msgstr "" -#: ../../source/ref-changelog.md:564 +#: ../../source/ref-changelog.md:586 msgid "" "**General updates to Flower Baselines** " "([#2904](https://github.com/adap/flower/pull/2904), " @@ -19071,13 +19155,13 @@ msgid "" "[#2968](https://github.com/adap/flower/pull/2968))" msgstr "" -#: ../../source/ref-changelog.md:566 +#: ../../source/ref-changelog.md:588 msgid "" "There's a new [FedStar](https://flower.ai/docs/baselines/fedstar.html) " "baseline. Several other baselined have been updated as well." msgstr "" -#: ../../source/ref-changelog.md:568 +#: ../../source/ref-changelog.md:590 msgid "" "**Improve documentation and translations** " "([#3050](https://github.com/adap/flower/pull/3050), " @@ -19098,14 +19182,14 @@ msgid "" "[#2989](https://github.com/adap/flower/pull/2989))" msgstr "" -#: ../../source/ref-changelog.md:570 +#: ../../source/ref-changelog.md:592 msgid "" "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!" msgstr "" -#: ../../source/ref-changelog.md:572 +#: ../../source/ref-changelog.md:594 msgid "" "**General updates to Flower Examples** " "([3134](https://github.com/adap/flower/pull/3134), " @@ -19121,7 +19205,7 @@ msgid "" "[#3117](https://github.com/adap/flower/pull/3117))" msgstr "" -#: ../../source/ref-changelog.md:574 +#: ../../source/ref-changelog.md:596 msgid "" "Two new examples show federated training of a Vision Transformer (ViT) " "and federated learning in a medical context using the popular MONAI " @@ -19130,7 +19214,7 @@ msgid "" "received considerable updates as well." msgstr "" -#: ../../source/ref-changelog.md:576 +#: ../../source/ref-changelog.md:598 msgid "" "**General improvements** " "([#3171](https://github.com/adap/flower/pull/3171), " @@ -19208,11 +19292,11 @@ msgid "" "[#2954](https://github.com/adap/flower/pull/2954))" msgstr "" -#: ../../source/ref-changelog.md:582 +#: ../../source/ref-changelog.md:604 msgid "v1.7.0 (2024-02-05)" msgstr "" -#: ../../source/ref-changelog.md:588 +#: ../../source/ref-changelog.md:610 msgid "" "`Aasheesh Singh`, `Adam Narozniak`, `Aml Hassan Esmil`, `Charles " "Beauville`, `Daniel J. Beutel`, `Daniel Nata Nugraha`, `Edoardo " @@ -19222,7 +19306,7 @@ msgid "" "Shaaban`, `Yan Gao`, `Yasar Abbas` " msgstr "" -#: ../../source/ref-changelog.md:592 +#: ../../source/ref-changelog.md:614 msgid "" "**Introduce stateful clients (experimental)** " "([#2770](https://github.com/adap/flower/pull/2770), " @@ -19232,7 +19316,7 @@ msgid "" "[#2769](https://github.com/adap/flower/pull/2769))" msgstr "" -#: ../../source/ref-changelog.md:594 +#: ../../source/ref-changelog.md:616 msgid "" "Subclasses of `Client` and `NumPyClient` can now store local state that " "remains on the client. Let's start with the highlight first: this new " @@ -19245,13 +19329,13 @@ msgid "" "unified way across simulation and deployment." msgstr "" -#: ../../source/ref-changelog.md:596 +#: ../../source/ref-changelog.md:618 msgid "" "**Improve performance** " "([#2293](https://github.com/adap/flower/pull/2293))" msgstr "" -#: ../../source/ref-changelog.md:598 +#: ../../source/ref-changelog.md:620 msgid "" "Flower is faster than ever. All `FedAvg`-derived strategies now use in-" "place aggregation to reduce memory consumption. The Flower client " @@ -19260,27 +19344,27 @@ msgid "" "training time is short." msgstr "" -#: ../../source/ref-changelog.md:600 +#: ../../source/ref-changelog.md:622 msgid "" "**Support Federated Learning with Apple MLX and Flower** " "([#2693](https://github.com/adap/flower/pull/2693))" msgstr "" -#: ../../source/ref-changelog.md:602 +#: ../../source/ref-changelog.md:624 msgid "" "Flower has official support for federated learning using [Apple " "MLX](https://ml-explore.github.io/mlx) via the new `quickstart-mlx` code " "example." msgstr "" -#: ../../source/ref-changelog.md:604 +#: ../../source/ref-changelog.md:626 msgid "" "**Introduce new XGBoost cyclic strategy** " "([#2666](https://github.com/adap/flower/pull/2666), " "[#2668](https://github.com/adap/flower/pull/2668))" msgstr "" -#: ../../source/ref-changelog.md:606 +#: ../../source/ref-changelog.md:628 msgid "" "A new strategy called `FedXgbCyclic` supports a client-by-client style of" " training (often called cyclic). The `xgboost-comprehensive` code example" @@ -19289,31 +19373,31 @@ msgid "" "offers best-in-class XGBoost support." msgstr "" -#: ../../source/ref-changelog.md:608 +#: ../../source/ref-changelog.md:630 msgid "" "**Support Python 3.11** " "([#2394](https://github.com/adap/flower/pull/2394))" msgstr "" -#: ../../source/ref-changelog.md:610 +#: ../../source/ref-changelog.md:632 msgid "" "Framework tests now run on Python 3.8, 3.9, 3.10, and 3.11. This will " "ensure better support for users using more recent Python versions." msgstr "" -#: ../../source/ref-changelog.md:612 +#: ../../source/ref-changelog.md:634 msgid "" "**Update gRPC and ProtoBuf dependencies** " "([#2814](https://github.com/adap/flower/pull/2814))" msgstr "" -#: ../../source/ref-changelog.md:614 +#: ../../source/ref-changelog.md:636 msgid "" "The `grpcio` and `protobuf` dependencies were updated to their latest " "versions for improved security and performance." msgstr "" -#: ../../source/ref-changelog.md:616 +#: ../../source/ref-changelog.md:638 msgid "" "**Introduce Docker image for Flower server** " "([#2700](https://github.com/adap/flower/pull/2700), " @@ -19327,7 +19411,7 @@ msgid "" "[#2701](https://github.com/adap/flower/pull/2701))" msgstr "" -#: ../../source/ref-changelog.md:618 +#: ../../source/ref-changelog.md:640 msgid "" "The Flower server can now be run using an official Docker image. A new " "how-to guide explains [how to run Flower using " @@ -19335,25 +19419,25 @@ msgid "" "docker.html). An official Flower client Docker image will follow." msgstr "" -#: ../../source/ref-changelog.md:620 +#: ../../source/ref-changelog.md:642 msgid "" "**Introduce** `flower-via-docker-compose` **example** " "([#2626](https://github.com/adap/flower/pull/2626))" msgstr "" -#: ../../source/ref-changelog.md:622 +#: ../../source/ref-changelog.md:644 msgid "" "**Introduce** `quickstart-sklearn-tabular` **example** " "([#2719](https://github.com/adap/flower/pull/2719))" msgstr "" -#: ../../source/ref-changelog.md:624 +#: ../../source/ref-changelog.md:646 msgid "" "**Introduce** `custom-metrics` **example** " "([#1958](https://github.com/adap/flower/pull/1958))" msgstr "" -#: ../../source/ref-changelog.md:626 +#: ../../source/ref-changelog.md:648 msgid "" "**Update code examples to use Flower Datasets** " "([#2450](https://github.com/adap/flower/pull/2450), " @@ -19362,13 +19446,13 @@ msgid "" "[#2712](https://github.com/adap/flower/pull/2712))" msgstr "" -#: ../../source/ref-changelog.md:628 +#: ../../source/ref-changelog.md:650 msgid "" "Several code examples were updated to use [Flower " "Datasets](https://flower.ai/docs/datasets/)." msgstr "" -#: ../../source/ref-changelog.md:630 +#: ../../source/ref-changelog.md:652 msgid "" "**General updates to Flower Examples** " "([#2381](https://github.com/adap/flower/pull/2381), " @@ -19383,41 +19467,41 @@ msgid "" "[#2655](https://github.com/adap/flower/pull/2655))" msgstr "" -#: ../../source/ref-changelog.md:632 +#: ../../source/ref-changelog.md:654 msgid "Many Flower code examples received substantial updates." msgstr "" -#: ../../source/ref-changelog.md:634 ../../source/ref-changelog.md:727 +#: ../../source/ref-changelog.md:656 ../../source/ref-changelog.md:749 msgid "**Update Flower Baselines**" msgstr "" -#: ../../source/ref-changelog.md:636 +#: ../../source/ref-changelog.md:658 msgid "" "HFedXGBoost ([#2226](https://github.com/adap/flower/pull/2226), " "[#2771](https://github.com/adap/flower/pull/2771))" msgstr "" -#: ../../source/ref-changelog.md:637 +#: ../../source/ref-changelog.md:659 msgid "FedVSSL ([#2412](https://github.com/adap/flower/pull/2412))" msgstr "" -#: ../../source/ref-changelog.md:638 +#: ../../source/ref-changelog.md:660 msgid "FedNova ([#2179](https://github.com/adap/flower/pull/2179))" msgstr "" -#: ../../source/ref-changelog.md:639 +#: ../../source/ref-changelog.md:661 msgid "HeteroFL ([#2439](https://github.com/adap/flower/pull/2439))" msgstr "" -#: ../../source/ref-changelog.md:640 +#: ../../source/ref-changelog.md:662 msgid "FedAvgM ([#2246](https://github.com/adap/flower/pull/2246))" msgstr "" -#: ../../source/ref-changelog.md:641 +#: ../../source/ref-changelog.md:663 msgid "FedPara ([#2722](https://github.com/adap/flower/pull/2722))" msgstr "" -#: ../../source/ref-changelog.md:643 +#: ../../source/ref-changelog.md:665 msgid "" "**Improve documentation** " "([#2674](https://github.com/adap/flower/pull/2674), " @@ -19428,7 +19512,7 @@ msgid "" "[#2900](https://github.com/adap/flower/pull/2900))" msgstr "" -#: ../../source/ref-changelog.md:645 +#: ../../source/ref-changelog.md:667 msgid "" "**Improved testing and development infrastructure** " "([#2797](https://github.com/adap/flower/pull/2797), " @@ -19462,13 +19546,13 @@ msgid "" "[#2398](https://github.com/adap/flower/pull/2398))" msgstr "" -#: ../../source/ref-changelog.md:647 +#: ../../source/ref-changelog.md:669 msgid "" "The Flower testing and development infrastructure has received " "substantial updates. This makes Flower 1.7 the most tested release ever." msgstr "" -#: ../../source/ref-changelog.md:649 +#: ../../source/ref-changelog.md:671 msgid "" "**Update dependencies** " "([#2753](https://github.com/adap/flower/pull/2753), " @@ -19492,7 +19576,7 @@ msgid "" "[#2789](https://github.com/adap/flower/pull/2789))" msgstr "" -#: ../../source/ref-changelog.md:651 +#: ../../source/ref-changelog.md:673 msgid "" "**General improvements** " "([#2803](https://github.com/adap/flower/pull/2803), " @@ -19533,14 +19617,14 @@ msgid "" "[#2759](https://github.com/adap/flower/pull/2759))" msgstr "" -#: ../../source/ref-changelog.md:655 +#: ../../source/ref-changelog.md:677 msgid "" "**Deprecate** `start_numpy_client` " "([#2563](https://github.com/adap/flower/pull/2563), " "[#2718](https://github.com/adap/flower/pull/2718))" msgstr "" -#: ../../source/ref-changelog.md:657 +#: ../../source/ref-changelog.md:679 msgid "" "Until now, clients of type `NumPyClient` needed to be started via " "`start_numpy_client`. In our efforts to consolidate framework APIs, we " @@ -19551,63 +19635,63 @@ msgid "" "updated accordingly." msgstr "" -#: ../../source/ref-changelog.md:659 +#: ../../source/ref-changelog.md:681 msgid "" "**Deprecate legacy DP wrappers** " "([#2749](https://github.com/adap/flower/pull/2749))" msgstr "" -#: ../../source/ref-changelog.md:661 +#: ../../source/ref-changelog.md:683 msgid "" "Legacy DP wrapper classes are deprecated, but still functional. This is " "in preparation for an all-new pluggable version of differential privacy " "support in Flower." msgstr "" -#: ../../source/ref-changelog.md:663 +#: ../../source/ref-changelog.md:685 msgid "" "**Make optional arg** `--callable` **in** `flower-client` **a required " "positional arg** ([#2673](https://github.com/adap/flower/pull/2673))" msgstr "" -#: ../../source/ref-changelog.md:665 +#: ../../source/ref-changelog.md:687 msgid "" "**Rename** `certificates` **to** `root_certificates` **in** `Driver` " "([#2890](https://github.com/adap/flower/pull/2890))" msgstr "" -#: ../../source/ref-changelog.md:667 +#: ../../source/ref-changelog.md:689 msgid "" "**Drop experimental** `Task` **fields** " "([#2866](https://github.com/adap/flower/pull/2866), " "[#2865](https://github.com/adap/flower/pull/2865))" msgstr "" -#: ../../source/ref-changelog.md:669 +#: ../../source/ref-changelog.md:691 msgid "" "Experimental fields `sa`, `legacy_server_message` and " "`legacy_client_message` were removed from `Task` message. The removed " "fields are superseded by the new `RecordSet` abstraction." msgstr "" -#: ../../source/ref-changelog.md:671 +#: ../../source/ref-changelog.md:693 msgid "" "**Retire MXNet examples** " "([#2724](https://github.com/adap/flower/pull/2724))" msgstr "" -#: ../../source/ref-changelog.md:673 +#: ../../source/ref-changelog.md:695 msgid "" "The development of the MXNet fremework has ended and the project is now " "[archived on GitHub](https://github.com/apache/mxnet). Existing MXNet " "examples won't receive updates." msgstr "" -#: ../../source/ref-changelog.md:675 +#: ../../source/ref-changelog.md:697 msgid "v1.6.0 (2023-11-28)" msgstr "" -#: ../../source/ref-changelog.md:681 +#: ../../source/ref-changelog.md:703 msgid "" "`Aashish Kolluri`, `Adam Narozniak`, `Alessio Mora`, `Barathwaja S`, " "`Charles Beauville`, `Daniel J. Beutel`, `Daniel Nata Nugraha`, `Gabriel " @@ -19617,13 +19701,13 @@ msgid "" "`cnxdeveloper`, `k3nfalt` " msgstr "" -#: ../../source/ref-changelog.md:685 +#: ../../source/ref-changelog.md:707 msgid "" "**Add experimental support for Python 3.12** " "([#2565](https://github.com/adap/flower/pull/2565))" msgstr "" -#: ../../source/ref-changelog.md:687 +#: ../../source/ref-changelog.md:709 msgid "" "**Add new XGBoost examples** " "([#2612](https://github.com/adap/flower/pull/2612), " @@ -19634,19 +19718,19 @@ msgid "" "[#2567](https://github.com/adap/flower/pull/2567))" msgstr "" -#: ../../source/ref-changelog.md:689 +#: ../../source/ref-changelog.md:711 msgid "" "We have added a new `xgboost-quickstart` example alongside a new " "`xgboost-comprehensive` example that goes more in-depth." msgstr "" -#: ../../source/ref-changelog.md:691 +#: ../../source/ref-changelog.md:713 msgid "" "**Add Vertical FL example** " "([#2598](https://github.com/adap/flower/pull/2598))" msgstr "" -#: ../../source/ref-changelog.md:693 +#: ../../source/ref-changelog.md:715 msgid "" "We had many questions about Vertical Federated Learning using Flower, so " "we decided to add an simple example for it on the [Titanic " @@ -19654,29 +19738,29 @@ msgid "" "tutorial (in the README)." msgstr "" -#: ../../source/ref-changelog.md:695 +#: ../../source/ref-changelog.md:717 msgid "" "**Support custom** `ClientManager` **in** `start_driver()` " "([#2292](https://github.com/adap/flower/pull/2292))" msgstr "" -#: ../../source/ref-changelog.md:697 +#: ../../source/ref-changelog.md:719 msgid "" "**Update REST API to support create and delete nodes** " "([#2283](https://github.com/adap/flower/pull/2283))" msgstr "" -#: ../../source/ref-changelog.md:699 +#: ../../source/ref-changelog.md:721 msgid "" "**Update the Android SDK** " "([#2187](https://github.com/adap/flower/pull/2187))" msgstr "" -#: ../../source/ref-changelog.md:701 +#: ../../source/ref-changelog.md:723 msgid "Add gRPC request-response capability to the Android SDK." msgstr "" -#: ../../source/ref-changelog.md:703 +#: ../../source/ref-changelog.md:725 msgid "" "**Update the C++ SDK** " "([#2537](https://github.com/adap/flower/pull/2537), " @@ -19685,18 +19769,18 @@ msgid "" "[#2522](https://github.com/adap/flower/pull/2522))" msgstr "" -#: ../../source/ref-changelog.md:705 +#: ../../source/ref-changelog.md:727 msgid "Add gRPC request-response capability to the C++ SDK." msgstr "" -#: ../../source/ref-changelog.md:707 +#: ../../source/ref-changelog.md:729 msgid "" "**Make HTTPS the new default** " "([#2591](https://github.com/adap/flower/pull/2591), " "[#2636](https://github.com/adap/flower/pull/2636))" msgstr "" -#: ../../source/ref-changelog.md:709 +#: ../../source/ref-changelog.md:731 msgid "" "Flower is moving to HTTPS by default. The new `flower-server` requires " "passing `--certificates`, but users can enable `--insecure` to use HTTP " @@ -19706,21 +19790,21 @@ msgid "" "enable insecure HTTP connections." msgstr "" -#: ../../source/ref-changelog.md:711 +#: ../../source/ref-changelog.md:733 msgid "" "For backward compatibility, `start_client()` and `start_numpy_client()` " "will still start in insecure mode by default. In a future release, " "insecure connections will require user opt-in by passing `insecure=True`." msgstr "" -#: ../../source/ref-changelog.md:713 +#: ../../source/ref-changelog.md:735 msgid "" "**Unify client API** ([#2303](https://github.com/adap/flower/pull/2303), " "[#2390](https://github.com/adap/flower/pull/2390), " "[#2493](https://github.com/adap/flower/pull/2493))" msgstr "" -#: ../../source/ref-changelog.md:715 +#: ../../source/ref-changelog.md:737 msgid "" "Using the `client_fn`, Flower clients can interchangeably run as " "standalone processes (i.e. via `start_client`) or in simulation (i.e. via" @@ -19729,92 +19813,92 @@ msgid "" "convert a `NumPyClient` to a `Client`." msgstr "" -#: ../../source/ref-changelog.md:717 +#: ../../source/ref-changelog.md:739 msgid "" "**Add new** `Bulyan` **strategy** " "([#1817](https://github.com/adap/flower/pull/1817), " "[#1891](https://github.com/adap/flower/pull/1891))" msgstr "" -#: ../../source/ref-changelog.md:719 +#: ../../source/ref-changelog.md:741 msgid "" "The new `Bulyan` strategy implements Bulyan by [El Mhamdi et al., " "2018](https://arxiv.org/abs/1802.07927)" msgstr "" -#: ../../source/ref-changelog.md:721 +#: ../../source/ref-changelog.md:743 msgid "" "**Add new** `XGB Bagging` **strategy** " "([#2611](https://github.com/adap/flower/pull/2611))" msgstr "" -#: ../../source/ref-changelog.md:723 ../../source/ref-changelog.md:725 +#: ../../source/ref-changelog.md:745 ../../source/ref-changelog.md:747 msgid "" "**Introduce `WorkloadState`** " "([#2564](https://github.com/adap/flower/pull/2564), " "[#2632](https://github.com/adap/flower/pull/2632))" msgstr "" -#: ../../source/ref-changelog.md:729 +#: ../../source/ref-changelog.md:751 msgid "" "FedProx ([#2210](https://github.com/adap/flower/pull/2210), " "[#2286](https://github.com/adap/flower/pull/2286), " "[#2509](https://github.com/adap/flower/pull/2509))" msgstr "" -#: ../../source/ref-changelog.md:731 +#: ../../source/ref-changelog.md:753 msgid "" "Baselines Docs ([#2290](https://github.com/adap/flower/pull/2290), " "[#2400](https://github.com/adap/flower/pull/2400))" msgstr "" -#: ../../source/ref-changelog.md:733 +#: ../../source/ref-changelog.md:755 msgid "" "FedMLB ([#2340](https://github.com/adap/flower/pull/2340), " "[#2507](https://github.com/adap/flower/pull/2507))" msgstr "" -#: ../../source/ref-changelog.md:735 +#: ../../source/ref-changelog.md:757 msgid "" "TAMUNA ([#2254](https://github.com/adap/flower/pull/2254), " "[#2508](https://github.com/adap/flower/pull/2508))" msgstr "" -#: ../../source/ref-changelog.md:737 +#: ../../source/ref-changelog.md:759 msgid "FedMeta [#2438](https://github.com/adap/flower/pull/2438)" msgstr "" -#: ../../source/ref-changelog.md:739 +#: ../../source/ref-changelog.md:761 msgid "FjORD [#2431](https://github.com/adap/flower/pull/2431)" msgstr "" -#: ../../source/ref-changelog.md:741 +#: ../../source/ref-changelog.md:763 msgid "MOON [#2421](https://github.com/adap/flower/pull/2421)" msgstr "" -#: ../../source/ref-changelog.md:743 +#: ../../source/ref-changelog.md:765 msgid "DepthFL [#2295](https://github.com/adap/flower/pull/2295)" msgstr "" -#: ../../source/ref-changelog.md:745 +#: ../../source/ref-changelog.md:767 msgid "FedPer [#2266](https://github.com/adap/flower/pull/2266)" msgstr "" -#: ../../source/ref-changelog.md:747 +#: ../../source/ref-changelog.md:769 msgid "FedWav2vec [#2551](https://github.com/adap/flower/pull/2551)" msgstr "" -#: ../../source/ref-changelog.md:749 +#: ../../source/ref-changelog.md:771 msgid "niid-Bench [#2428](https://github.com/adap/flower/pull/2428)" msgstr "" -#: ../../source/ref-changelog.md:751 +#: ../../source/ref-changelog.md:773 msgid "" "FedBN ([#2608](https://github.com/adap/flower/pull/2608), " "[#2615](https://github.com/adap/flower/pull/2615))" msgstr "" -#: ../../source/ref-changelog.md:753 +#: ../../source/ref-changelog.md:775 msgid "" "**General updates to Flower Examples** " "([#2384](https://github.com/adap/flower/pull/2384), " @@ -19824,7 +19908,7 @@ msgid "" "[#2545](https://github.com/adap/flower/pull/2545))" msgstr "" -#: ../../source/ref-changelog.md:755 +#: ../../source/ref-changelog.md:777 msgid "" "**General updates to Flower Baselines** " "([#2301](https://github.com/adap/flower/pull/2301), " @@ -19842,7 +19926,7 @@ msgid "" "[#2470](https://github.com/adap/flower/pull/2470))" msgstr "" -#: ../../source/ref-changelog.md:757 +#: ../../source/ref-changelog.md:779 msgid "" "**General updates to the simulation engine** " "([#2331](https://github.com/adap/flower/pull/2331), " @@ -19851,7 +19935,7 @@ msgid "" "[#2294](https://github.com/adap/flower/pull/2294))" msgstr "" -#: ../../source/ref-changelog.md:759 +#: ../../source/ref-changelog.md:781 msgid "" "**General updates to Flower SDKs** " "([#2288](https://github.com/adap/flower/pull/2288), " @@ -19863,7 +19947,7 @@ msgid "" "[#2623](https://github.com/adap/flower/pull/2623))" msgstr "" -#: ../../source/ref-changelog.md:761 +#: ../../source/ref-changelog.md:783 msgid "" "**General improvements** " "([#2309](https://github.com/adap/flower/pull/2309), " @@ -19895,13 +19979,13 @@ msgid "" "[#2596](https://github.com/adap/flower/pull/2596))" msgstr "" -#: ../../source/ref-changelog.md:763 ../../source/ref-changelog.md:853 -#: ../../source/ref-changelog.md:917 ../../source/ref-changelog.md:971 -#: ../../source/ref-changelog.md:1038 +#: ../../source/ref-changelog.md:785 ../../source/ref-changelog.md:875 +#: ../../source/ref-changelog.md:939 ../../source/ref-changelog.md:993 +#: ../../source/ref-changelog.md:1060 msgid "Flower received many improvements under the hood, too many to list here." msgstr "" -#: ../../source/ref-changelog.md:767 +#: ../../source/ref-changelog.md:789 msgid "" "**Remove support for Python 3.7** " "([#2280](https://github.com/adap/flower/pull/2280), " @@ -19912,30 +19996,30 @@ msgid "" "[#2356](https://github.com/adap/flower/pull/2356))" msgstr "" -#: ../../source/ref-changelog.md:769 +#: ../../source/ref-changelog.md:791 msgid "" "Python 3.7 support was deprecated in Flower 1.5, and this release removes" " support. Flower now requires Python 3.8." msgstr "" -#: ../../source/ref-changelog.md:771 +#: ../../source/ref-changelog.md:793 msgid "" "**Remove experimental argument** `rest` **from** `start_client` " "([#2324](https://github.com/adap/flower/pull/2324))" msgstr "" -#: ../../source/ref-changelog.md:773 +#: ../../source/ref-changelog.md:795 msgid "" "The (still experimental) argument `rest` was removed from `start_client` " "and `start_numpy_client`. Use `transport=\"rest\"` to opt into the " "experimental REST API instead." msgstr "" -#: ../../source/ref-changelog.md:775 +#: ../../source/ref-changelog.md:797 msgid "v1.5.0 (2023-08-31)" msgstr "" -#: ../../source/ref-changelog.md:781 +#: ../../source/ref-changelog.md:803 msgid "" "`Adam Narozniak`, `Anass Anhari`, `Charles Beauville`, `Dana-Farber`, " "`Daniel J. Beutel`, `Daniel Nata Nugraha`, `Edoardo Gabrielli`, `Gustavo " @@ -19944,7 +20028,7 @@ msgid "" "TOKEN_v1.5.0-->" msgstr "" -#: ../../source/ref-changelog.md:785 +#: ../../source/ref-changelog.md:807 msgid "" "**Introduce new simulation engine** " "([#1969](https://github.com/adap/flower/pull/1969), " @@ -19952,7 +20036,7 @@ msgid "" "[#2248](https://github.com/adap/flower/pull/2248))" msgstr "" -#: ../../source/ref-changelog.md:787 +#: ../../source/ref-changelog.md:809 msgid "" "The new simulation engine has been rewritten from the ground up, yet it " "remains fully backwards compatible. It offers much improved stability and" @@ -19961,7 +20045,7 @@ msgid "" "only, CPU+GPU, multi-GPU, or multi-node multi-GPU environments." msgstr "" -#: ../../source/ref-changelog.md:789 +#: ../../source/ref-changelog.md:811 msgid "" "Comprehensive documentation includes a new [how-to run " "simulations](https://flower.ai/docs/framework/how-to-run-" @@ -19972,7 +20056,7 @@ msgid "" "series](https://www.youtube.com/watch?v=cRebUIGB5RU&list=PLNG4feLHqCWlnj8a_E1A_n5zr2-8pafTB)." msgstr "" -#: ../../source/ref-changelog.md:791 +#: ../../source/ref-changelog.md:813 msgid "" "**Restructure Flower Docs** " "([#1824](https://github.com/adap/flower/pull/1824), " @@ -20004,7 +20088,7 @@ msgid "" "[#2227](https://github.com/adap/flower/pull/2227))" msgstr "" -#: ../../source/ref-changelog.md:793 +#: ../../source/ref-changelog.md:815 msgid "" "Much effort went into a completely restructured Flower docs experience. " "The documentation on [flower.ai/docs](https://flower.ai/docs) is now " @@ -20012,34 +20096,34 @@ msgid "" "Flower iOS SDK, and code example projects." msgstr "" -#: ../../source/ref-changelog.md:795 +#: ../../source/ref-changelog.md:817 msgid "" "**Introduce Flower Swift SDK** " "([#1858](https://github.com/adap/flower/pull/1858), " "[#1897](https://github.com/adap/flower/pull/1897))" msgstr "" -#: ../../source/ref-changelog.md:797 +#: ../../source/ref-changelog.md:819 msgid "" "This is the first preview release of the Flower Swift SDK. Flower support" " on iOS is improving, and alongside the Swift SDK and code example, there" " is now also an iOS quickstart tutorial." msgstr "" -#: ../../source/ref-changelog.md:799 +#: ../../source/ref-changelog.md:821 msgid "" "**Introduce Flower Android SDK** " "([#2131](https://github.com/adap/flower/pull/2131))" msgstr "" -#: ../../source/ref-changelog.md:801 +#: ../../source/ref-changelog.md:823 msgid "" "This is the first preview release of the Flower Kotlin SDK. Flower " "support on Android is improving, and alongside the Kotlin SDK and code " "example, there is now also an Android quickstart tutorial." msgstr "" -#: ../../source/ref-changelog.md:803 +#: ../../source/ref-changelog.md:825 msgid "" "**Introduce new end-to-end testing infrastructure** " "([#1842](https://github.com/adap/flower/pull/1842), " @@ -20061,42 +20145,42 @@ msgid "" "[#2165](https://github.com/adap/flower/pull/2165))" msgstr "" -#: ../../source/ref-changelog.md:805 +#: ../../source/ref-changelog.md:827 msgid "" "A new testing infrastructure ensures that new changes stay compatible " "with existing framework integrations or strategies." msgstr "" -#: ../../source/ref-changelog.md:807 +#: ../../source/ref-changelog.md:829 msgid "**Deprecate Python 3.7**" msgstr "" -#: ../../source/ref-changelog.md:809 +#: ../../source/ref-changelog.md:831 msgid "" "Since Python 3.7 reached its end of life (EOL) on 2023-06-27, support for" " Python 3.7 is now deprecated and will be removed in an upcoming release." msgstr "" -#: ../../source/ref-changelog.md:811 +#: ../../source/ref-changelog.md:833 msgid "" "**Add new** `FedTrimmedAvg` **strategy** " "([#1769](https://github.com/adap/flower/pull/1769), " "[#1853](https://github.com/adap/flower/pull/1853))" msgstr "" -#: ../../source/ref-changelog.md:813 +#: ../../source/ref-changelog.md:835 msgid "" "The new `FedTrimmedAvg` strategy implements Trimmed Mean by [Dong Yin, " "2018](https://arxiv.org/abs/1803.01498)." msgstr "" -#: ../../source/ref-changelog.md:815 +#: ../../source/ref-changelog.md:837 msgid "" "**Introduce start_driver** " "([#1697](https://github.com/adap/flower/pull/1697))" msgstr "" -#: ../../source/ref-changelog.md:817 +#: ../../source/ref-changelog.md:839 msgid "" "In addition to `start_server` and using the raw Driver API, there is a " "new `start_driver` function that allows for running `start_server` " @@ -20105,13 +20189,13 @@ msgid "" "`start_driver`." msgstr "" -#: ../../source/ref-changelog.md:819 +#: ../../source/ref-changelog.md:841 msgid "" "**Add parameter aggregation to** `mt-pytorch` **code example** " "([#1785](https://github.com/adap/flower/pull/1785))" msgstr "" -#: ../../source/ref-changelog.md:821 +#: ../../source/ref-changelog.md:843 msgid "" "The `mt-pytorch` example shows how to aggregate parameters when writing a" " driver script. The included `driver.py` and `server.py` have been " @@ -20119,53 +20203,53 @@ msgid "" "building server-side logic." msgstr "" -#: ../../source/ref-changelog.md:823 +#: ../../source/ref-changelog.md:845 msgid "" "**Migrate experimental REST API to Starlette** " "([2171](https://github.com/adap/flower/pull/2171))" msgstr "" -#: ../../source/ref-changelog.md:825 +#: ../../source/ref-changelog.md:847 msgid "" "The (experimental) REST API used to be implemented in " "[FastAPI](https://fastapi.tiangolo.com/), but it has now been migrated to" " use [Starlette](https://www.starlette.io/) directly." msgstr "" -#: ../../source/ref-changelog.md:827 +#: ../../source/ref-changelog.md:849 msgid "" "Please note: The REST request-response API is still experimental and will" " likely change significantly over time." msgstr "" -#: ../../source/ref-changelog.md:829 +#: ../../source/ref-changelog.md:851 msgid "" "**Introduce experimental gRPC request-response API** " "([#1867](https://github.com/adap/flower/pull/1867), " "[#1901](https://github.com/adap/flower/pull/1901))" msgstr "" -#: ../../source/ref-changelog.md:831 +#: ../../source/ref-changelog.md:853 msgid "" "In addition to the existing gRPC API (based on bidirectional streaming) " "and the experimental REST API, there is now a new gRPC API that uses a " "request-response model to communicate with client nodes." msgstr "" -#: ../../source/ref-changelog.md:833 +#: ../../source/ref-changelog.md:855 msgid "" "Please note: The gRPC request-response API is still experimental and will" " likely change significantly over time." msgstr "" -#: ../../source/ref-changelog.md:835 +#: ../../source/ref-changelog.md:857 msgid "" "**Replace the experimental** `start_client(rest=True)` **with the new** " "`start_client(transport=\"rest\")` " "([#1880](https://github.com/adap/flower/pull/1880))" msgstr "" -#: ../../source/ref-changelog.md:837 +#: ../../source/ref-changelog.md:859 msgid "" "The (experimental) `start_client` argument `rest` was deprecated in " "favour of a new argument `transport`. `start_client(transport=\"rest\")` " @@ -20174,30 +20258,30 @@ msgid "" "argument `rest` will be removed in a future release." msgstr "" -#: ../../source/ref-changelog.md:839 +#: ../../source/ref-changelog.md:861 msgid "" "**Add a new gRPC option** " "([#2197](https://github.com/adap/flower/pull/2197))" msgstr "" -#: ../../source/ref-changelog.md:841 +#: ../../source/ref-changelog.md:863 msgid "" "We now start a gRPC server with the `grpc.keepalive_permit_without_calls`" " option set to 0 by default. This prevents the clients from sending " "keepalive pings when there is no outstanding stream." msgstr "" -#: ../../source/ref-changelog.md:843 +#: ../../source/ref-changelog.md:865 msgid "" "**Improve example notebooks** " "([#2005](https://github.com/adap/flower/pull/2005))" msgstr "" -#: ../../source/ref-changelog.md:845 +#: ../../source/ref-changelog.md:867 msgid "There's a new 30min Federated Learning PyTorch tutorial!" msgstr "" -#: ../../source/ref-changelog.md:847 +#: ../../source/ref-changelog.md:869 msgid "" "**Example updates** ([#1772](https://github.com/adap/flower/pull/1772), " "[#1873](https://github.com/adap/flower/pull/1873), " @@ -20212,7 +20296,7 @@ msgid "" "[#2183](https://github.com/adap/flower/pull/2183))" msgstr "" -#: ../../source/ref-changelog.md:849 +#: ../../source/ref-changelog.md:871 msgid "" "Many examples have received significant updates, including simplified " "advanced-tensorflow and advanced-pytorch examples, improved macOS " @@ -20221,7 +20305,7 @@ msgid "" "(in addition to `pyproject.toml`)." msgstr "" -#: ../../source/ref-changelog.md:851 +#: ../../source/ref-changelog.md:873 msgid "" "**General improvements** " "([#1872](https://github.com/adap/flower/pull/1872), " @@ -20232,11 +20316,11 @@ msgid "" "[#2171](https://github.com/adap/flower/pull/2171))" msgstr "" -#: ../../source/ref-changelog.md:859 +#: ../../source/ref-changelog.md:881 msgid "v1.4.0 (2023-04-21)" msgstr "" -#: ../../source/ref-changelog.md:865 +#: ../../source/ref-changelog.md:887 msgid "" "`Adam Narozniak`, `Alexander Viala Bellander`, `Charles Beauville`, " "`Chenyang Ma (Danny)`, `Daniel J. Beutel`, `Edoardo`, `Gautam Jajoo`, " @@ -20246,7 +20330,7 @@ msgid "" "`Steve Laskaridis`, `Steven Hé (Sīchàng)`, `Taner Topal`" msgstr "" -#: ../../source/ref-changelog.md:869 +#: ../../source/ref-changelog.md:891 msgid "" "**Introduce support for XGBoost (**`FedXgbNnAvg` **strategy and " "example)** ([#1694](https://github.com/adap/flower/pull/1694), " @@ -20257,7 +20341,7 @@ msgid "" "[#1795](https://github.com/adap/flower/pull/1795))" msgstr "" -#: ../../source/ref-changelog.md:871 +#: ../../source/ref-changelog.md:893 msgid "" "XGBoost is a tree-based ensemble machine learning algorithm that uses " "gradient boosting to improve model accuracy. We added a new `FedXgbNnAvg`" @@ -20268,14 +20352,14 @@ msgid "" "an XGBoost project." msgstr "" -#: ../../source/ref-changelog.md:873 +#: ../../source/ref-changelog.md:895 msgid "" "**Introduce iOS SDK (preview)** " "([#1621](https://github.com/adap/flower/pull/1621), " "[#1764](https://github.com/adap/flower/pull/1764))" msgstr "" -#: ../../source/ref-changelog.md:875 +#: ../../source/ref-changelog.md:897 msgid "" "This is a major update for anyone wanting to implement Federated Learning" " on iOS mobile devices. We now have a swift iOS SDK present under " @@ -20286,14 +20370,14 @@ msgid "" "been updated!" msgstr "" -#: ../../source/ref-changelog.md:877 +#: ../../source/ref-changelog.md:899 msgid "" "**Introduce new \"What is Federated Learning?\" tutorial** " "([#1657](https://github.com/adap/flower/pull/1657), " "[#1721](https://github.com/adap/flower/pull/1721))" msgstr "" -#: ../../source/ref-changelog.md:879 +#: ../../source/ref-changelog.md:901 msgid "" "A new [entry-level tutorial](https://flower.ai/docs/framework/tutorial-" "what-is-federated-learning.html) in our documentation explains the basics" @@ -20302,7 +20386,7 @@ msgid "" "interested in Federated Learning!" msgstr "" -#: ../../source/ref-changelog.md:881 +#: ../../source/ref-changelog.md:903 msgid "" "**Introduce new Flower Baseline: FedProx MNIST** " "([#1513](https://github.com/adap/flower/pull/1513), " @@ -20311,7 +20395,7 @@ msgid "" "[#1679](https://github.com/adap/flower/pull/1679))" msgstr "" -#: ../../source/ref-changelog.md:883 +#: ../../source/ref-changelog.md:905 msgid "" "This new baseline replicates the MNIST+CNN task from the paper [Federated" " Optimization in Heterogeneous Networks (Li et al., " @@ -20319,13 +20403,13 @@ msgid "" " which aims at making convergence more robust in heterogeneous settings." msgstr "" -#: ../../source/ref-changelog.md:885 +#: ../../source/ref-changelog.md:907 msgid "" "**Introduce new Flower Baseline: FedAvg FEMNIST** " "([#1655](https://github.com/adap/flower/pull/1655))" msgstr "" -#: ../../source/ref-changelog.md:887 +#: ../../source/ref-changelog.md:909 msgid "" "This new baseline replicates an experiment evaluating the performance of " "the FedAvg algorithm on the FEMNIST dataset from the paper [LEAF: A " @@ -20333,7 +20417,7 @@ msgid "" "2018)](https://arxiv.org/abs/1812.01097)." msgstr "" -#: ../../source/ref-changelog.md:889 +#: ../../source/ref-changelog.md:911 msgid "" "**Introduce (experimental) REST API** " "([#1594](https://github.com/adap/flower/pull/1594), " @@ -20345,20 +20429,20 @@ msgid "" "[#1733](https://github.com/adap/flower/pull/1733))" msgstr "" -#: ../../source/ref-changelog.md:891 +#: ../../source/ref-changelog.md:913 msgid "" "A new REST API has been introduced as an alternative to the gRPC-based " "communication stack. In this initial version, the REST API only supports " "anonymous clients." msgstr "" -#: ../../source/ref-changelog.md:893 +#: ../../source/ref-changelog.md:915 msgid "" "Please note: The REST API is still experimental and will likely change " "significantly over time." msgstr "" -#: ../../source/ref-changelog.md:895 +#: ../../source/ref-changelog.md:917 msgid "" "**Improve the (experimental) Driver API** " "([#1663](https://github.com/adap/flower/pull/1663), " @@ -20372,7 +20456,7 @@ msgid "" "[#1794](https://github.com/adap/flower/pull/1794))" msgstr "" -#: ../../source/ref-changelog.md:897 +#: ../../source/ref-changelog.md:919 msgid "" "The Driver API is still an experimental feature, but this release " "introduces some major upgrades. One of the main improvements is the " @@ -20382,26 +20466,26 @@ msgid "" "improves the memory efficiency of a long-running Flower server." msgstr "" -#: ../../source/ref-changelog.md:899 +#: ../../source/ref-changelog.md:921 msgid "" "**Fix spilling issues related to Ray during simulations** " "([#1698](https://github.com/adap/flower/pull/1698))" msgstr "" -#: ../../source/ref-changelog.md:901 +#: ../../source/ref-changelog.md:923 msgid "" "While running long simulations, `ray` was sometimes spilling huge amounts" " of data that would make the training unable to continue. This is now " "fixed! 🎉" msgstr "" -#: ../../source/ref-changelog.md:903 +#: ../../source/ref-changelog.md:925 msgid "" "**Add new example using** `TabNet` **and Flower** " "([#1725](https://github.com/adap/flower/pull/1725))" msgstr "" -#: ../../source/ref-changelog.md:905 +#: ../../source/ref-changelog.md:927 msgid "" "TabNet is a powerful and flexible framework for training machine learning" " models on tabular data. We now have a federated example using Flower: " @@ -20409,32 +20493,32 @@ msgid "" "/quickstart-tabnet)." msgstr "" -#: ../../source/ref-changelog.md:907 +#: ../../source/ref-changelog.md:929 msgid "" "**Add new how-to guide for monitoring simulations** " "([#1649](https://github.com/adap/flower/pull/1649))" msgstr "" -#: ../../source/ref-changelog.md:909 +#: ../../source/ref-changelog.md:931 msgid "" "We now have a documentation guide to help users monitor their performance" " during simulations." msgstr "" -#: ../../source/ref-changelog.md:911 +#: ../../source/ref-changelog.md:933 msgid "" "**Add training metrics to** `History` **object during simulations** " "([#1696](https://github.com/adap/flower/pull/1696))" msgstr "" -#: ../../source/ref-changelog.md:913 +#: ../../source/ref-changelog.md:935 msgid "" "The `fit_metrics_aggregation_fn` can be used to aggregate training " "metrics, but previous releases did not save the results in the `History` " "object. This is now the case!" msgstr "" -#: ../../source/ref-changelog.md:915 +#: ../../source/ref-changelog.md:937 msgid "" "**General improvements** " "([#1659](https://github.com/adap/flower/pull/1659), " @@ -20488,23 +20572,23 @@ msgid "" "[#1805](https://github.com/adap/flower/pull/1805))" msgstr "" -#: ../../source/ref-changelog.md:923 +#: ../../source/ref-changelog.md:945 msgid "v1.3.0 (2023-02-06)" msgstr "" -#: ../../source/ref-changelog.md:929 +#: ../../source/ref-changelog.md:951 msgid "" "`Adam Narozniak`, `Alexander Viala Bellander`, `Charles Beauville`, " "`Daniel J. Beutel`, `JDRanpariya`, `Lennart Behme`, `Taner Topal`" msgstr "" -#: ../../source/ref-changelog.md:933 +#: ../../source/ref-changelog.md:955 msgid "" "**Add support for** `workload_id` **and** `group_id` **in Driver API** " "([#1595](https://github.com/adap/flower/pull/1595))" msgstr "" -#: ../../source/ref-changelog.md:935 +#: ../../source/ref-changelog.md:957 msgid "" "The (experimental) Driver API now supports a `workload_id` that can be " "used to identify which workload a task belongs to. It also supports a new" @@ -20513,36 +20597,36 @@ msgid "" " to decide whether they want to handle a task or not." msgstr "" -#: ../../source/ref-changelog.md:937 +#: ../../source/ref-changelog.md:959 msgid "" "**Make Driver API and Fleet API address configurable** " "([#1637](https://github.com/adap/flower/pull/1637))" msgstr "" -#: ../../source/ref-changelog.md:939 +#: ../../source/ref-changelog.md:961 msgid "" "The (experimental) long-running Flower server (Driver API and Fleet API) " "can now configure the server address of both Driver API (via `--driver-" "api-address`) and Fleet API (via `--fleet-api-address`) when starting:" msgstr "" -#: ../../source/ref-changelog.md:941 +#: ../../source/ref-changelog.md:963 msgid "" "`flower-server --driver-api-address \"0.0.0.0:8081\" --fleet-api-address " "\"0.0.0.0:8086\"`" msgstr "" -#: ../../source/ref-changelog.md:943 +#: ../../source/ref-changelog.md:965 msgid "Both IPv4 and IPv6 addresses are supported." msgstr "" -#: ../../source/ref-changelog.md:945 +#: ../../source/ref-changelog.md:967 msgid "" "**Add new example of Federated Learning using fastai and Flower** " "([#1598](https://github.com/adap/flower/pull/1598))" msgstr "" -#: ../../source/ref-changelog.md:947 +#: ../../source/ref-changelog.md:969 msgid "" "A new code example (`quickstart-fastai`) demonstrates federated learning " "with [fastai](https://www.fast.ai/) and Flower. You can find it here: " @@ -20550,14 +20634,14 @@ msgid "" "/quickstart-fastai)." msgstr "" -#: ../../source/ref-changelog.md:949 +#: ../../source/ref-changelog.md:971 msgid "" "**Make Android example compatible with** `flwr >= 1.0.0` **and the latest" " versions of Android** " "([#1603](https://github.com/adap/flower/pull/1603))" msgstr "" -#: ../../source/ref-changelog.md:951 +#: ../../source/ref-changelog.md:973 msgid "" "The Android code example has received a substantial update: the project " "is compatible with Flower 1.0 (and later), the UI received a full " @@ -20565,13 +20649,13 @@ msgid "" "tooling." msgstr "" -#: ../../source/ref-changelog.md:953 +#: ../../source/ref-changelog.md:975 msgid "" "**Add new `FedProx` strategy** " "([#1619](https://github.com/adap/flower/pull/1619))" msgstr "" -#: ../../source/ref-changelog.md:955 +#: ../../source/ref-changelog.md:977 msgid "" "This " "[strategy](https://github.com/adap/flower/blob/main/src/py/flwr/server/strategy/fedprox.py)" @@ -20583,25 +20667,25 @@ msgid "" "respect to the global models." msgstr "" -#: ../../source/ref-changelog.md:957 +#: ../../source/ref-changelog.md:979 msgid "" "**Add new metrics to telemetry events** " "([#1640](https://github.com/adap/flower/pull/1640))" msgstr "" -#: ../../source/ref-changelog.md:959 +#: ../../source/ref-changelog.md:981 msgid "" "An updated event structure allows, for example, the clustering of events " "within the same workload." msgstr "" -#: ../../source/ref-changelog.md:961 +#: ../../source/ref-changelog.md:983 msgid "" "**Add new custom strategy tutorial section** " "[#1623](https://github.com/adap/flower/pull/1623)" msgstr "" -#: ../../source/ref-changelog.md:963 +#: ../../source/ref-changelog.md:985 msgid "" "The Flower tutorial now has a new section that covers implementing a " "custom strategy from scratch: [Open in " @@ -20609,13 +20693,13 @@ msgid "" "/tutorial-build-a-strategy-from-scratch-pytorch.ipynb)" msgstr "" -#: ../../source/ref-changelog.md:965 +#: ../../source/ref-changelog.md:987 msgid "" "**Add new custom serialization tutorial section** " "([#1622](https://github.com/adap/flower/pull/1622))" msgstr "" -#: ../../source/ref-changelog.md:967 +#: ../../source/ref-changelog.md:989 msgid "" "The Flower tutorial now has a new section that covers custom " "serialization: [Open in " @@ -20623,7 +20707,7 @@ msgid "" "/tutorial-customize-the-client-pytorch.ipynb)" msgstr "" -#: ../../source/ref-changelog.md:969 +#: ../../source/ref-changelog.md:991 msgid "" "**General improvements** " "([#1638](https://github.com/adap/flower/pull/1638), " @@ -20661,7 +20745,7 @@ msgid "" "[#1586](https://github.com/adap/flower/pull/1586))" msgstr "" -#: ../../source/ref-changelog.md:973 +#: ../../source/ref-changelog.md:995 msgid "" "**Updated documentation** " "([#1629](https://github.com/adap/flower/pull/1629), " @@ -20673,31 +20757,31 @@ msgid "" "[#1614](https://github.com/adap/flower/pull/1614))" msgstr "" -#: ../../source/ref-changelog.md:975 ../../source/ref-changelog.md:1042 +#: ../../source/ref-changelog.md:997 ../../source/ref-changelog.md:1064 msgid "" "As usual, the documentation has improved quite a bit. It is another step " "in our effort to make the Flower documentation the best documentation of " "any project. Stay tuned and as always, feel free to provide feedback!" msgstr "" -#: ../../source/ref-changelog.md:981 +#: ../../source/ref-changelog.md:1003 msgid "v1.2.0 (2023-01-13)" msgstr "" -#: ../../source/ref-changelog.md:987 +#: ../../source/ref-changelog.md:1009 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Daniel J. Beutel`, `Edoardo`, `L." " Jiang`, `Ragy`, `Taner Topal`, `dannymcy`" msgstr "" -#: ../../source/ref-changelog.md:991 +#: ../../source/ref-changelog.md:1013 msgid "" "**Introduce new Flower Baseline: FedAvg MNIST** " "([#1497](https://github.com/adap/flower/pull/1497), " "[#1552](https://github.com/adap/flower/pull/1552))" msgstr "" -#: ../../source/ref-changelog.md:993 +#: ../../source/ref-changelog.md:1015 msgid "" "Over the coming weeks, we will be releasing a number of new reference " "implementations useful especially to FL newcomers. They will typically " @@ -20708,13 +20792,13 @@ msgid "" "pack-fedavg-mnist-cnn/)" msgstr "" -#: ../../source/ref-changelog.md:995 +#: ../../source/ref-changelog.md:1017 msgid "" "**Improve GPU support in simulations** " "([#1555](https://github.com/adap/flower/pull/1555))" msgstr "" -#: ../../source/ref-changelog.md:997 +#: ../../source/ref-changelog.md:1019 msgid "" "The Ray-based Virtual Client Engine (`start_simulation`) has been updated" " to improve GPU support. The update includes some of the hard-earned " @@ -20722,45 +20806,45 @@ msgid "" "defaults make running GPU-based simulations substantially more robust." msgstr "" -#: ../../source/ref-changelog.md:999 +#: ../../source/ref-changelog.md:1021 msgid "" "**Improve GPU support in Jupyter Notebook tutorials** " "([#1527](https://github.com/adap/flower/pull/1527), " "[#1558](https://github.com/adap/flower/pull/1558))" msgstr "" -#: ../../source/ref-changelog.md:1001 +#: ../../source/ref-changelog.md:1023 msgid "" "Some users reported that Jupyter Notebooks have not always been easy to " "use on GPU instances. We listened and made improvements to all of our " "Jupyter notebooks! Check out the updated notebooks here:" msgstr "" -#: ../../source/ref-changelog.md:1003 +#: ../../source/ref-changelog.md:1025 msgid "" "[An Introduction to Federated Learning](https://flower.ai/docs/framework" "/tutorial-get-started-with-flower-pytorch.html)" msgstr "" -#: ../../source/ref-changelog.md:1004 +#: ../../source/ref-changelog.md:1026 msgid "" "[Strategies in Federated Learning](https://flower.ai/docs/framework" "/tutorial-use-a-federated-learning-strategy-pytorch.html)" msgstr "" -#: ../../source/ref-changelog.md:1005 +#: ../../source/ref-changelog.md:1027 msgid "" "[Building a Strategy](https://flower.ai/docs/framework/tutorial-build-a" "-strategy-from-scratch-pytorch.html)" msgstr "" -#: ../../source/ref-changelog.md:1006 +#: ../../source/ref-changelog.md:1028 msgid "" "[Client and NumPyClient](https://flower.ai/docs/framework/tutorial-" "customize-the-client-pytorch.html)" msgstr "" -#: ../../source/ref-changelog.md:1008 +#: ../../source/ref-changelog.md:1030 msgid "" "**Introduce optional telemetry** " "([#1533](https://github.com/adap/flower/pull/1533), " @@ -20768,7 +20852,7 @@ msgid "" "[#1584](https://github.com/adap/flower/pull/1584))" msgstr "" -#: ../../source/ref-changelog.md:1010 +#: ../../source/ref-changelog.md:1032 msgid "" "After a [request for " "feedback](https://github.com/adap/flower/issues/1534) from the community," @@ -20778,7 +20862,7 @@ msgid "" "used and what challenges users might face." msgstr "" -#: ../../source/ref-changelog.md:1012 +#: ../../source/ref-changelog.md:1034 msgid "" "**Flower is a friendly framework for collaborative AI and data science.**" " Staying true to this statement, Flower makes it easy to disable " @@ -20786,7 +20870,7 @@ msgid "" "[Read more.](https://flower.ai/docs/telemetry.html)." msgstr "" -#: ../../source/ref-changelog.md:1014 +#: ../../source/ref-changelog.md:1036 msgid "" "**Introduce (experimental) Driver API** " "([#1520](https://github.com/adap/flower/pull/1520), " @@ -20798,7 +20882,7 @@ msgid "" "[#1567](https://github.com/adap/flower/pull/1567))" msgstr "" -#: ../../source/ref-changelog.md:1016 +#: ../../source/ref-changelog.md:1038 msgid "" "Flower now has a new (experimental) Driver API which will enable fully " "programmable, async, and multi-tenant Federated Learning and Federated " @@ -20807,7 +20891,7 @@ msgid "" "and you can start building those things now, too." msgstr "" -#: ../../source/ref-changelog.md:1018 +#: ../../source/ref-changelog.md:1040 msgid "" "The Driver API also enables a new execution mode in which the server runs" " indefinitely. Multiple individual workloads can run concurrently and " @@ -20815,26 +20899,26 @@ msgid "" "especially useful for users who want to deploy Flower in production." msgstr "" -#: ../../source/ref-changelog.md:1020 +#: ../../source/ref-changelog.md:1042 msgid "" "To learn more, check out the `mt-pytorch` code example. We look forward " "to you feedback!" msgstr "" -#: ../../source/ref-changelog.md:1022 +#: ../../source/ref-changelog.md:1044 msgid "" "Please note: *The Driver API is still experimental and will likely change" " significantly over time.*" msgstr "" -#: ../../source/ref-changelog.md:1024 +#: ../../source/ref-changelog.md:1046 msgid "" "**Add new Federated Analytics with Pandas example** " "([#1469](https://github.com/adap/flower/pull/1469), " "[#1535](https://github.com/adap/flower/pull/1535))" msgstr "" -#: ../../source/ref-changelog.md:1026 +#: ../../source/ref-changelog.md:1048 msgid "" "A new code example (`quickstart-pandas`) demonstrates federated analytics" " with Pandas and Flower. You can find it here: [quickstart-" @@ -20842,32 +20926,32 @@ msgid "" "pandas)." msgstr "" -#: ../../source/ref-changelog.md:1028 +#: ../../source/ref-changelog.md:1050 msgid "" "**Add new strategies: Krum and MultiKrum** " "([#1481](https://github.com/adap/flower/pull/1481))" msgstr "" -#: ../../source/ref-changelog.md:1030 +#: ../../source/ref-changelog.md:1052 msgid "" "Edoardo, a computer science student at the Sapienza University of Rome, " "contributed a new `Krum` strategy that enables users to easily use Krum " "and MultiKrum in their workloads." msgstr "" -#: ../../source/ref-changelog.md:1032 +#: ../../source/ref-changelog.md:1054 msgid "" "**Update C++ example to be compatible with Flower v1.2.0** " "([#1495](https://github.com/adap/flower/pull/1495))" msgstr "" -#: ../../source/ref-changelog.md:1034 +#: ../../source/ref-changelog.md:1056 msgid "" "The C++ code example has received a substantial update to make it " "compatible with the latest version of Flower." msgstr "" -#: ../../source/ref-changelog.md:1036 +#: ../../source/ref-changelog.md:1058 msgid "" "**General improvements** " "([#1491](https://github.com/adap/flower/pull/1491), " @@ -20885,7 +20969,7 @@ msgid "" "[#1566](https://github.com/adap/flower/pull/1566))" msgstr "" -#: ../../source/ref-changelog.md:1040 +#: ../../source/ref-changelog.md:1062 msgid "" "**Updated documentation** " "([#1494](https://github.com/adap/flower/pull/1494), " @@ -20899,24 +20983,24 @@ msgid "" "[#1515](https://github.com/adap/flower/pull/1515))" msgstr "" -#: ../../source/ref-changelog.md:1044 +#: ../../source/ref-changelog.md:1066 msgid "" "One highlight is the new [first time contributor " "guide](https://flower.ai/docs/first-time-contributors.html): if you've " "never contributed on GitHub before, this is the perfect place to start!" msgstr "" -#: ../../source/ref-changelog.md:1050 +#: ../../source/ref-changelog.md:1072 msgid "v1.1.0 (2022-10-31)" msgstr "" -#: ../../source/ref-changelog.md:1054 +#: ../../source/ref-changelog.md:1076 msgid "" "We would like to give our **special thanks** to all the contributors who " "made the new version of Flower possible (in `git shortlog` order):" msgstr "" -#: ../../source/ref-changelog.md:1056 +#: ../../source/ref-changelog.md:1078 msgid "" "`Akis Linardos`, `Christopher S`, `Daniel J. Beutel`, `George`, `Jan " "Schlicht`, `Mohammad Fares`, `Pedro Porto Buarque de Gusmão`, `Philipp " @@ -20924,14 +21008,14 @@ msgid "" "`danielnugraha`, `edogab33`" msgstr "" -#: ../../source/ref-changelog.md:1060 +#: ../../source/ref-changelog.md:1082 msgid "" "**Introduce Differential Privacy wrappers (preview)** " "([#1357](https://github.com/adap/flower/pull/1357), " "[#1460](https://github.com/adap/flower/pull/1460))" msgstr "" -#: ../../source/ref-changelog.md:1062 +#: ../../source/ref-changelog.md:1084 msgid "" "The first (experimental) preview of pluggable Differential Privacy " "wrappers enables easy configuration and usage of differential privacy " @@ -20940,13 +21024,13 @@ msgid "" "over to the Flower docs, a new explainer goes into more detail." msgstr "" -#: ../../source/ref-changelog.md:1064 +#: ../../source/ref-changelog.md:1086 msgid "" "**New iOS CoreML code example** " "([#1289](https://github.com/adap/flower/pull/1289))" msgstr "" -#: ../../source/ref-changelog.md:1066 +#: ../../source/ref-changelog.md:1088 msgid "" "Flower goes iOS! A massive new code example shows how Flower clients can " "be built for iOS. The code example contains both Flower iOS SDK " @@ -20954,39 +21038,39 @@ msgid "" "on CoreML." msgstr "" -#: ../../source/ref-changelog.md:1068 +#: ../../source/ref-changelog.md:1090 msgid "" "**New FedMedian strategy** " "([#1461](https://github.com/adap/flower/pull/1461))" msgstr "" -#: ../../source/ref-changelog.md:1070 +#: ../../source/ref-changelog.md:1092 msgid "" "The new `FedMedian` strategy implements Federated Median (FedMedian) by " "[Yin et al., 2018](https://arxiv.org/pdf/1803.01498v1.pdf)." msgstr "" -#: ../../source/ref-changelog.md:1072 +#: ../../source/ref-changelog.md:1094 msgid "" "**Log** `Client` **exceptions in Virtual Client Engine** " "([#1493](https://github.com/adap/flower/pull/1493))" msgstr "" -#: ../../source/ref-changelog.md:1074 +#: ../../source/ref-changelog.md:1096 msgid "" "All `Client` exceptions happening in the VCE are now logged by default " "and not just exposed to the configured `Strategy` (via the `failures` " "argument)." msgstr "" -#: ../../source/ref-changelog.md:1076 +#: ../../source/ref-changelog.md:1098 msgid "" "**Improve Virtual Client Engine internals** " "([#1401](https://github.com/adap/flower/pull/1401), " "[#1453](https://github.com/adap/flower/pull/1453))" msgstr "" -#: ../../source/ref-changelog.md:1078 +#: ../../source/ref-changelog.md:1100 msgid "" "Some internals of the Virtual Client Engine have been revamped. The VCE " "now uses Ray 2.0 under the hood, the value type of the `client_resources`" @@ -20994,25 +21078,25 @@ msgid "" "allocated." msgstr "" -#: ../../source/ref-changelog.md:1080 +#: ../../source/ref-changelog.md:1102 msgid "" "**Support optional** `Client`**/**`NumPyClient` **methods in Virtual " "Client Engine**" msgstr "" -#: ../../source/ref-changelog.md:1082 +#: ../../source/ref-changelog.md:1104 msgid "" "The Virtual Client Engine now has full support for optional `Client` (and" " `NumPyClient`) methods." msgstr "" -#: ../../source/ref-changelog.md:1084 +#: ../../source/ref-changelog.md:1106 msgid "" "**Provide type information to packages using** `flwr` " "([#1377](https://github.com/adap/flower/pull/1377))" msgstr "" -#: ../../source/ref-changelog.md:1086 +#: ../../source/ref-changelog.md:1108 msgid "" "The package `flwr` is now bundled with a `py.typed` file indicating that " "the package is typed. This enables typing support for projects or " @@ -21020,20 +21104,20 @@ msgid "" "static type checkers like `mypy`." msgstr "" -#: ../../source/ref-changelog.md:1088 +#: ../../source/ref-changelog.md:1110 msgid "" "**Updated code example** " "([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" msgstr "" -#: ../../source/ref-changelog.md:1090 +#: ../../source/ref-changelog.md:1112 msgid "" "The code examples covering scikit-learn and PyTorch Lightning have been " "updated to work with the latest version of Flower." msgstr "" -#: ../../source/ref-changelog.md:1092 +#: ../../source/ref-changelog.md:1114 msgid "" "**Updated documentation** " "([#1355](https://github.com/adap/flower/pull/1355), " @@ -21055,32 +21139,32 @@ msgid "" "[#1467](https://github.com/adap/flower/pull/1467))" msgstr "" -#: ../../source/ref-changelog.md:1094 +#: ../../source/ref-changelog.md:1116 msgid "" "There have been so many documentation updates that it doesn't even make " "sense to list them individually." msgstr "" -#: ../../source/ref-changelog.md:1096 +#: ../../source/ref-changelog.md:1118 msgid "" "**Restructured documentation** " "([#1387](https://github.com/adap/flower/pull/1387))" msgstr "" -#: ../../source/ref-changelog.md:1098 +#: ../../source/ref-changelog.md:1120 msgid "" "The documentation has been restructured to make it easier to navigate. " "This is just the first step in a larger effort to make the Flower " "documentation the best documentation of any project ever. Stay tuned!" msgstr "" -#: ../../source/ref-changelog.md:1100 +#: ../../source/ref-changelog.md:1122 msgid "" "**Open in Colab button** " "([#1389](https://github.com/adap/flower/pull/1389))" msgstr "" -#: ../../source/ref-changelog.md:1102 +#: ../../source/ref-changelog.md:1124 msgid "" "The four parts of the Flower Federated Learning Tutorial now come with a " "new `Open in Colab` button. No need to install anything on your local " @@ -21088,7 +21172,7 @@ msgid "" "only a single click away." msgstr "" -#: ../../source/ref-changelog.md:1104 +#: ../../source/ref-changelog.md:1126 msgid "" "**Improved tutorial** ([#1468](https://github.com/adap/flower/pull/1468)," " [#1470](https://github.com/adap/flower/pull/1470), " @@ -21098,7 +21182,7 @@ msgid "" "[#1475](https://github.com/adap/flower/pull/1475))" msgstr "" -#: ../../source/ref-changelog.md:1106 +#: ../../source/ref-changelog.md:1128 msgid "" "The Flower Federated Learning Tutorial has two brand-new parts covering " "custom strategies (still WIP) and the distinction between `Client` and " @@ -21106,40 +21190,40 @@ msgid "" "(many small changes and fixes)." msgstr "" -#: ../../source/ref-changelog.md:1112 +#: ../../source/ref-changelog.md:1134 msgid "v1.0.0 (2022-07-28)" msgstr "" -#: ../../source/ref-changelog.md:1114 +#: ../../source/ref-changelog.md:1136 msgid "Highlights" msgstr "" -#: ../../source/ref-changelog.md:1116 +#: ../../source/ref-changelog.md:1138 msgid "Stable **Virtual Client Engine** (accessible via `start_simulation`)" msgstr "" -#: ../../source/ref-changelog.md:1117 +#: ../../source/ref-changelog.md:1139 msgid "All `Client`/`NumPyClient` methods are now optional" msgstr "" -#: ../../source/ref-changelog.md:1118 +#: ../../source/ref-changelog.md:1140 msgid "Configurable `get_parameters`" msgstr "" -#: ../../source/ref-changelog.md:1119 +#: ../../source/ref-changelog.md:1141 msgid "" "Tons of small API cleanups resulting in a more coherent developer " "experience" msgstr "" -#: ../../source/ref-changelog.md:1123 +#: ../../source/ref-changelog.md:1145 msgid "" "We would like to give our **special thanks** to all the contributors who " "made Flower 1.0 possible (in reverse [GitHub " "Contributors](https://github.com/adap/flower/graphs/contributors) order):" msgstr "" -#: ../../source/ref-changelog.md:1125 +#: ../../source/ref-changelog.md:1147 msgid "" "[@rtaiello](https://github.com/rtaiello), " "[@g-pichler](https://github.com/g-pichler), [@rob-" @@ -21179,13 +21263,13 @@ msgid "" "[@danieljanes](https://github.com/danieljanes)." msgstr "" -#: ../../source/ref-changelog.md:1129 +#: ../../source/ref-changelog.md:1151 msgid "" "**All arguments must be passed as keyword arguments** " "([#1338](https://github.com/adap/flower/pull/1338))" msgstr "" -#: ../../source/ref-changelog.md:1131 +#: ../../source/ref-changelog.md:1153 msgid "" "Pass all arguments as keyword arguments, positional arguments are not " "longer supported. Code that uses positional arguments (e.g., " @@ -21195,14 +21279,14 @@ msgid "" "client=FlowerClient())`)." msgstr "" -#: ../../source/ref-changelog.md:1133 +#: ../../source/ref-changelog.md:1155 msgid "" "**Introduce configuration object** `ServerConfig` **in** `start_server` " "**and** `start_simulation` " "([#1317](https://github.com/adap/flower/pull/1317))" msgstr "" -#: ../../source/ref-changelog.md:1135 +#: ../../source/ref-changelog.md:1157 msgid "" "Instead of a config dictionary `{\"num_rounds\": 3, \"round_timeout\": " "600.0}`, `start_server` and `start_simulation` now expect a configuration" @@ -21211,37 +21295,37 @@ msgid "" "safe code easier and the default parameters values more transparent." msgstr "" -#: ../../source/ref-changelog.md:1137 +#: ../../source/ref-changelog.md:1159 msgid "" "**Rename built-in strategy parameters for clarity** " "([#1334](https://github.com/adap/flower/pull/1334))" msgstr "" -#: ../../source/ref-changelog.md:1139 +#: ../../source/ref-changelog.md:1161 msgid "" "The following built-in strategy parameters were renamed to improve " "readability and consistency with other API's:" msgstr "" -#: ../../source/ref-changelog.md:1141 +#: ../../source/ref-changelog.md:1163 msgid "`fraction_eval` --> `fraction_evaluate`" msgstr "" -#: ../../source/ref-changelog.md:1142 +#: ../../source/ref-changelog.md:1164 msgid "`min_eval_clients` --> `min_evaluate_clients`" msgstr "" -#: ../../source/ref-changelog.md:1143 +#: ../../source/ref-changelog.md:1165 msgid "`eval_fn` --> `evaluate_fn`" msgstr "" -#: ../../source/ref-changelog.md:1145 +#: ../../source/ref-changelog.md:1167 msgid "" "**Update default arguments of built-in strategies** " "([#1278](https://github.com/adap/flower/pull/1278))" msgstr "" -#: ../../source/ref-changelog.md:1147 +#: ../../source/ref-changelog.md:1169 msgid "" "All built-in strategies now use `fraction_fit=1.0` and " "`fraction_evaluate=1.0`, which means they select *all* currently " @@ -21250,29 +21334,29 @@ msgid "" "initializing the strategy in the following way:" msgstr "" -#: ../../source/ref-changelog.md:1149 +#: ../../source/ref-changelog.md:1171 msgid "`strategy = FedAvg(fraction_fit=0.1, fraction_evaluate=0.1)`" msgstr "" -#: ../../source/ref-changelog.md:1151 +#: ../../source/ref-changelog.md:1173 msgid "" "**Add** `server_round` **to** `Strategy.evaluate` " "([#1334](https://github.com/adap/flower/pull/1334))" msgstr "" -#: ../../source/ref-changelog.md:1153 +#: ../../source/ref-changelog.md:1175 msgid "" "The `Strategy` method `evaluate` now receives the current round of " "federated learning/evaluation as the first parameter." msgstr "" -#: ../../source/ref-changelog.md:1155 +#: ../../source/ref-changelog.md:1177 msgid "" "**Add** `server_round` **and** `config` **parameters to** `evaluate_fn` " "([#1334](https://github.com/adap/flower/pull/1334))" msgstr "" -#: ../../source/ref-changelog.md:1157 +#: ../../source/ref-changelog.md:1179 msgid "" "The `evaluate_fn` passed to built-in strategies like `FedAvg` now takes " "three parameters: (1) The current round of federated learning/evaluation " @@ -21280,13 +21364,13 @@ msgid "" "and (3) a config dictionary (`config`)." msgstr "" -#: ../../source/ref-changelog.md:1159 +#: ../../source/ref-changelog.md:1181 msgid "" "**Rename** `rnd` **to** `server_round` " "([#1321](https://github.com/adap/flower/pull/1321))" msgstr "" -#: ../../source/ref-changelog.md:1161 +#: ../../source/ref-changelog.md:1183 msgid "" "Several Flower methods and functions (`evaluate_fn`, `configure_fit`, " "`aggregate_fit`, `configure_evaluate`, `aggregate_evaluate`) receive the " @@ -21295,73 +21379,73 @@ msgid "" "has been renamed from `rnd` to `server_round`." msgstr "" -#: ../../source/ref-changelog.md:1163 +#: ../../source/ref-changelog.md:1185 msgid "" "**Move** `flwr.dataset` **to** `flwr_baselines` " "([#1273](https://github.com/adap/flower/pull/1273))" msgstr "" -#: ../../source/ref-changelog.md:1165 +#: ../../source/ref-changelog.md:1187 msgid "The experimental package `flwr.dataset` was migrated to Flower Baselines." msgstr "" -#: ../../source/ref-changelog.md:1167 +#: ../../source/ref-changelog.md:1189 msgid "" "**Remove experimental strategies** " "([#1280](https://github.com/adap/flower/pull/1280))" msgstr "" -#: ../../source/ref-changelog.md:1169 +#: ../../source/ref-changelog.md:1191 msgid "" "Remove unmaintained experimental strategies (`FastAndSlow`, `FedFSv0`, " "`FedFSv1`)." msgstr "" -#: ../../source/ref-changelog.md:1171 +#: ../../source/ref-changelog.md:1193 msgid "" "**Rename** `Weights` **to** `NDArrays` " "([#1258](https://github.com/adap/flower/pull/1258), " "[#1259](https://github.com/adap/flower/pull/1259))" msgstr "" -#: ../../source/ref-changelog.md:1173 +#: ../../source/ref-changelog.md:1195 msgid "" "`flwr.common.Weights` was renamed to `flwr.common.NDArrays` to better " "capture what this type is all about." msgstr "" -#: ../../source/ref-changelog.md:1175 +#: ../../source/ref-changelog.md:1197 msgid "" "**Remove antiquated** `force_final_distributed_eval` **from** " "`start_server` ([#1258](https://github.com/adap/flower/pull/1258), " "[#1259](https://github.com/adap/flower/pull/1259))" msgstr "" -#: ../../source/ref-changelog.md:1177 +#: ../../source/ref-changelog.md:1199 msgid "" "The `start_server` parameter `force_final_distributed_eval` has long been" " a historic artefact, in this release it is finally gone for good." msgstr "" -#: ../../source/ref-changelog.md:1179 +#: ../../source/ref-changelog.md:1201 msgid "" "**Make** `get_parameters` **configurable** " "([#1242](https://github.com/adap/flower/pull/1242))" msgstr "" -#: ../../source/ref-changelog.md:1181 +#: ../../source/ref-changelog.md:1203 msgid "" "The `get_parameters` method now accepts a configuration dictionary, just " "like `get_properties`, `fit`, and `evaluate`." msgstr "" -#: ../../source/ref-changelog.md:1183 +#: ../../source/ref-changelog.md:1205 msgid "" "**Replace** `num_rounds` **in** `start_simulation` **with new** `config` " "**parameter** ([#1281](https://github.com/adap/flower/pull/1281))" msgstr "" -#: ../../source/ref-changelog.md:1185 +#: ../../source/ref-changelog.md:1207 msgid "" "The `start_simulation` function now accepts a configuration dictionary " "`config` instead of the `num_rounds` integer. This improves the " @@ -21369,26 +21453,26 @@ msgid "" "transitioning between the two easier." msgstr "" -#: ../../source/ref-changelog.md:1189 +#: ../../source/ref-changelog.md:1211 msgid "" "**Support Python 3.10** " "([#1320](https://github.com/adap/flower/pull/1320))" msgstr "" -#: ../../source/ref-changelog.md:1191 +#: ../../source/ref-changelog.md:1213 msgid "" "The previous Flower release introduced experimental support for Python " "3.10, this release declares Python 3.10 support as stable." msgstr "" -#: ../../source/ref-changelog.md:1193 +#: ../../source/ref-changelog.md:1215 msgid "" "**Make all** `Client` **and** `NumPyClient` **methods optional** " "([#1260](https://github.com/adap/flower/pull/1260), " "[#1277](https://github.com/adap/flower/pull/1277))" msgstr "" -#: ../../source/ref-changelog.md:1195 +#: ../../source/ref-changelog.md:1217 msgid "" "The `Client`/`NumPyClient` methods `get_properties`, `get_parameters`, " "`fit`, and `evaluate` are all optional. This enables writing clients that" @@ -21396,13 +21480,13 @@ msgid "" "implement `evaluate` when using centralized evaluation!" msgstr "" -#: ../../source/ref-changelog.md:1197 +#: ../../source/ref-changelog.md:1219 msgid "" "**Enable passing a** `Server` **instance to** `start_simulation` " "([#1281](https://github.com/adap/flower/pull/1281))" msgstr "" -#: ../../source/ref-changelog.md:1199 +#: ../../source/ref-changelog.md:1221 msgid "" "Similar to `start_server`, `start_simulation` now accepts a full `Server`" " instance. This enables users to heavily customize the execution of " @@ -21410,7 +21494,7 @@ msgid "" " Virtual Client Engine." msgstr "" -#: ../../source/ref-changelog.md:1201 +#: ../../source/ref-changelog.md:1223 msgid "" "**Update code examples** " "([#1291](https://github.com/adap/flower/pull/1291), " @@ -21418,50 +21502,50 @@ msgid "" "[#1282](https://github.com/adap/flower/pull/1282))" msgstr "" -#: ../../source/ref-changelog.md:1203 +#: ../../source/ref-changelog.md:1225 msgid "" "Many code examples received small or even large maintenance updates, " "among them are" msgstr "" -#: ../../source/ref-changelog.md:1205 +#: ../../source/ref-changelog.md:1227 msgid "`scikit-learn`" msgstr "" -#: ../../source/ref-changelog.md:1206 +#: ../../source/ref-changelog.md:1228 msgid "`simulation_pytorch`" msgstr "" -#: ../../source/ref-changelog.md:1207 +#: ../../source/ref-changelog.md:1229 msgid "`quickstart_pytorch`" msgstr "" -#: ../../source/ref-changelog.md:1208 +#: ../../source/ref-changelog.md:1230 msgid "`quickstart_simulation`" msgstr "" -#: ../../source/ref-changelog.md:1209 +#: ../../source/ref-changelog.md:1231 msgid "`quickstart_tensorflow`" msgstr "" -#: ../../source/ref-changelog.md:1210 +#: ../../source/ref-changelog.md:1232 msgid "`advanced_tensorflow`" msgstr "" -#: ../../source/ref-changelog.md:1212 +#: ../../source/ref-changelog.md:1234 msgid "" "**Remove the obsolete simulation example** " "([#1328](https://github.com/adap/flower/pull/1328))" msgstr "" -#: ../../source/ref-changelog.md:1214 +#: ../../source/ref-changelog.md:1236 msgid "" "Removes the obsolete `simulation` example and renames " "`quickstart_simulation` to `simulation_tensorflow` so it fits withs the " "naming of `simulation_pytorch`" msgstr "" -#: ../../source/ref-changelog.md:1216 +#: ../../source/ref-changelog.md:1238 msgid "" "**Update documentation** " "([#1223](https://github.com/adap/flower/pull/1223), " @@ -21476,7 +21560,7 @@ msgid "" "[#1307](https://github.com/adap/flower/pull/1307))" msgstr "" -#: ../../source/ref-changelog.md:1218 +#: ../../source/ref-changelog.md:1240 msgid "" "One substantial documentation update fixes multiple smaller rendering " "issues, makes titles more succinct to improve navigation, removes a " @@ -21486,24 +21570,24 @@ msgid "" "fixes a number of smaller details!" msgstr "" -#: ../../source/ref-changelog.md:1220 ../../source/ref-changelog.md:1275 -#: ../../source/ref-changelog.md:1344 ../../source/ref-changelog.md:1383 +#: ../../source/ref-changelog.md:1242 ../../source/ref-changelog.md:1297 +#: ../../source/ref-changelog.md:1366 ../../source/ref-changelog.md:1405 msgid "**Minor updates**" msgstr "" -#: ../../source/ref-changelog.md:1222 +#: ../../source/ref-changelog.md:1244 msgid "" "Add round number to fit and evaluate log messages " "([#1266](https://github.com/adap/flower/pull/1266))" msgstr "" -#: ../../source/ref-changelog.md:1223 +#: ../../source/ref-changelog.md:1245 msgid "" "Add secure gRPC connection to the `advanced_tensorflow` code example " "([#847](https://github.com/adap/flower/pull/847))" msgstr "" -#: ../../source/ref-changelog.md:1224 +#: ../../source/ref-changelog.md:1246 msgid "" "Update developer tooling " "([#1231](https://github.com/adap/flower/pull/1231), " @@ -21512,7 +21596,7 @@ msgid "" "[#1310](https://github.com/adap/flower/pull/1310))" msgstr "" -#: ../../source/ref-changelog.md:1225 +#: ../../source/ref-changelog.md:1247 msgid "" "Rename ProtoBuf messages to improve consistency " "([#1214](https://github.com/adap/flower/pull/1214), " @@ -21520,11 +21604,11 @@ msgid "" "[#1259](https://github.com/adap/flower/pull/1259))" msgstr "" -#: ../../source/ref-changelog.md:1227 +#: ../../source/ref-changelog.md:1249 msgid "v0.19.0 (2022-05-18)" msgstr "" -#: ../../source/ref-changelog.md:1231 +#: ../../source/ref-changelog.md:1253 msgid "" "**Flower Baselines (preview): FedOpt, FedBN, FedAvgM** " "([#919](https://github.com/adap/flower/pull/919), " @@ -21532,7 +21616,7 @@ msgid "" "[#914](https://github.com/adap/flower/pull/914))" msgstr "" -#: ../../source/ref-changelog.md:1233 +#: ../../source/ref-changelog.md:1255 msgid "" "The first preview release of Flower Baselines has arrived! We're " "kickstarting Flower Baselines with implementations of FedOpt (FedYogi, " @@ -21543,39 +21627,39 @@ msgid "" "contribute-baselines.html)." msgstr "" -#: ../../source/ref-changelog.md:1235 +#: ../../source/ref-changelog.md:1257 msgid "" "**C++ client SDK (preview) and code example** " "([#1111](https://github.com/adap/flower/pull/1111))" msgstr "" -#: ../../source/ref-changelog.md:1237 +#: ../../source/ref-changelog.md:1259 msgid "" "Preview support for Flower clients written in C++. The C++ preview " "includes a Flower client SDK and a quickstart code example that " "demonstrates a simple C++ client using the SDK." msgstr "" -#: ../../source/ref-changelog.md:1239 +#: ../../source/ref-changelog.md:1261 msgid "" "**Add experimental support for Python 3.10 and Python 3.11** " "([#1135](https://github.com/adap/flower/pull/1135))" msgstr "" -#: ../../source/ref-changelog.md:1241 +#: ../../source/ref-changelog.md:1263 msgid "" "Python 3.10 is the latest stable release of Python and Python 3.11 is due" " to be released in October. This Flower release adds experimental support" " for both Python versions." msgstr "" -#: ../../source/ref-changelog.md:1243 +#: ../../source/ref-changelog.md:1265 msgid "" "**Aggregate custom metrics through user-provided functions** " "([#1144](https://github.com/adap/flower/pull/1144))" msgstr "" -#: ../../source/ref-changelog.md:1245 +#: ../../source/ref-changelog.md:1267 msgid "" "Custom metrics (e.g., `accuracy`) can now be aggregated without having to" " customize the strategy. Built-in strategies support two new arguments, " @@ -21583,13 +21667,13 @@ msgid "" "allow passing custom metric aggregation functions." msgstr "" -#: ../../source/ref-changelog.md:1247 +#: ../../source/ref-changelog.md:1269 msgid "" "**User-configurable round timeout** " "([#1162](https://github.com/adap/flower/pull/1162))" msgstr "" -#: ../../source/ref-changelog.md:1249 +#: ../../source/ref-changelog.md:1271 msgid "" "A new configuration value allows the round timeout to be set for " "`start_server` and `start_simulation`. If the `config` dictionary " @@ -21598,14 +21682,14 @@ msgid "" "connection." msgstr "" -#: ../../source/ref-changelog.md:1251 +#: ../../source/ref-changelog.md:1273 msgid "" "**Enable both federated evaluation and centralized evaluation to be used " "at the same time in all built-in strategies** " "([#1091](https://github.com/adap/flower/pull/1091))" msgstr "" -#: ../../source/ref-changelog.md:1253 +#: ../../source/ref-changelog.md:1275 msgid "" "Built-in strategies can now perform both federated evaluation (i.e., " "client-side) and centralized evaluation (i.e., server-side) in the same " @@ -21613,82 +21697,82 @@ msgid "" " `0.0`." msgstr "" -#: ../../source/ref-changelog.md:1255 +#: ../../source/ref-changelog.md:1277 msgid "" "**Two new Jupyter Notebook tutorials** " "([#1141](https://github.com/adap/flower/pull/1141))" msgstr "" -#: ../../source/ref-changelog.md:1257 +#: ../../source/ref-changelog.md:1279 msgid "" "Two Jupyter Notebook tutorials (compatible with Google Colab) explain " "basic and intermediate Flower features:" msgstr "" -#: ../../source/ref-changelog.md:1259 +#: ../../source/ref-changelog.md:1281 msgid "" "*An Introduction to Federated Learning*: [Open in " "Colab](https://colab.research.google.com/github/adap/flower/blob/main/tutorials/Flower-1" "-Intro-to-FL-PyTorch.ipynb)" msgstr "" -#: ../../source/ref-changelog.md:1261 +#: ../../source/ref-changelog.md:1283 msgid "" "*Using Strategies in Federated Learning*: [Open in " "Colab](https://colab.research.google.com/github/adap/flower/blob/main/tutorials/Flower-2" "-Strategies-in-FL-PyTorch.ipynb)" msgstr "" -#: ../../source/ref-changelog.md:1263 +#: ../../source/ref-changelog.md:1285 msgid "" "**New FedAvgM strategy (Federated Averaging with Server Momentum)** " "([#1076](https://github.com/adap/flower/pull/1076))" msgstr "" -#: ../../source/ref-changelog.md:1265 +#: ../../source/ref-changelog.md:1287 msgid "" "The new `FedAvgM` strategy implements Federated Averaging with Server " "Momentum \\[Hsu et al., 2019\\]." msgstr "" -#: ../../source/ref-changelog.md:1267 +#: ../../source/ref-changelog.md:1289 msgid "" "**New advanced PyTorch code example** " "([#1007](https://github.com/adap/flower/pull/1007))" msgstr "" -#: ../../source/ref-changelog.md:1269 +#: ../../source/ref-changelog.md:1291 msgid "" "A new code example (`advanced_pytorch`) demonstrates advanced Flower " "concepts with PyTorch." msgstr "" -#: ../../source/ref-changelog.md:1271 +#: ../../source/ref-changelog.md:1293 msgid "" "**New JAX code example** " "([#906](https://github.com/adap/flower/pull/906), " "[#1143](https://github.com/adap/flower/pull/1143))" msgstr "" -#: ../../source/ref-changelog.md:1273 +#: ../../source/ref-changelog.md:1295 msgid "" "A new code example (`jax_from_centralized_to_federated`) shows federated " "learning with JAX and Flower." msgstr "" -#: ../../source/ref-changelog.md:1277 +#: ../../source/ref-changelog.md:1299 msgid "" "New option to keep Ray running if Ray was already initialized in " "`start_simulation` ([#1177](https://github.com/adap/flower/pull/1177))" msgstr "" -#: ../../source/ref-changelog.md:1278 +#: ../../source/ref-changelog.md:1300 msgid "" "Add support for custom `ClientManager` as a `start_simulation` parameter " "([#1171](https://github.com/adap/flower/pull/1171))" msgstr "" -#: ../../source/ref-changelog.md:1279 +#: ../../source/ref-changelog.md:1301 msgid "" "New documentation for [implementing " "strategies](https://flower.ai/docs/framework/how-to-implement-" @@ -21696,72 +21780,72 @@ msgid "" "[#1175](https://github.com/adap/flower/pull/1175))" msgstr "" -#: ../../source/ref-changelog.md:1280 +#: ../../source/ref-changelog.md:1302 msgid "" "New mobile-friendly documentation theme " "([#1174](https://github.com/adap/flower/pull/1174))" msgstr "" -#: ../../source/ref-changelog.md:1281 +#: ../../source/ref-changelog.md:1303 msgid "" "Limit version range for (optional) `ray` dependency to include only " "compatible releases (`>=1.9.2,<1.12.0`) " "([#1205](https://github.com/adap/flower/pull/1205))" msgstr "" -#: ../../source/ref-changelog.md:1285 +#: ../../source/ref-changelog.md:1307 msgid "" "**Remove deprecated support for Python 3.6** " "([#871](https://github.com/adap/flower/pull/871))" msgstr "" -#: ../../source/ref-changelog.md:1286 +#: ../../source/ref-changelog.md:1308 msgid "" "**Remove deprecated KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" msgstr "" -#: ../../source/ref-changelog.md:1287 +#: ../../source/ref-changelog.md:1309 msgid "" "**Remove deprecated no-op extra installs** " "([#973](https://github.com/adap/flower/pull/973))" msgstr "" -#: ../../source/ref-changelog.md:1288 +#: ../../source/ref-changelog.md:1310 msgid "" "**Remove deprecated proto fields from** `FitRes` **and** `EvaluateRes` " "([#869](https://github.com/adap/flower/pull/869))" msgstr "" -#: ../../source/ref-changelog.md:1289 +#: ../../source/ref-changelog.md:1311 msgid "" "**Remove deprecated QffedAvg strategy (replaced by QFedAvg)** " "([#1107](https://github.com/adap/flower/pull/1107))" msgstr "" -#: ../../source/ref-changelog.md:1290 +#: ../../source/ref-changelog.md:1312 msgid "" "**Remove deprecated DefaultStrategy strategy** " "([#1142](https://github.com/adap/flower/pull/1142))" msgstr "" -#: ../../source/ref-changelog.md:1291 +#: ../../source/ref-changelog.md:1313 msgid "" "**Remove deprecated support for eval_fn accuracy return value** " "([#1142](https://github.com/adap/flower/pull/1142))" msgstr "" -#: ../../source/ref-changelog.md:1292 +#: ../../source/ref-changelog.md:1314 msgid "" "**Remove deprecated support for passing initial parameters as NumPy " "ndarrays** ([#1142](https://github.com/adap/flower/pull/1142))" msgstr "" -#: ../../source/ref-changelog.md:1294 +#: ../../source/ref-changelog.md:1316 msgid "v0.18.0 (2022-02-28)" msgstr "" -#: ../../source/ref-changelog.md:1298 +#: ../../source/ref-changelog.md:1320 msgid "" "**Improved Virtual Client Engine compatibility with Jupyter Notebook / " "Google Colab** ([#866](https://github.com/adap/flower/pull/866), " @@ -21770,7 +21854,7 @@ msgid "" "[#1036](https://github.com/adap/flower/pull/1036))" msgstr "" -#: ../../source/ref-changelog.md:1300 +#: ../../source/ref-changelog.md:1322 msgid "" "Simulations (using the Virtual Client Engine through `start_simulation`) " "now work more smoothly on Jupyter Notebooks (incl. Google Colab) after " @@ -21778,38 +21862,38 @@ msgid "" "'flwr[simulation]'`)." msgstr "" -#: ../../source/ref-changelog.md:1302 +#: ../../source/ref-changelog.md:1324 msgid "" "**New Jupyter Notebook code example** " "([#833](https://github.com/adap/flower/pull/833))" msgstr "" -#: ../../source/ref-changelog.md:1304 +#: ../../source/ref-changelog.md:1326 msgid "" "A new code example (`quickstart_simulation`) demonstrates Flower " "simulations using the Virtual Client Engine through Jupyter Notebook " "(incl. Google Colab)." msgstr "" -#: ../../source/ref-changelog.md:1306 +#: ../../source/ref-changelog.md:1328 msgid "" "**Client properties (feature preview)** " "([#795](https://github.com/adap/flower/pull/795))" msgstr "" -#: ../../source/ref-changelog.md:1308 +#: ../../source/ref-changelog.md:1330 msgid "" "Clients can implement a new method `get_properties` to enable server-side" " strategies to query client properties." msgstr "" -#: ../../source/ref-changelog.md:1310 +#: ../../source/ref-changelog.md:1332 msgid "" "**Experimental Android support with TFLite** " "([#865](https://github.com/adap/flower/pull/865))" msgstr "" -#: ../../source/ref-changelog.md:1312 +#: ../../source/ref-changelog.md:1334 msgid "" "Android support has finally arrived in `main`! Flower is both client-" "agnostic and framework-agnostic by design. One can integrate arbitrary " @@ -21817,7 +21901,7 @@ msgid "" "become a lot easier." msgstr "" -#: ../../source/ref-changelog.md:1314 +#: ../../source/ref-changelog.md:1336 msgid "" "The example uses TFLite on the client side, along with a new " "`FedAvgAndroid` strategy. The Android client and `FedAvgAndroid` are " @@ -21826,13 +21910,13 @@ msgid "" " functionality from `FedAvgAndroid`." msgstr "" -#: ../../source/ref-changelog.md:1316 +#: ../../source/ref-changelog.md:1338 msgid "" "**Make gRPC keepalive time user-configurable and decrease default " "keepalive time** ([#1069](https://github.com/adap/flower/pull/1069))" msgstr "" -#: ../../source/ref-changelog.md:1318 +#: ../../source/ref-changelog.md:1340 msgid "" "The default gRPC keepalive time has been reduced to increase the " "compatibility of Flower with more cloud environments (for example, " @@ -21840,31 +21924,31 @@ msgid "" " gRPC stack based on specific requirements." msgstr "" -#: ../../source/ref-changelog.md:1320 +#: ../../source/ref-changelog.md:1342 msgid "" "**New differential privacy example using Opacus and PyTorch** " "([#805](https://github.com/adap/flower/pull/805))" msgstr "" -#: ../../source/ref-changelog.md:1322 +#: ../../source/ref-changelog.md:1344 msgid "" "A new code example (`opacus`) demonstrates differentially-private " "federated learning with Opacus, PyTorch, and Flower." msgstr "" -#: ../../source/ref-changelog.md:1324 +#: ../../source/ref-changelog.md:1346 msgid "" "**New Hugging Face Transformers code example** " "([#863](https://github.com/adap/flower/pull/863))" msgstr "" -#: ../../source/ref-changelog.md:1326 +#: ../../source/ref-changelog.md:1348 msgid "" "A new code example (`quickstart_huggingface`) demonstrates usage of " "Hugging Face Transformers with Flower." msgstr "" -#: ../../source/ref-changelog.md:1328 +#: ../../source/ref-changelog.md:1350 msgid "" "**New MLCube code example** " "([#779](https://github.com/adap/flower/pull/779), " @@ -21873,13 +21957,13 @@ msgid "" "[#1090](https://github.com/adap/flower/pull/1090))" msgstr "" -#: ../../source/ref-changelog.md:1330 +#: ../../source/ref-changelog.md:1352 msgid "" "A new code example (`quickstart_mlcube`) demonstrates usage of MLCube " "with Flower." msgstr "" -#: ../../source/ref-changelog.md:1332 +#: ../../source/ref-changelog.md:1354 msgid "" "**SSL-enabled server and client** " "([#842](https://github.com/adap/flower/pull/842), " @@ -21890,33 +21974,33 @@ msgid "" "[#994](https://github.com/adap/flower/pull/994))" msgstr "" -#: ../../source/ref-changelog.md:1334 +#: ../../source/ref-changelog.md:1356 msgid "" "SSL enables secure encrypted connections between clients and servers. " "This release open-sources the Flower secure gRPC implementation to make " "encrypted communication channels accessible to all Flower users." msgstr "" -#: ../../source/ref-changelog.md:1336 +#: ../../source/ref-changelog.md:1358 msgid "" "**Updated** `FedAdam` **and** `FedYogi` **strategies** " "([#885](https://github.com/adap/flower/pull/885), " "[#895](https://github.com/adap/flower/pull/895))" msgstr "" -#: ../../source/ref-changelog.md:1338 +#: ../../source/ref-changelog.md:1360 msgid "" "`FedAdam` and `FedAdam` match the latest version of the Adaptive " "Federated Optimization paper." msgstr "" -#: ../../source/ref-changelog.md:1340 +#: ../../source/ref-changelog.md:1362 msgid "" "**Initialize** `start_simulation` **with a list of client IDs** " "([#860](https://github.com/adap/flower/pull/860))" msgstr "" -#: ../../source/ref-changelog.md:1342 +#: ../../source/ref-changelog.md:1364 msgid "" "`start_simulation` can now be called with a list of client IDs " "(`clients_ids`, type: `List[str]`). Those IDs will be passed to the " @@ -21925,55 +22009,55 @@ msgid "" "identifiers." msgstr "" -#: ../../source/ref-changelog.md:1346 +#: ../../source/ref-changelog.md:1368 msgid "" "Update `num_examples` calculation in PyTorch code examples in " "([#909](https://github.com/adap/flower/pull/909))" msgstr "" -#: ../../source/ref-changelog.md:1347 +#: ../../source/ref-changelog.md:1369 msgid "" "Expose Flower version through `flwr.__version__` " "([#952](https://github.com/adap/flower/pull/952))" msgstr "" -#: ../../source/ref-changelog.md:1348 +#: ../../source/ref-changelog.md:1370 msgid "" "`start_server` in `app.py` now returns a `History` object containing " "metrics from training ([#974](https://github.com/adap/flower/pull/974))" msgstr "" -#: ../../source/ref-changelog.md:1349 +#: ../../source/ref-changelog.md:1371 msgid "" "Make `max_workers` (used by `ThreadPoolExecutor`) configurable " "([#978](https://github.com/adap/flower/pull/978))" msgstr "" -#: ../../source/ref-changelog.md:1350 +#: ../../source/ref-changelog.md:1372 msgid "" "Increase sleep time after server start to three seconds in all code " "examples ([#1086](https://github.com/adap/flower/pull/1086))" msgstr "" -#: ../../source/ref-changelog.md:1351 +#: ../../source/ref-changelog.md:1373 msgid "" "Added a new FAQ section to the documentation " "([#948](https://github.com/adap/flower/pull/948))" msgstr "" -#: ../../source/ref-changelog.md:1352 +#: ../../source/ref-changelog.md:1374 msgid "" "And many more under-the-hood changes, library updates, documentation " "changes, and tooling improvements!" msgstr "" -#: ../../source/ref-changelog.md:1356 +#: ../../source/ref-changelog.md:1378 msgid "" "**Removed** `flwr_example` **and** `flwr_experimental` **from release " "build** ([#869](https://github.com/adap/flower/pull/869))" msgstr "" -#: ../../source/ref-changelog.md:1358 +#: ../../source/ref-changelog.md:1380 msgid "" "The packages `flwr_example` and `flwr_experimental` have been deprecated " "since Flower 0.12.0 and they are not longer included in Flower release " @@ -21982,11 +22066,11 @@ msgid "" "an upcoming release." msgstr "" -#: ../../source/ref-changelog.md:1360 +#: ../../source/ref-changelog.md:1382 msgid "v0.17.0 (2021-09-24)" msgstr "" -#: ../../source/ref-changelog.md:1364 +#: ../../source/ref-changelog.md:1386 msgid "" "**Experimental virtual client engine** " "([#781](https://github.com/adap/flower/pull/781) " @@ -21994,7 +22078,7 @@ msgid "" "[#791](https://github.com/adap/flower/pull/791))" msgstr "" -#: ../../source/ref-changelog.md:1366 +#: ../../source/ref-changelog.md:1388 msgid "" "One of Flower's goals is to enable research at scale. This release " "enables a first (experimental) peek at a major new feature, codenamed the" @@ -22004,7 +22088,7 @@ msgid "" "code examples called `quickstart_simulation` and `simulation_pytorch`." msgstr "" -#: ../../source/ref-changelog.md:1368 +#: ../../source/ref-changelog.md:1390 msgid "" "The feature is still experimental, so there's no stability guarantee for " "the API. It's also not quite ready for prime time and comes with a few " @@ -22012,86 +22096,86 @@ msgid "" "out and share their thoughts." msgstr "" -#: ../../source/ref-changelog.md:1370 +#: ../../source/ref-changelog.md:1392 msgid "" "**New built-in strategies** " "([#828](https://github.com/adap/flower/pull/828) " "[#822](https://github.com/adap/flower/pull/822))" msgstr "" -#: ../../source/ref-changelog.md:1372 +#: ../../source/ref-changelog.md:1394 msgid "" "FedYogi - Federated learning strategy using Yogi on server-side. " "Implementation based on https://arxiv.org/abs/2003.00295" msgstr "" -#: ../../source/ref-changelog.md:1373 +#: ../../source/ref-changelog.md:1395 msgid "" "FedAdam - Federated learning strategy using Adam on server-side. " "Implementation based on https://arxiv.org/abs/2003.00295" msgstr "" -#: ../../source/ref-changelog.md:1375 +#: ../../source/ref-changelog.md:1397 msgid "" "**New PyTorch Lightning code example** " "([#617](https://github.com/adap/flower/pull/617))" msgstr "" -#: ../../source/ref-changelog.md:1377 +#: ../../source/ref-changelog.md:1399 msgid "" "**New Variational Auto-Encoder code example** " "([#752](https://github.com/adap/flower/pull/752))" msgstr "" -#: ../../source/ref-changelog.md:1379 +#: ../../source/ref-changelog.md:1401 msgid "" "**New scikit-learn code example** " "([#748](https://github.com/adap/flower/pull/748))" msgstr "" -#: ../../source/ref-changelog.md:1381 +#: ../../source/ref-changelog.md:1403 msgid "" "**New experimental TensorBoard strategy** " "([#789](https://github.com/adap/flower/pull/789))" msgstr "" -#: ../../source/ref-changelog.md:1385 +#: ../../source/ref-changelog.md:1407 msgid "" "Improved advanced TensorFlow code example " "([#769](https://github.com/adap/flower/pull/769))" msgstr "" -#: ../../source/ref-changelog.md:1386 +#: ../../source/ref-changelog.md:1408 msgid "" "Warning when `min_available_clients` is misconfigured " "([#830](https://github.com/adap/flower/pull/830))" msgstr "" -#: ../../source/ref-changelog.md:1387 +#: ../../source/ref-changelog.md:1409 msgid "" "Improved gRPC server docs " "([#841](https://github.com/adap/flower/pull/841))" msgstr "" -#: ../../source/ref-changelog.md:1388 +#: ../../source/ref-changelog.md:1410 msgid "" "Improved error message in `NumPyClient` " "([#851](https://github.com/adap/flower/pull/851))" msgstr "" -#: ../../source/ref-changelog.md:1389 +#: ../../source/ref-changelog.md:1411 msgid "" "Improved PyTorch quickstart code example " "([#852](https://github.com/adap/flower/pull/852))" msgstr "" -#: ../../source/ref-changelog.md:1393 +#: ../../source/ref-changelog.md:1415 msgid "" "**Disabled final distributed evaluation** " "([#800](https://github.com/adap/flower/pull/800))" msgstr "" -#: ../../source/ref-changelog.md:1395 +#: ../../source/ref-changelog.md:1417 msgid "" "Prior behaviour was to perform a final round of distributed evaluation on" " all connected clients, which is often not required (e.g., when using " @@ -22099,13 +22183,13 @@ msgid "" "`force_final_distributed_eval=True` to `start_server`." msgstr "" -#: ../../source/ref-changelog.md:1397 +#: ../../source/ref-changelog.md:1419 msgid "" "**Renamed q-FedAvg strategy** " "([#802](https://github.com/adap/flower/pull/802))" msgstr "" -#: ../../source/ref-changelog.md:1399 +#: ../../source/ref-changelog.md:1421 msgid "" "The strategy named `QffedAvg` was renamed to `QFedAvg` to better reflect " "the notation given in the original paper (q-FFL is the optimization " @@ -22114,14 +22198,14 @@ msgid "" " (it will be removed in a future release)." msgstr "" -#: ../../source/ref-changelog.md:1401 +#: ../../source/ref-changelog.md:1423 msgid "" "**Deprecated and renamed code example** `simulation_pytorch` **to** " "`simulation_pytorch_legacy` " "([#791](https://github.com/adap/flower/pull/791))" msgstr "" -#: ../../source/ref-changelog.md:1403 +#: ../../source/ref-changelog.md:1425 msgid "" "This example has been replaced by a new example. The new example is based" " on the experimental virtual client engine, which will become the new " @@ -22130,27 +22214,27 @@ msgid "" "removed in the future." msgstr "" -#: ../../source/ref-changelog.md:1405 +#: ../../source/ref-changelog.md:1427 msgid "v0.16.0 (2021-05-11)" msgstr "" -#: ../../source/ref-changelog.md:1409 +#: ../../source/ref-changelog.md:1431 msgid "" "**New built-in strategies** " "([#549](https://github.com/adap/flower/pull/549))" msgstr "" -#: ../../source/ref-changelog.md:1411 +#: ../../source/ref-changelog.md:1433 msgid "(abstract) FedOpt" msgstr "" -#: ../../source/ref-changelog.md:1414 +#: ../../source/ref-changelog.md:1436 msgid "" "**Custom metrics for server and strategies** " "([#717](https://github.com/adap/flower/pull/717))" msgstr "" -#: ../../source/ref-changelog.md:1416 +#: ../../source/ref-changelog.md:1438 msgid "" "The Flower server is now fully task-agnostic, all remaining instances of " "task-specific metrics (such as `accuracy`) have been replaced by custom " @@ -22159,7 +22243,7 @@ msgid "" "release, custom metrics replace task-specific metrics on the server." msgstr "" -#: ../../source/ref-changelog.md:1418 +#: ../../source/ref-changelog.md:1440 msgid "" "Custom metric dictionaries are now used in two user-facing APIs: they are" " returned from Strategy methods `aggregate_fit`/`aggregate_evaluate` and " @@ -22169,7 +22253,7 @@ msgid "" "track of." msgstr "" -#: ../../source/ref-changelog.md:1420 +#: ../../source/ref-changelog.md:1442 msgid "" "Strategy implementations should migrate their `aggregate_fit` and " "`aggregate_evaluate` methods to the new return type (e.g., by simply " @@ -22177,19 +22261,19 @@ msgid "" " from `return loss, accuracy` to `return loss, {\"accuracy\": accuracy}`." msgstr "" -#: ../../source/ref-changelog.md:1422 +#: ../../source/ref-changelog.md:1444 msgid "" "Flower 0.15-style return types are deprecated (but still supported), " "compatibility will be removed in a future release." msgstr "" -#: ../../source/ref-changelog.md:1424 +#: ../../source/ref-changelog.md:1446 msgid "" "**Migration warnings for deprecated functionality** " "([#690](https://github.com/adap/flower/pull/690))" msgstr "" -#: ../../source/ref-changelog.md:1426 +#: ../../source/ref-changelog.md:1448 msgid "" "Earlier versions of Flower were often migrated to new APIs, while " "maintaining compatibility with legacy APIs. This release introduces " @@ -22198,7 +22282,7 @@ msgid "" "recent APIs, thus easing the transition from one release to another." msgstr "" -#: ../../source/ref-changelog.md:1428 +#: ../../source/ref-changelog.md:1450 msgid "" "Improved docs and docstrings " "([#691](https://github.com/adap/flower/pull/691) " @@ -22206,11 +22290,11 @@ msgid "" "[#713](https://github.com/adap/flower/pull/713))" msgstr "" -#: ../../source/ref-changelog.md:1430 +#: ../../source/ref-changelog.md:1452 msgid "MXNet example and documentation" msgstr "" -#: ../../source/ref-changelog.md:1432 +#: ../../source/ref-changelog.md:1454 msgid "" "FedBN implementation in example PyTorch: From Centralized To Federated " "([#696](https://github.com/adap/flower/pull/696) " @@ -22218,13 +22302,13 @@ msgid "" "[#705](https://github.com/adap/flower/pull/705))" msgstr "" -#: ../../source/ref-changelog.md:1436 +#: ../../source/ref-changelog.md:1458 msgid "" "**Serialization-agnostic server** " "([#721](https://github.com/adap/flower/pull/721))" msgstr "" -#: ../../source/ref-changelog.md:1438 +#: ../../source/ref-changelog.md:1460 msgid "" "The Flower server is now fully serialization-agnostic. Prior usage of " "class `Weights` (which represents parameters as deserialized NumPy " @@ -22235,7 +22319,7 @@ msgid "" "serialization/deserialization)." msgstr "" -#: ../../source/ref-changelog.md:1440 +#: ../../source/ref-changelog.md:1462 msgid "" "Built-in strategies implement this approach by handling serialization and" " deserialization to/from `Weights` internally. Custom/3rd-party Strategy " @@ -22245,31 +22329,31 @@ msgid "" " easily migrate to the new format." msgstr "" -#: ../../source/ref-changelog.md:1442 +#: ../../source/ref-changelog.md:1464 msgid "" "Deprecated `flwr.server.Server.evaluate`, use " "`flwr.server.Server.evaluate_round` instead " "([#717](https://github.com/adap/flower/pull/717))" msgstr "" -#: ../../source/ref-changelog.md:1444 +#: ../../source/ref-changelog.md:1466 msgid "v0.15.0 (2021-03-12)" msgstr "" -#: ../../source/ref-changelog.md:1448 +#: ../../source/ref-changelog.md:1470 msgid "" "**Server-side parameter initialization** " "([#658](https://github.com/adap/flower/pull/658))" msgstr "" -#: ../../source/ref-changelog.md:1450 +#: ../../source/ref-changelog.md:1472 msgid "" "Model parameters can now be initialized on the server-side. Server-side " "parameter initialization works via a new `Strategy` method called " "`initialize_parameters`." msgstr "" -#: ../../source/ref-changelog.md:1452 +#: ../../source/ref-changelog.md:1474 msgid "" "Built-in strategies support a new constructor argument called " "`initial_parameters` to set the initial parameters. Built-in strategies " @@ -22277,7 +22361,7 @@ msgid "" "delete them to free the memory afterwards." msgstr "" -#: ../../source/ref-changelog.md:1471 +#: ../../source/ref-changelog.md:1493 msgid "" "If no initial parameters are provided to the strategy, the server will " "continue to use the current behaviour (namely, it will ask one of the " @@ -22285,17 +22369,17 @@ msgid "" "parameters)." msgstr "" -#: ../../source/ref-changelog.md:1475 +#: ../../source/ref-changelog.md:1497 msgid "" "Deprecate `flwr.server.strategy.DefaultStrategy` (migrate to " "`flwr.server.strategy.FedAvg`, which is equivalent)" msgstr "" -#: ../../source/ref-changelog.md:1477 +#: ../../source/ref-changelog.md:1499 msgid "v0.14.0 (2021-02-18)" msgstr "" -#: ../../source/ref-changelog.md:1481 +#: ../../source/ref-changelog.md:1503 msgid "" "**Generalized** `Client.fit` **and** `Client.evaluate` **return values** " "([#610](https://github.com/adap/flower/pull/610) " @@ -22303,7 +22387,7 @@ msgid "" "[#633](https://github.com/adap/flower/pull/633))" msgstr "" -#: ../../source/ref-changelog.md:1483 +#: ../../source/ref-changelog.md:1505 msgid "" "Clients can now return an additional dictionary mapping `str` keys to " "values of the following types: `bool`, `bytes`, `float`, `int`, `str`. " @@ -22311,7 +22395,7 @@ msgid "" "and make use of them on the server side!" msgstr "" -#: ../../source/ref-changelog.md:1485 +#: ../../source/ref-changelog.md:1507 msgid "" "This improvement also allowed for more consistent return types between " "`fit` and `evaluate`: `evaluate` should now return a tuple `(float, int, " @@ -22319,7 +22403,7 @@ msgid "" "holding arbitrary problem-specific values like accuracy." msgstr "" -#: ../../source/ref-changelog.md:1487 +#: ../../source/ref-changelog.md:1509 msgid "" "In case you wondered: this feature is compatible with existing projects, " "the additional dictionary return value is optional. New code should " @@ -22329,19 +22413,19 @@ msgid "" "details." msgstr "" -#: ../../source/ref-changelog.md:1489 +#: ../../source/ref-changelog.md:1511 msgid "" "*Code example:* note the additional dictionary return values in both " "`FlwrClient.fit` and `FlwrClient.evaluate`:" msgstr "" -#: ../../source/ref-changelog.md:1504 +#: ../../source/ref-changelog.md:1526 msgid "" "**Generalized** `config` **argument in** `Client.fit` **and** " "`Client.evaluate` ([#595](https://github.com/adap/flower/pull/595))" msgstr "" -#: ../../source/ref-changelog.md:1506 +#: ../../source/ref-changelog.md:1528 msgid "" "The `config` argument used to be of type `Dict[str, str]`, which means " "that dictionary values were expected to be strings. The new release " @@ -22349,58 +22433,58 @@ msgid "" "`bytes`, `float`, `int`, `str`." msgstr "" -#: ../../source/ref-changelog.md:1508 +#: ../../source/ref-changelog.md:1530 msgid "" "This means one can now pass almost arbitrary values to `fit`/`evaluate` " "using the `config` dictionary. Yay, no more `str(epochs)` on the server-" "side and `int(config[\"epochs\"])` on the client side!" msgstr "" -#: ../../source/ref-changelog.md:1510 +#: ../../source/ref-changelog.md:1532 msgid "" "*Code example:* note that the `config` dictionary now contains non-`str` " "values in both `Client.fit` and `Client.evaluate`:" msgstr "" -#: ../../source/ref-changelog.md:1527 +#: ../../source/ref-changelog.md:1549 msgid "v0.13.0 (2021-01-08)" msgstr "" -#: ../../source/ref-changelog.md:1531 +#: ../../source/ref-changelog.md:1553 msgid "" "New example: PyTorch From Centralized To Federated " "([#549](https://github.com/adap/flower/pull/549))" msgstr "" -#: ../../source/ref-changelog.md:1532 +#: ../../source/ref-changelog.md:1554 msgid "Improved documentation" msgstr "" -#: ../../source/ref-changelog.md:1533 +#: ../../source/ref-changelog.md:1555 msgid "New documentation theme ([#551](https://github.com/adap/flower/pull/551))" msgstr "" -#: ../../source/ref-changelog.md:1534 +#: ../../source/ref-changelog.md:1556 msgid "New API reference ([#554](https://github.com/adap/flower/pull/554))" msgstr "" -#: ../../source/ref-changelog.md:1535 +#: ../../source/ref-changelog.md:1557 msgid "" "Updated examples documentation " "([#549](https://github.com/adap/flower/pull/549))" msgstr "" -#: ../../source/ref-changelog.md:1536 +#: ../../source/ref-changelog.md:1558 msgid "" "Removed obsolete documentation " "([#548](https://github.com/adap/flower/pull/548))" msgstr "" -#: ../../source/ref-changelog.md:1538 +#: ../../source/ref-changelog.md:1560 msgid "Bugfix:" msgstr "" -#: ../../source/ref-changelog.md:1540 +#: ../../source/ref-changelog.md:1562 msgid "" "`Server.fit` does not disconnect clients when finished, disconnecting the" " clients is now handled in `flwr.server.start_server` " @@ -22408,28 +22492,28 @@ msgid "" "[#540](https://github.com/adap/flower/issues/540))." msgstr "" -#: ../../source/ref-changelog.md:1542 +#: ../../source/ref-changelog.md:1564 msgid "v0.12.0 (2020-12-07)" msgstr "" -#: ../../source/ref-changelog.md:1544 ../../source/ref-changelog.md:1560 +#: ../../source/ref-changelog.md:1566 ../../source/ref-changelog.md:1582 msgid "Important changes:" msgstr "" -#: ../../source/ref-changelog.md:1546 +#: ../../source/ref-changelog.md:1568 msgid "" "Added an example for embedded devices " "([#507](https://github.com/adap/flower/pull/507))" msgstr "" -#: ../../source/ref-changelog.md:1547 +#: ../../source/ref-changelog.md:1569 msgid "" "Added a new NumPyClient (in addition to the existing KerasClient) " "([#504](https://github.com/adap/flower/pull/504) " "[#508](https://github.com/adap/flower/pull/508))" msgstr "" -#: ../../source/ref-changelog.md:1548 +#: ../../source/ref-changelog.md:1570 msgid "" "Deprecated `flwr_example` package and started to migrate examples into " "the top-level `examples` directory " @@ -22437,15 +22521,15 @@ msgid "" "[#512](https://github.com/adap/flower/pull/512))" msgstr "" -#: ../../source/ref-changelog.md:1550 +#: ../../source/ref-changelog.md:1572 msgid "v0.11.0 (2020-11-30)" msgstr "" -#: ../../source/ref-changelog.md:1552 +#: ../../source/ref-changelog.md:1574 msgid "Incompatible changes:" msgstr "" -#: ../../source/ref-changelog.md:1554 +#: ../../source/ref-changelog.md:1576 msgid "" "Renamed strategy methods " "([#486](https://github.com/adap/flower/pull/486)) to unify the naming of " @@ -22455,48 +22539,48 @@ msgid "" "migrate rename the following `Strategy` methods accordingly:" msgstr "" -#: ../../source/ref-changelog.md:1555 +#: ../../source/ref-changelog.md:1577 msgid "`on_configure_evaluate` => `configure_evaluate`" msgstr "" -#: ../../source/ref-changelog.md:1556 +#: ../../source/ref-changelog.md:1578 msgid "`on_aggregate_evaluate` => `aggregate_evaluate`" msgstr "" -#: ../../source/ref-changelog.md:1557 +#: ../../source/ref-changelog.md:1579 msgid "`on_configure_fit` => `configure_fit`" msgstr "" -#: ../../source/ref-changelog.md:1558 +#: ../../source/ref-changelog.md:1580 msgid "`on_aggregate_fit` => `aggregate_fit`" msgstr "" -#: ../../source/ref-changelog.md:1562 +#: ../../source/ref-changelog.md:1584 msgid "" "Deprecated `DefaultStrategy` " "([#479](https://github.com/adap/flower/pull/479)). To migrate use " "`FedAvg` instead." msgstr "" -#: ../../source/ref-changelog.md:1563 +#: ../../source/ref-changelog.md:1585 msgid "" "Simplified examples and baselines " "([#484](https://github.com/adap/flower/pull/484))." msgstr "" -#: ../../source/ref-changelog.md:1564 +#: ../../source/ref-changelog.md:1586 msgid "" "Removed presently unused `on_conclude_round` from strategy interface " "([#483](https://github.com/adap/flower/pull/483))." msgstr "" -#: ../../source/ref-changelog.md:1565 +#: ../../source/ref-changelog.md:1587 msgid "" "Set minimal Python version to 3.6.1 instead of 3.6.9 " "([#471](https://github.com/adap/flower/pull/471))." msgstr "" -#: ../../source/ref-changelog.md:1566 +#: ../../source/ref-changelog.md:1588 msgid "" "Improved `Strategy` docstrings " "([#470](https://github.com/adap/flower/pull/470))." @@ -25900,7 +25984,7 @@ msgstr "" " 수도 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|cf5fe148406b44b9a8b842fb01b5a7ea|" +msgid "|f150b8d6e0074250822c9f6f7a8de3e0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -25917,7 +26001,7 @@ msgstr "" " 바둑과 같은 게임을 하는 것일 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|ba25c91426d64cc1ae2d3febc5715b35|" +msgid "|72772d10debc4abd8373c0bc82985422|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -25943,7 +26027,7 @@ msgstr "" "부르리는 것을 듣는 스마트 스피커에서 비롯됩니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|fca67f83aaab4389aa9ebb4d9c5cd75e|" +msgid "|5815398552ad41d290a3a2631fe8f6ca|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -25961,7 +26045,7 @@ msgstr "" "있습니다. 하지만 여러 조직이 모두 같은 작업을 위해 데이터를 생성하는 것일 수도 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|6f2e8f95c95443379b0df00ca9824654|" +msgid "|e6ac20744bf149378be20ac3dc309356|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -25980,7 +26064,7 @@ msgstr "" "서버는 데이터 센터 어딘가에 있을 수도 있고 클라우드 어딘가에 있을 수도 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|c0ab3a1a733d4dbc9e1677aa608e8038|" +msgid "|a4011ef443c14725b15a8cf33b0e3443|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -25997,7 +26081,7 @@ msgstr "" " 우리가 기본적으로 사용해 온 머신러닝 방법입니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|8f0491bde07341ab9f2e23d50593c0be|" +msgid "|a22faa3617404c06803731525e1c609f|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -26020,7 +26104,7 @@ msgstr "" "트래픽을 분석하는 것이 있습니다. 이러한 사례에서 모든 데이터는 자연스럽게 중앙 서버에 존재합니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|762fc099899943688361562252c5e600|" +msgid "|84a5c9b5041c43c3beab9786197c3e4e|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -26037,7 +26121,7 @@ msgstr "" "좋은 모델을 훈련하기에 충분하지 않을 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|f62d365fd0ae405b975d3ca01e7183fd|" +msgid "|b5c4be0b52d4493ba8c4af14d7c2db97|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -26216,7 +26300,7 @@ msgstr "" "체크포인트에서 모델 매개변수를 초기화합니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|2c78fc1816b143289f4d909388f92a80|" +msgid "|c1c784183d18481186ff65dc261d1335|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -26244,7 +26328,7 @@ msgstr "" "개의 연결 노드만 사용합니다. 그 이유는 점점 더 많은 클라이언트 노드를 선택하면 학습의 효율성이 감소하기 때문입니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|4230725aeebe497d8ad84a3efc2a912b|" +msgid "|669fcd1f44ab42f5bbd196c3cf1ecbc2|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -26271,7 +26355,7 @@ msgstr "" "데이터에서 한 단계 정도로 짧거나 몇 단계(mini-batches)에 불과할 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|64b66a88417240eabe52f5cc55d89d0b|" +msgid "|edfb08758c9441afb6736045a59e154c|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -26297,7 +26381,7 @@ msgstr "" "보냅니다. 보내는 모델 업데이트는 전체 모델 파라미터거나 로컬 교육 중에 누적된 그레디언트(gradient)일 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|726c8eca58bc4f859b06aa24a587b253|" +msgid "|82338b8bbad24d5ea9df3801aab37852|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -26347,7 +26431,7 @@ msgstr "" "많은 영향을 미칩니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|f9d869e4b33c4093b29cf24ed8dff80a|" +msgid "|518d994dd2c844898b441da03b858326|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -26467,7 +26551,7 @@ msgstr "" "사용자는 모든 워크로드, 머신러닝 프레임워크 및 모든 프로그래밍 언어를 통합할 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|4ab50bc01a9f426a91a2c0cbc3ab7a84|" +msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -33296,3 +33380,51 @@ msgstr "" #~ msgid "|dd4434075f374e99ac07f509a883778f|" #~ msgstr "" +#~ msgid "Unreleased" +#~ msgstr "릴리즈 빌드" + +#~ msgid "Other changes" +#~ msgstr "**변경사항 스테이징**" + +#~ msgid "|cf5fe148406b44b9a8b842fb01b5a7ea|" +#~ msgstr "" + +#~ msgid "|ba25c91426d64cc1ae2d3febc5715b35|" +#~ msgstr "" + +#~ msgid "|fca67f83aaab4389aa9ebb4d9c5cd75e|" +#~ msgstr "" + +#~ msgid "|6f2e8f95c95443379b0df00ca9824654|" +#~ msgstr "" + +#~ msgid "|c0ab3a1a733d4dbc9e1677aa608e8038|" +#~ msgstr "" + +#~ msgid "|8f0491bde07341ab9f2e23d50593c0be|" +#~ msgstr "" + +#~ msgid "|762fc099899943688361562252c5e600|" +#~ msgstr "" + +#~ msgid "|f62d365fd0ae405b975d3ca01e7183fd|" +#~ msgstr "" + +#~ msgid "|2c78fc1816b143289f4d909388f92a80|" +#~ msgstr "" + +#~ msgid "|4230725aeebe497d8ad84a3efc2a912b|" +#~ msgstr "" + +#~ msgid "|64b66a88417240eabe52f5cc55d89d0b|" +#~ msgstr "" + +#~ msgid "|726c8eca58bc4f859b06aa24a587b253|" +#~ msgstr "" + +#~ msgid "|f9d869e4b33c4093b29cf24ed8dff80a|" +#~ msgstr "" + +#~ msgid "|4ab50bc01a9f426a91a2c0cbc3ab7a84|" +#~ msgstr "" + diff --git a/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po b/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po index c2670e8f6b0f..017acf217ab0 100644 --- a/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po +++ b/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower main\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-22 08:46+0000\n" +"POT-Creation-Date: 2024-11-28 00:32+0000\n" "PO-Revision-Date: 2024-05-25 11:09+0000\n" "Last-Translator: Gustavo Bertoli \n" "Language: pt_BR\n" @@ -3101,10 +3101,10 @@ msgstr "" #: ../../source/docker/run-quickstart-examples-docker-compose.rst:119 #: ../../source/docker/run-quickstart-examples-docker-compose.rst:121 #: ../../source/docker/run-quickstart-examples-docker-compose.rst:125 -#: ../../source/ref-changelog.md:214 ../../source/ref-changelog.md:580 -#: ../../source/ref-changelog.md:857 ../../source/ref-changelog.md:921 -#: ../../source/ref-changelog.md:979 ../../source/ref-changelog.md:1048 -#: ../../source/ref-changelog.md:1110 +#: ../../source/ref-changelog.md:236 ../../source/ref-changelog.md:602 +#: ../../source/ref-changelog.md:879 ../../source/ref-changelog.md:943 +#: ../../source/ref-changelog.md:1001 ../../source/ref-changelog.md:1070 +#: ../../source/ref-changelog.md:1132 msgid "None" msgstr "" @@ -13588,7 +13588,7 @@ msgid "" msgstr "" #: ../../source/ref-api/flwr.server.strategy.FedAdagrad.rst:2 -#: ../../source/ref-changelog.md:1412 +#: ../../source/ref-changelog.md:1434 msgid "FedAdagrad" msgstr "" @@ -15368,80 +15368,156 @@ msgid "Changelog" msgstr "" #: ../../source/ref-changelog.md:3 -msgid "Unreleased" -msgstr "" - -#: ../../source/ref-changelog.md:5 ../../source/ref-changelog.md:21 -#: ../../source/ref-changelog.md:122 ../../source/ref-changelog.md:224 -#: ../../source/ref-changelog.md:328 ../../source/ref-changelog.md:426 -#: ../../source/ref-changelog.md:526 ../../source/ref-changelog.md:590 -#: ../../source/ref-changelog.md:683 ../../source/ref-changelog.md:783 -#: ../../source/ref-changelog.md:867 ../../source/ref-changelog.md:931 -#: ../../source/ref-changelog.md:989 ../../source/ref-changelog.md:1058 -#: ../../source/ref-changelog.md:1187 ../../source/ref-changelog.md:1229 -#: ../../source/ref-changelog.md:1296 ../../source/ref-changelog.md:1362 -#: ../../source/ref-changelog.md:1407 ../../source/ref-changelog.md:1446 -#: ../../source/ref-changelog.md:1479 ../../source/ref-changelog.md:1529 -msgid "What's new?" +msgid "v1.13.1 (2024-11-26)" msgstr "" -#: ../../source/ref-changelog.md:7 -msgid "Other changes" +#: ../../source/ref-changelog.md:5 ../../source/ref-changelog.md:37 +#: ../../source/ref-changelog.md:138 ../../source/ref-changelog.md:208 +#: ../../source/ref-changelog.md:240 ../../source/ref-changelog.md:344 +#: ../../source/ref-changelog.md:442 ../../source/ref-changelog.md:542 +#: ../../source/ref-changelog.md:606 ../../source/ref-changelog.md:699 +#: ../../source/ref-changelog.md:799 ../../source/ref-changelog.md:883 +#: ../../source/ref-changelog.md:947 ../../source/ref-changelog.md:1005 +#: ../../source/ref-changelog.md:1074 ../../source/ref-changelog.md:1143 +msgid "Thanks to our contributors" msgstr "" -#: ../../source/ref-changelog.md:9 ../../source/ref-changelog.md:388 -msgid "Documentation improvements" +#: ../../source/ref-changelog.md:7 ../../source/ref-changelog.md:39 +#: ../../source/ref-changelog.md:140 ../../source/ref-changelog.md:210 +#: ../../source/ref-changelog.md:242 ../../source/ref-changelog.md:346 +#: ../../source/ref-changelog.md:444 ../../source/ref-changelog.md:544 +#: ../../source/ref-changelog.md:608 ../../source/ref-changelog.md:701 +#: ../../source/ref-changelog.md:801 ../../source/ref-changelog.md:885 +#: ../../source/ref-changelog.md:949 ../../source/ref-changelog.md:1007 +msgid "" +"We would like to give our special thanks to all the contributors who made" +" the new version of Flower possible (in `git shortlog` order):" msgstr "" -#: ../../source/ref-changelog.md:11 ../../source/ref-changelog.md:88 -#: ../../source/ref-changelog.md:178 ../../source/ref-changelog.md:212 -#: ../../source/ref-changelog.md:292 ../../source/ref-changelog.md:408 -#: ../../source/ref-changelog.md:504 ../../source/ref-changelog.md:578 -#: ../../source/ref-changelog.md:653 ../../source/ref-changelog.md:765 -#: ../../source/ref-changelog.md:855 ../../source/ref-changelog.md:919 -#: ../../source/ref-changelog.md:977 ../../source/ref-changelog.md:1046 -#: ../../source/ref-changelog.md:1108 ../../source/ref-changelog.md:1127 -#: ../../source/ref-changelog.md:1283 ../../source/ref-changelog.md:1354 -#: ../../source/ref-changelog.md:1391 ../../source/ref-changelog.md:1434 -msgid "Incompatible changes" +#: ../../source/ref-changelog.md:9 +msgid "" +"`Adam Narozniak`, `Charles Beauville`, `Heng Pan`, `Javier`, `Robert " +"Steiner` " +msgstr "" + +#: ../../source/ref-changelog.md:11 ../../source/ref-changelog.md:43 +#: ../../source/ref-changelog.md:144 ../../source/ref-changelog.md:246 +#: ../../source/ref-changelog.md:350 ../../source/ref-changelog.md:448 +#: ../../source/ref-changelog.md:548 ../../source/ref-changelog.md:612 +#: ../../source/ref-changelog.md:705 ../../source/ref-changelog.md:805 +#: ../../source/ref-changelog.md:889 ../../source/ref-changelog.md:953 +#: ../../source/ref-changelog.md:1011 ../../source/ref-changelog.md:1080 +#: ../../source/ref-changelog.md:1209 ../../source/ref-changelog.md:1251 +#: ../../source/ref-changelog.md:1318 ../../source/ref-changelog.md:1384 +#: ../../source/ref-changelog.md:1429 ../../source/ref-changelog.md:1468 +#: ../../source/ref-changelog.md:1501 ../../source/ref-changelog.md:1551 +msgid "What's new?" msgstr "" #: ../../source/ref-changelog.md:13 -msgid "v1.13.0 (2024-11-20)" +msgid "" +"**Fix `SimulationEngine` Executor for SuperLink** " +"([#4563](https://github.com/adap/flower/pull/4563), " +"[#4568](https://github.com/adap/flower/pull/4568), " +"[#4570](https://github.com/adap/flower/pull/4570))" msgstr "" -#: ../../source/ref-changelog.md:15 ../../source/ref-changelog.md:116 -#: ../../source/ref-changelog.md:186 ../../source/ref-changelog.md:218 -#: ../../source/ref-changelog.md:322 ../../source/ref-changelog.md:420 -#: ../../source/ref-changelog.md:520 ../../source/ref-changelog.md:584 -#: ../../source/ref-changelog.md:677 ../../source/ref-changelog.md:777 -#: ../../source/ref-changelog.md:861 ../../source/ref-changelog.md:925 -#: ../../source/ref-changelog.md:983 ../../source/ref-changelog.md:1052 -#: ../../source/ref-changelog.md:1121 -msgid "Thanks to our contributors" +#: ../../source/ref-changelog.md:15 +msgid "" +"Resolved an issue that prevented SuperLink from functioning correctly " +"when using the `SimulationEngine` executor." msgstr "" -#: ../../source/ref-changelog.md:17 ../../source/ref-changelog.md:118 -#: ../../source/ref-changelog.md:188 ../../source/ref-changelog.md:220 -#: ../../source/ref-changelog.md:324 ../../source/ref-changelog.md:422 -#: ../../source/ref-changelog.md:522 ../../source/ref-changelog.md:586 -#: ../../source/ref-changelog.md:679 ../../source/ref-changelog.md:779 -#: ../../source/ref-changelog.md:863 ../../source/ref-changelog.md:927 -#: ../../source/ref-changelog.md:985 +#: ../../source/ref-changelog.md:17 msgid "" -"We would like to give our special thanks to all the contributors who made" -" the new version of Flower possible (in `git shortlog` order):" +"**Improve FAB build and install** " +"([#4571](https://github.com/adap/flower/pull/4571))" msgstr "" #: ../../source/ref-changelog.md:19 msgid "" +"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. The `flwr` CLI " +"commands now correctly pack only the necessary files, such as `.md`, " +"`.toml` and `.py`, ensuring more efficient and accurate packaging." +msgstr "" + +#: ../../source/ref-changelog.md:21 +msgid "" +"**Update** `embedded-devices` **example** " +"([#4381](https://github.com/adap/flower/pull/4381))" +msgstr "" + +#: ../../source/ref-changelog.md:23 +msgid "The example now uses the `flwr run` command and the Deployment Engine." +msgstr "" + +#: ../../source/ref-changelog.md:25 +msgid "" +"**Update Documentation** " +"([#4566](https://github.com/adap/flower/pull/4566), " +"[#4569](https://github.com/adap/flower/pull/4569), " +"[#4560](https://github.com/adap/flower/pull/4560), " +"[#4556](https://github.com/adap/flower/pull/4556), " +"[#4581](https://github.com/adap/flower/pull/4581), " +"[#4537](https://github.com/adap/flower/pull/4537), " +"[#4562](https://github.com/adap/flower/pull/4562), " +"[#4582](https://github.com/adap/flower/pull/4582))" +msgstr "" + +#: ../../source/ref-changelog.md:27 +msgid "" +"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." +msgstr "" + +#: ../../source/ref-changelog.md:29 +msgid "" +"**Update Infrastructure and CI/CD** " +"([#4577](https://github.com/adap/flower/pull/4577), " +"[#4578](https://github.com/adap/flower/pull/4578), " +"[#4558](https://github.com/adap/flower/pull/4558), " +"[#4551](https://github.com/adap/flower/pull/4551), " +"[#3356](https://github.com/adap/flower/pull/3356), " +"[#4559](https://github.com/adap/flower/pull/4559), " +"[#4575](https://github.com/adap/flower/pull/4575))" +msgstr "" + +#: ../../source/ref-changelog.md:31 +msgid "" +"**General improvements** " +"([#4557](https://github.com/adap/flower/pull/4557), " +"[#4564](https://github.com/adap/flower/pull/4564), " +"[#4573](https://github.com/adap/flower/pull/4573), " +"[#4561](https://github.com/adap/flower/pull/4561), " +"[#4579](https://github.com/adap/flower/pull/4579), " +"[#4572](https://github.com/adap/flower/pull/4572))" +msgstr "" + +#: ../../source/ref-changelog.md:33 ../../source/ref-changelog.md:102 +#: ../../source/ref-changelog.md:198 ../../source/ref-changelog.md:301 +#: ../../source/ref-changelog.md:408 +msgid "" +"As always, many parts of the Flower framework and quality infrastructure " +"were improved and updated." +msgstr "" + +#: ../../source/ref-changelog.md:35 +msgid "v1.13.0 (2024-11-20)" +msgstr "" + +#: ../../source/ref-changelog.md:41 +msgid "" "`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` " msgstr "" -#: ../../source/ref-changelog.md:23 +#: ../../source/ref-changelog.md:45 msgid "" "**Introduce `flwr ls` command** " "([#4460](https://github.com/adap/flower/pull/4460), " @@ -15449,30 +15525,30 @@ msgid "" "[#4477](https://github.com/adap/flower/pull/4477))" msgstr "" -#: ../../source/ref-changelog.md:25 +#: ../../source/ref-changelog.md:47 msgid "" "The `flwr ls` command is now available to display details about all runs " "(or one specific run). It supports the following usage options:" msgstr "" -#: ../../source/ref-changelog.md:27 +#: ../../source/ref-changelog.md:49 msgid "`flwr ls --runs [] []`: Lists all runs." msgstr "" -#: ../../source/ref-changelog.md:28 +#: ../../source/ref-changelog.md:50 msgid "" "`flwr ls --run-id [] []`: Displays details for " "a specific run." msgstr "" -#: ../../source/ref-changelog.md:30 +#: ../../source/ref-changelog.md:52 msgid "" "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." msgstr "" -#: ../../source/ref-changelog.md:32 +#: ../../source/ref-changelog.md:54 msgid "" "**Fuse SuperLink and SuperExec** " "([#4358](https://github.com/adap/flower/pull/4358), " @@ -15486,7 +15562,7 @@ msgid "" "[#4352](https://github.com/adap/flower/pull/4352))" msgstr "" -#: ../../source/ref-changelog.md:34 +#: ../../source/ref-changelog.md:56 msgid "" "SuperExec has been integrated into SuperLink, enabling SuperLink to " "directly manage ServerApp processes (`flwr-serverapp`). The `flwr` CLI " @@ -15496,7 +15572,7 @@ msgid "" "{subprocess,process}` flag." msgstr "" -#: ../../source/ref-changelog.md:36 +#: ../../source/ref-changelog.md:58 msgid "" "**Introduce `flwr-serverapp` command** " "([#4394](https://github.com/adap/flower/pull/4394), " @@ -15511,7 +15587,7 @@ msgid "" "[#4402](https://github.com/adap/flower/pull/4402))" msgstr "" -#: ../../source/ref-changelog.md:38 +#: ../../source/ref-changelog.md:60 msgid "" "The `flwr-serverapp` command has been introduced as a CLI entry point " "that runs a `ServerApp` process. This process communicates with SuperLink" @@ -15519,7 +15595,7 @@ msgid "" "and more flexible deployment." msgstr "" -#: ../../source/ref-changelog.md:40 +#: ../../source/ref-changelog.md:62 msgid "" "**Improve simulation engine and introduce `flwr-simulation` command** " "([#4433](https://github.com/adap/flower/pull/4433), " @@ -15532,7 +15608,7 @@ msgid "" "[#4462](https://github.com/adap/flower/pull/4462))" msgstr "" -#: ../../source/ref-changelog.md:42 +#: ../../source/ref-changelog.md:64 msgid "" "The simulation engine has been significantly improved, resulting in " "dramatically faster simulations. Additionally, the `flwr-simulation` " @@ -15540,14 +15616,14 @@ msgid "" "dedicated entry point for running simulations." msgstr "" -#: ../../source/ref-changelog.md:44 +#: ../../source/ref-changelog.md:66 msgid "" "**Improve SuperLink message management** " "([#4378](https://github.com/adap/flower/pull/4378), " "[#4369](https://github.com/adap/flower/pull/4369))" msgstr "" -#: ../../source/ref-changelog.md:46 +#: ../../source/ref-changelog.md:68 msgid "" "SuperLink now validates the destination node ID of instruction messages " "and checks the TTL (time-to-live) for reply messages. When pulling reply " @@ -15556,13 +15632,13 @@ msgid "" "reply message exists but has expired." msgstr "" -#: ../../source/ref-changelog.md:48 +#: ../../source/ref-changelog.md:70 msgid "" "**Introduce FedDebug baseline** " "([#3783](https://github.com/adap/flower/pull/3783))" msgstr "" -#: ../../source/ref-changelog.md:50 +#: ../../source/ref-changelog.md:72 msgid "" "FedDebug is a framework that enhances debugging in Federated Learning by " "enabling interactive inspection of the training process and automatically" @@ -15572,7 +15648,7 @@ msgid "" "documentation](https://flower.ai/docs/baselines/feddebug.html)." msgstr "" -#: ../../source/ref-changelog.md:52 +#: ../../source/ref-changelog.md:74 msgid "" "**Update documentation** " "([#4511](https://github.com/adap/flower/pull/4511), " @@ -15617,7 +15693,7 @@ msgid "" "[#4533](https://github.com/adap/flower/pull/4533))" msgstr "" -#: ../../source/ref-changelog.md:54 +#: ../../source/ref-changelog.md:76 msgid "" "Many documentation pages and tutorials have been updated to improve " "clarity, fix typos, incorporate user feedback, and stay aligned with the " @@ -15631,7 +15707,7 @@ msgid "" "aggregation-protocols.html) page has also been updated." msgstr "" -#: ../../source/ref-changelog.md:56 +#: ../../source/ref-changelog.md:78 msgid "" "**Update examples and templates** " "([#4510](https://github.com/adap/flower/pull/4510), " @@ -15645,7 +15721,7 @@ msgid "" "[#4408](https://github.com/adap/flower/pull/4408))" msgstr "" -#: ../../source/ref-changelog.md:58 +#: ../../source/ref-changelog.md:80 msgid "" "Multiple examples and templates have been updated to enhance usability " "and correctness. The updates include the `30-minute-tutorial`, " @@ -15653,7 +15729,7 @@ msgid "" "and the FlowerTune template." msgstr "" -#: ../../source/ref-changelog.md:60 +#: ../../source/ref-changelog.md:82 msgid "" "**Improve Docker support** " "([#4506](https://github.com/adap/flower/pull/4506), " @@ -15669,7 +15745,7 @@ msgid "" "[#4540](https://github.com/adap/flower/pull/4540))" msgstr "" -#: ../../source/ref-changelog.md:62 +#: ../../source/ref-changelog.md:84 msgid "" "Docker images and configurations have been updated, including updating " "Docker Compose files to version 1.13.0, refactoring the Docker build " @@ -15677,21 +15753,21 @@ msgid "" " 6.9.0, and improving Docker documentation." msgstr "" -#: ../../source/ref-changelog.md:64 +#: ../../source/ref-changelog.md:86 msgid "" "**Allow app installation without internet access** " "([#4479](https://github.com/adap/flower/pull/4479), " "[#4475](https://github.com/adap/flower/pull/4475))" msgstr "" -#: ../../source/ref-changelog.md:66 +#: ../../source/ref-changelog.md:88 msgid "" "The `flwr build` command now includes a wheel file in the FAB, enabling " "Flower app installation in environments without internet access via `flwr" " install`." msgstr "" -#: ../../source/ref-changelog.md:68 +#: ../../source/ref-changelog.md:90 msgid "" "**Improve `flwr log` command** " "([#4391](https://github.com/adap/flower/pull/4391), " @@ -15700,7 +15776,7 @@ msgid "" "[#4397](https://github.com/adap/flower/pull/4397))" msgstr "" -#: ../../source/ref-changelog.md:70 +#: ../../source/ref-changelog.md:92 msgid "" "**Refactor SuperNode for better maintainability and efficiency** " "([#4439](https://github.com/adap/flower/pull/4439), " @@ -15709,13 +15785,13 @@ msgid "" "[#4485](https://github.com/adap/flower/pull/4485))" msgstr "" -#: ../../source/ref-changelog.md:72 +#: ../../source/ref-changelog.md:94 msgid "" "**Support NumPy `2.0`** " "([#4440](https://github.com/adap/flower/pull/4440))" msgstr "" -#: ../../source/ref-changelog.md:74 +#: ../../source/ref-changelog.md:96 msgid "" "**Update infrastructure and CI/CD** " "([#4466](https://github.com/adap/flower/pull/4466), " @@ -15727,7 +15803,7 @@ msgid "" "[#4415](https://github.com/adap/flower/pull/4415))" msgstr "" -#: ../../source/ref-changelog.md:76 +#: ../../source/ref-changelog.md:98 msgid "" "**Bugfixes** ([#4404](https://github.com/adap/flower/pull/4404), " "[#4518](https://github.com/adap/flower/pull/4518), " @@ -15741,7 +15817,7 @@ msgid "" "[#4515](https://github.com/adap/flower/pull/4515))" msgstr "" -#: ../../source/ref-changelog.md:78 +#: ../../source/ref-changelog.md:100 msgid "" "**General improvements** " "([#4454](https://github.com/adap/flower/pull/4454), " @@ -15797,24 +15873,17 @@ msgid "" "[#4481](https://github.com/adap/flower/pull/4481))" msgstr "" -#: ../../source/ref-changelog.md:80 ../../source/ref-changelog.md:176 -#: ../../source/ref-changelog.md:279 ../../source/ref-changelog.md:386 -msgid "" -"As always, many parts of the Flower framework and quality infrastructure " -"were improved and updated." -msgstr "" - -#: ../../source/ref-changelog.md:82 ../../source/ref-changelog.md:281 -#: ../../source/ref-changelog.md:398 ../../source/ref-changelog.md:490 -#: ../../source/ref-changelog.md:1473 +#: ../../source/ref-changelog.md:104 ../../source/ref-changelog.md:303 +#: ../../source/ref-changelog.md:420 ../../source/ref-changelog.md:512 +#: ../../source/ref-changelog.md:1495 msgid "Deprecations" msgstr "" -#: ../../source/ref-changelog.md:84 +#: ../../source/ref-changelog.md:106 msgid "**Deprecate Python 3.9**" msgstr "" -#: ../../source/ref-changelog.md:86 +#: ../../source/ref-changelog.md:108 msgid "" "Flower is deprecating support for Python 3.9 as several of its " "dependencies are phasing out compatibility with this version. While no " @@ -15822,13 +15891,26 @@ msgid "" "upgrading to a supported Python version." msgstr "" -#: ../../source/ref-changelog.md:90 +#: ../../source/ref-changelog.md:110 ../../source/ref-changelog.md:200 +#: ../../source/ref-changelog.md:234 ../../source/ref-changelog.md:314 +#: ../../source/ref-changelog.md:430 ../../source/ref-changelog.md:526 +#: ../../source/ref-changelog.md:600 ../../source/ref-changelog.md:675 +#: ../../source/ref-changelog.md:787 ../../source/ref-changelog.md:877 +#: ../../source/ref-changelog.md:941 ../../source/ref-changelog.md:999 +#: ../../source/ref-changelog.md:1068 ../../source/ref-changelog.md:1130 +#: ../../source/ref-changelog.md:1149 ../../source/ref-changelog.md:1305 +#: ../../source/ref-changelog.md:1376 ../../source/ref-changelog.md:1413 +#: ../../source/ref-changelog.md:1456 +msgid "Incompatible changes" +msgstr "" + +#: ../../source/ref-changelog.md:112 msgid "" "**Remove `flower-superexec` command** " "([#4351](https://github.com/adap/flower/pull/4351))" msgstr "" -#: ../../source/ref-changelog.md:92 +#: ../../source/ref-changelog.md:114 msgid "" "The `flower-superexec` command, previously used to launch SuperExec, is " "no longer functional as SuperExec has been merged into SuperLink. " @@ -15836,63 +15918,63 @@ msgid "" " initiated." msgstr "" -#: ../../source/ref-changelog.md:94 +#: ../../source/ref-changelog.md:116 msgid "" "**Remove `flower-server-app` command** " "([#4490](https://github.com/adap/flower/pull/4490))" msgstr "" -#: ../../source/ref-changelog.md:96 +#: ../../source/ref-changelog.md:118 msgid "" "The `flower-server-app` command has been removed. To start a Flower app, " "please use the `flwr run` command instead." msgstr "" -#: ../../source/ref-changelog.md:98 +#: ../../source/ref-changelog.md:120 msgid "" "**Remove `app` argument from `flower-supernode` command** " "([#4497](https://github.com/adap/flower/pull/4497))" msgstr "" -#: ../../source/ref-changelog.md:100 +#: ../../source/ref-changelog.md:122 msgid "" "The usage of `flower-supernode ` has been removed. SuperNode " "will now load the FAB delivered by SuperLink, and it is no longer " "possible to directly specify an app directory." msgstr "" -#: ../../source/ref-changelog.md:102 +#: ../../source/ref-changelog.md:124 msgid "" "**Remove support for non-app simulations** " "([#4431](https://github.com/adap/flower/pull/4431))" msgstr "" -#: ../../source/ref-changelog.md:104 +#: ../../source/ref-changelog.md:126 msgid "" "The simulation engine (via `flower-simulation`) now exclusively supports " "passing an app." msgstr "" -#: ../../source/ref-changelog.md:106 +#: ../../source/ref-changelog.md:128 msgid "" "**Rename CLI arguments for `flower-superlink` command** " "([#4412](https://github.com/adap/flower/pull/4412))" msgstr "" -#: ../../source/ref-changelog.md:108 +#: ../../source/ref-changelog.md:130 msgid "" "The `--driver-api-address` argument has been renamed to `--serverappio-" "api-address` in the `flower-superlink` command to reflect the renaming of" " the `Driver` service to the `ServerAppIo` service." msgstr "" -#: ../../source/ref-changelog.md:110 +#: ../../source/ref-changelog.md:132 msgid "" "**Rename CLI arguments for `flwr-serverapp` and `flwr-clientapp` " "commands** ([#4495](https://github.com/adap/flower/pull/4495))" msgstr "" -#: ../../source/ref-changelog.md:112 +#: ../../source/ref-changelog.md:134 msgid "" "The CLI arguments have been renamed for clarity and consistency. " "Specifically, `--superlink` for `flwr-serverapp` is now `--serverappio-" @@ -15900,11 +15982,11 @@ msgid "" "`--clientappio-api-address`." msgstr "" -#: ../../source/ref-changelog.md:114 +#: ../../source/ref-changelog.md:136 msgid "v1.12.0 (2024-10-14)" msgstr "" -#: ../../source/ref-changelog.md:120 +#: ../../source/ref-changelog.md:142 msgid "" "`Adam Narozniak`, `Audris`, `Charles Beauville`, `Chong Shen Ng`, `Daniel" " J. Beutel`, `Daniel Nata Nugraha`, `Heng Pan`, `Javier`, `Jiahao Tan`, " @@ -15912,7 +15994,7 @@ msgid "" "Gao`, `xiliguguagua` " msgstr "" -#: ../../source/ref-changelog.md:124 +#: ../../source/ref-changelog.md:146 msgid "" "**Introduce SuperExec log streaming** " "([#3577](https://github.com/adap/flower/pull/3577), " @@ -15922,7 +16004,7 @@ msgid "" "[#3613](https://github.com/adap/flower/pull/3613))" msgstr "" -#: ../../source/ref-changelog.md:126 +#: ../../source/ref-changelog.md:148 msgid "" "Flower now supports log streaming from a remote SuperExec using the `flwr" " log` command. This new feature allows you to monitor logs from SuperExec" @@ -15930,7 +16012,7 @@ msgid "" "`)." msgstr "" -#: ../../source/ref-changelog.md:128 +#: ../../source/ref-changelog.md:150 msgid "" "**Improve `flwr new` templates** " "([#4291](https://github.com/adap/flower/pull/4291), " @@ -15940,14 +16022,14 @@ msgid "" "[#4295](https://github.com/adap/flower/pull/4295))" msgstr "" -#: ../../source/ref-changelog.md:130 +#: ../../source/ref-changelog.md:152 msgid "" "The `flwr new` command templates for MLX, NumPy, sklearn, JAX, and " "PyTorch have been updated to improve usability and consistency across " "frameworks." msgstr "" -#: ../../source/ref-changelog.md:132 +#: ../../source/ref-changelog.md:154 msgid "" "**Migrate ID handling to use unsigned 64-bit integers** " "([#4170](https://github.com/adap/flower/pull/4170), " @@ -15955,7 +16037,7 @@ msgid "" "[#4243](https://github.com/adap/flower/pull/4243))" msgstr "" -#: ../../source/ref-changelog.md:134 +#: ../../source/ref-changelog.md:156 msgid "" "Node IDs, run IDs, and related fields have been migrated from signed " "64-bit integers (`sint64`) to unsigned 64-bit integers (`uint64`). To " @@ -15966,13 +16048,13 @@ msgid "" "`uint64`." msgstr "" -#: ../../source/ref-changelog.md:136 +#: ../../source/ref-changelog.md:158 msgid "" "**Add Flower architecture explanation** " "([#3270](https://github.com/adap/flower/pull/3270))" msgstr "" -#: ../../source/ref-changelog.md:138 +#: ../../source/ref-changelog.md:160 msgid "" "A new [Flower architecture explainer](https://flower.ai/docs/framework" "/explanation-flower-architecture.html) page introduces Flower components " @@ -15980,13 +16062,13 @@ msgid "" "documentation if you're interested." msgstr "" -#: ../../source/ref-changelog.md:140 +#: ../../source/ref-changelog.md:162 msgid "" "**Introduce FedRep baseline** " "([#3790](https://github.com/adap/flower/pull/3790))" msgstr "" -#: ../../source/ref-changelog.md:142 +#: ../../source/ref-changelog.md:164 msgid "" "FedRep is a federated learning algorithm that learns shared data " "representations across clients while allowing each to maintain " @@ -15996,7 +16078,7 @@ msgid "" "([arxiv](https://arxiv.org/abs/2102.07078))" msgstr "" -#: ../../source/ref-changelog.md:144 +#: ../../source/ref-changelog.md:166 msgid "" "**Improve FlowerTune template and LLM evaluation pipelines** " "([#4286](https://github.com/adap/flower/pull/4286), " @@ -16017,7 +16099,7 @@ msgid "" "[#4327](https://github.com/adap/flower/pull/4327))" msgstr "" -#: ../../source/ref-changelog.md:146 +#: ../../source/ref-changelog.md:168 msgid "" "Refined evaluation pipelines, metrics, and documentation for the upcoming" " FlowerTune LLM Leaderboard across multiple domains including Finance, " @@ -16026,7 +16108,7 @@ msgid "" "exciting challenge!" msgstr "" -#: ../../source/ref-changelog.md:148 +#: ../../source/ref-changelog.md:170 msgid "" "**Enhance Docker Support and Documentation** " "([#4191](https://github.com/adap/flower/pull/4191), " @@ -16045,7 +16127,7 @@ msgid "" "[#4226](https://github.com/adap/flower/pull/4226))" msgstr "" -#: ../../source/ref-changelog.md:150 +#: ../../source/ref-changelog.md:172 msgid "" "Upgraded Ubuntu base image to 24.04, added SBOM and gcc to Docker images," " and comprehensively updated [Docker " @@ -16053,14 +16135,14 @@ msgid "" "including quickstart guides and distributed Docker Compose instructions." msgstr "" -#: ../../source/ref-changelog.md:152 +#: ../../source/ref-changelog.md:174 msgid "" "**Introduce Flower glossary** " "([#4165](https://github.com/adap/flower/pull/4165), " "[#4235](https://github.com/adap/flower/pull/4235))" msgstr "" -#: ../../source/ref-changelog.md:154 +#: ../../source/ref-changelog.md:176 msgid "" "Added the [Federated Learning glossary](https://flower.ai/glossary/) to " "the Flower repository, located under the `flower/glossary/` directory. " @@ -16070,7 +16152,7 @@ msgid "" "become a Flower contributor!" msgstr "" -#: ../../source/ref-changelog.md:156 +#: ../../source/ref-changelog.md:178 msgid "" "**Implement Message Time-to-Live (TTL)** " "([#3620](https://github.com/adap/flower/pull/3620), " @@ -16080,7 +16162,7 @@ msgid "" "[#3635](https://github.com/adap/flower/pull/3635))" msgstr "" -#: ../../source/ref-changelog.md:158 +#: ../../source/ref-changelog.md:180 msgid "" "Added comprehensive TTL support for messages in Flower's SuperLink. " "Messages are now automatically expired and cleaned up based on " @@ -16088,7 +16170,7 @@ msgid "" " default in the high-level API)." msgstr "" -#: ../../source/ref-changelog.md:160 +#: ../../source/ref-changelog.md:182 msgid "" "**Improve FAB handling** " "([#4303](https://github.com/adap/flower/pull/4303), " @@ -16097,14 +16179,14 @@ msgid "" "[#4304](https://github.com/adap/flower/pull/4304))" msgstr "" -#: ../../source/ref-changelog.md:162 +#: ../../source/ref-changelog.md:184 msgid "" "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." msgstr "" -#: ../../source/ref-changelog.md:164 +#: ../../source/ref-changelog.md:186 msgid "" "**Update documentation** " "([#3341](https://github.com/adap/flower/pull/3341), " @@ -16115,7 +16197,7 @@ msgid "" "[#3993](https://github.com/adap/flower/pull/3993))" msgstr "" -#: ../../source/ref-changelog.md:166 +#: ../../source/ref-changelog.md:188 msgid "" "Updated quickstart tutorials (PyTorch Lightning, TensorFlow, Hugging " "Face, Fastai) to use the new `flwr run` command and removed default title" @@ -16123,7 +16205,7 @@ msgid "" "added to FAQ." msgstr "" -#: ../../source/ref-changelog.md:168 +#: ../../source/ref-changelog.md:190 msgid "" "**Update example projects** " "([#3716](https://github.com/adap/flower/pull/3716), " @@ -16136,7 +16218,7 @@ msgid "" "[#4331](https://github.com/adap/flower/pull/4331))" msgstr "" -#: ../../source/ref-changelog.md:170 +#: ../../source/ref-changelog.md:192 msgid "" "Refreshed multiple example projects including vertical FL, PyTorch " "(advanced), Pandas, Secure Aggregation, and XGBoost examples. Optimized " @@ -16144,7 +16226,7 @@ msgid "" "simulation examples." msgstr "" -#: ../../source/ref-changelog.md:172 +#: ../../source/ref-changelog.md:194 msgid "" "**Update translations** " "([#4070](https://github.com/adap/flower/pull/4070), " @@ -16156,7 +16238,7 @@ msgid "" "[#4259](https://github.com/adap/flower/pull/4259))" msgstr "" -#: ../../source/ref-changelog.md:174 +#: ../../source/ref-changelog.md:196 msgid "" "**General improvements** " "([#4239](https://github.com/adap/flower/pull/4239), " @@ -16203,7 +16285,7 @@ msgid "" "[#4333](https://github.com/adap/flower/pull/4333))" msgstr "" -#: ../../source/ref-changelog.md:180 +#: ../../source/ref-changelog.md:202 msgid "" "**Drop Python 3.8 support and update minimum version to 3.9** " "([#4180](https://github.com/adap/flower/pull/4180), " @@ -16216,7 +16298,7 @@ msgid "" "[#4194](https://github.com/adap/flower/pull/4194))" msgstr "" -#: ../../source/ref-changelog.md:182 +#: ../../source/ref-changelog.md:204 msgid "" "Python 3.8 support was deprecated in Flower 1.9, and this release removes" " support. Flower now requires Python 3.9 or later (Python 3.11 is " @@ -16224,79 +16306,79 @@ msgid "" "minimum supported version. Flower now supports Python 3.9 to 3.12." msgstr "" -#: ../../source/ref-changelog.md:184 +#: ../../source/ref-changelog.md:206 msgid "v1.11.1 (2024-09-11)" msgstr "" -#: ../../source/ref-changelog.md:190 +#: ../../source/ref-changelog.md:212 msgid "" "`Charles Beauville`, `Chong Shen Ng`, `Daniel J. Beutel`, `Heng Pan`, " "`Javier`, `Robert Steiner`, `Yan Gao` " msgstr "" -#: ../../source/ref-changelog.md:192 +#: ../../source/ref-changelog.md:214 msgid "Improvements" msgstr "" -#: ../../source/ref-changelog.md:194 +#: ../../source/ref-changelog.md:216 msgid "" "**Implement** `keys/values/items` **methods for** `TypedDict` " "([#4146](https://github.com/adap/flower/pull/4146))" msgstr "" -#: ../../source/ref-changelog.md:196 +#: ../../source/ref-changelog.md:218 msgid "" "**Fix parsing of** `--executor-config` **if present** " "([#4125](https://github.com/adap/flower/pull/4125))" msgstr "" -#: ../../source/ref-changelog.md:198 +#: ../../source/ref-changelog.md:220 msgid "" "**Adjust framework name in templates docstrings** " "([#4127](https://github.com/adap/flower/pull/4127))" msgstr "" -#: ../../source/ref-changelog.md:200 +#: ../../source/ref-changelog.md:222 msgid "" "**Update** `flwr new` **Hugging Face template** " "([#4169](https://github.com/adap/flower/pull/4169))" msgstr "" -#: ../../source/ref-changelog.md:202 +#: ../../source/ref-changelog.md:224 msgid "" "**Fix** `flwr new` **FlowerTune template** " "([#4123](https://github.com/adap/flower/pull/4123))" msgstr "" -#: ../../source/ref-changelog.md:204 +#: ../../source/ref-changelog.md:226 msgid "" "**Add buffer time after** `ServerApp` **thread initialization** " "([#4119](https://github.com/adap/flower/pull/4119))" msgstr "" -#: ../../source/ref-changelog.md:206 +#: ../../source/ref-changelog.md:228 msgid "" "**Handle unsuitable resources for simulation** " "([#4143](https://github.com/adap/flower/pull/4143))" msgstr "" -#: ../../source/ref-changelog.md:208 +#: ../../source/ref-changelog.md:230 msgid "" "**Update example READMEs** " "([#4117](https://github.com/adap/flower/pull/4117))" msgstr "" -#: ../../source/ref-changelog.md:210 +#: ../../source/ref-changelog.md:232 msgid "" "**Update SuperNode authentication docs** " "([#4160](https://github.com/adap/flower/pull/4160))" msgstr "" -#: ../../source/ref-changelog.md:216 +#: ../../source/ref-changelog.md:238 msgid "v1.11.0 (2024-08-30)" msgstr "" -#: ../../source/ref-changelog.md:222 +#: ../../source/ref-changelog.md:244 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " "Beutel`, `Daniel Nata Nugraha`, `Danny`, `Edoardo Gabrielli`, `Heng Pan`," @@ -16305,7 +16387,7 @@ msgid "" "TOKEN_v1.11.0-->" msgstr "" -#: ../../source/ref-changelog.md:226 +#: ../../source/ref-changelog.md:248 msgid "" "**Deliver Flower App Bundle (FAB) to SuperLink and SuperNodes** " "([#4006](https://github.com/adap/flower/pull/4006), " @@ -16332,14 +16414,14 @@ msgid "" "[#3619](https://github.com/adap/flower/pull/3619))" msgstr "" -#: ../../source/ref-changelog.md:228 +#: ../../source/ref-changelog.md:250 msgid "" "Dynamic code updates are here! `flwr run` can now ship and install the " "latest version of your `ServerApp` and `ClientApp` to an already-running " "federation (SuperLink and SuperNodes)." msgstr "" -#: ../../source/ref-changelog.md:230 +#: ../../source/ref-changelog.md:252 msgid "" "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," @@ -16349,11 +16431,11 @@ msgid "" "projects!) dynamically." msgstr "" -#: ../../source/ref-changelog.md:232 +#: ../../source/ref-changelog.md:254 msgid "`flwr run` is all you need." msgstr "" -#: ../../source/ref-changelog.md:234 +#: ../../source/ref-changelog.md:256 msgid "" "**Introduce isolated** `ClientApp` **execution** " "([#3970](https://github.com/adap/flower/pull/3970), " @@ -16373,30 +16455,30 @@ msgid "" "[#4032](https://github.com/adap/flower/pull/4032))" msgstr "" -#: ../../source/ref-changelog.md:236 +#: ../../source/ref-changelog.md:258 msgid "" "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 the " "`ClientApp` can and cannot do." msgstr "" -#: ../../source/ref-changelog.md:238 +#: ../../source/ref-changelog.md:260 msgid "`flower-supernode` supports three `--isolation` modes:" msgstr "" -#: ../../source/ref-changelog.md:240 +#: ../../source/ref-changelog.md:262 msgid "" "Unset: The SuperNode runs the `ClientApp` in the same process (as in " "previous versions of Flower). This is the default mode." msgstr "" -#: ../../source/ref-changelog.md:241 +#: ../../source/ref-changelog.md:263 msgid "" "`--isolation=subprocess`: The SuperNode starts a subprocess to run the " "`ClientApp`." msgstr "" -#: ../../source/ref-changelog.md:242 +#: ../../source/ref-changelog.md:264 msgid "" "`--isolation=process`: The SuperNode expects an externally-managed " "process to run the `ClientApp`. This external process is not managed by " @@ -16405,7 +16487,7 @@ msgid "" "`flwr/clientapp` Docker image." msgstr "" -#: ../../source/ref-changelog.md:244 +#: ../../source/ref-changelog.md:266 msgid "" "**Improve Docker support for enterprise deployments** " "([#4050](https://github.com/adap/flower/pull/4050), " @@ -16416,17 +16498,17 @@ msgid "" "[#3722](https://github.com/adap/flower/pull/3722))" msgstr "" -#: ../../source/ref-changelog.md:246 +#: ../../source/ref-changelog.md:268 msgid "" "Flower 1.11 ships many Docker improvements that are especially useful for" " enterprise deployments:" msgstr "" -#: ../../source/ref-changelog.md:248 +#: ../../source/ref-changelog.md:270 msgid "`flwr/supernode` comes with a new Alpine Docker image." msgstr "" -#: ../../source/ref-changelog.md:249 +#: ../../source/ref-changelog.md:271 msgid "" "`flwr/clientapp` is a new image to be used with the `--isolation=process`" " option. In this mode, SuperNode and `ClientApp` run in two different " @@ -16436,19 +16518,19 @@ msgid "" "enterprise settings." msgstr "" -#: ../../source/ref-changelog.md:250 +#: ../../source/ref-changelog.md:272 msgid "" "New all-in-one Docker Compose enables you to easily start a full Flower " "Deployment Engine on a single machine." msgstr "" -#: ../../source/ref-changelog.md:251 +#: ../../source/ref-changelog.md:273 msgid "" "Completely new Docker documentation: " "https://flower.ai/docs/framework/docker/index.html" msgstr "" -#: ../../source/ref-changelog.md:253 +#: ../../source/ref-changelog.md:275 msgid "" "**Improve SuperNode authentication** " "([#4043](https://github.com/adap/flower/pull/4043), " @@ -16456,13 +16538,13 @@ msgid "" "[#4074](https://github.com/adap/flower/pull/4074))" msgstr "" -#: ../../source/ref-changelog.md:255 +#: ../../source/ref-changelog.md:277 msgid "" "SuperNode auth has been improved in several ways, including improved " "logging, improved testing, and improved error handling." msgstr "" -#: ../../source/ref-changelog.md:257 +#: ../../source/ref-changelog.md:279 msgid "" "**Update** `flwr new` **templates** " "([#3933](https://github.com/adap/flower/pull/3933), " @@ -16476,13 +16558,13 @@ msgid "" "[#4064](https://github.com/adap/flower/pull/4064))" msgstr "" -#: ../../source/ref-changelog.md:259 +#: ../../source/ref-changelog.md:281 msgid "" "All `flwr new` templates have been updated to show the latest recommended" " use of Flower APIs." msgstr "" -#: ../../source/ref-changelog.md:261 +#: ../../source/ref-changelog.md:283 msgid "" "**Improve Simulation Engine** " "([#4095](https://github.com/adap/flower/pull/4095), " @@ -16494,14 +16576,14 @@ msgid "" "[#3988](https://github.com/adap/flower/pull/3988))" msgstr "" -#: ../../source/ref-changelog.md:263 +#: ../../source/ref-changelog.md:285 msgid "" "The Flower Simulation Engine comes with several updates, including " "improved run config support, verbose logging, simulation backend " "configuration via `flwr run`, and more." msgstr "" -#: ../../source/ref-changelog.md:265 +#: ../../source/ref-changelog.md:287 msgid "" "**Improve** `RecordSet` " "([#4052](https://github.com/adap/flower/pull/4052), " @@ -16509,7 +16591,7 @@ msgid "" "[#4016](https://github.com/adap/flower/pull/4016))" msgstr "" -#: ../../source/ref-changelog.md:267 +#: ../../source/ref-changelog.md:289 msgid "" "`RecordSet` is the core object to exchange model parameters, " "configuration values and metrics between `ClientApp` and `ServerApp`. " @@ -16517,7 +16599,7 @@ msgid "" "related `*Record` types." msgstr "" -#: ../../source/ref-changelog.md:269 +#: ../../source/ref-changelog.md:291 msgid "" "**Update documentation** " "([#3972](https://github.com/adap/flower/pull/3972), " @@ -16536,14 +16618,14 @@ msgid "" "[#3916](https://github.com/adap/flower/pull/3916))" msgstr "" -#: ../../source/ref-changelog.md:271 +#: ../../source/ref-changelog.md:293 msgid "" "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." msgstr "" -#: ../../source/ref-changelog.md:273 +#: ../../source/ref-changelog.md:295 msgid "" "**Migrate code example to use new Flower APIs** " "([#3758](https://github.com/adap/flower/pull/3758), " @@ -16569,11 +16651,11 @@ msgid "" "[#3313](https://github.com/adap/flower/pull/3313))" msgstr "" -#: ../../source/ref-changelog.md:275 +#: ../../source/ref-changelog.md:297 msgid "Many code examples have been migrated to use new Flower APIs." msgstr "" -#: ../../source/ref-changelog.md:277 +#: ../../source/ref-changelog.md:299 msgid "" "**Update Flower framework, framework internals and quality " "infrastructure** ([#4018](https://github.com/adap/flower/pull/4018), " @@ -16615,13 +16697,13 @@ msgid "" "[#4038](https://github.com/adap/flower/pull/4038))" msgstr "" -#: ../../source/ref-changelog.md:283 +#: ../../source/ref-changelog.md:305 msgid "" "**Deprecate accessing `Context` via `Client.context`** " "([#3797](https://github.com/adap/flower/pull/3797))" msgstr "" -#: ../../source/ref-changelog.md:285 +#: ../../source/ref-changelog.md:307 msgid "" "Now that both `client_fn` and `server_fn` receive a `Context` object, " "accessing `Context` via `Client.context` is deprecated. `Client.context` " @@ -16630,7 +16712,7 @@ msgid "" " instance in `client_fn`:" msgstr "" -#: ../../source/ref-changelog.md:294 +#: ../../source/ref-changelog.md:316 msgid "" "**Update CLIs to accept an app directory instead of** `ClientApp` **and**" " `ServerApp` ([#3952](https://github.com/adap/flower/pull/3952), " @@ -16638,7 +16720,7 @@ msgid "" "[#3850](https://github.com/adap/flower/pull/3850))" msgstr "" -#: ../../source/ref-changelog.md:296 +#: ../../source/ref-changelog.md:318 msgid "" "The CLI commands `flower-supernode` and `flower-server-app` now accept an" " app directory as argument (instead of references to a `ClientApp` or " @@ -16648,49 +16730,49 @@ msgid "" "`flwr new`." msgstr "" -#: ../../source/ref-changelog.md:298 +#: ../../source/ref-changelog.md:320 msgid "" "**Disable** `flower-client-app` **CLI command** " "([#4022](https://github.com/adap/flower/pull/4022))" msgstr "" -#: ../../source/ref-changelog.md:300 +#: ../../source/ref-changelog.md:322 msgid "`flower-client-app` has been disabled. Use `flower-supernode` instead." msgstr "" -#: ../../source/ref-changelog.md:302 +#: ../../source/ref-changelog.md:324 msgid "" "**Use spaces instead of commas for separating config args** " "([#4000](https://github.com/adap/flower/pull/4000))" msgstr "" -#: ../../source/ref-changelog.md:304 +#: ../../source/ref-changelog.md:326 msgid "" "When passing configs (run config, node config) to Flower, you now need to" " separate key-value pairs using spaces instead of commas. For example:" msgstr "" -#: ../../source/ref-changelog.md:310 +#: ../../source/ref-changelog.md:332 msgid "Previously, you could pass configs using commas, like this:" msgstr "" -#: ../../source/ref-changelog.md:316 +#: ../../source/ref-changelog.md:338 msgid "" "**Remove** `flwr example` **CLI command** " "([#4084](https://github.com/adap/flower/pull/4084))" msgstr "" -#: ../../source/ref-changelog.md:318 +#: ../../source/ref-changelog.md:340 msgid "" "The experimental `flwr example` CLI command has been removed. Use `flwr " "new` to generate a project and then run it using `flwr run`." msgstr "" -#: ../../source/ref-changelog.md:320 +#: ../../source/ref-changelog.md:342 msgid "v1.10.0 (2024-07-24)" msgstr "" -#: ../../source/ref-changelog.md:326 +#: ../../source/ref-changelog.md:348 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " "Beutel`, `Daniel Nata Nugraha`, `Danny`, `Gustavo Bertoli`, `Heng Pan`, " @@ -16699,7 +16781,7 @@ msgid "" "---TOKEN_v1.10.0-->" msgstr "" -#: ../../source/ref-changelog.md:330 +#: ../../source/ref-changelog.md:352 msgid "" "**Introduce** `flwr run` **(beta)** " "([#3810](https://github.com/adap/flower/pull/3810), " @@ -16713,7 +16795,7 @@ msgid "" "[#3819](https://github.com/adap/flower/pull/3819))" msgstr "" -#: ../../source/ref-changelog.md:332 +#: ../../source/ref-changelog.md:354 msgid "" "Flower 1.10 ships the first beta release of the new `flwr run` command. " "`flwr run` can run different projects using `flwr run path/to/project`, " @@ -16726,7 +16808,7 @@ msgid "" "`flwr new` to generate a project and then run it using `flwr run`." msgstr "" -#: ../../source/ref-changelog.md:334 +#: ../../source/ref-changelog.md:356 msgid "" "**Introduce run config** " "([#3751](https://github.com/adap/flower/pull/3751), " @@ -16746,7 +16828,7 @@ msgid "" "[#3815](https://github.com/adap/flower/pull/3815))" msgstr "" -#: ../../source/ref-changelog.md:336 +#: ../../source/ref-changelog.md:358 msgid "" "The new run config feature allows you to run your Flower project in " "different configurations without having to change a single line of code. " @@ -16759,7 +16841,7 @@ msgid "" "new project using `flwr new` to see run config in action." msgstr "" -#: ../../source/ref-changelog.md:338 +#: ../../source/ref-changelog.md:360 msgid "" "**Generalize** `client_fn` **signature to** `client_fn(context: Context) " "-> Client` ([#3779](https://github.com/adap/flower/pull/3779), " @@ -16768,7 +16850,7 @@ msgid "" "[#3696](https://github.com/adap/flower/pull/3696))" msgstr "" -#: ../../source/ref-changelog.md:340 +#: ../../source/ref-changelog.md:362 msgid "" "The `client_fn` signature has been generalized to `client_fn(context: " "Context) -> Client`. It now receives a `Context` object instead of the " @@ -16778,14 +16860,14 @@ msgid "" "system." msgstr "" -#: ../../source/ref-changelog.md:342 +#: ../../source/ref-changelog.md:364 msgid "" "The previous signature `client_fn(cid: str)` is now deprecated and " "support for it will be removed in a future release. Use " "`client_fn(context: Context) -> Client` everywhere." msgstr "" -#: ../../source/ref-changelog.md:344 +#: ../../source/ref-changelog.md:366 msgid "" "**Introduce new** `server_fn(context)` " "([#3773](https://github.com/adap/flower/pull/3773), " @@ -16793,7 +16875,7 @@ msgid "" "[#3771](https://github.com/adap/flower/pull/3771))" msgstr "" -#: ../../source/ref-changelog.md:346 +#: ../../source/ref-changelog.md:368 msgid "" "In addition to the new `client_fn(context:Context)`, a new " "`server_fn(context: Context) -> ServerAppComponents` can now be passed to" @@ -16802,7 +16884,7 @@ msgid "" "build a configurable `ServerApp`." msgstr "" -#: ../../source/ref-changelog.md:348 +#: ../../source/ref-changelog.md:370 msgid "" "**Relaunch all** `flwr new` **templates** " "([#3877](https://github.com/adap/flower/pull/3877), " @@ -16814,7 +16896,7 @@ msgid "" "[#3760](https://github.com/adap/flower/pull/3760))" msgstr "" -#: ../../source/ref-changelog.md:350 +#: ../../source/ref-changelog.md:372 msgid "" "All `flwr new` templates have been significantly updated to showcase new " "Flower features and best practices. This includes using `flwr run` and " @@ -16823,13 +16905,13 @@ msgid "" "run` it." msgstr "" -#: ../../source/ref-changelog.md:352 +#: ../../source/ref-changelog.md:374 msgid "" "**Introduce** `flower-supernode` **(preview)** " "([#3353](https://github.com/adap/flower/pull/3353))" msgstr "" -#: ../../source/ref-changelog.md:354 +#: ../../source/ref-changelog.md:376 msgid "" "The new `flower-supernode` CLI is here to replace `flower-client-app`. " "`flower-supernode` brings full multi-app support to the Flower client-" @@ -16838,7 +16920,7 @@ msgid "" "`client_fn(context: Context)` signature)." msgstr "" -#: ../../source/ref-changelog.md:356 +#: ../../source/ref-changelog.md:378 msgid "" "**Introduce node config** " "([#3782](https://github.com/adap/flower/pull/3782), " @@ -16847,7 +16929,7 @@ msgid "" "[#3886](https://github.com/adap/flower/pull/3886))" msgstr "" -#: ../../source/ref-changelog.md:358 +#: ../../source/ref-changelog.md:380 msgid "" "A new node config feature allows you to pass a static configuration to " "the SuperNode. This configuration is read-only and available to every " @@ -16855,7 +16937,7 @@ msgid "" "config via `Context` (`context.node_config`)." msgstr "" -#: ../../source/ref-changelog.md:360 +#: ../../source/ref-changelog.md:382 msgid "" "**Introduce SuperExec (experimental)** " "([#3605](https://github.com/adap/flower/pull/3605), " @@ -16876,26 +16958,26 @@ msgid "" "[#3629](https://github.com/adap/flower/pull/3629))" msgstr "" -#: ../../source/ref-changelog.md:362 +#: ../../source/ref-changelog.md:384 msgid "" "This is the first experimental release of Flower SuperExec, a new service" " that executes your runs. It's not ready for production deployment just " "yet, but don't hesitate to give it a try if you're interested." msgstr "" -#: ../../source/ref-changelog.md:364 +#: ../../source/ref-changelog.md:386 msgid "" "**Add new federated learning with tabular data example** " "([#3568](https://github.com/adap/flower/pull/3568))" msgstr "" -#: ../../source/ref-changelog.md:366 +#: ../../source/ref-changelog.md:388 msgid "" "A new code example exemplifies a federated learning setup using the " "Flower framework on the Adult Census Income tabular dataset." msgstr "" -#: ../../source/ref-changelog.md:368 +#: ../../source/ref-changelog.md:390 msgid "" "**Create generic adapter layer (preview)** " "([#3538](https://github.com/adap/flower/pull/3538), " @@ -16903,7 +16985,7 @@ msgid "" "[#3540](https://github.com/adap/flower/pull/3540))" msgstr "" -#: ../../source/ref-changelog.md:370 +#: ../../source/ref-changelog.md:392 msgid "" "A new generic gRPC adapter layer allows 3rd-party frameworks to integrate" " with Flower in a transparent way. This makes Flower more modular and " @@ -16911,7 +16993,7 @@ msgid "" "platforms." msgstr "" -#: ../../source/ref-changelog.md:372 +#: ../../source/ref-changelog.md:394 msgid "" "**Refactor Flower Simulation Engine** " "([#3581](https://github.com/adap/flower/pull/3581), " @@ -16927,7 +17009,7 @@ msgid "" "[#3469](https://github.com/adap/flower/pull/3469))" msgstr "" -#: ../../source/ref-changelog.md:374 +#: ../../source/ref-changelog.md:396 msgid "" "The Simulation Engine was significantly refactored. This results in " "faster and more stable simulations. It is also the foundation for " @@ -16935,31 +17017,31 @@ msgid "" "configurability in federated learning simulations." msgstr "" -#: ../../source/ref-changelog.md:376 +#: ../../source/ref-changelog.md:398 msgid "" "**Optimize Docker containers** " "([#3591](https://github.com/adap/flower/pull/3591))" msgstr "" -#: ../../source/ref-changelog.md:378 +#: ../../source/ref-changelog.md:400 msgid "" "Flower Docker containers were optimized and updated to use that latest " "Flower framework features." msgstr "" -#: ../../source/ref-changelog.md:380 +#: ../../source/ref-changelog.md:402 msgid "" "**Improve logging** ([#3776](https://github.com/adap/flower/pull/3776), " "[#3789](https://github.com/adap/flower/pull/3789))" msgstr "" -#: ../../source/ref-changelog.md:382 +#: ../../source/ref-changelog.md:404 msgid "" "Improved logging aims to be more concise and helpful to show you the " "details you actually care about." msgstr "" -#: ../../source/ref-changelog.md:384 +#: ../../source/ref-changelog.md:406 msgid "" "**Refactor framework internals** " "([#3621](https://github.com/adap/flower/pull/3621), " @@ -16973,13 +17055,17 @@ msgid "" "[#3569](https://github.com/adap/flower/pull/3569))" msgstr "" -#: ../../source/ref-changelog.md:390 +#: ../../source/ref-changelog.md:410 +msgid "Documentation improvements" +msgstr "" + +#: ../../source/ref-changelog.md:412 msgid "" "**Add 🇰🇷 Korean translations** " "([#3680](https://github.com/adap/flower/pull/3680))" msgstr "" -#: ../../source/ref-changelog.md:392 +#: ../../source/ref-changelog.md:414 msgid "" "**Update translations** " "([#3586](https://github.com/adap/flower/pull/3586), " @@ -16993,7 +17079,7 @@ msgid "" "[#3631](https://github.com/adap/flower/pull/3631))" msgstr "" -#: ../../source/ref-changelog.md:394 +#: ../../source/ref-changelog.md:416 msgid "" "**Update documentation** " "([#3864](https://github.com/adap/flower/pull/3864), " @@ -17007,18 +17093,18 @@ msgid "" "[#3707](https://github.com/adap/flower/pull/3707))" msgstr "" -#: ../../source/ref-changelog.md:396 +#: ../../source/ref-changelog.md:418 msgid "" "Updated documentation includes new install instructions for different " "shells, a new Flower Code Examples documentation landing page, new `flwr`" " CLI docs and an updated federated XGBoost code example." msgstr "" -#: ../../source/ref-changelog.md:400 +#: ../../source/ref-changelog.md:422 msgid "**Deprecate** `client_fn(cid: str)`" msgstr "" -#: ../../source/ref-changelog.md:402 +#: ../../source/ref-changelog.md:424 msgid "" "`client_fn` used to have a signature `client_fn(cid: str) -> Client`. " "This signature is now deprecated. Use the new signature " @@ -17031,13 +17117,13 @@ msgid "" " the dataset on each simulated or deployed SuperNode." msgstr "" -#: ../../source/ref-changelog.md:404 +#: ../../source/ref-changelog.md:426 msgid "" "**Deprecate passing** `Server/ServerConfig/Strategy/ClientManager` **to**" " `ServerApp` **directly**" msgstr "" -#: ../../source/ref-changelog.md:406 +#: ../../source/ref-changelog.md:428 msgid "" "Creating `ServerApp` using `ServerApp(config=config, strategy=strategy)` " "is now deprecated. Instead of passing " @@ -17050,13 +17136,13 @@ msgid "" " the `run_config`)." msgstr "" -#: ../../source/ref-changelog.md:410 +#: ../../source/ref-changelog.md:432 msgid "" "**Remove support for `client_ids` in `start_simulation`** " "([#3699](https://github.com/adap/flower/pull/3699))" msgstr "" -#: ../../source/ref-changelog.md:412 +#: ../../source/ref-changelog.md:434 msgid "" "The (rarely used) feature that allowed passing custom `client_ids` to the" " `start_simulation` function was removed. This removal is part of a " @@ -17064,24 +17150,24 @@ msgid "" "internals work in simulation and deployment." msgstr "" -#: ../../source/ref-changelog.md:414 +#: ../../source/ref-changelog.md:436 msgid "" "**Remove `flower-driver-api` and `flower-fleet-api`** " "([#3418](https://github.com/adap/flower/pull/3418))" msgstr "" -#: ../../source/ref-changelog.md:416 +#: ../../source/ref-changelog.md:438 msgid "" "The two deprecated CLI commands `flower-driver-api` and `flower-fleet-" "api` were removed in an effort to streamline the SuperLink developer " "experience. Use `flower-superlink` instead." msgstr "" -#: ../../source/ref-changelog.md:418 +#: ../../source/ref-changelog.md:440 msgid "v1.9.0 (2024-06-10)" msgstr "" -#: ../../source/ref-changelog.md:424 +#: ../../source/ref-changelog.md:446 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " "Beutel`, `Daniel Nata Nugraha`, `Heng Pan`, `Javier`, `Mahdi Beitollahi`," @@ -17089,7 +17175,7 @@ msgid "" "---TOKEN_v1.9.0-->" msgstr "" -#: ../../source/ref-changelog.md:428 +#: ../../source/ref-changelog.md:450 msgid "" "**Introduce built-in authentication (preview)** " "([#2946](https://github.com/adap/flower/pull/2946), " @@ -17108,7 +17194,7 @@ msgid "" "[#3357](https://github.com/adap/flower/pull/3357))" msgstr "" -#: ../../source/ref-changelog.md:430 +#: ../../source/ref-changelog.md:452 msgid "" "Flower 1.9 introduces the first build-in version of client node " "authentication. In previous releases, users often wrote glue code to " @@ -17120,14 +17206,14 @@ msgid "" "authentication) help you to get started." msgstr "" -#: ../../source/ref-changelog.md:432 +#: ../../source/ref-changelog.md:454 msgid "" "This is the first preview release of the Flower-native authentication " "system. Many additional features are on the roadmap for upcoming Flower " "releases - stay tuned." msgstr "" -#: ../../source/ref-changelog.md:434 +#: ../../source/ref-changelog.md:456 msgid "" "**Introduce end-to-end Docker support** " "([#3483](https://github.com/adap/flower/pull/3483), " @@ -17144,7 +17230,7 @@ msgid "" "[#3290](https://github.com/adap/flower/pull/3290))" msgstr "" -#: ../../source/ref-changelog.md:436 +#: ../../source/ref-changelog.md:458 msgid "" "Full Flower Next Docker support is here! With the release of Flower 1.9, " "Flower provides stable Docker images for the Flower SuperLink, the Flower" @@ -17154,7 +17240,7 @@ msgid "" "docker.html) to get stated." msgstr "" -#: ../../source/ref-changelog.md:438 +#: ../../source/ref-changelog.md:460 msgid "" "**Re-architect Flower Next simulation engine** " "([#3307](https://github.com/adap/flower/pull/3307), " @@ -17167,7 +17253,7 @@ msgid "" "[#3326](https://github.com/adap/flower/pull/3326))" msgstr "" -#: ../../source/ref-changelog.md:440 +#: ../../source/ref-changelog.md:462 msgid "" "Flower Next simulations now use a new in-memory `Driver` that improves " "the reliability of simulations, especially in notebook environments. This" @@ -17175,7 +17261,7 @@ msgid "" "simulation architecture." msgstr "" -#: ../../source/ref-changelog.md:442 +#: ../../source/ref-changelog.md:464 msgid "" "**Upgrade simulation engine** " "([#3354](https://github.com/adap/flower/pull/3354), " @@ -17187,20 +17273,20 @@ msgid "" "[#3494](https://github.com/adap/flower/pull/3494))" msgstr "" -#: ../../source/ref-changelog.md:444 +#: ../../source/ref-changelog.md:466 msgid "" "The Flower Next simulation engine comes with improved and configurable " "logging. The Ray-based simulation backend in Flower 1.9 was updated to " "use Ray 2.10." msgstr "" -#: ../../source/ref-changelog.md:446 +#: ../../source/ref-changelog.md:468 msgid "" "**Introduce FedPFT baseline** " "([#3268](https://github.com/adap/flower/pull/3268))" msgstr "" -#: ../../source/ref-changelog.md:448 +#: ../../source/ref-changelog.md:470 msgid "" "FedPFT allows you to perform one-shot Federated Learning by leveraging " "widely available foundational models, dramatically reducing communication" @@ -17211,7 +17297,7 @@ msgid "" "([arxiv](https://arxiv.org/abs/2402.01862))" msgstr "" -#: ../../source/ref-changelog.md:450 +#: ../../source/ref-changelog.md:472 msgid "" "**Launch additional** `flwr new` **templates for Apple MLX, Hugging Face " "Transformers, scikit-learn and TensorFlow** " @@ -17223,7 +17309,7 @@ msgid "" "[#3287](https://github.com/adap/flower/pull/3287))" msgstr "" -#: ../../source/ref-changelog.md:452 +#: ../../source/ref-changelog.md:474 msgid "" "The `flwr` CLI's `flwr new` command is starting to become everone's " "favorite way of creating new Flower projects. This release introduces " @@ -17232,7 +17318,7 @@ msgid "" "also received updates." msgstr "" -#: ../../source/ref-changelog.md:454 +#: ../../source/ref-changelog.md:476 msgid "" "**Refine** `RecordSet` **API** " "([#3209](https://github.com/adap/flower/pull/3209), " @@ -17243,14 +17329,14 @@ msgid "" "[#3368](https://github.com/adap/flower/pull/3368))" msgstr "" -#: ../../source/ref-changelog.md:456 +#: ../../source/ref-changelog.md:478 msgid "" "`RecordSet` is part of the Flower Next low-level API preview release. In " "Flower 1.9, `RecordSet` received a number of usability improvements that " "make it easier to build `RecordSet`-based `ServerApp`s and `ClientApp`s." msgstr "" -#: ../../source/ref-changelog.md:458 +#: ../../source/ref-changelog.md:480 msgid "" "**Beautify logging** ([#3379](https://github.com/adap/flower/pull/3379), " "[#3430](https://github.com/adap/flower/pull/3430), " @@ -17259,13 +17345,13 @@ msgid "" "[#3433](https://github.com/adap/flower/pull/3433))" msgstr "" -#: ../../source/ref-changelog.md:460 +#: ../../source/ref-changelog.md:482 msgid "" "Logs received a substantial update. Not only are logs now much nicer to " "look at, but they are also more configurable." msgstr "" -#: ../../source/ref-changelog.md:462 +#: ../../source/ref-changelog.md:484 msgid "" "**Improve reliability** " "([#3564](https://github.com/adap/flower/pull/3564), " @@ -17278,27 +17364,27 @@ msgid "" "[#3372](https://github.com/adap/flower/pull/3372))" msgstr "" -#: ../../source/ref-changelog.md:464 +#: ../../source/ref-changelog.md:486 msgid "" "Flower 1.9 includes reliability improvements across many parts of the " "system. One example is a much improved SuperNode shutdown procedure." msgstr "" -#: ../../source/ref-changelog.md:466 +#: ../../source/ref-changelog.md:488 msgid "" "**Update Swift and C++ SDKs** " "([#3321](https://github.com/adap/flower/pull/3321), " "[#2763](https://github.com/adap/flower/pull/2763))" msgstr "" -#: ../../source/ref-changelog.md:468 +#: ../../source/ref-changelog.md:490 msgid "" "In the C++ SDK, communication-related code is now separate from main " "client logic. A new abstract class `Communicator` has been introduced " "alongside a gRPC implementation of it." msgstr "" -#: ../../source/ref-changelog.md:470 +#: ../../source/ref-changelog.md:492 msgid "" "**Improve testing, tooling and CI/CD infrastructure** " "([#3294](https://github.com/adap/flower/pull/3294), " @@ -17332,13 +17418,13 @@ msgid "" "[#3271](https://github.com/adap/flower/pull/3271))" msgstr "" -#: ../../source/ref-changelog.md:472 +#: ../../source/ref-changelog.md:494 msgid "" "As always, the Flower tooling, testing, and CI/CD infrastructure has " "received many updates." msgstr "" -#: ../../source/ref-changelog.md:474 +#: ../../source/ref-changelog.md:496 msgid "" "**Improve documentation** " "([#3530](https://github.com/adap/flower/pull/3530), " @@ -17363,32 +17449,32 @@ msgid "" "[#3274](https://github.com/adap/flower/pull/3274))" msgstr "" -#: ../../source/ref-changelog.md:476 +#: ../../source/ref-changelog.md:498 msgid "" "As always, the Flower documentation has received many updates. Notable " "new pages include:" msgstr "" -#: ../../source/ref-changelog.md:478 +#: ../../source/ref-changelog.md:500 msgid "" "[How-to upgrate to Flower Next (Flower Next migration " "guide)](https://flower.ai/docs/framework/how-to-upgrade-to-flower-" "next.html)" msgstr "" -#: ../../source/ref-changelog.md:480 +#: ../../source/ref-changelog.md:502 msgid "" "[How-to run Flower using Docker](https://flower.ai/docs/framework/how-to-" "run-flower-using-docker.html)" msgstr "" -#: ../../source/ref-changelog.md:482 +#: ../../source/ref-changelog.md:504 msgid "" "[Flower Mods reference](https://flower.ai/docs/framework/ref-" "api/flwr.client.mod.html#module-flwr.client.mod)" msgstr "" -#: ../../source/ref-changelog.md:484 +#: ../../source/ref-changelog.md:506 msgid "" "**General updates to Flower Examples** " "([#3205](https://github.com/adap/flower/pull/3205), " @@ -17411,11 +17497,11 @@ msgid "" "[#3269](https://github.com/adap/flower/pull/3269))" msgstr "" -#: ../../source/ref-changelog.md:486 +#: ../../source/ref-changelog.md:508 msgid "As always, Flower code examples have received many updates." msgstr "" -#: ../../source/ref-changelog.md:488 +#: ../../source/ref-changelog.md:510 msgid "" "**General improvements** " "([#3532](https://github.com/adap/flower/pull/3532), " @@ -17454,45 +17540,45 @@ msgid "" "[#3261](https://github.com/adap/flower/pull/3261))" msgstr "" -#: ../../source/ref-changelog.md:492 +#: ../../source/ref-changelog.md:514 msgid "**Deprecate Python 3.8 support**" msgstr "" -#: ../../source/ref-changelog.md:494 +#: ../../source/ref-changelog.md:516 msgid "" "Python 3.8 will stop receiving security fixes in [October " "2024](https://devguide.python.org/versions/). Support for Python 3.8 is " "now deprecated and will be removed in an upcoming release." msgstr "" -#: ../../source/ref-changelog.md:496 +#: ../../source/ref-changelog.md:518 msgid "" "**Deprecate (experimental)** `flower-driver-api` **and** `flower-fleet-" "api` ([#3416](https://github.com/adap/flower/pull/3416), " "[#3420](https://github.com/adap/flower/pull/3420))" msgstr "" -#: ../../source/ref-changelog.md:498 +#: ../../source/ref-changelog.md:520 msgid "" "Flower 1.9 deprecates the two (experimental) commands `flower-driver-api`" " and `flower-fleet-api`. Both commands will be removed in an upcoming " "release. Use `flower-superlink` instead." msgstr "" -#: ../../source/ref-changelog.md:500 +#: ../../source/ref-changelog.md:522 msgid "" "**Deprecate** `--server` **in favor of** `--superlink` " "([#3518](https://github.com/adap/flower/pull/3518))" msgstr "" -#: ../../source/ref-changelog.md:502 +#: ../../source/ref-changelog.md:524 msgid "" "The commands `flower-server-app` and `flower-client-app` should use " "`--superlink` instead of the now deprecated `--server`. Support for " "`--server` will be removed in a future release." msgstr "" -#: ../../source/ref-changelog.md:506 +#: ../../source/ref-changelog.md:528 msgid "" "**Replace** `flower-superlink` **CLI option** `--certificates` **with** " "`--ssl-ca-certfile` **,** `--ssl-certfile` **and** `--ssl-keyfile` " @@ -17500,7 +17586,7 @@ msgid "" "[#3408](https://github.com/adap/flower/pull/3408))" msgstr "" -#: ../../source/ref-changelog.md:508 +#: ../../source/ref-changelog.md:530 msgid "" "SSL-related `flower-superlink` CLI arguments were restructured in an " "incompatible way. Instead of passing a single `--certificates` flag with " @@ -17510,26 +17596,26 @@ msgid "" "connections.html) documentation page for details." msgstr "" -#: ../../source/ref-changelog.md:510 +#: ../../source/ref-changelog.md:532 msgid "" "**Remove SuperLink** `--vce` **option** " "([#3513](https://github.com/adap/flower/pull/3513))" msgstr "" -#: ../../source/ref-changelog.md:512 +#: ../../source/ref-changelog.md:534 msgid "" "Instead of separately starting a SuperLink and a `ServerApp` for " "simulation, simulations must now be started using the single `flower-" "simulation` command." msgstr "" -#: ../../source/ref-changelog.md:514 +#: ../../source/ref-changelog.md:536 msgid "" "**Merge** `--grpc-rere` **and** `--rest` **SuperLink options** " "([#3527](https://github.com/adap/flower/pull/3527))" msgstr "" -#: ../../source/ref-changelog.md:516 +#: ../../source/ref-changelog.md:538 msgid "" "To simplify the usage of `flower-superlink`, previously separate sets of " "CLI options for gRPC and REST were merged into one unified set of " @@ -17538,11 +17624,11 @@ msgid "" "details." msgstr "" -#: ../../source/ref-changelog.md:518 +#: ../../source/ref-changelog.md:540 msgid "v1.8.0 (2024-04-03)" msgstr "" -#: ../../source/ref-changelog.md:524 +#: ../../source/ref-changelog.md:546 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Daniel J. Beutel`, `Daniel Nata " "Nugraha`, `Danny`, `Gustavo Bertoli`, `Heng Pan`, `Ikko Eltociear " @@ -17551,7 +17637,7 @@ msgid "" "`tabdar-khan` " msgstr "" -#: ../../source/ref-changelog.md:528 +#: ../../source/ref-changelog.md:550 msgid "" "**Introduce Flower Next high-level API (stable)** " "([#3002](https://github.com/adap/flower/pull/3002), " @@ -17581,7 +17667,7 @@ msgid "" "[#3197](https://github.com/adap/flower/pull/3197))" msgstr "" -#: ../../source/ref-changelog.md:530 +#: ../../source/ref-changelog.md:552 msgid "" "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. " @@ -17595,7 +17681,7 @@ msgid "" "projects that use `Strategy`, `NumPyClient` & co." msgstr "" -#: ../../source/ref-changelog.md:532 +#: ../../source/ref-changelog.md:554 msgid "" "**Introduce Flower Next low-level API (preview)** " "([#3062](https://github.com/adap/flower/pull/3062), " @@ -17603,7 +17689,7 @@ msgid "" "[#3069](https://github.com/adap/flower/pull/3069))" msgstr "" -#: ../../source/ref-changelog.md:534 +#: ../../source/ref-changelog.md:556 msgid "" "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 " @@ -17620,7 +17706,7 @@ msgid "" "custom SMPC protocols, to name just a few." msgstr "" -#: ../../source/ref-changelog.md:536 +#: ../../source/ref-changelog.md:558 msgid "" "**Introduce Flower Mods (preview)** " "([#3054](https://github.com/adap/flower/pull/3054), " @@ -17628,7 +17714,7 @@ msgid "" "[#3083](https://github.com/adap/flower/pull/3083))" msgstr "" -#: ../../source/ref-changelog.md:538 +#: ../../source/ref-changelog.md:560 msgid "" "Flower Modifiers (we call them Mods) can intercept messages and analyze, " "edit or handle them directly. Mods can be used to develop pluggable " @@ -17640,7 +17726,7 @@ msgid "" "can already use it to experiment with arbirtrary SMPC protocols." msgstr "" -#: ../../source/ref-changelog.md:540 +#: ../../source/ref-changelog.md:562 msgid "" "**Fine-tune LLMs with LLM FlowerTune** " "([#3029](https://github.com/adap/flower/pull/3029), " @@ -17652,7 +17738,7 @@ msgid "" "[#3172](https://github.com/adap/flower/pull/3172))" msgstr "" -#: ../../source/ref-changelog.md:542 +#: ../../source/ref-changelog.md:564 msgid "" "We are introducing LLM FlowerTune, an introductory example that " "demonstrates federated LLM fine-tuning of pre-trained Llama2 models on " @@ -17662,7 +17748,7 @@ msgid "" "-llm-flowertune-federated-llm-finetuning-with-flower/) for more details." msgstr "" -#: ../../source/ref-changelog.md:544 +#: ../../source/ref-changelog.md:566 msgid "" "**Introduce built-in Differential Privacy (preview)** " "([#2798](https://github.com/adap/flower/pull/2798), " @@ -17676,7 +17762,7 @@ msgid "" "[#3074](https://github.com/adap/flower/pull/3074))" msgstr "" -#: ../../source/ref-changelog.md:546 +#: ../../source/ref-changelog.md:568 msgid "" "Built-in Differential Privacy is here! Flower supports both central and " "local differential privacy (DP). Central DP can be configured with either" @@ -17689,7 +17775,7 @@ msgid "" "/how-to-use-differential-privacy.html) in Flower." msgstr "" -#: ../../source/ref-changelog.md:548 +#: ../../source/ref-changelog.md:570 msgid "" "**Introduce built-in Secure Aggregation (preview)** " "([#3120](https://github.com/adap/flower/pull/3120), " @@ -17697,7 +17783,7 @@ msgid "" "[#3108](https://github.com/adap/flower/pull/3108))" msgstr "" -#: ../../source/ref-changelog.md:550 +#: ../../source/ref-changelog.md:572 msgid "" "Built-in Secure Aggregation is here! Flower now supports different secure" " aggregation protocols out-of-the-box. The best part? You can add secure " @@ -17710,7 +17796,7 @@ msgid "" "in the same project." msgstr "" -#: ../../source/ref-changelog.md:552 +#: ../../source/ref-changelog.md:574 msgid "" "**Introduce** `flwr` **CLI (preview)** " "([#2942](https://github.com/adap/flower/pull/2942), " @@ -17724,13 +17810,13 @@ msgid "" "[#3142](https://github.com/adap/flower/pull/3142))" msgstr "" -#: ../../source/ref-changelog.md:554 +#: ../../source/ref-changelog.md:576 msgid "" "A new `flwr` CLI command allows creating new Flower projects (`flwr new`)" " and then running them using the Simulation Engine (`flwr run`)." msgstr "" -#: ../../source/ref-changelog.md:556 +#: ../../source/ref-changelog.md:578 msgid "" "**Introduce Flower Next Simulation Engine** " "([#3024](https://github.com/adap/flower/pull/3024), " @@ -17745,20 +17831,20 @@ msgid "" "[#3008](https://github.com/adap/flower/pull/3008))" msgstr "" -#: ../../source/ref-changelog.md:558 +#: ../../source/ref-changelog.md:580 msgid "" "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`." msgstr "" -#: ../../source/ref-changelog.md:560 +#: ../../source/ref-changelog.md:582 msgid "" "**Handle SuperNode connection errors** " "([#2969](https://github.com/adap/flower/pull/2969))" msgstr "" -#: ../../source/ref-changelog.md:562 +#: ../../source/ref-changelog.md:584 msgid "" "A SuperNode will now try to reconnect indefinitely to the SuperLink in " "case of connection errors. The arguments `--max-retries` and `--max-wait-" @@ -17769,7 +17855,7 @@ msgid "" "reconnect to the SuperLink." msgstr "" -#: ../../source/ref-changelog.md:564 +#: ../../source/ref-changelog.md:586 msgid "" "**General updates to Flower Baselines** " "([#2904](https://github.com/adap/flower/pull/2904), " @@ -17778,13 +17864,13 @@ msgid "" "[#2968](https://github.com/adap/flower/pull/2968))" msgstr "" -#: ../../source/ref-changelog.md:566 +#: ../../source/ref-changelog.md:588 msgid "" "There's a new [FedStar](https://flower.ai/docs/baselines/fedstar.html) " "baseline. Several other baselined have been updated as well." msgstr "" -#: ../../source/ref-changelog.md:568 +#: ../../source/ref-changelog.md:590 msgid "" "**Improve documentation and translations** " "([#3050](https://github.com/adap/flower/pull/3050), " @@ -17805,14 +17891,14 @@ msgid "" "[#2989](https://github.com/adap/flower/pull/2989))" msgstr "" -#: ../../source/ref-changelog.md:570 +#: ../../source/ref-changelog.md:592 msgid "" "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!" msgstr "" -#: ../../source/ref-changelog.md:572 +#: ../../source/ref-changelog.md:594 msgid "" "**General updates to Flower Examples** " "([3134](https://github.com/adap/flower/pull/3134), " @@ -17828,7 +17914,7 @@ msgid "" "[#3117](https://github.com/adap/flower/pull/3117))" msgstr "" -#: ../../source/ref-changelog.md:574 +#: ../../source/ref-changelog.md:596 msgid "" "Two new examples show federated training of a Vision Transformer (ViT) " "and federated learning in a medical context using the popular MONAI " @@ -17837,7 +17923,7 @@ msgid "" "received considerable updates as well." msgstr "" -#: ../../source/ref-changelog.md:576 +#: ../../source/ref-changelog.md:598 msgid "" "**General improvements** " "([#3171](https://github.com/adap/flower/pull/3171), " @@ -17915,11 +18001,11 @@ msgid "" "[#2954](https://github.com/adap/flower/pull/2954))" msgstr "" -#: ../../source/ref-changelog.md:582 +#: ../../source/ref-changelog.md:604 msgid "v1.7.0 (2024-02-05)" msgstr "" -#: ../../source/ref-changelog.md:588 +#: ../../source/ref-changelog.md:610 msgid "" "`Aasheesh Singh`, `Adam Narozniak`, `Aml Hassan Esmil`, `Charles " "Beauville`, `Daniel J. Beutel`, `Daniel Nata Nugraha`, `Edoardo " @@ -17929,7 +18015,7 @@ msgid "" "Shaaban`, `Yan Gao`, `Yasar Abbas` " msgstr "" -#: ../../source/ref-changelog.md:592 +#: ../../source/ref-changelog.md:614 msgid "" "**Introduce stateful clients (experimental)** " "([#2770](https://github.com/adap/flower/pull/2770), " @@ -17939,7 +18025,7 @@ msgid "" "[#2769](https://github.com/adap/flower/pull/2769))" msgstr "" -#: ../../source/ref-changelog.md:594 +#: ../../source/ref-changelog.md:616 msgid "" "Subclasses of `Client` and `NumPyClient` can now store local state that " "remains on the client. Let's start with the highlight first: this new " @@ -17952,13 +18038,13 @@ msgid "" "unified way across simulation and deployment." msgstr "" -#: ../../source/ref-changelog.md:596 +#: ../../source/ref-changelog.md:618 msgid "" "**Improve performance** " "([#2293](https://github.com/adap/flower/pull/2293))" msgstr "" -#: ../../source/ref-changelog.md:598 +#: ../../source/ref-changelog.md:620 msgid "" "Flower is faster than ever. All `FedAvg`-derived strategies now use in-" "place aggregation to reduce memory consumption. The Flower client " @@ -17967,27 +18053,27 @@ msgid "" "training time is short." msgstr "" -#: ../../source/ref-changelog.md:600 +#: ../../source/ref-changelog.md:622 msgid "" "**Support Federated Learning with Apple MLX and Flower** " "([#2693](https://github.com/adap/flower/pull/2693))" msgstr "" -#: ../../source/ref-changelog.md:602 +#: ../../source/ref-changelog.md:624 msgid "" "Flower has official support for federated learning using [Apple " "MLX](https://ml-explore.github.io/mlx) via the new `quickstart-mlx` code " "example." msgstr "" -#: ../../source/ref-changelog.md:604 +#: ../../source/ref-changelog.md:626 msgid "" "**Introduce new XGBoost cyclic strategy** " "([#2666](https://github.com/adap/flower/pull/2666), " "[#2668](https://github.com/adap/flower/pull/2668))" msgstr "" -#: ../../source/ref-changelog.md:606 +#: ../../source/ref-changelog.md:628 msgid "" "A new strategy called `FedXgbCyclic` supports a client-by-client style of" " training (often called cyclic). The `xgboost-comprehensive` code example" @@ -17996,31 +18082,31 @@ msgid "" "offers best-in-class XGBoost support." msgstr "" -#: ../../source/ref-changelog.md:608 +#: ../../source/ref-changelog.md:630 msgid "" "**Support Python 3.11** " "([#2394](https://github.com/adap/flower/pull/2394))" msgstr "" -#: ../../source/ref-changelog.md:610 +#: ../../source/ref-changelog.md:632 msgid "" "Framework tests now run on Python 3.8, 3.9, 3.10, and 3.11. This will " "ensure better support for users using more recent Python versions." msgstr "" -#: ../../source/ref-changelog.md:612 +#: ../../source/ref-changelog.md:634 msgid "" "**Update gRPC and ProtoBuf dependencies** " "([#2814](https://github.com/adap/flower/pull/2814))" msgstr "" -#: ../../source/ref-changelog.md:614 +#: ../../source/ref-changelog.md:636 msgid "" "The `grpcio` and `protobuf` dependencies were updated to their latest " "versions for improved security and performance." msgstr "" -#: ../../source/ref-changelog.md:616 +#: ../../source/ref-changelog.md:638 msgid "" "**Introduce Docker image for Flower server** " "([#2700](https://github.com/adap/flower/pull/2700), " @@ -18034,7 +18120,7 @@ msgid "" "[#2701](https://github.com/adap/flower/pull/2701))" msgstr "" -#: ../../source/ref-changelog.md:618 +#: ../../source/ref-changelog.md:640 msgid "" "The Flower server can now be run using an official Docker image. A new " "how-to guide explains [how to run Flower using " @@ -18042,25 +18128,25 @@ msgid "" "docker.html). An official Flower client Docker image will follow." msgstr "" -#: ../../source/ref-changelog.md:620 +#: ../../source/ref-changelog.md:642 msgid "" "**Introduce** `flower-via-docker-compose` **example** " "([#2626](https://github.com/adap/flower/pull/2626))" msgstr "" -#: ../../source/ref-changelog.md:622 +#: ../../source/ref-changelog.md:644 msgid "" "**Introduce** `quickstart-sklearn-tabular` **example** " "([#2719](https://github.com/adap/flower/pull/2719))" msgstr "" -#: ../../source/ref-changelog.md:624 +#: ../../source/ref-changelog.md:646 msgid "" "**Introduce** `custom-metrics` **example** " "([#1958](https://github.com/adap/flower/pull/1958))" msgstr "" -#: ../../source/ref-changelog.md:626 +#: ../../source/ref-changelog.md:648 msgid "" "**Update code examples to use Flower Datasets** " "([#2450](https://github.com/adap/flower/pull/2450), " @@ -18069,13 +18155,13 @@ msgid "" "[#2712](https://github.com/adap/flower/pull/2712))" msgstr "" -#: ../../source/ref-changelog.md:628 +#: ../../source/ref-changelog.md:650 msgid "" "Several code examples were updated to use [Flower " "Datasets](https://flower.ai/docs/datasets/)." msgstr "" -#: ../../source/ref-changelog.md:630 +#: ../../source/ref-changelog.md:652 msgid "" "**General updates to Flower Examples** " "([#2381](https://github.com/adap/flower/pull/2381), " @@ -18090,41 +18176,41 @@ msgid "" "[#2655](https://github.com/adap/flower/pull/2655))" msgstr "" -#: ../../source/ref-changelog.md:632 +#: ../../source/ref-changelog.md:654 msgid "Many Flower code examples received substantial updates." msgstr "" -#: ../../source/ref-changelog.md:634 ../../source/ref-changelog.md:727 +#: ../../source/ref-changelog.md:656 ../../source/ref-changelog.md:749 msgid "**Update Flower Baselines**" msgstr "" -#: ../../source/ref-changelog.md:636 +#: ../../source/ref-changelog.md:658 msgid "" "HFedXGBoost ([#2226](https://github.com/adap/flower/pull/2226), " "[#2771](https://github.com/adap/flower/pull/2771))" msgstr "" -#: ../../source/ref-changelog.md:637 +#: ../../source/ref-changelog.md:659 msgid "FedVSSL ([#2412](https://github.com/adap/flower/pull/2412))" msgstr "" -#: ../../source/ref-changelog.md:638 +#: ../../source/ref-changelog.md:660 msgid "FedNova ([#2179](https://github.com/adap/flower/pull/2179))" msgstr "" -#: ../../source/ref-changelog.md:639 +#: ../../source/ref-changelog.md:661 msgid "HeteroFL ([#2439](https://github.com/adap/flower/pull/2439))" msgstr "" -#: ../../source/ref-changelog.md:640 +#: ../../source/ref-changelog.md:662 msgid "FedAvgM ([#2246](https://github.com/adap/flower/pull/2246))" msgstr "" -#: ../../source/ref-changelog.md:641 +#: ../../source/ref-changelog.md:663 msgid "FedPara ([#2722](https://github.com/adap/flower/pull/2722))" msgstr "" -#: ../../source/ref-changelog.md:643 +#: ../../source/ref-changelog.md:665 msgid "" "**Improve documentation** " "([#2674](https://github.com/adap/flower/pull/2674), " @@ -18135,7 +18221,7 @@ msgid "" "[#2900](https://github.com/adap/flower/pull/2900))" msgstr "" -#: ../../source/ref-changelog.md:645 +#: ../../source/ref-changelog.md:667 msgid "" "**Improved testing and development infrastructure** " "([#2797](https://github.com/adap/flower/pull/2797), " @@ -18169,13 +18255,13 @@ msgid "" "[#2398](https://github.com/adap/flower/pull/2398))" msgstr "" -#: ../../source/ref-changelog.md:647 +#: ../../source/ref-changelog.md:669 msgid "" "The Flower testing and development infrastructure has received " "substantial updates. This makes Flower 1.7 the most tested release ever." msgstr "" -#: ../../source/ref-changelog.md:649 +#: ../../source/ref-changelog.md:671 msgid "" "**Update dependencies** " "([#2753](https://github.com/adap/flower/pull/2753), " @@ -18199,7 +18285,7 @@ msgid "" "[#2789](https://github.com/adap/flower/pull/2789))" msgstr "" -#: ../../source/ref-changelog.md:651 +#: ../../source/ref-changelog.md:673 msgid "" "**General improvements** " "([#2803](https://github.com/adap/flower/pull/2803), " @@ -18240,14 +18326,14 @@ msgid "" "[#2759](https://github.com/adap/flower/pull/2759))" msgstr "" -#: ../../source/ref-changelog.md:655 +#: ../../source/ref-changelog.md:677 msgid "" "**Deprecate** `start_numpy_client` " "([#2563](https://github.com/adap/flower/pull/2563), " "[#2718](https://github.com/adap/flower/pull/2718))" msgstr "" -#: ../../source/ref-changelog.md:657 +#: ../../source/ref-changelog.md:679 msgid "" "Until now, clients of type `NumPyClient` needed to be started via " "`start_numpy_client`. In our efforts to consolidate framework APIs, we " @@ -18258,63 +18344,63 @@ msgid "" "updated accordingly." msgstr "" -#: ../../source/ref-changelog.md:659 +#: ../../source/ref-changelog.md:681 msgid "" "**Deprecate legacy DP wrappers** " "([#2749](https://github.com/adap/flower/pull/2749))" msgstr "" -#: ../../source/ref-changelog.md:661 +#: ../../source/ref-changelog.md:683 msgid "" "Legacy DP wrapper classes are deprecated, but still functional. This is " "in preparation for an all-new pluggable version of differential privacy " "support in Flower." msgstr "" -#: ../../source/ref-changelog.md:663 +#: ../../source/ref-changelog.md:685 msgid "" "**Make optional arg** `--callable` **in** `flower-client` **a required " "positional arg** ([#2673](https://github.com/adap/flower/pull/2673))" msgstr "" -#: ../../source/ref-changelog.md:665 +#: ../../source/ref-changelog.md:687 msgid "" "**Rename** `certificates` **to** `root_certificates` **in** `Driver` " "([#2890](https://github.com/adap/flower/pull/2890))" msgstr "" -#: ../../source/ref-changelog.md:667 +#: ../../source/ref-changelog.md:689 msgid "" "**Drop experimental** `Task` **fields** " "([#2866](https://github.com/adap/flower/pull/2866), " "[#2865](https://github.com/adap/flower/pull/2865))" msgstr "" -#: ../../source/ref-changelog.md:669 +#: ../../source/ref-changelog.md:691 msgid "" "Experimental fields `sa`, `legacy_server_message` and " "`legacy_client_message` were removed from `Task` message. The removed " "fields are superseded by the new `RecordSet` abstraction." msgstr "" -#: ../../source/ref-changelog.md:671 +#: ../../source/ref-changelog.md:693 msgid "" "**Retire MXNet examples** " "([#2724](https://github.com/adap/flower/pull/2724))" msgstr "" -#: ../../source/ref-changelog.md:673 +#: ../../source/ref-changelog.md:695 msgid "" "The development of the MXNet fremework has ended and the project is now " "[archived on GitHub](https://github.com/apache/mxnet). Existing MXNet " "examples won't receive updates." msgstr "" -#: ../../source/ref-changelog.md:675 +#: ../../source/ref-changelog.md:697 msgid "v1.6.0 (2023-11-28)" msgstr "" -#: ../../source/ref-changelog.md:681 +#: ../../source/ref-changelog.md:703 msgid "" "`Aashish Kolluri`, `Adam Narozniak`, `Alessio Mora`, `Barathwaja S`, " "`Charles Beauville`, `Daniel J. Beutel`, `Daniel Nata Nugraha`, `Gabriel " @@ -18324,13 +18410,13 @@ msgid "" "`cnxdeveloper`, `k3nfalt` " msgstr "" -#: ../../source/ref-changelog.md:685 +#: ../../source/ref-changelog.md:707 msgid "" "**Add experimental support for Python 3.12** " "([#2565](https://github.com/adap/flower/pull/2565))" msgstr "" -#: ../../source/ref-changelog.md:687 +#: ../../source/ref-changelog.md:709 msgid "" "**Add new XGBoost examples** " "([#2612](https://github.com/adap/flower/pull/2612), " @@ -18341,19 +18427,19 @@ msgid "" "[#2567](https://github.com/adap/flower/pull/2567))" msgstr "" -#: ../../source/ref-changelog.md:689 +#: ../../source/ref-changelog.md:711 msgid "" "We have added a new `xgboost-quickstart` example alongside a new " "`xgboost-comprehensive` example that goes more in-depth." msgstr "" -#: ../../source/ref-changelog.md:691 +#: ../../source/ref-changelog.md:713 msgid "" "**Add Vertical FL example** " "([#2598](https://github.com/adap/flower/pull/2598))" msgstr "" -#: ../../source/ref-changelog.md:693 +#: ../../source/ref-changelog.md:715 msgid "" "We had many questions about Vertical Federated Learning using Flower, so " "we decided to add an simple example for it on the [Titanic " @@ -18361,29 +18447,29 @@ msgid "" "tutorial (in the README)." msgstr "" -#: ../../source/ref-changelog.md:695 +#: ../../source/ref-changelog.md:717 msgid "" "**Support custom** `ClientManager` **in** `start_driver()` " "([#2292](https://github.com/adap/flower/pull/2292))" msgstr "" -#: ../../source/ref-changelog.md:697 +#: ../../source/ref-changelog.md:719 msgid "" "**Update REST API to support create and delete nodes** " "([#2283](https://github.com/adap/flower/pull/2283))" msgstr "" -#: ../../source/ref-changelog.md:699 +#: ../../source/ref-changelog.md:721 msgid "" "**Update the Android SDK** " "([#2187](https://github.com/adap/flower/pull/2187))" msgstr "" -#: ../../source/ref-changelog.md:701 +#: ../../source/ref-changelog.md:723 msgid "Add gRPC request-response capability to the Android SDK." msgstr "" -#: ../../source/ref-changelog.md:703 +#: ../../source/ref-changelog.md:725 msgid "" "**Update the C++ SDK** " "([#2537](https://github.com/adap/flower/pull/2537), " @@ -18392,18 +18478,18 @@ msgid "" "[#2522](https://github.com/adap/flower/pull/2522))" msgstr "" -#: ../../source/ref-changelog.md:705 +#: ../../source/ref-changelog.md:727 msgid "Add gRPC request-response capability to the C++ SDK." msgstr "" -#: ../../source/ref-changelog.md:707 +#: ../../source/ref-changelog.md:729 msgid "" "**Make HTTPS the new default** " "([#2591](https://github.com/adap/flower/pull/2591), " "[#2636](https://github.com/adap/flower/pull/2636))" msgstr "" -#: ../../source/ref-changelog.md:709 +#: ../../source/ref-changelog.md:731 msgid "" "Flower is moving to HTTPS by default. The new `flower-server` requires " "passing `--certificates`, but users can enable `--insecure` to use HTTP " @@ -18413,21 +18499,21 @@ msgid "" "enable insecure HTTP connections." msgstr "" -#: ../../source/ref-changelog.md:711 +#: ../../source/ref-changelog.md:733 msgid "" "For backward compatibility, `start_client()` and `start_numpy_client()` " "will still start in insecure mode by default. In a future release, " "insecure connections will require user opt-in by passing `insecure=True`." msgstr "" -#: ../../source/ref-changelog.md:713 +#: ../../source/ref-changelog.md:735 msgid "" "**Unify client API** ([#2303](https://github.com/adap/flower/pull/2303), " "[#2390](https://github.com/adap/flower/pull/2390), " "[#2493](https://github.com/adap/flower/pull/2493))" msgstr "" -#: ../../source/ref-changelog.md:715 +#: ../../source/ref-changelog.md:737 msgid "" "Using the `client_fn`, Flower clients can interchangeably run as " "standalone processes (i.e. via `start_client`) or in simulation (i.e. via" @@ -18436,92 +18522,92 @@ msgid "" "convert a `NumPyClient` to a `Client`." msgstr "" -#: ../../source/ref-changelog.md:717 +#: ../../source/ref-changelog.md:739 msgid "" "**Add new** `Bulyan` **strategy** " "([#1817](https://github.com/adap/flower/pull/1817), " "[#1891](https://github.com/adap/flower/pull/1891))" msgstr "" -#: ../../source/ref-changelog.md:719 +#: ../../source/ref-changelog.md:741 msgid "" "The new `Bulyan` strategy implements Bulyan by [El Mhamdi et al., " "2018](https://arxiv.org/abs/1802.07927)" msgstr "" -#: ../../source/ref-changelog.md:721 +#: ../../source/ref-changelog.md:743 msgid "" "**Add new** `XGB Bagging` **strategy** " "([#2611](https://github.com/adap/flower/pull/2611))" msgstr "" -#: ../../source/ref-changelog.md:723 ../../source/ref-changelog.md:725 +#: ../../source/ref-changelog.md:745 ../../source/ref-changelog.md:747 msgid "" "**Introduce `WorkloadState`** " "([#2564](https://github.com/adap/flower/pull/2564), " "[#2632](https://github.com/adap/flower/pull/2632))" msgstr "" -#: ../../source/ref-changelog.md:729 +#: ../../source/ref-changelog.md:751 msgid "" "FedProx ([#2210](https://github.com/adap/flower/pull/2210), " "[#2286](https://github.com/adap/flower/pull/2286), " "[#2509](https://github.com/adap/flower/pull/2509))" msgstr "" -#: ../../source/ref-changelog.md:731 +#: ../../source/ref-changelog.md:753 msgid "" "Baselines Docs ([#2290](https://github.com/adap/flower/pull/2290), " "[#2400](https://github.com/adap/flower/pull/2400))" msgstr "" -#: ../../source/ref-changelog.md:733 +#: ../../source/ref-changelog.md:755 msgid "" "FedMLB ([#2340](https://github.com/adap/flower/pull/2340), " "[#2507](https://github.com/adap/flower/pull/2507))" msgstr "" -#: ../../source/ref-changelog.md:735 +#: ../../source/ref-changelog.md:757 msgid "" "TAMUNA ([#2254](https://github.com/adap/flower/pull/2254), " "[#2508](https://github.com/adap/flower/pull/2508))" msgstr "" -#: ../../source/ref-changelog.md:737 +#: ../../source/ref-changelog.md:759 msgid "FedMeta [#2438](https://github.com/adap/flower/pull/2438)" msgstr "" -#: ../../source/ref-changelog.md:739 +#: ../../source/ref-changelog.md:761 msgid "FjORD [#2431](https://github.com/adap/flower/pull/2431)" msgstr "" -#: ../../source/ref-changelog.md:741 +#: ../../source/ref-changelog.md:763 msgid "MOON [#2421](https://github.com/adap/flower/pull/2421)" msgstr "" -#: ../../source/ref-changelog.md:743 +#: ../../source/ref-changelog.md:765 msgid "DepthFL [#2295](https://github.com/adap/flower/pull/2295)" msgstr "" -#: ../../source/ref-changelog.md:745 +#: ../../source/ref-changelog.md:767 msgid "FedPer [#2266](https://github.com/adap/flower/pull/2266)" msgstr "" -#: ../../source/ref-changelog.md:747 +#: ../../source/ref-changelog.md:769 msgid "FedWav2vec [#2551](https://github.com/adap/flower/pull/2551)" msgstr "" -#: ../../source/ref-changelog.md:749 +#: ../../source/ref-changelog.md:771 msgid "niid-Bench [#2428](https://github.com/adap/flower/pull/2428)" msgstr "" -#: ../../source/ref-changelog.md:751 +#: ../../source/ref-changelog.md:773 msgid "" "FedBN ([#2608](https://github.com/adap/flower/pull/2608), " "[#2615](https://github.com/adap/flower/pull/2615))" msgstr "" -#: ../../source/ref-changelog.md:753 +#: ../../source/ref-changelog.md:775 msgid "" "**General updates to Flower Examples** " "([#2384](https://github.com/adap/flower/pull/2384), " @@ -18531,7 +18617,7 @@ msgid "" "[#2545](https://github.com/adap/flower/pull/2545))" msgstr "" -#: ../../source/ref-changelog.md:755 +#: ../../source/ref-changelog.md:777 msgid "" "**General updates to Flower Baselines** " "([#2301](https://github.com/adap/flower/pull/2301), " @@ -18549,7 +18635,7 @@ msgid "" "[#2470](https://github.com/adap/flower/pull/2470))" msgstr "" -#: ../../source/ref-changelog.md:757 +#: ../../source/ref-changelog.md:779 msgid "" "**General updates to the simulation engine** " "([#2331](https://github.com/adap/flower/pull/2331), " @@ -18558,7 +18644,7 @@ msgid "" "[#2294](https://github.com/adap/flower/pull/2294))" msgstr "" -#: ../../source/ref-changelog.md:759 +#: ../../source/ref-changelog.md:781 msgid "" "**General updates to Flower SDKs** " "([#2288](https://github.com/adap/flower/pull/2288), " @@ -18570,7 +18656,7 @@ msgid "" "[#2623](https://github.com/adap/flower/pull/2623))" msgstr "" -#: ../../source/ref-changelog.md:761 +#: ../../source/ref-changelog.md:783 msgid "" "**General improvements** " "([#2309](https://github.com/adap/flower/pull/2309), " @@ -18602,13 +18688,13 @@ msgid "" "[#2596](https://github.com/adap/flower/pull/2596))" msgstr "" -#: ../../source/ref-changelog.md:763 ../../source/ref-changelog.md:853 -#: ../../source/ref-changelog.md:917 ../../source/ref-changelog.md:971 -#: ../../source/ref-changelog.md:1038 +#: ../../source/ref-changelog.md:785 ../../source/ref-changelog.md:875 +#: ../../source/ref-changelog.md:939 ../../source/ref-changelog.md:993 +#: ../../source/ref-changelog.md:1060 msgid "Flower received many improvements under the hood, too many to list here." msgstr "" -#: ../../source/ref-changelog.md:767 +#: ../../source/ref-changelog.md:789 msgid "" "**Remove support for Python 3.7** " "([#2280](https://github.com/adap/flower/pull/2280), " @@ -18619,30 +18705,30 @@ msgid "" "[#2356](https://github.com/adap/flower/pull/2356))" msgstr "" -#: ../../source/ref-changelog.md:769 +#: ../../source/ref-changelog.md:791 msgid "" "Python 3.7 support was deprecated in Flower 1.5, and this release removes" " support. Flower now requires Python 3.8." msgstr "" -#: ../../source/ref-changelog.md:771 +#: ../../source/ref-changelog.md:793 msgid "" "**Remove experimental argument** `rest` **from** `start_client` " "([#2324](https://github.com/adap/flower/pull/2324))" msgstr "" -#: ../../source/ref-changelog.md:773 +#: ../../source/ref-changelog.md:795 msgid "" "The (still experimental) argument `rest` was removed from `start_client` " "and `start_numpy_client`. Use `transport=\"rest\"` to opt into the " "experimental REST API instead." msgstr "" -#: ../../source/ref-changelog.md:775 +#: ../../source/ref-changelog.md:797 msgid "v1.5.0 (2023-08-31)" msgstr "" -#: ../../source/ref-changelog.md:781 +#: ../../source/ref-changelog.md:803 msgid "" "`Adam Narozniak`, `Anass Anhari`, `Charles Beauville`, `Dana-Farber`, " "`Daniel J. Beutel`, `Daniel Nata Nugraha`, `Edoardo Gabrielli`, `Gustavo " @@ -18651,7 +18737,7 @@ msgid "" "TOKEN_v1.5.0-->" msgstr "" -#: ../../source/ref-changelog.md:785 +#: ../../source/ref-changelog.md:807 msgid "" "**Introduce new simulation engine** " "([#1969](https://github.com/adap/flower/pull/1969), " @@ -18659,7 +18745,7 @@ msgid "" "[#2248](https://github.com/adap/flower/pull/2248))" msgstr "" -#: ../../source/ref-changelog.md:787 +#: ../../source/ref-changelog.md:809 msgid "" "The new simulation engine has been rewritten from the ground up, yet it " "remains fully backwards compatible. It offers much improved stability and" @@ -18668,7 +18754,7 @@ msgid "" "only, CPU+GPU, multi-GPU, or multi-node multi-GPU environments." msgstr "" -#: ../../source/ref-changelog.md:789 +#: ../../source/ref-changelog.md:811 msgid "" "Comprehensive documentation includes a new [how-to run " "simulations](https://flower.ai/docs/framework/how-to-run-" @@ -18679,7 +18765,7 @@ msgid "" "series](https://www.youtube.com/watch?v=cRebUIGB5RU&list=PLNG4feLHqCWlnj8a_E1A_n5zr2-8pafTB)." msgstr "" -#: ../../source/ref-changelog.md:791 +#: ../../source/ref-changelog.md:813 msgid "" "**Restructure Flower Docs** " "([#1824](https://github.com/adap/flower/pull/1824), " @@ -18711,7 +18797,7 @@ msgid "" "[#2227](https://github.com/adap/flower/pull/2227))" msgstr "" -#: ../../source/ref-changelog.md:793 +#: ../../source/ref-changelog.md:815 msgid "" "Much effort went into a completely restructured Flower docs experience. " "The documentation on [flower.ai/docs](https://flower.ai/docs) is now " @@ -18719,34 +18805,34 @@ msgid "" "Flower iOS SDK, and code example projects." msgstr "" -#: ../../source/ref-changelog.md:795 +#: ../../source/ref-changelog.md:817 msgid "" "**Introduce Flower Swift SDK** " "([#1858](https://github.com/adap/flower/pull/1858), " "[#1897](https://github.com/adap/flower/pull/1897))" msgstr "" -#: ../../source/ref-changelog.md:797 +#: ../../source/ref-changelog.md:819 msgid "" "This is the first preview release of the Flower Swift SDK. Flower support" " on iOS is improving, and alongside the Swift SDK and code example, there" " is now also an iOS quickstart tutorial." msgstr "" -#: ../../source/ref-changelog.md:799 +#: ../../source/ref-changelog.md:821 msgid "" "**Introduce Flower Android SDK** " "([#2131](https://github.com/adap/flower/pull/2131))" msgstr "" -#: ../../source/ref-changelog.md:801 +#: ../../source/ref-changelog.md:823 msgid "" "This is the first preview release of the Flower Kotlin SDK. Flower " "support on Android is improving, and alongside the Kotlin SDK and code " "example, there is now also an Android quickstart tutorial." msgstr "" -#: ../../source/ref-changelog.md:803 +#: ../../source/ref-changelog.md:825 msgid "" "**Introduce new end-to-end testing infrastructure** " "([#1842](https://github.com/adap/flower/pull/1842), " @@ -18768,42 +18854,42 @@ msgid "" "[#2165](https://github.com/adap/flower/pull/2165))" msgstr "" -#: ../../source/ref-changelog.md:805 +#: ../../source/ref-changelog.md:827 msgid "" "A new testing infrastructure ensures that new changes stay compatible " "with existing framework integrations or strategies." msgstr "" -#: ../../source/ref-changelog.md:807 +#: ../../source/ref-changelog.md:829 msgid "**Deprecate Python 3.7**" msgstr "" -#: ../../source/ref-changelog.md:809 +#: ../../source/ref-changelog.md:831 msgid "" "Since Python 3.7 reached its end of life (EOL) on 2023-06-27, support for" " Python 3.7 is now deprecated and will be removed in an upcoming release." msgstr "" -#: ../../source/ref-changelog.md:811 +#: ../../source/ref-changelog.md:833 msgid "" "**Add new** `FedTrimmedAvg` **strategy** " "([#1769](https://github.com/adap/flower/pull/1769), " "[#1853](https://github.com/adap/flower/pull/1853))" msgstr "" -#: ../../source/ref-changelog.md:813 +#: ../../source/ref-changelog.md:835 msgid "" "The new `FedTrimmedAvg` strategy implements Trimmed Mean by [Dong Yin, " "2018](https://arxiv.org/abs/1803.01498)." msgstr "" -#: ../../source/ref-changelog.md:815 +#: ../../source/ref-changelog.md:837 msgid "" "**Introduce start_driver** " "([#1697](https://github.com/adap/flower/pull/1697))" msgstr "" -#: ../../source/ref-changelog.md:817 +#: ../../source/ref-changelog.md:839 msgid "" "In addition to `start_server` and using the raw Driver API, there is a " "new `start_driver` function that allows for running `start_server` " @@ -18812,13 +18898,13 @@ msgid "" "`start_driver`." msgstr "" -#: ../../source/ref-changelog.md:819 +#: ../../source/ref-changelog.md:841 msgid "" "**Add parameter aggregation to** `mt-pytorch` **code example** " "([#1785](https://github.com/adap/flower/pull/1785))" msgstr "" -#: ../../source/ref-changelog.md:821 +#: ../../source/ref-changelog.md:843 msgid "" "The `mt-pytorch` example shows how to aggregate parameters when writing a" " driver script. The included `driver.py` and `server.py` have been " @@ -18826,53 +18912,53 @@ msgid "" "building server-side logic." msgstr "" -#: ../../source/ref-changelog.md:823 +#: ../../source/ref-changelog.md:845 msgid "" "**Migrate experimental REST API to Starlette** " "([2171](https://github.com/adap/flower/pull/2171))" msgstr "" -#: ../../source/ref-changelog.md:825 +#: ../../source/ref-changelog.md:847 msgid "" "The (experimental) REST API used to be implemented in " "[FastAPI](https://fastapi.tiangolo.com/), but it has now been migrated to" " use [Starlette](https://www.starlette.io/) directly." msgstr "" -#: ../../source/ref-changelog.md:827 +#: ../../source/ref-changelog.md:849 msgid "" "Please note: The REST request-response API is still experimental and will" " likely change significantly over time." msgstr "" -#: ../../source/ref-changelog.md:829 +#: ../../source/ref-changelog.md:851 msgid "" "**Introduce experimental gRPC request-response API** " "([#1867](https://github.com/adap/flower/pull/1867), " "[#1901](https://github.com/adap/flower/pull/1901))" msgstr "" -#: ../../source/ref-changelog.md:831 +#: ../../source/ref-changelog.md:853 msgid "" "In addition to the existing gRPC API (based on bidirectional streaming) " "and the experimental REST API, there is now a new gRPC API that uses a " "request-response model to communicate with client nodes." msgstr "" -#: ../../source/ref-changelog.md:833 +#: ../../source/ref-changelog.md:855 msgid "" "Please note: The gRPC request-response API is still experimental and will" " likely change significantly over time." msgstr "" -#: ../../source/ref-changelog.md:835 +#: ../../source/ref-changelog.md:857 msgid "" "**Replace the experimental** `start_client(rest=True)` **with the new** " "`start_client(transport=\"rest\")` " "([#1880](https://github.com/adap/flower/pull/1880))" msgstr "" -#: ../../source/ref-changelog.md:837 +#: ../../source/ref-changelog.md:859 msgid "" "The (experimental) `start_client` argument `rest` was deprecated in " "favour of a new argument `transport`. `start_client(transport=\"rest\")` " @@ -18881,30 +18967,30 @@ msgid "" "argument `rest` will be removed in a future release." msgstr "" -#: ../../source/ref-changelog.md:839 +#: ../../source/ref-changelog.md:861 msgid "" "**Add a new gRPC option** " "([#2197](https://github.com/adap/flower/pull/2197))" msgstr "" -#: ../../source/ref-changelog.md:841 +#: ../../source/ref-changelog.md:863 msgid "" "We now start a gRPC server with the `grpc.keepalive_permit_without_calls`" " option set to 0 by default. This prevents the clients from sending " "keepalive pings when there is no outstanding stream." msgstr "" -#: ../../source/ref-changelog.md:843 +#: ../../source/ref-changelog.md:865 msgid "" "**Improve example notebooks** " "([#2005](https://github.com/adap/flower/pull/2005))" msgstr "" -#: ../../source/ref-changelog.md:845 +#: ../../source/ref-changelog.md:867 msgid "There's a new 30min Federated Learning PyTorch tutorial!" msgstr "" -#: ../../source/ref-changelog.md:847 +#: ../../source/ref-changelog.md:869 msgid "" "**Example updates** ([#1772](https://github.com/adap/flower/pull/1772), " "[#1873](https://github.com/adap/flower/pull/1873), " @@ -18919,7 +19005,7 @@ msgid "" "[#2183](https://github.com/adap/flower/pull/2183))" msgstr "" -#: ../../source/ref-changelog.md:849 +#: ../../source/ref-changelog.md:871 msgid "" "Many examples have received significant updates, including simplified " "advanced-tensorflow and advanced-pytorch examples, improved macOS " @@ -18928,7 +19014,7 @@ msgid "" "(in addition to `pyproject.toml`)." msgstr "" -#: ../../source/ref-changelog.md:851 +#: ../../source/ref-changelog.md:873 msgid "" "**General improvements** " "([#1872](https://github.com/adap/flower/pull/1872), " @@ -18939,11 +19025,11 @@ msgid "" "[#2171](https://github.com/adap/flower/pull/2171))" msgstr "" -#: ../../source/ref-changelog.md:859 +#: ../../source/ref-changelog.md:881 msgid "v1.4.0 (2023-04-21)" msgstr "" -#: ../../source/ref-changelog.md:865 +#: ../../source/ref-changelog.md:887 msgid "" "`Adam Narozniak`, `Alexander Viala Bellander`, `Charles Beauville`, " "`Chenyang Ma (Danny)`, `Daniel J. Beutel`, `Edoardo`, `Gautam Jajoo`, " @@ -18953,7 +19039,7 @@ msgid "" "`Steve Laskaridis`, `Steven Hé (Sīchàng)`, `Taner Topal`" msgstr "" -#: ../../source/ref-changelog.md:869 +#: ../../source/ref-changelog.md:891 msgid "" "**Introduce support for XGBoost (**`FedXgbNnAvg` **strategy and " "example)** ([#1694](https://github.com/adap/flower/pull/1694), " @@ -18964,7 +19050,7 @@ msgid "" "[#1795](https://github.com/adap/flower/pull/1795))" msgstr "" -#: ../../source/ref-changelog.md:871 +#: ../../source/ref-changelog.md:893 msgid "" "XGBoost is a tree-based ensemble machine learning algorithm that uses " "gradient boosting to improve model accuracy. We added a new `FedXgbNnAvg`" @@ -18975,14 +19061,14 @@ msgid "" "an XGBoost project." msgstr "" -#: ../../source/ref-changelog.md:873 +#: ../../source/ref-changelog.md:895 msgid "" "**Introduce iOS SDK (preview)** " "([#1621](https://github.com/adap/flower/pull/1621), " "[#1764](https://github.com/adap/flower/pull/1764))" msgstr "" -#: ../../source/ref-changelog.md:875 +#: ../../source/ref-changelog.md:897 msgid "" "This is a major update for anyone wanting to implement Federated Learning" " on iOS mobile devices. We now have a swift iOS SDK present under " @@ -18993,14 +19079,14 @@ msgid "" "been updated!" msgstr "" -#: ../../source/ref-changelog.md:877 +#: ../../source/ref-changelog.md:899 msgid "" "**Introduce new \"What is Federated Learning?\" tutorial** " "([#1657](https://github.com/adap/flower/pull/1657), " "[#1721](https://github.com/adap/flower/pull/1721))" msgstr "" -#: ../../source/ref-changelog.md:879 +#: ../../source/ref-changelog.md:901 msgid "" "A new [entry-level tutorial](https://flower.ai/docs/framework/tutorial-" "what-is-federated-learning.html) in our documentation explains the basics" @@ -19009,7 +19095,7 @@ msgid "" "interested in Federated Learning!" msgstr "" -#: ../../source/ref-changelog.md:881 +#: ../../source/ref-changelog.md:903 msgid "" "**Introduce new Flower Baseline: FedProx MNIST** " "([#1513](https://github.com/adap/flower/pull/1513), " @@ -19018,7 +19104,7 @@ msgid "" "[#1679](https://github.com/adap/flower/pull/1679))" msgstr "" -#: ../../source/ref-changelog.md:883 +#: ../../source/ref-changelog.md:905 msgid "" "This new baseline replicates the MNIST+CNN task from the paper [Federated" " Optimization in Heterogeneous Networks (Li et al., " @@ -19026,13 +19112,13 @@ msgid "" " which aims at making convergence more robust in heterogeneous settings." msgstr "" -#: ../../source/ref-changelog.md:885 +#: ../../source/ref-changelog.md:907 msgid "" "**Introduce new Flower Baseline: FedAvg FEMNIST** " "([#1655](https://github.com/adap/flower/pull/1655))" msgstr "" -#: ../../source/ref-changelog.md:887 +#: ../../source/ref-changelog.md:909 msgid "" "This new baseline replicates an experiment evaluating the performance of " "the FedAvg algorithm on the FEMNIST dataset from the paper [LEAF: A " @@ -19040,7 +19126,7 @@ msgid "" "2018)](https://arxiv.org/abs/1812.01097)." msgstr "" -#: ../../source/ref-changelog.md:889 +#: ../../source/ref-changelog.md:911 msgid "" "**Introduce (experimental) REST API** " "([#1594](https://github.com/adap/flower/pull/1594), " @@ -19052,20 +19138,20 @@ msgid "" "[#1733](https://github.com/adap/flower/pull/1733))" msgstr "" -#: ../../source/ref-changelog.md:891 +#: ../../source/ref-changelog.md:913 msgid "" "A new REST API has been introduced as an alternative to the gRPC-based " "communication stack. In this initial version, the REST API only supports " "anonymous clients." msgstr "" -#: ../../source/ref-changelog.md:893 +#: ../../source/ref-changelog.md:915 msgid "" "Please note: The REST API is still experimental and will likely change " "significantly over time." msgstr "" -#: ../../source/ref-changelog.md:895 +#: ../../source/ref-changelog.md:917 msgid "" "**Improve the (experimental) Driver API** " "([#1663](https://github.com/adap/flower/pull/1663), " @@ -19079,7 +19165,7 @@ msgid "" "[#1794](https://github.com/adap/flower/pull/1794))" msgstr "" -#: ../../source/ref-changelog.md:897 +#: ../../source/ref-changelog.md:919 msgid "" "The Driver API is still an experimental feature, but this release " "introduces some major upgrades. One of the main improvements is the " @@ -19089,26 +19175,26 @@ msgid "" "improves the memory efficiency of a long-running Flower server." msgstr "" -#: ../../source/ref-changelog.md:899 +#: ../../source/ref-changelog.md:921 msgid "" "**Fix spilling issues related to Ray during simulations** " "([#1698](https://github.com/adap/flower/pull/1698))" msgstr "" -#: ../../source/ref-changelog.md:901 +#: ../../source/ref-changelog.md:923 msgid "" "While running long simulations, `ray` was sometimes spilling huge amounts" " of data that would make the training unable to continue. This is now " "fixed! 🎉" msgstr "" -#: ../../source/ref-changelog.md:903 +#: ../../source/ref-changelog.md:925 msgid "" "**Add new example using** `TabNet` **and Flower** " "([#1725](https://github.com/adap/flower/pull/1725))" msgstr "" -#: ../../source/ref-changelog.md:905 +#: ../../source/ref-changelog.md:927 msgid "" "TabNet is a powerful and flexible framework for training machine learning" " models on tabular data. We now have a federated example using Flower: " @@ -19116,32 +19202,32 @@ msgid "" "/quickstart-tabnet)." msgstr "" -#: ../../source/ref-changelog.md:907 +#: ../../source/ref-changelog.md:929 msgid "" "**Add new how-to guide for monitoring simulations** " "([#1649](https://github.com/adap/flower/pull/1649))" msgstr "" -#: ../../source/ref-changelog.md:909 +#: ../../source/ref-changelog.md:931 msgid "" "We now have a documentation guide to help users monitor their performance" " during simulations." msgstr "" -#: ../../source/ref-changelog.md:911 +#: ../../source/ref-changelog.md:933 msgid "" "**Add training metrics to** `History` **object during simulations** " "([#1696](https://github.com/adap/flower/pull/1696))" msgstr "" -#: ../../source/ref-changelog.md:913 +#: ../../source/ref-changelog.md:935 msgid "" "The `fit_metrics_aggregation_fn` can be used to aggregate training " "metrics, but previous releases did not save the results in the `History` " "object. This is now the case!" msgstr "" -#: ../../source/ref-changelog.md:915 +#: ../../source/ref-changelog.md:937 msgid "" "**General improvements** " "([#1659](https://github.com/adap/flower/pull/1659), " @@ -19195,23 +19281,23 @@ msgid "" "[#1805](https://github.com/adap/flower/pull/1805))" msgstr "" -#: ../../source/ref-changelog.md:923 +#: ../../source/ref-changelog.md:945 msgid "v1.3.0 (2023-02-06)" msgstr "" -#: ../../source/ref-changelog.md:929 +#: ../../source/ref-changelog.md:951 msgid "" "`Adam Narozniak`, `Alexander Viala Bellander`, `Charles Beauville`, " "`Daniel J. Beutel`, `JDRanpariya`, `Lennart Behme`, `Taner Topal`" msgstr "" -#: ../../source/ref-changelog.md:933 +#: ../../source/ref-changelog.md:955 msgid "" "**Add support for** `workload_id` **and** `group_id` **in Driver API** " "([#1595](https://github.com/adap/flower/pull/1595))" msgstr "" -#: ../../source/ref-changelog.md:935 +#: ../../source/ref-changelog.md:957 msgid "" "The (experimental) Driver API now supports a `workload_id` that can be " "used to identify which workload a task belongs to. It also supports a new" @@ -19220,36 +19306,36 @@ msgid "" " to decide whether they want to handle a task or not." msgstr "" -#: ../../source/ref-changelog.md:937 +#: ../../source/ref-changelog.md:959 msgid "" "**Make Driver API and Fleet API address configurable** " "([#1637](https://github.com/adap/flower/pull/1637))" msgstr "" -#: ../../source/ref-changelog.md:939 +#: ../../source/ref-changelog.md:961 msgid "" "The (experimental) long-running Flower server (Driver API and Fleet API) " "can now configure the server address of both Driver API (via `--driver-" "api-address`) and Fleet API (via `--fleet-api-address`) when starting:" msgstr "" -#: ../../source/ref-changelog.md:941 +#: ../../source/ref-changelog.md:963 msgid "" "`flower-server --driver-api-address \"0.0.0.0:8081\" --fleet-api-address " "\"0.0.0.0:8086\"`" msgstr "" -#: ../../source/ref-changelog.md:943 +#: ../../source/ref-changelog.md:965 msgid "Both IPv4 and IPv6 addresses are supported." msgstr "" -#: ../../source/ref-changelog.md:945 +#: ../../source/ref-changelog.md:967 msgid "" "**Add new example of Federated Learning using fastai and Flower** " "([#1598](https://github.com/adap/flower/pull/1598))" msgstr "" -#: ../../source/ref-changelog.md:947 +#: ../../source/ref-changelog.md:969 msgid "" "A new code example (`quickstart-fastai`) demonstrates federated learning " "with [fastai](https://www.fast.ai/) and Flower. You can find it here: " @@ -19257,14 +19343,14 @@ msgid "" "/quickstart-fastai)." msgstr "" -#: ../../source/ref-changelog.md:949 +#: ../../source/ref-changelog.md:971 msgid "" "**Make Android example compatible with** `flwr >= 1.0.0` **and the latest" " versions of Android** " "([#1603](https://github.com/adap/flower/pull/1603))" msgstr "" -#: ../../source/ref-changelog.md:951 +#: ../../source/ref-changelog.md:973 msgid "" "The Android code example has received a substantial update: the project " "is compatible with Flower 1.0 (and later), the UI received a full " @@ -19272,13 +19358,13 @@ msgid "" "tooling." msgstr "" -#: ../../source/ref-changelog.md:953 +#: ../../source/ref-changelog.md:975 msgid "" "**Add new `FedProx` strategy** " "([#1619](https://github.com/adap/flower/pull/1619))" msgstr "" -#: ../../source/ref-changelog.md:955 +#: ../../source/ref-changelog.md:977 msgid "" "This " "[strategy](https://github.com/adap/flower/blob/main/src/py/flwr/server/strategy/fedprox.py)" @@ -19290,25 +19376,25 @@ msgid "" "respect to the global models." msgstr "" -#: ../../source/ref-changelog.md:957 +#: ../../source/ref-changelog.md:979 msgid "" "**Add new metrics to telemetry events** " "([#1640](https://github.com/adap/flower/pull/1640))" msgstr "" -#: ../../source/ref-changelog.md:959 +#: ../../source/ref-changelog.md:981 msgid "" "An updated event structure allows, for example, the clustering of events " "within the same workload." msgstr "" -#: ../../source/ref-changelog.md:961 +#: ../../source/ref-changelog.md:983 msgid "" "**Add new custom strategy tutorial section** " "[#1623](https://github.com/adap/flower/pull/1623)" msgstr "" -#: ../../source/ref-changelog.md:963 +#: ../../source/ref-changelog.md:985 msgid "" "The Flower tutorial now has a new section that covers implementing a " "custom strategy from scratch: [Open in " @@ -19316,13 +19402,13 @@ msgid "" "/tutorial-build-a-strategy-from-scratch-pytorch.ipynb)" msgstr "" -#: ../../source/ref-changelog.md:965 +#: ../../source/ref-changelog.md:987 msgid "" "**Add new custom serialization tutorial section** " "([#1622](https://github.com/adap/flower/pull/1622))" msgstr "" -#: ../../source/ref-changelog.md:967 +#: ../../source/ref-changelog.md:989 msgid "" "The Flower tutorial now has a new section that covers custom " "serialization: [Open in " @@ -19330,7 +19416,7 @@ msgid "" "/tutorial-customize-the-client-pytorch.ipynb)" msgstr "" -#: ../../source/ref-changelog.md:969 +#: ../../source/ref-changelog.md:991 msgid "" "**General improvements** " "([#1638](https://github.com/adap/flower/pull/1638), " @@ -19368,7 +19454,7 @@ msgid "" "[#1586](https://github.com/adap/flower/pull/1586))" msgstr "" -#: ../../source/ref-changelog.md:973 +#: ../../source/ref-changelog.md:995 msgid "" "**Updated documentation** " "([#1629](https://github.com/adap/flower/pull/1629), " @@ -19380,31 +19466,31 @@ msgid "" "[#1614](https://github.com/adap/flower/pull/1614))" msgstr "" -#: ../../source/ref-changelog.md:975 ../../source/ref-changelog.md:1042 +#: ../../source/ref-changelog.md:997 ../../source/ref-changelog.md:1064 msgid "" "As usual, the documentation has improved quite a bit. It is another step " "in our effort to make the Flower documentation the best documentation of " "any project. Stay tuned and as always, feel free to provide feedback!" msgstr "" -#: ../../source/ref-changelog.md:981 +#: ../../source/ref-changelog.md:1003 msgid "v1.2.0 (2023-01-13)" msgstr "" -#: ../../source/ref-changelog.md:987 +#: ../../source/ref-changelog.md:1009 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Daniel J. Beutel`, `Edoardo`, `L." " Jiang`, `Ragy`, `Taner Topal`, `dannymcy`" msgstr "" -#: ../../source/ref-changelog.md:991 +#: ../../source/ref-changelog.md:1013 msgid "" "**Introduce new Flower Baseline: FedAvg MNIST** " "([#1497](https://github.com/adap/flower/pull/1497), " "[#1552](https://github.com/adap/flower/pull/1552))" msgstr "" -#: ../../source/ref-changelog.md:993 +#: ../../source/ref-changelog.md:1015 msgid "" "Over the coming weeks, we will be releasing a number of new reference " "implementations useful especially to FL newcomers. They will typically " @@ -19415,13 +19501,13 @@ msgid "" "pack-fedavg-mnist-cnn/)" msgstr "" -#: ../../source/ref-changelog.md:995 +#: ../../source/ref-changelog.md:1017 msgid "" "**Improve GPU support in simulations** " "([#1555](https://github.com/adap/flower/pull/1555))" msgstr "" -#: ../../source/ref-changelog.md:997 +#: ../../source/ref-changelog.md:1019 msgid "" "The Ray-based Virtual Client Engine (`start_simulation`) has been updated" " to improve GPU support. The update includes some of the hard-earned " @@ -19429,45 +19515,45 @@ msgid "" "defaults make running GPU-based simulations substantially more robust." msgstr "" -#: ../../source/ref-changelog.md:999 +#: ../../source/ref-changelog.md:1021 msgid "" "**Improve GPU support in Jupyter Notebook tutorials** " "([#1527](https://github.com/adap/flower/pull/1527), " "[#1558](https://github.com/adap/flower/pull/1558))" msgstr "" -#: ../../source/ref-changelog.md:1001 +#: ../../source/ref-changelog.md:1023 msgid "" "Some users reported that Jupyter Notebooks have not always been easy to " "use on GPU instances. We listened and made improvements to all of our " "Jupyter notebooks! Check out the updated notebooks here:" msgstr "" -#: ../../source/ref-changelog.md:1003 +#: ../../source/ref-changelog.md:1025 msgid "" "[An Introduction to Federated Learning](https://flower.ai/docs/framework" "/tutorial-get-started-with-flower-pytorch.html)" msgstr "" -#: ../../source/ref-changelog.md:1004 +#: ../../source/ref-changelog.md:1026 msgid "" "[Strategies in Federated Learning](https://flower.ai/docs/framework" "/tutorial-use-a-federated-learning-strategy-pytorch.html)" msgstr "" -#: ../../source/ref-changelog.md:1005 +#: ../../source/ref-changelog.md:1027 msgid "" "[Building a Strategy](https://flower.ai/docs/framework/tutorial-build-a" "-strategy-from-scratch-pytorch.html)" msgstr "" -#: ../../source/ref-changelog.md:1006 +#: ../../source/ref-changelog.md:1028 msgid "" "[Client and NumPyClient](https://flower.ai/docs/framework/tutorial-" "customize-the-client-pytorch.html)" msgstr "" -#: ../../source/ref-changelog.md:1008 +#: ../../source/ref-changelog.md:1030 msgid "" "**Introduce optional telemetry** " "([#1533](https://github.com/adap/flower/pull/1533), " @@ -19475,7 +19561,7 @@ msgid "" "[#1584](https://github.com/adap/flower/pull/1584))" msgstr "" -#: ../../source/ref-changelog.md:1010 +#: ../../source/ref-changelog.md:1032 msgid "" "After a [request for " "feedback](https://github.com/adap/flower/issues/1534) from the community," @@ -19485,7 +19571,7 @@ msgid "" "used and what challenges users might face." msgstr "" -#: ../../source/ref-changelog.md:1012 +#: ../../source/ref-changelog.md:1034 msgid "" "**Flower is a friendly framework for collaborative AI and data science.**" " Staying true to this statement, Flower makes it easy to disable " @@ -19493,7 +19579,7 @@ msgid "" "[Read more.](https://flower.ai/docs/telemetry.html)." msgstr "" -#: ../../source/ref-changelog.md:1014 +#: ../../source/ref-changelog.md:1036 msgid "" "**Introduce (experimental) Driver API** " "([#1520](https://github.com/adap/flower/pull/1520), " @@ -19505,7 +19591,7 @@ msgid "" "[#1567](https://github.com/adap/flower/pull/1567))" msgstr "" -#: ../../source/ref-changelog.md:1016 +#: ../../source/ref-changelog.md:1038 msgid "" "Flower now has a new (experimental) Driver API which will enable fully " "programmable, async, and multi-tenant Federated Learning and Federated " @@ -19514,7 +19600,7 @@ msgid "" "and you can start building those things now, too." msgstr "" -#: ../../source/ref-changelog.md:1018 +#: ../../source/ref-changelog.md:1040 msgid "" "The Driver API also enables a new execution mode in which the server runs" " indefinitely. Multiple individual workloads can run concurrently and " @@ -19522,26 +19608,26 @@ msgid "" "especially useful for users who want to deploy Flower in production." msgstr "" -#: ../../source/ref-changelog.md:1020 +#: ../../source/ref-changelog.md:1042 msgid "" "To learn more, check out the `mt-pytorch` code example. We look forward " "to you feedback!" msgstr "" -#: ../../source/ref-changelog.md:1022 +#: ../../source/ref-changelog.md:1044 msgid "" "Please note: *The Driver API is still experimental and will likely change" " significantly over time.*" msgstr "" -#: ../../source/ref-changelog.md:1024 +#: ../../source/ref-changelog.md:1046 msgid "" "**Add new Federated Analytics with Pandas example** " "([#1469](https://github.com/adap/flower/pull/1469), " "[#1535](https://github.com/adap/flower/pull/1535))" msgstr "" -#: ../../source/ref-changelog.md:1026 +#: ../../source/ref-changelog.md:1048 msgid "" "A new code example (`quickstart-pandas`) demonstrates federated analytics" " with Pandas and Flower. You can find it here: [quickstart-" @@ -19549,32 +19635,32 @@ msgid "" "pandas)." msgstr "" -#: ../../source/ref-changelog.md:1028 +#: ../../source/ref-changelog.md:1050 msgid "" "**Add new strategies: Krum and MultiKrum** " "([#1481](https://github.com/adap/flower/pull/1481))" msgstr "" -#: ../../source/ref-changelog.md:1030 +#: ../../source/ref-changelog.md:1052 msgid "" "Edoardo, a computer science student at the Sapienza University of Rome, " "contributed a new `Krum` strategy that enables users to easily use Krum " "and MultiKrum in their workloads." msgstr "" -#: ../../source/ref-changelog.md:1032 +#: ../../source/ref-changelog.md:1054 msgid "" "**Update C++ example to be compatible with Flower v1.2.0** " "([#1495](https://github.com/adap/flower/pull/1495))" msgstr "" -#: ../../source/ref-changelog.md:1034 +#: ../../source/ref-changelog.md:1056 msgid "" "The C++ code example has received a substantial update to make it " "compatible with the latest version of Flower." msgstr "" -#: ../../source/ref-changelog.md:1036 +#: ../../source/ref-changelog.md:1058 msgid "" "**General improvements** " "([#1491](https://github.com/adap/flower/pull/1491), " @@ -19592,7 +19678,7 @@ msgid "" "[#1566](https://github.com/adap/flower/pull/1566))" msgstr "" -#: ../../source/ref-changelog.md:1040 +#: ../../source/ref-changelog.md:1062 msgid "" "**Updated documentation** " "([#1494](https://github.com/adap/flower/pull/1494), " @@ -19606,24 +19692,24 @@ msgid "" "[#1515](https://github.com/adap/flower/pull/1515))" msgstr "" -#: ../../source/ref-changelog.md:1044 +#: ../../source/ref-changelog.md:1066 msgid "" "One highlight is the new [first time contributor " "guide](https://flower.ai/docs/first-time-contributors.html): if you've " "never contributed on GitHub before, this is the perfect place to start!" msgstr "" -#: ../../source/ref-changelog.md:1050 +#: ../../source/ref-changelog.md:1072 msgid "v1.1.0 (2022-10-31)" msgstr "" -#: ../../source/ref-changelog.md:1054 +#: ../../source/ref-changelog.md:1076 msgid "" "We would like to give our **special thanks** to all the contributors who " "made the new version of Flower possible (in `git shortlog` order):" msgstr "" -#: ../../source/ref-changelog.md:1056 +#: ../../source/ref-changelog.md:1078 msgid "" "`Akis Linardos`, `Christopher S`, `Daniel J. Beutel`, `George`, `Jan " "Schlicht`, `Mohammad Fares`, `Pedro Porto Buarque de Gusmão`, `Philipp " @@ -19631,14 +19717,14 @@ msgid "" "`danielnugraha`, `edogab33`" msgstr "" -#: ../../source/ref-changelog.md:1060 +#: ../../source/ref-changelog.md:1082 msgid "" "**Introduce Differential Privacy wrappers (preview)** " "([#1357](https://github.com/adap/flower/pull/1357), " "[#1460](https://github.com/adap/flower/pull/1460))" msgstr "" -#: ../../source/ref-changelog.md:1062 +#: ../../source/ref-changelog.md:1084 msgid "" "The first (experimental) preview of pluggable Differential Privacy " "wrappers enables easy configuration and usage of differential privacy " @@ -19647,13 +19733,13 @@ msgid "" "over to the Flower docs, a new explainer goes into more detail." msgstr "" -#: ../../source/ref-changelog.md:1064 +#: ../../source/ref-changelog.md:1086 msgid "" "**New iOS CoreML code example** " "([#1289](https://github.com/adap/flower/pull/1289))" msgstr "" -#: ../../source/ref-changelog.md:1066 +#: ../../source/ref-changelog.md:1088 msgid "" "Flower goes iOS! A massive new code example shows how Flower clients can " "be built for iOS. The code example contains both Flower iOS SDK " @@ -19661,39 +19747,39 @@ msgid "" "on CoreML." msgstr "" -#: ../../source/ref-changelog.md:1068 +#: ../../source/ref-changelog.md:1090 msgid "" "**New FedMedian strategy** " "([#1461](https://github.com/adap/flower/pull/1461))" msgstr "" -#: ../../source/ref-changelog.md:1070 +#: ../../source/ref-changelog.md:1092 msgid "" "The new `FedMedian` strategy implements Federated Median (FedMedian) by " "[Yin et al., 2018](https://arxiv.org/pdf/1803.01498v1.pdf)." msgstr "" -#: ../../source/ref-changelog.md:1072 +#: ../../source/ref-changelog.md:1094 msgid "" "**Log** `Client` **exceptions in Virtual Client Engine** " "([#1493](https://github.com/adap/flower/pull/1493))" msgstr "" -#: ../../source/ref-changelog.md:1074 +#: ../../source/ref-changelog.md:1096 msgid "" "All `Client` exceptions happening in the VCE are now logged by default " "and not just exposed to the configured `Strategy` (via the `failures` " "argument)." msgstr "" -#: ../../source/ref-changelog.md:1076 +#: ../../source/ref-changelog.md:1098 msgid "" "**Improve Virtual Client Engine internals** " "([#1401](https://github.com/adap/flower/pull/1401), " "[#1453](https://github.com/adap/flower/pull/1453))" msgstr "" -#: ../../source/ref-changelog.md:1078 +#: ../../source/ref-changelog.md:1100 msgid "" "Some internals of the Virtual Client Engine have been revamped. The VCE " "now uses Ray 2.0 under the hood, the value type of the `client_resources`" @@ -19701,25 +19787,25 @@ msgid "" "allocated." msgstr "" -#: ../../source/ref-changelog.md:1080 +#: ../../source/ref-changelog.md:1102 msgid "" "**Support optional** `Client`**/**`NumPyClient` **methods in Virtual " "Client Engine**" msgstr "" -#: ../../source/ref-changelog.md:1082 +#: ../../source/ref-changelog.md:1104 msgid "" "The Virtual Client Engine now has full support for optional `Client` (and" " `NumPyClient`) methods." msgstr "" -#: ../../source/ref-changelog.md:1084 +#: ../../source/ref-changelog.md:1106 msgid "" "**Provide type information to packages using** `flwr` " "([#1377](https://github.com/adap/flower/pull/1377))" msgstr "" -#: ../../source/ref-changelog.md:1086 +#: ../../source/ref-changelog.md:1108 msgid "" "The package `flwr` is now bundled with a `py.typed` file indicating that " "the package is typed. This enables typing support for projects or " @@ -19727,20 +19813,20 @@ msgid "" "static type checkers like `mypy`." msgstr "" -#: ../../source/ref-changelog.md:1088 +#: ../../source/ref-changelog.md:1110 msgid "" "**Updated code example** " "([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" msgstr "" -#: ../../source/ref-changelog.md:1090 +#: ../../source/ref-changelog.md:1112 msgid "" "The code examples covering scikit-learn and PyTorch Lightning have been " "updated to work with the latest version of Flower." msgstr "" -#: ../../source/ref-changelog.md:1092 +#: ../../source/ref-changelog.md:1114 msgid "" "**Updated documentation** " "([#1355](https://github.com/adap/flower/pull/1355), " @@ -19762,32 +19848,32 @@ msgid "" "[#1467](https://github.com/adap/flower/pull/1467))" msgstr "" -#: ../../source/ref-changelog.md:1094 +#: ../../source/ref-changelog.md:1116 msgid "" "There have been so many documentation updates that it doesn't even make " "sense to list them individually." msgstr "" -#: ../../source/ref-changelog.md:1096 +#: ../../source/ref-changelog.md:1118 msgid "" "**Restructured documentation** " "([#1387](https://github.com/adap/flower/pull/1387))" msgstr "" -#: ../../source/ref-changelog.md:1098 +#: ../../source/ref-changelog.md:1120 msgid "" "The documentation has been restructured to make it easier to navigate. " "This is just the first step in a larger effort to make the Flower " "documentation the best documentation of any project ever. Stay tuned!" msgstr "" -#: ../../source/ref-changelog.md:1100 +#: ../../source/ref-changelog.md:1122 msgid "" "**Open in Colab button** " "([#1389](https://github.com/adap/flower/pull/1389))" msgstr "" -#: ../../source/ref-changelog.md:1102 +#: ../../source/ref-changelog.md:1124 msgid "" "The four parts of the Flower Federated Learning Tutorial now come with a " "new `Open in Colab` button. No need to install anything on your local " @@ -19795,7 +19881,7 @@ msgid "" "only a single click away." msgstr "" -#: ../../source/ref-changelog.md:1104 +#: ../../source/ref-changelog.md:1126 msgid "" "**Improved tutorial** ([#1468](https://github.com/adap/flower/pull/1468)," " [#1470](https://github.com/adap/flower/pull/1470), " @@ -19805,7 +19891,7 @@ msgid "" "[#1475](https://github.com/adap/flower/pull/1475))" msgstr "" -#: ../../source/ref-changelog.md:1106 +#: ../../source/ref-changelog.md:1128 msgid "" "The Flower Federated Learning Tutorial has two brand-new parts covering " "custom strategies (still WIP) and the distinction between `Client` and " @@ -19813,40 +19899,40 @@ msgid "" "(many small changes and fixes)." msgstr "" -#: ../../source/ref-changelog.md:1112 +#: ../../source/ref-changelog.md:1134 msgid "v1.0.0 (2022-07-28)" msgstr "" -#: ../../source/ref-changelog.md:1114 +#: ../../source/ref-changelog.md:1136 msgid "Highlights" msgstr "" -#: ../../source/ref-changelog.md:1116 +#: ../../source/ref-changelog.md:1138 msgid "Stable **Virtual Client Engine** (accessible via `start_simulation`)" msgstr "" -#: ../../source/ref-changelog.md:1117 +#: ../../source/ref-changelog.md:1139 msgid "All `Client`/`NumPyClient` methods are now optional" msgstr "" -#: ../../source/ref-changelog.md:1118 +#: ../../source/ref-changelog.md:1140 msgid "Configurable `get_parameters`" msgstr "" -#: ../../source/ref-changelog.md:1119 +#: ../../source/ref-changelog.md:1141 msgid "" "Tons of small API cleanups resulting in a more coherent developer " "experience" msgstr "" -#: ../../source/ref-changelog.md:1123 +#: ../../source/ref-changelog.md:1145 msgid "" "We would like to give our **special thanks** to all the contributors who " "made Flower 1.0 possible (in reverse [GitHub " "Contributors](https://github.com/adap/flower/graphs/contributors) order):" msgstr "" -#: ../../source/ref-changelog.md:1125 +#: ../../source/ref-changelog.md:1147 msgid "" "[@rtaiello](https://github.com/rtaiello), " "[@g-pichler](https://github.com/g-pichler), [@rob-" @@ -19886,13 +19972,13 @@ msgid "" "[@danieljanes](https://github.com/danieljanes)." msgstr "" -#: ../../source/ref-changelog.md:1129 +#: ../../source/ref-changelog.md:1151 msgid "" "**All arguments must be passed as keyword arguments** " "([#1338](https://github.com/adap/flower/pull/1338))" msgstr "" -#: ../../source/ref-changelog.md:1131 +#: ../../source/ref-changelog.md:1153 msgid "" "Pass all arguments as keyword arguments, positional arguments are not " "longer supported. Code that uses positional arguments (e.g., " @@ -19902,14 +19988,14 @@ msgid "" "client=FlowerClient())`)." msgstr "" -#: ../../source/ref-changelog.md:1133 +#: ../../source/ref-changelog.md:1155 msgid "" "**Introduce configuration object** `ServerConfig` **in** `start_server` " "**and** `start_simulation` " "([#1317](https://github.com/adap/flower/pull/1317))" msgstr "" -#: ../../source/ref-changelog.md:1135 +#: ../../source/ref-changelog.md:1157 msgid "" "Instead of a config dictionary `{\"num_rounds\": 3, \"round_timeout\": " "600.0}`, `start_server` and `start_simulation` now expect a configuration" @@ -19918,37 +20004,37 @@ msgid "" "safe code easier and the default parameters values more transparent." msgstr "" -#: ../../source/ref-changelog.md:1137 +#: ../../source/ref-changelog.md:1159 msgid "" "**Rename built-in strategy parameters for clarity** " "([#1334](https://github.com/adap/flower/pull/1334))" msgstr "" -#: ../../source/ref-changelog.md:1139 +#: ../../source/ref-changelog.md:1161 msgid "" "The following built-in strategy parameters were renamed to improve " "readability and consistency with other API's:" msgstr "" -#: ../../source/ref-changelog.md:1141 +#: ../../source/ref-changelog.md:1163 msgid "`fraction_eval` --> `fraction_evaluate`" msgstr "" -#: ../../source/ref-changelog.md:1142 +#: ../../source/ref-changelog.md:1164 msgid "`min_eval_clients` --> `min_evaluate_clients`" msgstr "" -#: ../../source/ref-changelog.md:1143 +#: ../../source/ref-changelog.md:1165 msgid "`eval_fn` --> `evaluate_fn`" msgstr "" -#: ../../source/ref-changelog.md:1145 +#: ../../source/ref-changelog.md:1167 msgid "" "**Update default arguments of built-in strategies** " "([#1278](https://github.com/adap/flower/pull/1278))" msgstr "" -#: ../../source/ref-changelog.md:1147 +#: ../../source/ref-changelog.md:1169 msgid "" "All built-in strategies now use `fraction_fit=1.0` and " "`fraction_evaluate=1.0`, which means they select *all* currently " @@ -19957,29 +20043,29 @@ msgid "" "initializing the strategy in the following way:" msgstr "" -#: ../../source/ref-changelog.md:1149 +#: ../../source/ref-changelog.md:1171 msgid "`strategy = FedAvg(fraction_fit=0.1, fraction_evaluate=0.1)`" msgstr "" -#: ../../source/ref-changelog.md:1151 +#: ../../source/ref-changelog.md:1173 msgid "" "**Add** `server_round` **to** `Strategy.evaluate` " "([#1334](https://github.com/adap/flower/pull/1334))" msgstr "" -#: ../../source/ref-changelog.md:1153 +#: ../../source/ref-changelog.md:1175 msgid "" "The `Strategy` method `evaluate` now receives the current round of " "federated learning/evaluation as the first parameter." msgstr "" -#: ../../source/ref-changelog.md:1155 +#: ../../source/ref-changelog.md:1177 msgid "" "**Add** `server_round` **and** `config` **parameters to** `evaluate_fn` " "([#1334](https://github.com/adap/flower/pull/1334))" msgstr "" -#: ../../source/ref-changelog.md:1157 +#: ../../source/ref-changelog.md:1179 msgid "" "The `evaluate_fn` passed to built-in strategies like `FedAvg` now takes " "three parameters: (1) The current round of federated learning/evaluation " @@ -19987,13 +20073,13 @@ msgid "" "and (3) a config dictionary (`config`)." msgstr "" -#: ../../source/ref-changelog.md:1159 +#: ../../source/ref-changelog.md:1181 msgid "" "**Rename** `rnd` **to** `server_round` " "([#1321](https://github.com/adap/flower/pull/1321))" msgstr "" -#: ../../source/ref-changelog.md:1161 +#: ../../source/ref-changelog.md:1183 msgid "" "Several Flower methods and functions (`evaluate_fn`, `configure_fit`, " "`aggregate_fit`, `configure_evaluate`, `aggregate_evaluate`) receive the " @@ -20002,73 +20088,73 @@ msgid "" "has been renamed from `rnd` to `server_round`." msgstr "" -#: ../../source/ref-changelog.md:1163 +#: ../../source/ref-changelog.md:1185 msgid "" "**Move** `flwr.dataset` **to** `flwr_baselines` " "([#1273](https://github.com/adap/flower/pull/1273))" msgstr "" -#: ../../source/ref-changelog.md:1165 +#: ../../source/ref-changelog.md:1187 msgid "The experimental package `flwr.dataset` was migrated to Flower Baselines." msgstr "" -#: ../../source/ref-changelog.md:1167 +#: ../../source/ref-changelog.md:1189 msgid "" "**Remove experimental strategies** " "([#1280](https://github.com/adap/flower/pull/1280))" msgstr "" -#: ../../source/ref-changelog.md:1169 +#: ../../source/ref-changelog.md:1191 msgid "" "Remove unmaintained experimental strategies (`FastAndSlow`, `FedFSv0`, " "`FedFSv1`)." msgstr "" -#: ../../source/ref-changelog.md:1171 +#: ../../source/ref-changelog.md:1193 msgid "" "**Rename** `Weights` **to** `NDArrays` " "([#1258](https://github.com/adap/flower/pull/1258), " "[#1259](https://github.com/adap/flower/pull/1259))" msgstr "" -#: ../../source/ref-changelog.md:1173 +#: ../../source/ref-changelog.md:1195 msgid "" "`flwr.common.Weights` was renamed to `flwr.common.NDArrays` to better " "capture what this type is all about." msgstr "" -#: ../../source/ref-changelog.md:1175 +#: ../../source/ref-changelog.md:1197 msgid "" "**Remove antiquated** `force_final_distributed_eval` **from** " "`start_server` ([#1258](https://github.com/adap/flower/pull/1258), " "[#1259](https://github.com/adap/flower/pull/1259))" msgstr "" -#: ../../source/ref-changelog.md:1177 +#: ../../source/ref-changelog.md:1199 msgid "" "The `start_server` parameter `force_final_distributed_eval` has long been" " a historic artefact, in this release it is finally gone for good." msgstr "" -#: ../../source/ref-changelog.md:1179 +#: ../../source/ref-changelog.md:1201 msgid "" "**Make** `get_parameters` **configurable** " "([#1242](https://github.com/adap/flower/pull/1242))" msgstr "" -#: ../../source/ref-changelog.md:1181 +#: ../../source/ref-changelog.md:1203 msgid "" "The `get_parameters` method now accepts a configuration dictionary, just " "like `get_properties`, `fit`, and `evaluate`." msgstr "" -#: ../../source/ref-changelog.md:1183 +#: ../../source/ref-changelog.md:1205 msgid "" "**Replace** `num_rounds` **in** `start_simulation` **with new** `config` " "**parameter** ([#1281](https://github.com/adap/flower/pull/1281))" msgstr "" -#: ../../source/ref-changelog.md:1185 +#: ../../source/ref-changelog.md:1207 msgid "" "The `start_simulation` function now accepts a configuration dictionary " "`config` instead of the `num_rounds` integer. This improves the " @@ -20076,26 +20162,26 @@ msgid "" "transitioning between the two easier." msgstr "" -#: ../../source/ref-changelog.md:1189 +#: ../../source/ref-changelog.md:1211 msgid "" "**Support Python 3.10** " "([#1320](https://github.com/adap/flower/pull/1320))" msgstr "" -#: ../../source/ref-changelog.md:1191 +#: ../../source/ref-changelog.md:1213 msgid "" "The previous Flower release introduced experimental support for Python " "3.10, this release declares Python 3.10 support as stable." msgstr "" -#: ../../source/ref-changelog.md:1193 +#: ../../source/ref-changelog.md:1215 msgid "" "**Make all** `Client` **and** `NumPyClient` **methods optional** " "([#1260](https://github.com/adap/flower/pull/1260), " "[#1277](https://github.com/adap/flower/pull/1277))" msgstr "" -#: ../../source/ref-changelog.md:1195 +#: ../../source/ref-changelog.md:1217 msgid "" "The `Client`/`NumPyClient` methods `get_properties`, `get_parameters`, " "`fit`, and `evaluate` are all optional. This enables writing clients that" @@ -20103,13 +20189,13 @@ msgid "" "implement `evaluate` when using centralized evaluation!" msgstr "" -#: ../../source/ref-changelog.md:1197 +#: ../../source/ref-changelog.md:1219 msgid "" "**Enable passing a** `Server` **instance to** `start_simulation` " "([#1281](https://github.com/adap/flower/pull/1281))" msgstr "" -#: ../../source/ref-changelog.md:1199 +#: ../../source/ref-changelog.md:1221 msgid "" "Similar to `start_server`, `start_simulation` now accepts a full `Server`" " instance. This enables users to heavily customize the execution of " @@ -20117,7 +20203,7 @@ msgid "" " Virtual Client Engine." msgstr "" -#: ../../source/ref-changelog.md:1201 +#: ../../source/ref-changelog.md:1223 msgid "" "**Update code examples** " "([#1291](https://github.com/adap/flower/pull/1291), " @@ -20125,50 +20211,50 @@ msgid "" "[#1282](https://github.com/adap/flower/pull/1282))" msgstr "" -#: ../../source/ref-changelog.md:1203 +#: ../../source/ref-changelog.md:1225 msgid "" "Many code examples received small or even large maintenance updates, " "among them are" msgstr "" -#: ../../source/ref-changelog.md:1205 +#: ../../source/ref-changelog.md:1227 msgid "`scikit-learn`" msgstr "" -#: ../../source/ref-changelog.md:1206 +#: ../../source/ref-changelog.md:1228 msgid "`simulation_pytorch`" msgstr "" -#: ../../source/ref-changelog.md:1207 +#: ../../source/ref-changelog.md:1229 msgid "`quickstart_pytorch`" msgstr "" -#: ../../source/ref-changelog.md:1208 +#: ../../source/ref-changelog.md:1230 msgid "`quickstart_simulation`" msgstr "" -#: ../../source/ref-changelog.md:1209 +#: ../../source/ref-changelog.md:1231 msgid "`quickstart_tensorflow`" msgstr "" -#: ../../source/ref-changelog.md:1210 +#: ../../source/ref-changelog.md:1232 msgid "`advanced_tensorflow`" msgstr "" -#: ../../source/ref-changelog.md:1212 +#: ../../source/ref-changelog.md:1234 msgid "" "**Remove the obsolete simulation example** " "([#1328](https://github.com/adap/flower/pull/1328))" msgstr "" -#: ../../source/ref-changelog.md:1214 +#: ../../source/ref-changelog.md:1236 msgid "" "Removes the obsolete `simulation` example and renames " "`quickstart_simulation` to `simulation_tensorflow` so it fits withs the " "naming of `simulation_pytorch`" msgstr "" -#: ../../source/ref-changelog.md:1216 +#: ../../source/ref-changelog.md:1238 msgid "" "**Update documentation** " "([#1223](https://github.com/adap/flower/pull/1223), " @@ -20183,7 +20269,7 @@ msgid "" "[#1307](https://github.com/adap/flower/pull/1307))" msgstr "" -#: ../../source/ref-changelog.md:1218 +#: ../../source/ref-changelog.md:1240 msgid "" "One substantial documentation update fixes multiple smaller rendering " "issues, makes titles more succinct to improve navigation, removes a " @@ -20193,24 +20279,24 @@ msgid "" "fixes a number of smaller details!" msgstr "" -#: ../../source/ref-changelog.md:1220 ../../source/ref-changelog.md:1275 -#: ../../source/ref-changelog.md:1344 ../../source/ref-changelog.md:1383 +#: ../../source/ref-changelog.md:1242 ../../source/ref-changelog.md:1297 +#: ../../source/ref-changelog.md:1366 ../../source/ref-changelog.md:1405 msgid "**Minor updates**" msgstr "" -#: ../../source/ref-changelog.md:1222 +#: ../../source/ref-changelog.md:1244 msgid "" "Add round number to fit and evaluate log messages " "([#1266](https://github.com/adap/flower/pull/1266))" msgstr "" -#: ../../source/ref-changelog.md:1223 +#: ../../source/ref-changelog.md:1245 msgid "" "Add secure gRPC connection to the `advanced_tensorflow` code example " "([#847](https://github.com/adap/flower/pull/847))" msgstr "" -#: ../../source/ref-changelog.md:1224 +#: ../../source/ref-changelog.md:1246 msgid "" "Update developer tooling " "([#1231](https://github.com/adap/flower/pull/1231), " @@ -20219,7 +20305,7 @@ msgid "" "[#1310](https://github.com/adap/flower/pull/1310))" msgstr "" -#: ../../source/ref-changelog.md:1225 +#: ../../source/ref-changelog.md:1247 msgid "" "Rename ProtoBuf messages to improve consistency " "([#1214](https://github.com/adap/flower/pull/1214), " @@ -20227,11 +20313,11 @@ msgid "" "[#1259](https://github.com/adap/flower/pull/1259))" msgstr "" -#: ../../source/ref-changelog.md:1227 +#: ../../source/ref-changelog.md:1249 msgid "v0.19.0 (2022-05-18)" msgstr "" -#: ../../source/ref-changelog.md:1231 +#: ../../source/ref-changelog.md:1253 msgid "" "**Flower Baselines (preview): FedOpt, FedBN, FedAvgM** " "([#919](https://github.com/adap/flower/pull/919), " @@ -20239,7 +20325,7 @@ msgid "" "[#914](https://github.com/adap/flower/pull/914))" msgstr "" -#: ../../source/ref-changelog.md:1233 +#: ../../source/ref-changelog.md:1255 msgid "" "The first preview release of Flower Baselines has arrived! We're " "kickstarting Flower Baselines with implementations of FedOpt (FedYogi, " @@ -20250,39 +20336,39 @@ msgid "" "contribute-baselines.html)." msgstr "" -#: ../../source/ref-changelog.md:1235 +#: ../../source/ref-changelog.md:1257 msgid "" "**C++ client SDK (preview) and code example** " "([#1111](https://github.com/adap/flower/pull/1111))" msgstr "" -#: ../../source/ref-changelog.md:1237 +#: ../../source/ref-changelog.md:1259 msgid "" "Preview support for Flower clients written in C++. The C++ preview " "includes a Flower client SDK and a quickstart code example that " "demonstrates a simple C++ client using the SDK." msgstr "" -#: ../../source/ref-changelog.md:1239 +#: ../../source/ref-changelog.md:1261 msgid "" "**Add experimental support for Python 3.10 and Python 3.11** " "([#1135](https://github.com/adap/flower/pull/1135))" msgstr "" -#: ../../source/ref-changelog.md:1241 +#: ../../source/ref-changelog.md:1263 msgid "" "Python 3.10 is the latest stable release of Python and Python 3.11 is due" " to be released in October. This Flower release adds experimental support" " for both Python versions." msgstr "" -#: ../../source/ref-changelog.md:1243 +#: ../../source/ref-changelog.md:1265 msgid "" "**Aggregate custom metrics through user-provided functions** " "([#1144](https://github.com/adap/flower/pull/1144))" msgstr "" -#: ../../source/ref-changelog.md:1245 +#: ../../source/ref-changelog.md:1267 msgid "" "Custom metrics (e.g., `accuracy`) can now be aggregated without having to" " customize the strategy. Built-in strategies support two new arguments, " @@ -20290,13 +20376,13 @@ msgid "" "allow passing custom metric aggregation functions." msgstr "" -#: ../../source/ref-changelog.md:1247 +#: ../../source/ref-changelog.md:1269 msgid "" "**User-configurable round timeout** " "([#1162](https://github.com/adap/flower/pull/1162))" msgstr "" -#: ../../source/ref-changelog.md:1249 +#: ../../source/ref-changelog.md:1271 msgid "" "A new configuration value allows the round timeout to be set for " "`start_server` and `start_simulation`. If the `config` dictionary " @@ -20305,14 +20391,14 @@ msgid "" "connection." msgstr "" -#: ../../source/ref-changelog.md:1251 +#: ../../source/ref-changelog.md:1273 msgid "" "**Enable both federated evaluation and centralized evaluation to be used " "at the same time in all built-in strategies** " "([#1091](https://github.com/adap/flower/pull/1091))" msgstr "" -#: ../../source/ref-changelog.md:1253 +#: ../../source/ref-changelog.md:1275 msgid "" "Built-in strategies can now perform both federated evaluation (i.e., " "client-side) and centralized evaluation (i.e., server-side) in the same " @@ -20320,82 +20406,82 @@ msgid "" " `0.0`." msgstr "" -#: ../../source/ref-changelog.md:1255 +#: ../../source/ref-changelog.md:1277 msgid "" "**Two new Jupyter Notebook tutorials** " "([#1141](https://github.com/adap/flower/pull/1141))" msgstr "" -#: ../../source/ref-changelog.md:1257 +#: ../../source/ref-changelog.md:1279 msgid "" "Two Jupyter Notebook tutorials (compatible with Google Colab) explain " "basic and intermediate Flower features:" msgstr "" -#: ../../source/ref-changelog.md:1259 +#: ../../source/ref-changelog.md:1281 msgid "" "*An Introduction to Federated Learning*: [Open in " "Colab](https://colab.research.google.com/github/adap/flower/blob/main/tutorials/Flower-1" "-Intro-to-FL-PyTorch.ipynb)" msgstr "" -#: ../../source/ref-changelog.md:1261 +#: ../../source/ref-changelog.md:1283 msgid "" "*Using Strategies in Federated Learning*: [Open in " "Colab](https://colab.research.google.com/github/adap/flower/blob/main/tutorials/Flower-2" "-Strategies-in-FL-PyTorch.ipynb)" msgstr "" -#: ../../source/ref-changelog.md:1263 +#: ../../source/ref-changelog.md:1285 msgid "" "**New FedAvgM strategy (Federated Averaging with Server Momentum)** " "([#1076](https://github.com/adap/flower/pull/1076))" msgstr "" -#: ../../source/ref-changelog.md:1265 +#: ../../source/ref-changelog.md:1287 msgid "" "The new `FedAvgM` strategy implements Federated Averaging with Server " "Momentum \\[Hsu et al., 2019\\]." msgstr "" -#: ../../source/ref-changelog.md:1267 +#: ../../source/ref-changelog.md:1289 msgid "" "**New advanced PyTorch code example** " "([#1007](https://github.com/adap/flower/pull/1007))" msgstr "" -#: ../../source/ref-changelog.md:1269 +#: ../../source/ref-changelog.md:1291 msgid "" "A new code example (`advanced_pytorch`) demonstrates advanced Flower " "concepts with PyTorch." msgstr "" -#: ../../source/ref-changelog.md:1271 +#: ../../source/ref-changelog.md:1293 msgid "" "**New JAX code example** " "([#906](https://github.com/adap/flower/pull/906), " "[#1143](https://github.com/adap/flower/pull/1143))" msgstr "" -#: ../../source/ref-changelog.md:1273 +#: ../../source/ref-changelog.md:1295 msgid "" "A new code example (`jax_from_centralized_to_federated`) shows federated " "learning with JAX and Flower." msgstr "" -#: ../../source/ref-changelog.md:1277 +#: ../../source/ref-changelog.md:1299 msgid "" "New option to keep Ray running if Ray was already initialized in " "`start_simulation` ([#1177](https://github.com/adap/flower/pull/1177))" msgstr "" -#: ../../source/ref-changelog.md:1278 +#: ../../source/ref-changelog.md:1300 msgid "" "Add support for custom `ClientManager` as a `start_simulation` parameter " "([#1171](https://github.com/adap/flower/pull/1171))" msgstr "" -#: ../../source/ref-changelog.md:1279 +#: ../../source/ref-changelog.md:1301 msgid "" "New documentation for [implementing " "strategies](https://flower.ai/docs/framework/how-to-implement-" @@ -20403,72 +20489,72 @@ msgid "" "[#1175](https://github.com/adap/flower/pull/1175))" msgstr "" -#: ../../source/ref-changelog.md:1280 +#: ../../source/ref-changelog.md:1302 msgid "" "New mobile-friendly documentation theme " "([#1174](https://github.com/adap/flower/pull/1174))" msgstr "" -#: ../../source/ref-changelog.md:1281 +#: ../../source/ref-changelog.md:1303 msgid "" "Limit version range for (optional) `ray` dependency to include only " "compatible releases (`>=1.9.2,<1.12.0`) " "([#1205](https://github.com/adap/flower/pull/1205))" msgstr "" -#: ../../source/ref-changelog.md:1285 +#: ../../source/ref-changelog.md:1307 msgid "" "**Remove deprecated support for Python 3.6** " "([#871](https://github.com/adap/flower/pull/871))" msgstr "" -#: ../../source/ref-changelog.md:1286 +#: ../../source/ref-changelog.md:1308 msgid "" "**Remove deprecated KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" msgstr "" -#: ../../source/ref-changelog.md:1287 +#: ../../source/ref-changelog.md:1309 msgid "" "**Remove deprecated no-op extra installs** " "([#973](https://github.com/adap/flower/pull/973))" msgstr "" -#: ../../source/ref-changelog.md:1288 +#: ../../source/ref-changelog.md:1310 msgid "" "**Remove deprecated proto fields from** `FitRes` **and** `EvaluateRes` " "([#869](https://github.com/adap/flower/pull/869))" msgstr "" -#: ../../source/ref-changelog.md:1289 +#: ../../source/ref-changelog.md:1311 msgid "" "**Remove deprecated QffedAvg strategy (replaced by QFedAvg)** " "([#1107](https://github.com/adap/flower/pull/1107))" msgstr "" -#: ../../source/ref-changelog.md:1290 +#: ../../source/ref-changelog.md:1312 msgid "" "**Remove deprecated DefaultStrategy strategy** " "([#1142](https://github.com/adap/flower/pull/1142))" msgstr "" -#: ../../source/ref-changelog.md:1291 +#: ../../source/ref-changelog.md:1313 msgid "" "**Remove deprecated support for eval_fn accuracy return value** " "([#1142](https://github.com/adap/flower/pull/1142))" msgstr "" -#: ../../source/ref-changelog.md:1292 +#: ../../source/ref-changelog.md:1314 msgid "" "**Remove deprecated support for passing initial parameters as NumPy " "ndarrays** ([#1142](https://github.com/adap/flower/pull/1142))" msgstr "" -#: ../../source/ref-changelog.md:1294 +#: ../../source/ref-changelog.md:1316 msgid "v0.18.0 (2022-02-28)" msgstr "" -#: ../../source/ref-changelog.md:1298 +#: ../../source/ref-changelog.md:1320 msgid "" "**Improved Virtual Client Engine compatibility with Jupyter Notebook / " "Google Colab** ([#866](https://github.com/adap/flower/pull/866), " @@ -20477,7 +20563,7 @@ msgid "" "[#1036](https://github.com/adap/flower/pull/1036))" msgstr "" -#: ../../source/ref-changelog.md:1300 +#: ../../source/ref-changelog.md:1322 msgid "" "Simulations (using the Virtual Client Engine through `start_simulation`) " "now work more smoothly on Jupyter Notebooks (incl. Google Colab) after " @@ -20485,38 +20571,38 @@ msgid "" "'flwr[simulation]'`)." msgstr "" -#: ../../source/ref-changelog.md:1302 +#: ../../source/ref-changelog.md:1324 msgid "" "**New Jupyter Notebook code example** " "([#833](https://github.com/adap/flower/pull/833))" msgstr "" -#: ../../source/ref-changelog.md:1304 +#: ../../source/ref-changelog.md:1326 msgid "" "A new code example (`quickstart_simulation`) demonstrates Flower " "simulations using the Virtual Client Engine through Jupyter Notebook " "(incl. Google Colab)." msgstr "" -#: ../../source/ref-changelog.md:1306 +#: ../../source/ref-changelog.md:1328 msgid "" "**Client properties (feature preview)** " "([#795](https://github.com/adap/flower/pull/795))" msgstr "" -#: ../../source/ref-changelog.md:1308 +#: ../../source/ref-changelog.md:1330 msgid "" "Clients can implement a new method `get_properties` to enable server-side" " strategies to query client properties." msgstr "" -#: ../../source/ref-changelog.md:1310 +#: ../../source/ref-changelog.md:1332 msgid "" "**Experimental Android support with TFLite** " "([#865](https://github.com/adap/flower/pull/865))" msgstr "" -#: ../../source/ref-changelog.md:1312 +#: ../../source/ref-changelog.md:1334 msgid "" "Android support has finally arrived in `main`! Flower is both client-" "agnostic and framework-agnostic by design. One can integrate arbitrary " @@ -20524,7 +20610,7 @@ msgid "" "become a lot easier." msgstr "" -#: ../../source/ref-changelog.md:1314 +#: ../../source/ref-changelog.md:1336 msgid "" "The example uses TFLite on the client side, along with a new " "`FedAvgAndroid` strategy. The Android client and `FedAvgAndroid` are " @@ -20533,13 +20619,13 @@ msgid "" " functionality from `FedAvgAndroid`." msgstr "" -#: ../../source/ref-changelog.md:1316 +#: ../../source/ref-changelog.md:1338 msgid "" "**Make gRPC keepalive time user-configurable and decrease default " "keepalive time** ([#1069](https://github.com/adap/flower/pull/1069))" msgstr "" -#: ../../source/ref-changelog.md:1318 +#: ../../source/ref-changelog.md:1340 msgid "" "The default gRPC keepalive time has been reduced to increase the " "compatibility of Flower with more cloud environments (for example, " @@ -20547,31 +20633,31 @@ msgid "" " gRPC stack based on specific requirements." msgstr "" -#: ../../source/ref-changelog.md:1320 +#: ../../source/ref-changelog.md:1342 msgid "" "**New differential privacy example using Opacus and PyTorch** " "([#805](https://github.com/adap/flower/pull/805))" msgstr "" -#: ../../source/ref-changelog.md:1322 +#: ../../source/ref-changelog.md:1344 msgid "" "A new code example (`opacus`) demonstrates differentially-private " "federated learning with Opacus, PyTorch, and Flower." msgstr "" -#: ../../source/ref-changelog.md:1324 +#: ../../source/ref-changelog.md:1346 msgid "" "**New Hugging Face Transformers code example** " "([#863](https://github.com/adap/flower/pull/863))" msgstr "" -#: ../../source/ref-changelog.md:1326 +#: ../../source/ref-changelog.md:1348 msgid "" "A new code example (`quickstart_huggingface`) demonstrates usage of " "Hugging Face Transformers with Flower." msgstr "" -#: ../../source/ref-changelog.md:1328 +#: ../../source/ref-changelog.md:1350 msgid "" "**New MLCube code example** " "([#779](https://github.com/adap/flower/pull/779), " @@ -20580,13 +20666,13 @@ msgid "" "[#1090](https://github.com/adap/flower/pull/1090))" msgstr "" -#: ../../source/ref-changelog.md:1330 +#: ../../source/ref-changelog.md:1352 msgid "" "A new code example (`quickstart_mlcube`) demonstrates usage of MLCube " "with Flower." msgstr "" -#: ../../source/ref-changelog.md:1332 +#: ../../source/ref-changelog.md:1354 msgid "" "**SSL-enabled server and client** " "([#842](https://github.com/adap/flower/pull/842), " @@ -20597,33 +20683,33 @@ msgid "" "[#994](https://github.com/adap/flower/pull/994))" msgstr "" -#: ../../source/ref-changelog.md:1334 +#: ../../source/ref-changelog.md:1356 msgid "" "SSL enables secure encrypted connections between clients and servers. " "This release open-sources the Flower secure gRPC implementation to make " "encrypted communication channels accessible to all Flower users." msgstr "" -#: ../../source/ref-changelog.md:1336 +#: ../../source/ref-changelog.md:1358 msgid "" "**Updated** `FedAdam` **and** `FedYogi` **strategies** " "([#885](https://github.com/adap/flower/pull/885), " "[#895](https://github.com/adap/flower/pull/895))" msgstr "" -#: ../../source/ref-changelog.md:1338 +#: ../../source/ref-changelog.md:1360 msgid "" "`FedAdam` and `FedAdam` match the latest version of the Adaptive " "Federated Optimization paper." msgstr "" -#: ../../source/ref-changelog.md:1340 +#: ../../source/ref-changelog.md:1362 msgid "" "**Initialize** `start_simulation` **with a list of client IDs** " "([#860](https://github.com/adap/flower/pull/860))" msgstr "" -#: ../../source/ref-changelog.md:1342 +#: ../../source/ref-changelog.md:1364 msgid "" "`start_simulation` can now be called with a list of client IDs " "(`clients_ids`, type: `List[str]`). Those IDs will be passed to the " @@ -20632,55 +20718,55 @@ msgid "" "identifiers." msgstr "" -#: ../../source/ref-changelog.md:1346 +#: ../../source/ref-changelog.md:1368 msgid "" "Update `num_examples` calculation in PyTorch code examples in " "([#909](https://github.com/adap/flower/pull/909))" msgstr "" -#: ../../source/ref-changelog.md:1347 +#: ../../source/ref-changelog.md:1369 msgid "" "Expose Flower version through `flwr.__version__` " "([#952](https://github.com/adap/flower/pull/952))" msgstr "" -#: ../../source/ref-changelog.md:1348 +#: ../../source/ref-changelog.md:1370 msgid "" "`start_server` in `app.py` now returns a `History` object containing " "metrics from training ([#974](https://github.com/adap/flower/pull/974))" msgstr "" -#: ../../source/ref-changelog.md:1349 +#: ../../source/ref-changelog.md:1371 msgid "" "Make `max_workers` (used by `ThreadPoolExecutor`) configurable " "([#978](https://github.com/adap/flower/pull/978))" msgstr "" -#: ../../source/ref-changelog.md:1350 +#: ../../source/ref-changelog.md:1372 msgid "" "Increase sleep time after server start to three seconds in all code " "examples ([#1086](https://github.com/adap/flower/pull/1086))" msgstr "" -#: ../../source/ref-changelog.md:1351 +#: ../../source/ref-changelog.md:1373 msgid "" "Added a new FAQ section to the documentation " "([#948](https://github.com/adap/flower/pull/948))" msgstr "" -#: ../../source/ref-changelog.md:1352 +#: ../../source/ref-changelog.md:1374 msgid "" "And many more under-the-hood changes, library updates, documentation " "changes, and tooling improvements!" msgstr "" -#: ../../source/ref-changelog.md:1356 +#: ../../source/ref-changelog.md:1378 msgid "" "**Removed** `flwr_example` **and** `flwr_experimental` **from release " "build** ([#869](https://github.com/adap/flower/pull/869))" msgstr "" -#: ../../source/ref-changelog.md:1358 +#: ../../source/ref-changelog.md:1380 msgid "" "The packages `flwr_example` and `flwr_experimental` have been deprecated " "since Flower 0.12.0 and they are not longer included in Flower release " @@ -20689,11 +20775,11 @@ msgid "" "an upcoming release." msgstr "" -#: ../../source/ref-changelog.md:1360 +#: ../../source/ref-changelog.md:1382 msgid "v0.17.0 (2021-09-24)" msgstr "" -#: ../../source/ref-changelog.md:1364 +#: ../../source/ref-changelog.md:1386 msgid "" "**Experimental virtual client engine** " "([#781](https://github.com/adap/flower/pull/781) " @@ -20701,7 +20787,7 @@ msgid "" "[#791](https://github.com/adap/flower/pull/791))" msgstr "" -#: ../../source/ref-changelog.md:1366 +#: ../../source/ref-changelog.md:1388 msgid "" "One of Flower's goals is to enable research at scale. This release " "enables a first (experimental) peek at a major new feature, codenamed the" @@ -20711,7 +20797,7 @@ msgid "" "code examples called `quickstart_simulation` and `simulation_pytorch`." msgstr "" -#: ../../source/ref-changelog.md:1368 +#: ../../source/ref-changelog.md:1390 msgid "" "The feature is still experimental, so there's no stability guarantee for " "the API. It's also not quite ready for prime time and comes with a few " @@ -20719,86 +20805,86 @@ msgid "" "out and share their thoughts." msgstr "" -#: ../../source/ref-changelog.md:1370 +#: ../../source/ref-changelog.md:1392 msgid "" "**New built-in strategies** " "([#828](https://github.com/adap/flower/pull/828) " "[#822](https://github.com/adap/flower/pull/822))" msgstr "" -#: ../../source/ref-changelog.md:1372 +#: ../../source/ref-changelog.md:1394 msgid "" "FedYogi - Federated learning strategy using Yogi on server-side. " "Implementation based on https://arxiv.org/abs/2003.00295" msgstr "" -#: ../../source/ref-changelog.md:1373 +#: ../../source/ref-changelog.md:1395 msgid "" "FedAdam - Federated learning strategy using Adam on server-side. " "Implementation based on https://arxiv.org/abs/2003.00295" msgstr "" -#: ../../source/ref-changelog.md:1375 +#: ../../source/ref-changelog.md:1397 msgid "" "**New PyTorch Lightning code example** " "([#617](https://github.com/adap/flower/pull/617))" msgstr "" -#: ../../source/ref-changelog.md:1377 +#: ../../source/ref-changelog.md:1399 msgid "" "**New Variational Auto-Encoder code example** " "([#752](https://github.com/adap/flower/pull/752))" msgstr "" -#: ../../source/ref-changelog.md:1379 +#: ../../source/ref-changelog.md:1401 msgid "" "**New scikit-learn code example** " "([#748](https://github.com/adap/flower/pull/748))" msgstr "" -#: ../../source/ref-changelog.md:1381 +#: ../../source/ref-changelog.md:1403 msgid "" "**New experimental TensorBoard strategy** " "([#789](https://github.com/adap/flower/pull/789))" msgstr "" -#: ../../source/ref-changelog.md:1385 +#: ../../source/ref-changelog.md:1407 msgid "" "Improved advanced TensorFlow code example " "([#769](https://github.com/adap/flower/pull/769))" msgstr "" -#: ../../source/ref-changelog.md:1386 +#: ../../source/ref-changelog.md:1408 msgid "" "Warning when `min_available_clients` is misconfigured " "([#830](https://github.com/adap/flower/pull/830))" msgstr "" -#: ../../source/ref-changelog.md:1387 +#: ../../source/ref-changelog.md:1409 msgid "" "Improved gRPC server docs " "([#841](https://github.com/adap/flower/pull/841))" msgstr "" -#: ../../source/ref-changelog.md:1388 +#: ../../source/ref-changelog.md:1410 msgid "" "Improved error message in `NumPyClient` " "([#851](https://github.com/adap/flower/pull/851))" msgstr "" -#: ../../source/ref-changelog.md:1389 +#: ../../source/ref-changelog.md:1411 msgid "" "Improved PyTorch quickstart code example " "([#852](https://github.com/adap/flower/pull/852))" msgstr "" -#: ../../source/ref-changelog.md:1393 +#: ../../source/ref-changelog.md:1415 msgid "" "**Disabled final distributed evaluation** " "([#800](https://github.com/adap/flower/pull/800))" msgstr "" -#: ../../source/ref-changelog.md:1395 +#: ../../source/ref-changelog.md:1417 msgid "" "Prior behaviour was to perform a final round of distributed evaluation on" " all connected clients, which is often not required (e.g., when using " @@ -20806,13 +20892,13 @@ msgid "" "`force_final_distributed_eval=True` to `start_server`." msgstr "" -#: ../../source/ref-changelog.md:1397 +#: ../../source/ref-changelog.md:1419 msgid "" "**Renamed q-FedAvg strategy** " "([#802](https://github.com/adap/flower/pull/802))" msgstr "" -#: ../../source/ref-changelog.md:1399 +#: ../../source/ref-changelog.md:1421 msgid "" "The strategy named `QffedAvg` was renamed to `QFedAvg` to better reflect " "the notation given in the original paper (q-FFL is the optimization " @@ -20821,14 +20907,14 @@ msgid "" " (it will be removed in a future release)." msgstr "" -#: ../../source/ref-changelog.md:1401 +#: ../../source/ref-changelog.md:1423 msgid "" "**Deprecated and renamed code example** `simulation_pytorch` **to** " "`simulation_pytorch_legacy` " "([#791](https://github.com/adap/flower/pull/791))" msgstr "" -#: ../../source/ref-changelog.md:1403 +#: ../../source/ref-changelog.md:1425 msgid "" "This example has been replaced by a new example. The new example is based" " on the experimental virtual client engine, which will become the new " @@ -20837,27 +20923,27 @@ msgid "" "removed in the future." msgstr "" -#: ../../source/ref-changelog.md:1405 +#: ../../source/ref-changelog.md:1427 msgid "v0.16.0 (2021-05-11)" msgstr "" -#: ../../source/ref-changelog.md:1409 +#: ../../source/ref-changelog.md:1431 msgid "" "**New built-in strategies** " "([#549](https://github.com/adap/flower/pull/549))" msgstr "" -#: ../../source/ref-changelog.md:1411 +#: ../../source/ref-changelog.md:1433 msgid "(abstract) FedOpt" msgstr "" -#: ../../source/ref-changelog.md:1414 +#: ../../source/ref-changelog.md:1436 msgid "" "**Custom metrics for server and strategies** " "([#717](https://github.com/adap/flower/pull/717))" msgstr "" -#: ../../source/ref-changelog.md:1416 +#: ../../source/ref-changelog.md:1438 msgid "" "The Flower server is now fully task-agnostic, all remaining instances of " "task-specific metrics (such as `accuracy`) have been replaced by custom " @@ -20866,7 +20952,7 @@ msgid "" "release, custom metrics replace task-specific metrics on the server." msgstr "" -#: ../../source/ref-changelog.md:1418 +#: ../../source/ref-changelog.md:1440 msgid "" "Custom metric dictionaries are now used in two user-facing APIs: they are" " returned from Strategy methods `aggregate_fit`/`aggregate_evaluate` and " @@ -20876,7 +20962,7 @@ msgid "" "track of." msgstr "" -#: ../../source/ref-changelog.md:1420 +#: ../../source/ref-changelog.md:1442 msgid "" "Strategy implementations should migrate their `aggregate_fit` and " "`aggregate_evaluate` methods to the new return type (e.g., by simply " @@ -20884,19 +20970,19 @@ msgid "" " from `return loss, accuracy` to `return loss, {\"accuracy\": accuracy}`." msgstr "" -#: ../../source/ref-changelog.md:1422 +#: ../../source/ref-changelog.md:1444 msgid "" "Flower 0.15-style return types are deprecated (but still supported), " "compatibility will be removed in a future release." msgstr "" -#: ../../source/ref-changelog.md:1424 +#: ../../source/ref-changelog.md:1446 msgid "" "**Migration warnings for deprecated functionality** " "([#690](https://github.com/adap/flower/pull/690))" msgstr "" -#: ../../source/ref-changelog.md:1426 +#: ../../source/ref-changelog.md:1448 msgid "" "Earlier versions of Flower were often migrated to new APIs, while " "maintaining compatibility with legacy APIs. This release introduces " @@ -20905,7 +20991,7 @@ msgid "" "recent APIs, thus easing the transition from one release to another." msgstr "" -#: ../../source/ref-changelog.md:1428 +#: ../../source/ref-changelog.md:1450 msgid "" "Improved docs and docstrings " "([#691](https://github.com/adap/flower/pull/691) " @@ -20913,11 +20999,11 @@ msgid "" "[#713](https://github.com/adap/flower/pull/713))" msgstr "" -#: ../../source/ref-changelog.md:1430 +#: ../../source/ref-changelog.md:1452 msgid "MXNet example and documentation" msgstr "" -#: ../../source/ref-changelog.md:1432 +#: ../../source/ref-changelog.md:1454 msgid "" "FedBN implementation in example PyTorch: From Centralized To Federated " "([#696](https://github.com/adap/flower/pull/696) " @@ -20925,13 +21011,13 @@ msgid "" "[#705](https://github.com/adap/flower/pull/705))" msgstr "" -#: ../../source/ref-changelog.md:1436 +#: ../../source/ref-changelog.md:1458 msgid "" "**Serialization-agnostic server** " "([#721](https://github.com/adap/flower/pull/721))" msgstr "" -#: ../../source/ref-changelog.md:1438 +#: ../../source/ref-changelog.md:1460 msgid "" "The Flower server is now fully serialization-agnostic. Prior usage of " "class `Weights` (which represents parameters as deserialized NumPy " @@ -20942,7 +21028,7 @@ msgid "" "serialization/deserialization)." msgstr "" -#: ../../source/ref-changelog.md:1440 +#: ../../source/ref-changelog.md:1462 msgid "" "Built-in strategies implement this approach by handling serialization and" " deserialization to/from `Weights` internally. Custom/3rd-party Strategy " @@ -20952,31 +21038,31 @@ msgid "" " easily migrate to the new format." msgstr "" -#: ../../source/ref-changelog.md:1442 +#: ../../source/ref-changelog.md:1464 msgid "" "Deprecated `flwr.server.Server.evaluate`, use " "`flwr.server.Server.evaluate_round` instead " "([#717](https://github.com/adap/flower/pull/717))" msgstr "" -#: ../../source/ref-changelog.md:1444 +#: ../../source/ref-changelog.md:1466 msgid "v0.15.0 (2021-03-12)" msgstr "" -#: ../../source/ref-changelog.md:1448 +#: ../../source/ref-changelog.md:1470 msgid "" "**Server-side parameter initialization** " "([#658](https://github.com/adap/flower/pull/658))" msgstr "" -#: ../../source/ref-changelog.md:1450 +#: ../../source/ref-changelog.md:1472 msgid "" "Model parameters can now be initialized on the server-side. Server-side " "parameter initialization works via a new `Strategy` method called " "`initialize_parameters`." msgstr "" -#: ../../source/ref-changelog.md:1452 +#: ../../source/ref-changelog.md:1474 msgid "" "Built-in strategies support a new constructor argument called " "`initial_parameters` to set the initial parameters. Built-in strategies " @@ -20984,7 +21070,7 @@ msgid "" "delete them to free the memory afterwards." msgstr "" -#: ../../source/ref-changelog.md:1471 +#: ../../source/ref-changelog.md:1493 msgid "" "If no initial parameters are provided to the strategy, the server will " "continue to use the current behaviour (namely, it will ask one of the " @@ -20992,17 +21078,17 @@ msgid "" "parameters)." msgstr "" -#: ../../source/ref-changelog.md:1475 +#: ../../source/ref-changelog.md:1497 msgid "" "Deprecate `flwr.server.strategy.DefaultStrategy` (migrate to " "`flwr.server.strategy.FedAvg`, which is equivalent)" msgstr "" -#: ../../source/ref-changelog.md:1477 +#: ../../source/ref-changelog.md:1499 msgid "v0.14.0 (2021-02-18)" msgstr "" -#: ../../source/ref-changelog.md:1481 +#: ../../source/ref-changelog.md:1503 msgid "" "**Generalized** `Client.fit` **and** `Client.evaluate` **return values** " "([#610](https://github.com/adap/flower/pull/610) " @@ -21010,7 +21096,7 @@ msgid "" "[#633](https://github.com/adap/flower/pull/633))" msgstr "" -#: ../../source/ref-changelog.md:1483 +#: ../../source/ref-changelog.md:1505 msgid "" "Clients can now return an additional dictionary mapping `str` keys to " "values of the following types: `bool`, `bytes`, `float`, `int`, `str`. " @@ -21018,7 +21104,7 @@ msgid "" "and make use of them on the server side!" msgstr "" -#: ../../source/ref-changelog.md:1485 +#: ../../source/ref-changelog.md:1507 msgid "" "This improvement also allowed for more consistent return types between " "`fit` and `evaluate`: `evaluate` should now return a tuple `(float, int, " @@ -21026,7 +21112,7 @@ msgid "" "holding arbitrary problem-specific values like accuracy." msgstr "" -#: ../../source/ref-changelog.md:1487 +#: ../../source/ref-changelog.md:1509 msgid "" "In case you wondered: this feature is compatible with existing projects, " "the additional dictionary return value is optional. New code should " @@ -21036,19 +21122,19 @@ msgid "" "details." msgstr "" -#: ../../source/ref-changelog.md:1489 +#: ../../source/ref-changelog.md:1511 msgid "" "*Code example:* note the additional dictionary return values in both " "`FlwrClient.fit` and `FlwrClient.evaluate`:" msgstr "" -#: ../../source/ref-changelog.md:1504 +#: ../../source/ref-changelog.md:1526 msgid "" "**Generalized** `config` **argument in** `Client.fit` **and** " "`Client.evaluate` ([#595](https://github.com/adap/flower/pull/595))" msgstr "" -#: ../../source/ref-changelog.md:1506 +#: ../../source/ref-changelog.md:1528 msgid "" "The `config` argument used to be of type `Dict[str, str]`, which means " "that dictionary values were expected to be strings. The new release " @@ -21056,58 +21142,58 @@ msgid "" "`bytes`, `float`, `int`, `str`." msgstr "" -#: ../../source/ref-changelog.md:1508 +#: ../../source/ref-changelog.md:1530 msgid "" "This means one can now pass almost arbitrary values to `fit`/`evaluate` " "using the `config` dictionary. Yay, no more `str(epochs)` on the server-" "side and `int(config[\"epochs\"])` on the client side!" msgstr "" -#: ../../source/ref-changelog.md:1510 +#: ../../source/ref-changelog.md:1532 msgid "" "*Code example:* note that the `config` dictionary now contains non-`str` " "values in both `Client.fit` and `Client.evaluate`:" msgstr "" -#: ../../source/ref-changelog.md:1527 +#: ../../source/ref-changelog.md:1549 msgid "v0.13.0 (2021-01-08)" msgstr "" -#: ../../source/ref-changelog.md:1531 +#: ../../source/ref-changelog.md:1553 msgid "" "New example: PyTorch From Centralized To Federated " "([#549](https://github.com/adap/flower/pull/549))" msgstr "" -#: ../../source/ref-changelog.md:1532 +#: ../../source/ref-changelog.md:1554 msgid "Improved documentation" msgstr "" -#: ../../source/ref-changelog.md:1533 +#: ../../source/ref-changelog.md:1555 msgid "New documentation theme ([#551](https://github.com/adap/flower/pull/551))" msgstr "" -#: ../../source/ref-changelog.md:1534 +#: ../../source/ref-changelog.md:1556 msgid "New API reference ([#554](https://github.com/adap/flower/pull/554))" msgstr "" -#: ../../source/ref-changelog.md:1535 +#: ../../source/ref-changelog.md:1557 msgid "" "Updated examples documentation " "([#549](https://github.com/adap/flower/pull/549))" msgstr "" -#: ../../source/ref-changelog.md:1536 +#: ../../source/ref-changelog.md:1558 msgid "" "Removed obsolete documentation " "([#548](https://github.com/adap/flower/pull/548))" msgstr "" -#: ../../source/ref-changelog.md:1538 +#: ../../source/ref-changelog.md:1560 msgid "Bugfix:" msgstr "" -#: ../../source/ref-changelog.md:1540 +#: ../../source/ref-changelog.md:1562 msgid "" "`Server.fit` does not disconnect clients when finished, disconnecting the" " clients is now handled in `flwr.server.start_server` " @@ -21115,28 +21201,28 @@ msgid "" "[#540](https://github.com/adap/flower/issues/540))." msgstr "" -#: ../../source/ref-changelog.md:1542 +#: ../../source/ref-changelog.md:1564 msgid "v0.12.0 (2020-12-07)" msgstr "" -#: ../../source/ref-changelog.md:1544 ../../source/ref-changelog.md:1560 +#: ../../source/ref-changelog.md:1566 ../../source/ref-changelog.md:1582 msgid "Important changes:" msgstr "" -#: ../../source/ref-changelog.md:1546 +#: ../../source/ref-changelog.md:1568 msgid "" "Added an example for embedded devices " "([#507](https://github.com/adap/flower/pull/507))" msgstr "" -#: ../../source/ref-changelog.md:1547 +#: ../../source/ref-changelog.md:1569 msgid "" "Added a new NumPyClient (in addition to the existing KerasClient) " "([#504](https://github.com/adap/flower/pull/504) " "[#508](https://github.com/adap/flower/pull/508))" msgstr "" -#: ../../source/ref-changelog.md:1548 +#: ../../source/ref-changelog.md:1570 msgid "" "Deprecated `flwr_example` package and started to migrate examples into " "the top-level `examples` directory " @@ -21144,15 +21230,15 @@ msgid "" "[#512](https://github.com/adap/flower/pull/512))" msgstr "" -#: ../../source/ref-changelog.md:1550 +#: ../../source/ref-changelog.md:1572 msgid "v0.11.0 (2020-11-30)" msgstr "" -#: ../../source/ref-changelog.md:1552 +#: ../../source/ref-changelog.md:1574 msgid "Incompatible changes:" msgstr "" -#: ../../source/ref-changelog.md:1554 +#: ../../source/ref-changelog.md:1576 msgid "" "Renamed strategy methods " "([#486](https://github.com/adap/flower/pull/486)) to unify the naming of " @@ -21162,48 +21248,48 @@ msgid "" "migrate rename the following `Strategy` methods accordingly:" msgstr "" -#: ../../source/ref-changelog.md:1555 +#: ../../source/ref-changelog.md:1577 msgid "`on_configure_evaluate` => `configure_evaluate`" msgstr "" -#: ../../source/ref-changelog.md:1556 +#: ../../source/ref-changelog.md:1578 msgid "`on_aggregate_evaluate` => `aggregate_evaluate`" msgstr "" -#: ../../source/ref-changelog.md:1557 +#: ../../source/ref-changelog.md:1579 msgid "`on_configure_fit` => `configure_fit`" msgstr "" -#: ../../source/ref-changelog.md:1558 +#: ../../source/ref-changelog.md:1580 msgid "`on_aggregate_fit` => `aggregate_fit`" msgstr "" -#: ../../source/ref-changelog.md:1562 +#: ../../source/ref-changelog.md:1584 msgid "" "Deprecated `DefaultStrategy` " "([#479](https://github.com/adap/flower/pull/479)). To migrate use " "`FedAvg` instead." msgstr "" -#: ../../source/ref-changelog.md:1563 +#: ../../source/ref-changelog.md:1585 msgid "" "Simplified examples and baselines " "([#484](https://github.com/adap/flower/pull/484))." msgstr "" -#: ../../source/ref-changelog.md:1564 +#: ../../source/ref-changelog.md:1586 msgid "" "Removed presently unused `on_conclude_round` from strategy interface " "([#483](https://github.com/adap/flower/pull/483))." msgstr "" -#: ../../source/ref-changelog.md:1565 +#: ../../source/ref-changelog.md:1587 msgid "" "Set minimal Python version to 3.6.1 instead of 3.6.9 " "([#471](https://github.com/adap/flower/pull/471))." msgstr "" -#: ../../source/ref-changelog.md:1566 +#: ../../source/ref-changelog.md:1588 msgid "" "Improved `Strategy` docstrings " "([#470](https://github.com/adap/flower/pull/470))." @@ -24570,7 +24656,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|cf5fe148406b44b9a8b842fb01b5a7ea|" +msgid "|f150b8d6e0074250822c9f6f7a8de3e0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -24585,7 +24671,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|ba25c91426d64cc1ae2d3febc5715b35|" +msgid "|72772d10debc4abd8373c0bc82985422|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -24607,7 +24693,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|fca67f83aaab4389aa9ebb4d9c5cd75e|" +msgid "|5815398552ad41d290a3a2631fe8f6ca|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -24623,7 +24709,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|6f2e8f95c95443379b0df00ca9824654|" +msgid "|e6ac20744bf149378be20ac3dc309356|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -24639,7 +24725,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|c0ab3a1a733d4dbc9e1677aa608e8038|" +msgid "|a4011ef443c14725b15a8cf33b0e3443|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -24654,7 +24740,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|8f0491bde07341ab9f2e23d50593c0be|" +msgid "|a22faa3617404c06803731525e1c609f|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -24674,7 +24760,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|762fc099899943688361562252c5e600|" +msgid "|84a5c9b5041c43c3beab9786197c3e4e|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -24689,7 +24775,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|f62d365fd0ae405b975d3ca01e7183fd|" +msgid "|b5c4be0b52d4493ba8c4af14d7c2db97|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -24829,7 +24915,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|2c78fc1816b143289f4d909388f92a80|" +msgid "|c1c784183d18481186ff65dc261d1335|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -24853,7 +24939,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|4230725aeebe497d8ad84a3efc2a912b|" +msgid "|669fcd1f44ab42f5bbd196c3cf1ecbc2|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -24877,7 +24963,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|64b66a88417240eabe52f5cc55d89d0b|" +msgid "|edfb08758c9441afb6736045a59e154c|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -24900,7 +24986,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|726c8eca58bc4f859b06aa24a587b253|" +msgid "|82338b8bbad24d5ea9df3801aab37852|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -24938,7 +25024,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|f9d869e4b33c4093b29cf24ed8dff80a|" +msgid "|518d994dd2c844898b441da03b858326|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -25032,7 +25118,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|4ab50bc01a9f426a91a2c0cbc3ab7a84|" +msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -37274,3 +37360,48 @@ msgstr "" #~ msgid "|dd4434075f374e99ac07f509a883778f|" #~ msgstr "" +#~ msgid "Other changes" +#~ msgstr "" + +#~ msgid "|cf5fe148406b44b9a8b842fb01b5a7ea|" +#~ msgstr "" + +#~ msgid "|ba25c91426d64cc1ae2d3febc5715b35|" +#~ msgstr "" + +#~ msgid "|fca67f83aaab4389aa9ebb4d9c5cd75e|" +#~ msgstr "" + +#~ msgid "|6f2e8f95c95443379b0df00ca9824654|" +#~ msgstr "" + +#~ msgid "|c0ab3a1a733d4dbc9e1677aa608e8038|" +#~ msgstr "" + +#~ msgid "|8f0491bde07341ab9f2e23d50593c0be|" +#~ msgstr "" + +#~ msgid "|762fc099899943688361562252c5e600|" +#~ msgstr "" + +#~ msgid "|f62d365fd0ae405b975d3ca01e7183fd|" +#~ msgstr "" + +#~ msgid "|2c78fc1816b143289f4d909388f92a80|" +#~ msgstr "" + +#~ msgid "|4230725aeebe497d8ad84a3efc2a912b|" +#~ msgstr "" + +#~ msgid "|64b66a88417240eabe52f5cc55d89d0b|" +#~ msgstr "" + +#~ msgid "|726c8eca58bc4f859b06aa24a587b253|" +#~ msgstr "" + +#~ msgid "|f9d869e4b33c4093b29cf24ed8dff80a|" +#~ msgstr "" + +#~ msgid "|4ab50bc01a9f426a91a2c0cbc3ab7a84|" +#~ msgstr "" + diff --git a/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po b/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po index be5a8c984dbc..41c74779d83b 100644 --- a/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po +++ b/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower main\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-22 08:46+0000\n" +"POT-Creation-Date: 2024-11-28 00:32+0000\n" "PO-Revision-Date: 2024-06-12 10:09+0000\n" "Last-Translator: Yan Gao \n" "Language: zh_Hans\n" @@ -3351,10 +3351,10 @@ msgstr "快速入门 fastai" #: ../../source/docker/run-quickstart-examples-docker-compose.rst:119 #: ../../source/docker/run-quickstart-examples-docker-compose.rst:121 #: ../../source/docker/run-quickstart-examples-docker-compose.rst:125 -#: ../../source/ref-changelog.md:214 ../../source/ref-changelog.md:580 -#: ../../source/ref-changelog.md:857 ../../source/ref-changelog.md:921 -#: ../../source/ref-changelog.md:979 ../../source/ref-changelog.md:1048 -#: ../../source/ref-changelog.md:1110 +#: ../../source/ref-changelog.md:236 ../../source/ref-changelog.md:602 +#: ../../source/ref-changelog.md:879 ../../source/ref-changelog.md:943 +#: ../../source/ref-changelog.md:1001 ../../source/ref-changelog.md:1070 +#: ../../source/ref-changelog.md:1132 msgid "None" msgstr "无" @@ -15710,7 +15710,7 @@ msgstr "" "\\(num\\_available\\_clients\\)" #: ../../source/ref-api/flwr.server.strategy.FedAdagrad.rst:2 -#: ../../source/ref-changelog.md:1412 +#: ../../source/ref-changelog.md:1434 msgid "FedAdagrad" msgstr "FedAdagrad" @@ -18141,75 +18141,183 @@ msgstr "更新日志" #: ../../source/ref-changelog.md:3 #, fuzzy -msgid "Unreleased" -msgstr "版本发布" +msgid "v1.13.1 (2024-11-26)" +msgstr "v1.4.0 (2023-04-21)" -#: ../../source/ref-changelog.md:5 ../../source/ref-changelog.md:21 -#: ../../source/ref-changelog.md:122 ../../source/ref-changelog.md:224 -#: ../../source/ref-changelog.md:328 ../../source/ref-changelog.md:426 -#: ../../source/ref-changelog.md:526 ../../source/ref-changelog.md:590 -#: ../../source/ref-changelog.md:683 ../../source/ref-changelog.md:783 -#: ../../source/ref-changelog.md:867 ../../source/ref-changelog.md:931 -#: ../../source/ref-changelog.md:989 ../../source/ref-changelog.md:1058 -#: ../../source/ref-changelog.md:1187 ../../source/ref-changelog.md:1229 -#: ../../source/ref-changelog.md:1296 ../../source/ref-changelog.md:1362 -#: ../../source/ref-changelog.md:1407 ../../source/ref-changelog.md:1446 -#: ../../source/ref-changelog.md:1479 ../../source/ref-changelog.md:1529 +#: ../../source/ref-changelog.md:5 ../../source/ref-changelog.md:37 +#: ../../source/ref-changelog.md:138 ../../source/ref-changelog.md:208 +#: ../../source/ref-changelog.md:240 ../../source/ref-changelog.md:344 +#: ../../source/ref-changelog.md:442 ../../source/ref-changelog.md:542 +#: ../../source/ref-changelog.md:606 ../../source/ref-changelog.md:699 +#: ../../source/ref-changelog.md:799 ../../source/ref-changelog.md:883 +#: ../../source/ref-changelog.md:947 ../../source/ref-changelog.md:1005 +#: ../../source/ref-changelog.md:1074 ../../source/ref-changelog.md:1143 +msgid "Thanks to our contributors" +msgstr "感谢我们的贡献者" + +#: ../../source/ref-changelog.md:7 ../../source/ref-changelog.md:39 +#: ../../source/ref-changelog.md:140 ../../source/ref-changelog.md:210 +#: ../../source/ref-changelog.md:242 ../../source/ref-changelog.md:346 +#: ../../source/ref-changelog.md:444 ../../source/ref-changelog.md:544 +#: ../../source/ref-changelog.md:608 ../../source/ref-changelog.md:701 +#: ../../source/ref-changelog.md:801 ../../source/ref-changelog.md:885 +#: ../../source/ref-changelog.md:949 ../../source/ref-changelog.md:1007 +msgid "" +"We would like to give our special thanks to all the contributors who made" +" the new version of Flower possible (in `git shortlog` order):" +msgstr "在此,我们要特别感谢所有为 Flower 的新版本做出贡献的人员(按 `git shortlog` 顺序排列):" + +#: ../../source/ref-changelog.md:9 +#, fuzzy +msgid "" +"`Adam Narozniak`, `Charles Beauville`, `Heng Pan`, `Javier`, `Robert " +"Steiner` " +msgstr "" +"`Adam Narozniak`, `Anass Anhari`, `Charles Beauville`, `Dana-Farber`, " +"`Daniel J. Beutel`, `Daniel Nata Nugraha`, `Edoardo Gabrielli`, `Gustavo " +"Bertoli`, `Heng Pan`, `Javier`, `Mahdi`, `Steven Hé (Sīchàng)`, `Taner " +"Topal`, `achiverram28`, `danielnugraha`, `eunchung`, `ruthgal` " + +#: ../../source/ref-changelog.md:11 ../../source/ref-changelog.md:43 +#: ../../source/ref-changelog.md:144 ../../source/ref-changelog.md:246 +#: ../../source/ref-changelog.md:350 ../../source/ref-changelog.md:448 +#: ../../source/ref-changelog.md:548 ../../source/ref-changelog.md:612 +#: ../../source/ref-changelog.md:705 ../../source/ref-changelog.md:805 +#: ../../source/ref-changelog.md:889 ../../source/ref-changelog.md:953 +#: ../../source/ref-changelog.md:1011 ../../source/ref-changelog.md:1080 +#: ../../source/ref-changelog.md:1209 ../../source/ref-changelog.md:1251 +#: ../../source/ref-changelog.md:1318 ../../source/ref-changelog.md:1384 +#: ../../source/ref-changelog.md:1429 ../../source/ref-changelog.md:1468 +#: ../../source/ref-changelog.md:1501 ../../source/ref-changelog.md:1551 msgid "What's new?" msgstr "有什么新内容?" -#: ../../source/ref-changelog.md:7 +#: ../../source/ref-changelog.md:13 #, fuzzy -msgid "Other changes" -msgstr "不兼容的更改" +msgid "" +"**Fix `SimulationEngine` Executor for SuperLink** " +"([#4563](https://github.com/adap/flower/pull/4563), " +"[#4568](https://github.com/adap/flower/pull/4568), " +"[#4570](https://github.com/adap/flower/pull/4570))" +msgstr "" +"** 统一客户端应用程序接口** ([#2303](https://github.com/adap/flower/pull/2303), " +"[#2390](https://github.com/adap/flower/pull/2390), " +"[#2493](https://github.com/adap/flower/pull/2493))" + +#: ../../source/ref-changelog.md:15 +msgid "" +"Resolved an issue that prevented SuperLink from functioning correctly " +"when using the `SimulationEngine` executor." +msgstr "" -#: ../../source/ref-changelog.md:9 ../../source/ref-changelog.md:388 +#: ../../source/ref-changelog.md:17 #, fuzzy -msgid "Documentation improvements" -msgstr "可选的改进措施" +msgid "" +"**Improve FAB build and install** " +"([#4571](https://github.com/adap/flower/pull/4571))" +msgstr "**新的联邦医疗策略** ([#1461](https://github.com/adap/flower/pull/1461))" -#: ../../source/ref-changelog.md:11 ../../source/ref-changelog.md:88 -#: ../../source/ref-changelog.md:178 ../../source/ref-changelog.md:212 -#: ../../source/ref-changelog.md:292 ../../source/ref-changelog.md:408 -#: ../../source/ref-changelog.md:504 ../../source/ref-changelog.md:578 -#: ../../source/ref-changelog.md:653 ../../source/ref-changelog.md:765 -#: ../../source/ref-changelog.md:855 ../../source/ref-changelog.md:919 -#: ../../source/ref-changelog.md:977 ../../source/ref-changelog.md:1046 -#: ../../source/ref-changelog.md:1108 ../../source/ref-changelog.md:1127 -#: ../../source/ref-changelog.md:1283 ../../source/ref-changelog.md:1354 -#: ../../source/ref-changelog.md:1391 ../../source/ref-changelog.md:1434 -msgid "Incompatible changes" -msgstr "不兼容的更改" +#: ../../source/ref-changelog.md:19 +msgid "" +"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. The `flwr` CLI " +"commands now correctly pack only the necessary files, such as `.md`, " +"`.toml` and `.py`, ensuring more efficient and accurate packaging." +msgstr "" -#: ../../source/ref-changelog.md:13 +#: ../../source/ref-changelog.md:21 #, fuzzy -msgid "v1.13.0 (2024-11-20)" -msgstr "v1.4.0 (2023-04-21)" +msgid "" +"**Update** `embedded-devices` **example** " +"([#4381](https://github.com/adap/flower/pull/4381))" +msgstr "**引入 start_driver**([#1697](https://github.com/adap/flower/pull/1697))" -#: ../../source/ref-changelog.md:15 ../../source/ref-changelog.md:116 -#: ../../source/ref-changelog.md:186 ../../source/ref-changelog.md:218 -#: ../../source/ref-changelog.md:322 ../../source/ref-changelog.md:420 -#: ../../source/ref-changelog.md:520 ../../source/ref-changelog.md:584 -#: ../../source/ref-changelog.md:677 ../../source/ref-changelog.md:777 -#: ../../source/ref-changelog.md:861 ../../source/ref-changelog.md:925 -#: ../../source/ref-changelog.md:983 ../../source/ref-changelog.md:1052 -#: ../../source/ref-changelog.md:1121 -msgid "Thanks to our contributors" -msgstr "感谢我们的贡献者" +#: ../../source/ref-changelog.md:23 +msgid "The example now uses the `flwr run` command and the Deployment Engine." +msgstr "" -#: ../../source/ref-changelog.md:17 ../../source/ref-changelog.md:118 -#: ../../source/ref-changelog.md:188 ../../source/ref-changelog.md:220 -#: ../../source/ref-changelog.md:324 ../../source/ref-changelog.md:422 -#: ../../source/ref-changelog.md:522 ../../source/ref-changelog.md:586 -#: ../../source/ref-changelog.md:679 ../../source/ref-changelog.md:779 -#: ../../source/ref-changelog.md:863 ../../source/ref-changelog.md:927 -#: ../../source/ref-changelog.md:985 +#: ../../source/ref-changelog.md:25 +#, fuzzy msgid "" -"We would like to give our special thanks to all the contributors who made" -" the new version of Flower possible (in `git shortlog` order):" -msgstr "在此,我们要特别感谢所有为 Flower 的新版本做出贡献的人员(按 `git shortlog` 顺序排列):" +"**Update Documentation** " +"([#4566](https://github.com/adap/flower/pull/4566), " +"[#4569](https://github.com/adap/flower/pull/4569), " +"[#4560](https://github.com/adap/flower/pull/4560), " +"[#4556](https://github.com/adap/flower/pull/4556), " +"[#4581](https://github.com/adap/flower/pull/4581), " +"[#4537](https://github.com/adap/flower/pull/4537), " +"[#4562](https://github.com/adap/flower/pull/4562), " +"[#4582](https://github.com/adap/flower/pull/4582))" +msgstr "" +"**改进教程** ([#1468](https://github.com/adap/flower/pull/1468), " +"[#1470](https://github.com/adap/flower/pull/1470), " +"[#1472](https://github.com/adap/flower/pull/1472), " +"[#1473](https://github.com/adap/flower/pull/1473), " +"[#1474](https://github.com/adap/flower/pull/1474), " +"[#1475](https://github.com/adap/flower/pull/1475)))" -#: ../../source/ref-changelog.md:19 +#: ../../source/ref-changelog.md:27 +msgid "" +"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." +msgstr "" + +#: ../../source/ref-changelog.md:29 +#, fuzzy +msgid "" +"**Update Infrastructure and CI/CD** " +"([#4577](https://github.com/adap/flower/pull/4577), " +"[#4578](https://github.com/adap/flower/pull/4578), " +"[#4558](https://github.com/adap/flower/pull/4558), " +"[#4551](https://github.com/adap/flower/pull/4551), " +"[#3356](https://github.com/adap/flower/pull/3356), " +"[#4559](https://github.com/adap/flower/pull/4559), " +"[#4575](https://github.com/adap/flower/pull/4575))" +msgstr "" +"**改进教程** ([#1468](https://github.com/adap/flower/pull/1468), " +"[#1470](https://github.com/adap/flower/pull/1470), " +"[#1472](https://github.com/adap/flower/pull/1472), " +"[#1473](https://github.com/adap/flower/pull/1473), " +"[#1474](https://github.com/adap/flower/pull/1474), " +"[#1475](https://github.com/adap/flower/pull/1475)))" + +#: ../../source/ref-changelog.md:31 +#, fuzzy +msgid "" +"**General improvements** " +"([#4557](https://github.com/adap/flower/pull/4557), " +"[#4564](https://github.com/adap/flower/pull/4564), " +"[#4573](https://github.com/adap/flower/pull/4573), " +"[#4561](https://github.com/adap/flower/pull/4561), " +"[#4579](https://github.com/adap/flower/pull/4579), " +"[#4572](https://github.com/adap/flower/pull/4572))" +msgstr "" +"** 更新文档** ([#1629](https://github.com/adap/flower/pull/1629), " +"[#1628](https://github.com/adap/flower/pull/1628), " +"[#1620](https://github.com/adap/flower/pull/1620), " +"[#1618](https://github.com/adap/flower/pull/1618), " +"[#1617](https://github.com/adap/flower/pull/1617), " +"[#1613](https://github.com/adap/flower/pull/1613), " +"[#1614](https://github.com/adap/flower/pull/1614)))" + +#: ../../source/ref-changelog.md:33 ../../source/ref-changelog.md:102 +#: ../../source/ref-changelog.md:198 ../../source/ref-changelog.md:301 +#: ../../source/ref-changelog.md:408 +msgid "" +"As always, many parts of the Flower framework and quality infrastructure " +"were improved and updated." +msgstr "" + +#: ../../source/ref-changelog.md:35 +#, fuzzy +msgid "v1.13.0 (2024-11-20)" +msgstr "v1.4.0 (2023-04-21)" + +#: ../../source/ref-changelog.md:41 #, fuzzy msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " @@ -18223,7 +18331,7 @@ msgstr "" "Topal`, `achiverram28`, `danielnugraha`, `eunchung`, `ruthgal` " -#: ../../source/ref-changelog.md:23 +#: ../../source/ref-changelog.md:45 #, fuzzy msgid "" "**Introduce `flwr ls` command** " @@ -18235,30 +18343,30 @@ msgstr "" "[#2221](https://github.com/adap/flower/pull/2221), " "[#2248](https://github.com/adap/flower/pull/2248))" -#: ../../source/ref-changelog.md:25 +#: ../../source/ref-changelog.md:47 msgid "" "The `flwr ls` command is now available to display details about all runs " "(or one specific run). It supports the following usage options:" msgstr "" -#: ../../source/ref-changelog.md:27 +#: ../../source/ref-changelog.md:49 msgid "`flwr ls --runs [] []`: Lists all runs." msgstr "" -#: ../../source/ref-changelog.md:28 +#: ../../source/ref-changelog.md:50 msgid "" "`flwr ls --run-id [] []`: Displays details for " "a specific run." msgstr "" -#: ../../source/ref-changelog.md:30 +#: ../../source/ref-changelog.md:52 msgid "" "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." msgstr "" -#: ../../source/ref-changelog.md:32 +#: ../../source/ref-changelog.md:54 #, fuzzy msgid "" "**Fuse SuperLink and SuperExec** " @@ -18280,7 +18388,7 @@ msgstr "" "[#2355](https://github.com/adap/flower/pull/2355), " "[#2356](https://github.com/adap/flower/pull/2356))" -#: ../../source/ref-changelog.md:34 +#: ../../source/ref-changelog.md:56 msgid "" "SuperExec has been integrated into SuperLink, enabling SuperLink to " "directly manage ServerApp processes (`flwr-serverapp`). The `flwr` CLI " @@ -18290,7 +18398,7 @@ msgid "" "{subprocess,process}` flag." msgstr "" -#: ../../source/ref-changelog.md:36 +#: ../../source/ref-changelog.md:58 #, fuzzy msgid "" "**Introduce `flwr-serverapp` command** " @@ -18312,7 +18420,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475)))" -#: ../../source/ref-changelog.md:38 +#: ../../source/ref-changelog.md:60 msgid "" "The `flwr-serverapp` command has been introduced as a CLI entry point " "that runs a `ServerApp` process. This process communicates with SuperLink" @@ -18320,7 +18428,7 @@ msgid "" "and more flexible deployment." msgstr "" -#: ../../source/ref-changelog.md:40 +#: ../../source/ref-changelog.md:62 #, fuzzy msgid "" "**Improve simulation engine and introduce `flwr-simulation` command** " @@ -18341,7 +18449,7 @@ msgstr "" "[#2355](https://github.com/adap/flower/pull/2355), " "[#2356](https://github.com/adap/flower/pull/2356))" -#: ../../source/ref-changelog.md:42 +#: ../../source/ref-changelog.md:64 msgid "" "The simulation engine has been significantly improved, resulting in " "dramatically faster simulations. Additionally, the `flwr-simulation` " @@ -18349,7 +18457,7 @@ msgid "" "dedicated entry point for running simulations." msgstr "" -#: ../../source/ref-changelog.md:44 +#: ../../source/ref-changelog.md:66 #, fuzzy msgid "" "**Improve SuperLink message management** " @@ -18359,7 +18467,7 @@ msgstr "" "** 更新代码示例** ([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" -#: ../../source/ref-changelog.md:46 +#: ../../source/ref-changelog.md:68 msgid "" "SuperLink now validates the destination node ID of instruction messages " "and checks the TTL (time-to-live) for reply messages. When pulling reply " @@ -18368,14 +18476,14 @@ msgid "" "reply message exists but has expired." msgstr "" -#: ../../source/ref-changelog.md:48 +#: ../../source/ref-changelog.md:70 #, fuzzy msgid "" "**Introduce FedDebug baseline** " "([#3783](https://github.com/adap/flower/pull/3783))" msgstr "**引入 start_driver**([#1697](https://github.com/adap/flower/pull/1697))" -#: ../../source/ref-changelog.md:50 +#: ../../source/ref-changelog.md:72 msgid "" "FedDebug is a framework that enhances debugging in Federated Learning by " "enabling interactive inspection of the training process and automatically" @@ -18385,7 +18493,7 @@ msgid "" "documentation](https://flower.ai/docs/baselines/feddebug.html)." msgstr "" -#: ../../source/ref-changelog.md:52 +#: ../../source/ref-changelog.md:74 msgid "" "**Update documentation** " "([#4511](https://github.com/adap/flower/pull/4511), " @@ -18430,7 +18538,7 @@ msgid "" "[#4533](https://github.com/adap/flower/pull/4533))" msgstr "" -#: ../../source/ref-changelog.md:54 +#: ../../source/ref-changelog.md:76 msgid "" "Many documentation pages and tutorials have been updated to improve " "clarity, fix typos, incorporate user feedback, and stay aligned with the " @@ -18444,7 +18552,7 @@ msgid "" "aggregation-protocols.html) page has also been updated." msgstr "" -#: ../../source/ref-changelog.md:56 +#: ../../source/ref-changelog.md:78 #, fuzzy msgid "" "**Update examples and templates** " @@ -18466,7 +18574,7 @@ msgstr "" "[#1770](https://github.com/adap/flower/pull/1770), " "[#1733](https://github.com/adap/flower/pull/1733))" -#: ../../source/ref-changelog.md:58 +#: ../../source/ref-changelog.md:80 msgid "" "Multiple examples and templates have been updated to enhance usability " "and correctness. The updates include the `30-minute-tutorial`, " @@ -18474,7 +18582,7 @@ msgid "" "and the FlowerTune template." msgstr "" -#: ../../source/ref-changelog.md:60 +#: ../../source/ref-changelog.md:82 #, fuzzy msgid "" "**Improve Docker support** " @@ -18497,7 +18605,7 @@ msgstr "" "[#1477](https://github.com/adap/flower/pull/1477), " "[#2171](https://github.com/adap/flower/pull/2171))" -#: ../../source/ref-changelog.md:62 +#: ../../source/ref-changelog.md:84 msgid "" "Docker images and configurations have been updated, including updating " "Docker Compose files to version 1.13.0, refactoring the Docker build " @@ -18505,7 +18613,7 @@ msgid "" " 6.9.0, and improving Docker documentation." msgstr "" -#: ../../source/ref-changelog.md:64 +#: ../../source/ref-changelog.md:86 #, fuzzy msgid "" "**Allow app installation without internet access** " @@ -18515,14 +18623,14 @@ msgstr "" "** 更新代码示例** ([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" -#: ../../source/ref-changelog.md:66 +#: ../../source/ref-changelog.md:88 msgid "" "The `flwr build` command now includes a wheel file in the FAB, enabling " "Flower app installation in environments without internet access via `flwr" " install`." msgstr "" -#: ../../source/ref-changelog.md:68 +#: ../../source/ref-changelog.md:90 #, fuzzy msgid "" "**Improve `flwr log` command** " @@ -18536,7 +18644,7 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310)" -#: ../../source/ref-changelog.md:70 +#: ../../source/ref-changelog.md:92 #, fuzzy msgid "" "**Refactor SuperNode for better maintainability and efficiency** " @@ -18550,14 +18658,14 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310)" -#: ../../source/ref-changelog.md:72 +#: ../../source/ref-changelog.md:94 #, fuzzy msgid "" "**Support NumPy `2.0`** " "([#4440](https://github.com/adap/flower/pull/4440))" msgstr "** 支持 Python 3.10** ([#1320](https://github.com/adap/flower/pull/1320))" -#: ../../source/ref-changelog.md:74 +#: ../../source/ref-changelog.md:96 #, fuzzy msgid "" "**Update infrastructure and CI/CD** " @@ -18576,7 +18684,7 @@ msgstr "" "[#1477](https://github.com/adap/flower/pull/1477), " "[#2171](https://github.com/adap/flower/pull/2171))" -#: ../../source/ref-changelog.md:76 +#: ../../source/ref-changelog.md:98 #, fuzzy msgid "" "**Bugfixes** ([#4404](https://github.com/adap/flower/pull/4404), " @@ -18598,7 +18706,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614)))" -#: ../../source/ref-changelog.md:78 +#: ../../source/ref-changelog.md:100 msgid "" "**General improvements** " "([#4454](https://github.com/adap/flower/pull/4454), " @@ -18654,25 +18762,18 @@ msgid "" "[#4481](https://github.com/adap/flower/pull/4481))" msgstr "" -#: ../../source/ref-changelog.md:80 ../../source/ref-changelog.md:176 -#: ../../source/ref-changelog.md:279 ../../source/ref-changelog.md:386 -msgid "" -"As always, many parts of the Flower framework and quality infrastructure " -"were improved and updated." -msgstr "" - -#: ../../source/ref-changelog.md:82 ../../source/ref-changelog.md:281 -#: ../../source/ref-changelog.md:398 ../../source/ref-changelog.md:490 -#: ../../source/ref-changelog.md:1473 +#: ../../source/ref-changelog.md:104 ../../source/ref-changelog.md:303 +#: ../../source/ref-changelog.md:420 ../../source/ref-changelog.md:512 +#: ../../source/ref-changelog.md:1495 msgid "Deprecations" msgstr "停用" -#: ../../source/ref-changelog.md:84 +#: ../../source/ref-changelog.md:106 #, fuzzy msgid "**Deprecate Python 3.9**" msgstr "** 过时的 Python 3.7**" -#: ../../source/ref-changelog.md:86 +#: ../../source/ref-changelog.md:108 msgid "" "Flower is deprecating support for Python 3.9 as several of its " "dependencies are phasing out compatibility with this version. While no " @@ -18680,14 +18781,27 @@ msgid "" "upgrading to a supported Python version." msgstr "" -#: ../../source/ref-changelog.md:90 +#: ../../source/ref-changelog.md:110 ../../source/ref-changelog.md:200 +#: ../../source/ref-changelog.md:234 ../../source/ref-changelog.md:314 +#: ../../source/ref-changelog.md:430 ../../source/ref-changelog.md:526 +#: ../../source/ref-changelog.md:600 ../../source/ref-changelog.md:675 +#: ../../source/ref-changelog.md:787 ../../source/ref-changelog.md:877 +#: ../../source/ref-changelog.md:941 ../../source/ref-changelog.md:999 +#: ../../source/ref-changelog.md:1068 ../../source/ref-changelog.md:1130 +#: ../../source/ref-changelog.md:1149 ../../source/ref-changelog.md:1305 +#: ../../source/ref-changelog.md:1376 ../../source/ref-changelog.md:1413 +#: ../../source/ref-changelog.md:1456 +msgid "Incompatible changes" +msgstr "不兼容的更改" + +#: ../../source/ref-changelog.md:112 #, fuzzy msgid "" "**Remove `flower-superexec` command** " "([#4351](https://github.com/adap/flower/pull/4351))" msgstr "**移除过时的 KerasClient**([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:92 +#: ../../source/ref-changelog.md:114 msgid "" "The `flower-superexec` command, previously used to launch SuperExec, is " "no longer functional as SuperExec has been merged into SuperLink. " @@ -18695,68 +18809,68 @@ msgid "" " initiated." msgstr "" -#: ../../source/ref-changelog.md:94 +#: ../../source/ref-changelog.md:116 #, fuzzy msgid "" "**Remove `flower-server-app` command** " "([#4490](https://github.com/adap/flower/pull/4490))" msgstr "**移除过时的 KerasClient**([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:96 +#: ../../source/ref-changelog.md:118 msgid "" "The `flower-server-app` command has been removed. To start a Flower app, " "please use the `flwr run` command instead." msgstr "" -#: ../../source/ref-changelog.md:98 +#: ../../source/ref-changelog.md:120 #, fuzzy msgid "" "**Remove `app` argument from `flower-supernode` command** " "([#4497](https://github.com/adap/flower/pull/4497))" msgstr "**移除过时的 KerasClient**([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:100 +#: ../../source/ref-changelog.md:122 msgid "" "The usage of `flower-supernode ` has been removed. SuperNode " "will now load the FAB delivered by SuperLink, and it is no longer " "possible to directly specify an app directory." msgstr "" -#: ../../source/ref-changelog.md:102 +#: ../../source/ref-changelog.md:124 #, fuzzy msgid "" "**Remove support for non-app simulations** " "([#4431](https://github.com/adap/flower/pull/4431))" msgstr "**改进模拟中的 GPU 支持**([#1555](https://github.com/adap/flower/pull/1555))" -#: ../../source/ref-changelog.md:104 +#: ../../source/ref-changelog.md:126 msgid "" "The simulation engine (via `flower-simulation`) now exclusively supports " "passing an app." msgstr "" -#: ../../source/ref-changelog.md:106 +#: ../../source/ref-changelog.md:128 #, fuzzy msgid "" "**Rename CLI arguments for `flower-superlink` command** " "([#4412](https://github.com/adap/flower/pull/4412))" msgstr "**移除过时的 KerasClient**([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:108 +#: ../../source/ref-changelog.md:130 msgid "" "The `--driver-api-address` argument has been renamed to `--serverappio-" "api-address` in the `flower-superlink` command to reflect the renaming of" " the `Driver` service to the `ServerAppIo` service." msgstr "" -#: ../../source/ref-changelog.md:110 +#: ../../source/ref-changelog.md:132 #, fuzzy msgid "" "**Rename CLI arguments for `flwr-serverapp` and `flwr-clientapp` " "commands** ([#4495](https://github.com/adap/flower/pull/4495))" msgstr "**移除过时的 KerasClient**([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:112 +#: ../../source/ref-changelog.md:134 msgid "" "The CLI arguments have been renamed for clarity and consistency. " "Specifically, `--superlink` for `flwr-serverapp` is now `--serverappio-" @@ -18764,12 +18878,12 @@ msgid "" "`--clientappio-api-address`." msgstr "" -#: ../../source/ref-changelog.md:114 +#: ../../source/ref-changelog.md:136 #, fuzzy msgid "v1.12.0 (2024-10-14)" msgstr "v1.1.0 (2022-10-31)" -#: ../../source/ref-changelog.md:120 +#: ../../source/ref-changelog.md:142 #, fuzzy msgid "" "`Adam Narozniak`, `Audris`, `Charles Beauville`, `Chong Shen Ng`, `Daniel" @@ -18783,7 +18897,7 @@ msgstr "" "Topal`, `achiverram28`, `danielnugraha`, `eunchung`, `ruthgal` " -#: ../../source/ref-changelog.md:124 +#: ../../source/ref-changelog.md:146 #, fuzzy msgid "" "**Introduce SuperExec log streaming** " @@ -18801,7 +18915,7 @@ msgstr "" "[#2355](https://github.com/adap/flower/pull/2355), " "[#2356](https://github.com/adap/flower/pull/2356))" -#: ../../source/ref-changelog.md:126 +#: ../../source/ref-changelog.md:148 msgid "" "Flower now supports log streaming from a remote SuperExec using the `flwr" " log` command. This new feature allows you to monitor logs from SuperExec" @@ -18809,7 +18923,7 @@ msgid "" "`)." msgstr "" -#: ../../source/ref-changelog.md:128 +#: ../../source/ref-changelog.md:150 #, fuzzy msgid "" "**Improve `flwr new` templates** " @@ -18826,14 +18940,14 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475)))" -#: ../../source/ref-changelog.md:130 +#: ../../source/ref-changelog.md:152 msgid "" "The `flwr new` command templates for MLX, NumPy, sklearn, JAX, and " "PyTorch have been updated to improve usability and consistency across " "frameworks." msgstr "" -#: ../../source/ref-changelog.md:132 +#: ../../source/ref-changelog.md:154 #, fuzzy msgid "" "**Migrate ID handling to use unsigned 64-bit integers** " @@ -18845,7 +18959,7 @@ msgstr "" "[#1286](https://github.com/adap/flower/pull/1286), " "[#1282](https://github.com/adap/flower/pull/1282))" -#: ../../source/ref-changelog.md:134 +#: ../../source/ref-changelog.md:156 msgid "" "Node IDs, run IDs, and related fields have been migrated from signed " "64-bit integers (`sint64`) to unsigned 64-bit integers (`uint64`). To " @@ -18856,14 +18970,14 @@ msgid "" "`uint64`." msgstr "" -#: ../../source/ref-changelog.md:136 +#: ../../source/ref-changelog.md:158 #, fuzzy msgid "" "**Add Flower architecture explanation** " "([#3270](https://github.com/adap/flower/pull/3270))" msgstr "**重构文档**([#1387](https://github.com/adap/flower/pull/1387))" -#: ../../source/ref-changelog.md:138 +#: ../../source/ref-changelog.md:160 msgid "" "A new [Flower architecture explainer](https://flower.ai/docs/framework" "/explanation-flower-architecture.html) page introduces Flower components " @@ -18871,14 +18985,14 @@ msgid "" "documentation if you're interested." msgstr "" -#: ../../source/ref-changelog.md:140 +#: ../../source/ref-changelog.md:162 #, fuzzy msgid "" "**Introduce FedRep baseline** " "([#3790](https://github.com/adap/flower/pull/3790))" msgstr "**引入 start_driver**([#1697](https://github.com/adap/flower/pull/1697))" -#: ../../source/ref-changelog.md:142 +#: ../../source/ref-changelog.md:164 msgid "" "FedRep is a federated learning algorithm that learns shared data " "representations across clients while allowing each to maintain " @@ -18888,7 +19002,7 @@ msgid "" "([arxiv](https://arxiv.org/abs/2102.07078))" msgstr "" -#: ../../source/ref-changelog.md:144 +#: ../../source/ref-changelog.md:166 #, fuzzy msgid "" "**Improve FlowerTune template and LLM evaluation pipelines** " @@ -18920,7 +19034,7 @@ msgstr "" "[#1305](https://github.com/adap/flower/pull/1305), " "[#1307](https://github.com/adap/flower/pull/1307))" -#: ../../source/ref-changelog.md:146 +#: ../../source/ref-changelog.md:168 msgid "" "Refined evaluation pipelines, metrics, and documentation for the upcoming" " FlowerTune LLM Leaderboard across multiple domains including Finance, " @@ -18929,7 +19043,7 @@ msgid "" "exciting challenge!" msgstr "" -#: ../../source/ref-changelog.md:148 +#: ../../source/ref-changelog.md:170 #, fuzzy msgid "" "**Enhance Docker Support and Documentation** " @@ -18955,7 +19069,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475)))" -#: ../../source/ref-changelog.md:150 +#: ../../source/ref-changelog.md:172 msgid "" "Upgraded Ubuntu base image to 24.04, added SBOM and gcc to Docker images," " and comprehensively updated [Docker " @@ -18963,7 +19077,7 @@ msgid "" "including quickstart guides and distributed Docker Compose instructions." msgstr "" -#: ../../source/ref-changelog.md:152 +#: ../../source/ref-changelog.md:174 #, fuzzy msgid "" "**Introduce Flower glossary** " @@ -18974,7 +19088,7 @@ msgstr "" "([#1858](https://github.com/adap/flower/pull/1858), " "[#1897](https://github.com/adap/flower/pull/1897))" -#: ../../source/ref-changelog.md:154 +#: ../../source/ref-changelog.md:176 msgid "" "Added the [Federated Learning glossary](https://flower.ai/glossary/) to " "the Flower repository, located under the `flower/glossary/` directory. " @@ -18984,7 +19098,7 @@ msgid "" "become a Flower contributor!" msgstr "" -#: ../../source/ref-changelog.md:156 +#: ../../source/ref-changelog.md:178 #, fuzzy msgid "" "**Implement Message Time-to-Live (TTL)** " @@ -19002,7 +19116,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614)))" -#: ../../source/ref-changelog.md:158 +#: ../../source/ref-changelog.md:180 msgid "" "Added comprehensive TTL support for messages in Flower's SuperLink. " "Messages are now automatically expired and cleaned up based on " @@ -19010,7 +19124,7 @@ msgid "" " default in the high-level API)." msgstr "" -#: ../../source/ref-changelog.md:160 +#: ../../source/ref-changelog.md:182 #, fuzzy msgid "" "**Improve FAB handling** " @@ -19024,14 +19138,14 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310)" -#: ../../source/ref-changelog.md:162 +#: ../../source/ref-changelog.md:184 msgid "" "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." msgstr "" -#: ../../source/ref-changelog.md:164 +#: ../../source/ref-changelog.md:186 #, fuzzy msgid "" "**Update documentation** " @@ -19050,7 +19164,7 @@ msgstr "" "[#2355](https://github.com/adap/flower/pull/2355), " "[#2356](https://github.com/adap/flower/pull/2356))" -#: ../../source/ref-changelog.md:166 +#: ../../source/ref-changelog.md:188 msgid "" "Updated quickstart tutorials (PyTorch Lightning, TensorFlow, Hugging " "Face, Fastai) to use the new `flwr run` command and removed default title" @@ -19058,7 +19172,7 @@ msgid "" "added to FAQ." msgstr "" -#: ../../source/ref-changelog.md:168 +#: ../../source/ref-changelog.md:190 #, fuzzy msgid "" "**Update example projects** " @@ -19078,7 +19192,7 @@ msgstr "" "[#1477](https://github.com/adap/flower/pull/1477), " "[#2171](https://github.com/adap/flower/pull/2171))" -#: ../../source/ref-changelog.md:170 +#: ../../source/ref-changelog.md:192 msgid "" "Refreshed multiple example projects including vertical FL, PyTorch " "(advanced), Pandas, Secure Aggregation, and XGBoost examples. Optimized " @@ -19086,7 +19200,7 @@ msgid "" "simulation examples." msgstr "" -#: ../../source/ref-changelog.md:172 +#: ../../source/ref-changelog.md:194 #, fuzzy msgid "" "**Update translations** " @@ -19106,7 +19220,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614)))" -#: ../../source/ref-changelog.md:174 +#: ../../source/ref-changelog.md:196 msgid "" "**General improvements** " "([#4239](https://github.com/adap/flower/pull/4239), " @@ -19153,7 +19267,7 @@ msgid "" "[#4333](https://github.com/adap/flower/pull/4333))" msgstr "" -#: ../../source/ref-changelog.md:180 +#: ../../source/ref-changelog.md:202 #, fuzzy msgid "" "**Drop Python 3.8 support and update minimum version to 3.9** " @@ -19174,7 +19288,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614)))" -#: ../../source/ref-changelog.md:182 +#: ../../source/ref-changelog.md:204 msgid "" "Python 3.8 support was deprecated in Flower 1.9, and this release removes" " support. Flower now requires Python 3.9 or later (Python 3.11 is " @@ -19182,12 +19296,12 @@ msgid "" "minimum supported version. Flower now supports Python 3.9 to 3.12." msgstr "" -#: ../../source/ref-changelog.md:184 +#: ../../source/ref-changelog.md:206 #, fuzzy msgid "v1.11.1 (2024-09-11)" msgstr "v1.3.0 (2023-02-06)" -#: ../../source/ref-changelog.md:190 +#: ../../source/ref-changelog.md:212 #, fuzzy msgid "" "`Charles Beauville`, `Chong Shen Ng`, `Daniel J. Beutel`, `Heng Pan`, " @@ -19199,12 +19313,12 @@ msgstr "" "Topal`, `achiverram28`, `danielnugraha`, `eunchung`, `ruthgal` " -#: ../../source/ref-changelog.md:192 +#: ../../source/ref-changelog.md:214 #, fuzzy msgid "Improvements" msgstr "可选的改进措施" -#: ../../source/ref-changelog.md:194 +#: ../../source/ref-changelog.md:216 #, fuzzy msgid "" "**Implement** `keys/values/items` **methods for** `TypedDict` " @@ -19213,21 +19327,21 @@ msgstr "" "**使** `get_parameters` **可配置** " "([#1242](https://github.com/adap/flower/pull/1242))" -#: ../../source/ref-changelog.md:196 +#: ../../source/ref-changelog.md:218 #, fuzzy msgid "" "**Fix parsing of** `--executor-config` **if present** " "([#4125](https://github.com/adap/flower/pull/4125))" msgstr "**引入 start_driver**([#1697](https://github.com/adap/flower/pull/1697))" -#: ../../source/ref-changelog.md:198 +#: ../../source/ref-changelog.md:220 #, fuzzy msgid "" "**Adjust framework name in templates docstrings** " "([#4127](https://github.com/adap/flower/pull/4127))" msgstr "**新的 scikit-learn 代码示例** ([#748](https://github.com/adap/flower/pull/748))" -#: ../../source/ref-changelog.md:200 +#: ../../source/ref-changelog.md:222 #, fuzzy msgid "" "**Update** `flwr new` **Hugging Face template** " @@ -19236,14 +19350,14 @@ msgstr "" "**新的Hugging Face Transformers代码示例** " "([#863](https://github.com/adap/flower/pull/863))" -#: ../../source/ref-changelog.md:202 +#: ../../source/ref-changelog.md:224 #, fuzzy msgid "" "**Fix** `flwr new` **FlowerTune template** " "([#4123](https://github.com/adap/flower/pull/4123))" msgstr "**新的 iOS CoreML 代码示例**([#1289](https://github.com/adap/flower/pull/1289))" -#: ../../source/ref-changelog.md:204 +#: ../../source/ref-changelog.md:226 #, fuzzy msgid "" "**Add buffer time after** `ServerApp` **thread initialization** " @@ -19252,14 +19366,14 @@ msgstr "" "**在模拟过程中为***`历史`***对象添加训练指标*** " "([#1696](https://github.com/adap/flower/pull/1696))" -#: ../../source/ref-changelog.md:206 +#: ../../source/ref-changelog.md:228 #, fuzzy msgid "" "**Handle unsuitable resources for simulation** " "([#4143](https://github.com/adap/flower/pull/4143))" msgstr "** 添加新的模拟监控指南** ([#1649](https://github.com/adap/flower/pull/1649))" -#: ../../source/ref-changelog.md:208 +#: ../../source/ref-changelog.md:230 #, fuzzy msgid "" "**Update example READMEs** " @@ -19268,19 +19382,19 @@ msgstr "" "**介绍Flower Android SDK** " "([#2131](https://github.com/adap/flower/pull/2131))" -#: ../../source/ref-changelog.md:210 +#: ../../source/ref-changelog.md:232 #, fuzzy msgid "" "**Update SuperNode authentication docs** " "([#4160](https://github.com/adap/flower/pull/4160))" msgstr "** 添加一个新的 gRPC 选项**([#2197](https://github.com/adap/flower/pull/2197))" -#: ../../source/ref-changelog.md:216 +#: ../../source/ref-changelog.md:238 #, fuzzy msgid "v1.11.0 (2024-08-30)" msgstr "v1.3.0 (2023-02-06)" -#: ../../source/ref-changelog.md:222 +#: ../../source/ref-changelog.md:244 #, fuzzy msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " @@ -19295,7 +19409,7 @@ msgstr "" "Topal`, `achiverram28`, `danielnugraha`, `eunchung`, `ruthgal` " -#: ../../source/ref-changelog.md:226 +#: ../../source/ref-changelog.md:248 msgid "" "**Deliver Flower App Bundle (FAB) to SuperLink and SuperNodes** " "([#4006](https://github.com/adap/flower/pull/4006), " @@ -19322,14 +19436,14 @@ msgid "" "[#3619](https://github.com/adap/flower/pull/3619))" msgstr "" -#: ../../source/ref-changelog.md:228 +#: ../../source/ref-changelog.md:250 msgid "" "Dynamic code updates are here! `flwr run` can now ship and install the " "latest version of your `ServerApp` and `ClientApp` to an already-running " "federation (SuperLink and SuperNodes)." msgstr "" -#: ../../source/ref-changelog.md:230 +#: ../../source/ref-changelog.md:252 msgid "" "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," @@ -19339,11 +19453,11 @@ msgid "" "projects!) dynamically." msgstr "" -#: ../../source/ref-changelog.md:232 +#: ../../source/ref-changelog.md:254 msgid "`flwr run` is all you need." msgstr "" -#: ../../source/ref-changelog.md:234 +#: ../../source/ref-changelog.md:256 #, fuzzy msgid "" "**Introduce isolated** `ClientApp` **execution** " @@ -19377,30 +19491,30 @@ msgstr "" "[#1564](https://github.com/adap/flower/pull/1564), " "[#1566](https://github.com/adap/flower/pull/1566))" -#: ../../source/ref-changelog.md:236 +#: ../../source/ref-changelog.md:258 msgid "" "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 the " "`ClientApp` can and cannot do." msgstr "" -#: ../../source/ref-changelog.md:238 +#: ../../source/ref-changelog.md:260 msgid "`flower-supernode` supports three `--isolation` modes:" msgstr "" -#: ../../source/ref-changelog.md:240 +#: ../../source/ref-changelog.md:262 msgid "" "Unset: The SuperNode runs the `ClientApp` in the same process (as in " "previous versions of Flower). This is the default mode." msgstr "" -#: ../../source/ref-changelog.md:241 +#: ../../source/ref-changelog.md:263 msgid "" "`--isolation=subprocess`: The SuperNode starts a subprocess to run the " "`ClientApp`." msgstr "" -#: ../../source/ref-changelog.md:242 +#: ../../source/ref-changelog.md:264 msgid "" "`--isolation=process`: The SuperNode expects an externally-managed " "process to run the `ClientApp`. This external process is not managed by " @@ -19409,7 +19523,7 @@ msgid "" "`flwr/clientapp` Docker image." msgstr "" -#: ../../source/ref-changelog.md:244 +#: ../../source/ref-changelog.md:266 #, fuzzy msgid "" "**Improve Docker support for enterprise deployments** " @@ -19428,17 +19542,17 @@ msgstr "" "[#2355](https://github.com/adap/flower/pull/2355), " "[#2356](https://github.com/adap/flower/pull/2356))" -#: ../../source/ref-changelog.md:246 +#: ../../source/ref-changelog.md:268 msgid "" "Flower 1.11 ships many Docker improvements that are especially useful for" " enterprise deployments:" msgstr "" -#: ../../source/ref-changelog.md:248 +#: ../../source/ref-changelog.md:270 msgid "`flwr/supernode` comes with a new Alpine Docker image." msgstr "" -#: ../../source/ref-changelog.md:249 +#: ../../source/ref-changelog.md:271 msgid "" "`flwr/clientapp` is a new image to be used with the `--isolation=process`" " option. In this mode, SuperNode and `ClientApp` run in two different " @@ -19448,19 +19562,19 @@ msgid "" "enterprise settings." msgstr "" -#: ../../source/ref-changelog.md:250 +#: ../../source/ref-changelog.md:272 msgid "" "New all-in-one Docker Compose enables you to easily start a full Flower " "Deployment Engine on a single machine." msgstr "" -#: ../../source/ref-changelog.md:251 +#: ../../source/ref-changelog.md:273 msgid "" "Completely new Docker documentation: " "https://flower.ai/docs/framework/docker/index.html" msgstr "" -#: ../../source/ref-changelog.md:253 +#: ../../source/ref-changelog.md:275 #, fuzzy msgid "" "**Improve SuperNode authentication** " @@ -19472,13 +19586,13 @@ msgstr "" "[#2390](https://github.com/adap/flower/pull/2390), " "[#2493](https://github.com/adap/flower/pull/2493))" -#: ../../source/ref-changelog.md:255 +#: ../../source/ref-changelog.md:277 msgid "" "SuperNode auth has been improved in several ways, including improved " "logging, improved testing, and improved error handling." msgstr "" -#: ../../source/ref-changelog.md:257 +#: ../../source/ref-changelog.md:279 #, fuzzy msgid "" "**Update** `flwr new` **templates** " @@ -19499,13 +19613,13 @@ msgstr "" "[#1477](https://github.com/adap/flower/pull/1477), " "[#2171](https://github.com/adap/flower/pull/2171))" -#: ../../source/ref-changelog.md:259 +#: ../../source/ref-changelog.md:281 msgid "" "All `flwr new` templates have been updated to show the latest recommended" " use of Flower APIs." msgstr "" -#: ../../source/ref-changelog.md:261 +#: ../../source/ref-changelog.md:283 #, fuzzy msgid "" "**Improve Simulation Engine** " @@ -19525,14 +19639,14 @@ msgstr "" "[#2355](https://github.com/adap/flower/pull/2355), " "[#2356](https://github.com/adap/flower/pull/2356))" -#: ../../source/ref-changelog.md:263 +#: ../../source/ref-changelog.md:285 msgid "" "The Flower Simulation Engine comes with several updates, including " "improved run config support, verbose logging, simulation backend " "configuration via `flwr run`, and more." msgstr "" -#: ../../source/ref-changelog.md:265 +#: ../../source/ref-changelog.md:287 #, fuzzy msgid "" "**Improve** `RecordSet` " @@ -19544,7 +19658,7 @@ msgstr "" "[#2390](https://github.com/adap/flower/pull/2390), " "[#2493](https://github.com/adap/flower/pull/2493))" -#: ../../source/ref-changelog.md:267 +#: ../../source/ref-changelog.md:289 msgid "" "`RecordSet` is the core object to exchange model parameters, " "configuration values and metrics between `ClientApp` and `ServerApp`. " @@ -19552,7 +19666,7 @@ msgid "" "related `*Record` types." msgstr "" -#: ../../source/ref-changelog.md:269 +#: ../../source/ref-changelog.md:291 #, fuzzy msgid "" "**Update documentation** " @@ -19583,14 +19697,14 @@ msgstr "" "[#2225](https://github.com/adap/flower/pull/2225), " "[#2183](https://github.com/adap/flower/pull/2183))" -#: ../../source/ref-changelog.md:271 +#: ../../source/ref-changelog.md:293 msgid "" "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." msgstr "" -#: ../../source/ref-changelog.md:273 +#: ../../source/ref-changelog.md:295 msgid "" "**Migrate code example to use new Flower APIs** " "([#3758](https://github.com/adap/flower/pull/3758), " @@ -19616,11 +19730,11 @@ msgid "" "[#3313](https://github.com/adap/flower/pull/3313))" msgstr "" -#: ../../source/ref-changelog.md:275 +#: ../../source/ref-changelog.md:297 msgid "Many code examples have been migrated to use new Flower APIs." msgstr "" -#: ../../source/ref-changelog.md:277 +#: ../../source/ref-changelog.md:299 msgid "" "**Update Flower framework, framework internals and quality " "infrastructure** ([#4018](https://github.com/adap/flower/pull/4018), " @@ -19662,14 +19776,14 @@ msgid "" "[#4038](https://github.com/adap/flower/pull/4038))" msgstr "" -#: ../../source/ref-changelog.md:283 +#: ../../source/ref-changelog.md:305 #, fuzzy msgid "" "**Deprecate accessing `Context` via `Client.context`** " "([#3797](https://github.com/adap/flower/pull/3797))" msgstr "**移除过时的不操作额外安装** ([#973](https://github.com/adap/flower/pull/973))" -#: ../../source/ref-changelog.md:285 +#: ../../source/ref-changelog.md:307 msgid "" "Now that both `client_fn` and `server_fn` receive a `Context` object, " "accessing `Context` via `Client.context` is deprecated. `Client.context` " @@ -19678,7 +19792,7 @@ msgid "" " instance in `client_fn`:" msgstr "" -#: ../../source/ref-changelog.md:294 +#: ../../source/ref-changelog.md:316 #, fuzzy msgid "" "**Update CLIs to accept an app directory instead of** `ClientApp` **and**" @@ -19690,7 +19804,7 @@ msgstr "" "[#2221](https://github.com/adap/flower/pull/2221), " "[#2248](https://github.com/adap/flower/pull/2248))" -#: ../../source/ref-changelog.md:296 +#: ../../source/ref-changelog.md:318 msgid "" "The CLI commands `flower-supernode` and `flower-server-app` now accept an" " app directory as argument (instead of references to a `ClientApp` or " @@ -19700,7 +19814,7 @@ msgid "" "`flwr new`." msgstr "" -#: ../../source/ref-changelog.md:298 +#: ../../source/ref-changelog.md:320 #, fuzzy msgid "" "**Disable** `flower-client-app` **CLI command** " @@ -19709,46 +19823,46 @@ msgstr "" "**介绍Flower Android SDK** " "([#2131](https://github.com/adap/flower/pull/2131))" -#: ../../source/ref-changelog.md:300 +#: ../../source/ref-changelog.md:322 msgid "`flower-client-app` has been disabled. Use `flower-supernode` instead." msgstr "" -#: ../../source/ref-changelog.md:302 +#: ../../source/ref-changelog.md:324 #, fuzzy msgid "" "**Use spaces instead of commas for separating config args** " "([#4000](https://github.com/adap/flower/pull/4000))" msgstr "**服务器和策略的自定义指标** ([#717](https://github.com/adap/flower/pull/717))" -#: ../../source/ref-changelog.md:304 +#: ../../source/ref-changelog.md:326 msgid "" "When passing configs (run config, node config) to Flower, you now need to" " separate key-value pairs using spaces instead of commas. For example:" msgstr "" -#: ../../source/ref-changelog.md:310 +#: ../../source/ref-changelog.md:332 msgid "Previously, you could pass configs using commas, like this:" msgstr "" -#: ../../source/ref-changelog.md:316 +#: ../../source/ref-changelog.md:338 #, fuzzy msgid "" "**Remove** `flwr example` **CLI command** " "([#4084](https://github.com/adap/flower/pull/4084))" msgstr "**移除过时的 KerasClient**([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:318 +#: ../../source/ref-changelog.md:340 msgid "" "The experimental `flwr example` CLI command has been removed. Use `flwr " "new` to generate a project and then run it using `flwr run`." msgstr "" -#: ../../source/ref-changelog.md:320 +#: ../../source/ref-changelog.md:342 #, fuzzy msgid "v1.10.0 (2024-07-24)" msgstr "v1.0.0 (2022-07-28)" -#: ../../source/ref-changelog.md:326 +#: ../../source/ref-changelog.md:348 #, fuzzy msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " @@ -19763,7 +19877,7 @@ msgstr "" "Topal`, `achiverram28`, `danielnugraha`, `eunchung`, `ruthgal` " -#: ../../source/ref-changelog.md:330 +#: ../../source/ref-changelog.md:352 #, fuzzy msgid "" "**Introduce** `flwr run` **(beta)** " @@ -19784,7 +19898,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475)))" -#: ../../source/ref-changelog.md:332 +#: ../../source/ref-changelog.md:354 msgid "" "Flower 1.10 ships the first beta release of the new `flwr run` command. " "`flwr run` can run different projects using `flwr run path/to/project`, " @@ -19797,7 +19911,7 @@ msgid "" "`flwr new` to generate a project and then run it using `flwr run`." msgstr "" -#: ../../source/ref-changelog.md:334 +#: ../../source/ref-changelog.md:356 #, fuzzy msgid "" "**Introduce run config** " @@ -19825,7 +19939,7 @@ msgstr "" "[#1770](https://github.com/adap/flower/pull/1770), " "[#1733](https://github.com/adap/flower/pull/1733))" -#: ../../source/ref-changelog.md:336 +#: ../../source/ref-changelog.md:358 msgid "" "The new run config feature allows you to run your Flower project in " "different configurations without having to change a single line of code. " @@ -19838,7 +19952,7 @@ msgid "" "new project using `flwr new` to see run config in action." msgstr "" -#: ../../source/ref-changelog.md:338 +#: ../../source/ref-changelog.md:360 #, fuzzy msgid "" "**Generalize** `client_fn` **signature to** `client_fn(context: Context) " @@ -19852,7 +19966,7 @@ msgstr "" "[#2523](https://github.com/adap/flower/pull/2523), " "[#2522](https://github.com/adap/flower/pull/2522))" -#: ../../source/ref-changelog.md:340 +#: ../../source/ref-changelog.md:362 msgid "" "The `client_fn` signature has been generalized to `client_fn(context: " "Context) -> Client`. It now receives a `Context` object instead of the " @@ -19862,14 +19976,14 @@ msgid "" "system." msgstr "" -#: ../../source/ref-changelog.md:342 +#: ../../source/ref-changelog.md:364 msgid "" "The previous signature `client_fn(cid: str)` is now deprecated and " "support for it will be removed in a future release. Use " "`client_fn(context: Context) -> Client` everywhere." msgstr "" -#: ../../source/ref-changelog.md:344 +#: ../../source/ref-changelog.md:366 #, fuzzy msgid "" "**Introduce new** `server_fn(context)` " @@ -19881,7 +19995,7 @@ msgstr "" "[#1544](https://github.com/adap/flower/pull/1544), " "[#1584](https://github.com/adap/flower/pull/1584)" -#: ../../source/ref-changelog.md:346 +#: ../../source/ref-changelog.md:368 msgid "" "In addition to the new `client_fn(context:Context)`, a new " "`server_fn(context: Context) -> ServerAppComponents` can now be passed to" @@ -19890,7 +20004,7 @@ msgid "" "build a configurable `ServerApp`." msgstr "" -#: ../../source/ref-changelog.md:348 +#: ../../source/ref-changelog.md:370 #, fuzzy msgid "" "**Relaunch all** `flwr new` **templates** " @@ -19910,7 +20024,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614)))" -#: ../../source/ref-changelog.md:350 +#: ../../source/ref-changelog.md:372 msgid "" "All `flwr new` templates have been significantly updated to showcase new " "Flower features and best practices. This includes using `flwr run` and " @@ -19919,7 +20033,7 @@ msgid "" "run` it." msgstr "" -#: ../../source/ref-changelog.md:352 +#: ../../source/ref-changelog.md:374 #, fuzzy msgid "" "**Introduce** `flower-supernode` **(preview)** " @@ -19928,7 +20042,7 @@ msgstr "" "**介绍Flower Android SDK** " "([#2131](https://github.com/adap/flower/pull/2131))" -#: ../../source/ref-changelog.md:354 +#: ../../source/ref-changelog.md:376 msgid "" "The new `flower-supernode` CLI is here to replace `flower-client-app`. " "`flower-supernode` brings full multi-app support to the Flower client-" @@ -19937,7 +20051,7 @@ msgid "" "`client_fn(context: Context)` signature)." msgstr "" -#: ../../source/ref-changelog.md:356 +#: ../../source/ref-changelog.md:378 #, fuzzy msgid "" "**Introduce node config** " @@ -19952,7 +20066,7 @@ msgstr "" "[#1681](https://github.com/adap/flower/pull/1681), " "[#1679](https://github.com/adap/flower/pull/1679)" -#: ../../source/ref-changelog.md:358 +#: ../../source/ref-changelog.md:380 msgid "" "A new node config feature allows you to pass a static configuration to " "the SuperNode. This configuration is read-only and available to every " @@ -19960,7 +20074,7 @@ msgid "" "config via `Context` (`context.node_config`)." msgstr "" -#: ../../source/ref-changelog.md:360 +#: ../../source/ref-changelog.md:382 msgid "" "**Introduce SuperExec (experimental)** " "([#3605](https://github.com/adap/flower/pull/3605), " @@ -19981,14 +20095,14 @@ msgid "" "[#3629](https://github.com/adap/flower/pull/3629))" msgstr "" -#: ../../source/ref-changelog.md:362 +#: ../../source/ref-changelog.md:384 msgid "" "This is the first experimental release of Flower SuperExec, a new service" " that executes your runs. It's not ready for production deployment just " "yet, but don't hesitate to give it a try if you're interested." msgstr "" -#: ../../source/ref-changelog.md:364 +#: ../../source/ref-changelog.md:386 #, fuzzy msgid "" "**Add new federated learning with tabular data example** " @@ -19997,13 +20111,13 @@ msgstr "" "** 添加使用 fastai 和 Flower 进行联邦学习的新示例** " "([#1598](https://github.com/adap/flower/pull/1598))" -#: ../../source/ref-changelog.md:366 +#: ../../source/ref-changelog.md:388 msgid "" "A new code example exemplifies a federated learning setup using the " "Flower framework on the Adult Census Income tabular dataset." msgstr "" -#: ../../source/ref-changelog.md:368 +#: ../../source/ref-changelog.md:390 #, fuzzy msgid "" "**Create generic adapter layer (preview)** " @@ -20015,7 +20129,7 @@ msgstr "" "[#2390](https://github.com/adap/flower/pull/2390), " "[#2493](https://github.com/adap/flower/pull/2493))" -#: ../../source/ref-changelog.md:370 +#: ../../source/ref-changelog.md:392 msgid "" "A new generic gRPC adapter layer allows 3rd-party frameworks to integrate" " with Flower in a transparent way. This makes Flower more modular and " @@ -20023,7 +20137,7 @@ msgid "" "platforms." msgstr "" -#: ../../source/ref-changelog.md:372 +#: ../../source/ref-changelog.md:394 #, fuzzy msgid "" "**Refactor Flower Simulation Engine** " @@ -20046,7 +20160,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475)))" -#: ../../source/ref-changelog.md:374 +#: ../../source/ref-changelog.md:396 msgid "" "The Simulation Engine was significantly refactored. This results in " "faster and more stable simulations. It is also the foundation for " @@ -20054,20 +20168,20 @@ msgid "" "configurability in federated learning simulations." msgstr "" -#: ../../source/ref-changelog.md:376 +#: ../../source/ref-changelog.md:398 #, fuzzy msgid "" "**Optimize Docker containers** " "([#3591](https://github.com/adap/flower/pull/3591))" msgstr "新文档主题 ([#551](https://github.com/adap/flower/pull/551))" -#: ../../source/ref-changelog.md:378 +#: ../../source/ref-changelog.md:400 msgid "" "Flower Docker containers were optimized and updated to use that latest " "Flower framework features." msgstr "" -#: ../../source/ref-changelog.md:380 +#: ../../source/ref-changelog.md:402 #, fuzzy msgid "" "**Improve logging** ([#3776](https://github.com/adap/flower/pull/3776), " @@ -20076,13 +20190,13 @@ msgstr "" "** 更新代码示例** ([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" -#: ../../source/ref-changelog.md:382 +#: ../../source/ref-changelog.md:404 msgid "" "Improved logging aims to be more concise and helpful to show you the " "details you actually care about." msgstr "" -#: ../../source/ref-changelog.md:384 +#: ../../source/ref-changelog.md:406 #, fuzzy msgid "" "**Refactor framework internals** " @@ -20103,14 +20217,19 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475)))" -#: ../../source/ref-changelog.md:390 +#: ../../source/ref-changelog.md:410 +#, fuzzy +msgid "Documentation improvements" +msgstr "可选的改进措施" + +#: ../../source/ref-changelog.md:412 #, fuzzy msgid "" "**Add 🇰🇷 Korean translations** " "([#3680](https://github.com/adap/flower/pull/3680))" msgstr "**在 Colab 中打开按钮** ([#1389](https://github.com/adap/flower/pull/1389))" -#: ../../source/ref-changelog.md:392 +#: ../../source/ref-changelog.md:414 #, fuzzy msgid "" "**Update translations** " @@ -20131,7 +20250,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475)))" -#: ../../source/ref-changelog.md:394 +#: ../../source/ref-changelog.md:416 #, fuzzy msgid "" "**Update documentation** " @@ -20152,18 +20271,18 @@ msgstr "" "[#1477](https://github.com/adap/flower/pull/1477), " "[#2171](https://github.com/adap/flower/pull/2171))" -#: ../../source/ref-changelog.md:396 +#: ../../source/ref-changelog.md:418 msgid "" "Updated documentation includes new install instructions for different " "shells, a new Flower Code Examples documentation landing page, new `flwr`" " CLI docs and an updated federated XGBoost code example." msgstr "" -#: ../../source/ref-changelog.md:400 +#: ../../source/ref-changelog.md:422 msgid "**Deprecate** `client_fn(cid: str)`" msgstr "" -#: ../../source/ref-changelog.md:402 +#: ../../source/ref-changelog.md:424 msgid "" "`client_fn` used to have a signature `client_fn(cid: str) -> Client`. " "This signature is now deprecated. Use the new signature " @@ -20176,13 +20295,13 @@ msgid "" " the dataset on each simulated or deployed SuperNode." msgstr "" -#: ../../source/ref-changelog.md:404 +#: ../../source/ref-changelog.md:426 msgid "" "**Deprecate passing** `Server/ServerConfig/Strategy/ClientManager` **to**" " `ServerApp` **directly**" msgstr "" -#: ../../source/ref-changelog.md:406 +#: ../../source/ref-changelog.md:428 msgid "" "Creating `ServerApp` using `ServerApp(config=config, strategy=strategy)` " "is now deprecated. Instead of passing " @@ -20195,14 +20314,14 @@ msgid "" " the `run_config`)." msgstr "" -#: ../../source/ref-changelog.md:410 +#: ../../source/ref-changelog.md:432 #, fuzzy msgid "" "**Remove support for `client_ids` in `start_simulation`** " "([#3699](https://github.com/adap/flower/pull/3699))" msgstr "**改进模拟中的 GPU 支持**([#1555](https://github.com/adap/flower/pull/1555))" -#: ../../source/ref-changelog.md:412 +#: ../../source/ref-changelog.md:434 msgid "" "The (rarely used) feature that allowed passing custom `client_ids` to the" " `start_simulation` function was removed. This removal is part of a " @@ -20210,26 +20329,26 @@ msgid "" "internals work in simulation and deployment." msgstr "" -#: ../../source/ref-changelog.md:414 +#: ../../source/ref-changelog.md:436 #, fuzzy msgid "" "**Remove `flower-driver-api` and `flower-fleet-api`** " "([#3418](https://github.com/adap/flower/pull/3418))" msgstr "**移除过时的 KerasClient**([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:416 +#: ../../source/ref-changelog.md:438 msgid "" "The two deprecated CLI commands `flower-driver-api` and `flower-fleet-" "api` were removed in an effort to streamline the SuperLink developer " "experience. Use `flower-superlink` instead." msgstr "" -#: ../../source/ref-changelog.md:418 +#: ../../source/ref-changelog.md:440 #, fuzzy msgid "v1.9.0 (2024-06-10)" msgstr "v1.3.0 (2023-02-06)" -#: ../../source/ref-changelog.md:424 +#: ../../source/ref-changelog.md:446 #, fuzzy msgid "" "`Adam Narozniak`, `Charles Beauville`, `Chong Shen Ng`, `Daniel J. " @@ -20243,7 +20362,7 @@ msgstr "" "Topal`, `achiverram28`, `danielnugraha`, `eunchung`, `ruthgal` " -#: ../../source/ref-changelog.md:428 +#: ../../source/ref-changelog.md:450 #, fuzzy msgid "" "**Introduce built-in authentication (preview)** " @@ -20272,7 +20391,7 @@ msgstr "" "[#1519](https://github.com/adap/flower/pull/1519), " "[#1515](https://github.com/adap/flower/pull/1515))" -#: ../../source/ref-changelog.md:430 +#: ../../source/ref-changelog.md:452 msgid "" "Flower 1.9 introduces the first build-in version of client node " "authentication. In previous releases, users often wrote glue code to " @@ -20284,14 +20403,14 @@ msgid "" "authentication) help you to get started." msgstr "" -#: ../../source/ref-changelog.md:432 +#: ../../source/ref-changelog.md:454 msgid "" "This is the first preview release of the Flower-native authentication " "system. Many additional features are on the roadmap for upcoming Flower " "releases - stay tuned." msgstr "" -#: ../../source/ref-changelog.md:434 +#: ../../source/ref-changelog.md:456 #, fuzzy msgid "" "**Introduce end-to-end Docker support** " @@ -20316,7 +20435,7 @@ msgstr "" "[#1770](https://github.com/adap/flower/pull/1770), " "[#1733](https://github.com/adap/flower/pull/1733))" -#: ../../source/ref-changelog.md:436 +#: ../../source/ref-changelog.md:458 msgid "" "Full Flower Next Docker support is here! With the release of Flower 1.9, " "Flower provides stable Docker images for the Flower SuperLink, the Flower" @@ -20326,7 +20445,7 @@ msgid "" "docker.html) to get stated." msgstr "" -#: ../../source/ref-changelog.md:438 +#: ../../source/ref-changelog.md:460 #, fuzzy msgid "" "**Re-architect Flower Next simulation engine** " @@ -20347,7 +20466,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614)))" -#: ../../source/ref-changelog.md:440 +#: ../../source/ref-changelog.md:462 msgid "" "Flower Next simulations now use a new in-memory `Driver` that improves " "the reliability of simulations, especially in notebook environments. This" @@ -20355,7 +20474,7 @@ msgid "" "simulation architecture." msgstr "" -#: ../../source/ref-changelog.md:442 +#: ../../source/ref-changelog.md:464 #, fuzzy msgid "" "**Upgrade simulation engine** " @@ -20375,21 +20494,21 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614)))" -#: ../../source/ref-changelog.md:444 +#: ../../source/ref-changelog.md:466 msgid "" "The Flower Next simulation engine comes with improved and configurable " "logging. The Ray-based simulation backend in Flower 1.9 was updated to " "use Ray 2.10." msgstr "" -#: ../../source/ref-changelog.md:446 +#: ../../source/ref-changelog.md:468 #, fuzzy msgid "" "**Introduce FedPFT baseline** " "([#3268](https://github.com/adap/flower/pull/3268))" msgstr "**引入 start_driver**([#1697](https://github.com/adap/flower/pull/1697))" -#: ../../source/ref-changelog.md:448 +#: ../../source/ref-changelog.md:470 msgid "" "FedPFT allows you to perform one-shot Federated Learning by leveraging " "widely available foundational models, dramatically reducing communication" @@ -20400,7 +20519,7 @@ msgid "" "([arxiv](https://arxiv.org/abs/2402.01862))" msgstr "" -#: ../../source/ref-changelog.md:450 +#: ../../source/ref-changelog.md:472 #, fuzzy msgid "" "**Launch additional** `flwr new` **templates for Apple MLX, Hugging Face " @@ -20420,7 +20539,7 @@ msgstr "" "[#2355](https://github.com/adap/flower/pull/2355), " "[#2356](https://github.com/adap/flower/pull/2356))" -#: ../../source/ref-changelog.md:452 +#: ../../source/ref-changelog.md:474 msgid "" "The `flwr` CLI's `flwr new` command is starting to become everone's " "favorite way of creating new Flower projects. This release introduces " @@ -20429,7 +20548,7 @@ msgid "" "also received updates." msgstr "" -#: ../../source/ref-changelog.md:454 +#: ../../source/ref-changelog.md:476 #, fuzzy msgid "" "**Refine** `RecordSet` **API** " @@ -20447,14 +20566,14 @@ msgstr "" "[#1477](https://github.com/adap/flower/pull/1477), " "[#2171](https://github.com/adap/flower/pull/2171))" -#: ../../source/ref-changelog.md:456 +#: ../../source/ref-changelog.md:478 msgid "" "`RecordSet` is part of the Flower Next low-level API preview release. In " "Flower 1.9, `RecordSet` received a number of usability improvements that " "make it easier to build `RecordSet`-based `ServerApp`s and `ClientApp`s." msgstr "" -#: ../../source/ref-changelog.md:458 +#: ../../source/ref-changelog.md:480 #, fuzzy msgid "" "**Beautify logging** ([#3379](https://github.com/adap/flower/pull/3379), " @@ -20468,13 +20587,13 @@ msgstr "" "[#2523](https://github.com/adap/flower/pull/2523), " "[#2522](https://github.com/adap/flower/pull/2522))" -#: ../../source/ref-changelog.md:460 +#: ../../source/ref-changelog.md:482 msgid "" "Logs received a substantial update. Not only are logs now much nicer to " "look at, but they are also more configurable." msgstr "" -#: ../../source/ref-changelog.md:462 +#: ../../source/ref-changelog.md:484 #, fuzzy msgid "" "**Improve reliability** " @@ -20494,13 +20613,13 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475)))" -#: ../../source/ref-changelog.md:464 +#: ../../source/ref-changelog.md:486 msgid "" "Flower 1.9 includes reliability improvements across many parts of the " "system. One example is a much improved SuperNode shutdown procedure." msgstr "" -#: ../../source/ref-changelog.md:466 +#: ../../source/ref-changelog.md:488 #, fuzzy msgid "" "**Update Swift and C++ SDKs** " @@ -20510,14 +20629,14 @@ msgstr "" "** 更新代码示例** ([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" -#: ../../source/ref-changelog.md:468 +#: ../../source/ref-changelog.md:490 msgid "" "In the C++ SDK, communication-related code is now separate from main " "client logic. A new abstract class `Communicator` has been introduced " "alongside a gRPC implementation of it." msgstr "" -#: ../../source/ref-changelog.md:470 +#: ../../source/ref-changelog.md:492 msgid "" "**Improve testing, tooling and CI/CD infrastructure** " "([#3294](https://github.com/adap/flower/pull/3294), " @@ -20551,13 +20670,13 @@ msgid "" "[#3271](https://github.com/adap/flower/pull/3271))" msgstr "" -#: ../../source/ref-changelog.md:472 +#: ../../source/ref-changelog.md:494 msgid "" "As always, the Flower tooling, testing, and CI/CD infrastructure has " "received many updates." msgstr "" -#: ../../source/ref-changelog.md:474 +#: ../../source/ref-changelog.md:496 msgid "" "**Improve documentation** " "([#3530](https://github.com/adap/flower/pull/3530), " @@ -20582,20 +20701,20 @@ msgid "" "[#3274](https://github.com/adap/flower/pull/3274))" msgstr "" -#: ../../source/ref-changelog.md:476 +#: ../../source/ref-changelog.md:498 msgid "" "As always, the Flower documentation has received many updates. Notable " "new pages include:" msgstr "" -#: ../../source/ref-changelog.md:478 +#: ../../source/ref-changelog.md:500 msgid "" "[How-to upgrate to Flower Next (Flower Next migration " "guide)](https://flower.ai/docs/framework/how-to-upgrade-to-flower-" "next.html)" msgstr "" -#: ../../source/ref-changelog.md:480 +#: ../../source/ref-changelog.md:502 #, fuzzy msgid "" "[How-to run Flower using Docker](https://flower.ai/docs/framework/how-to-" @@ -20604,13 +20723,13 @@ msgstr "" "`TensorFlow快速入门 (教程) `_" -#: ../../source/ref-changelog.md:482 +#: ../../source/ref-changelog.md:504 msgid "" "[Flower Mods reference](https://flower.ai/docs/framework/ref-" "api/flwr.client.mod.html#module-flwr.client.mod)" msgstr "" -#: ../../source/ref-changelog.md:484 +#: ../../source/ref-changelog.md:506 #, fuzzy msgid "" "**General updates to Flower Examples** " @@ -20644,12 +20763,12 @@ msgstr "" "[#1305](https://github.com/adap/flower/pull/1305), " "[#1307](https://github.com/adap/flower/pull/1307))" -#: ../../source/ref-changelog.md:486 +#: ../../source/ref-changelog.md:508 #, fuzzy msgid "As always, Flower code examples have received many updates." msgstr "许多 \"Flower \"代码示例得到了大幅更新。" -#: ../../source/ref-changelog.md:488 +#: ../../source/ref-changelog.md:510 msgid "" "**General improvements** " "([#3532](https://github.com/adap/flower/pull/3532), " @@ -20688,12 +20807,12 @@ msgid "" "[#3261](https://github.com/adap/flower/pull/3261))" msgstr "" -#: ../../source/ref-changelog.md:492 +#: ../../source/ref-changelog.md:514 #, fuzzy msgid "**Deprecate Python 3.8 support**" msgstr "** 过时的 Python 3.8**" -#: ../../source/ref-changelog.md:494 +#: ../../source/ref-changelog.md:516 #, fuzzy msgid "" "Python 3.8 will stop receiving security fixes in [October " @@ -20701,7 +20820,7 @@ msgid "" "now deprecated and will be removed in an upcoming release." msgstr "由于 Python 3.8 已于 2024-10-01 弃用 (EOL),对 Python 3.7 的支持现已废弃,并将在即将发布的版本中移除。" -#: ../../source/ref-changelog.md:496 +#: ../../source/ref-changelog.md:518 #, fuzzy msgid "" "**Deprecate (experimental)** `flower-driver-api` **and** `flower-fleet-" @@ -20711,14 +20830,14 @@ msgstr "" "FedBN ([#2608](https://github.com/adap/flower/pull/2608), " "[#2615](https://github.com/adap/flower/pull/2615))" -#: ../../source/ref-changelog.md:498 +#: ../../source/ref-changelog.md:520 msgid "" "Flower 1.9 deprecates the two (experimental) commands `flower-driver-api`" " and `flower-fleet-api`. Both commands will be removed in an upcoming " "release. Use `flower-superlink` instead." msgstr "" -#: ../../source/ref-changelog.md:500 +#: ../../source/ref-changelog.md:522 #, fuzzy msgid "" "**Deprecate** `--server` **in favor of** `--superlink` " @@ -20727,14 +20846,14 @@ msgstr "" "**启用向** `start_simulation` 传递** `Server` 实例 " "([#1281](https://github.com/adap/flower/pull/1281))" -#: ../../source/ref-changelog.md:502 +#: ../../source/ref-changelog.md:524 msgid "" "The commands `flower-server-app` and `flower-client-app` should use " "`--superlink` instead of the now deprecated `--server`. Support for " "`--server` will be removed in a future release." msgstr "" -#: ../../source/ref-changelog.md:506 +#: ../../source/ref-changelog.md:528 msgid "" "**Replace** `flower-superlink` **CLI option** `--certificates` **with** " "`--ssl-ca-certfile` **,** `--ssl-certfile` **and** `--ssl-keyfile` " @@ -20742,7 +20861,7 @@ msgid "" "[#3408](https://github.com/adap/flower/pull/3408))" msgstr "" -#: ../../source/ref-changelog.md:508 +#: ../../source/ref-changelog.md:530 msgid "" "SSL-related `flower-superlink` CLI arguments were restructured in an " "incompatible way. Instead of passing a single `--certificates` flag with " @@ -20752,21 +20871,21 @@ msgid "" "connections.html) documentation page for details." msgstr "" -#: ../../source/ref-changelog.md:510 +#: ../../source/ref-changelog.md:532 #, fuzzy msgid "" "**Remove SuperLink** `--vce` **option** " "([#3513](https://github.com/adap/flower/pull/3513))" msgstr "**重构文档**([#1387](https://github.com/adap/flower/pull/1387))" -#: ../../source/ref-changelog.md:512 +#: ../../source/ref-changelog.md:534 msgid "" "Instead of separately starting a SuperLink and a `ServerApp` for " "simulation, simulations must now be started using the single `flower-" "simulation` command." msgstr "" -#: ../../source/ref-changelog.md:514 +#: ../../source/ref-changelog.md:536 #, fuzzy msgid "" "**Merge** `--grpc-rere` **and** `--rest` **SuperLink options** " @@ -20775,7 +20894,7 @@ msgstr "" "**重新命名** `rnd` ** to** `server_round` " "([#1321](https://github.com/adap/flower/pull/1321))" -#: ../../source/ref-changelog.md:516 +#: ../../source/ref-changelog.md:538 msgid "" "To simplify the usage of `flower-superlink`, previously separate sets of " "CLI options for gRPC and REST were merged into one unified set of " @@ -20784,12 +20903,12 @@ msgid "" "details." msgstr "" -#: ../../source/ref-changelog.md:518 +#: ../../source/ref-changelog.md:540 #, fuzzy msgid "v1.8.0 (2024-04-03)" msgstr "v1.3.0 (2023-02-06)" -#: ../../source/ref-changelog.md:524 +#: ../../source/ref-changelog.md:546 #, fuzzy msgid "" "`Adam Narozniak`, `Charles Beauville`, `Daniel J. Beutel`, `Daniel Nata " @@ -20804,7 +20923,7 @@ msgstr "" "Topal`, `achiverram28`, `danielnugraha`, `eunchung`, `ruthgal` " -#: ../../source/ref-changelog.md:528 +#: ../../source/ref-changelog.md:550 #, fuzzy msgid "" "**Introduce Flower Next high-level API (stable)** " @@ -20861,7 +20980,7 @@ msgstr "" "[#3195](https://github.com/adap/flower/pull/3195), " "[#3197](https://github.com/adap/flower/pull/3197))" -#: ../../source/ref-changelog.md:530 +#: ../../source/ref-changelog.md:552 #, fuzzy msgid "" "The Flower Next high-level API is stable! Flower Next is the future of " @@ -20881,7 +21000,7 @@ msgstr "" "Next 允许您同时运行多个项目(我们称之为多重运行),并在模拟环境或部署环境中执行同一项目,而无需更改任何代码。最棒的是什么?它与使用 " "`Strategy`、`NumPyClient` 等的现有 Flower 项目完全兼容。" -#: ../../source/ref-changelog.md:532 +#: ../../source/ref-changelog.md:554 #, fuzzy msgid "" "**Introduce Flower Next low-level API (preview)** " @@ -20893,7 +21012,7 @@ msgstr "" "[#2390](https://github.com/adap/flower/pull/2390), " "[#2493](https://github.com/adap/flower/pull/2493))" -#: ../../source/ref-changelog.md:534 +#: ../../source/ref-changelog.md:556 #, fuzzy msgid "" "In addition to the Flower Next *high-level* API that uses `Strategy`, " @@ -20918,7 +21037,7 @@ msgstr "" "\"接收到的原始信息。新的抽象(如 \"RecordSet\"、\"Message \"和 " "\"Context\")进一步支持发送多个模型、多套配置值和指标、客户端节点上的有状态计算以及自定义 SMPC 协议的实现等。" -#: ../../source/ref-changelog.md:536 +#: ../../source/ref-changelog.md:558 #, fuzzy msgid "" "**Introduce Flower Mods (preview)** " @@ -20930,7 +21049,7 @@ msgstr "" "[#2221](https://github.com/adap/flower/pull/2221), " "[#2248](https://github.com/adap/flower/pull/2248))" -#: ../../source/ref-changelog.md:538 +#: ../../source/ref-changelog.md:560 #, fuzzy msgid "" "Flower Modifiers (we call them Mods) can intercept messages and analyze, " @@ -20947,7 +21066,7 @@ msgstr "" "已经包含了记录信息大小、通过网络发送的参数数量、固定剪切和自适应剪切的差分隐私、本地差分隐私以及安全聚合协议 SecAgg 和 SecAgg+ 的" " Mods。Flower Mods API 作为预览版发布,但研究人员已经可以用它来试验任意的 SMPC 协议。" -#: ../../source/ref-changelog.md:540 +#: ../../source/ref-changelog.md:562 #, fuzzy msgid "" "**Fine-tune LLMs with LLM FlowerTune** " @@ -20966,7 +21085,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475)))" -#: ../../source/ref-changelog.md:542 +#: ../../source/ref-changelog.md:564 #, fuzzy msgid "" "We are introducing LLM FlowerTune, an introductory example that " @@ -20981,7 +21100,7 @@ msgstr "" "Fine-tuning with Flower](https://flower.ai/blog/2024-03-14-llm-" "flowertune-federated-llm-finetuning-with-flower/) 了解更多详情。" -#: ../../source/ref-changelog.md:544 +#: ../../source/ref-changelog.md:566 #, fuzzy msgid "" "**Introduce built-in Differential Privacy (preview)** " @@ -21002,7 +21121,7 @@ msgstr "" "[#993](https://github.com/adap/flower/pull/993), " "[#994](https://github.com/adap/flower/pull/994))" -#: ../../source/ref-changelog.md:546 +#: ../../source/ref-changelog.md:568 #, fuzzy msgid "" "Built-in Differential Privacy is here! Flower supports both central and " @@ -21021,7 +21140,7 @@ msgstr "" "和新的操作指南[如何使用新的差分隐私组件](https://flower.ai/docs/framework/how-to-use-" "differential-privacy.html) 介绍了 Flower 的使用方法。" -#: ../../source/ref-changelog.md:548 +#: ../../source/ref-changelog.md:570 #, fuzzy msgid "" "**Introduce built-in Secure Aggregation (preview)** " @@ -21033,7 +21152,7 @@ msgstr "" "[#2221](https://github.com/adap/flower/pull/2221), " "[#2248](https://github.com/adap/flower/pull/2248))" -#: ../../source/ref-changelog.md:550 +#: ../../source/ref-changelog.md:572 #, fuzzy msgid "" "Built-in Secure Aggregation is here! Flower now supports different secure" @@ -21051,7 +21170,7 @@ msgstr "" "的支持,但更多协议将很快实现。我们还将添加详细的文档,解释安全聚合以及如何在 Flower 中使用它。您可以查看新的代码示例,了解如何使用 " "Flower 在同一项目中轻松结合联合学习、差分隐私和安全聚合。" -#: ../../source/ref-changelog.md:552 +#: ../../source/ref-changelog.md:574 #, fuzzy msgid "" "**Introduce** `flwr` **CLI (preview)** " @@ -21072,14 +21191,14 @@ msgstr "" "[#1477](https://github.com/adap/flower/pull/1477), " "[#2171](https://github.com/adap/flower/pull/2171))" -#: ../../source/ref-changelog.md:554 +#: ../../source/ref-changelog.md:576 #, fuzzy msgid "" "A new `flwr` CLI command allows creating new Flower projects (`flwr new`)" " and then running them using the Simulation Engine (`flwr run`)." msgstr "新的 `flwr` CLI 命令允许创建新的 Flower 项目(`flwr new`),然后使用仿真引擎运行它们(`flwr run`)。" -#: ../../source/ref-changelog.md:556 +#: ../../source/ref-changelog.md:578 #, fuzzy msgid "" "**Introduce Flower Next Simulation Engine** " @@ -21102,7 +21221,7 @@ msgstr "" "[#1770](https://github.com/adap/flower/pull/1770), " "[#1733](https://github.com/adap/flower/pull/1733))" -#: ../../source/ref-changelog.md:558 +#: ../../source/ref-changelog.md:580 #, fuzzy msgid "" "The Flower Simulation Engine can now run Flower Next projects. For " @@ -21112,14 +21231,14 @@ msgstr "" "Flower 模拟引擎现在可以运行 Flower Next 项目。对于笔记本环境,还有一个新的 `run_simulation` 函数,可以运行 " "`ServerApp` 和 `ClientApp`。" -#: ../../source/ref-changelog.md:560 +#: ../../source/ref-changelog.md:582 #, fuzzy msgid "" "**Handle SuperNode connection errors** " "([#2969](https://github.com/adap/flower/pull/2969))" msgstr "** 添加一个新的 gRPC 选项**([#2197](https://github.com/adap/flower/pull/2197))" -#: ../../source/ref-changelog.md:562 +#: ../../source/ref-changelog.md:584 #, fuzzy msgid "" "A SuperNode will now try to reconnect indefinitely to the SuperLink in " @@ -21134,7 +21253,7 @@ msgstr "" "retries` 和 `-max-wait-time`。最大重试次数 \"将定义客户端在放弃重新连接超级链接之前的重试次数,而 \"最大等待时间 " "\"则定义超级节点放弃重新连接超级链接之前的等待时间。" -#: ../../source/ref-changelog.md:564 +#: ../../source/ref-changelog.md:586 #, fuzzy msgid "" "**General updates to Flower Baselines** " @@ -21149,7 +21268,7 @@ msgstr "" "[#1681](https://github.com/adap/flower/pull/1681), " "[#1679](https://github.com/adap/flower/pull/1679)" -#: ../../source/ref-changelog.md:566 +#: ../../source/ref-changelog.md:588 #, fuzzy msgid "" "There's a new [FedStar](https://flower.ai/docs/baselines/fedstar.html) " @@ -21158,7 +21277,7 @@ msgstr "" "有一条新的 [FedStar](https://flower.ai/docs/baselines/fedstar.html) " "基准线。其他几条基准线也已更新。" -#: ../../source/ref-changelog.md:568 +#: ../../source/ref-changelog.md:590 #, fuzzy msgid "" "**Improve documentation and translations** " @@ -21196,7 +21315,7 @@ msgstr "" "[#2990](https://github.com/adap/flower/pull/2990), " "[#2989](https://github.com/adap/flower/pull/2989))" -#: ../../source/ref-changelog.md:570 +#: ../../source/ref-changelog.md:592 #, fuzzy msgid "" "As usual, we merged many smaller and larger improvements to the " @@ -21206,7 +21325,7 @@ msgstr "" "像往常一样,我们合并了许多对文档的较大和较小的改进。特别要感谢 [Sebastian van der " "Voort](https://github.com/svdvoort),他为我们带来了一份重要的文档 PR!" -#: ../../source/ref-changelog.md:572 +#: ../../source/ref-changelog.md:594 #, fuzzy msgid "" "**General updates to Flower Examples** " @@ -21232,7 +21351,7 @@ msgstr "" "[#1519](https://github.com/adap/flower/pull/1519), " "[#1515](https://github.com/adap/flower/pull/1515))" -#: ../../source/ref-changelog.md:574 +#: ../../source/ref-changelog.md:596 #, fuzzy msgid "" "Two new examples show federated training of a Vision Transformer (ViT) " @@ -21245,7 +21364,7 @@ msgstr "" "\"和 \"quickstart-tensorflow \"展示了新的 Flower Next \"ServerApp \"和 " "\"ClientApp\"。许多其他示例也得到了大量更新。" -#: ../../source/ref-changelog.md:576 +#: ../../source/ref-changelog.md:598 #, fuzzy msgid "" "**General improvements** " @@ -21397,12 +21516,12 @@ msgstr "" "[#2955](https://github.com/adap/flower/pull/2955), " "[#2954](https://github.com/adap/flower/pull/2954))" -#: ../../source/ref-changelog.md:582 +#: ../../source/ref-changelog.md:604 #, fuzzy msgid "v1.7.0 (2024-02-05)" msgstr "v1.3.0 (2023-02-06)" -#: ../../source/ref-changelog.md:588 +#: ../../source/ref-changelog.md:610 #, fuzzy msgid "" "`Aasheesh Singh`, `Adam Narozniak`, `Aml Hassan Esmil`, `Charles " @@ -21418,7 +21537,7 @@ msgstr "" "Topal`, `achiverram28`, `danielnugraha`, `eunchung`, `ruthgal` " -#: ../../source/ref-changelog.md:592 +#: ../../source/ref-changelog.md:614 #, fuzzy msgid "" "**Introduce stateful clients (experimental)** " @@ -21434,7 +21553,7 @@ msgstr "" "[#2327](https://github.com/adap/flower/pull/2327), " "[#2435](https://github.com/adap/flower/pull/2435))" -#: ../../source/ref-changelog.md:594 +#: ../../source/ref-changelog.md:616 #, fuzzy msgid "" "Subclasses of `Client` and `NumPyClient` can now store local state that " @@ -21453,14 +21572,14 @@ msgstr "" "RecordSet = self.context.state`。对该 `RecordSet` " "的更改会在不同轮执行中保留,以便在模拟和部署中以统一的方式进行有状态计算。" -#: ../../source/ref-changelog.md:596 +#: ../../source/ref-changelog.md:618 #, fuzzy msgid "" "**Improve performance** " "([#2293](https://github.com/adap/flower/pull/2293))" msgstr "**改进示例笔记** ([#2005](https://github.com/adap/flower/pull/2005))" -#: ../../source/ref-changelog.md:598 +#: ../../source/ref-changelog.md:620 #, fuzzy msgid "" "Flower is faster than ever. All `FedAvg`-derived strategies now use in-" @@ -21472,7 +21591,7 @@ msgstr "" "Flower 的速度比以往更快。所有源于 `FedAvg` 的策略现在都使用就地聚合,以减少内存消耗。Flower " "客户端序列化/解序列化已从头开始重写,从而显著提高了速度,尤其是在客户端训练时间较短的情况下。" -#: ../../source/ref-changelog.md:600 +#: ../../source/ref-changelog.md:622 #, fuzzy msgid "" "**Support Federated Learning with Apple MLX and Flower** " @@ -21481,7 +21600,7 @@ msgstr "" "** 添加使用 fastai 和 Flower 进行联邦学习的新示例** " "([#1598](https://github.com/adap/flower/pull/1598))" -#: ../../source/ref-changelog.md:602 +#: ../../source/ref-changelog.md:624 #, fuzzy msgid "" "Flower has official support for federated learning using [Apple " @@ -21491,7 +21610,7 @@ msgstr "" "通过新的 `quickstart-mlx` 代码示例,Flower 正式支持使用 [Apple MLX](https://ml-" "explore.github.io/mlx)的联合学习。" -#: ../../source/ref-changelog.md:604 +#: ../../source/ref-changelog.md:626 #, fuzzy msgid "" "**Introduce new XGBoost cyclic strategy** " @@ -21501,7 +21620,7 @@ msgstr "" "**介绍 iOS SDK(预览版)** ([#1621](https://github.com/adap/flower/pull/1621), " "[#1764](https://github.com/adap/flower/pull/1764))" -#: ../../source/ref-changelog.md:606 +#: ../../source/ref-changelog.md:628 #, fuzzy msgid "" "A new strategy called `FedXgbCyclic` supports a client-by-client style of" @@ -21514,21 +21633,21 @@ msgstr "" "\"代码示例展示了如何在一个完整的项目中使用它。除此之外,`xgboost-comprehensive` 现在还支持模拟模式。由此,Flower " "提供了同类最佳的 XGBoost 支持。" -#: ../../source/ref-changelog.md:608 +#: ../../source/ref-changelog.md:630 #, fuzzy msgid "" "**Support Python 3.11** " "([#2394](https://github.com/adap/flower/pull/2394))" msgstr "** 支持 Python 3.10** ([#1320](https://github.com/adap/flower/pull/1320))" -#: ../../source/ref-changelog.md:610 +#: ../../source/ref-changelog.md:632 #, fuzzy msgid "" "Framework tests now run on Python 3.8, 3.9, 3.10, and 3.11. This will " "ensure better support for users using more recent Python versions." msgstr "框架测试现在可在 Python 3.8、3.9、3.10 和 3.11 上运行。这将确保为使用最新 Python 版本的用户提供更好的支持。" -#: ../../source/ref-changelog.md:612 +#: ../../source/ref-changelog.md:634 #, fuzzy msgid "" "**Update gRPC and ProtoBuf dependencies** " @@ -21537,14 +21656,14 @@ msgstr "" "**更新 REST API 以支持创建和删除节点** " "([#2283](https://github.com/adap/flower/pull/2283))" -#: ../../source/ref-changelog.md:614 +#: ../../source/ref-changelog.md:636 #, fuzzy msgid "" "The `grpcio` and `protobuf` dependencies were updated to their latest " "versions for improved security and performance." msgstr "为提高安全性和性能,\"grpcio \"和 \"protobuf \"依赖项已更新至最新版本。" -#: ../../source/ref-changelog.md:616 +#: ../../source/ref-changelog.md:638 #, fuzzy msgid "" "**Introduce Docker image for Flower server** " @@ -21565,7 +21684,7 @@ msgstr "" "[#993](https://github.com/adap/flower/pull/993), " "[#994](https://github.com/adap/flower/pull/994))" -#: ../../source/ref-changelog.md:618 +#: ../../source/ref-changelog.md:640 #, fuzzy msgid "" "The Flower server can now be run using an official Docker image. A new " @@ -21577,7 +21696,7 @@ msgstr "" "Flower](https://flower.ai/docs/framework/how-to-run-flower-using-" "docker.html)。Flower 客户端 Docker 官方镜像将随后发布。" -#: ../../source/ref-changelog.md:620 +#: ../../source/ref-changelog.md:642 #, fuzzy msgid "" "**Introduce** `flower-via-docker-compose` **example** " @@ -21586,21 +21705,21 @@ msgstr "" "**介绍Flower Android SDK** " "([#2131](https://github.com/adap/flower/pull/2131))" -#: ../../source/ref-changelog.md:622 +#: ../../source/ref-changelog.md:644 #, fuzzy msgid "" "**Introduce** `quickstart-sklearn-tabular` **example** " "([#2719](https://github.com/adap/flower/pull/2719))" msgstr "**引入 start_driver**([#1697](https://github.com/adap/flower/pull/1697))" -#: ../../source/ref-changelog.md:624 +#: ../../source/ref-changelog.md:646 #, fuzzy msgid "" "**Introduce** `custom-metrics` **example** " "([#1958](https://github.com/adap/flower/pull/1958))" msgstr "**引入 start_driver**([#1697](https://github.com/adap/flower/pull/1697))" -#: ../../source/ref-changelog.md:626 +#: ../../source/ref-changelog.md:648 #, fuzzy msgid "" "**Update code examples to use Flower Datasets** " @@ -21614,14 +21733,14 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310)" -#: ../../source/ref-changelog.md:628 +#: ../../source/ref-changelog.md:650 #, fuzzy msgid "" "Several code examples were updated to use [Flower " "Datasets](https://flower.ai/docs/datasets/)." msgstr "更新了多个代码示例,以使用 [Flower Datasets](https://flower.ai/docs/datasets/) 。" -#: ../../source/ref-changelog.md:630 +#: ../../source/ref-changelog.md:652 #, fuzzy msgid "" "**General updates to Flower Examples** " @@ -21646,16 +21765,16 @@ msgstr "" "[#1662](https://github.com/adap/flower/pull/1662), " "[#1794](https://github.com/adap/flower/pull/1794))" -#: ../../source/ref-changelog.md:632 +#: ../../source/ref-changelog.md:654 #, fuzzy msgid "Many Flower code examples received substantial updates." msgstr "许多 \"Flower \"代码示例得到了大幅更新。" -#: ../../source/ref-changelog.md:634 ../../source/ref-changelog.md:727 +#: ../../source/ref-changelog.md:656 ../../source/ref-changelog.md:749 msgid "**Update Flower Baselines**" msgstr "**更新 Flower Baselines**" -#: ../../source/ref-changelog.md:636 +#: ../../source/ref-changelog.md:658 #, fuzzy msgid "" "HFedXGBoost ([#2226](https://github.com/adap/flower/pull/2226), " @@ -21664,32 +21783,32 @@ msgstr "" "FedBN ([#2608](https://github.com/adap/flower/pull/2608), " "[#2615](https://github.com/adap/flower/pull/2615))" -#: ../../source/ref-changelog.md:637 +#: ../../source/ref-changelog.md:659 #, fuzzy msgid "FedVSSL ([#2412](https://github.com/adap/flower/pull/2412))" msgstr "FjORD [#2431](https://github.com/adap/flower/pull/2431)" -#: ../../source/ref-changelog.md:638 +#: ../../source/ref-changelog.md:660 #, fuzzy msgid "FedNova ([#2179](https://github.com/adap/flower/pull/2179))" msgstr "FjORD [#2431](https://github.com/adap/flower/pull/2431)" -#: ../../source/ref-changelog.md:639 +#: ../../source/ref-changelog.md:661 #, fuzzy msgid "HeteroFL ([#2439](https://github.com/adap/flower/pull/2439))" msgstr "FedMeta [#2438](https://github.com/adap/flower/pull/2438)" -#: ../../source/ref-changelog.md:640 +#: ../../source/ref-changelog.md:662 #, fuzzy msgid "FedAvgM ([#2246](https://github.com/adap/flower/pull/2246))" msgstr "FedPer [#2266](https://github.com/adap/flower/pull/2266)" -#: ../../source/ref-changelog.md:641 +#: ../../source/ref-changelog.md:663 #, fuzzy msgid "FedPara ([#2722](https://github.com/adap/flower/pull/2722))" msgstr "FedPer [#2266](https://github.com/adap/flower/pull/2266)" -#: ../../source/ref-changelog.md:643 +#: ../../source/ref-changelog.md:665 #, fuzzy msgid "" "**Improve documentation** " @@ -21708,7 +21827,7 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614)))" -#: ../../source/ref-changelog.md:645 +#: ../../source/ref-changelog.md:667 #, fuzzy msgid "" "**Improved testing and development infrastructure** " @@ -21772,14 +21891,14 @@ msgstr "" "[#2661](https://github.com/adap/flower/pull/2661), " "[#2398](https://github.com/adap/flower/pull/2398))" -#: ../../source/ref-changelog.md:647 +#: ../../source/ref-changelog.md:669 #, fuzzy msgid "" "The Flower testing and development infrastructure has received " "substantial updates. This makes Flower 1.7 the most tested release ever." msgstr "Flower 测试和开发基础架构已得到大幅更新。这使得 Flower 1.7 成为有史以来经过最多测试的版本。" -#: ../../source/ref-changelog.md:649 +#: ../../source/ref-changelog.md:671 #, fuzzy msgid "" "**Update dependencies** " @@ -21815,7 +21934,7 @@ msgstr "" "[#2225](https://github.com/adap/flower/pull/2225), " "[#2183](https://github.com/adap/flower/pull/2183))" -#: ../../source/ref-changelog.md:651 +#: ../../source/ref-changelog.md:673 #, fuzzy msgid "" "**General improvements** " @@ -21893,7 +22012,7 @@ msgstr "" "[#2672](https://github.com/adap/flower/pull/2672), " "[#2759](https://github.com/adap/flower/pull/2759))" -#: ../../source/ref-changelog.md:655 +#: ../../source/ref-changelog.md:677 #, fuzzy msgid "" "**Deprecate** `start_numpy_client` " @@ -21903,7 +22022,7 @@ msgstr "" "TAMUNA ([#2254](https://github.com/adap/flower/pull/2254), " "[#2508](https://github.com/adap/flower/pull/2508))" -#: ../../source/ref-changelog.md:657 +#: ../../source/ref-changelog.md:679 #, fuzzy msgid "" "Until now, clients of type `NumPyClient` needed to be started via " @@ -21919,14 +22038,14 @@ msgstr "" "客户端,只需首先调用 `.to_client()` 方法,然后将返回的 `Client` 对象传递给 " "`start_client`。示例和文档已相应更新。" -#: ../../source/ref-changelog.md:659 +#: ../../source/ref-changelog.md:681 #, fuzzy msgid "" "**Deprecate legacy DP wrappers** " "([#2749](https://github.com/adap/flower/pull/2749))" msgstr "**移除过时的 KerasClient**([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:661 +#: ../../source/ref-changelog.md:683 #, fuzzy msgid "" "Legacy DP wrapper classes are deprecated, but still functional. This is " @@ -21934,7 +22053,7 @@ msgid "" "support in Flower." msgstr "传统的 DP 封装类已废弃,但仍可正常使用。这是为 Flower 中的全新可插拔差分隐私支持版本做准备。" -#: ../../source/ref-changelog.md:663 +#: ../../source/ref-changelog.md:685 #, fuzzy msgid "" "**Make optional arg** `--callable` **in** `flower-client` **a required " @@ -21943,7 +22062,7 @@ msgstr "" "**从** `start_client` 中移除** `rest` **实验参数 " "([#2324](https://github.com/adap/flower/pull/2324))" -#: ../../source/ref-changelog.md:665 +#: ../../source/ref-changelog.md:687 #, fuzzy msgid "" "**Rename** `certificates` **to** `root_certificates` **in** `Driver` " @@ -21952,7 +22071,7 @@ msgstr "" "**重新命名** `rnd` ** to** `server_round` " "([#1321](https://github.com/adap/flower/pull/1321))" -#: ../../source/ref-changelog.md:667 +#: ../../source/ref-changelog.md:689 #, fuzzy msgid "" "**Drop experimental** `Task` **fields** " @@ -21962,7 +22081,7 @@ msgstr "" "FedBN ([#2608](https://github.com/adap/flower/pull/2608), " "[#2615](https://github.com/adap/flower/pull/2615))" -#: ../../source/ref-changelog.md:669 +#: ../../source/ref-changelog.md:691 #, fuzzy msgid "" "Experimental fields `sa`, `legacy_server_message` and " @@ -21972,14 +22091,14 @@ msgstr "" "从 `Task` 消息中删除了试验性字段 `sa`、 `legacy_server_message` 和 " "`legacy_client_message`。删除的字段已被新的 `RecordSet` 抽象所取代。" -#: ../../source/ref-changelog.md:671 +#: ../../source/ref-changelog.md:693 #, fuzzy msgid "" "**Retire MXNet examples** " "([#2724](https://github.com/adap/flower/pull/2724))" msgstr "**新的 scikit-learn 代码示例** ([#748](https://github.com/adap/flower/pull/748))" -#: ../../source/ref-changelog.md:673 +#: ../../source/ref-changelog.md:695 #, fuzzy msgid "" "The development of the MXNet fremework has ended and the project is now " @@ -21989,12 +22108,12 @@ msgstr "" "MXNet fremework 的开发工作已经结束,该项目现已[归档于 " "GitHub](https://github.com/apache/mxnet)。现有的 MXNet 示例不会收到更新。" -#: ../../source/ref-changelog.md:675 +#: ../../source/ref-changelog.md:697 #, fuzzy msgid "v1.6.0 (2023-11-28)" msgstr "v1.4.0 (2023-04-21)" -#: ../../source/ref-changelog.md:681 +#: ../../source/ref-changelog.md:703 #, fuzzy msgid "" "`Aashish Kolluri`, `Adam Narozniak`, `Alessio Mora`, `Barathwaja S`, " @@ -22011,7 +22130,7 @@ msgstr "" "`Steve Laskaridis`, `Taner Topal`, `William Lindskog`, `Yan Gao`, " "`cnxdeveloper`, `k3nfalt` " -#: ../../source/ref-changelog.md:685 +#: ../../source/ref-changelog.md:707 msgid "" "**Add experimental support for Python 3.12** " "([#2565](https://github.com/adap/flower/pull/2565))" @@ -22019,7 +22138,7 @@ msgstr "" "** 增加对 Python 3.12 的实验支持** " "([#2565](https://github.com/adap/flower/pull/2565))" -#: ../../source/ref-changelog.md:687 +#: ../../source/ref-changelog.md:709 #, fuzzy msgid "" "**Add new XGBoost examples** " @@ -22038,7 +22157,7 @@ msgstr "" "[#1551](https://github.com/adap/flower/pull/1551), " "[#1567](https://github.com/adap/flower/pull/1567))" -#: ../../source/ref-changelog.md:689 +#: ../../source/ref-changelog.md:711 #, fuzzy msgid "" "We have added a new `xgboost-quickstart` example alongside a new " @@ -22047,14 +22166,14 @@ msgstr "" "我们添加了一个新的 \"xgboost-quickstart \"示例和一个新的 \"xgboost-comprehensive " "\"示例,后者更加深入。" -#: ../../source/ref-changelog.md:691 +#: ../../source/ref-changelog.md:713 #, fuzzy msgid "" "**Add Vertical FL example** " "([#2598](https://github.com/adap/flower/pull/2598))" msgstr "**新的 iOS CoreML 代码示例**([#1289](https://github.com/adap/flower/pull/1289))" -#: ../../source/ref-changelog.md:693 +#: ../../source/ref-changelog.md:715 #, fuzzy msgid "" "We had many questions about Vertical Federated Learning using Flower, so " @@ -22066,13 +22185,13 @@ msgstr "" "数据集](https://www.kaggle.com/competitions/titanic/data) 上添加一个简单的示例,并附上教程(在" " README 中)。" -#: ../../source/ref-changelog.md:695 +#: ../../source/ref-changelog.md:717 msgid "" "**Support custom** `ClientManager` **in** `start_driver()` " "([#2292](https://github.com/adap/flower/pull/2292))" msgstr "**在***`start_driver()`中支持自定义***`ClientManager([#2292](https://github.com/adap/flower/pull/2292))" -#: ../../source/ref-changelog.md:697 +#: ../../source/ref-changelog.md:719 msgid "" "**Update REST API to support create and delete nodes** " "([#2283](https://github.com/adap/flower/pull/2283))" @@ -22080,7 +22199,7 @@ msgstr "" "**更新 REST API 以支持创建和删除节点** " "([#2283](https://github.com/adap/flower/pull/2283))" -#: ../../source/ref-changelog.md:699 +#: ../../source/ref-changelog.md:721 #, fuzzy msgid "" "**Update the Android SDK** " @@ -22089,12 +22208,12 @@ msgstr "" "**介绍Flower Android SDK** " "([#2131](https://github.com/adap/flower/pull/2131))" -#: ../../source/ref-changelog.md:701 +#: ../../source/ref-changelog.md:723 #, fuzzy msgid "Add gRPC request-response capability to the Android SDK." msgstr "为 C++ SDK 添加 gRPC 请求-响应功能。" -#: ../../source/ref-changelog.md:703 +#: ../../source/ref-changelog.md:725 #, fuzzy msgid "" "**Update the C++ SDK** " @@ -22108,11 +22227,11 @@ msgstr "" "[#2523](https://github.com/adap/flower/pull/2523), " "[#2522](https://github.com/adap/flower/pull/2522))" -#: ../../source/ref-changelog.md:705 +#: ../../source/ref-changelog.md:727 msgid "Add gRPC request-response capability to the C++ SDK." msgstr "为 C++ SDK 添加 gRPC 请求-响应功能。" -#: ../../source/ref-changelog.md:707 +#: ../../source/ref-changelog.md:729 #, fuzzy msgid "" "**Make HTTPS the new default** " @@ -22122,7 +22241,7 @@ msgstr "" "Baselines文档([#2290](https://github.com/adap/flower/pull/2290), " "[#2400](https://github.com/adap/flower/pull/2400)" -#: ../../source/ref-changelog.md:709 +#: ../../source/ref-changelog.md:731 #, fuzzy msgid "" "Flower is moving to HTTPS by default. The new `flower-server` requires " @@ -22136,7 +22255,7 @@ msgstr "" "HTTP 进行原型开发。这同样适用于 `flower-client`,它可以使用用户提供的凭证或 gRPC 绑定证书连接到支持 HTTPS " "的服务器,也可以通过传递 `--insecure`来启用不安全的 HTTP 连接。" -#: ../../source/ref-changelog.md:711 +#: ../../source/ref-changelog.md:733 #, fuzzy msgid "" "For backward compatibility, `start_client()` and `start_numpy_client()` " @@ -22146,7 +22265,7 @@ msgstr "" "为了向后兼容,`start_client()` 和 `start_numpy_client()` " "默认仍以不安全模式启动。在未来的版本中,不安全连接将需要用户通过传递 `insecure=True` 进行选择。" -#: ../../source/ref-changelog.md:713 +#: ../../source/ref-changelog.md:735 msgid "" "**Unify client API** ([#2303](https://github.com/adap/flower/pull/2303), " "[#2390](https://github.com/adap/flower/pull/2390), " @@ -22156,7 +22275,7 @@ msgstr "" "[#2390](https://github.com/adap/flower/pull/2390), " "[#2493](https://github.com/adap/flower/pull/2493))" -#: ../../source/ref-changelog.md:715 +#: ../../source/ref-changelog.md:737 #, fuzzy msgid "" "Using the `client_fn`, Flower clients can interchangeably run as " @@ -22168,7 +22287,7 @@ msgstr "" "使用 `client_fn`,Flower 客户端可以作为独立进程(即通过 `start_client`)或在模拟中(即通过 " "`start_simulation`)交替运行,而无需更改客户端类的定义和实例化方式。调用 `start_numpy_client` 现已过时。" -#: ../../source/ref-changelog.md:717 +#: ../../source/ref-changelog.md:739 msgid "" "**Add new** `Bulyan` **strategy** " "([#1817](https://github.com/adap/flower/pull/1817), " @@ -22178,20 +22297,20 @@ msgstr "" "\"**策略**([#1817](https://github.com/adap/flower/pull/1817), " "[#1891](https://github.com/adap/flower/pull/1891)" -#: ../../source/ref-changelog.md:719 +#: ../../source/ref-changelog.md:741 msgid "" "The new `Bulyan` strategy implements Bulyan by [El Mhamdi et al., " "2018](https://arxiv.org/abs/1802.07927)" msgstr "新的 \"Bulyan\"策略通过[El Mhamdi 等人,2018](https://arxiv.org/abs/1802.07927)实现" -#: ../../source/ref-changelog.md:721 +#: ../../source/ref-changelog.md:743 #, fuzzy msgid "" "**Add new** `XGB Bagging` **strategy** " "([#2611](https://github.com/adap/flower/pull/2611))" msgstr "**添加新的`FedProx`策略** ([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:723 ../../source/ref-changelog.md:725 +#: ../../source/ref-changelog.md:745 ../../source/ref-changelog.md:747 #, fuzzy msgid "" "**Introduce `WorkloadState`** " @@ -22201,7 +22320,7 @@ msgstr "" "**新的内置策略**([#828](https://github.com/adap/flower/pull/828) " "[#822](https://github.com/adap/flower/pull/822)" -#: ../../source/ref-changelog.md:729 +#: ../../source/ref-changelog.md:751 msgid "" "FedProx ([#2210](https://github.com/adap/flower/pull/2210), " "[#2286](https://github.com/adap/flower/pull/2286), " @@ -22211,7 +22330,7 @@ msgstr "" "[#2286](https://github.com/adap/flower/pull/2286), " "[#2509](https://github.com/adap/flower/pull/2509))" -#: ../../source/ref-changelog.md:731 +#: ../../source/ref-changelog.md:753 msgid "" "Baselines Docs ([#2290](https://github.com/adap/flower/pull/2290), " "[#2400](https://github.com/adap/flower/pull/2400))" @@ -22219,7 +22338,7 @@ msgstr "" "Baselines文档([#2290](https://github.com/adap/flower/pull/2290), " "[#2400](https://github.com/adap/flower/pull/2400)" -#: ../../source/ref-changelog.md:733 +#: ../../source/ref-changelog.md:755 msgid "" "FedMLB ([#2340](https://github.com/adap/flower/pull/2340), " "[#2507](https://github.com/adap/flower/pull/2507))" @@ -22227,7 +22346,7 @@ msgstr "" "FedMLB ([#2340](https://github.com/adap/flower/pull/2340), " "[#2507](https://github.com/adap/flower/pull/2507))" -#: ../../source/ref-changelog.md:735 +#: ../../source/ref-changelog.md:757 msgid "" "TAMUNA ([#2254](https://github.com/adap/flower/pull/2254), " "[#2508](https://github.com/adap/flower/pull/2508))" @@ -22235,35 +22354,35 @@ msgstr "" "TAMUNA ([#2254](https://github.com/adap/flower/pull/2254), " "[#2508](https://github.com/adap/flower/pull/2508))" -#: ../../source/ref-changelog.md:737 +#: ../../source/ref-changelog.md:759 msgid "FedMeta [#2438](https://github.com/adap/flower/pull/2438)" msgstr "FedMeta [#2438](https://github.com/adap/flower/pull/2438)" -#: ../../source/ref-changelog.md:739 +#: ../../source/ref-changelog.md:761 msgid "FjORD [#2431](https://github.com/adap/flower/pull/2431)" msgstr "FjORD [#2431](https://github.com/adap/flower/pull/2431)" -#: ../../source/ref-changelog.md:741 +#: ../../source/ref-changelog.md:763 msgid "MOON [#2421](https://github.com/adap/flower/pull/2421)" msgstr "MOON [#2421](https://github.com/adap/flower/pull/2421)" -#: ../../source/ref-changelog.md:743 +#: ../../source/ref-changelog.md:765 msgid "DepthFL [#2295](https://github.com/adap/flower/pull/2295)" msgstr "DepthFL [#2295](https://github.com/adap/flower/pull/2295)" -#: ../../source/ref-changelog.md:745 +#: ../../source/ref-changelog.md:767 msgid "FedPer [#2266](https://github.com/adap/flower/pull/2266)" msgstr "FedPer [#2266](https://github.com/adap/flower/pull/2266)" -#: ../../source/ref-changelog.md:747 +#: ../../source/ref-changelog.md:769 msgid "FedWav2vec [#2551](https://github.com/adap/flower/pull/2551)" msgstr "FedWav2vec [#2551](https://github.com/adap/flower/pull/2551)" -#: ../../source/ref-changelog.md:749 +#: ../../source/ref-changelog.md:771 msgid "niid-Bench [#2428](https://github.com/adap/flower/pull/2428)" msgstr "niid-Bench [#2428](https://github.com/adap/flower/pull/2428)" -#: ../../source/ref-changelog.md:751 +#: ../../source/ref-changelog.md:773 msgid "" "FedBN ([#2608](https://github.com/adap/flower/pull/2608), " "[#2615](https://github.com/adap/flower/pull/2615))" @@ -22271,7 +22390,7 @@ msgstr "" "FedBN ([#2608](https://github.com/adap/flower/pull/2608), " "[#2615](https://github.com/adap/flower/pull/2615))" -#: ../../source/ref-changelog.md:753 +#: ../../source/ref-changelog.md:775 #, fuzzy msgid "" "**General updates to Flower Examples** " @@ -22286,7 +22405,7 @@ msgstr "" "[#2523](https://github.com/adap/flower/pull/2523), " "[#2522](https://github.com/adap/flower/pull/2522))" -#: ../../source/ref-changelog.md:755 +#: ../../source/ref-changelog.md:777 #, fuzzy msgid "" "**General updates to Flower Baselines** " @@ -22314,7 +22433,7 @@ msgstr "" "[#2446](https://github.com/adap/flower/pull/2446) " "[#2561](https://github.com/adap/flower/pull/2561))" -#: ../../source/ref-changelog.md:757 +#: ../../source/ref-changelog.md:779 #, fuzzy msgid "" "**General updates to the simulation engine** " @@ -22327,7 +22446,7 @@ msgstr "" "[#2447](https://github.com/adap/flower/pull/2447), " "[#2448](https://github.com/adap/flower/pull/2448))" -#: ../../source/ref-changelog.md:759 +#: ../../source/ref-changelog.md:781 #, fuzzy msgid "" "**General updates to Flower SDKs** " @@ -22346,7 +22465,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475)))" -#: ../../source/ref-changelog.md:761 +#: ../../source/ref-changelog.md:783 #, fuzzy msgid "" "**General improvements** " @@ -22406,13 +22525,13 @@ msgstr "" "[#2553](https://github.com/adap/flower/pull/2553), " "[#2596](https://github.com/adap/flower/pull/2596))" -#: ../../source/ref-changelog.md:763 ../../source/ref-changelog.md:853 -#: ../../source/ref-changelog.md:917 ../../source/ref-changelog.md:971 -#: ../../source/ref-changelog.md:1038 +#: ../../source/ref-changelog.md:785 ../../source/ref-changelog.md:875 +#: ../../source/ref-changelog.md:939 ../../source/ref-changelog.md:993 +#: ../../source/ref-changelog.md:1060 msgid "Flower received many improvements under the hood, too many to list here." msgstr "Flower 进行了许多改进,这里就不一一列举了。" -#: ../../source/ref-changelog.md:767 +#: ../../source/ref-changelog.md:789 msgid "" "**Remove support for Python 3.7** " "([#2280](https://github.com/adap/flower/pull/2280), " @@ -22430,13 +22549,13 @@ msgstr "" "[#2355](https://github.com/adap/flower/pull/2355), " "[#2356](https://github.com/adap/flower/pull/2356))" -#: ../../source/ref-changelog.md:769 +#: ../../source/ref-changelog.md:791 msgid "" "Python 3.7 support was deprecated in Flower 1.5, and this release removes" " support. Flower now requires Python 3.8." msgstr "在 Flower 1.5 中,Python 3.7 支持已被弃用,本版本将删除该支持。Flower 现在需要 Python 3.8。" -#: ../../source/ref-changelog.md:771 +#: ../../source/ref-changelog.md:793 msgid "" "**Remove experimental argument** `rest` **from** `start_client` " "([#2324](https://github.com/adap/flower/pull/2324))" @@ -22444,7 +22563,7 @@ msgstr "" "**从** `start_client` 中移除** `rest` **实验参数 " "([#2324](https://github.com/adap/flower/pull/2324))" -#: ../../source/ref-changelog.md:773 +#: ../../source/ref-changelog.md:795 msgid "" "The (still experimental) argument `rest` was removed from `start_client` " "and `start_numpy_client`. Use `transport=\"rest\"` to opt into the " @@ -22453,11 +22572,11 @@ msgstr "" "删除了 `start_client` 和 `start_numpy_client` 中的参数 `rest`(仍属试验性质)。请使用 " "`transport=\"rest\"` 来选择使用试验性 REST API。" -#: ../../source/ref-changelog.md:775 +#: ../../source/ref-changelog.md:797 msgid "v1.5.0 (2023-08-31)" msgstr "v1.5.0 (2023-08-31)" -#: ../../source/ref-changelog.md:781 +#: ../../source/ref-changelog.md:803 msgid "" "`Adam Narozniak`, `Anass Anhari`, `Charles Beauville`, `Dana-Farber`, " "`Daniel J. Beutel`, `Daniel Nata Nugraha`, `Edoardo Gabrielli`, `Gustavo " @@ -22471,7 +22590,7 @@ msgstr "" "Topal`, `achiverram28`, `danielnugraha`, `eunchung`, `ruthgal` " -#: ../../source/ref-changelog.md:785 +#: ../../source/ref-changelog.md:807 msgid "" "**Introduce new simulation engine** " "([#1969](https://github.com/adap/flower/pull/1969), " @@ -22482,7 +22601,7 @@ msgstr "" "[#2221](https://github.com/adap/flower/pull/2221), " "[#2248](https://github.com/adap/flower/pull/2248))" -#: ../../source/ref-changelog.md:787 +#: ../../source/ref-changelog.md:809 msgid "" "The new simulation engine has been rewritten from the ground up, yet it " "remains fully backwards compatible. It offers much improved stability and" @@ -22493,7 +22612,7 @@ msgstr "" "新的模拟引擎从头开始重新编写,但仍完全向后兼容。它的稳定性和内存处理能力大大提高,尤其是在使用 GPU 时。仿真可透明地适应不同的设置,以在仅 " "CPU、CPU+GPU、多 GPU 或多节点多 GPU 环境中扩展模拟。" -#: ../../source/ref-changelog.md:789 +#: ../../source/ref-changelog.md:811 msgid "" "Comprehensive documentation includes a new [how-to run " "simulations](https://flower.ai/docs/framework/how-to-run-" @@ -22510,7 +22629,7 @@ msgstr "" "tensorflow.html) notebooks, and a new [YouTube tutorial " "series](https://www.youtube.com/watch?v=cRebUIGB5RU&list=PLNG4feLHqCWlnj8a_E1A_n5zr2-8pafTB)。" -#: ../../source/ref-changelog.md:791 +#: ../../source/ref-changelog.md:813 msgid "" "**Restructure Flower Docs** " "([#1824](https://github.com/adap/flower/pull/1824), " @@ -22569,7 +22688,7 @@ msgstr "" "[#2243](https://github.com/adap/flower/pull/2243), " "[#2227](https://github.com/adap/flower/pull/2227))" -#: ../../source/ref-changelog.md:793 +#: ../../source/ref-changelog.md:815 #, fuzzy msgid "" "Much effort went into a completely restructured Flower docs experience. " @@ -22580,7 +22699,7 @@ msgstr "" "Flower 文档体验的全面重构耗费了大量精力。现在,[flower.ai/docs](flower.ai/docs)上的文档分为 Flower " "Framework、Flower Baselines、Flower Android SDK、Flower iOS SDK 和代码示例项目。" -#: ../../source/ref-changelog.md:795 +#: ../../source/ref-changelog.md:817 msgid "" "**Introduce Flower Swift SDK** " "([#1858](https://github.com/adap/flower/pull/1858), " @@ -22590,7 +22709,7 @@ msgstr "" "([#1858](https://github.com/adap/flower/pull/1858), " "[#1897](https://github.com/adap/flower/pull/1897))" -#: ../../source/ref-changelog.md:797 +#: ../../source/ref-changelog.md:819 msgid "" "This is the first preview release of the Flower Swift SDK. Flower support" " on iOS is improving, and alongside the Swift SDK and code example, there" @@ -22599,7 +22718,7 @@ msgstr "" "这是 Flower Swift SDK 的首个预览版。Flower 对 iOS 的支持正在不断改进,除了 Swift SDK " "和代码示例外,现在还有 iOS 快速入门教程。" -#: ../../source/ref-changelog.md:799 +#: ../../source/ref-changelog.md:821 msgid "" "**Introduce Flower Android SDK** " "([#2131](https://github.com/adap/flower/pull/2131))" @@ -22607,7 +22726,7 @@ msgstr "" "**介绍Flower Android SDK** " "([#2131](https://github.com/adap/flower/pull/2131))" -#: ../../source/ref-changelog.md:801 +#: ../../source/ref-changelog.md:823 msgid "" "This is the first preview release of the Flower Kotlin SDK. Flower " "support on Android is improving, and alongside the Kotlin SDK and code " @@ -22616,7 +22735,7 @@ msgstr "" "这是 Flower Kotlin SDK 的首个预览版。Flower 对 Android 的支持正在不断改进,除了 Kotlin SDK " "和代码示例,现在还有 Android 快速入门教程。" -#: ../../source/ref-changelog.md:803 +#: ../../source/ref-changelog.md:825 msgid "" "**Introduce new end-to-end testing infrastructure** " "([#1842](https://github.com/adap/flower/pull/1842), " @@ -22655,23 +22774,23 @@ msgstr "" "[#2137](https://github.com/adap/flower/pull/2137), " "[#2165](https://github.com/adap/flower/pull/2165))" -#: ../../source/ref-changelog.md:805 +#: ../../source/ref-changelog.md:827 msgid "" "A new testing infrastructure ensures that new changes stay compatible " "with existing framework integrations or strategies." msgstr "新的测试设施可确保新的变更与现有的框架集成或策略保持兼容。" -#: ../../source/ref-changelog.md:807 +#: ../../source/ref-changelog.md:829 msgid "**Deprecate Python 3.7**" msgstr "** 过时的 Python 3.7**" -#: ../../source/ref-changelog.md:809 +#: ../../source/ref-changelog.md:831 msgid "" "Since Python 3.7 reached its end of life (EOL) on 2023-06-27, support for" " Python 3.7 is now deprecated and will be removed in an upcoming release." msgstr "由于 Python 3.7 已于 2023-06-27 弃用 (EOL),对 Python 3.7 的支持现已废弃,并将在即将发布的版本中移除。" -#: ../../source/ref-changelog.md:811 +#: ../../source/ref-changelog.md:833 msgid "" "**Add new** `FedTrimmedAvg` **strategy** " "([#1769](https://github.com/adap/flower/pull/1769), " @@ -22680,7 +22799,7 @@ msgstr "" "**添加新的**`FedTrimmedAvg`**策略**([#1769](https://github.com/adap/flower/pull/1769)," " [#1853](https://github.com/adap/flower/pull/1853)" -#: ../../source/ref-changelog.md:813 +#: ../../source/ref-changelog.md:835 msgid "" "The new `FedTrimmedAvg` strategy implements Trimmed Mean by [Dong Yin, " "2018](https://arxiv.org/abs/1803.01498)." @@ -22688,13 +22807,13 @@ msgstr "" "新的 \"FedTrimmedAvg \"策略实现了[Dong Yin, " "2018](https://arxiv.org/abs/1803.01498)的 \"Trimmed Mean\"。" -#: ../../source/ref-changelog.md:815 +#: ../../source/ref-changelog.md:837 msgid "" "**Introduce start_driver** " "([#1697](https://github.com/adap/flower/pull/1697))" msgstr "**引入 start_driver**([#1697](https://github.com/adap/flower/pull/1697))" -#: ../../source/ref-changelog.md:817 +#: ../../source/ref-changelog.md:839 msgid "" "In addition to `start_server` and using the raw Driver API, there is a " "new `start_driver` function that allows for running `start_server` " @@ -22706,7 +22825,7 @@ msgstr "" "`start_server` 脚本作为 Flower 驱动程序运行。请查看 `mt-pytorch` 代码示例,了解使用 " "`start_driver` 的工作示例。" -#: ../../source/ref-changelog.md:819 +#: ../../source/ref-changelog.md:841 msgid "" "**Add parameter aggregation to** `mt-pytorch` **code example** " "([#1785](https://github.com/adap/flower/pull/1785))" @@ -22714,7 +22833,7 @@ msgstr "" "为 `mt-pytorch` **代码示例**添加参数聚合 " "([#1785](https://github.com/adap/flower/pull/1785))" -#: ../../source/ref-changelog.md:821 +#: ../../source/ref-changelog.md:843 msgid "" "The `mt-pytorch` example shows how to aggregate parameters when writing a" " driver script. The included `driver.py` and `server.py` have been " @@ -22724,7 +22843,7 @@ msgstr "" "`mt-pytorch`示例展示了如何在编写驱动程序脚本时聚合参数。附带的 `driver.py` 和 `server.py` " "已经进行了调整,以演示构建服务器端逻辑的低级方法和高级方法。" -#: ../../source/ref-changelog.md:823 +#: ../../source/ref-changelog.md:845 msgid "" "**Migrate experimental REST API to Starlette** " "([2171](https://github.com/adap/flower/pull/2171))" @@ -22732,7 +22851,7 @@ msgstr "" "**将实验性 REST API 移植到 Starlette** " "([2171](https://github.com/adap/flower/pull/2171))" -#: ../../source/ref-changelog.md:825 +#: ../../source/ref-changelog.md:847 msgid "" "The (experimental) REST API used to be implemented in " "[FastAPI](https://fastapi.tiangolo.com/), but it has now been migrated to" @@ -22741,13 +22860,13 @@ msgstr "" "REST API(试验性)曾在 [FastAPI](https://fastapi.tiangolo.com/) 中实现,但现在已迁移到直接使用 " "[Starlette](https://www.starlette.io/) 。" -#: ../../source/ref-changelog.md:827 +#: ../../source/ref-changelog.md:849 msgid "" "Please note: The REST request-response API is still experimental and will" " likely change significantly over time." msgstr "请注意:REST 请求-响应 API 仍处于试验阶段,随着时间的推移可能会发生重大变化。" -#: ../../source/ref-changelog.md:829 +#: ../../source/ref-changelog.md:851 msgid "" "**Introduce experimental gRPC request-response API** " "([#1867](https://github.com/adap/flower/pull/1867), " @@ -22757,7 +22876,7 @@ msgstr "" "([#1867](https://github.com/adap/flower/pull/1867), " "[#1901](https://github.com/adap/flower/pull/1901)" -#: ../../source/ref-changelog.md:831 +#: ../../source/ref-changelog.md:853 msgid "" "In addition to the existing gRPC API (based on bidirectional streaming) " "and the experimental REST API, there is now a new gRPC API that uses a " @@ -22766,13 +22885,13 @@ msgstr "" "除了现有的 gRPC 应用程序接口(基于双向流)和试验性 REST 应用程序接口外,现在还有一个新的 gRPC " "应用程序接口,它使用请求-响应模型与客户端节点通信。" -#: ../../source/ref-changelog.md:833 +#: ../../source/ref-changelog.md:855 msgid "" "Please note: The gRPC request-response API is still experimental and will" " likely change significantly over time." msgstr "请注意:gRPC 请求-响应 API 仍处于试验阶段,随着时间的推移可能会发生重大变化。" -#: ../../source/ref-changelog.md:835 +#: ../../source/ref-changelog.md:857 msgid "" "**Replace the experimental** `start_client(rest=True)` **with the new** " "`start_client(transport=\"rest\")` " @@ -22782,7 +22901,7 @@ msgstr "" "`start_client(rest=True)` " "([#1880](https://github.com/adap/flower/pull/1880))" -#: ../../source/ref-changelog.md:837 +#: ../../source/ref-changelog.md:859 msgid "" "The (experimental) `start_client` argument `rest` was deprecated in " "favour of a new argument `transport`. `start_client(transport=\"rest\")` " @@ -22793,13 +22912,13 @@ msgstr "" "已废弃(试验性的)`start_client`参数`rest`,改用新参数`transport`。`start_client(transport=\"rest\")`将产生与以前的`start_client(rest=True)`相同的行为。所有代码都应迁移到新参数" " `transport`。过时的参数 `rest` 将在今后的版本中删除。" -#: ../../source/ref-changelog.md:839 +#: ../../source/ref-changelog.md:861 msgid "" "**Add a new gRPC option** " "([#2197](https://github.com/adap/flower/pull/2197))" msgstr "** 添加一个新的 gRPC 选项**([#2197](https://github.com/adap/flower/pull/2197))" -#: ../../source/ref-changelog.md:841 +#: ../../source/ref-changelog.md:863 msgid "" "We now start a gRPC server with the `grpc.keepalive_permit_without_calls`" " option set to 0 by default. This prevents the clients from sending " @@ -22808,17 +22927,17 @@ msgstr "" "现在我们启动一个 gRPC 服务器,并将 `grpc.keepalive_permit_without_calls` 选项默认设置为 " "0。这将防止客户端在没有未处理数据流时发送 keepalive pings。" -#: ../../source/ref-changelog.md:843 +#: ../../source/ref-changelog.md:865 msgid "" "**Improve example notebooks** " "([#2005](https://github.com/adap/flower/pull/2005))" msgstr "**改进示例笔记** ([#2005](https://github.com/adap/flower/pull/2005))" -#: ../../source/ref-changelog.md:845 +#: ../../source/ref-changelog.md:867 msgid "There's a new 30min Federated Learning PyTorch tutorial!" msgstr "有一个新的 30 分钟的联邦学习 PyTorch 教程!" -#: ../../source/ref-changelog.md:847 +#: ../../source/ref-changelog.md:869 msgid "" "**Example updates** ([#1772](https://github.com/adap/flower/pull/1772), " "[#1873](https://github.com/adap/flower/pull/1873), " @@ -22844,7 +22963,7 @@ msgstr "" "[#2225](https://github.com/adap/flower/pull/2225), " "[#2183](https://github.com/adap/flower/pull/2183))" -#: ../../source/ref-changelog.md:849 +#: ../../source/ref-changelog.md:871 msgid "" "Many examples have received significant updates, including simplified " "advanced-tensorflow and advanced-pytorch examples, improved macOS " @@ -22856,7 +22975,7 @@ msgstr "" "TensorFlow 示例的 macOS 兼容性,以及模拟代码示例。一项重大升级是所有代码示例现在都有了 " "\"requirements.txt\"(除 \"pyproject.toml \"外)。" -#: ../../source/ref-changelog.md:851 +#: ../../source/ref-changelog.md:873 msgid "" "**General improvements** " "([#1872](https://github.com/adap/flower/pull/1872), " @@ -22873,11 +22992,11 @@ msgstr "" "[#1477](https://github.com/adap/flower/pull/1477), " "[#2171](https://github.com/adap/flower/pull/2171))" -#: ../../source/ref-changelog.md:859 +#: ../../source/ref-changelog.md:881 msgid "v1.4.0 (2023-04-21)" msgstr "v1.4.0 (2023-04-21)" -#: ../../source/ref-changelog.md:865 +#: ../../source/ref-changelog.md:887 msgid "" "`Adam Narozniak`, `Alexander Viala Bellander`, `Charles Beauville`, " "`Chenyang Ma (Danny)`, `Daniel J. Beutel`, `Edoardo`, `Gautam Jajoo`, " @@ -22893,7 +23012,7 @@ msgstr "" "Lane`, `Nikolaos Episkopos`, `Ragy`, `Saurav Maheshkar`, `Semo Yang`, " "`Steve Laskaridis`, `Steven Hé (Sīchàng)`, `Taner Topal`" -#: ../../source/ref-changelog.md:869 +#: ../../source/ref-changelog.md:891 msgid "" "**Introduce support for XGBoost (**`FedXgbNnAvg` **strategy and " "example)** ([#1694](https://github.com/adap/flower/pull/1694), " @@ -22911,7 +23030,7 @@ msgstr "" "[#1763](https://github.com/adap/flower/pull/1763), " "[#1795](https://github.com/adap/flower/pull/1795))" -#: ../../source/ref-changelog.md:871 +#: ../../source/ref-changelog.md:893 msgid "" "XGBoost is a tree-based ensemble machine learning algorithm that uses " "gradient boosting to improve model accuracy. We added a new `FedXgbNnAvg`" @@ -22925,7 +23044,7 @@ msgstr "" "\"FedXgbNnAvg\"[策略](https://github.com/adap/flower/tree/main/src/py/flwr/server/strategy/fedxgb_nn_avg.py)和一个[代码示例](https://github.com/adap/flower/tree/main/examples" "/xgboost-quickstart),演示如何在 XGBoost 项目中使用这个新策略。" -#: ../../source/ref-changelog.md:873 +#: ../../source/ref-changelog.md:895 msgid "" "**Introduce iOS SDK (preview)** " "([#1621](https://github.com/adap/flower/pull/1621), " @@ -22934,7 +23053,7 @@ msgstr "" "**介绍 iOS SDK(预览版)** ([#1621](https://github.com/adap/flower/pull/1621), " "[#1764](https://github.com/adap/flower/pull/1764))" -#: ../../source/ref-changelog.md:875 +#: ../../source/ref-changelog.md:897 msgid "" "This is a major update for anyone wanting to implement Federated Learning" " on iOS mobile devices. We now have a swift iOS SDK present under " @@ -22949,7 +23068,7 @@ msgstr "" " 下提供了一个迅捷的 iOS SDK,这将大大方便应用程序的创建过程。为了展示其使用情况,我们还更新了 [iOS " "示例](https://github.com/adap/flower/tree/main/examples/ios)!" -#: ../../source/ref-changelog.md:877 +#: ../../source/ref-changelog.md:899 msgid "" "**Introduce new \"What is Federated Learning?\" tutorial** " "([#1657](https://github.com/adap/flower/pull/1657), " @@ -22959,7 +23078,7 @@ msgstr "" "\"什么是联邦学习?\"教程**([#1657](https://github.com/adap/flower/pull/1657), " "[#1721](https://github.com/adap/flower/pull/1721)" -#: ../../source/ref-changelog.md:879 +#: ../../source/ref-changelog.md:901 msgid "" "A new [entry-level tutorial](https://flower.ai/docs/framework/tutorial-" "what-is-federated-learning.html) in our documentation explains the basics" @@ -22971,7 +23090,7 @@ msgstr "" "federated-learning.html),解释了联邦学习的基础知识。它让任何不熟悉联邦学习的人都能开始 Flower " "之旅。请转发给对联邦学习感兴趣的人!" -#: ../../source/ref-changelog.md:881 +#: ../../source/ref-changelog.md:903 msgid "" "**Introduce new Flower Baseline: FedProx MNIST** " "([#1513](https://github.com/adap/flower/pull/1513), " @@ -22985,7 +23104,7 @@ msgstr "" "[#1681](https://github.com/adap/flower/pull/1681), " "[#1679](https://github.com/adap/flower/pull/1679)" -#: ../../source/ref-changelog.md:883 +#: ../../source/ref-changelog.md:905 msgid "" "This new baseline replicates the MNIST+CNN task from the paper [Federated" " Optimization in Heterogeneous Networks (Li et al., " @@ -22996,7 +23115,7 @@ msgstr "" "al., 2018)](https://arxiv.org/abs/1812.06127)中的 MNIST+CNN 任务。它使用 " "\"FedProx \"策略,旨在使收敛在异构环境中更加稳健。" -#: ../../source/ref-changelog.md:885 +#: ../../source/ref-changelog.md:907 msgid "" "**Introduce new Flower Baseline: FedAvg FEMNIST** " "([#1655](https://github.com/adap/flower/pull/1655))" @@ -23004,7 +23123,7 @@ msgstr "" "**引入新的 Flower Baseline: FedAvg FEMNIST** " "([#1655](https://github.com/adap/flower/pull/1655))" -#: ../../source/ref-changelog.md:887 +#: ../../source/ref-changelog.md:909 msgid "" "This new baseline replicates an experiment evaluating the performance of " "the FedAvg algorithm on the FEMNIST dataset from the paper [LEAF: A " @@ -23014,7 +23133,7 @@ msgstr "" "这一新Baseline复现了论文[LEAF: A Benchmark for Federated Settings(Caldas 等人,2018 " "年)](https://arxiv.org/abs/1812.01097)中评估 FedAvg 算法在 FEMNIST 数据集上性能的实验。" -#: ../../source/ref-changelog.md:889 +#: ../../source/ref-changelog.md:911 msgid "" "**Introduce (experimental) REST API** " "([#1594](https://github.com/adap/flower/pull/1594), " @@ -23033,20 +23152,20 @@ msgstr "" "[#1770](https://github.com/adap/flower/pull/1770), " "[#1733](https://github.com/adap/flower/pull/1733))" -#: ../../source/ref-changelog.md:891 +#: ../../source/ref-changelog.md:913 msgid "" "A new REST API has been introduced as an alternative to the gRPC-based " "communication stack. In this initial version, the REST API only supports " "anonymous clients." msgstr "作为基于 gRPC 的通信栈的替代方案,我们引入了新的 REST API。在初始版本中,REST API 仅支持匿名客户端。" -#: ../../source/ref-changelog.md:893 +#: ../../source/ref-changelog.md:915 msgid "" "Please note: The REST API is still experimental and will likely change " "significantly over time." msgstr "请注意:REST API 仍处于试验阶段,随着时间的推移可能会发生重大变化。" -#: ../../source/ref-changelog.md:895 +#: ../../source/ref-changelog.md:917 msgid "" "**Improve the (experimental) Driver API** " "([#1663](https://github.com/adap/flower/pull/1663), " @@ -23069,7 +23188,7 @@ msgstr "" "[#1662](https://github.com/adap/flower/pull/1662), " "[#1794](https://github.com/adap/flower/pull/1794))" -#: ../../source/ref-changelog.md:897 +#: ../../source/ref-changelog.md:919 msgid "" "The Driver API is still an experimental feature, but this release " "introduces some major upgrades. One of the main improvements is the " @@ -23082,20 +23201,20 @@ msgstr "" "数据库,将服务器状态存储在磁盘上(而不是内存中)。另一项改进是,已交付的任务(指令或结果)现在将被删除。这大大提高了长期运行的 Flower " "服务器的内存效率。" -#: ../../source/ref-changelog.md:899 +#: ../../source/ref-changelog.md:921 msgid "" "**Fix spilling issues related to Ray during simulations** " "([#1698](https://github.com/adap/flower/pull/1698))" msgstr "**修复模拟过程中与Ray有关的溢出问题** ([#1698](https://github.com/adap/flower/pull/1698))" -#: ../../source/ref-changelog.md:901 +#: ../../source/ref-changelog.md:923 msgid "" "While running long simulations, `ray` was sometimes spilling huge amounts" " of data that would make the training unable to continue. This is now " "fixed! 🎉" msgstr "在运行长时间模拟时,`ray` 有时会溢出大量数据,导致训练无法继续。现在这个问题已经解决!🎉" -#: ../../source/ref-changelog.md:903 +#: ../../source/ref-changelog.md:925 msgid "" "**Add new example using** `TabNet` **and Flower** " "([#1725](https://github.com/adap/flower/pull/1725))" @@ -23103,7 +23222,7 @@ msgstr "" "** 添加使用** `TabNet` ** 的新示例** " "([#1725](https://github.com/adap/flower/pull/1725))" -#: ../../source/ref-changelog.md:905 +#: ../../source/ref-changelog.md:927 msgid "" "TabNet is a powerful and flexible framework for training machine learning" " models on tabular data. We now have a federated example using Flower: " @@ -23114,19 +23233,19 @@ msgstr "" "tabnet](https://github.com/adap/flower/tree/main/examples/quickstart-" "tabnet)。" -#: ../../source/ref-changelog.md:907 +#: ../../source/ref-changelog.md:929 msgid "" "**Add new how-to guide for monitoring simulations** " "([#1649](https://github.com/adap/flower/pull/1649))" msgstr "** 添加新的模拟监控指南** ([#1649](https://github.com/adap/flower/pull/1649))" -#: ../../source/ref-changelog.md:909 +#: ../../source/ref-changelog.md:931 msgid "" "We now have a documentation guide to help users monitor their performance" " during simulations." msgstr "我们现在有一份文档指南,可帮助用户在模拟过程中监控其性能。" -#: ../../source/ref-changelog.md:911 +#: ../../source/ref-changelog.md:933 msgid "" "**Add training metrics to** `History` **object during simulations** " "([#1696](https://github.com/adap/flower/pull/1696))" @@ -23134,7 +23253,7 @@ msgstr "" "**在模拟过程中为***`历史`***对象添加训练指标*** " "([#1696](https://github.com/adap/flower/pull/1696))" -#: ../../source/ref-changelog.md:913 +#: ../../source/ref-changelog.md:935 msgid "" "The `fit_metrics_aggregation_fn` can be used to aggregate training " "metrics, but previous releases did not save the results in the `History` " @@ -23143,7 +23262,7 @@ msgstr "" "`fit_metrics_aggregation_fn`可用于汇总训练指标,但以前的版本不会将结果保存在 \"History " "\"对象中。现在可以了!" -#: ../../source/ref-changelog.md:915 +#: ../../source/ref-changelog.md:937 msgid "" "**General improvements** " "([#1659](https://github.com/adap/flower/pull/1659), " @@ -23246,11 +23365,11 @@ msgstr "" "[#1804](https://github.com/adap/flower/pull/1804), " "[#1805](https://github.com/adap/flower/pull/1805))" -#: ../../source/ref-changelog.md:923 +#: ../../source/ref-changelog.md:945 msgid "v1.3.0 (2023-02-06)" msgstr "v1.3.0 (2023-02-06)" -#: ../../source/ref-changelog.md:929 +#: ../../source/ref-changelog.md:951 msgid "" "`Adam Narozniak`, `Alexander Viala Bellander`, `Charles Beauville`, " "`Daniel J. Beutel`, `JDRanpariya`, `Lennart Behme`, `Taner Topal`" @@ -23258,7 +23377,7 @@ msgstr "" "`Adam Narozniak`, `Alexander Viala Bellander`, `Charles Beauville`, " "`Daniel J. Beutel`, `JDRanpariya`, `Lennart Behme`, `Taner Topal`" -#: ../../source/ref-changelog.md:933 +#: ../../source/ref-changelog.md:955 msgid "" "**Add support for** `workload_id` **and** `group_id` **in Driver API** " "([#1595](https://github.com/adap/flower/pull/1595))" @@ -23266,7 +23385,7 @@ msgstr "" "**在驱动程序应用程序接口中添加对** `workload_id` **和** `group_id` **的支持** " "([#1595](https://github.com/adap/flower/pull/1595))" -#: ../../source/ref-changelog.md:935 +#: ../../source/ref-changelog.md:957 msgid "" "The (experimental) Driver API now supports a `workload_id` that can be " "used to identify which workload a task belongs to. It also supports a new" @@ -23278,7 +23397,7 @@ msgstr "" "`group_id`,例如,可用于指示当前的训练轮次。通过 `workload_id` 和 `group_id` " "客户端节点可以决定是否要处理某个任务。" -#: ../../source/ref-changelog.md:937 +#: ../../source/ref-changelog.md:959 msgid "" "**Make Driver API and Fleet API address configurable** " "([#1637](https://github.com/adap/flower/pull/1637))" @@ -23286,7 +23405,7 @@ msgstr "" "**使Driver API 和Fleet " "API地址可配置**([#1637](https://github.com/adap/flower/pull/1637))" -#: ../../source/ref-changelog.md:939 +#: ../../source/ref-changelog.md:961 msgid "" "The (experimental) long-running Flower server (Driver API and Fleet API) " "can now configure the server address of both Driver API (via `--driver-" @@ -23295,7 +23414,7 @@ msgstr "" "长期运行的 Flower 服务器(Driver API 和 Fleet API)现在可以在启动时配置 Driver API(通过 " "`--driver-api-address`)和 Fleet API(通过 `-fleet-api-address`)的服务器地址:" -#: ../../source/ref-changelog.md:941 +#: ../../source/ref-changelog.md:963 #, fuzzy msgid "" "`flower-server --driver-api-address \"0.0.0.0:8081\" --fleet-api-address " @@ -23304,11 +23423,11 @@ msgstr "" "`flower-server --driver-api-address \"0.0.0.0:8081\" --fleet-api-address " "\"0.0.0.0:8086\"`" -#: ../../source/ref-changelog.md:943 +#: ../../source/ref-changelog.md:965 msgid "Both IPv4 and IPv6 addresses are supported." msgstr "支持 IPv4 和 IPv6 地址。" -#: ../../source/ref-changelog.md:945 +#: ../../source/ref-changelog.md:967 msgid "" "**Add new example of Federated Learning using fastai and Flower** " "([#1598](https://github.com/adap/flower/pull/1598))" @@ -23316,7 +23435,7 @@ msgstr "" "** 添加使用 fastai 和 Flower 进行联邦学习的新示例** " "([#1598](https://github.com/adap/flower/pull/1598))" -#: ../../source/ref-changelog.md:947 +#: ../../source/ref-changelog.md:969 msgid "" "A new code example (`quickstart-fastai`) demonstrates federated learning " "with [fastai](https://www.fast.ai/) and Flower. You can find it here: " @@ -23328,7 +23447,7 @@ msgstr "" "fastai](https://github.com/adap/flower/tree/main/examples/quickstart-" "fastai)。" -#: ../../source/ref-changelog.md:949 +#: ../../source/ref-changelog.md:971 msgid "" "**Make Android example compatible with** `flwr >= 1.0.0` **and the latest" " versions of Android** " @@ -23337,7 +23456,7 @@ msgstr "" "**使安卓示例兼容** `flwr >= 1.0.0` **和最新版本的安卓** " "([#1603](https://github.com/adap/flower/pull/1603))" -#: ../../source/ref-changelog.md:951 +#: ../../source/ref-changelog.md:973 msgid "" "The Android code example has received a substantial update: the project " "is compatible with Flower 1.0 (and later), the UI received a full " @@ -23347,13 +23466,13 @@ msgstr "" "Android 代码示例已进行了大幅更新:项目兼容 Flower 1.0(及更高版本),用户界面已全面刷新,项目已更新为兼容较新的 Android" " 工具。" -#: ../../source/ref-changelog.md:953 +#: ../../source/ref-changelog.md:975 msgid "" "**Add new `FedProx` strategy** " "([#1619](https://github.com/adap/flower/pull/1619))" msgstr "**添加新的`FedProx`策略** ([#1619](https://github.com/adap/flower/pull/1619))" -#: ../../source/ref-changelog.md:955 +#: ../../source/ref-changelog.md:977 msgid "" "This " "[strategy](https://github.com/adap/flower/blob/main/src/py/flwr/server/strategy/fedprox.py)" @@ -23367,25 +23486,25 @@ msgstr "" "该[策略](https://github.com/adap/flower/blob/main/src/py/flwr/server/strategy/fedprox.py)与[`FedAvg`](https://github.com/adap/flower/blob/main/src/py/flwr/server/strategy/fedavg.py)几乎相同,但可以帮助用户复现本[论文](https://arxiv.org/abs/1812.06127)中的描述。它的本质是添加一个名为" " `proximal_mu`的参数,使局部模型与全局模型正则化。" -#: ../../source/ref-changelog.md:957 +#: ../../source/ref-changelog.md:979 msgid "" "**Add new metrics to telemetry events** " "([#1640](https://github.com/adap/flower/pull/1640))" msgstr "**为遥测事件添加新指标**([#1640](https://github.com/adap/flower/pull/1640))" -#: ../../source/ref-changelog.md:959 +#: ../../source/ref-changelog.md:981 msgid "" "An updated event structure allows, for example, the clustering of events " "within the same workload." msgstr "例如,更新后的事件结构可以将同一工作负载中的事件集中在一起。" -#: ../../source/ref-changelog.md:961 +#: ../../source/ref-changelog.md:983 msgid "" "**Add new custom strategy tutorial section** " "[#1623](https://github.com/adap/flower/pull/1623)" msgstr "**添加新的自定义策略教程部分** [#1623](https://github.com/adap/flower/pull/1623)" -#: ../../source/ref-changelog.md:963 +#: ../../source/ref-changelog.md:985 msgid "" "The Flower tutorial now has a new section that covers implementing a " "custom strategy from scratch: [Open in " @@ -23396,13 +23515,13 @@ msgstr "" "中打开](https://colab.research.google.com/github/adap/flower/blob/main/doc/source" "/tutorial-build-a-strategy-from-scratch-pytorch.ipynb)" -#: ../../source/ref-changelog.md:965 +#: ../../source/ref-changelog.md:987 msgid "" "**Add new custom serialization tutorial section** " "([#1622](https://github.com/adap/flower/pull/1622))" msgstr "** 添加新的自定义序列化教程部分** ([#1622](https://github.com/adap/flower/pull/1622))" -#: ../../source/ref-changelog.md:967 +#: ../../source/ref-changelog.md:989 msgid "" "The Flower tutorial now has a new section that covers custom " "serialization: [Open in " @@ -23413,7 +23532,7 @@ msgstr "" "中打开](https://colab.research.google.com/github/adap/flower/blob/main/doc/source" "/tutorial-customize-the-client-pytorch.ipynb)" -#: ../../source/ref-changelog.md:969 +#: ../../source/ref-changelog.md:991 msgid "" "**General improvements** " "([#1638](https://github.com/adap/flower/pull/1638), " @@ -23484,7 +23603,7 @@ msgstr "" "[#1572](https://github.com/adap/flower/pull/1572), " "[#1586](https://github.com/adap/flower/pull/1586))" -#: ../../source/ref-changelog.md:973 +#: ../../source/ref-changelog.md:995 msgid "" "**Updated documentation** " "([#1629](https://github.com/adap/flower/pull/1629), " @@ -23503,18 +23622,18 @@ msgstr "" "[#1613](https://github.com/adap/flower/pull/1613), " "[#1614](https://github.com/adap/flower/pull/1614)))" -#: ../../source/ref-changelog.md:975 ../../source/ref-changelog.md:1042 +#: ../../source/ref-changelog.md:997 ../../source/ref-changelog.md:1064 msgid "" "As usual, the documentation has improved quite a bit. It is another step " "in our effort to make the Flower documentation the best documentation of " "any project. Stay tuned and as always, feel free to provide feedback!" msgstr "和往常一样,我们的文档有了很大的改进。这是我们努力使 Flower 文档成为所有项目中最好文档的又一步骤。请继续关注,并随时提供反馈意见!" -#: ../../source/ref-changelog.md:981 +#: ../../source/ref-changelog.md:1003 msgid "v1.2.0 (2023-01-13)" msgstr "v1.2.0 (2023-01-13)" -#: ../../source/ref-changelog.md:987 +#: ../../source/ref-changelog.md:1009 msgid "" "`Adam Narozniak`, `Charles Beauville`, `Daniel J. Beutel`, `Edoardo`, `L." " Jiang`, `Ragy`, `Taner Topal`, `dannymcy`" @@ -23522,7 +23641,7 @@ msgstr "" "`Adam Narozniak`, `Charles Beauville`, `Daniel J. Beutel`, `Edoardo`, `L." " Jiang`, `Ragy`, `Taner Topal`, `dannymcy`" -#: ../../source/ref-changelog.md:991 +#: ../../source/ref-changelog.md:1013 msgid "" "**Introduce new Flower Baseline: FedAvg MNIST** " "([#1497](https://github.com/adap/flower/pull/1497), " @@ -23532,7 +23651,7 @@ msgstr "" "([#1497](https://github.com/adap/flower/pull/1497), " "[#1552](https://github.com/adap/flower/pull/1552))" -#: ../../source/ref-changelog.md:993 +#: ../../source/ref-changelog.md:1015 msgid "" "Over the coming weeks, we will be releasing a number of new reference " "implementations useful especially to FL newcomers. They will typically " @@ -23547,13 +23666,13 @@ msgstr "" "的总体了解。今天发布的是该系列中的第一篇。[阅读全文](https://flower.ai/blog/2023-01-12-fl-starter-" "pack-fedavg-mnist-cnn/)" -#: ../../source/ref-changelog.md:995 +#: ../../source/ref-changelog.md:1017 msgid "" "**Improve GPU support in simulations** " "([#1555](https://github.com/adap/flower/pull/1555))" msgstr "**改进模拟中的 GPU 支持**([#1555](https://github.com/adap/flower/pull/1555))" -#: ../../source/ref-changelog.md:997 +#: ../../source/ref-changelog.md:1019 msgid "" "The Ray-based Virtual Client Engine (`start_simulation`) has been updated" " to improve GPU support. The update includes some of the hard-earned " @@ -23563,7 +23682,7 @@ msgstr "" "基于 Ray 的虚拟客户端引擎 (`start_simulation`)已更新,以改进对 GPU 的支持。此次更新包含了在 GPU " "集群环境中扩展模拟的一些经验教训。新的默认设置使基于 GPU 的模拟运行更加稳健。" -#: ../../source/ref-changelog.md:999 +#: ../../source/ref-changelog.md:1021 msgid "" "**Improve GPU support in Jupyter Notebook tutorials** " "([#1527](https://github.com/adap/flower/pull/1527), " @@ -23573,7 +23692,7 @@ msgstr "" "([#1527](https://github.com/adap/flower/pull/1527), " "[#1558](https://github.com/adap/flower/pull/1558))" -#: ../../source/ref-changelog.md:1001 +#: ../../source/ref-changelog.md:1023 msgid "" "Some users reported that Jupyter Notebooks have not always been easy to " "use on GPU instances. We listened and made improvements to all of our " @@ -23582,7 +23701,7 @@ msgstr "" "一些用户报告说,在 GPU 实例上使用 Jupyter 笔记本并不是很方便。我们听取了他们的意见,并对所有 Jupyter " "笔记本进行了改进!点击这里查看更新后的笔记本:" -#: ../../source/ref-changelog.md:1003 +#: ../../source/ref-changelog.md:1025 msgid "" "[An Introduction to Federated Learning](https://flower.ai/docs/framework" "/tutorial-get-started-with-flower-pytorch.html)" @@ -23590,7 +23709,7 @@ msgstr "" "[联邦学习简介](https://flower.ai/docs/framework/tutorial-get-started-with-" "flower-pytorch.html)" -#: ../../source/ref-changelog.md:1004 +#: ../../source/ref-changelog.md:1026 msgid "" "[Strategies in Federated Learning](https://flower.ai/docs/framework" "/tutorial-use-a-federated-learning-strategy-pytorch.html)" @@ -23598,7 +23717,7 @@ msgstr "" "[联邦学习策略](https://flower.ai/docs/framework/tutorial-use-a-federated-" "learning-strategy-pytorch.html)" -#: ../../source/ref-changelog.md:1005 +#: ../../source/ref-changelog.md:1027 msgid "" "[Building a Strategy](https://flower.ai/docs/framework/tutorial-build-a" "-strategy-from-scratch-pytorch.html)" @@ -23606,7 +23725,7 @@ msgstr "" "[制定策略](https://flower.ai/docs/framework/tutorial-build-a-strategy-from-" "scratch-pytorch.html)" -#: ../../source/ref-changelog.md:1006 +#: ../../source/ref-changelog.md:1028 msgid "" "[Client and NumPyClient](https://flower.ai/docs/framework/tutorial-" "customize-the-client-pytorch.html)" @@ -23614,7 +23733,7 @@ msgstr "" "[客户端和 NumPyClient](https://flower.ai/docs/framework/tutorial-customize-" "the-client-pytorch.html)" -#: ../../source/ref-changelog.md:1008 +#: ../../source/ref-changelog.md:1030 msgid "" "**Introduce optional telemetry** " "([#1533](https://github.com/adap/flower/pull/1533), " @@ -23625,7 +23744,7 @@ msgstr "" "[#1544](https://github.com/adap/flower/pull/1544), " "[#1584](https://github.com/adap/flower/pull/1584)" -#: ../../source/ref-changelog.md:1010 +#: ../../source/ref-changelog.md:1032 msgid "" "After a [request for " "feedback](https://github.com/adap/flower/issues/1534) from the community," @@ -23638,7 +23757,7 @@ msgstr "" "开放源码项目引入了可选的*匿名*使用指标收集,以便在充分知情的情况下做出改进 Flower 的决定。这样做能让 Flower 团队了解 " "Flower 的使用情况以及用户可能面临的挑战。" -#: ../../source/ref-changelog.md:1012 +#: ../../source/ref-changelog.md:1034 msgid "" "**Flower is a friendly framework for collaborative AI and data science.**" " Staying true to this statement, Flower makes it easy to disable " @@ -23648,7 +23767,7 @@ msgstr "" "**Flower 是一个用于协作式人工智能和数据科学的友好框架。** Flower " "遵循这一声明,让不想分享匿名使用指标的用户可以轻松禁用遥测技术。[阅读全文](https://flower.ai/docs/telemetry.html)。" -#: ../../source/ref-changelog.md:1014 +#: ../../source/ref-changelog.md:1036 msgid "" "**Introduce (experimental) Driver API** " "([#1520](https://github.com/adap/flower/pull/1520), " @@ -23667,7 +23786,7 @@ msgstr "" "[#1551](https://github.com/adap/flower/pull/1551), " "[#1567](https://github.com/adap/flower/pull/1567))" -#: ../../source/ref-changelog.md:1016 +#: ../../source/ref-changelog.md:1038 msgid "" "Flower now has a new (experimental) Driver API which will enable fully " "programmable, async, and multi-tenant Federated Learning and Federated " @@ -23679,7 +23798,7 @@ msgstr "" "API),它将支持完全可编程、异步和多租户的联邦学习(Federated Learning)和联邦分析(Federated " "Analytics)应用程序。展望未来,Driver API 将成为许多即将推出的功能的抽象基础,您现在就可以开始构建这些功能。" -#: ../../source/ref-changelog.md:1018 +#: ../../source/ref-changelog.md:1040 msgid "" "The Driver API also enables a new execution mode in which the server runs" " indefinitely. Multiple individual workloads can run concurrently and " @@ -23689,19 +23808,19 @@ msgstr "" "驱动程序应用程序接口还支持一种新的执行模式,在这种模式下,服务器可无限期运行。多个单独的工作负载可以同时运行,并独立于服务器启动和停止执行。这对于希望在生产中部署" " Flower 的用户来说尤其有用。" -#: ../../source/ref-changelog.md:1020 +#: ../../source/ref-changelog.md:1042 msgid "" "To learn more, check out the `mt-pytorch` code example. We look forward " "to you feedback!" msgstr "要了解更多信息,请查看 `mt-pytorch` 代码示例。我们期待您的反馈!" -#: ../../source/ref-changelog.md:1022 +#: ../../source/ref-changelog.md:1044 msgid "" "Please note: *The Driver API is still experimental and will likely change" " significantly over time.*" msgstr "请注意:Driver API仍处于试验阶段,随着时间的推移可能会发生重大变化。*" -#: ../../source/ref-changelog.md:1024 +#: ../../source/ref-changelog.md:1046 msgid "" "**Add new Federated Analytics with Pandas example** " "([#1469](https://github.com/adap/flower/pull/1469), " @@ -23711,7 +23830,7 @@ msgstr "" "的联邦分析示例**([#1469](https://github.com/adap/flower/pull/1469), " "[#1535](https://github.com/adap/flower/pull/1535)" -#: ../../source/ref-changelog.md:1026 +#: ../../source/ref-changelog.md:1048 msgid "" "A new code example (`quickstart-pandas`) demonstrates federated analytics" " with Pandas and Flower. You can find it here: [quickstart-" @@ -23722,7 +23841,7 @@ msgstr "" "[quickstart-pandas](https://github.com/adap/flower/tree/main/examples" "/quickstart-pandas)。" -#: ../../source/ref-changelog.md:1028 +#: ../../source/ref-changelog.md:1050 msgid "" "**Add new strategies: Krum and MultiKrum** " "([#1481](https://github.com/adap/flower/pull/1481))" @@ -23730,7 +23849,7 @@ msgstr "" "**添加新策略: Krum 和 MultiKrum** " "([#1481](https://github.com/adap/flower/pull/1481))" -#: ../../source/ref-changelog.md:1030 +#: ../../source/ref-changelog.md:1052 msgid "" "Edoardo, a computer science student at the Sapienza University of Rome, " "contributed a new `Krum` strategy that enables users to easily use Krum " @@ -23739,7 +23858,7 @@ msgstr "" "罗马萨皮恩扎大学(Sapienza University)计算机科学专业的学生埃多尔多(Edoardo)提出了一种新的 \"Krum " "\"策略,使用户能够在其工作负载中轻松使用 Krum 和 MultiKrum。" -#: ../../source/ref-changelog.md:1032 +#: ../../source/ref-changelog.md:1054 msgid "" "**Update C++ example to be compatible with Flower v1.2.0** " "([#1495](https://github.com/adap/flower/pull/1495))" @@ -23747,13 +23866,13 @@ msgstr "" "** 更新 C++ 示例,与 Flower v1.2.0 兼容** " "([#1495](https://github.com/adap/flower/pull/1495))" -#: ../../source/ref-changelog.md:1034 +#: ../../source/ref-changelog.md:1056 msgid "" "The C++ code example has received a substantial update to make it " "compatible with the latest version of Flower." msgstr "为了与最新版本的 Flower 兼容,C++ 示例代码进行了大幅更新。" -#: ../../source/ref-changelog.md:1036 +#: ../../source/ref-changelog.md:1058 msgid "" "**General improvements** " "([#1491](https://github.com/adap/flower/pull/1491), " @@ -23784,7 +23903,7 @@ msgstr "" "[#1564](https://github.com/adap/flower/pull/1564), " "[#1566](https://github.com/adap/flower/pull/1566))" -#: ../../source/ref-changelog.md:1040 +#: ../../source/ref-changelog.md:1062 msgid "" "**Updated documentation** " "([#1494](https://github.com/adap/flower/pull/1494), " @@ -23807,7 +23926,7 @@ msgstr "" "[#1519](https://github.com/adap/flower/pull/1519), " "[#1515](https://github.com/adap/flower/pull/1515))" -#: ../../source/ref-changelog.md:1044 +#: ../../source/ref-changelog.md:1066 msgid "" "One highlight is the new [first time contributor " "guide](https://flower.ai/docs/first-time-contributors.html): if you've " @@ -23816,17 +23935,17 @@ msgstr "" "其中一个亮点是新的[首次贡献者指南](https://flower.ai/docs/first-time-" "contributors.html):如果你以前从未在 GitHub 上做过贡献,这将是一个完美的开始!" -#: ../../source/ref-changelog.md:1050 +#: ../../source/ref-changelog.md:1072 msgid "v1.1.0 (2022-10-31)" msgstr "v1.1.0 (2022-10-31)" -#: ../../source/ref-changelog.md:1054 +#: ../../source/ref-changelog.md:1076 msgid "" "We would like to give our **special thanks** to all the contributors who " "made the new version of Flower possible (in `git shortlog` order):" msgstr "在此,我们向所有促成 Flower 新版本的贡献者致以**特别的谢意(按 \"git shortlog \"顺序排列):" -#: ../../source/ref-changelog.md:1056 +#: ../../source/ref-changelog.md:1078 msgid "" "`Akis Linardos`, `Christopher S`, `Daniel J. Beutel`, `George`, `Jan " "Schlicht`, `Mohammad Fares`, `Pedro Porto Buarque de Gusmão`, `Philipp " @@ -23838,7 +23957,7 @@ msgstr "" "Wiesner`, `Rob Luke`, `Taner Topal`, `VasundharaAgarwal`, " "`danielnugraha`, `edogab33`" -#: ../../source/ref-changelog.md:1060 +#: ../../source/ref-changelog.md:1082 msgid "" "**Introduce Differential Privacy wrappers (preview)** " "([#1357](https://github.com/adap/flower/pull/1357), " @@ -23847,7 +23966,7 @@ msgstr "" "**引入差分隐私包装器(预览)** ([#1357](https://github.com/adap/flower/pull/1357), " "[#1460](https://github.com/adap/flower/pull/1460))" -#: ../../source/ref-changelog.md:1062 +#: ../../source/ref-changelog.md:1084 msgid "" "The first (experimental) preview of pluggable Differential Privacy " "wrappers enables easy configuration and usage of differential privacy " @@ -23858,13 +23977,13 @@ msgstr "" "可插拔差分隐私封装器的首个(实验性)预览版可轻松配置和使用差分隐私(DP)。可插拔的差分隐私封装器可实现客户端差分隐私和服务器端差分隐私的框架无关**以及**策略无关的使用。请访问" " Flower 文档,新的解释器会提供更多细节。" -#: ../../source/ref-changelog.md:1064 +#: ../../source/ref-changelog.md:1086 msgid "" "**New iOS CoreML code example** " "([#1289](https://github.com/adap/flower/pull/1289))" msgstr "**新的 iOS CoreML 代码示例**([#1289](https://github.com/adap/flower/pull/1289))" -#: ../../source/ref-changelog.md:1066 +#: ../../source/ref-changelog.md:1088 msgid "" "Flower goes iOS! A massive new code example shows how Flower clients can " "be built for iOS. The code example contains both Flower iOS SDK " @@ -23874,13 +23993,13 @@ msgstr "" "Flower 进入 iOS!大量新代码示例展示了如何为 iOS 构建 Flower 客户端。该代码示例包含可用于多种任务的 Flower iOS " "SDK 组件,以及在 CoreML 上运行的一个任务示例。" -#: ../../source/ref-changelog.md:1068 +#: ../../source/ref-changelog.md:1090 msgid "" "**New FedMedian strategy** " "([#1461](https://github.com/adap/flower/pull/1461))" msgstr "**新的联邦医疗策略** ([#1461](https://github.com/adap/flower/pull/1461))" -#: ../../source/ref-changelog.md:1070 +#: ../../source/ref-changelog.md:1092 msgid "" "The new `FedMedian` strategy implements Federated Median (FedMedian) by " "[Yin et al., 2018](https://arxiv.org/pdf/1803.01498v1.pdf)." @@ -23888,27 +24007,27 @@ msgstr "" "新的 \"FedMedian \"战略实现了[Yin " "等人,2018]的联邦中值(FedMedian)(https://arxiv.org/pdf/1803.01498v1.pdf)。" -#: ../../source/ref-changelog.md:1072 +#: ../../source/ref-changelog.md:1094 msgid "" "**Log** `Client` **exceptions in Virtual Client Engine** " "([#1493](https://github.com/adap/flower/pull/1493))" msgstr "**虚拟客户端引擎中的**日志**`客户端`**异常([#1493](https://github.com/adap/flower/pull/1493))" -#: ../../source/ref-changelog.md:1074 +#: ../../source/ref-changelog.md:1096 msgid "" "All `Client` exceptions happening in the VCE are now logged by default " "and not just exposed to the configured `Strategy` (via the `failures` " "argument)." msgstr "VCE 中发生的所有 \"客户端 \"异常现在都会被默认记录下来,而不只是暴露给配置的 `Strategy`(通过 `failures`参数)。" -#: ../../source/ref-changelog.md:1076 +#: ../../source/ref-changelog.md:1098 msgid "" "**Improve Virtual Client Engine internals** " "([#1401](https://github.com/adap/flower/pull/1401), " "[#1453](https://github.com/adap/flower/pull/1453))" msgstr "**改进虚拟客户端引擎内部**([#1401](https://github.com/adap/flower/pull/1401)、[#1453](https://github.com/adap/flower/pull/1453))" -#: ../../source/ref-changelog.md:1078 +#: ../../source/ref-changelog.md:1100 msgid "" "Some internals of the Virtual Client Engine have been revamped. The VCE " "now uses Ray 2.0 under the hood, the value type of the `client_resources`" @@ -23918,19 +24037,19 @@ msgstr "" "虚拟客户端引擎的部分内部结构已进行了修改。VCE 现在使用 Ray 2.0,\"client_resources \"字典的值类型改为 " "\"float\",以允许分配分数资源。" -#: ../../source/ref-changelog.md:1080 +#: ../../source/ref-changelog.md:1102 msgid "" "**Support optional** `Client`**/**`NumPyClient` **methods in Virtual " "Client Engine**" msgstr "**支持虚拟客户端引擎中的可选** `Client`**/**`NumPyClient` **方法**" -#: ../../source/ref-changelog.md:1082 +#: ../../source/ref-changelog.md:1104 msgid "" "The Virtual Client Engine now has full support for optional `Client` (and" " `NumPyClient`) methods." msgstr "虚拟客户端引擎现在完全支持可选的 `Client`(和 `NumPyClient`)方法。" -#: ../../source/ref-changelog.md:1084 +#: ../../source/ref-changelog.md:1106 msgid "" "**Provide type information to packages using** `flwr` " "([#1377](https://github.com/adap/flower/pull/1377))" @@ -23938,7 +24057,7 @@ msgstr "" "**使用** `flwr`向软件包提供类型信息 " "([#1377](https://github.com/adap/flower/pull/1377))" -#: ../../source/ref-changelog.md:1086 +#: ../../source/ref-changelog.md:1108 msgid "" "The package `flwr` is now bundled with a `py.typed` file indicating that " "the package is typed. This enables typing support for projects or " @@ -23948,7 +24067,7 @@ msgstr "" "软件包 `flwr` 现在捆绑了一个 `py.typed` 文件,表明该软件包是类型化的。这样,使用 `flwr` 的项目或软件包就可以使用 " "`mypy` 等静态类型检查器改进代码,从而获得类型支持。" -#: ../../source/ref-changelog.md:1088 +#: ../../source/ref-changelog.md:1110 msgid "" "**Updated code example** " "([#1344](https://github.com/adap/flower/pull/1344), " @@ -23957,13 +24076,13 @@ msgstr "" "** 更新代码示例** ([#1344](https://github.com/adap/flower/pull/1344), " "[#1347](https://github.com/adap/flower/pull/1347))" -#: ../../source/ref-changelog.md:1090 +#: ../../source/ref-changelog.md:1112 msgid "" "The code examples covering scikit-learn and PyTorch Lightning have been " "updated to work with the latest version of Flower." msgstr "涵盖 scikit-learn 和 PyTorch Lightning 的代码示例已更新,以便与最新版本的 Flower 配合使用。" -#: ../../source/ref-changelog.md:1092 +#: ../../source/ref-changelog.md:1114 msgid "" "**Updated documentation** " "([#1355](https://github.com/adap/flower/pull/1355), " @@ -24002,32 +24121,32 @@ msgstr "" "[#1465](https://github.com/adap/flower/pull/1465), " "[#1467](https://github.com/adap/flower/pull/1467))" -#: ../../source/ref-changelog.md:1094 +#: ../../source/ref-changelog.md:1116 msgid "" "There have been so many documentation updates that it doesn't even make " "sense to list them individually." msgstr "文档更新的数量之多,甚至没有必要逐一列出。" -#: ../../source/ref-changelog.md:1096 +#: ../../source/ref-changelog.md:1118 msgid "" "**Restructured documentation** " "([#1387](https://github.com/adap/flower/pull/1387))" msgstr "**重构文档**([#1387](https://github.com/adap/flower/pull/1387))" -#: ../../source/ref-changelog.md:1098 +#: ../../source/ref-changelog.md:1120 msgid "" "The documentation has been restructured to make it easier to navigate. " "This is just the first step in a larger effort to make the Flower " "documentation the best documentation of any project ever. Stay tuned!" msgstr "我们对文档进行了重组,使其更易于浏览。这只是让 Flower 文档成为所有项目中最好文档的第一步。敬请期待!" -#: ../../source/ref-changelog.md:1100 +#: ../../source/ref-changelog.md:1122 msgid "" "**Open in Colab button** " "([#1389](https://github.com/adap/flower/pull/1389))" msgstr "**在 Colab 中打开按钮** ([#1389](https://github.com/adap/flower/pull/1389))" -#: ../../source/ref-changelog.md:1102 +#: ../../source/ref-changelog.md:1124 msgid "" "The four parts of the Flower Federated Learning Tutorial now come with a " "new `Open in Colab` button. No need to install anything on your local " @@ -24037,7 +24156,7 @@ msgstr "" "Flower 联邦学习教程的四个部分现在都带有一个新的 \"在 Colab 中打开 " "\"按钮。现在,您无需在本地计算机上安装任何软件,只需点击一下,就可以在浏览器中使用和学习 Flower。" -#: ../../source/ref-changelog.md:1104 +#: ../../source/ref-changelog.md:1126 msgid "" "**Improved tutorial** ([#1468](https://github.com/adap/flower/pull/1468)," " [#1470](https://github.com/adap/flower/pull/1470), " @@ -24053,7 +24172,7 @@ msgstr "" "[#1474](https://github.com/adap/flower/pull/1474), " "[#1475](https://github.com/adap/flower/pull/1475)))" -#: ../../source/ref-changelog.md:1106 +#: ../../source/ref-changelog.md:1128 msgid "" "The Flower Federated Learning Tutorial has two brand-new parts covering " "custom strategies (still WIP) and the distinction between `Client` and " @@ -24063,33 +24182,33 @@ msgstr "" "Flower 联邦学习教程有两个全新的部分,涉及自定义策略(仍处于 WIP 阶段)和 `Client` 与 `NumPyClient` " "之间的区别。现有的第一和第二部分也得到了改进(许多小改动和修正)。" -#: ../../source/ref-changelog.md:1112 +#: ../../source/ref-changelog.md:1134 msgid "v1.0.0 (2022-07-28)" msgstr "v1.0.0 (2022-07-28)" -#: ../../source/ref-changelog.md:1114 +#: ../../source/ref-changelog.md:1136 msgid "Highlights" msgstr "亮点" -#: ../../source/ref-changelog.md:1116 +#: ../../source/ref-changelog.md:1138 msgid "Stable **Virtual Client Engine** (accessible via `start_simulation`)" msgstr "稳定的**虚拟客户端引擎**(可通过`start_simulation`访问)" -#: ../../source/ref-changelog.md:1117 +#: ../../source/ref-changelog.md:1139 msgid "All `Client`/`NumPyClient` methods are now optional" msgstr "所有 `Client`/`NumPyClient` 方法现在都是可选的了" -#: ../../source/ref-changelog.md:1118 +#: ../../source/ref-changelog.md:1140 msgid "Configurable `get_parameters`" msgstr "可配置的`get_parameters`" -#: ../../source/ref-changelog.md:1119 +#: ../../source/ref-changelog.md:1141 msgid "" "Tons of small API cleanups resulting in a more coherent developer " "experience" msgstr "对大量小型应用程序接口进行了清理,使开发人员的体验更加一致" -#: ../../source/ref-changelog.md:1123 +#: ../../source/ref-changelog.md:1145 msgid "" "We would like to give our **special thanks** to all the contributors who " "made Flower 1.0 possible (in reverse [GitHub " @@ -24098,7 +24217,7 @@ msgstr "" "在此,我们谨向所有促成 Flower 1.0 的贡献者致以**特别的谢意(按[GitHub " "贡献者](https://github.com/adap/flower/graphs/contributors) 倒序排列):" -#: ../../source/ref-changelog.md:1125 +#: ../../source/ref-changelog.md:1147 msgid "" "[@rtaiello](https://github.com/rtaiello), " "[@g-pichler](https://github.com/g-pichler), [@rob-" @@ -24174,13 +24293,13 @@ msgstr "" "[@tanertopal](https://github.com/tanertopal), " "[@danieljanes](https://github.com/danieljanes)." -#: ../../source/ref-changelog.md:1129 +#: ../../source/ref-changelog.md:1151 msgid "" "**All arguments must be passed as keyword arguments** " "([#1338](https://github.com/adap/flower/pull/1338))" msgstr "** 所有参数必须作为关键字参数传递** ([#1338](https://github.com/adap/flower/pull/1338))" -#: ../../source/ref-changelog.md:1131 +#: ../../source/ref-changelog.md:1153 msgid "" "Pass all arguments as keyword arguments, positional arguments are not " "longer supported. Code that uses positional arguments (e.g., " @@ -24193,7 +24312,7 @@ msgstr "" "FlowerClient())`)必须为每个位置参数添加关键字(例如,`start_client(server_address=\"127.0.0.1:8080\"," " client=FlowerClient())`)。" -#: ../../source/ref-changelog.md:1133 +#: ../../source/ref-changelog.md:1155 msgid "" "**Introduce configuration object** `ServerConfig` **in** `start_server` " "**and** `start_simulation` " @@ -24202,7 +24321,7 @@ msgstr "" "**在*** `start_server` ***和*** `start_simulation` 中引入配置对象*** " "`ServerConfig` ([#1317](https://github.com/adap/flower/pull/1317))" -#: ../../source/ref-changelog.md:1135 +#: ../../source/ref-changelog.md:1157 msgid "" "Instead of a config dictionary `{\"num_rounds\": 3, \"round_timeout\": " "600.0}`, `start_server` and `start_simulation` now expect a configuration" @@ -24215,37 +24334,37 @@ msgstr "" "`flwr.server.ServerConfig`的配置对象。`ServerConfig`接收的参数与之前的 config dict " "相同,但它使编写类型安全代码变得更容易,默认参数值也更加透明。" -#: ../../source/ref-changelog.md:1137 +#: ../../source/ref-changelog.md:1159 msgid "" "**Rename built-in strategy parameters for clarity** " "([#1334](https://github.com/adap/flower/pull/1334))" msgstr "**重新命名内置策略参数,使其更加清晰** ([#1334](https://github.com/adap/flower/pull/1334))" -#: ../../source/ref-changelog.md:1139 +#: ../../source/ref-changelog.md:1161 msgid "" "The following built-in strategy parameters were renamed to improve " "readability and consistency with other API's:" msgstr "以下内置策略参数已重新命名,以提高可读性并与其他 API 保持一致:" -#: ../../source/ref-changelog.md:1141 +#: ../../source/ref-changelog.md:1163 msgid "`fraction_eval` --> `fraction_evaluate`" msgstr "`fraction_eval` --> `fraction_evaluate`" -#: ../../source/ref-changelog.md:1142 +#: ../../source/ref-changelog.md:1164 msgid "`min_eval_clients` --> `min_evaluate_clients`" msgstr "`min_eval_clients` --> `min_evaluate_clients`" -#: ../../source/ref-changelog.md:1143 +#: ../../source/ref-changelog.md:1165 msgid "`eval_fn` --> `evaluate_fn`" msgstr "`eval_fn` --> `evaluate_fn`" -#: ../../source/ref-changelog.md:1145 +#: ../../source/ref-changelog.md:1167 msgid "" "**Update default arguments of built-in strategies** " "([#1278](https://github.com/adap/flower/pull/1278))" msgstr "**更新内置策略的默认参数** ([#1278](https://github.com/adap/flower/pull/1278))" -#: ../../source/ref-changelog.md:1147 +#: ../../source/ref-changelog.md:1169 msgid "" "All built-in strategies now use `fraction_fit=1.0` and " "`fraction_evaluate=1.0`, which means they select *all* currently " @@ -24256,11 +24375,11 @@ msgstr "" "所有内置策略现在都使用 \"fraction_fit=1.0 \"和 " "\"fraction_evaluate=1.0\",这意味着它们会选择*所有*当前可用的客户端进行训练和评估。依赖以前默认值的项目可以通过以下方式初始化策略,获得以前的行为:" -#: ../../source/ref-changelog.md:1149 +#: ../../source/ref-changelog.md:1171 msgid "`strategy = FedAvg(fraction_fit=0.1, fraction_evaluate=0.1)`" msgstr "`strategy = FedAvg(fraction_fit=0.1, fraction_evaluate=0.1)`" -#: ../../source/ref-changelog.md:1151 +#: ../../source/ref-changelog.md:1173 msgid "" "**Add** `server_round` **to** `Strategy.evaluate` " "([#1334](https://github.com/adap/flower/pull/1334))" @@ -24268,13 +24387,13 @@ msgstr "" "**添加*** `server_round` ***到*** `Strategy.evaluate` " "([#1334](https://github.com/adap/flower/pull/1334))" -#: ../../source/ref-changelog.md:1153 +#: ../../source/ref-changelog.md:1175 msgid "" "The `Strategy` method `evaluate` now receives the current round of " "federated learning/evaluation as the first parameter." msgstr "`Strategy`的`evaluate` 方法现在会接收当前一轮联邦学习/评估作为第一个参数。" -#: ../../source/ref-changelog.md:1155 +#: ../../source/ref-changelog.md:1177 msgid "" "**Add** `server_round` **and** `config` **parameters to** `evaluate_fn` " "([#1334](https://github.com/adap/flower/pull/1334))" @@ -24282,7 +24401,7 @@ msgstr "" "**将*** `server_round` **和*** `config` **参数添加到*** `evaluate_fn` " "([#1334](https://github.com/adap/flower/pull/1334))" -#: ../../source/ref-changelog.md:1157 +#: ../../source/ref-changelog.md:1179 msgid "" "The `evaluate_fn` passed to built-in strategies like `FedAvg` now takes " "three parameters: (1) The current round of federated learning/evaluation " @@ -24292,7 +24411,7 @@ msgstr "" "传递给内置策略(如 `FedAvg`)的 `evaluate_fn` 现在需要三个参数:(1) 当前一轮联邦学习/评估 " "(`server_round`),(2) 要评估的模型参数 (`parameters`),(3) 配置字典 (`config`)。" -#: ../../source/ref-changelog.md:1159 +#: ../../source/ref-changelog.md:1181 msgid "" "**Rename** `rnd` **to** `server_round` " "([#1321](https://github.com/adap/flower/pull/1321))" @@ -24300,7 +24419,7 @@ msgstr "" "**重新命名** `rnd` ** to** `server_round` " "([#1321](https://github.com/adap/flower/pull/1321))" -#: ../../source/ref-changelog.md:1161 +#: ../../source/ref-changelog.md:1183 msgid "" "Several Flower methods and functions (`evaluate_fn`, `configure_fit`, " "`aggregate_fit`, `configure_evaluate`, `aggregate_evaluate`) receive the " @@ -24312,7 +24431,7 @@ msgstr "" "方法和函数(`evaluate_fn`、`configure_fit`、`aggregate_fit`、`configure_evaluate`、`aggregate_evaluate`)的第一个参数是当前一轮的联邦学习/评估。为提高可重复性并避免与" " *random* 混淆,该参数已从 `rnd` 更名为 `server_round`。" -#: ../../source/ref-changelog.md:1163 +#: ../../source/ref-changelog.md:1185 msgid "" "**Move** `flwr.dataset` **to** `flwr_baselines` " "([#1273](https://github.com/adap/flower/pull/1273))" @@ -24320,23 +24439,23 @@ msgstr "" "**移动*** `flwr.dataset` **到*** `flwr_baselines` " "([#1273](https://github.com/adap/flower/pull/1273))" -#: ../../source/ref-changelog.md:1165 +#: ../../source/ref-changelog.md:1187 msgid "The experimental package `flwr.dataset` was migrated to Flower Baselines." msgstr "实验软件包 `flwr.dataset` 已迁移至 Flower Baselines。" -#: ../../source/ref-changelog.md:1167 +#: ../../source/ref-changelog.md:1189 msgid "" "**Remove experimental strategies** " "([#1280](https://github.com/adap/flower/pull/1280))" msgstr "**删除实验策略** ([#1280](https://github.com/adap/flower/pull/1280))" -#: ../../source/ref-changelog.md:1169 +#: ../../source/ref-changelog.md:1191 msgid "" "Remove unmaintained experimental strategies (`FastAndSlow`, `FedFSv0`, " "`FedFSv1`)." msgstr "移除未维护的试验性策略(`FastAndSlow`、`FedFSv0`、`FedFSv1`)。" -#: ../../source/ref-changelog.md:1171 +#: ../../source/ref-changelog.md:1193 msgid "" "**Rename** `Weights` **to** `NDArrays` " "([#1258](https://github.com/adap/flower/pull/1258), " @@ -24346,13 +24465,13 @@ msgstr "" "([#1258](https://github.com/adap/flower/pull/1258), " "[#1259](https://github.com/adap/flower/pull/1259))" -#: ../../source/ref-changelog.md:1173 +#: ../../source/ref-changelog.md:1195 msgid "" "`flwr.common.Weights` was renamed to `flwr.common.NDArrays` to better " "capture what this type is all about." msgstr "flwr.common.Weights \"更名为 \"flwr.common.NDArrays\",以更好地反映该类型的含义。" -#: ../../source/ref-changelog.md:1175 +#: ../../source/ref-changelog.md:1197 msgid "" "**Remove antiquated** `force_final_distributed_eval` **from** " "`start_server` ([#1258](https://github.com/adap/flower/pull/1258), " @@ -24362,7 +24481,7 @@ msgstr "" "([#1258](https://github.com/adap/flower/pull/1258), " "[#1259](https://github.com/adap/flower/pull/1259))" -#: ../../source/ref-changelog.md:1177 +#: ../../source/ref-changelog.md:1199 msgid "" "The `start_server` parameter `force_final_distributed_eval` has long been" " a historic artefact, in this release it is finally gone for good." @@ -24370,7 +24489,7 @@ msgstr "" "start_server \"参数 \"force_final_distributed_eval " "\"长期以来一直是个历史遗留问题,在此版本中终于永远消失了。" -#: ../../source/ref-changelog.md:1179 +#: ../../source/ref-changelog.md:1201 msgid "" "**Make** `get_parameters` **configurable** " "([#1242](https://github.com/adap/flower/pull/1242))" @@ -24378,7 +24497,7 @@ msgstr "" "**使** `get_parameters` **可配置** " "([#1242](https://github.com/adap/flower/pull/1242))" -#: ../../source/ref-changelog.md:1181 +#: ../../source/ref-changelog.md:1203 msgid "" "The `get_parameters` method now accepts a configuration dictionary, just " "like `get_properties`, `fit`, and `evaluate`." @@ -24386,7 +24505,7 @@ msgstr "" "现在,\"get_parameters \"方法与 \"get_properties\"、\"fit \"和 \"evaluate " "\"一样,都接受配置字典。" -#: ../../source/ref-changelog.md:1183 +#: ../../source/ref-changelog.md:1205 msgid "" "**Replace** `num_rounds` **in** `start_simulation` **with new** `config` " "**parameter** ([#1281](https://github.com/adap/flower/pull/1281))" @@ -24394,7 +24513,7 @@ msgstr "" "**用新的** `config` 参数** 替换** `num_rounds` ** in** `start_simulation` ** " "([#1281](https://github.com/adap/flower/pull/1281))" -#: ../../source/ref-changelog.md:1185 +#: ../../source/ref-changelog.md:1207 msgid "" "The `start_simulation` function now accepts a configuration dictionary " "`config` instead of the `num_rounds` integer. This improves the " @@ -24404,19 +24523,19 @@ msgstr "" "现在,`start_simulation`(开始模拟)` 函数接受配置字典 `config` 而不是 `num_rounds` 整数。这改进了 " "`start_simulation` 和 `start_server` 之间的一致性,并使两者之间的转换更容易。" -#: ../../source/ref-changelog.md:1189 +#: ../../source/ref-changelog.md:1211 msgid "" "**Support Python 3.10** " "([#1320](https://github.com/adap/flower/pull/1320))" msgstr "** 支持 Python 3.10** ([#1320](https://github.com/adap/flower/pull/1320))" -#: ../../source/ref-changelog.md:1191 +#: ../../source/ref-changelog.md:1213 msgid "" "The previous Flower release introduced experimental support for Python " "3.10, this release declares Python 3.10 support as stable." msgstr "上一个 Flower 版本引入了对 Python 3.10 的实验支持,而本版本则宣布对 Python 3.10 的支持为稳定支持。" -#: ../../source/ref-changelog.md:1193 +#: ../../source/ref-changelog.md:1215 msgid "" "**Make all** `Client` **and** `NumPyClient` **methods optional** " "([#1260](https://github.com/adap/flower/pull/1260), " @@ -24426,7 +24545,7 @@ msgstr "" "([#1260](https://github.com/adap/flower/pull/1260), " "[#1277](https://github.com/adap/flower/pull/1277))" -#: ../../source/ref-changelog.md:1195 +#: ../../source/ref-changelog.md:1217 msgid "" "The `Client`/`NumPyClient` methods `get_properties`, `get_parameters`, " "`fit`, and `evaluate` are all optional. This enables writing clients that" @@ -24437,7 +24556,7 @@ msgstr "" "\"evaluate \"方法都是可选的。这样就可以编写只实现 `fit` 而不实现其他方法的客户端。使用集中评估时,无需实现 " "`evaluate`!" -#: ../../source/ref-changelog.md:1197 +#: ../../source/ref-changelog.md:1219 msgid "" "**Enable passing a** `Server` **instance to** `start_simulation` " "([#1281](https://github.com/adap/flower/pull/1281))" @@ -24445,7 +24564,7 @@ msgstr "" "**启用向** `start_simulation` 传递** `Server` 实例 " "([#1281](https://github.com/adap/flower/pull/1281))" -#: ../../source/ref-changelog.md:1199 +#: ../../source/ref-changelog.md:1221 msgid "" "Similar to `start_server`, `start_simulation` now accepts a full `Server`" " instance. This enables users to heavily customize the execution of " @@ -24455,7 +24574,7 @@ msgstr "" "与 `start_server` 类似,`start_simulation` 现在也接受一个完整的 `Server` " "实例。这使得用户可以对实验的执行进行大量自定义,并为使用虚拟客户端引擎运行异步 FL 等打开了大门。" -#: ../../source/ref-changelog.md:1201 +#: ../../source/ref-changelog.md:1223 msgid "" "**Update code examples** " "([#1291](https://github.com/adap/flower/pull/1291), " @@ -24466,43 +24585,43 @@ msgstr "" "[#1286](https://github.com/adap/flower/pull/1286), " "[#1282](https://github.com/adap/flower/pull/1282))" -#: ../../source/ref-changelog.md:1203 +#: ../../source/ref-changelog.md:1225 msgid "" "Many code examples received small or even large maintenance updates, " "among them are" msgstr "许多代码示例都进行了小规模甚至大规模的维护更新,其中包括" -#: ../../source/ref-changelog.md:1205 +#: ../../source/ref-changelog.md:1227 msgid "`scikit-learn`" msgstr "`scikit-learn`" -#: ../../source/ref-changelog.md:1206 +#: ../../source/ref-changelog.md:1228 msgid "`simulation_pytorch`" msgstr "`simulation_pytorch`" -#: ../../source/ref-changelog.md:1207 +#: ../../source/ref-changelog.md:1229 msgid "`quickstart_pytorch`" msgstr "`quickstart_pytorch`" -#: ../../source/ref-changelog.md:1208 +#: ../../source/ref-changelog.md:1230 msgid "`quickstart_simulation`" msgstr "`quickstart_simulation`" -#: ../../source/ref-changelog.md:1209 +#: ../../source/ref-changelog.md:1231 msgid "`quickstart_tensorflow`" msgstr "`quickstart_tensorflow`" -#: ../../source/ref-changelog.md:1210 +#: ../../source/ref-changelog.md:1232 msgid "`advanced_tensorflow`" msgstr "`advanced_tensorflow`" -#: ../../source/ref-changelog.md:1212 +#: ../../source/ref-changelog.md:1234 msgid "" "**Remove the obsolete simulation example** " "([#1328](https://github.com/adap/flower/pull/1328))" msgstr "**删除过时的模拟示例** ([#1328](https://github.com/adap/flower/pull/1328))" -#: ../../source/ref-changelog.md:1214 +#: ../../source/ref-changelog.md:1236 msgid "" "Removes the obsolete `simulation` example and renames " "`quickstart_simulation` to `simulation_tensorflow` so it fits withs the " @@ -24511,7 +24630,7 @@ msgstr "" "删除过时的 \"simulation \"示例,并将 \"quickstart_simulation \"重命名为 " "\"simulation_tensorflow\",使其与 \"simulation_pytorch \"的命名一致" -#: ../../source/ref-changelog.md:1216 +#: ../../source/ref-changelog.md:1238 msgid "" "**Update documentation** " "([#1223](https://github.com/adap/flower/pull/1223), " @@ -24536,7 +24655,7 @@ msgstr "" "[#1305](https://github.com/adap/flower/pull/1305), " "[#1307](https://github.com/adap/flower/pull/1307))" -#: ../../source/ref-changelog.md:1218 +#: ../../source/ref-changelog.md:1240 msgid "" "One substantial documentation update fixes multiple smaller rendering " "issues, makes titles more succinct to improve navigation, removes a " @@ -24549,18 +24668,18 @@ msgstr "" "`flwr.common` 模块,包含了对基于 markdown 的文档的支持,将更新日志从 `.rst` 移植到了 " "`.md`,并修复了一些较小的细节!" -#: ../../source/ref-changelog.md:1220 ../../source/ref-changelog.md:1275 -#: ../../source/ref-changelog.md:1344 ../../source/ref-changelog.md:1383 +#: ../../source/ref-changelog.md:1242 ../../source/ref-changelog.md:1297 +#: ../../source/ref-changelog.md:1366 ../../source/ref-changelog.md:1405 msgid "**Minor updates**" msgstr "**小规模更新**" -#: ../../source/ref-changelog.md:1222 +#: ../../source/ref-changelog.md:1244 msgid "" "Add round number to fit and evaluate log messages " "([#1266](https://github.com/adap/flower/pull/1266))" msgstr "添加四舍五入数字,以适应和评估日志信息([#1266](https://github.com/adap/flower/pull/1266))" -#: ../../source/ref-changelog.md:1223 +#: ../../source/ref-changelog.md:1245 msgid "" "Add secure gRPC connection to the `advanced_tensorflow` code example " "([#847](https://github.com/adap/flower/pull/847))" @@ -24568,7 +24687,7 @@ msgstr "" "为 `advanced_tensorflow` 代码示例添加安全 gRPC 连接 " "([#847](https://github.com/adap/flower/pull/847))" -#: ../../source/ref-changelog.md:1224 +#: ../../source/ref-changelog.md:1246 msgid "" "Update developer tooling " "([#1231](https://github.com/adap/flower/pull/1231), " @@ -24581,7 +24700,7 @@ msgstr "" "[#1301](https://github.com/adap/flower/pull/1301), " "[#1310](https://github.com/adap/flower/pull/1310)" -#: ../../source/ref-changelog.md:1225 +#: ../../source/ref-changelog.md:1247 msgid "" "Rename ProtoBuf messages to improve consistency " "([#1214](https://github.com/adap/flower/pull/1214), " @@ -24592,11 +24711,11 @@ msgstr "" "[#1258](https://github.com/adap/flower/pull/1258), " "[#1259](https://github.com/adap/flower/pull/1259)" -#: ../../source/ref-changelog.md:1227 +#: ../../source/ref-changelog.md:1249 msgid "v0.19.0 (2022-05-18)" msgstr "v0.19.0 (2022-05-18)" -#: ../../source/ref-changelog.md:1231 +#: ../../source/ref-changelog.md:1253 msgid "" "**Flower Baselines (preview): FedOpt, FedBN, FedAvgM** " "([#919](https://github.com/adap/flower/pull/919), " @@ -24608,7 +24727,7 @@ msgstr "" "[#1127](https://github.com/adap/flower/pull/1127), " "[#914](https://github.com/adap/flower/pull/914))" -#: ../../source/ref-changelog.md:1233 +#: ../../source/ref-changelog.md:1255 #, fuzzy msgid "" "The first preview release of Flower Baselines has arrived! We're " @@ -24625,13 +24744,13 @@ msgstr "" "baselines.html)。在首次发布预览版时,我们还邀请社区成员[贡献自己的Baselines](https://flower.ai/docs" "/contributing-baselines.html)。" -#: ../../source/ref-changelog.md:1235 +#: ../../source/ref-changelog.md:1257 msgid "" "**C++ client SDK (preview) and code example** " "([#1111](https://github.com/adap/flower/pull/1111))" msgstr "**C++客户端SDK(预览版)和代码示例**([#1111](https://github.com/adap/flower/pull/1111))" -#: ../../source/ref-changelog.md:1237 +#: ../../source/ref-changelog.md:1259 msgid "" "Preview support for Flower clients written in C++. The C++ preview " "includes a Flower client SDK and a quickstart code example that " @@ -24640,7 +24759,7 @@ msgstr "" "预览版支持用 C++ 编写的 Flower 客户端。C++ 预览版包括一个 Flower 客户端 SDK 和一个快速入门代码示例,使用 SDK " "演示了一个简单的 C++ 客户端。" -#: ../../source/ref-changelog.md:1239 +#: ../../source/ref-changelog.md:1261 msgid "" "**Add experimental support for Python 3.10 and Python 3.11** " "([#1135](https://github.com/adap/flower/pull/1135))" @@ -24648,7 +24767,7 @@ msgstr "" "** 增加对 Python 3.10 和 Python 3.11 的实验支持** " "([#1135](https://github.com/adap/flower/pull/1135))" -#: ../../source/ref-changelog.md:1241 +#: ../../source/ref-changelog.md:1263 msgid "" "Python 3.10 is the latest stable release of Python and Python 3.11 is due" " to be released in October. This Flower release adds experimental support" @@ -24657,13 +24776,13 @@ msgstr "" "Python 3.10 是 Python 的最新稳定版本,Python 3.11 将于 10 月份发布。Flower 版本增加了对这两个 " "Python 版本的实验支持。" -#: ../../source/ref-changelog.md:1243 +#: ../../source/ref-changelog.md:1265 msgid "" "**Aggregate custom metrics through user-provided functions** " "([#1144](https://github.com/adap/flower/pull/1144))" msgstr "**通过用户提供的函数聚合自定义指标**([#1144](https://github.com/adap/flower/pull/1144))" -#: ../../source/ref-changelog.md:1245 +#: ../../source/ref-changelog.md:1267 msgid "" "Custom metrics (e.g., `accuracy`) can now be aggregated without having to" " customize the strategy. Built-in strategies support two new arguments, " @@ -24673,13 +24792,13 @@ msgstr "" "现在无需定制策略即可聚合自定义度量(如`准确度`)。内置策略支持两个新参数:`fit_metrics_aggregation_fn` " "和`evaluate_metrics_aggregation_fn`,允许传递自定义度量聚合函数。" -#: ../../source/ref-changelog.md:1247 +#: ../../source/ref-changelog.md:1269 msgid "" "**User-configurable round timeout** " "([#1162](https://github.com/adap/flower/pull/1162))" msgstr "**用户可配置的回合超时**([#1162](https://github.com/adap/flower/pull/1162))" -#: ../../source/ref-changelog.md:1249 +#: ../../source/ref-changelog.md:1271 msgid "" "A new configuration value allows the round timeout to be set for " "`start_server` and `start_simulation`. If the `config` dictionary " @@ -24690,7 +24809,7 @@ msgstr "" "新的配置值允许为 `start_server` 和 `start_simulation` 设置回合超时。如果 `config` 字典中包含一个 " "`round_timeout` 键(以秒为单位的 `float`值),服务器将至少等待 ** `round_timeout` 秒后才关闭连接。" -#: ../../source/ref-changelog.md:1251 +#: ../../source/ref-changelog.md:1273 msgid "" "**Enable both federated evaluation and centralized evaluation to be used " "at the same time in all built-in strategies** " @@ -24699,7 +24818,7 @@ msgstr "" "**允许在所有内置策略中同时使用联邦评价和集中评估** " "([#1091](https://github.com/adap/flower/pull/1091))" -#: ../../source/ref-changelog.md:1253 +#: ../../source/ref-changelog.md:1275 msgid "" "Built-in strategies can now perform both federated evaluation (i.e., " "client-side) and centralized evaluation (i.e., server-side) in the same " @@ -24709,7 +24828,7 @@ msgstr "" "内置策略现在可以在同一轮中同时执行联邦评估(即客户端)和集中评估(即服务器端)。可以通过将 `fraction_eval` 设置为 " "`0.0`来禁用联邦评估。" -#: ../../source/ref-changelog.md:1255 +#: ../../source/ref-changelog.md:1277 msgid "" "**Two new Jupyter Notebook tutorials** " "([#1141](https://github.com/adap/flower/pull/1141))" @@ -24717,13 +24836,13 @@ msgstr "" "**两本新的 Jupyter Notebook 教程** " "([#1141](https://github.com/adap/flower/pull/1141))" -#: ../../source/ref-changelog.md:1257 +#: ../../source/ref-changelog.md:1279 msgid "" "Two Jupyter Notebook tutorials (compatible with Google Colab) explain " "basic and intermediate Flower features:" msgstr "两本 Jupyter Notebook 教程(与 Google Colab 兼容)介绍了 Flower 的基本和中级功能:" -#: ../../source/ref-changelog.md:1259 +#: ../../source/ref-changelog.md:1281 msgid "" "*An Introduction to Federated Learning*: [Open in " "Colab](https://colab.research.google.com/github/adap/flower/blob/main/tutorials/Flower-1" @@ -24733,7 +24852,7 @@ msgstr "" "中打开](https://colab.research.google.com/github/adap/flower/blob/main/tutorials/Flower-1" "-Intro-to-FL-PyTorch.ipynb)" -#: ../../source/ref-changelog.md:1261 +#: ../../source/ref-changelog.md:1283 msgid "" "*Using Strategies in Federated Learning*: [Open in " "Colab](https://colab.research.google.com/github/adap/flower/blob/main/tutorials/Flower-2" @@ -24743,7 +24862,7 @@ msgstr "" "中打开](https://colab.research.google.com/github/adap/flower/blob/main/tutorials/Flower-2" "-Strategies-in-FL-PyTorch.ipynb)" -#: ../../source/ref-changelog.md:1263 +#: ../../source/ref-changelog.md:1285 msgid "" "**New FedAvgM strategy (Federated Averaging with Server Momentum)** " "([#1076](https://github.com/adap/flower/pull/1076))" @@ -24751,25 +24870,25 @@ msgstr "" "**新的 FedAvgM 策略(带服务器动量的联邦平均)** " "([#1076](https://github.com/adap/flower/pull/1076))" -#: ../../source/ref-changelog.md:1265 +#: ../../source/ref-changelog.md:1287 msgid "" "The new `FedAvgM` strategy implements Federated Averaging with Server " "Momentum \\[Hsu et al., 2019\\]." msgstr "新的 \"FedAvgM \"策略实现了带服务器动量的联邦平均[Hsu et al., 2019\\]." -#: ../../source/ref-changelog.md:1267 +#: ../../source/ref-changelog.md:1289 msgid "" "**New advanced PyTorch code example** " "([#1007](https://github.com/adap/flower/pull/1007))" msgstr "**新的 PyTorch 高级代码示例** ([#1007](https://github.com/adap/flower/pull/1007))" -#: ../../source/ref-changelog.md:1269 +#: ../../source/ref-changelog.md:1291 msgid "" "A new code example (`advanced_pytorch`) demonstrates advanced Flower " "concepts with PyTorch." msgstr "新代码示例 (`advanced_pytorch`) 演示了 PyTorch 的高级 Flower 概念。" -#: ../../source/ref-changelog.md:1271 +#: ../../source/ref-changelog.md:1293 msgid "" "**New JAX code example** " "([#906](https://github.com/adap/flower/pull/906), " @@ -24778,13 +24897,13 @@ msgstr "" "**新的 JAX 代码示例**([#906](https://github.com/adap/flower/pull/906), " "[#1143](https://github.com/adap/flower/pull/1143)" -#: ../../source/ref-changelog.md:1273 +#: ../../source/ref-changelog.md:1295 msgid "" "A new code example (`jax_from_centralized_to_federated`) shows federated " "learning with JAX and Flower." msgstr "新代码示例(`jax_from_centralized_to_federated`)展示了使用 JAX 和 Flower 的联邦学习。" -#: ../../source/ref-changelog.md:1277 +#: ../../source/ref-changelog.md:1299 msgid "" "New option to keep Ray running if Ray was already initialized in " "`start_simulation` ([#1177](https://github.com/adap/flower/pull/1177))" @@ -24792,7 +24911,7 @@ msgstr "" "新增选项,用于在 \"start_simulation\"(开始模拟)中已初始化 Ray 的情况下保持 Ray " "运行([#1177](https://github.com/adap/flower/pull/1177))" -#: ../../source/ref-changelog.md:1278 +#: ../../source/ref-changelog.md:1300 msgid "" "Add support for custom `ClientManager` as a `start_simulation` parameter " "([#1171](https://github.com/adap/flower/pull/1171))" @@ -24800,7 +24919,7 @@ msgstr "" "添加对自定义 \"客户端管理器 \"作为 \"start_simulation " "\"参数的支持([#1171](https://github.com/adap/flower/pull/1171))" -#: ../../source/ref-changelog.md:1279 +#: ../../source/ref-changelog.md:1301 msgid "" "New documentation for [implementing " "strategies](https://flower.ai/docs/framework/how-to-implement-" @@ -24811,13 +24930,13 @@ msgstr "" " 的新文件([#1097](https://github.com/adap/flower/pull/1097), " "[#1175](https://github.com/adap/flower/pull/1175)" -#: ../../source/ref-changelog.md:1280 +#: ../../source/ref-changelog.md:1302 msgid "" "New mobile-friendly documentation theme " "([#1174](https://github.com/adap/flower/pull/1174))" msgstr "新的移动友好型文档主题 ([#1174](https://github.com/adap/flower/pull/1174))" -#: ../../source/ref-changelog.md:1281 +#: ../../source/ref-changelog.md:1303 msgid "" "Limit version range for (optional) `ray` dependency to include only " "compatible releases (`>=1.9.2,<1.12.0`) " @@ -24826,25 +24945,25 @@ msgstr "" "限制(可选)`ray`依赖的版本范围,使其仅包含兼容版本(`>=1.9.2,<1.12.0`) " "([#1205](https://github.com/adap/flower/pull/1205))" -#: ../../source/ref-changelog.md:1285 +#: ../../source/ref-changelog.md:1307 msgid "" "**Remove deprecated support for Python 3.6** " "([#871](https://github.com/adap/flower/pull/871))" msgstr "**删除对 Python 3.6 的过时支持** ([#871](https://github.com/adap/flower/pull/871))" -#: ../../source/ref-changelog.md:1286 +#: ../../source/ref-changelog.md:1308 msgid "" "**Remove deprecated KerasClient** " "([#857](https://github.com/adap/flower/pull/857))" msgstr "**移除过时的 KerasClient**([#857](https://github.com/adap/flower/pull/857))" -#: ../../source/ref-changelog.md:1287 +#: ../../source/ref-changelog.md:1309 msgid "" "**Remove deprecated no-op extra installs** " "([#973](https://github.com/adap/flower/pull/973))" msgstr "**移除过时的不操作额外安装** ([#973](https://github.com/adap/flower/pull/973))" -#: ../../source/ref-changelog.md:1288 +#: ../../source/ref-changelog.md:1310 msgid "" "**Remove deprecated proto fields from** `FitRes` **and** `EvaluateRes` " "([#869](https://github.com/adap/flower/pull/869))" @@ -24852,7 +24971,7 @@ msgstr "" "**从** `FitRes` **和** `EvaluateRes` 中移除已废弃的 proto 字段 " "([#869](https://github.com/adap/flower/pull/869))" -#: ../../source/ref-changelog.md:1289 +#: ../../source/ref-changelog.md:1311 msgid "" "**Remove deprecated QffedAvg strategy (replaced by QFedAvg)** " "([#1107](https://github.com/adap/flower/pull/1107))" @@ -24860,7 +24979,7 @@ msgstr "" "**移除过时的 QffedAvg 策略(由 QFedAvg 取代)** " "([#1107](https://github.com/adap/flower/pull/1107))" -#: ../../source/ref-changelog.md:1290 +#: ../../source/ref-changelog.md:1312 msgid "" "**Remove deprecated DefaultStrategy strategy** " "([#1142](https://github.com/adap/flower/pull/1142))" @@ -24868,7 +24987,7 @@ msgstr "" "**删除过时的 DefaultStrategy 策略** " "([#1142](https://github.com/adap/flower/pull/1142))" -#: ../../source/ref-changelog.md:1291 +#: ../../source/ref-changelog.md:1313 msgid "" "**Remove deprecated support for eval_fn accuracy return value** " "([#1142](https://github.com/adap/flower/pull/1142))" @@ -24876,7 +24995,7 @@ msgstr "" "**删除已过时的对 eval_fn 返回值准确性的支持** " "([#1142](https://github.com/adap/flower/pull/1142))" -#: ../../source/ref-changelog.md:1292 +#: ../../source/ref-changelog.md:1314 msgid "" "**Remove deprecated support for passing initial parameters as NumPy " "ndarrays** ([#1142](https://github.com/adap/flower/pull/1142))" @@ -24884,11 +25003,11 @@ msgstr "" "**移除对以 NumPy ndarrays 传递初始参数的过时支持** " "([#1142](https://github.com/adap/flower/pull/1142))" -#: ../../source/ref-changelog.md:1294 +#: ../../source/ref-changelog.md:1316 msgid "v0.18.0 (2022-02-28)" msgstr "v0.18.0 (2022-02-28)" -#: ../../source/ref-changelog.md:1298 +#: ../../source/ref-changelog.md:1320 msgid "" "**Improved Virtual Client Engine compatibility with Jupyter Notebook / " "Google Colab** ([#866](https://github.com/adap/flower/pull/866), " @@ -24902,7 +25021,7 @@ msgstr "" "[#833](https://github.com/adap/flower/pull/833), " "[#1036](https://github.com/adap/flower/pull/1036))" -#: ../../source/ref-changelog.md:1300 +#: ../../source/ref-changelog.md:1322 msgid "" "Simulations (using the Virtual Client Engine through `start_simulation`) " "now work more smoothly on Jupyter Notebooks (incl. Google Colab) after " @@ -24913,7 +25032,7 @@ msgstr "" "`simulation` (`pip install 'flwr[simulation]'`)后,模拟(通过 `start_simulation`" " 使用虚拟客户端引擎)现在可以更流畅地运行。" -#: ../../source/ref-changelog.md:1302 +#: ../../source/ref-changelog.md:1324 msgid "" "**New Jupyter Notebook code example** " "([#833](https://github.com/adap/flower/pull/833))" @@ -24921,7 +25040,7 @@ msgstr "" "**新的 Jupyter Notebook 代码示例** " "([#833](https://github.com/adap/flower/pull/833))" -#: ../../source/ref-changelog.md:1304 +#: ../../source/ref-changelog.md:1326 msgid "" "A new code example (`quickstart_simulation`) demonstrates Flower " "simulations using the Virtual Client Engine through Jupyter Notebook " @@ -24930,25 +25049,25 @@ msgstr "" "新代码示例(`quickstart_simulation`)通过 Jupyter Notebook(包括 Google " "Colab)演示了使用虚拟客户端引擎进行 Flower 模拟。" -#: ../../source/ref-changelog.md:1306 +#: ../../source/ref-changelog.md:1328 msgid "" "**Client properties (feature preview)** " "([#795](https://github.com/adap/flower/pull/795))" msgstr "**客户端属性(功能预览)** ([#795](https://github.com/adap/flower/pull/795))" -#: ../../source/ref-changelog.md:1308 +#: ../../source/ref-changelog.md:1330 msgid "" "Clients can implement a new method `get_properties` to enable server-side" " strategies to query client properties." msgstr "客户端可以实现一个新方法 `get_properties`,以启用服务器端策略来查询客户端属性。" -#: ../../source/ref-changelog.md:1310 +#: ../../source/ref-changelog.md:1332 msgid "" "**Experimental Android support with TFLite** " "([#865](https://github.com/adap/flower/pull/865))" msgstr "** 使用 TFLite 实验性支持安卓系统** ([#865](https://github.com/adap/flower/pull/865))" -#: ../../source/ref-changelog.md:1312 +#: ../../source/ref-changelog.md:1334 msgid "" "Android support has finally arrived in `main`! Flower is both client-" "agnostic and framework-agnostic by design. One can integrate arbitrary " @@ -24958,7 +25077,7 @@ msgstr "" "`main`终于支持 Android 了!Flower 的设计与客户端和框架无关。我们可以集成任意客户端平台,有了这个版本,在安卓系统上使用 " "Flower 就变得更容易了。" -#: ../../source/ref-changelog.md:1314 +#: ../../source/ref-changelog.md:1336 msgid "" "The example uses TFLite on the client side, along with a new " "`FedAvgAndroid` strategy. The Android client and `FedAvgAndroid` are " @@ -24970,7 +25089,7 @@ msgstr "" "`FedAvgAndroid`仍处于试验阶段,但这是向成熟的 Android SDK 和集成了 `FedAvgAndroid`新功能的统一 " "`FedAvg`实现迈出的第一步。" -#: ../../source/ref-changelog.md:1316 +#: ../../source/ref-changelog.md:1338 msgid "" "**Make gRPC keepalive time user-configurable and decrease default " "keepalive time** ([#1069](https://github.com/adap/flower/pull/1069))" @@ -24978,7 +25097,7 @@ msgstr "" "**使 gRPC 保持连接时间可由用户配置,并缩短默认保持连接时间** " "([#1069](https://github.com/adap/flower/pull/1069))" -#: ../../source/ref-changelog.md:1318 +#: ../../source/ref-changelog.md:1340 msgid "" "The default gRPC keepalive time has been reduced to increase the " "compatibility of Flower with more cloud environments (for example, " @@ -24988,7 +25107,7 @@ msgstr "" "为提高 Flower 与更多云环境(如 Microsoft Azure)的兼容性,缩短了默认 gRPC 保持时间。用户可以根据具体要求配置 " "keepalive 时间,自定义 gRPC 堆栈。" -#: ../../source/ref-changelog.md:1320 +#: ../../source/ref-changelog.md:1342 msgid "" "**New differential privacy example using Opacus and PyTorch** " "([#805](https://github.com/adap/flower/pull/805))" @@ -24996,13 +25115,13 @@ msgstr "" "**使用 Opacus 和 PyTorch 的新差分隐私示例** " "([#805](https://github.com/adap/flower/pull/805))" -#: ../../source/ref-changelog.md:1322 +#: ../../source/ref-changelog.md:1344 msgid "" "A new code example (`opacus`) demonstrates differentially-private " "federated learning with Opacus, PyTorch, and Flower." msgstr "一个新的代码示例(\"opacus\")演示了使用 Opacus、PyTorch 和 Flower 进行差分隐私的联邦学习。" -#: ../../source/ref-changelog.md:1324 +#: ../../source/ref-changelog.md:1346 msgid "" "**New Hugging Face Transformers code example** " "([#863](https://github.com/adap/flower/pull/863))" @@ -25010,13 +25129,13 @@ msgstr "" "**新的Hugging Face Transformers代码示例** " "([#863](https://github.com/adap/flower/pull/863))" -#: ../../source/ref-changelog.md:1326 +#: ../../source/ref-changelog.md:1348 msgid "" "A new code example (`quickstart_huggingface`) demonstrates usage of " "Hugging Face Transformers with Flower." msgstr "新的代码示例(`quickstart_huggingface`)证明了结合Flower和Hugging Face Transformers的实用性。" -#: ../../source/ref-changelog.md:1328 +#: ../../source/ref-changelog.md:1350 msgid "" "**New MLCube code example** " "([#779](https://github.com/adap/flower/pull/779), " @@ -25029,13 +25148,13 @@ msgstr "" "[#1065](https://github.com/adap/flower/pull/1065), " "[#1090](https://github.com/adap/flower/pull/1090))" -#: ../../source/ref-changelog.md:1330 +#: ../../source/ref-changelog.md:1352 msgid "" "A new code example (`quickstart_mlcube`) demonstrates usage of MLCube " "with Flower." msgstr "新代码示例(\"quickstart_mlcube\")演示了 MLCube 与 Flower 的用法。" -#: ../../source/ref-changelog.md:1332 +#: ../../source/ref-changelog.md:1354 msgid "" "**SSL-enabled server and client** " "([#842](https://github.com/adap/flower/pull/842), " @@ -25052,14 +25171,14 @@ msgstr "" "[#993](https://github.com/adap/flower/pull/993), " "[#994](https://github.com/adap/flower/pull/994))" -#: ../../source/ref-changelog.md:1334 +#: ../../source/ref-changelog.md:1356 msgid "" "SSL enables secure encrypted connections between clients and servers. " "This release open-sources the Flower secure gRPC implementation to make " "encrypted communication channels accessible to all Flower users." msgstr "SSL 可实现客户端与服务器之间的安全加密连接。该版本开源了 Flower 安全 gRPC 实现,使所有 Flower 用户都能访问加密通信通道。" -#: ../../source/ref-changelog.md:1336 +#: ../../source/ref-changelog.md:1358 msgid "" "**Updated** `FedAdam` **and** `FedYogi` **strategies** " "([#885](https://github.com/adap/flower/pull/885), " @@ -25069,13 +25188,13 @@ msgstr "" "([#885](https://github.com/adap/flower/pull/885), " "[#895](https://github.com/adap/flower/pull/895))" -#: ../../source/ref-changelog.md:1338 +#: ../../source/ref-changelog.md:1360 msgid "" "`FedAdam` and `FedAdam` match the latest version of the Adaptive " "Federated Optimization paper." msgstr "FedAdam \"和 \"FedAdam \"与最新版本的 \"自适应联邦优化 \"论文相匹配。" -#: ../../source/ref-changelog.md:1340 +#: ../../source/ref-changelog.md:1362 msgid "" "**Initialize** `start_simulation` **with a list of client IDs** " "([#860](https://github.com/adap/flower/pull/860))" @@ -25083,7 +25202,7 @@ msgstr "" "**初始化** `start_simulation` **使用客户端 ID 列表** " "([#860](https://github.com/adap/flower/pull/860))" -#: ../../source/ref-changelog.md:1342 +#: ../../source/ref-changelog.md:1364 msgid "" "`start_simulation` can now be called with a list of client IDs " "(`clients_ids`, type: `List[str]`). Those IDs will be passed to the " @@ -25095,7 +25214,7 @@ msgstr "" "`start_simulation`。每当需要初始化客户端时,这些 ID 就会被传递到 `client_fn` 中,这样就能更轻松地加载无法通过 " "`int` 标识符访问的数据分区。" -#: ../../source/ref-changelog.md:1346 +#: ../../source/ref-changelog.md:1368 msgid "" "Update `num_examples` calculation in PyTorch code examples in " "([#909](https://github.com/adap/flower/pull/909))" @@ -25103,7 +25222,7 @@ msgstr "" "更新 PyTorch 代码示例中的 \"num_examples \"计算 " "([#909](https://github.com/adap/flower/pull/909))" -#: ../../source/ref-changelog.md:1347 +#: ../../source/ref-changelog.md:1369 msgid "" "Expose Flower version through `flwr.__version__` " "([#952](https://github.com/adap/flower/pull/952))" @@ -25111,7 +25230,7 @@ msgstr "" "通过 `flwr.__version__` 公开 Flower 版本 " "([#952](https://github.com/adap/flower/pull/952))" -#: ../../source/ref-changelog.md:1348 +#: ../../source/ref-changelog.md:1370 msgid "" "`start_server` in `app.py` now returns a `History` object containing " "metrics from training ([#974](https://github.com/adap/flower/pull/974))" @@ -25119,7 +25238,7 @@ msgstr "" "`app.py`中的 `start_server`现在会返回一个 `History` " "对象,其中包含训练中的指标([#974](https://github.com/adap/flower/pull/974))" -#: ../../source/ref-changelog.md:1349 +#: ../../source/ref-changelog.md:1371 msgid "" "Make `max_workers` (used by `ThreadPoolExecutor`) configurable " "([#978](https://github.com/adap/flower/pull/978))" @@ -25127,25 +25246,25 @@ msgstr "" "使 `max_workers`(由 " "`ThreadPoolExecutor`使用)可配置([#978](https://github.com/adap/flower/pull/978))" -#: ../../source/ref-changelog.md:1350 +#: ../../source/ref-changelog.md:1372 msgid "" "Increase sleep time after server start to three seconds in all code " "examples ([#1086](https://github.com/adap/flower/pull/1086))" msgstr "在所有代码示例中,将服务器启动后的休眠时间延长至三秒([#1086](https://github.com/adap/flower/pull/1086))" -#: ../../source/ref-changelog.md:1351 +#: ../../source/ref-changelog.md:1373 msgid "" "Added a new FAQ section to the documentation " "([#948](https://github.com/adap/flower/pull/948))" msgstr "在文档中添加了新的常见问题部分 ([#948](https://github.com/adap/flower/pull/948))" -#: ../../source/ref-changelog.md:1352 +#: ../../source/ref-changelog.md:1374 msgid "" "And many more under-the-hood changes, library updates, documentation " "changes, and tooling improvements!" msgstr "还有更多底层更改、库更新、文档更改和工具改进!" -#: ../../source/ref-changelog.md:1356 +#: ../../source/ref-changelog.md:1378 msgid "" "**Removed** `flwr_example` **and** `flwr_experimental` **from release " "build** ([#869](https://github.com/adap/flower/pull/869))" @@ -25153,7 +25272,7 @@ msgstr "" "**从发布版中删除**`flwr_example`**和**`flwr_experimental`** " "([#869](https://github.com/adap/flower/pull/869))" -#: ../../source/ref-changelog.md:1358 +#: ../../source/ref-changelog.md:1380 msgid "" "The packages `flwr_example` and `flwr_experimental` have been deprecated " "since Flower 0.12.0 and they are not longer included in Flower release " @@ -25165,11 +25284,11 @@ msgstr "" "Flower 的发布版本中。相关的额外包(`baseline`, `examples-pytorch`, `examples-" "tensorflow`, `http-logger`, `ops`)现在已不再使用,并将在即将发布的版本中移除。" -#: ../../source/ref-changelog.md:1360 +#: ../../source/ref-changelog.md:1382 msgid "v0.17.0 (2021-09-24)" msgstr "v0.17.0 (2021-09-24)" -#: ../../source/ref-changelog.md:1364 +#: ../../source/ref-changelog.md:1386 msgid "" "**Experimental virtual client engine** " "([#781](https://github.com/adap/flower/pull/781) " @@ -25180,7 +25299,7 @@ msgstr "" "[#790](https://github.com/adap/flower/pull/790) " "[#791](https://github.com/adap/flower/pull/791))" -#: ../../source/ref-changelog.md:1366 +#: ../../source/ref-changelog.md:1388 msgid "" "One of Flower's goals is to enable research at scale. This release " "enables a first (experimental) peek at a major new feature, codenamed the" @@ -25193,7 +25312,7 @@ msgstr "" "\"的重要新功能。虚拟客户端可以在单台机器或计算集群上对大量客户端进行模拟。测试新功能的最简单方法是查看名为 " "\"quickstart_simulation \"和 \"simulation_pytorch \"的两个新代码示例。" -#: ../../source/ref-changelog.md:1368 +#: ../../source/ref-changelog.md:1390 msgid "" "The feature is still experimental, so there's no stability guarantee for " "the API. It's also not quite ready for prime time and comes with a few " @@ -25203,7 +25322,7 @@ msgstr "" "该功能仍处于试验阶段,因此无法保证 API " "的稳定性。此外,它还没有完全准备好进入黄金时间,并有一些已知的注意事项。不过,我们鼓励好奇的用户尝试使用并分享他们的想法。" -#: ../../source/ref-changelog.md:1370 +#: ../../source/ref-changelog.md:1392 msgid "" "**New built-in strategies** " "([#828](https://github.com/adap/flower/pull/828) " @@ -25212,19 +25331,19 @@ msgstr "" "**新的内置策略**([#828](https://github.com/adap/flower/pull/828) " "[#822](https://github.com/adap/flower/pull/822)" -#: ../../source/ref-changelog.md:1372 +#: ../../source/ref-changelog.md:1394 msgid "" "FedYogi - Federated learning strategy using Yogi on server-side. " "Implementation based on https://arxiv.org/abs/2003.00295" msgstr "FedYogi - 在服务器端使用 Yogi 的联邦学习策略。基于 https://arxiv.org/abs/2003.00295 实现" -#: ../../source/ref-changelog.md:1373 +#: ../../source/ref-changelog.md:1395 msgid "" "FedAdam - Federated learning strategy using Adam on server-side. " "Implementation based on https://arxiv.org/abs/2003.00295" msgstr "FedAdam - 在服务器端使用 Adam 的联邦学习策略。基于 https://arxiv.org/abs/2003.00295 实现" -#: ../../source/ref-changelog.md:1375 +#: ../../source/ref-changelog.md:1397 msgid "" "**New PyTorch Lightning code example** " "([#617](https://github.com/adap/flower/pull/617))" @@ -25232,31 +25351,31 @@ msgstr "" "**新的 PyTorch Lightning 代码示例** " "([#617](https://github.com/adap/flower/pull/617))" -#: ../../source/ref-changelog.md:1377 +#: ../../source/ref-changelog.md:1399 msgid "" "**New Variational Auto-Encoder code example** " "([#752](https://github.com/adap/flower/pull/752))" msgstr "**新的变分自动编码器代码示例** ([#752](https://github.com/adap/flower/pull/752))" -#: ../../source/ref-changelog.md:1379 +#: ../../source/ref-changelog.md:1401 msgid "" "**New scikit-learn code example** " "([#748](https://github.com/adap/flower/pull/748))" msgstr "**新的 scikit-learn 代码示例** ([#748](https://github.com/adap/flower/pull/748))" -#: ../../source/ref-changelog.md:1381 +#: ../../source/ref-changelog.md:1403 msgid "" "**New experimental TensorBoard strategy** " "([#789](https://github.com/adap/flower/pull/789))" msgstr "**新的实验性 TensorBoard 策略**([#789](https://github.com/adap/flower/pull/789))" -#: ../../source/ref-changelog.md:1385 +#: ../../source/ref-changelog.md:1407 msgid "" "Improved advanced TensorFlow code example " "([#769](https://github.com/adap/flower/pull/769))" msgstr "改进的高级 TensorFlow 代码示例([#769](https://github.com/adap/flower/pull/769)" -#: ../../source/ref-changelog.md:1386 +#: ../../source/ref-changelog.md:1408 msgid "" "Warning when `min_available_clients` is misconfigured " "([#830](https://github.com/adap/flower/pull/830))" @@ -25264,31 +25383,31 @@ msgstr "" "当 `min_available_clients` 配置错误时发出警告 " "([#830](https://github.com/adap/flower/pull/830))" -#: ../../source/ref-changelog.md:1387 +#: ../../source/ref-changelog.md:1409 msgid "" "Improved gRPC server docs " "([#841](https://github.com/adap/flower/pull/841))" msgstr "改进了 gRPC 服务器文档([#841](https://github.com/adap/flower/pull/841))" -#: ../../source/ref-changelog.md:1388 +#: ../../source/ref-changelog.md:1410 msgid "" "Improved error message in `NumPyClient` " "([#851](https://github.com/adap/flower/pull/851))" msgstr "改进了 `NumPyClient` 中的错误信息 ([#851](https://github.com/adap/flower/pull/851))" -#: ../../source/ref-changelog.md:1389 +#: ../../source/ref-changelog.md:1411 msgid "" "Improved PyTorch quickstart code example " "([#852](https://github.com/adap/flower/pull/852))" msgstr "改进的 PyTorch 快速启动代码示例 ([#852](https://github.com/adap/flower/pull/852))" -#: ../../source/ref-changelog.md:1393 +#: ../../source/ref-changelog.md:1415 msgid "" "**Disabled final distributed evaluation** " "([#800](https://github.com/adap/flower/pull/800))" msgstr "**禁用最终分布式评价** ([#800](https://github.com/adap/flower/pull/800))" -#: ../../source/ref-changelog.md:1395 +#: ../../source/ref-changelog.md:1417 msgid "" "Prior behaviour was to perform a final round of distributed evaluation on" " all connected clients, which is often not required (e.g., when using " @@ -25298,13 +25417,13 @@ msgstr "" "之前的行为是在所有连接的客户端上执行最后一轮分布式评估,而这通常是不需要的(例如,在使用服务器端评估时)。可以通过向 `start_server`" " 传递 `force_final_distributed_eval=True` 来启用之前的行为。" -#: ../../source/ref-changelog.md:1397 +#: ../../source/ref-changelog.md:1419 msgid "" "**Renamed q-FedAvg strategy** " "([#802](https://github.com/adap/flower/pull/802))" msgstr "**更名为 q-FedAvg 策略** ([#802](https://github.com/adap/flower/pull/802))" -#: ../../source/ref-changelog.md:1399 +#: ../../source/ref-changelog.md:1421 msgid "" "The strategy named `QffedAvg` was renamed to `QFedAvg` to better reflect " "the notation given in the original paper (q-FFL is the optimization " @@ -25315,7 +25434,7 @@ msgstr "" "名为 `QffedAvg` 的策略已更名为 `QFedAvg`,以更好地反映原始论文中给出的符号(q-FFL 是优化目标,q-FedAvg " "是建议的求解器)。请注意,出于兼容性原因,原始(现已废弃)的 `QffedAvg` 类仍然可用(它将在未来的版本中移除)。" -#: ../../source/ref-changelog.md:1401 +#: ../../source/ref-changelog.md:1423 msgid "" "**Deprecated and renamed code example** `simulation_pytorch` **to** " "`simulation_pytorch_legacy` " @@ -25324,7 +25443,7 @@ msgstr "" "**删除并重命名代码示例**`simulation_pytorch`**为**`simulation_pytorch_legacy` " "([#791](https://github.com/adap/flower/pull/791))" -#: ../../source/ref-changelog.md:1403 +#: ../../source/ref-changelog.md:1425 msgid "" "This example has been replaced by a new example. The new example is based" " on the experimental virtual client engine, which will become the new " @@ -25335,27 +25454,27 @@ msgstr "" "该示例已被新示例取代。新示例基于试验性虚拟客户端引擎,它将成为在 Flower " "中进行大多数类型大规模模拟的新的默认方式。现有示例将作为参考保留,但将来可能会删除。" -#: ../../source/ref-changelog.md:1405 +#: ../../source/ref-changelog.md:1427 msgid "v0.16.0 (2021-05-11)" msgstr "v0.16.0 (2021-05-11)" -#: ../../source/ref-changelog.md:1409 +#: ../../source/ref-changelog.md:1431 msgid "" "**New built-in strategies** " "([#549](https://github.com/adap/flower/pull/549))" msgstr "**新的内置策略** ([#549](https://github.com/adap/flower/pull/549))" -#: ../../source/ref-changelog.md:1411 +#: ../../source/ref-changelog.md:1433 msgid "(abstract) FedOpt" msgstr "(摘要) FedOpt" -#: ../../source/ref-changelog.md:1414 +#: ../../source/ref-changelog.md:1436 msgid "" "**Custom metrics for server and strategies** " "([#717](https://github.com/adap/flower/pull/717))" msgstr "**服务器和策略的自定义指标** ([#717](https://github.com/adap/flower/pull/717))" -#: ../../source/ref-changelog.md:1416 +#: ../../source/ref-changelog.md:1438 msgid "" "The Flower server is now fully task-agnostic, all remaining instances of " "task-specific metrics (such as `accuracy`) have been replaced by custom " @@ -25366,7 +25485,7 @@ msgstr "" "Flower 服务器现在完全与任务无关,所有剩余的任务特定度量(如 \"准确度\")都已被自定义度量字典取代。Flower 0.15 " "引入了从客户端向服务器传递包含自定义指标的字典的功能。从本版本开始,自定义指标将取代服务器上的特定任务指标。" -#: ../../source/ref-changelog.md:1418 +#: ../../source/ref-changelog.md:1440 msgid "" "Custom metric dictionaries are now used in two user-facing APIs: they are" " returned from Strategy methods `aggregate_fit`/`aggregate_evaluate` and " @@ -25379,7 +25498,7 @@ msgstr "" "返回,还可使传递给内置策略(通过 `eval_fn`)的评估函数返回两个以上的评估度量。策略甚至可以返回 *aggregated* " "指标字典,以便服务器跟踪。" -#: ../../source/ref-changelog.md:1420 +#: ../../source/ref-changelog.md:1442 msgid "" "Strategy implementations should migrate their `aggregate_fit` and " "`aggregate_evaluate` methods to the new return type (e.g., by simply " @@ -25390,19 +25509,19 @@ msgstr "" "方法迁移到新的返回类型(例如,只需返回空的 `{}`),服务器端评估函数应从 `return loss, accuracy` 迁移到 " "`return loss, {\"accuracy\": accuracy}`。" -#: ../../source/ref-changelog.md:1422 +#: ../../source/ref-changelog.md:1444 msgid "" "Flower 0.15-style return types are deprecated (but still supported), " "compatibility will be removed in a future release." msgstr "Flower 0.15 风格的返回类型已被弃用(但仍受支持),兼容性将在未来的版本中移除。" -#: ../../source/ref-changelog.md:1424 +#: ../../source/ref-changelog.md:1446 msgid "" "**Migration warnings for deprecated functionality** " "([#690](https://github.com/adap/flower/pull/690))" msgstr "** 过时功能的迁移警告** ([#690](https://github.com/adap/flower/pull/690))" -#: ../../source/ref-changelog.md:1426 +#: ../../source/ref-changelog.md:1448 msgid "" "Earlier versions of Flower were often migrated to new APIs, while " "maintaining compatibility with legacy APIs. This release introduces " @@ -25413,7 +25532,7 @@ msgstr "" "Flower 早期版本通常会迁移到新的应用程序接口,同时保持与旧版应用程序接口的兼容。如果检测到使用了过时的 " "API,本版本将引入详细的警告信息。新的警告信息通常会详细说明如何迁移到更新的 API,从而简化从一个版本到另一个版本的过渡。" -#: ../../source/ref-changelog.md:1428 +#: ../../source/ref-changelog.md:1450 msgid "" "Improved docs and docstrings " "([#691](https://github.com/adap/flower/pull/691) " @@ -25424,11 +25543,11 @@ msgstr "" "[#692](https://github.com/adap/flower/pull/692) " "[#713](https://github.com/adap/flower/pull/713))" -#: ../../source/ref-changelog.md:1430 +#: ../../source/ref-changelog.md:1452 msgid "MXNet example and documentation" msgstr "MXNet 示例和文档" -#: ../../source/ref-changelog.md:1432 +#: ../../source/ref-changelog.md:1454 msgid "" "FedBN implementation in example PyTorch: From Centralized To Federated " "([#696](https://github.com/adap/flower/pull/696) " @@ -25440,13 +25559,13 @@ msgstr "" "[#702](https://github.com/adap/flower/pull/702) " "[#705](https://github.com/adap/flower/pull/705))" -#: ../../source/ref-changelog.md:1436 +#: ../../source/ref-changelog.md:1458 msgid "" "**Serialization-agnostic server** " "([#721](https://github.com/adap/flower/pull/721))" msgstr "**序列化无关服务器** ([#721](https://github.com/adap/flower/pull/721))" -#: ../../source/ref-changelog.md:1438 +#: ../../source/ref-changelog.md:1460 msgid "" "The Flower server is now fully serialization-agnostic. Prior usage of " "class `Weights` (which represents parameters as deserialized NumPy " @@ -25460,7 +25579,7 @@ msgstr "" "`Parameters` 类取代(例如在 `Strategy`中)。参数 " "\"对象与序列化完全无关,它以字节数组的形式表示参数,\"tensor_type \"属性表示如何解释这些字节数组(例如,用于序列化/反序列化)。" -#: ../../source/ref-changelog.md:1440 +#: ../../source/ref-changelog.md:1462 msgid "" "Built-in strategies implement this approach by handling serialization and" " deserialization to/from `Weights` internally. Custom/3rd-party Strategy " @@ -25472,7 +25591,7 @@ msgstr "" "内置策略通过在内部处理序列化和反序列化到/从`Weights`来实现这种方法。自定义/第三方策略实现应更新为稍有改动的策略方法定义。策略作者可查阅" " PR [#721](https://github.com/adap/flower/pull/721) 以了解如何将策略轻松迁移到新格式。" -#: ../../source/ref-changelog.md:1442 +#: ../../source/ref-changelog.md:1464 msgid "" "Deprecated `flwr.server.Server.evaluate`, use " "`flwr.server.Server.evaluate_round` instead " @@ -25481,17 +25600,17 @@ msgstr "" "已弃用 `flwr.server.Server.evaluate`,改用 " "`flwr.server.Server.evaluate_round`([#717](https://github.com/adap/flower/pull/717)" -#: ../../source/ref-changelog.md:1444 +#: ../../source/ref-changelog.md:1466 msgid "v0.15.0 (2021-03-12)" msgstr "v0.15.0 (2021-03-12)" -#: ../../source/ref-changelog.md:1448 +#: ../../source/ref-changelog.md:1470 msgid "" "**Server-side parameter initialization** " "([#658](https://github.com/adap/flower/pull/658))" msgstr "**服务器端参数初始化** ([#658](https://github.com/adap/flower/pull/658))" -#: ../../source/ref-changelog.md:1450 +#: ../../source/ref-changelog.md:1472 msgid "" "Model parameters can now be initialized on the server-side. Server-side " "parameter initialization works via a new `Strategy` method called " @@ -25500,7 +25619,7 @@ msgstr "" "现在可以在服务器端初始化模型参数。服务器端参数初始化通过名为 \"initialize_parameters \"的新 \"Strategy " "\"方法进行。" -#: ../../source/ref-changelog.md:1452 +#: ../../source/ref-changelog.md:1474 msgid "" "Built-in strategies support a new constructor argument called " "`initial_parameters` to set the initial parameters. Built-in strategies " @@ -25510,7 +25629,7 @@ msgstr "" "内置策略支持名为 \"initial_parameters " "\"的新构造函数参数,用于设置初始参数。内置策略会在启动时向服务器提供这些初始参数,然后删除它们以释放内存。" -#: ../../source/ref-changelog.md:1471 +#: ../../source/ref-changelog.md:1493 msgid "" "If no initial parameters are provided to the strategy, the server will " "continue to use the current behaviour (namely, it will ask one of the " @@ -25518,7 +25637,7 @@ msgid "" "parameters)." msgstr "如果没有向策略提供初始参数,服务器将继续使用当前行为(即向其中一个已连接的客户端询问参数,并将这些参数用作初始全局参数)。" -#: ../../source/ref-changelog.md:1475 +#: ../../source/ref-changelog.md:1497 msgid "" "Deprecate `flwr.server.strategy.DefaultStrategy` (migrate to " "`flwr.server.strategy.FedAvg`, which is equivalent)" @@ -25526,11 +25645,11 @@ msgstr "" "停用 `flwr.server.strategy.DefaultStrategy`(迁移到等价的 " "`flwr.server.strategy.FedAvg`)" -#: ../../source/ref-changelog.md:1477 +#: ../../source/ref-changelog.md:1499 msgid "v0.14.0 (2021-02-18)" msgstr "v0.14.0 (2021-02-18)" -#: ../../source/ref-changelog.md:1481 +#: ../../source/ref-changelog.md:1503 msgid "" "**Generalized** `Client.fit` **and** `Client.evaluate` **return values** " "([#610](https://github.com/adap/flower/pull/610) " @@ -25542,7 +25661,7 @@ msgstr "" "[#572](https://github.com/adap/flower/pull/572) " "[#633](https://github.com/adap/flower/pull/633))" -#: ../../source/ref-changelog.md:1483 +#: ../../source/ref-changelog.md:1505 msgid "" "Clients can now return an additional dictionary mapping `str` keys to " "values of the following types: `bool`, `bytes`, `float`, `int`, `str`. " @@ -25553,7 +25672,7 @@ msgstr "" "bool`、`bytes`、`float`、`int`、`str`。这意味着我们可以从 `fit`/`evaluate` " "返回几乎任意的值,并在服务器端使用它们!" -#: ../../source/ref-changelog.md:1485 +#: ../../source/ref-changelog.md:1507 msgid "" "This improvement also allowed for more consistent return types between " "`fit` and `evaluate`: `evaluate` should now return a tuple `(float, int, " @@ -25563,7 +25682,7 @@ msgstr "" "这一改进还使 `fit` 和 `evaluate` 之间的返回类型更加一致:`evaluate` 现在应返回一个元组`(float, int, " "dict)`,代表损失、示例数和一个包含特定问题任意值(如准确度)的字典。" -#: ../../source/ref-changelog.md:1487 +#: ../../source/ref-changelog.md:1509 msgid "" "In case you wondered: this feature is compatible with existing projects, " "the additional dictionary return value is optional. New code should " @@ -25576,13 +25695,13 @@ msgstr "" "版本兼容(`fit`: `List[np.ndarray], int, Dict[str, Scalar]`,`evaluate`: " "`float, int, Dict[str, Scalar]`)。详见下面的示例。" -#: ../../source/ref-changelog.md:1489 +#: ../../source/ref-changelog.md:1511 msgid "" "*Code example:* note the additional dictionary return values in both " "`FlwrClient.fit` and `FlwrClient.evaluate`:" msgstr "*代码示例:* 注意 `FlwrClient.fit` 和 `FlwrClient.evaluate` 中的附加字典返回值:" -#: ../../source/ref-changelog.md:1504 +#: ../../source/ref-changelog.md:1526 msgid "" "**Generalized** `config` **argument in** `Client.fit` **and** " "`Client.evaluate` ([#595](https://github.com/adap/flower/pull/595))" @@ -25590,7 +25709,7 @@ msgstr "" "**在**`Client.fit` " "**和**`Client.evaluate`中泛化**`config`参数([#595](https://github.com/adap/flower/pull/595))" -#: ../../source/ref-changelog.md:1506 +#: ../../source/ref-changelog.md:1528 msgid "" "The `config` argument used to be of type `Dict[str, str]`, which means " "that dictionary values were expected to be strings. The new release " @@ -25600,7 +25719,7 @@ msgstr "" "`config`参数曾是 \"字典[str, str]\"类型,这意味着字典值应是字符串。新版本将其扩展为以下类型的值: " "bool`、`bytes`、`float`、`int`、`str`。" -#: ../../source/ref-changelog.md:1508 +#: ../../source/ref-changelog.md:1530 msgid "" "This means one can now pass almost arbitrary values to `fit`/`evaluate` " "using the `config` dictionary. Yay, no more `str(epochs)` on the server-" @@ -25609,51 +25728,51 @@ msgstr "" "这意味着现在可以使用 `config` 字典向 `fit`/`evaluate` 传递几乎任意的值。耶,服务器端不再需要 " "`str(epochs)`,客户端不再需要 `int(config[\"epochs\"])`!" -#: ../../source/ref-changelog.md:1510 +#: ../../source/ref-changelog.md:1532 msgid "" "*Code example:* note that the `config` dictionary now contains non-`str` " "values in both `Client.fit` and `Client.evaluate`:" msgstr "*代码示例:* 注意 `config` 字典现在在 `Client.fit` 和 `Client.evaluate` 中都包含非 `str` 值:" -#: ../../source/ref-changelog.md:1527 +#: ../../source/ref-changelog.md:1549 msgid "v0.13.0 (2021-01-08)" msgstr "v0.13.0 (2021-01-08)" -#: ../../source/ref-changelog.md:1531 +#: ../../source/ref-changelog.md:1553 msgid "" "New example: PyTorch From Centralized To Federated " "([#549](https://github.com/adap/flower/pull/549))" msgstr "新示例: PyTorch 从集中到联邦 ([#549](https://github.com/adap/flower/pull/549))" -#: ../../source/ref-changelog.md:1532 +#: ../../source/ref-changelog.md:1554 msgid "Improved documentation" msgstr "改进文档" -#: ../../source/ref-changelog.md:1533 +#: ../../source/ref-changelog.md:1555 msgid "New documentation theme ([#551](https://github.com/adap/flower/pull/551))" msgstr "新文档主题 ([#551](https://github.com/adap/flower/pull/551))" -#: ../../source/ref-changelog.md:1534 +#: ../../source/ref-changelog.md:1556 msgid "New API reference ([#554](https://github.com/adap/flower/pull/554))" msgstr "新的 API 参考 ([#554](https://github.com/adap/flower/pull/554))" -#: ../../source/ref-changelog.md:1535 +#: ../../source/ref-changelog.md:1557 msgid "" "Updated examples documentation " "([#549](https://github.com/adap/flower/pull/549))" msgstr "更新了示例文档 ([#549](https://github.com/adap/flower/pull/549))" -#: ../../source/ref-changelog.md:1536 +#: ../../source/ref-changelog.md:1558 msgid "" "Removed obsolete documentation " "([#548](https://github.com/adap/flower/pull/548))" msgstr "删除了过时的文档 ([#548](https://github.com/adap/flower/pull/548))" -#: ../../source/ref-changelog.md:1538 +#: ../../source/ref-changelog.md:1560 msgid "Bugfix:" msgstr "错误修正:" -#: ../../source/ref-changelog.md:1540 +#: ../../source/ref-changelog.md:1562 msgid "" "`Server.fit` does not disconnect clients when finished, disconnecting the" " clients is now handled in `flwr.server.start_server` " @@ -25664,21 +25783,21 @@ msgstr "" "\"中处理的([#553](https://github.com/adap/flower/pull/553) " "[#540](https://github.com/adap/flower/issues/540))。" -#: ../../source/ref-changelog.md:1542 +#: ../../source/ref-changelog.md:1564 msgid "v0.12.0 (2020-12-07)" msgstr "v0.12.0 (2020-12-07)" -#: ../../source/ref-changelog.md:1544 ../../source/ref-changelog.md:1560 +#: ../../source/ref-changelog.md:1566 ../../source/ref-changelog.md:1582 msgid "Important changes:" msgstr "重要变更:" -#: ../../source/ref-changelog.md:1546 +#: ../../source/ref-changelog.md:1568 msgid "" "Added an example for embedded devices " "([#507](https://github.com/adap/flower/pull/507))" msgstr "添加了嵌入式设备示例 ([#507](https://github.com/adap/flower/pull/507))" -#: ../../source/ref-changelog.md:1547 +#: ../../source/ref-changelog.md:1569 msgid "" "Added a new NumPyClient (in addition to the existing KerasClient) " "([#504](https://github.com/adap/flower/pull/504) " @@ -25688,7 +25807,7 @@ msgstr "" "之外)([#504](https://github.com/adap/flower/pull/504) " "[#508](https://github.com/adap/flower/pull/508)" -#: ../../source/ref-changelog.md:1548 +#: ../../source/ref-changelog.md:1570 msgid "" "Deprecated `flwr_example` package and started to migrate examples into " "the top-level `examples` directory " @@ -25699,15 +25818,15 @@ msgstr "" "([#494](https://github.com/adap/flower/pull/494) " "[#512](https://github.com/adap/flower/pull/512))" -#: ../../source/ref-changelog.md:1550 +#: ../../source/ref-changelog.md:1572 msgid "v0.11.0 (2020-11-30)" msgstr "v0.11.0 (2020-11-30)" -#: ../../source/ref-changelog.md:1552 +#: ../../source/ref-changelog.md:1574 msgid "Incompatible changes:" msgstr "不兼容的更改:" -#: ../../source/ref-changelog.md:1554 +#: ../../source/ref-changelog.md:1576 msgid "" "Renamed strategy methods " "([#486](https://github.com/adap/flower/pull/486)) to unify the naming of " @@ -25720,23 +25839,23 @@ msgstr "" "API 的命名。其他公共方法/函数(例如 `Client` 中的每个方法,以及 `Strategy.evaluate`)不使用 `on_` " "前缀,这就是我们从 Strategy 中的四个方法中移除它的原因。迁移时,请相应地重命名以下 `Strategy` 方法:" -#: ../../source/ref-changelog.md:1555 +#: ../../source/ref-changelog.md:1577 msgid "`on_configure_evaluate` => `configure_evaluate`" msgstr "`on_configure_evaluate` => `configure_evaluate`" -#: ../../source/ref-changelog.md:1556 +#: ../../source/ref-changelog.md:1578 msgid "`on_aggregate_evaluate` => `aggregate_evaluate`" msgstr "`on_aggregate_evaluate` => `aggregate_evaluate`" -#: ../../source/ref-changelog.md:1557 +#: ../../source/ref-changelog.md:1579 msgid "`on_configure_fit` => `configure_fit`" msgstr "`on_configure_fit` => `configure_fit`" -#: ../../source/ref-changelog.md:1558 +#: ../../source/ref-changelog.md:1580 msgid "`on_aggregate_fit` => `aggregate_fit`" msgstr "`on_aggregate_fit` => `aggregate_fit`" -#: ../../source/ref-changelog.md:1562 +#: ../../source/ref-changelog.md:1584 msgid "" "Deprecated `DefaultStrategy` " "([#479](https://github.com/adap/flower/pull/479)). To migrate use " @@ -25745,13 +25864,13 @@ msgstr "" "已废弃的 `DefaultStrategy` ([#479](https://github.com/adap/flower/pull/479)) " "。迁移时请使用 `FedAvg`。" -#: ../../source/ref-changelog.md:1563 +#: ../../source/ref-changelog.md:1585 msgid "" "Simplified examples and baselines " "([#484](https://github.com/adap/flower/pull/484))." msgstr "简化示例和baselines([#484](https://github.com/adap/flower/pull/484))。" -#: ../../source/ref-changelog.md:1564 +#: ../../source/ref-changelog.md:1586 msgid "" "Removed presently unused `on_conclude_round` from strategy interface " "([#483](https://github.com/adap/flower/pull/483))." @@ -25759,7 +25878,7 @@ msgstr "" "删除了策略界面中目前未使用的 " "\"on_conclude_round\"([#483](https://github.com/adap/flower/pull/483))。" -#: ../../source/ref-changelog.md:1565 +#: ../../source/ref-changelog.md:1587 msgid "" "Set minimal Python version to 3.6.1 instead of 3.6.9 " "([#471](https://github.com/adap/flower/pull/471))." @@ -25767,7 +25886,7 @@ msgstr "" "将最小 Python 版本设为 3.6.1,而不是 3.6.9 " "([#471](https://github.com/adap/flower/pull/471))." -#: ../../source/ref-changelog.md:1566 +#: ../../source/ref-changelog.md:1588 msgid "" "Improved `Strategy` docstrings " "([#470](https://github.com/adap/flower/pull/470))." @@ -29685,7 +29804,7 @@ msgid "" msgstr "在机器学习中,我们有一个模型和数据。模型可以是一个神经网络(如图所示),也可以是其他东西,比如经典的线性回归。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|cf5fe148406b44b9a8b842fb01b5a7ea|" +msgid "|f150b8d6e0074250822c9f6f7a8de3e0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -29700,7 +29819,7 @@ msgid "" msgstr "我们使用数据来训练模型,以完成一项有用的任务。任务可以是检测图像中的物体、转录音频或玩围棋等游戏。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|ba25c91426d64cc1ae2d3febc5715b35|" +msgid "|72772d10debc4abd8373c0bc82985422|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -29724,7 +29843,7 @@ msgid "" msgstr "它源于智能手机上用户与应用程序的交互、汽车上传感器数据的收集、笔记本电脑上键盘输入的接收,或者智能扬声器上某人试着唱的歌。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|fca67f83aaab4389aa9ebb4d9c5cd75e|" +msgid "|5815398552ad41d290a3a2631fe8f6ca|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -29742,7 +29861,7 @@ msgstr "" "\"通常不只是一个地方,而是很多地方。它可能是多个运行同一应用程序的设备。但也可能是多个组织,都在为同一任务生成数据。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|6f2e8f95c95443379b0df00ca9824654|" +msgid "|e6ac20744bf149378be20ac3dc309356|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -29759,7 +29878,7 @@ msgid "" msgstr "因此,要使用机器学习或任何类型的数据分析,过去使用的方法是在中央服务器上收集所有数据。这个服务器可以在数据中心的某个地方,也可以在云端的某个地方。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|c0ab3a1a733d4dbc9e1677aa608e8038|" +msgid "|a4011ef443c14725b15a8cf33b0e3443|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -29774,7 +29893,7 @@ msgid "" msgstr "一旦所有数据都收集到一处,我们最终就可以使用机器学习算法在数据上训练我们的模型。这就是我们基本上一直依赖的机器学习方法。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|8f0491bde07341ab9f2e23d50593c0be|" +msgid "|a22faa3617404c06803731525e1c609f|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -29795,7 +29914,7 @@ msgid "" msgstr "我们刚刚看到的经典机器学习方法可以在某些情况下使用。很好的例子包括对假日照片进行分类或分析网络流量。在这些案例中,所有数据自然都可以在中央服务器上获得。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|762fc099899943688361562252c5e600|" +msgid "|84a5c9b5041c43c3beab9786197c3e4e|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -29810,7 +29929,7 @@ msgid "" msgstr "但这种方法并不适用于许多其他情况。例如,集中服务器上没有数据,或者一台服务器上的数据不足以训练出一个好的模型。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|f62d365fd0ae405b975d3ca01e7183fd|" +msgid "|b5c4be0b52d4493ba8c4af14d7c2db97|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -29970,7 +30089,7 @@ msgid "" msgstr "我们首先在服务器上初始化模型。这与经典的集中式学习完全相同:我们随机或从先前保存的检查点初始化模型参数。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|2c78fc1816b143289f4d909388f92a80|" +msgid "|c1c784183d18481186ff65dc261d1335|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -29995,7 +30114,7 @@ msgid "" msgstr "接下来,我们会将全局模型的参数发送到连接的客户端节点(如智能手机等边缘设备或企业的服务器)。这是为了确保每个参与节点都使用相同的模型参数开始本地训练。我们通常只使用几个连接节点,而不是所有节点。这样做的原因是,选择越来越多的客户端节点会导致收益递减。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|4230725aeebe497d8ad84a3efc2a912b|" +msgid "|669fcd1f44ab42f5bbd196c3cf1ecbc2|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -30021,7 +30140,7 @@ msgstr "" "(mini-batches)。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|64b66a88417240eabe52f5cc55d89d0b|" +msgid "|edfb08758c9441afb6736045a59e154c|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -30044,7 +30163,7 @@ msgid "" msgstr "经过本地训练后,每个客户节点最初收到的模型参数都会略有不同。参数之所以不同,是因为每个客户端节点的本地数据集中都有不同的数据。然后,客户端节点将这些模型更新发回服务器。它们发送的模型更新既可以是完整的模型参数,也可以只是本地训练过程中积累的梯度。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|726c8eca58bc4f859b06aa24a587b253|" +msgid "|82338b8bbad24d5ea9df3801aab37852|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -30091,7 +30210,7 @@ msgstr "" " 100 个示例的 10 倍。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|f9d869e4b33c4093b29cf24ed8dff80a|" +msgid "|518d994dd2c844898b441da03b858326|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -30199,7 +30318,7 @@ msgstr "" "为联邦学习、分析和评估提供了一种统一的方法。它允许用户联邦化任何工作负载、任何 ML 框架和任何编程语言。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|4ab50bc01a9f426a91a2c0cbc3ab7a84|" +msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -32512,7 +32631,7 @@ msgstr "" #~ msgstr "Flower 服务器。" #~ msgid "Unreleased" -#~ msgstr "尚未发布" +#~ msgstr "版本发布" #~ msgid "|d8bf04f23d9b46d8a23cc6f4887d7873|" #~ msgstr "|d8bf04f23d9b46d8a23cc6f4887d7873|" @@ -37605,3 +37724,48 @@ msgstr "" #~ msgid "|dd4434075f374e99ac07f509a883778f|" #~ msgstr "" +#~ msgid "Other changes" +#~ msgstr "不兼容的更改" + +#~ msgid "|cf5fe148406b44b9a8b842fb01b5a7ea|" +#~ msgstr "" + +#~ msgid "|ba25c91426d64cc1ae2d3febc5715b35|" +#~ msgstr "" + +#~ msgid "|fca67f83aaab4389aa9ebb4d9c5cd75e|" +#~ msgstr "" + +#~ msgid "|6f2e8f95c95443379b0df00ca9824654|" +#~ msgstr "" + +#~ msgid "|c0ab3a1a733d4dbc9e1677aa608e8038|" +#~ msgstr "" + +#~ msgid "|8f0491bde07341ab9f2e23d50593c0be|" +#~ msgstr "" + +#~ msgid "|762fc099899943688361562252c5e600|" +#~ msgstr "" + +#~ msgid "|f62d365fd0ae405b975d3ca01e7183fd|" +#~ msgstr "" + +#~ msgid "|2c78fc1816b143289f4d909388f92a80|" +#~ msgstr "" + +#~ msgid "|4230725aeebe497d8ad84a3efc2a912b|" +#~ msgstr "" + +#~ msgid "|64b66a88417240eabe52f5cc55d89d0b|" +#~ msgstr "" + +#~ msgid "|726c8eca58bc4f859b06aa24a587b253|" +#~ msgstr "" + +#~ msgid "|f9d869e4b33c4093b29cf24ed8dff80a|" +#~ msgstr "" + +#~ msgid "|4ab50bc01a9f426a91a2c0cbc3ab7a84|" +#~ msgstr "" + From 9d6e656001db14634f4791a10d7a93020098ea86 Mon Sep 17 00:00:00 2001 From: Yan Gao Date: Thu, 28 Nov 2024 20:44:55 +0800 Subject: [PATCH 003/104] fix(benchmarks) Update llm leaderboard readme (#4597) --- benchmarks/flowertune-llm/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/benchmarks/flowertune-llm/README.md b/benchmarks/flowertune-llm/README.md index 662134a0e44d..c3e1b2b7dd53 100644 --- a/benchmarks/flowertune-llm/README.md +++ b/benchmarks/flowertune-llm/README.md @@ -16,8 +16,7 @@ Then, create a new Python environment and install Flower. > We recommend using `pyenv` with the `virtualenv` plugin to create your environment with Python >= 3.10.0. Other managers, such as Conda, will likely work as well. Check the [documentation](https://flower.ai/docs/framework/how-to-install-flower.html) for alternative ways to install Flower. ```shell -# We use this dev version until flwr 1.13.0 is out -pip install git+https://github.com/adap/flower.git@d92453d +pip install flwr ``` In the new environment, create a new Flower project using the `FlowerTune` template. You will be prompted for a name to give to your app/project, your username, and for your choice of LLM challenge: From 79c9f47e4693d9b8f83e753bf13021c27acc7040 Mon Sep 17 00:00:00 2001 From: Charles Beauville Date: Thu, 28 Nov 2024 13:54:33 +0100 Subject: [PATCH 004/104] refactor(*:skip) Ignore Pyright config file (#4599) --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index b0962c2783f0..4c52fa332037 100644 --- a/.gitignore +++ b/.gitignore @@ -183,3 +183,6 @@ app/src/main/assets /captures .externalNativeBuild .cxx + +# Pyright +pyrightconfig.json From f2d3b1ac2cf34f318e910a61c1d201b97f96cfc2 Mon Sep 17 00:00:00 2001 From: SasiMurakonda Date: Thu, 28 Nov 2024 16:14:36 +0000 Subject: [PATCH 005/104] docs(framework) Edit Good First Contributions page (#4598) --- ...ntributor-ref-good-first-contributions.rst | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/doc/source/contributor-ref-good-first-contributions.rst b/doc/source/contributor-ref-good-first-contributions.rst index a715e006f905..0d07f1f1d7ac 100644 --- a/doc/source/contributor-ref-good-first-contributions.rst +++ b/doc/source/contributor-ref-good-first-contributions.rst @@ -8,35 +8,32 @@ your chances of getting your PR accepted into the Flower codebase. Where to start -------------- -Until the Flower core library matures it will be easier to get PR's accepted if they -only touch non-core areas of the codebase. Good candidates to get started are: +In general, it is easier to get PR's accepted if they only touch non-core areas of the +codebase. Good candidates to get started are: - Documentation: What's missing? What could be expressed more clearly? +- Open issues: Issues with the tag `good first issue + `_. - Baselines: See below. - Examples: See below. -Request for Flower Baselines ----------------------------- +Flower Baselines +---------------- -If you are not familiar with Flower Baselines, you should probably check-out our -`contributing guide for baselines -`_. +If you are not familiar with Flower Baselines, please check our `contributing guide for +baselines `_. -You should then check out the open `issues +Then take a look at the open `issues `_ -for baseline requests. If you find a baseline that you'd like to work on and that has no -assignees, feel free to assign it to yourself and start working on it! +for baseline requests. If you find a baseline that you'd like to work on, and it has no +assignees, feel free to assign it to yourself and get started! -Otherwise, if you don't find a baseline you'd like to work on, be sure to open a new -issue with the baseline request template! +If you don't find the baseline you'd like to work on, be sure to open a new issue with +the baseline request template! -Request for examples --------------------- - -We wish we had more time to write usage examples because we believe they help users to -get started with building what they want to build. Here are a few ideas where we'd be -happy to accept a PR: +Usage examples +-------------- -- Llama 2 fine-tuning, with Hugging Face Transformers and PyTorch -- XGBoost -- Android ONNX on-device training +We wish we had more time to write usage examples because they help users to get started +with building what they want. If you notice any missing examples that could help others, +feel free to contribute! From 7504d556ccb00d5edc6d2d284a2abfa7c3a8570a Mon Sep 17 00:00:00 2001 From: Adam Narozniak <51029327+adam-narozniak@users.noreply.github.com> Date: Fri, 29 Nov 2024 15:12:09 +0100 Subject: [PATCH 006/104] docs(datasets) Add dataset contribution guide (#4601) Co-authored-by: jafermarq --- .../contributor-how-to-contribute-dataset.rst | 56 +++++++++++++++++++ datasets/doc/source/index.rst | 7 +++ 2 files changed, 63 insertions(+) create mode 100644 datasets/doc/source/contributor-how-to-contribute-dataset.rst diff --git a/datasets/doc/source/contributor-how-to-contribute-dataset.rst b/datasets/doc/source/contributor-how-to-contribute-dataset.rst new file mode 100644 index 000000000000..07a6ba6378f7 --- /dev/null +++ b/datasets/doc/source/contributor-how-to-contribute-dataset.rst @@ -0,0 +1,56 @@ +How to contribute a dataset +=========================== + +To make a dataset available in Flower Dataset (`flwr-datasets`), you need to add the dataset to `HuggingFace Hub `_ . + +This guide will explain the best practices we found when adding datasets ourselves and point to the HFs guides. To see the datasets added by Flower, visit https://huggingface.co/flwrlabs. + +Dataset contribution process +---------------------------- +The contribution contains three steps: first, on your development machine transform your dataset into a ``datasets.Dataset`` object, the preferred format for datasets in HF Hub; second, upload the dataset to HuggingFace Hub and detail it its readme how can be used with Flower Dataset; third, share your dataset with us and we will add it to the `recommended FL dataset list `_ + +Creating a dataset locally +^^^^^^^^^^^^^^^^^^^^^^^^^^ +You can create a local dataset directly using the `datasets` library or load it in any custom way and transform it to the `datasets.Dataset` from other Python objects. +To complete this step, we recommend reading our :doc:`how-to-use-with-local-data` guide or/and the `Create a dataset `_ guide from HF. + +.. tip:: + We recommend that you do not upload custom scripts to HuggingFace Hub; instead, create the dataset locally and upload the data, which will speed up the processing time each time the data set is downloaded. + +Contribution to the HuggingFace Hub +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Each dataset in the HF Hub is a Git repository with a specific structure and readme file, and HuggingFace provides an API to push the dataset and, alternatively, a user interface directly in the website to populate the information in the readme file. + +Contributions to the HuggingFace Hub come down to: + +1. creating an HF repository for the dataset. +2. uploading the dataset. +3. filling in the information in the readme file. + +To complete this step, follow this HF's guide `Share dataset to the Hub `_. + +Note that the push of the dataset is straightforward, and here's what it could look like: + +.. code-block:: python + + from datasets import Dataset + + # Example dataset + data = { + 'column1': [1, 2, 3], + 'column2': ['a', 'b', 'c'] + } + + # Create a Dataset object + dataset = Dataset.from_dict(data) + + # Push the dataset to the HuggingFace Hub + dataset.push_to_hub("you-hf-username/your-ds-name") + +To make the dataset easily accessible in FL we recommend adding the "Use in FL" section. Here's an example of how it is done in `one of our repos `_ for the cinic10 dataset. + +Increasing visibility of the dataset +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +If you want the dataset listed in our `recommended FL dataset list `_ , please send a PR or ping us in `Slack `_ #contributions channel. + +That's it! You have successfully contributed a dataset to the HuggingFace Hub and made it available for FL community. Thank you for your contribution! \ No newline at end of file diff --git a/datasets/doc/source/index.rst b/datasets/doc/source/index.rst index 6f7c47bf2416..422d93582a02 100644 --- a/datasets/doc/source/index.rst +++ b/datasets/doc/source/index.rst @@ -66,6 +66,13 @@ Information-oriented API reference and other reference material. recommended-fl-datasets ref-telemetry +.. toctree:: + :maxdepth: 1 + :caption: Contributor tutorials + + contributor-how-to-contribute-dataset + + Main features ------------- Flower Datasets library supports: From 3fcc89a6c40458d7c0ddd3ceb6a9154deba5f269 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 30 Nov 2024 08:36:42 +0100 Subject: [PATCH 007/104] docs(framework:skip) Update source for translations (automated) (#4606) --- doc/locales/fr/LC_MESSAGES/framework-docs.po | 162 +++++++++----- doc/locales/ko/LC_MESSAGES/framework-docs.po | 161 +++++++++----- .../pt_BR/LC_MESSAGES/framework-docs.po | 204 +++++++++++++----- .../zh_Hans/LC_MESSAGES/framework-docs.po | 164 +++++++++----- 4 files changed, 473 insertions(+), 218 deletions(-) diff --git a/doc/locales/fr/LC_MESSAGES/framework-docs.po b/doc/locales/fr/LC_MESSAGES/framework-docs.po index 6b0a297dd720..40aaec1a1087 100644 --- a/doc/locales/fr/LC_MESSAGES/framework-docs.po +++ b/doc/locales/fr/LC_MESSAGES/framework-docs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower Docs\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-11-28 00:32+0000\n" +"POT-Creation-Date: 2024-11-30 00:31+0000\n" "PO-Revision-Date: 2023-09-05 17:54+0000\n" "Last-Translator: Charles Beauville \n" "Language: fr\n" @@ -1353,10 +1353,10 @@ msgid "Where to start" msgstr "Par où commencer" #: ../../source/contributor-ref-good-first-contributions.rst:11 +#, fuzzy msgid "" -"Until the Flower core library matures it will be easier to get PR's " -"accepted if they only touch non-core areas of the codebase. Good " -"candidates to get started are:" +"In general, it is easier to get PR's accepted if they only touch non-core" +" areas of the codebase. Good candidates to get started are:" msgstr "" "Jusqu'à ce que la bibliothèque centrale de Flower arrive à maturité, il " "sera plus facile de faire accepter les RP s'ils ne touchent que des zones" @@ -1370,36 +1370,44 @@ msgstr "" "exprimé plus clairement ?" #: ../../source/contributor-ref-good-first-contributions.rst:15 +#, python-format +msgid "" +"Open issues: Issues with the tag `good first issue " +"`_." +msgstr "" + +#: ../../source/contributor-ref-good-first-contributions.rst:17 msgid "Baselines: See below." msgstr "Références : voir ci-dessous." -#: ../../source/contributor-ref-good-first-contributions.rst:16 +#: ../../source/contributor-ref-good-first-contributions.rst:18 msgid "Examples: See below." msgstr "Exemples : voir ci-dessous." -#: ../../source/contributor-ref-good-first-contributions.rst:19 -msgid "Request for Flower Baselines" +#: ../../source/contributor-ref-good-first-contributions.rst:21 +#, fuzzy +msgid "Flower Baselines" msgstr "Demande pour une nouvelle Flower Baseline" -#: ../../source/contributor-ref-good-first-contributions.rst:21 +#: ../../source/contributor-ref-good-first-contributions.rst:23 #, fuzzy msgid "" -"If you are not familiar with Flower Baselines, you should probably check-" -"out our `contributing guide for baselines " -"`_." +"If you are not familiar with Flower Baselines, please check our " +"`contributing guide for baselines `_." msgstr "" "Si tu n'es pas familier avec les Flower Baselines, tu devrais " "probablement consulter notre `guide de contribution pour les baselines " "`_." -#: ../../source/contributor-ref-good-first-contributions.rst:25 +#: ../../source/contributor-ref-good-first-contributions.rst:26 #, fuzzy msgid "" -"You should then check out the open `issues " +"Then take a look at the open `issues " "`_" -" for baseline requests. If you find a baseline that you'd like to work on" -" and that has no assignees, feel free to assign it to yourself and start " -"working on it!" +" for baseline requests. If you find a baseline that you'd like to work " +"on, and it has no assignees, feel free to assign it to yourself and get " +"started!" msgstr "" "Tu devrais ensuite consulter les `issues ouvertes " "`_" @@ -1407,43 +1415,33 @@ msgstr "" " laquelle tu aimerais travailler et qui n'a pas d'assignés, n'hésite pas " "à te l'attribuer et à commencer à travailler dessus !" -#: ../../source/contributor-ref-good-first-contributions.rst:30 +#: ../../source/contributor-ref-good-first-contributions.rst:31 +#, fuzzy msgid "" -"Otherwise, if you don't find a baseline you'd like to work on, be sure to" -" open a new issue with the baseline request template!" +"If you don't find the baseline you'd like to work on, be sure to open a " +"new issue with the baseline request template!" msgstr "" "Sinon, si tu ne trouves pas de ligne de base sur laquelle tu aimerais " "travailler, n'oublie pas d'ouvrir un nouveau problème à l'aide du modèle " "de demande de ligne de base !" -#: ../../source/contributor-ref-good-first-contributions.rst:34 -msgid "Request for examples" -msgstr "Demande pour un nouveau Flower Example" +#: ../../source/contributor-ref-good-first-contributions.rst:35 +#, fuzzy +msgid "Usage examples" +msgstr "Exemples de PyTorch" -#: ../../source/contributor-ref-good-first-contributions.rst:36 +#: ../../source/contributor-ref-good-first-contributions.rst:37 +#, fuzzy msgid "" -"We wish we had more time to write usage examples because we believe they " -"help users to get started with building what they want to build. Here are" -" a few ideas where we'd be happy to accept a PR:" +"We wish we had more time to write usage examples because they help users " +"to get started with building what they want. If you notice any missing " +"examples that could help others, feel free to contribute!" msgstr "" "Nous aimerions avoir plus de temps pour écrire des exemples d'utilisation" " car nous pensons qu'ils aident les utilisateurs à commencer à construire" " ce qu'ils veulent construire. Voici quelques idées pour lesquelles nous " "serions heureux d'accepter un RP :" -#: ../../source/contributor-ref-good-first-contributions.rst:40 -msgid "Llama 2 fine-tuning, with Hugging Face Transformers and PyTorch" -msgstr "LLaMA 2 fine-tuning avec Hugging Face et PyTorch" - -#: ../../source/contributor-ref-good-first-contributions.rst:41 -#: ../../source/tutorial-quickstart-xgboost.rst:7 -msgid "XGBoost" -msgstr "XGBoost" - -#: ../../source/contributor-ref-good-first-contributions.rst:42 -msgid "Android ONNX on-device training" -msgstr "Training sur téléphone à l'aide d'Android ONNX" - #: ../../source/contributor-ref-secure-aggregation-protocols.rst:2 msgid "Secure Aggregation Protocols" msgstr "Protocoles d'agrégation sécurisés" @@ -26487,6 +26485,10 @@ msgstr "" msgid "Quickstart XGBoost" msgstr "Démarrage rapide XGBoost" +#: ../../source/tutorial-quickstart-xgboost.rst:7 +msgid "XGBoost" +msgstr "XGBoost" + #: ../../source/tutorial-quickstart-xgboost.rst:9 msgid "" "EXtreme Gradient Boosting (**XGBoost**) is a robust and efficient " @@ -28906,7 +28908,7 @@ msgstr "" "chose d'autre, comme la régression linéaire classique." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|f150b8d6e0074250822c9f6f7a8de3e0|" +msgid "|80152fa658904be08c849b4a594b76e1|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -28925,7 +28927,7 @@ msgstr "" " Go." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|72772d10debc4abd8373c0bc82985422|" +msgid "|35b60a1068f944ce937ac2988661aad5|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -28957,7 +28959,7 @@ msgstr "" "chanson." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|5815398552ad41d290a3a2631fe8f6ca|" +msgid "|efead7f2c2224b60b7b42705004c15e6|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -28978,7 +28980,7 @@ msgstr "" " données pour la même tâche." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|e6ac20744bf149378be20ac3dc309356|" +msgid "|5421fee4e7ed450c903cbcd8a9d8a5d4|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -29000,7 +29002,7 @@ msgstr "" "cloud." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|a4011ef443c14725b15a8cf33b0e3443|" +msgid "|811fcf35e9214bd5b4e613e41f7c0a27|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -29021,7 +29023,7 @@ msgstr "" "appuyés." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|a22faa3617404c06803731525e1c609f|" +msgid "|e61d38b0948f4c07a7257755f3799b54|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -29047,7 +29049,7 @@ msgstr "" " sur un serveur centralisé." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|84a5c9b5041c43c3beab9786197c3e4e|" +msgid "|e82c29351e2e480087c61b939eb7c041|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -29066,7 +29068,7 @@ msgstr "" "suffisantes pour former un bon modèle." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|b5c4be0b52d4493ba8c4af14d7c2db97|" +msgid "|21ca40f4fb1a405c89098fd1d24880a4|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -29297,7 +29299,7 @@ msgstr "" "partir d'un point de contrôle précédemment sauvegardé." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|c1c784183d18481186ff65dc261d1335|" +msgid "|1351a2629c2c46d981b13b19f9fa45f0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -29332,7 +29334,7 @@ msgstr "" "rendements décroissants." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|669fcd1f44ab42f5bbd196c3cf1ecbc2|" +msgid "|124c2c188b994c7ab1c862cfdb326923|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -29365,7 +29367,7 @@ msgstr "" "données locales, ou même de quelques étapes (mini-batchs)." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|edfb08758c9441afb6736045a59e154c|" +msgid "|42e1951c36f2406e93c7ae0ec5b299f9|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -29396,7 +29398,7 @@ msgstr "" " l'entraînement local." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|82338b8bbad24d5ea9df3801aab37852|" +msgid "|ec637b8a84234d068995ee1ccb2dd3b1|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -29456,7 +29458,7 @@ msgstr "" "times as much as each of the 100 examples." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|518d994dd2c844898b441da03b858326|" +msgid "|5bceb9d16b1a4d2db18d8a5b2f0cacb3|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -29600,7 +29602,7 @@ msgstr "" "quel cadre de ML et n'importe quel langage de programmation." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" +msgid "|502b10044e864ca2b15282a393ab7faf|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -30664,15 +30666,13 @@ msgstr "" #~ " doit être installé sur le système." #~ msgid "Llama 2 fine-tuning, with Hugging Face Transformers and PyTorch" -#~ msgstr "Un fine-tuning de LLaMA 2 avec Hugging Face et PyTorch" +#~ msgstr "LLaMA 2 fine-tuning avec Hugging Face et PyTorch" #~ msgid "XGBoost" #~ msgstr "XGBoost" #~ msgid "Android ONNX on-device training" -#~ msgstr "" -#~ "Utiliser Android ONNX pour faire du " -#~ "training directement sur le téléphone" +#~ msgstr "Training sur téléphone à l'aide d'Android ONNX" #~ msgid "Contribute on GitHub" #~ msgstr "Contribuer sur GitHub" @@ -42959,3 +42959,51 @@ msgstr "" #~ msgid "|4ab50bc01a9f426a91a2c0cbc3ab7a84|" #~ msgstr "" +#~ msgid "Request for Flower Baselines" +#~ msgstr "Demande pour une nouvelle Flower Baseline" + +#~ msgid "Request for examples" +#~ msgstr "Demande pour un nouveau Flower Example" + +#~ msgid "|f150b8d6e0074250822c9f6f7a8de3e0|" +#~ msgstr "" + +#~ msgid "|72772d10debc4abd8373c0bc82985422|" +#~ msgstr "" + +#~ msgid "|5815398552ad41d290a3a2631fe8f6ca|" +#~ msgstr "" + +#~ msgid "|e6ac20744bf149378be20ac3dc309356|" +#~ msgstr "" + +#~ msgid "|a4011ef443c14725b15a8cf33b0e3443|" +#~ msgstr "" + +#~ msgid "|a22faa3617404c06803731525e1c609f|" +#~ msgstr "" + +#~ msgid "|84a5c9b5041c43c3beab9786197c3e4e|" +#~ msgstr "" + +#~ msgid "|b5c4be0b52d4493ba8c4af14d7c2db97|" +#~ msgstr "" + +#~ msgid "|c1c784183d18481186ff65dc261d1335|" +#~ msgstr "" + +#~ msgid "|669fcd1f44ab42f5bbd196c3cf1ecbc2|" +#~ msgstr "" + +#~ msgid "|edfb08758c9441afb6736045a59e154c|" +#~ msgstr "" + +#~ msgid "|82338b8bbad24d5ea9df3801aab37852|" +#~ msgstr "" + +#~ msgid "|518d994dd2c844898b441da03b858326|" +#~ msgstr "" + +#~ msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" +#~ msgstr "" + diff --git a/doc/locales/ko/LC_MESSAGES/framework-docs.po b/doc/locales/ko/LC_MESSAGES/framework-docs.po index 8775e9b1ca4d..810bc10e99b3 100644 --- a/doc/locales/ko/LC_MESSAGES/framework-docs.po +++ b/doc/locales/ko/LC_MESSAGES/framework-docs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower main\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-28 00:32+0000\n" +"POT-Creation-Date: 2024-11-30 00:31+0000\n" "PO-Revision-Date: 2024-08-23 13:09+0000\n" "Last-Translator: Seulki Yun \n" "Language: ko\n" @@ -1326,10 +1326,10 @@ msgid "Where to start" msgstr "시작 위치" #: ../../source/contributor-ref-good-first-contributions.rst:11 +#, fuzzy msgid "" -"Until the Flower core library matures it will be easier to get PR's " -"accepted if they only touch non-core areas of the codebase. Good " -"candidates to get started are:" +"In general, it is easier to get PR's accepted if they only touch non-core" +" areas of the codebase. Good candidates to get started are:" msgstr "" "Flower 코어 라이브러리가 완성될 때까지는 코드베이스의 비핵심 영역만 건드리는 것이 PR을 승인받기가 더 쉬울 것입니다. " "시작하기에 좋은 후보자는 다음과 같습니다:" @@ -1339,72 +1339,72 @@ msgid "Documentation: What's missing? What could be expressed more clearly?" msgstr "문서: 무엇이 누락되었나요? 무엇을 더 명확하게 표현할 수 있을까요?" #: ../../source/contributor-ref-good-first-contributions.rst:15 +#, python-format +msgid "" +"Open issues: Issues with the tag `good first issue " +"`_." +msgstr "" + +#: ../../source/contributor-ref-good-first-contributions.rst:17 msgid "Baselines: See below." msgstr "Baselines: 아래를 참조하세요." -#: ../../source/contributor-ref-good-first-contributions.rst:16 +#: ../../source/contributor-ref-good-first-contributions.rst:18 msgid "Examples: See below." msgstr "예시: 아래를 참조하세요." -#: ../../source/contributor-ref-good-first-contributions.rst:19 -msgid "Request for Flower Baselines" +#: ../../source/contributor-ref-good-first-contributions.rst:21 +#, fuzzy +msgid "Flower Baselines" msgstr "Flower Baselines 요청" -#: ../../source/contributor-ref-good-first-contributions.rst:21 +#: ../../source/contributor-ref-good-first-contributions.rst:23 +#, fuzzy msgid "" -"If you are not familiar with Flower Baselines, you should probably check-" -"out our `contributing guide for baselines " -"`_." +"If you are not familiar with Flower Baselines, please check our " +"`contributing guide for baselines `_." msgstr "" "Flower Baseline에 익숙하지 않다면 ' Baseline 기여 가이드 " "`_를 " "확인해보세요." -#: ../../source/contributor-ref-good-first-contributions.rst:25 +#: ../../source/contributor-ref-good-first-contributions.rst:26 +#, fuzzy msgid "" -"You should then check out the open `issues " +"Then take a look at the open `issues " "`_" -" for baseline requests. If you find a baseline that you'd like to work on" -" and that has no assignees, feel free to assign it to yourself and start " -"working on it!" +" for baseline requests. If you find a baseline that you'd like to work " +"on, and it has no assignees, feel free to assign it to yourself and get " +"started!" msgstr "" "그런 다음 오픈 된 `issues " "`_에서" " baseline 요청을 확인해야 합니다. 작업하고 싶은 기준선을 찾았지만 담당자가 없는 경우, 자유롭게 자신에게 할당하고 작업을 " "시작하세요!" -#: ../../source/contributor-ref-good-first-contributions.rst:30 +#: ../../source/contributor-ref-good-first-contributions.rst:31 +#, fuzzy msgid "" -"Otherwise, if you don't find a baseline you'd like to work on, be sure to" -" open a new issue with the baseline request template!" +"If you don't find the baseline you'd like to work on, be sure to open a " +"new issue with the baseline request template!" msgstr "그렇지 않으면 작업하고 싶은 baseline을 찾지 못하면 baseline 요청 템플릿으로 새 이슈를 열어야 합니다!" -#: ../../source/contributor-ref-good-first-contributions.rst:34 -msgid "Request for examples" -msgstr "예시 요청" +#: ../../source/contributor-ref-good-first-contributions.rst:35 +#, fuzzy +msgid "Usage examples" +msgstr "예시" -#: ../../source/contributor-ref-good-first-contributions.rst:36 +#: ../../source/contributor-ref-good-first-contributions.rst:37 +#, fuzzy msgid "" -"We wish we had more time to write usage examples because we believe they " -"help users to get started with building what they want to build. Here are" -" a few ideas where we'd be happy to accept a PR:" +"We wish we had more time to write usage examples because they help users " +"to get started with building what they want. If you notice any missing " +"examples that could help others, feel free to contribute!" msgstr "" "사용 예시는 사용자가 원하는 것을 구축하는 데 도움이 된다고 생각하기 때문에 더 많은 시간을 할애하여 작성할 수 있었으면 합니다. " "다음은 저희가 기꺼이 PR을 수락할 수 있는 몇 가지 아이디어입니다:" -#: ../../source/contributor-ref-good-first-contributions.rst:40 -msgid "Llama 2 fine-tuning, with Hugging Face Transformers and PyTorch" -msgstr "Llama 2 미세 조정, Hugging Face Transformer와 파이토치 포함" - -#: ../../source/contributor-ref-good-first-contributions.rst:41 -#: ../../source/tutorial-quickstart-xgboost.rst:7 -msgid "XGBoost" -msgstr "XGBoost" - -#: ../../source/contributor-ref-good-first-contributions.rst:42 -msgid "Android ONNX on-device training" -msgstr "Android ONNX 온디바이스 훈련" - #: ../../source/contributor-ref-secure-aggregation-protocols.rst:2 msgid "Secure Aggregation Protocols" msgstr "Secure Aggregation 프로토콜" @@ -24222,6 +24222,10 @@ msgstr "" msgid "Quickstart XGBoost" msgstr "" +#: ../../source/tutorial-quickstart-xgboost.rst:7 +msgid "XGBoost" +msgstr "XGBoost" + #: ../../source/tutorial-quickstart-xgboost.rst:9 msgid "" "EXtreme Gradient Boosting (**XGBoost**) is a robust and efficient " @@ -25984,7 +25988,7 @@ msgstr "" " 수도 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|f150b8d6e0074250822c9f6f7a8de3e0|" +msgid "|80152fa658904be08c849b4a594b76e1|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -26001,7 +26005,7 @@ msgstr "" " 바둑과 같은 게임을 하는 것일 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|72772d10debc4abd8373c0bc82985422|" +msgid "|35b60a1068f944ce937ac2988661aad5|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -26027,7 +26031,7 @@ msgstr "" "부르리는 것을 듣는 스마트 스피커에서 비롯됩니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|5815398552ad41d290a3a2631fe8f6ca|" +msgid "|efead7f2c2224b60b7b42705004c15e6|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -26045,7 +26049,7 @@ msgstr "" "있습니다. 하지만 여러 조직이 모두 같은 작업을 위해 데이터를 생성하는 것일 수도 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|e6ac20744bf149378be20ac3dc309356|" +msgid "|5421fee4e7ed450c903cbcd8a9d8a5d4|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -26064,7 +26068,7 @@ msgstr "" "서버는 데이터 센터 어딘가에 있을 수도 있고 클라우드 어딘가에 있을 수도 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|a4011ef443c14725b15a8cf33b0e3443|" +msgid "|811fcf35e9214bd5b4e613e41f7c0a27|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -26081,7 +26085,7 @@ msgstr "" " 우리가 기본적으로 사용해 온 머신러닝 방법입니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|a22faa3617404c06803731525e1c609f|" +msgid "|e61d38b0948f4c07a7257755f3799b54|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -26104,7 +26108,7 @@ msgstr "" "트래픽을 분석하는 것이 있습니다. 이러한 사례에서 모든 데이터는 자연스럽게 중앙 서버에 존재합니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|84a5c9b5041c43c3beab9786197c3e4e|" +msgid "|e82c29351e2e480087c61b939eb7c041|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -26121,7 +26125,7 @@ msgstr "" "좋은 모델을 훈련하기에 충분하지 않을 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|b5c4be0b52d4493ba8c4af14d7c2db97|" +msgid "|21ca40f4fb1a405c89098fd1d24880a4|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -26300,7 +26304,7 @@ msgstr "" "체크포인트에서 모델 매개변수를 초기화합니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|c1c784183d18481186ff65dc261d1335|" +msgid "|1351a2629c2c46d981b13b19f9fa45f0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -26328,7 +26332,7 @@ msgstr "" "개의 연결 노드만 사용합니다. 그 이유는 점점 더 많은 클라이언트 노드를 선택하면 학습의 효율성이 감소하기 때문입니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|669fcd1f44ab42f5bbd196c3cf1ecbc2|" +msgid "|124c2c188b994c7ab1c862cfdb326923|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -26355,7 +26359,7 @@ msgstr "" "데이터에서 한 단계 정도로 짧거나 몇 단계(mini-batches)에 불과할 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|edfb08758c9441afb6736045a59e154c|" +msgid "|42e1951c36f2406e93c7ae0ec5b299f9|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -26381,7 +26385,7 @@ msgstr "" "보냅니다. 보내는 모델 업데이트는 전체 모델 파라미터거나 로컬 교육 중에 누적된 그레디언트(gradient)일 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|82338b8bbad24d5ea9df3801aab37852|" +msgid "|ec637b8a84234d068995ee1ccb2dd3b1|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -26431,7 +26435,7 @@ msgstr "" "많은 영향을 미칩니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|518d994dd2c844898b441da03b858326|" +msgid "|5bceb9d16b1a4d2db18d8a5b2f0cacb3|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -26551,7 +26555,7 @@ msgstr "" "사용자는 모든 워크로드, 머신러닝 프레임워크 및 모든 프로그래밍 언어를 통합할 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" +msgid "|502b10044e864ca2b15282a393ab7faf|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -33428,3 +33432,54 @@ msgstr "" #~ msgid "|4ab50bc01a9f426a91a2c0cbc3ab7a84|" #~ msgstr "" +#~ msgid "Request for examples" +#~ msgstr "예시 요청" + +#~ msgid "Llama 2 fine-tuning, with Hugging Face Transformers and PyTorch" +#~ msgstr "Llama 2 미세 조정, Hugging Face Transformer와 파이토치 포함" + +#~ msgid "Android ONNX on-device training" +#~ msgstr "Android ONNX 온디바이스 훈련" + +#~ msgid "|f150b8d6e0074250822c9f6f7a8de3e0|" +#~ msgstr "" + +#~ msgid "|72772d10debc4abd8373c0bc82985422|" +#~ msgstr "" + +#~ msgid "|5815398552ad41d290a3a2631fe8f6ca|" +#~ msgstr "" + +#~ msgid "|e6ac20744bf149378be20ac3dc309356|" +#~ msgstr "" + +#~ msgid "|a4011ef443c14725b15a8cf33b0e3443|" +#~ msgstr "" + +#~ msgid "|a22faa3617404c06803731525e1c609f|" +#~ msgstr "" + +#~ msgid "|84a5c9b5041c43c3beab9786197c3e4e|" +#~ msgstr "" + +#~ msgid "|b5c4be0b52d4493ba8c4af14d7c2db97|" +#~ msgstr "" + +#~ msgid "|c1c784183d18481186ff65dc261d1335|" +#~ msgstr "" + +#~ msgid "|669fcd1f44ab42f5bbd196c3cf1ecbc2|" +#~ msgstr "" + +#~ msgid "|edfb08758c9441afb6736045a59e154c|" +#~ msgstr "" + +#~ msgid "|82338b8bbad24d5ea9df3801aab37852|" +#~ msgstr "" + +#~ msgid "|518d994dd2c844898b441da03b858326|" +#~ msgstr "" + +#~ msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" +#~ msgstr "" + diff --git a/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po b/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po index 017acf217ab0..21eafd64d9a2 100644 --- a/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po +++ b/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower main\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-28 00:32+0000\n" +"POT-Creation-Date: 2024-11-30 00:31+0000\n" "PO-Revision-Date: 2024-05-25 11:09+0000\n" "Last-Translator: Gustavo Bertoli \n" "Language: pt_BR\n" @@ -1274,9 +1274,8 @@ msgstr "" #: ../../source/contributor-ref-good-first-contributions.rst:11 msgid "" -"Until the Flower core library matures it will be easier to get PR's " -"accepted if they only touch non-core areas of the codebase. Good " -"candidates to get started are:" +"In general, it is easier to get PR's accepted if they only touch non-core" +" areas of the codebase. Good candidates to get started are:" msgstr "" #: ../../source/contributor-ref-good-first-contributions.rst:14 @@ -1284,61 +1283,57 @@ msgid "Documentation: What's missing? What could be expressed more clearly?" msgstr "" #: ../../source/contributor-ref-good-first-contributions.rst:15 -msgid "Baselines: See below." +#, python-format +msgid "" +"Open issues: Issues with the tag `good first issue " +"`_." msgstr "" -#: ../../source/contributor-ref-good-first-contributions.rst:16 -msgid "Examples: See below." +#: ../../source/contributor-ref-good-first-contributions.rst:17 +msgid "Baselines: See below." msgstr "" -#: ../../source/contributor-ref-good-first-contributions.rst:19 -msgid "Request for Flower Baselines" +#: ../../source/contributor-ref-good-first-contributions.rst:18 +msgid "Examples: See below." msgstr "" #: ../../source/contributor-ref-good-first-contributions.rst:21 +#, fuzzy +msgid "Flower Baselines" +msgstr "``FLWR_VERSION``" + +#: ../../source/contributor-ref-good-first-contributions.rst:23 msgid "" -"If you are not familiar with Flower Baselines, you should probably check-" -"out our `contributing guide for baselines " -"`_." +"If you are not familiar with Flower Baselines, please check our " +"`contributing guide for baselines `_." msgstr "" -#: ../../source/contributor-ref-good-first-contributions.rst:25 +#: ../../source/contributor-ref-good-first-contributions.rst:26 msgid "" -"You should then check out the open `issues " +"Then take a look at the open `issues " "`_" -" for baseline requests. If you find a baseline that you'd like to work on" -" and that has no assignees, feel free to assign it to yourself and start " -"working on it!" +" for baseline requests. If you find a baseline that you'd like to work " +"on, and it has no assignees, feel free to assign it to yourself and get " +"started!" msgstr "" -#: ../../source/contributor-ref-good-first-contributions.rst:30 +#: ../../source/contributor-ref-good-first-contributions.rst:31 msgid "" -"Otherwise, if you don't find a baseline you'd like to work on, be sure to" -" open a new issue with the baseline request template!" +"If you don't find the baseline you'd like to work on, be sure to open a " +"new issue with the baseline request template!" msgstr "" -#: ../../source/contributor-ref-good-first-contributions.rst:34 -msgid "Request for examples" -msgstr "" +#: ../../source/contributor-ref-good-first-contributions.rst:35 +#, fuzzy +msgid "Usage examples" +msgstr "Exemplo" -#: ../../source/contributor-ref-good-first-contributions.rst:36 +#: ../../source/contributor-ref-good-first-contributions.rst:37 msgid "" -"We wish we had more time to write usage examples because we believe they " -"help users to get started with building what they want to build. Here are" -" a few ideas where we'd be happy to accept a PR:" -msgstr "" - -#: ../../source/contributor-ref-good-first-contributions.rst:40 -msgid "Llama 2 fine-tuning, with Hugging Face Transformers and PyTorch" -msgstr "" - -#: ../../source/contributor-ref-good-first-contributions.rst:41 -#: ../../source/tutorial-quickstart-xgboost.rst:7 -msgid "XGBoost" -msgstr "" - -#: ../../source/contributor-ref-good-first-contributions.rst:42 -msgid "Android ONNX on-device training" +"We wish we had more time to write usage examples because they help users " +"to get started with building what they want. If you notice any missing " +"examples that could help others, feel free to contribute!" msgstr "" #: ../../source/contributor-ref-secure-aggregation-protocols.rst:2 @@ -22924,6 +22919,10 @@ msgstr "" msgid "Quickstart XGBoost" msgstr "" +#: ../../source/tutorial-quickstart-xgboost.rst:7 +msgid "XGBoost" +msgstr "" + #: ../../source/tutorial-quickstart-xgboost.rst:9 msgid "" "EXtreme Gradient Boosting (**XGBoost**) is a robust and efficient " @@ -24656,7 +24655,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|f150b8d6e0074250822c9f6f7a8de3e0|" +msgid "|80152fa658904be08c849b4a594b76e1|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -24671,7 +24670,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|72772d10debc4abd8373c0bc82985422|" +msgid "|35b60a1068f944ce937ac2988661aad5|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -24693,7 +24692,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|5815398552ad41d290a3a2631fe8f6ca|" +msgid "|efead7f2c2224b60b7b42705004c15e6|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -24709,7 +24708,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|e6ac20744bf149378be20ac3dc309356|" +msgid "|5421fee4e7ed450c903cbcd8a9d8a5d4|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -24725,7 +24724,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|a4011ef443c14725b15a8cf33b0e3443|" +msgid "|811fcf35e9214bd5b4e613e41f7c0a27|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -24740,7 +24739,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|a22faa3617404c06803731525e1c609f|" +msgid "|e61d38b0948f4c07a7257755f3799b54|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -24760,7 +24759,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|84a5c9b5041c43c3beab9786197c3e4e|" +msgid "|e82c29351e2e480087c61b939eb7c041|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -24775,7 +24774,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|b5c4be0b52d4493ba8c4af14d7c2db97|" +msgid "|21ca40f4fb1a405c89098fd1d24880a4|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -24915,7 +24914,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|c1c784183d18481186ff65dc261d1335|" +msgid "|1351a2629c2c46d981b13b19f9fa45f0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -24939,7 +24938,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|669fcd1f44ab42f5bbd196c3cf1ecbc2|" +msgid "|124c2c188b994c7ab1c862cfdb326923|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -24963,7 +24962,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|edfb08758c9441afb6736045a59e154c|" +msgid "|42e1951c36f2406e93c7ae0ec5b299f9|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -24986,7 +24985,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|82338b8bbad24d5ea9df3801aab37852|" +msgid "|ec637b8a84234d068995ee1ccb2dd3b1|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -25024,7 +25023,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|518d994dd2c844898b441da03b858326|" +msgid "|5bceb9d16b1a4d2db18d8a5b2f0cacb3|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -25118,7 +25117,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" +msgid "|502b10044e864ca2b15282a393ab7faf|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -37405,3 +37404,100 @@ msgstr "" #~ msgid "|4ab50bc01a9f426a91a2c0cbc3ab7a84|" #~ msgstr "" +#~ msgid "" +#~ "Until the Flower core library matures" +#~ " it will be easier to get PR's" +#~ " accepted if they only touch non-" +#~ "core areas of the codebase. Good " +#~ "candidates to get started are:" +#~ msgstr "" + +#~ msgid "Request for Flower Baselines" +#~ msgstr "" + +#~ msgid "" +#~ "If you are not familiar with " +#~ "Flower Baselines, you should probably " +#~ "check-out our `contributing guide for " +#~ "baselines `_." +#~ msgstr "" + +#~ msgid "" +#~ "You should then check out the open" +#~ " `issues " +#~ "`_" +#~ " for baseline requests. If you find" +#~ " a baseline that you'd like to " +#~ "work on and that has no assignees," +#~ " feel free to assign it to " +#~ "yourself and start working on it!" +#~ msgstr "" + +#~ msgid "" +#~ "Otherwise, if you don't find a " +#~ "baseline you'd like to work on, be" +#~ " sure to open a new issue with" +#~ " the baseline request template!" +#~ msgstr "" + +#~ msgid "Request for examples" +#~ msgstr "" + +#~ msgid "" +#~ "We wish we had more time to " +#~ "write usage examples because we believe" +#~ " they help users to get started " +#~ "with building what they want to " +#~ "build. Here are a few ideas where" +#~ " we'd be happy to accept a PR:" +#~ msgstr "" + +#~ msgid "Llama 2 fine-tuning, with Hugging Face Transformers and PyTorch" +#~ msgstr "" + +#~ msgid "Android ONNX on-device training" +#~ msgstr "" + +#~ msgid "|f150b8d6e0074250822c9f6f7a8de3e0|" +#~ msgstr "" + +#~ msgid "|72772d10debc4abd8373c0bc82985422|" +#~ msgstr "" + +#~ msgid "|5815398552ad41d290a3a2631fe8f6ca|" +#~ msgstr "" + +#~ msgid "|e6ac20744bf149378be20ac3dc309356|" +#~ msgstr "" + +#~ msgid "|a4011ef443c14725b15a8cf33b0e3443|" +#~ msgstr "" + +#~ msgid "|a22faa3617404c06803731525e1c609f|" +#~ msgstr "" + +#~ msgid "|84a5c9b5041c43c3beab9786197c3e4e|" +#~ msgstr "" + +#~ msgid "|b5c4be0b52d4493ba8c4af14d7c2db97|" +#~ msgstr "" + +#~ msgid "|c1c784183d18481186ff65dc261d1335|" +#~ msgstr "" + +#~ msgid "|669fcd1f44ab42f5bbd196c3cf1ecbc2|" +#~ msgstr "" + +#~ msgid "|edfb08758c9441afb6736045a59e154c|" +#~ msgstr "" + +#~ msgid "|82338b8bbad24d5ea9df3801aab37852|" +#~ msgstr "" + +#~ msgid "|518d994dd2c844898b441da03b858326|" +#~ msgstr "" + +#~ msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" +#~ msgstr "" + diff --git a/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po b/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po index 41c74779d83b..3b56d02c7503 100644 --- a/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po +++ b/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower main\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-28 00:32+0000\n" +"POT-Creation-Date: 2024-11-30 00:31+0000\n" "PO-Revision-Date: 2024-06-12 10:09+0000\n" "Last-Translator: Yan Gao \n" "Language: zh_Hans\n" @@ -1335,10 +1335,10 @@ msgid "Where to start" msgstr "从哪里开始" #: ../../source/contributor-ref-good-first-contributions.rst:11 +#, fuzzy msgid "" -"Until the Flower core library matures it will be easier to get PR's " -"accepted if they only touch non-core areas of the codebase. Good " -"candidates to get started are:" +"In general, it is easier to get PR's accepted if they only touch non-core" +" areas of the codebase. Good candidates to get started are:" msgstr "在 Flower 核心库成熟之前,如果 PR 只涉及代码库中的非核心区域,则会更容易被接受。可以从以下方面入手:" #: ../../source/contributor-ref-good-first-contributions.rst:14 @@ -1346,70 +1346,68 @@ msgid "Documentation: What's missing? What could be expressed more clearly?" msgstr "文档: 缺少什么?哪些内容可以表达得更清楚?" #: ../../source/contributor-ref-good-first-contributions.rst:15 +#, python-format +msgid "" +"Open issues: Issues with the tag `good first issue " +"`_." +msgstr "" + +#: ../../source/contributor-ref-good-first-contributions.rst:17 msgid "Baselines: See below." msgstr "Baselines: 见下文。" -#: ../../source/contributor-ref-good-first-contributions.rst:16 +#: ../../source/contributor-ref-good-first-contributions.rst:18 msgid "Examples: See below." msgstr "示例: 见下文。" -#: ../../source/contributor-ref-good-first-contributions.rst:19 -msgid "Request for Flower Baselines" -msgstr "Flower Baselines的申请" - #: ../../source/contributor-ref-good-first-contributions.rst:21 #, fuzzy +msgid "Flower Baselines" +msgstr "**更新 Flower Baselines**" + +#: ../../source/contributor-ref-good-first-contributions.rst:23 +#, fuzzy msgid "" -"If you are not familiar with Flower Baselines, you should probably check-" -"out our `contributing guide for baselines " -"`_." +"If you are not familiar with Flower Baselines, please check our " +"`contributing guide for baselines `_." msgstr "" "如果您对 Flower Baselines 还不熟悉,也许可以看看我们的 `Baselines贡献指南 " "`_。" -#: ../../source/contributor-ref-good-first-contributions.rst:25 +#: ../../source/contributor-ref-good-first-contributions.rst:26 #, fuzzy msgid "" -"You should then check out the open `issues " +"Then take a look at the open `issues " "`_" -" for baseline requests. If you find a baseline that you'd like to work on" -" and that has no assignees, feel free to assign it to yourself and start " -"working on it!" +" for baseline requests. If you find a baseline that you'd like to work " +"on, and it has no assignees, feel free to assign it to yourself and get " +"started!" msgstr "" "然后查看开放的 `issues " "`_" " baseline请求。如果您发现了自己想做的baseline,而它还没有被分配,请随时把它分配给自己,然后开始工作!" -#: ../../source/contributor-ref-good-first-contributions.rst:30 +#: ../../source/contributor-ref-good-first-contributions.rst:31 +#, fuzzy msgid "" -"Otherwise, if you don't find a baseline you'd like to work on, be sure to" -" open a new issue with the baseline request template!" +"If you don't find the baseline you'd like to work on, be sure to open a " +"new issue with the baseline request template!" msgstr "如果您没有找到想要做的baseline,请务必使用baseline请求模板打开一个新问题(GitHub issue)!" -#: ../../source/contributor-ref-good-first-contributions.rst:34 -msgid "Request for examples" -msgstr "示例请求" +#: ../../source/contributor-ref-good-first-contributions.rst:35 +#, fuzzy +msgid "Usage examples" +msgstr "实例" -#: ../../source/contributor-ref-good-first-contributions.rst:36 +#: ../../source/contributor-ref-good-first-contributions.rst:37 +#, fuzzy msgid "" -"We wish we had more time to write usage examples because we believe they " -"help users to get started with building what they want to build. Here are" -" a few ideas where we'd be happy to accept a PR:" +"We wish we had more time to write usage examples because they help users " +"to get started with building what they want. If you notice any missing " +"examples that could help others, feel free to contribute!" msgstr "我们希望有更多的时间来撰写使用示例,因为我们相信这些示例可以帮助用户开始构建他们想要的东西。以下是我们乐意接受 PR 的几个想法:" -#: ../../source/contributor-ref-good-first-contributions.rst:40 -msgid "Llama 2 fine-tuning, with Hugging Face Transformers and PyTorch" -msgstr "微调 Llama 2,使用 Hugging Face Transformers 和 PyTorch" - -#: ../../source/contributor-ref-good-first-contributions.rst:41 -#: ../../source/tutorial-quickstart-xgboost.rst:7 -msgid "XGBoost" -msgstr "XGBoost" - -#: ../../source/contributor-ref-good-first-contributions.rst:42 -msgid "Android ONNX on-device training" -msgstr "安卓 ONNX 设备上训练" - #: ../../source/contributor-ref-secure-aggregation-protocols.rst:2 msgid "Secure Aggregation Protocols" msgstr "安全聚合协议" @@ -27700,6 +27698,10 @@ msgstr "查看此联邦学习 快速入门教程,了解如何使用 Flower 和 msgid "Quickstart XGBoost" msgstr "XGBoost快速入门" +#: ../../source/tutorial-quickstart-xgboost.rst:7 +msgid "XGBoost" +msgstr "XGBoost" + #: ../../source/tutorial-quickstart-xgboost.rst:9 msgid "" "EXtreme Gradient Boosting (**XGBoost**) is a robust and efficient " @@ -29804,7 +29806,7 @@ msgid "" msgstr "在机器学习中,我们有一个模型和数据。模型可以是一个神经网络(如图所示),也可以是其他东西,比如经典的线性回归。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|f150b8d6e0074250822c9f6f7a8de3e0|" +msgid "|80152fa658904be08c849b4a594b76e1|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -29819,7 +29821,7 @@ msgid "" msgstr "我们使用数据来训练模型,以完成一项有用的任务。任务可以是检测图像中的物体、转录音频或玩围棋等游戏。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|72772d10debc4abd8373c0bc82985422|" +msgid "|35b60a1068f944ce937ac2988661aad5|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -29843,7 +29845,7 @@ msgid "" msgstr "它源于智能手机上用户与应用程序的交互、汽车上传感器数据的收集、笔记本电脑上键盘输入的接收,或者智能扬声器上某人试着唱的歌。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|5815398552ad41d290a3a2631fe8f6ca|" +msgid "|efead7f2c2224b60b7b42705004c15e6|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -29861,7 +29863,7 @@ msgstr "" "\"通常不只是一个地方,而是很多地方。它可能是多个运行同一应用程序的设备。但也可能是多个组织,都在为同一任务生成数据。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|e6ac20744bf149378be20ac3dc309356|" +msgid "|5421fee4e7ed450c903cbcd8a9d8a5d4|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -29878,7 +29880,7 @@ msgid "" msgstr "因此,要使用机器学习或任何类型的数据分析,过去使用的方法是在中央服务器上收集所有数据。这个服务器可以在数据中心的某个地方,也可以在云端的某个地方。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|a4011ef443c14725b15a8cf33b0e3443|" +msgid "|811fcf35e9214bd5b4e613e41f7c0a27|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -29893,7 +29895,7 @@ msgid "" msgstr "一旦所有数据都收集到一处,我们最终就可以使用机器学习算法在数据上训练我们的模型。这就是我们基本上一直依赖的机器学习方法。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|a22faa3617404c06803731525e1c609f|" +msgid "|e61d38b0948f4c07a7257755f3799b54|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -29914,7 +29916,7 @@ msgid "" msgstr "我们刚刚看到的经典机器学习方法可以在某些情况下使用。很好的例子包括对假日照片进行分类或分析网络流量。在这些案例中,所有数据自然都可以在中央服务器上获得。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|84a5c9b5041c43c3beab9786197c3e4e|" +msgid "|e82c29351e2e480087c61b939eb7c041|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -29929,7 +29931,7 @@ msgid "" msgstr "但这种方法并不适用于许多其他情况。例如,集中服务器上没有数据,或者一台服务器上的数据不足以训练出一个好的模型。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|b5c4be0b52d4493ba8c4af14d7c2db97|" +msgid "|21ca40f4fb1a405c89098fd1d24880a4|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -30089,7 +30091,7 @@ msgid "" msgstr "我们首先在服务器上初始化模型。这与经典的集中式学习完全相同:我们随机或从先前保存的检查点初始化模型参数。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|c1c784183d18481186ff65dc261d1335|" +msgid "|1351a2629c2c46d981b13b19f9fa45f0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -30114,7 +30116,7 @@ msgid "" msgstr "接下来,我们会将全局模型的参数发送到连接的客户端节点(如智能手机等边缘设备或企业的服务器)。这是为了确保每个参与节点都使用相同的模型参数开始本地训练。我们通常只使用几个连接节点,而不是所有节点。这样做的原因是,选择越来越多的客户端节点会导致收益递减。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|669fcd1f44ab42f5bbd196c3cf1ecbc2|" +msgid "|124c2c188b994c7ab1c862cfdb326923|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -30140,7 +30142,7 @@ msgstr "" "(mini-batches)。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|edfb08758c9441afb6736045a59e154c|" +msgid "|42e1951c36f2406e93c7ae0ec5b299f9|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -30163,7 +30165,7 @@ msgid "" msgstr "经过本地训练后,每个客户节点最初收到的模型参数都会略有不同。参数之所以不同,是因为每个客户端节点的本地数据集中都有不同的数据。然后,客户端节点将这些模型更新发回服务器。它们发送的模型更新既可以是完整的模型参数,也可以只是本地训练过程中积累的梯度。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|82338b8bbad24d5ea9df3801aab37852|" +msgid "|ec637b8a84234d068995ee1ccb2dd3b1|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -30210,7 +30212,7 @@ msgstr "" " 100 个示例的 10 倍。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|518d994dd2c844898b441da03b858326|" +msgid "|5bceb9d16b1a4d2db18d8a5b2f0cacb3|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -30318,7 +30320,7 @@ msgstr "" "为联邦学习、分析和评估提供了一种统一的方法。它允许用户联邦化任何工作负载、任何 ML 框架和任何编程语言。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" +msgid "|502b10044e864ca2b15282a393ab7faf|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -37769,3 +37771,57 @@ msgstr "" #~ msgid "|4ab50bc01a9f426a91a2c0cbc3ab7a84|" #~ msgstr "" +#~ msgid "Request for Flower Baselines" +#~ msgstr "Flower Baselines的申请" + +#~ msgid "Request for examples" +#~ msgstr "示例请求" + +#~ msgid "Llama 2 fine-tuning, with Hugging Face Transformers and PyTorch" +#~ msgstr "微调 Llama 2,使用 Hugging Face Transformers 和 PyTorch" + +#~ msgid "Android ONNX on-device training" +#~ msgstr "安卓 ONNX 设备上训练" + +#~ msgid "|f150b8d6e0074250822c9f6f7a8de3e0|" +#~ msgstr "" + +#~ msgid "|72772d10debc4abd8373c0bc82985422|" +#~ msgstr "" + +#~ msgid "|5815398552ad41d290a3a2631fe8f6ca|" +#~ msgstr "" + +#~ msgid "|e6ac20744bf149378be20ac3dc309356|" +#~ msgstr "" + +#~ msgid "|a4011ef443c14725b15a8cf33b0e3443|" +#~ msgstr "" + +#~ msgid "|a22faa3617404c06803731525e1c609f|" +#~ msgstr "" + +#~ msgid "|84a5c9b5041c43c3beab9786197c3e4e|" +#~ msgstr "" + +#~ msgid "|b5c4be0b52d4493ba8c4af14d7c2db97|" +#~ msgstr "" + +#~ msgid "|c1c784183d18481186ff65dc261d1335|" +#~ msgstr "" + +#~ msgid "|669fcd1f44ab42f5bbd196c3cf1ecbc2|" +#~ msgstr "" + +#~ msgid "|edfb08758c9441afb6736045a59e154c|" +#~ msgstr "" + +#~ msgid "|82338b8bbad24d5ea9df3801aab37852|" +#~ msgstr "" + +#~ msgid "|518d994dd2c844898b441da03b858326|" +#~ msgstr "" + +#~ msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" +#~ msgstr "" + From 07c11ecc95c5b5a8ac3a6fd7561a1539fc3d2f2c Mon Sep 17 00:00:00 2001 From: Javier Date: Sat, 30 Nov 2024 14:41:14 +0000 Subject: [PATCH 008/104] fix(framework) Pass state factory instead of state object to `AuthenticateServerInterceptor` (#4605) --- src/py/flwr/server/app.py | 2 +- .../fleet/grpc_rere/server_interceptor.py | 23 ++++++++++--------- .../grpc_rere/server_interceptor_test.py | 2 +- .../superlink/linkstate/sqlite_linkstate.py | 3 --- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/py/flwr/server/app.py b/src/py/flwr/server/app.py index a648d3e41bd6..508f2dfc9685 100644 --- a/src/py/flwr/server/app.py +++ b/src/py/flwr/server/app.py @@ -360,7 +360,7 @@ def run_superlink() -> None: "Node authentication enabled with %d known public keys", len(node_public_keys), ) - interceptors = [AuthenticateServerInterceptor(state)] + interceptors = [AuthenticateServerInterceptor(state_factory)] fleet_server = _run_fleet_api_grpc_rere( address=fleet_address, diff --git a/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py b/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py index 2e7623c34241..c07ee0788493 100644 --- a/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +++ b/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py @@ -45,7 +45,7 @@ ) from flwr.proto.node_pb2 import Node # pylint: disable=E0611 from flwr.proto.run_pb2 import GetRunRequest, GetRunResponse # pylint: disable=E0611 -from flwr.server.superlink.linkstate import LinkState +from flwr.server.superlink.linkstate import LinkStateFactory _PUBLIC_KEY_HEADER = "public-key" _AUTH_TOKEN_HEADER = "auth-token" @@ -84,15 +84,16 @@ def _get_value_from_tuples( class AuthenticateServerInterceptor(grpc.ServerInterceptor): # type: ignore """Server interceptor for node authentication.""" - def __init__(self, state: LinkState): - self.state = state + def __init__(self, state_factory: LinkStateFactory): + self.state_factory = state_factory + state = self.state_factory.state() self.node_public_keys = state.get_node_public_keys() if len(self.node_public_keys) == 0: log(WARNING, "Authentication enabled, but no known public keys configured") - private_key = self.state.get_server_private_key() - public_key = self.state.get_server_public_key() + private_key = state.get_server_private_key() + public_key = state.get_server_public_key() if private_key is None or public_key is None: raise ValueError("Error loading authentication keys") @@ -154,7 +155,7 @@ def _generic_method_handler( context.abort(grpc.StatusCode.UNAUTHENTICATED, "Access denied") # Verify node_id - node_id = self.state.get_node_id(node_public_key_bytes) + node_id = self.state_factory.state().get_node_id(node_public_key_bytes) if not self._verify_node_id(node_id, request): context.abort(grpc.StatusCode.UNAUTHENTICATED, "Access denied") @@ -186,7 +187,7 @@ def _verify_node_id( return False return request.task_res_list[0].task.producer.node_id == node_id if isinstance(request, GetRunRequest): - return node_id in self.state.get_nodes(request.run_id) + return node_id in self.state_factory.state().get_nodes(request.run_id) return request.node.node_id == node_id def _verify_hmac( @@ -210,17 +211,17 @@ def _create_authenticated_node( ), ) ) - - node_id = self.state.get_node_id(public_key_bytes) + state = self.state_factory.state() + node_id = state.get_node_id(public_key_bytes) # Handle `CreateNode` here instead of calling the default method handler # Return previously assigned `node_id` for the provided `public_key` if node_id is not None: - self.state.acknowledge_ping(node_id, request.ping_interval) + state.acknowledge_ping(node_id, request.ping_interval) return CreateNodeResponse(node=Node(node_id=node_id, anonymous=False)) # No `node_id` exists for the provided `public_key` # Handle `CreateNode` here instead of calling the default method handler # Note: the innermost `CreateNode` method will never be called - node_id = self.state.create_node(request.ping_interval, public_key_bytes) + node_id = state.create_node(request.ping_interval, public_key_bytes) return CreateNodeResponse(node=Node(node_id=node_id, anonymous=False)) diff --git a/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor_test.py b/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor_test.py index fe6f0540e280..ce43fc4bae0a 100644 --- a/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor_test.py +++ b/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor_test.py @@ -73,7 +73,7 @@ def setUp(self) -> None: ) self.state.store_node_public_keys({public_key_to_bytes(self._node_public_key)}) - self._server_interceptor = AuthenticateServerInterceptor(self.state) + self._server_interceptor = AuthenticateServerInterceptor(state_factory) self._server: grpc.Server = _run_fleet_api_grpc_rere( FLEET_API_GRPC_RERE_DEFAULT_ADDRESS, state_factory, diff --git a/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py b/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py index cf5f4e8f8f49..54df4685bf9a 100644 --- a/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +++ b/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py @@ -19,7 +19,6 @@ import json import re import sqlite3 -import threading import time from collections.abc import Sequence from logging import DEBUG, ERROR, WARNING @@ -183,7 +182,6 @@ def __init__( """ self.database_path = database_path self.conn: Optional[sqlite3.Connection] = None - self.lock = threading.RLock() def initialize(self, log_queries: bool = False) -> list[tuple[str]]: """Create tables if they don't exist yet. @@ -216,7 +214,6 @@ def initialize(self, log_queries: bool = False) -> list[tuple[str]]: cur.execute(SQL_CREATE_TABLE_PUBLIC_KEY) cur.execute(SQL_CREATE_INDEX_ONLINE_UNTIL) res = cur.execute("SELECT name FROM sqlite_schema;") - return res.fetchall() def query( From ae9ec5b58638f93745e5311a62d766e5f33b9dd7 Mon Sep 17 00:00:00 2001 From: Robert Steiner Date: Mon, 2 Dec 2024 09:23:18 +0100 Subject: [PATCH 009/104] docs(framework:skip) Add flwr 1.13.1 to docker READMEs (#4603) Signed-off-by: Robert Steiner --- src/docker/base/README.md | 10 +++++++++- src/docker/clientapp/README.md | 5 ++++- src/docker/serverapp/README.md | 5 ++++- src/docker/superlink/README.md | 4 +++- src/docker/supernode/README.md | 6 +++++- 5 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/docker/base/README.md b/src/docker/base/README.md index ef290a26fec4..9cf31ec0d048 100644 --- a/src/docker/base/README.md +++ b/src/docker/base/README.md @@ -21,8 +21,16 @@ - `unstable` - points to the last successful build of the `main` branch -- `nightly`, `.dev` e.g. `1.13.0.dev20241014` +- `nightly`, `.dev` e.g. `1.14.0.dev20241128` - uses Python 3.11 and Ubuntu 24.04 +- `1.13.1-py3.11-alpine3.19` +- `1.13.1-py3.11-ubuntu24.04` +- `1.13.1-py3.10-ubuntu24.04` +- `1.13.1-py3.9-ubuntu24.04` +- `1.13.0-py3.11-alpine3.19` +- `1.13.0-py3.11-ubuntu24.04` +- `1.13.0-py3.10-ubuntu24.04` +- `1.13.0-py3.9-ubuntu24.04` - `1.12.0-py3.11-alpine3.19` - `1.12.0-py3.11-ubuntu24.04` - `1.12.0-py3.10-ubuntu24.04` diff --git a/src/docker/clientapp/README.md b/src/docker/clientapp/README.md index e2f6f35d1769..e41abeb6dde8 100644 --- a/src/docker/clientapp/README.md +++ b/src/docker/clientapp/README.md @@ -21,8 +21,11 @@ - `unstable` - points to the last successful build of the `main` branch -- `nightly`, `.dev` e.g. `1.14.0.dev20241120` +- `nightly`, `.dev` e.g. `1.14.0.dev20241128` - uses Python 3.11 and Ubuntu 24.04 +- `1.13.1`, `1.13.1-py3.11-ubuntu24.04` +- `1.13.1-py3.10-ubuntu24.04` +- `1.13.1-py3.9-ubuntu24.04` - `1.13.0`, `1.13.0-py3.11-ubuntu24.04` - `1.13.0-py3.10-ubuntu24.04` - `1.13.0-py3.9-ubuntu24.04` diff --git a/src/docker/serverapp/README.md b/src/docker/serverapp/README.md index bcba0f3ef889..e2dad5ee8c56 100644 --- a/src/docker/serverapp/README.md +++ b/src/docker/serverapp/README.md @@ -21,8 +21,11 @@ - `unstable` - points to the last successful build of the `main` branch -- `nightly`, `.dev` e.g. `1.14.0.dev20241120` +- `nightly`, `.dev` e.g. `1.14.0.dev20241128` - uses Python 3.11 and Ubuntu 24.04 +- `1.13.1`, `1.13.1-py3.11-ubuntu24.04` +- `1.13.1-py3.10-ubuntu24.04` +- `1.13.1-py3.9-ubuntu24.04` - `1.13.0`, `1.13.0-py3.11-ubuntu24.04` - `1.13.0-py3.10-ubuntu24.04` - `1.13.0-py3.9-ubuntu24.04` diff --git a/src/docker/superlink/README.md b/src/docker/superlink/README.md index 444003964a6b..47827ba6c0ef 100644 --- a/src/docker/superlink/README.md +++ b/src/docker/superlink/README.md @@ -21,8 +21,10 @@ - `unstable` - points to the last successful build of the `main` branch -- `nightly`, `.dev` e.g. `1.14.0.dev20241120` +- `nightly`, `.dev` e.g. `1.14.0.dev20241128` - uses Python 3.11 and Ubuntu 24.04 +- `1.13.1`, `1.13.1-py3.11-alpine3.19` +- `1.13.1-py3.11-ubuntu24.04` - `1.13.0`, `1.13.0-py3.11-alpine3.19` - `1.13.0-py3.11-ubuntu24.04` - `1.12.0`, `1.12.0-py3.11-alpine3.19` diff --git a/src/docker/supernode/README.md b/src/docker/supernode/README.md index c6b207ffe7cf..69e5c69e1bec 100644 --- a/src/docker/supernode/README.md +++ b/src/docker/supernode/README.md @@ -21,8 +21,12 @@ - `unstable` - points to the last successful build of the `main` branch -- `nightly`, `.dev` e.g. `1.14.0.dev20241120` +- `nightly`, `.dev` e.g. `1.14.0.dev20241128` - uses Python 3.11 and Ubuntu 24.04 +- `1.13.1`, `1.13.1-py3.11-alpine3.19` +- `1.13.1-py3.11-ubuntu24.04` +- `1.13.1-py3.10-ubuntu24.04` +- `1.13.1-py3.9-ubuntu24.04` - `1.13.0`, `1.13.0-py3.11-alpine3.19` - `1.13.0-py3.11-ubuntu24.04` - `1.13.0-py3.10-ubuntu24.04` From b440227f1f922347712974db10936a270422c8c4 Mon Sep 17 00:00:00 2001 From: Taner Topal Date: Mon, 2 Dec 2024 14:00:15 +0100 Subject: [PATCH 010/104] (framework:skip) Update .gitignore (#4614) --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 4c52fa332037..96789cbf6e00 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,9 @@ examples/**/dataset/** # Flower Baselines baselines/datasets/leaf +# Exclude ee package +src/py/flwr/ee + # macOS .DS_Store From 29d0181385abd9a04ae30d1a8ae44a84c44a1f39 Mon Sep 17 00:00:00 2001 From: Yan Gao Date: Tue, 3 Dec 2024 23:42:14 +0800 Subject: [PATCH 011/104] Update eval readmes (#4623) --- benchmarks/flowertune-llm/evaluation/finance/README.md | 1 + benchmarks/flowertune-llm/evaluation/general-nlp/README.md | 1 + benchmarks/flowertune-llm/evaluation/medical/README.md | 1 + 3 files changed, 3 insertions(+) diff --git a/benchmarks/flowertune-llm/evaluation/finance/README.md b/benchmarks/flowertune-llm/evaluation/finance/README.md index b5595433a238..15d2410b8ca4 100644 --- a/benchmarks/flowertune-llm/evaluation/finance/README.md +++ b/benchmarks/flowertune-llm/evaluation/finance/README.md @@ -27,6 +27,7 @@ huggingface-cli login ```bash python eval.py \ +--base-model-name-path=your-base-model-name \ # e.g., mistralai/Mistral-7B-v0.3 --peft-path=/path/to/fine-tuned-peft-model-dir/ \ # e.g., ./peft_1 --run-name=fl \ # specified name for this run --batch-size=32 \ diff --git a/benchmarks/flowertune-llm/evaluation/general-nlp/README.md b/benchmarks/flowertune-llm/evaluation/general-nlp/README.md index c3fd71da6ea2..5acd75285dd3 100644 --- a/benchmarks/flowertune-llm/evaluation/general-nlp/README.md +++ b/benchmarks/flowertune-llm/evaluation/general-nlp/README.md @@ -27,6 +27,7 @@ huggingface-cli login ```bash python eval.py \ +--base-model-name-path=your-base-model-name \ # e.g., mistralai/Mistral-7B-v0.3 --peft-path=/path/to/fine-tuned-peft-model-dir/ \ # e.g., ./peft_1 --run-name=fl \ # specified name for this run --batch-size=16 \ diff --git a/benchmarks/flowertune-llm/evaluation/medical/README.md b/benchmarks/flowertune-llm/evaluation/medical/README.md index 628489ce8de6..6a519e8a7c54 100644 --- a/benchmarks/flowertune-llm/evaluation/medical/README.md +++ b/benchmarks/flowertune-llm/evaluation/medical/README.md @@ -27,6 +27,7 @@ huggingface-cli login ```bash python eval.py \ +--base-model-name-path=your-base-model-name \ # e.g., mistralai/Mistral-7B-v0.3 --peft-path=/path/to/fine-tuned-peft-model-dir/ \ # e.g., ./peft_1 --run-name=fl \ # specified name for this run --batch-size=16 \ From b57e9e7817edc166a5075cbe689b22f9d4279d72 Mon Sep 17 00:00:00 2001 From: niconepo Date: Wed, 4 Dec 2024 09:26:17 +0100 Subject: [PATCH 012/104] fix minor typos (#4624) --- datasets/doc/source/index.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/datasets/doc/source/index.rst b/datasets/doc/source/index.rst index 422d93582a02..55e4ea963453 100644 --- a/datasets/doc/source/index.rst +++ b/datasets/doc/source/index.rst @@ -78,13 +78,13 @@ Main features Flower Datasets library supports: - **Downloading datasets** - choose the dataset from Hugging Face's ``dataset`` (`link `_)(*) -- **Partitioning datasets** - choose one of the implemented partitioning scheme or create your own. +- **Partitioning datasets** - choose one of the implemented partitioning schemes or create your own. - **Creating centralized datasets** - leave parts of the dataset unpartitioned (e.g. for centralized evaluation) - **Visualization of the partitioned datasets** - visualize the label distribution of the partitioned dataset (and compare the results on different parameters of the same partitioning schemes, different datasets, different partitioning schemes, or any mix of them) .. note:: - (*) Once the dataset is available on HuggingFace Hub it can be **immediately** used in ``Flower Datasets`` (no approval from the Flower team needed, no custom code needed). + (*) Once the dataset is available on HuggingFace Hub, it can be **immediately** used in ``Flower Datasets`` without requiring approval from the Flower team or the need for custom code. .. image:: ./_static/readme/comparison_of_partitioning_schemes.png @@ -101,7 +101,7 @@ Thanks to using Hugging Face's ``datasets`` used under the hood, Flower Datasets - Jax - Arrow -Here are a few of the ``Partitioner`` s that are available: (for a full list see `link `_ ) +Here are a few of the ``Partitioners`` that are available: (for a full list see `link `_ ) * Partitioner (the abstract base class) ``Partitioner`` * IID partitioning ``IidPartitioner(num_partitions)`` @@ -127,7 +127,7 @@ What makes Flower Datasets stand out from other libraries? * Access to the largest online repository of datasets: - * The library functionality is independent of the dataset, so you can use any dataset available on `🤗Hugging Face Datasets `_, which means that others can immediately benefit from the dataset you added. + * The library functionality is independent of the dataset, so you can use any dataset available on `🤗Hugging Face Datasets `_. This means that others can immediately benefit from the dataset you added. * Out-of-the-box reproducibility across different projects. From 93d6ae417a69d4671e0af4194dc6f5ea78ef21a5 Mon Sep 17 00:00:00 2001 From: Adam Narozniak <51029327+adam-narozniak@users.noreply.github.com> Date: Wed, 4 Dec 2024 09:59:56 +0100 Subject: [PATCH 013/104] feat(datasets) Add a check for same object partitioners (#4335) Co-authored-by: jafermarq --- datasets/flwr_datasets/federated_dataset.py | 18 +++++++ .../flwr_datasets/federated_dataset_test.py | 52 +++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/datasets/flwr_datasets/federated_dataset.py b/datasets/flwr_datasets/federated_dataset.py index 72ea54773564..8659aa03313b 100644 --- a/datasets/flwr_datasets/federated_dataset.py +++ b/datasets/flwr_datasets/federated_dataset.py @@ -128,6 +128,7 @@ def __init__( self._partitioners: Dict[str, Partitioner] = _instantiate_partitioners( partitioners ) + self._check_partitioners_correctness() self._shuffle = shuffle self._seed = seed # _dataset is prepared lazily on the first call to `load_partition` @@ -336,3 +337,20 @@ def _check_if_no_split_keyword_possible(self) -> None: "Please set the `split` argument. You can only omit the split keyword " "if there is exactly one partitioner specified." ) + + def _check_partitioners_correctness(self) -> None: + """Check if the partitioners are correctly specified. + + Check if each partitioner is a different Python object. Using the same + partitioner for different splits is not allowed. + """ + partitioners_keys = list(self._partitioners.keys()) + for i, first_split in enumerate(partitioners_keys): + for j in range(i + 1, len(partitioners_keys)): + second_split = partitioners_keys[j] + if self._partitioners[first_split] is self._partitioners[second_split]: + raise ValueError( + f"The same partitioner object is used for multiple splits: " + f"('{first_split}', '{second_split}'). " + "Each partitioner should be a separate object." + ) diff --git a/datasets/flwr_datasets/federated_dataset_test.py b/datasets/flwr_datasets/federated_dataset_test.py index bbdfa42292c2..6c12ee0e2e1a 100644 --- a/datasets/flwr_datasets/federated_dataset_test.py +++ b/datasets/flwr_datasets/federated_dataset_test.py @@ -32,6 +32,7 @@ _load_mocked_dataset_dict_by_partial_download, ) from flwr_datasets.partitioner import IidPartitioner, NaturalIdPartitioner, Partitioner +from flwr_datasets.preprocessor.divider import Divider mocked_datasets = ["cifar100", "svhn", "sentiment140", "speech_commands"] @@ -568,6 +569,57 @@ def test_use_load_dataset_kwargs(self) -> None: with self.assertRaises(ValueError): _ = fds.load_partition(0) + def test_incorrect_two_partitioners(self) -> None: + """Test if the method raises ValueError with incorrect partitioners.""" + partitioner = IidPartitioner(num_partitions=10) + partitioners: dict[str, Union[Partitioner, int]] = { + "train": partitioner, + "test": partitioner, + } + first_split = "train" + second_split = "test" + with self.assertRaises(ValueError) as context: + FederatedDataset( + dataset="mnist", + partitioners=partitioners, + ) + self.assertIn( + f"The same partitioner object is used for multiple splits: " + f"('{first_split}', '{second_split}'). " + "Each partitioner should be a separate object.", + str(context.exception), + ) + + def test_incorrect_three_partitioners(self) -> None: + """Test if the method raises ValueError with incorrect partitioners.""" + partitioner = IidPartitioner(num_partitions=10) + partitioners: dict[str, Union[int, Partitioner]] = { + "train1": partitioner, + "train2": 10, + "test": partitioner, + } + divider = Divider( + divide_config={ + "train1": 0.5, + "train2": 0.5, + }, + divide_split="train", + ) + + with self.assertRaises( + ValueError, + ) as context: + + FederatedDataset( + dataset="mnist", partitioners=partitioners, preprocessor=divider + ) + + self.assertIn( + "The same partitioner object is used for multiple splits: " + "('train1', 'test'). Each partitioner should be a separate object.", + str(context.exception), + ) + def datasets_are_equal(ds1: Dataset, ds2: Dataset) -> bool: """Check if two Datasets have the same values.""" From d8b00b36f5723bf50adf9b1ef630cb7974312482 Mon Sep 17 00:00:00 2001 From: Adam Narozniak <51029327+adam-narozniak@users.noreply.github.com> Date: Wed, 4 Dec 2024 11:51:47 +0100 Subject: [PATCH 014/104] docs(datasets) Add recommended datasets list to index (#4627) Co-authored-by: jafermarq --- datasets/doc/source/index.rst | 14 ++ .../source/recommended-fl-datasets-tables.rst | 153 +++++++++++++++++ .../doc/source/recommended-fl-datasets.rst | 155 +----------------- 3 files changed, 169 insertions(+), 153 deletions(-) create mode 100644 datasets/doc/source/recommended-fl-datasets-tables.rst diff --git a/datasets/doc/source/index.rst b/datasets/doc/source/index.rst index 55e4ea963453..4137f5f2e148 100644 --- a/datasets/doc/source/index.rst +++ b/datasets/doc/source/index.rst @@ -154,6 +154,20 @@ The Flower Community is growing quickly - we're a friendly group of researchers, Join us on Slack +Recommended FL Datasets +----------------------- + +Below we present a list of recommended datasets for federated learning research, which can be +used with Flower Datasets ``flwr-datasets``. + +.. note:: + + All datasets from `HuggingFace Hub `_ can be used with our library. This page presents just a set of datasets we collected that you might find useful. + +For more information about any dataset, visit its page by clicking the dataset name. + +.. include:: recommended-fl-datasets-tables.rst + .. _demo: Demo ---- diff --git a/datasets/doc/source/recommended-fl-datasets-tables.rst b/datasets/doc/source/recommended-fl-datasets-tables.rst new file mode 100644 index 000000000000..f69025426d47 --- /dev/null +++ b/datasets/doc/source/recommended-fl-datasets-tables.rst @@ -0,0 +1,153 @@ +Image Datasets +~~~~~~~~~~~~~~ + +.. list-table:: Image Datasets + :widths: 40 40 20 + :header-rows: 1 + + * - Name + - Size + - Image Shape + * - `ylecun/mnist `_ + - train 60k; + test 10k + - 28x28 + * - `uoft-cs/cifar10 `_ + - train 50k; + test 10k + - 32x32x3 + * - `uoft-cs/cifar100 `_ + - train 50k; + test 10k + - 32x32x3 + * - `zalando-datasets/fashion_mnist `_ + - train 60k; + test 10k + - 28x28 + * - `flwrlabs/femnist `_ + - train 814k + - 28x28 + * - `zh-plus/tiny-imagenet `_ + - train 100k; + valid 10k + - 64x64x3 + * - `flwrlabs/usps `_ + - train 7.3k; + test 2k + - 16x16 + * - `flwrlabs/pacs `_ + - train 10k + - 227x227 + * - `flwrlabs/cinic10 `_ + - train 90k; + valid 90k; + test 90k + - 32x32x3 + * - `flwrlabs/caltech101 `_ + - train 8.7k + - varies + * - `flwrlabs/office-home `_ + - train 15.6k + - varies + * - `flwrlabs/fed-isic2019 `_ + - train 18.6k; + test 4.7k + - varies + * - `ufldl-stanford/svhn `_ + - train 73.3k; + test 26k; + extra 531k + - 32x32x3 + * - `sasha/dog-food `_ + - train 2.1k; + test 0.9k + - varies + * - `Mike0307/MNIST-M `_ + - train 59k; + test 9k + - 32x32 + +Audio Datasets +~~~~~~~~~~~~~~ + +.. list-table:: Audio Datasets + :widths: 35 30 15 + :header-rows: 1 + + * - Name + - Size + - Subset + * - `google/speech_commands `_ + - train 64.7k + - v0.01 + * - `google/speech_commands `_ + - train 105.8k + - v0.02 + * - `flwrlabs/ambient-acoustic-context `_ + - train 70.3k + - + * - `fixie-ai/common_voice_17_0 `_ + - varies + - 14 versions + * - `fixie-ai/librispeech_asr `_ + - varies + - clean/other + +Tabular Datasets +~~~~~~~~~~~~~~~~ + + +.. list-table:: Tabular Datasets + :widths: 35 30 + :header-rows: 1 + + * - Name + - Size + * - `scikit-learn/adult-census-income `_ + - train 32.6k + * - `jlh/uci-mushrooms `_ + - train 8.1k + * - `scikit-learn/iris `_ + - train 150 + +Text Datasets +~~~~~~~~~~~~~ + +.. list-table:: Text Datasets + :widths: 40 30 30 + :header-rows: 1 + + * - Name + - Size + - Category + * - `sentiment140 `_ + - train 1.6M; + test 0.5k + - Sentiment + * - `google-research-datasets/mbpp `_ + - full 974; sanitized 427 + - General + * - `openai/openai_humaneval `_ + - test 164 + - General + * - `lukaemon/mmlu `_ + - varies + - General + * - `takala/financial_phrasebank `_ + - train 4.8k + - Financial + * - `pauri32/fiqa-2018 `_ + - train 0.9k; validation 0.1k; test 0.2k + - Financial + * - `zeroshot/twitter-financial-news-sentiment `_ + - train 9.5k; validation 2.4k + - Financial + * - `bigbio/pubmed_qa `_ + - train 2M; validation 11k + - Medical + * - `openlifescienceai/medmcqa `_ + - train 183k; validation 4.3k; test 6.2k + - Medical + * - `bigbio/med_qa `_ + - train 10.1k; test 1.3k; validation 1.3k + - Medical diff --git a/datasets/doc/source/recommended-fl-datasets.rst b/datasets/doc/source/recommended-fl-datasets.rst index 92479bd0542a..21b47d0d257f 100644 --- a/datasets/doc/source/recommended-fl-datasets.rst +++ b/datasets/doc/source/recommended-fl-datasets.rst @@ -11,157 +11,6 @@ see the full FL example with Flower and Flower Datasets open the `quickstart-pyt All datasets from `HuggingFace Hub `_ can be used with our library. This page presents just a set of datasets we collected that you might find useful. -For more information about any dataset, visit its page by clicking the dataset name. For more information how to use the +For more information about any dataset, visit its page by clicking the dataset name. -Image Datasets --------------- - -.. list-table:: Image Datasets - :widths: 40 40 20 - :header-rows: 1 - - * - Name - - Size - - Image Shape - * - `ylecun/mnist `_ - - train 60k; - test 10k - - 28x28 - * - `uoft-cs/cifar10 `_ - - train 50k; - test 10k - - 32x32x3 - * - `uoft-cs/cifar100 `_ - - train 50k; - test 10k - - 32x32x3 - * - `zalando-datasets/fashion_mnist `_ - - train 60k; - test 10k - - 28x28 - * - `flwrlabs/femnist `_ - - train 814k - - 28x28 - * - `zh-plus/tiny-imagenet `_ - - train 100k; - valid 10k - - 64x64x3 - * - `flwrlabs/usps `_ - - train 7.3k; - test 2k - - 16x16 - * - `flwrlabs/pacs `_ - - train 10k - - 227x227 - * - `flwrlabs/cinic10 `_ - - train 90k; - valid 90k; - test 90k - - 32x32x3 - * - `flwrlabs/caltech101 `_ - - train 8.7k - - varies - * - `flwrlabs/office-home `_ - - train 15.6k - - varies - * - `flwrlabs/fed-isic2019 `_ - - train 18.6k; - test 4.7k - - varies - * - `ufldl-stanford/svhn `_ - - train 73.3k; - test 26k; - extra 531k - - 32x32x3 - * - `sasha/dog-food `_ - - train 2.1k; - test 0.9k - - varies - * - `Mike0307/MNIST-M `_ - - train 59k; - test 9k - - 32x32 - -Audio Datasets --------------- - -.. list-table:: Audio Datasets - :widths: 35 30 15 - :header-rows: 1 - - * - Name - - Size - - Subset - * - `google/speech_commands `_ - - train 64.7k - - v0.01 - * - `google/speech_commands `_ - - train 105.8k - - v0.02 - * - `flwrlabs/ambient-acoustic-context `_ - - train 70.3k - - - * - `fixie-ai/common_voice_17_0 `_ - - varies - - 14 versions - * - `fixie-ai/librispeech_asr `_ - - varies - - clean/other - -Tabular Datasets ----------------- - -.. list-table:: Tabular Datasets - :widths: 35 30 - :header-rows: 1 - - * - Name - - Size - * - `scikit-learn/adult-census-income `_ - - train 32.6k - * - `jlh/uci-mushrooms `_ - - train 8.1k - * - `scikit-learn/iris `_ - - train 150 - -Text Datasets -------------- - -.. list-table:: Text Datasets - :widths: 40 30 30 - :header-rows: 1 - - * - Name - - Size - - Category - * - `sentiment140 `_ - - train 1.6M; - test 0.5k - - Sentiment - * - `google-research-datasets/mbpp `_ - - full 974; sanitized 427 - - General - * - `openai/openai_humaneval `_ - - test 164 - - General - * - `lukaemon/mmlu `_ - - varies - - General - * - `takala/financial_phrasebank `_ - - train 4.8k - - Financial - * - `pauri32/fiqa-2018 `_ - - train 0.9k; validation 0.1k; test 0.2k - - Financial - * - `zeroshot/twitter-financial-news-sentiment `_ - - train 9.5k; validation 2.4k - - Financial - * - `bigbio/pubmed_qa `_ - - train 2M; validation 11k - - Medical - * - `openlifescienceai/medmcqa `_ - - train 183k; validation 4.3k; test 6.2k - - Medical - * - `bigbio/med_qa `_ - - train 10.1k; test 1.3k; validation 1.3k - - Medical +.. include:: recommended-fl-datasets-tables.rst \ No newline at end of file From a97702b1d12ee556c05a5cdc287f4d96217d5dfc Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Wed, 4 Dec 2024 11:03:34 +0000 Subject: [PATCH 015/104] feat(framework) Refactor `flwr ls` table formatter (#4611) --- src/py/flwr/cli/ls.py | 71 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/src/py/flwr/cli/ls.py b/src/py/flwr/cli/ls.py index 54173f5f6018..f49dc3e25099 100644 --- a/src/py/flwr/cli/ls.py +++ b/src/py/flwr/cli/ls.py @@ -139,13 +139,15 @@ def _init_channel(app: Path, federation_config: dict[str, Any]) -> grpc.Channel: return channel -def _format_run_table(run_dict: dict[int, Run], now_isoformat: str) -> Table: - """Format run status as a rich Table.""" +def _format_runs(run_dict: dict[int, Run], now_isoformat: str) -> list[tuple[str, ...]]: + """Format runs to a list.""" table = Table(header_style="bold cyan", show_lines=True) def _format_datetime(dt: Optional[datetime]) -> str: return isoformat8601_utc(dt).replace("T", " ") if dt else "N/A" + run_list: list[tuple[str, ...]] = [] + # Add columns table.add_column( Text("Run ID", justify="center"), style="bright_white", overflow="fold" @@ -192,15 +194,60 @@ def _format_datetime(dt: Optional[datetime]) -> str: end_time = datetime.fromisoformat(now_isoformat) elapsed_time = end_time - running_at - table.add_row( - f"[bold]{run.run_id}[/bold]", - f"{run.fab_id} (v{run.fab_version})", - f"[{status_style}]{status_text}[/{status_style}]", - format_timedelta(elapsed_time), - _format_datetime(pending_at), - _format_datetime(running_at), - _format_datetime(finished_at), + run_list.append( + ( + f"{run.run_id}", + f"{run.fab_id}", + f"{run.fab_version}", + f"{run.fab_hash}", + f"[{status_style}]{status_text}[/{status_style}]", + format_timedelta(elapsed_time), + _format_datetime(pending_at), + _format_datetime(running_at), + _format_datetime(finished_at), + ) ) + return run_list + + +def _to_table(run_list: list[tuple[str, ...]]) -> Table: + """Format the provided run list to a rich Table.""" + table = Table(header_style="bold cyan", show_lines=True) + + # Add columns + table.add_column( + Text("Run ID", justify="center"), style="bright_white", overflow="fold" + ) + table.add_column(Text("FAB", justify="center"), style="dim white") + table.add_column(Text("Status", justify="center")) + table.add_column(Text("Elapsed", justify="center"), style="blue") + table.add_column(Text("Created At", justify="center"), style="dim white") + table.add_column(Text("Running At", justify="center"), style="dim white") + table.add_column(Text("Finished At", justify="center"), style="dim white") + + for row in run_list: + ( + run_id, + fab_id, + fab_version, + _, + status_text, + elapsed, + created_at, + running_at, + finished_at, + ) = row + formatted_row = ( + f"[bold]{run_id}[/bold]", + f"{fab_id} (v{fab_version})", + status_text, + elapsed, + created_at, + running_at, + finished_at, + ) + table.add_row(*formatted_row) + return table @@ -211,7 +258,7 @@ def _list_runs( res: ListRunsResponse = stub.ListRuns(ListRunsRequest()) run_dict = {run_id: run_from_proto(proto) for run_id, proto in res.run_dict.items()} - Console().print(_format_run_table(run_dict, res.now)) + Console().print(_to_table(_format_runs(run_dict, res.now))) def _display_one_run( @@ -225,4 +272,4 @@ def _display_one_run( run_dict = {run_id: run_from_proto(proto) for run_id, proto in res.run_dict.items()} - Console().print(_format_run_table(run_dict, res.now)) + Console().print(_to_table(_format_runs(run_dict, res.now))) From 2b17349ec3e96e2d4f076f75798ecc3ebf4b9997 Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Wed, 4 Dec 2024 11:16:34 +0000 Subject: [PATCH 016/104] feat(framework) Introduce `try`-`except` block to catch exceptions in `flwr ls` (#4612) --- src/py/flwr/cli/ls.py | 94 +++++++++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 43 deletions(-) diff --git a/src/py/flwr/cli/ls.py b/src/py/flwr/cli/ls.py index f49dc3e25099..48e882bc178b 100644 --- a/src/py/flwr/cli/ls.py +++ b/src/py/flwr/cli/ls.py @@ -70,52 +70,56 @@ def ls( ] = None, ) -> None: """List runs.""" - # Load and validate federation config - typer.secho("Loading project configuration... ", fg=typer.colors.BLUE) - - pyproject_path = app / FAB_CONFIG_FILE if app else None - config, errors, warnings = load_and_validate(path=pyproject_path) - config = validate_project_config(config, errors, warnings) - federation, federation_config = validate_federation_in_project_config( - federation, config - ) - - if "address" not in federation_config: - typer.secho( - "❌ `flwr ls` currently works with Exec API. Ensure that the correct" - "Exec API address is provided in the `pyproject.toml`.", - fg=typer.colors.RED, - bold=True, + try: + # Load and validate federation config + typer.secho("Loading project configuration... ", fg=typer.colors.BLUE) + + pyproject_path = app / FAB_CONFIG_FILE if app else None + config, errors, warnings = load_and_validate(path=pyproject_path) + config = validate_project_config(config, errors, warnings) + federation, federation_config = validate_federation_in_project_config( + federation, config ) - raise typer.Exit(code=1) - try: - if runs and run_id is not None: - raise ValueError( - "The options '--runs' and '--run-id' are mutually exclusive." + if "address" not in federation_config: + typer.secho( + "❌ `flwr ls` currently works with Exec API. Ensure that the correct" + "Exec API address is provided in the `pyproject.toml`.", + fg=typer.colors.RED, + bold=True, ) - - channel = _init_channel(app, federation_config) - stub = ExecStub(channel) - - # Display information about a specific run ID - if run_id is not None: - typer.echo(f"🔍 Displaying information for run ID {run_id}...") - _display_one_run(stub, run_id) - # By default, list all runs - else: - typer.echo("📄 Listing all runs...") - _list_runs(stub) - - except ValueError as err: - typer.secho( - f"❌ {err}", - fg=typer.colors.RED, - bold=True, - ) - raise typer.Exit(code=1) from err - finally: - channel.close() + raise typer.Exit(code=1) + + try: + if runs and run_id is not None: + raise ValueError( + "The options '--runs' and '--run-id' are mutually exclusive." + ) + + channel = _init_channel(app, federation_config) + stub = ExecStub(channel) + + # Display information about a specific run ID + if run_id is not None: + typer.echo(f"🔍 Displaying information for run ID {run_id}...") + _display_one_run(stub, run_id) + # By default, list all runs + else: + typer.echo("📄 Listing all runs...") + _list_runs(stub) + + except ValueError as err: + typer.secho( + f"❌ {err}", + fg=typer.colors.RED, + bold=True, + ) + raise typer.Exit(code=1) from err + finally: + channel.close() + # pylint: disable=broad-except, unused-variable + except (typer.Exit, Exception): + _print_json_error() def on_channel_state_change(channel_connectivity: str) -> None: @@ -273,3 +277,7 @@ def _display_one_run( run_dict = {run_id: run_from_proto(proto) for run_id, proto in res.run_dict.items()} Console().print(_to_table(_format_runs(run_dict, res.now))) + + +def _print_json_error() -> None: + """Print error message as JSON.""" From 0f3038e6fd560d793ea8d5cb3c76645b6dac69a5 Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Wed, 4 Dec 2024 11:25:45 +0000 Subject: [PATCH 017/104] feat(framework) Update `exec.proto` to return optional `run_id` (#4620) --- src/proto/flwr/proto/exec.proto | 2 +- src/py/flwr/cli/run/run.py | 6 +++++- src/py/flwr/proto/exec_pb2.py | 28 ++++++++++++++-------------- src/py/flwr/proto/exec_pb2.pyi | 6 ++++-- 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/proto/flwr/proto/exec.proto b/src/proto/flwr/proto/exec.proto index 583c42ff5704..aa7bd0ea37b3 100644 --- a/src/proto/flwr/proto/exec.proto +++ b/src/proto/flwr/proto/exec.proto @@ -38,7 +38,7 @@ message StartRunRequest { map override_config = 2; ConfigsRecord federation_options = 3; } -message StartRunResponse { uint64 run_id = 1; } +message StartRunResponse { optional uint64 run_id = 1; } message StreamLogsRequest { uint64 run_id = 1; double after_timestamp = 2; diff --git a/src/py/flwr/cli/run/run.py b/src/py/flwr/cli/run/run.py index 1b144379581e..2715ea3599e0 100644 --- a/src/py/flwr/cli/run/run.py +++ b/src/py/flwr/cli/run/run.py @@ -142,7 +142,11 @@ def _run_with_exec_api( ) res = stub.StartRun(req) - typer.secho(f"🎊 Successfully started run {res.run_id}", fg=typer.colors.GREEN) + if res.HasField("run_id"): + typer.secho(f"🎊 Successfully started run {res.run_id}", fg=typer.colors.GREEN) + else: + typer.secho("❌ Failed to start run", fg=typer.colors.RED) + raise typer.Exit(code=1) if stream: start_stream(res.run_id, channel, CONN_REFRESH_PERIOD) diff --git a/src/py/flwr/proto/exec_pb2.py b/src/py/flwr/proto/exec_pb2.py index 2240988e87a0..d06c5af3007d 100644 --- a/src/py/flwr/proto/exec_pb2.py +++ b/src/py/flwr/proto/exec_pb2.py @@ -18,7 +18,7 @@ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x14\x66lwr/proto/run.proto\"\xfb\x01\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12\x35\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x19.flwr.proto.ConfigsRecord\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\"\n\x10StartRunResponse\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"<\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x17\n\x0f\x61\x66ter_timestamp\x18\x02 \x01(\x01\"B\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t\x12\x18\n\x10latest_timestamp\x18\x02 \x01(\x01\"1\n\x0fListRunsRequest\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"\x9d\x01\n\x10ListRunsResponse\x12;\n\x08run_dict\x18\x01 \x03(\x0b\x32).flwr.proto.ListRunsResponse.RunDictEntry\x12\x0b\n\x03now\x18\x02 \x01(\t\x1a?\n\x0cRunDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\x1e\n\x05value\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run:\x02\x38\x01\x32\xe9\x01\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x12G\n\x08ListRuns\x12\x1b.flwr.proto.ListRunsRequest\x1a\x1c.flwr.proto.ListRunsResponse\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x14\x66lwr/proto/run.proto\"\xfb\x01\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12\x35\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x19.flwr.proto.ConfigsRecord\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"2\n\x10StartRunResponse\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"<\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x17\n\x0f\x61\x66ter_timestamp\x18\x02 \x01(\x01\"B\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t\x12\x18\n\x10latest_timestamp\x18\x02 \x01(\x01\"1\n\x0fListRunsRequest\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"\x9d\x01\n\x10ListRunsResponse\x12;\n\x08run_dict\x18\x01 \x03(\x0b\x32).flwr.proto.ListRunsResponse.RunDictEntry\x12\x0b\n\x03now\x18\x02 \x01(\t\x1a?\n\x0cRunDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\x1e\n\x05value\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run:\x02\x38\x01\x32\xe9\x01\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x12G\n\x08ListRuns\x12\x1b.flwr.proto.ListRunsRequest\x1a\x1c.flwr.proto.ListRunsResponse\"\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -34,17 +34,17 @@ _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_start=316 _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_end=389 _globals['_STARTRUNRESPONSE']._serialized_start=391 - _globals['_STARTRUNRESPONSE']._serialized_end=425 - _globals['_STREAMLOGSREQUEST']._serialized_start=427 - _globals['_STREAMLOGSREQUEST']._serialized_end=487 - _globals['_STREAMLOGSRESPONSE']._serialized_start=489 - _globals['_STREAMLOGSRESPONSE']._serialized_end=555 - _globals['_LISTRUNSREQUEST']._serialized_start=557 - _globals['_LISTRUNSREQUEST']._serialized_end=606 - _globals['_LISTRUNSRESPONSE']._serialized_start=609 - _globals['_LISTRUNSRESPONSE']._serialized_end=766 - _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_start=703 - _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_end=766 - _globals['_EXEC']._serialized_start=769 - _globals['_EXEC']._serialized_end=1002 + _globals['_STARTRUNRESPONSE']._serialized_end=441 + _globals['_STREAMLOGSREQUEST']._serialized_start=443 + _globals['_STREAMLOGSREQUEST']._serialized_end=503 + _globals['_STREAMLOGSRESPONSE']._serialized_start=505 + _globals['_STREAMLOGSRESPONSE']._serialized_end=571 + _globals['_LISTRUNSREQUEST']._serialized_start=573 + _globals['_LISTRUNSREQUEST']._serialized_end=622 + _globals['_LISTRUNSRESPONSE']._serialized_start=625 + _globals['_LISTRUNSRESPONSE']._serialized_end=782 + _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_start=719 + _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_end=782 + _globals['_EXEC']._serialized_start=785 + _globals['_EXEC']._serialized_end=1018 # @@protoc_insertion_point(module_scope) diff --git a/src/py/flwr/proto/exec_pb2.pyi b/src/py/flwr/proto/exec_pb2.pyi index 08e0b1c14346..1cc971444e32 100644 --- a/src/py/flwr/proto/exec_pb2.pyi +++ b/src/py/flwr/proto/exec_pb2.pyi @@ -57,9 +57,11 @@ class StartRunResponse(google.protobuf.message.Message): run_id: builtins.int def __init__(self, *, - run_id: builtins.int = ..., + run_id: typing.Optional[builtins.int] = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_run_id",b"_run_id","run_id",b"run_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_run_id",b"_run_id","run_id",b"run_id"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["_run_id",b"_run_id"]) -> typing.Optional[typing_extensions.Literal["run_id"]]: ... global___StartRunResponse = StartRunResponse class StreamLogsRequest(google.protobuf.message.Message): From 10b8ada07746884aba53cab3cd6e027660038fe4 Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Wed, 4 Dec 2024 11:34:46 +0000 Subject: [PATCH 018/104] feat(framework) Remove unused proto files (#4631) Co-authored-by: Daniel J. Beutel --- src/proto/flwr/proto/control.proto | 32 ----- src/py/flwr/proto/common_pb2.py | 36 ----- src/py/flwr/proto/common_pb2.pyi | 121 ---------------- src/py/flwr/proto/common_pb2_grpc.py | 4 - src/py/flwr/proto/common_pb2_grpc.pyi | 4 - src/py/flwr/proto/control_pb2.py | 27 ---- src/py/flwr/proto/control_pb2.pyi | 7 - src/py/flwr/proto/control_pb2_grpc.py | 135 ------------------ src/py/flwr/proto/control_pb2_grpc.pyi | 53 ------- .../superlink/driver/serverappio_servicer.py | 2 +- src/py/flwr_tool/protoc_test.py | 2 +- 11 files changed, 2 insertions(+), 421 deletions(-) delete mode 100644 src/proto/flwr/proto/control.proto delete mode 100644 src/py/flwr/proto/common_pb2.py delete mode 100644 src/py/flwr/proto/common_pb2.pyi delete mode 100644 src/py/flwr/proto/common_pb2_grpc.py delete mode 100644 src/py/flwr/proto/common_pb2_grpc.pyi delete mode 100644 src/py/flwr/proto/control_pb2.py delete mode 100644 src/py/flwr/proto/control_pb2.pyi delete mode 100644 src/py/flwr/proto/control_pb2_grpc.py delete mode 100644 src/py/flwr/proto/control_pb2_grpc.pyi diff --git a/src/proto/flwr/proto/control.proto b/src/proto/flwr/proto/control.proto deleted file mode 100644 index 8b75c66fccaa..000000000000 --- a/src/proto/flwr/proto/control.proto +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2024 Flower Labs GmbH. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ============================================================================== - -syntax = "proto3"; - -package flwr.proto; - -import "flwr/proto/run.proto"; - -service Control { - // Request to create a new run - rpc CreateRun(CreateRunRequest) returns (CreateRunResponse) {} - - // Get the status of a given run - rpc GetRunStatus(GetRunStatusRequest) returns (GetRunStatusResponse) {} - - // Update the status of a given run - rpc UpdateRunStatus(UpdateRunStatusRequest) - returns (UpdateRunStatusResponse) {} -} diff --git a/src/py/flwr/proto/common_pb2.py b/src/py/flwr/proto/common_pb2.py deleted file mode 100644 index 1025aa862933..000000000000 --- a/src/py/flwr/proto/common_pb2.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: flwr/proto/common.proto -# Protobuf Python Version: 4.25.0 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66lwr/proto/common.proto\x12\nflwr.proto\"\x1a\n\nDoubleList\x12\x0c\n\x04vals\x18\x01 \x03(\x01\"\x1a\n\nSint64List\x12\x0c\n\x04vals\x18\x01 \x03(\x12\"\x18\n\x08\x42oolList\x12\x0c\n\x04vals\x18\x01 \x03(\x08\"\x1a\n\nStringList\x12\x0c\n\x04vals\x18\x01 \x03(\t\"\x19\n\tBytesList\x12\x0c\n\x04vals\x18\x01 \x03(\x0c\"\xd9\x02\n\x12\x43onfigsRecordValue\x12\x10\n\x06\x64ouble\x18\x01 \x01(\x01H\x00\x12\x10\n\x06sint64\x18\x02 \x01(\x12H\x00\x12\x0e\n\x04\x62ool\x18\x03 \x01(\x08H\x00\x12\x10\n\x06string\x18\x04 \x01(\tH\x00\x12\x0f\n\x05\x62ytes\x18\x05 \x01(\x0cH\x00\x12-\n\x0b\x64ouble_list\x18\x15 \x01(\x0b\x32\x16.flwr.proto.DoubleListH\x00\x12-\n\x0bsint64_list\x18\x16 \x01(\x0b\x32\x16.flwr.proto.Sint64ListH\x00\x12)\n\tbool_list\x18\x17 \x01(\x0b\x32\x14.flwr.proto.BoolListH\x00\x12-\n\x0bstring_list\x18\x18 \x01(\x0b\x32\x16.flwr.proto.StringListH\x00\x12+\n\nbytes_list\x18\x19 \x01(\x0b\x32\x15.flwr.proto.BytesListH\x00\x42\x07\n\x05valueb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.common_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None - _globals['_DOUBLELIST']._serialized_start=39 - _globals['_DOUBLELIST']._serialized_end=65 - _globals['_SINT64LIST']._serialized_start=67 - _globals['_SINT64LIST']._serialized_end=93 - _globals['_BOOLLIST']._serialized_start=95 - _globals['_BOOLLIST']._serialized_end=119 - _globals['_STRINGLIST']._serialized_start=121 - _globals['_STRINGLIST']._serialized_end=147 - _globals['_BYTESLIST']._serialized_start=149 - _globals['_BYTESLIST']._serialized_end=174 - _globals['_CONFIGSRECORDVALUE']._serialized_start=177 - _globals['_CONFIGSRECORDVALUE']._serialized_end=522 -# @@protoc_insertion_point(module_scope) diff --git a/src/py/flwr/proto/common_pb2.pyi b/src/py/flwr/proto/common_pb2.pyi deleted file mode 100644 index e2539a7300a9..000000000000 --- a/src/py/flwr/proto/common_pb2.pyi +++ /dev/null @@ -1,121 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import typing -import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class DoubleList(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALS_FIELD_NUMBER: builtins.int - @property - def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... - def __init__(self, - *, - vals: typing.Optional[typing.Iterable[builtins.float]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ... -global___DoubleList = DoubleList - -class Sint64List(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALS_FIELD_NUMBER: builtins.int - @property - def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... - def __init__(self, - *, - vals: typing.Optional[typing.Iterable[builtins.int]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ... -global___Sint64List = Sint64List - -class BoolList(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALS_FIELD_NUMBER: builtins.int - @property - def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bool]: ... - def __init__(self, - *, - vals: typing.Optional[typing.Iterable[builtins.bool]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ... -global___BoolList = BoolList - -class StringList(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALS_FIELD_NUMBER: builtins.int - @property - def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ... - def __init__(self, - *, - vals: typing.Optional[typing.Iterable[typing.Text]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ... -global___StringList = StringList - -class BytesList(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - VALS_FIELD_NUMBER: builtins.int - @property - def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: ... - def __init__(self, - *, - vals: typing.Optional[typing.Iterable[builtins.bytes]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ... -global___BytesList = BytesList - -class ConfigsRecordValue(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - DOUBLE_FIELD_NUMBER: builtins.int - SINT64_FIELD_NUMBER: builtins.int - BOOL_FIELD_NUMBER: builtins.int - STRING_FIELD_NUMBER: builtins.int - BYTES_FIELD_NUMBER: builtins.int - DOUBLE_LIST_FIELD_NUMBER: builtins.int - SINT64_LIST_FIELD_NUMBER: builtins.int - BOOL_LIST_FIELD_NUMBER: builtins.int - STRING_LIST_FIELD_NUMBER: builtins.int - BYTES_LIST_FIELD_NUMBER: builtins.int - double: builtins.float - """Single element""" - - sint64: builtins.int - bool: builtins.bool - string: typing.Text - bytes: builtins.bytes - @property - def double_list(self) -> global___DoubleList: - """List types""" - pass - @property - def sint64_list(self) -> global___Sint64List: ... - @property - def bool_list(self) -> global___BoolList: ... - @property - def string_list(self) -> global___StringList: ... - @property - def bytes_list(self) -> global___BytesList: ... - def __init__(self, - *, - double: builtins.float = ..., - sint64: builtins.int = ..., - bool: builtins.bool = ..., - string: typing.Text = ..., - bytes: builtins.bytes = ..., - double_list: typing.Optional[global___DoubleList] = ..., - sint64_list: typing.Optional[global___Sint64List] = ..., - bool_list: typing.Optional[global___BoolList] = ..., - string_list: typing.Optional[global___StringList] = ..., - bytes_list: typing.Optional[global___BytesList] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["bool",b"bool","bool_list",b"bool_list","bytes",b"bytes","bytes_list",b"bytes_list","double",b"double","double_list",b"double_list","sint64",b"sint64","sint64_list",b"sint64_list","string",b"string","string_list",b"string_list","value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["bool",b"bool","bool_list",b"bool_list","bytes",b"bytes","bytes_list",b"bytes_list","double",b"double","double_list",b"double_list","sint64",b"sint64","sint64_list",b"sint64_list","string",b"string","string_list",b"string_list","value",b"value"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["value",b"value"]) -> typing.Optional[typing_extensions.Literal["double","sint64","bool","string","bytes","double_list","sint64_list","bool_list","string_list","bytes_list"]]: ... -global___ConfigsRecordValue = ConfigsRecordValue diff --git a/src/py/flwr/proto/common_pb2_grpc.py b/src/py/flwr/proto/common_pb2_grpc.py deleted file mode 100644 index 2daafffebfc8..000000000000 --- a/src/py/flwr/proto/common_pb2_grpc.py +++ /dev/null @@ -1,4 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc - diff --git a/src/py/flwr/proto/common_pb2_grpc.pyi b/src/py/flwr/proto/common_pb2_grpc.pyi deleted file mode 100644 index f3a5a087ef5d..000000000000 --- a/src/py/flwr/proto/common_pb2_grpc.pyi +++ /dev/null @@ -1,4 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" diff --git a/src/py/flwr/proto/control_pb2.py b/src/py/flwr/proto/control_pb2.py deleted file mode 100644 index eb1c18d8dcff..000000000000 --- a/src/py/flwr/proto/control_pb2.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: flwr/proto/control.proto -# Protobuf Python Version: 4.25.0 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/control.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/run.proto2\x88\x02\n\x07\x43ontrol\x12J\n\tCreateRun\x12\x1c.flwr.proto.CreateRunRequest\x1a\x1d.flwr.proto.CreateRunResponse\"\x00\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.control_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None - _globals['_CONTROL']._serialized_start=63 - _globals['_CONTROL']._serialized_end=327 -# @@protoc_insertion_point(module_scope) diff --git a/src/py/flwr/proto/control_pb2.pyi b/src/py/flwr/proto/control_pb2.pyi deleted file mode 100644 index e08fa11c2caa..000000000000 --- a/src/py/flwr/proto/control_pb2.pyi +++ /dev/null @@ -1,7 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import google.protobuf.descriptor - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor diff --git a/src/py/flwr/proto/control_pb2_grpc.py b/src/py/flwr/proto/control_pb2_grpc.py deleted file mode 100644 index a59f90f15935..000000000000 --- a/src/py/flwr/proto/control_pb2_grpc.py +++ /dev/null @@ -1,135 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc - -from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2 - - -class ControlStub(object): - """Missing associated documentation comment in .proto file.""" - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.CreateRun = channel.unary_unary( - '/flwr.proto.Control/CreateRun', - request_serializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString, - response_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString, - ) - self.GetRunStatus = channel.unary_unary( - '/flwr.proto.Control/GetRunStatus', - request_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString, - response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString, - ) - self.UpdateRunStatus = channel.unary_unary( - '/flwr.proto.Control/UpdateRunStatus', - request_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString, - response_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.FromString, - ) - - -class ControlServicer(object): - """Missing associated documentation comment in .proto file.""" - - def CreateRun(self, request, context): - """Request to create a new run - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def GetRunStatus(self, request, context): - """Get the status of a given run - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def UpdateRunStatus(self, request, context): - """Update the status of a given run - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_ControlServicer_to_server(servicer, server): - rpc_method_handlers = { - 'CreateRun': grpc.unary_unary_rpc_method_handler( - servicer.CreateRun, - request_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.FromString, - response_serializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.SerializeToString, - ), - 'GetRunStatus': grpc.unary_unary_rpc_method_handler( - servicer.GetRunStatus, - request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.FromString, - response_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.SerializeToString, - ), - 'UpdateRunStatus': grpc.unary_unary_rpc_method_handler( - servicer.UpdateRunStatus, - request_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.FromString, - response_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'flwr.proto.Control', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - - - # This class is part of an EXPERIMENTAL API. -class Control(object): - """Missing associated documentation comment in .proto file.""" - - @staticmethod - def CreateRun(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Control/CreateRun', - flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString, - flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def GetRunStatus(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Control/GetRunStatus', - flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString, - flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def UpdateRunStatus(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Control/UpdateRunStatus', - flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString, - flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/src/py/flwr/proto/control_pb2_grpc.pyi b/src/py/flwr/proto/control_pb2_grpc.pyi deleted file mode 100644 index 7817e2b12e31..000000000000 --- a/src/py/flwr/proto/control_pb2_grpc.pyi +++ /dev/null @@ -1,53 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import abc -import flwr.proto.run_pb2 -import grpc - -class ControlStub: - def __init__(self, channel: grpc.Channel) -> None: ... - CreateRun: grpc.UnaryUnaryMultiCallable[ - flwr.proto.run_pb2.CreateRunRequest, - flwr.proto.run_pb2.CreateRunResponse] - """Request to create a new run""" - - GetRunStatus: grpc.UnaryUnaryMultiCallable[ - flwr.proto.run_pb2.GetRunStatusRequest, - flwr.proto.run_pb2.GetRunStatusResponse] - """Get the status of a given run""" - - UpdateRunStatus: grpc.UnaryUnaryMultiCallable[ - flwr.proto.run_pb2.UpdateRunStatusRequest, - flwr.proto.run_pb2.UpdateRunStatusResponse] - """Update the status of a given run""" - - -class ControlServicer(metaclass=abc.ABCMeta): - @abc.abstractmethod - def CreateRun(self, - request: flwr.proto.run_pb2.CreateRunRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.run_pb2.CreateRunResponse: - """Request to create a new run""" - pass - - @abc.abstractmethod - def GetRunStatus(self, - request: flwr.proto.run_pb2.GetRunStatusRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.run_pb2.GetRunStatusResponse: - """Get the status of a given run""" - pass - - @abc.abstractmethod - def UpdateRunStatus(self, - request: flwr.proto.run_pb2.UpdateRunStatusRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.run_pb2.UpdateRunStatusResponse: - """Update the status of a given run""" - pass - - -def add_ControlServicer_to_server(servicer: ControlServicer, server: grpc.Server) -> None: ... diff --git a/src/py/flwr/server/superlink/driver/serverappio_servicer.py b/src/py/flwr/server/superlink/driver/serverappio_servicer.py index e1820fee0659..dddac1a93b1a 100644 --- a/src/py/flwr/server/superlink/driver/serverappio_servicer.py +++ b/src/py/flwr/server/superlink/driver/serverappio_servicer.py @@ -263,7 +263,7 @@ def UpdateRunStatus( self, request: UpdateRunStatusRequest, context: grpc.ServicerContext ) -> UpdateRunStatusResponse: """Update the status of a run.""" - log(DEBUG, "ControlServicer.UpdateRunStatus") + log(DEBUG, "ServerAppIoServicer.UpdateRunStatus") state = self.state_factory.state() # Update the run status diff --git a/src/py/flwr_tool/protoc_test.py b/src/py/flwr_tool/protoc_test.py index e2e14858174c..9b85aeb5ac7a 100644 --- a/src/py/flwr_tool/protoc_test.py +++ b/src/py/flwr_tool/protoc_test.py @@ -28,4 +28,4 @@ def test_directories() -> None: def test_proto_file_count() -> None: """Test if the correct number of proto files were captured by the glob.""" - assert len(PROTO_FILES) == 16 + assert len(PROTO_FILES) == 15 From e0e54520be0fe0e10549a04af949f8f18651a78b Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Wed, 4 Dec 2024 11:52:17 +0000 Subject: [PATCH 019/104] feat(framework) Introduce `try`-`except` block to `flwr run` (#4621) --- src/py/flwr/cli/run/run.py | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/py/flwr/cli/run/run.py b/src/py/flwr/cli/run/run.py index 2715ea3599e0..cabd5707d5c0 100644 --- a/src/py/flwr/cli/run/run.py +++ b/src/py/flwr/cli/run/run.py @@ -87,19 +87,23 @@ def run( ] = False, ) -> None: """Run Flower App.""" - typer.secho("Loading project configuration... ", fg=typer.colors.BLUE) + try: + typer.secho("Loading project configuration... ", fg=typer.colors.BLUE) - pyproject_path = app / "pyproject.toml" if app else None - config, errors, warnings = load_and_validate(path=pyproject_path) - config = validate_project_config(config, errors, warnings) - federation, federation_config = validate_federation_in_project_config( - federation, config - ) + pyproject_path = app / "pyproject.toml" if app else None + config, errors, warnings = load_and_validate(path=pyproject_path) + config = validate_project_config(config, errors, warnings) + federation, federation_config = validate_federation_in_project_config( + federation, config + ) - if "address" in federation_config: - _run_with_exec_api(app, federation_config, config_overrides, stream) - else: - _run_without_exec_api(app, federation_config, config_overrides, federation) + if "address" in federation_config: + _run_with_exec_api(app, federation_config, config_overrides, stream) + else: + _run_without_exec_api(app, federation_config, config_overrides, federation) + # pylint: disable=broad-except, unused-variable + except (typer.Exit, SystemExit, Exception): + _print_json_error() # pylint: disable-next=too-many-locals @@ -198,3 +202,7 @@ def _run_without_exec_api( check=True, text=True, ) + + +def _print_json_error() -> None: + """Print error message as JSON.""" From 66940092603a6eac2c26d1fb3ca8cbb9d63e07f7 Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Wed, 4 Dec 2024 12:36:04 +0000 Subject: [PATCH 020/104] feat(framework) Introduce JSON formatting function in `flwr ls` (#4613) Co-authored-by: Daniel J. Beutel --- src/py/flwr/cli/ls.py | 102 ++++++++++++++++++++++----------- src/py/flwr/common/constant.py | 11 ++++ 2 files changed, 79 insertions(+), 34 deletions(-) diff --git a/src/py/flwr/cli/ls.py b/src/py/flwr/cli/ls.py index 48e882bc178b..622dc9f095ed 100644 --- a/src/py/flwr/cli/ls.py +++ b/src/py/flwr/cli/ls.py @@ -15,6 +15,7 @@ """Flower command line interface `ls` command.""" +import json from datetime import datetime, timedelta from logging import DEBUG from pathlib import Path @@ -32,7 +33,7 @@ validate_federation_in_project_config, validate_project_config, ) -from flwr.common.constant import FAB_CONFIG_FILE, SubStatus +from flwr.common.constant import FAB_CONFIG_FILE, CliOutputFormat, SubStatus from flwr.common.date import format_timedelta, isoformat8601_utc from flwr.common.grpc import GRPC_MAX_MESSAGE_LENGTH, create_channel from flwr.common.logger import log @@ -44,6 +45,8 @@ ) from flwr.proto.exec_pb2_grpc import ExecStub +_RunListType = tuple[int, str, str, str, str, str, str, str, str] + def ls( app: Annotated[ @@ -117,7 +120,7 @@ def ls( raise typer.Exit(code=1) from err finally: channel.close() - # pylint: disable=broad-except, unused-variable + # pylint: disable=broad-except except (typer.Exit, Exception): _print_json_error() @@ -143,25 +146,13 @@ def _init_channel(app: Path, federation_config: dict[str, Any]) -> grpc.Channel: return channel -def _format_runs(run_dict: dict[int, Run], now_isoformat: str) -> list[tuple[str, ...]]: +def _format_runs(run_dict: dict[int, Run], now_isoformat: str) -> list[_RunListType]: """Format runs to a list.""" - table = Table(header_style="bold cyan", show_lines=True) def _format_datetime(dt: Optional[datetime]) -> str: return isoformat8601_utc(dt).replace("T", " ") if dt else "N/A" - run_list: list[tuple[str, ...]] = [] - - # Add columns - table.add_column( - Text("Run ID", justify="center"), style="bright_white", overflow="fold" - ) - table.add_column(Text("FAB", justify="center"), style="dim white") - table.add_column(Text("Status", justify="center")) - table.add_column(Text("Elapsed", justify="center"), style="blue") - table.add_column(Text("Created At", justify="center"), style="dim white") - table.add_column(Text("Running At", justify="center"), style="dim white") - table.add_column(Text("Finished At", justify="center"), style="dim white") + run_list: list[_RunListType] = [] # Add rows for run in sorted( @@ -173,15 +164,6 @@ def _format_datetime(dt: Optional[datetime]) -> str: else: status_text = f"{run.status.status}:{run.status.sub_status}" - # Style the status based on its value - sub_status = run.status.sub_status - if sub_status == SubStatus.COMPLETED: - status_style = "green" - elif sub_status == SubStatus.FAILED: - status_style = "red" - else: - status_style = "yellow" - # Convert isoformat to datetime pending_at = datetime.fromisoformat(run.pending_at) if run.pending_at else None running_at = datetime.fromisoformat(run.running_at) if run.running_at else None @@ -200,11 +182,11 @@ def _format_datetime(dt: Optional[datetime]) -> str: run_list.append( ( - f"{run.run_id}", - f"{run.fab_id}", - f"{run.fab_version}", - f"{run.fab_hash}", - f"[{status_style}]{status_text}[/{status_style}]", + run.run_id, + run.fab_id, + run.fab_version, + run.fab_hash, + status_text, format_timedelta(elapsed_time), _format_datetime(pending_at), _format_datetime(running_at), @@ -214,7 +196,7 @@ def _format_datetime(dt: Optional[datetime]) -> str: return run_list -def _to_table(run_list: list[tuple[str, ...]]) -> Table: +def _to_table(run_list: list[_RunListType]) -> Table: """Format the provided run list to a rich Table.""" table = Table(header_style="bold cyan", show_lines=True) @@ -241,10 +223,19 @@ def _to_table(run_list: list[tuple[str, ...]]) -> Table: running_at, finished_at, ) = row + # Style the status based on its value + sub_status = status_text.rsplit(":", maxsplit=1)[-1] + if sub_status == SubStatus.COMPLETED: + status_style = "green" + elif sub_status == SubStatus.FAILED: + status_style = "red" + else: + status_style = "yellow" + formatted_row = ( f"[bold]{run_id}[/bold]", f"{fab_id} (v{fab_version})", - status_text, + f"[{status_style}]{status_text}[/{status_style}]", elapsed, created_at, running_at, @@ -255,19 +246,58 @@ def _to_table(run_list: list[tuple[str, ...]]) -> Table: return table +def _to_json(run_list: list[_RunListType]) -> str: + """Format run status list to a JSON formatted string.""" + runs_list = [] + for row in run_list: + ( + run_id, + fab_id, + fab_version, + fab_hash, + status_text, + elapsed, + created_at, + running_at, + finished_at, + ) = row + runs_list.append( + { + "run-id": run_id, + "fab-id": fab_id, + "fab-name": fab_id.split("/")[-1], + "fab-version": fab_version, + "fab-hash": fab_hash[:8], + "status": status_text, + "elapsed": elapsed, + "created-at": created_at, + "running-at": running_at, + "finished-at": finished_at, + } + ) + + return json.dumps({"runs": runs_list}) + + def _list_runs( stub: ExecStub, + output_format: str = CliOutputFormat.DEFAULT, ) -> None: """List all runs.""" res: ListRunsResponse = stub.ListRuns(ListRunsRequest()) run_dict = {run_id: run_from_proto(proto) for run_id, proto in res.run_dict.items()} - Console().print(_to_table(_format_runs(run_dict, res.now))) + formatted_runs = _format_runs(run_dict, res.now) + if output_format == CliOutputFormat.JSON: + Console().print_json(_to_json(formatted_runs)) + else: + Console().print(_to_table(formatted_runs)) def _display_one_run( stub: ExecStub, run_id: int, + output_format: str = CliOutputFormat.DEFAULT, ) -> None: """Display information about a specific run.""" res: ListRunsResponse = stub.ListRuns(ListRunsRequest(run_id=run_id)) @@ -276,7 +306,11 @@ def _display_one_run( run_dict = {run_id: run_from_proto(proto) for run_id, proto in res.run_dict.items()} - Console().print(_to_table(_format_runs(run_dict, res.now))) + formatted_runs = _format_runs(run_dict, res.now) + if output_format == CliOutputFormat.JSON: + Console().print_json(_to_json(formatted_runs)) + else: + Console().print(_to_table(formatted_runs)) def _print_json_error() -> None: diff --git a/src/py/flwr/common/constant.py b/src/py/flwr/common/constant.py index ec84aa984fde..ce5840ddddfb 100644 --- a/src/py/flwr/common/constant.py +++ b/src/py/flwr/common/constant.py @@ -181,3 +181,14 @@ class SubStatus: def __new__(cls) -> SubStatus: """Prevent instantiation.""" raise TypeError(f"{cls.__name__} cannot be instantiated.") + + +class CliOutputFormat: + """Define output format for `flwr` CLI commands.""" + + DEFAULT = "default" + JSON = "json" + + def __new__(cls) -> CliOutputFormat: + """Prevent instantiation.""" + raise TypeError(f"{cls.__name__} cannot be instantiated.") From a7ae9990b5ac40202654fb3f7e80536698beb78b Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Wed, 4 Dec 2024 12:45:20 +0000 Subject: [PATCH 021/104] feat(framework) Add JSON formatting to `flwr run` output (#4619) --- src/py/flwr/cli/run/run.py | 69 ++++++++++++++++++++++++++++++++---- src/py/flwr/common/logger.py | 26 +++++++++++++- 2 files changed, 87 insertions(+), 8 deletions(-) diff --git a/src/py/flwr/cli/run/run.py b/src/py/flwr/cli/run/run.py index cabd5707d5c0..05c4bf183dda 100644 --- a/src/py/flwr/cli/run/run.py +++ b/src/py/flwr/cli/run/run.py @@ -14,16 +14,19 @@ # ============================================================================== """Flower command line interface `run` command.""" +import io import json import subprocess from logging import DEBUG from pathlib import Path -from typing import Annotated, Any, Optional +from typing import Annotated, Any, Optional, Union import typer +from rich.console import Console from flwr.cli.build import build from flwr.cli.config_utils import ( + get_fab_metadata, load_and_validate, validate_certificate_in_federation_config, validate_federation_in_project_config, @@ -34,8 +37,9 @@ parse_config_args, user_config_to_configsrecord, ) +from flwr.common.constant import CliOutputFormat from flwr.common.grpc import GRPC_MAX_MESSAGE_LENGTH, create_channel -from flwr.common.logger import log +from flwr.common.logger import log, redirect_output, remove_emojis, restore_output from flwr.common.serde import ( configs_record_to_proto, fab_to_proto, @@ -85,9 +89,21 @@ def run( "logs are not streamed by default.", ), ] = False, + output_format: Annotated[ + str, + typer.Option( + "--format", + case_sensitive=False, + help="Format output using 'default' view or 'json'", + ), + ] = CliOutputFormat.DEFAULT, ) -> None: """Run Flower App.""" + suppress_output = output_format == CliOutputFormat.JSON + captured_output = io.StringIO() try: + if suppress_output: + redirect_output(captured_output) typer.secho("Loading project configuration... ", fg=typer.colors.BLUE) pyproject_path = app / "pyproject.toml" if app else None @@ -98,12 +114,26 @@ def run( ) if "address" in federation_config: - _run_with_exec_api(app, federation_config, config_overrides, stream) + _run_with_exec_api( + app, federation_config, config_overrides, stream, output_format + ) else: _run_without_exec_api(app, federation_config, config_overrides, federation) - # pylint: disable=broad-except, unused-variable - except (typer.Exit, SystemExit, Exception): - _print_json_error() + except (typer.Exit, Exception) as err: # pylint: disable=broad-except + if suppress_output: + restore_output() + e_message = captured_output.getvalue() + _print_json_error(e_message, err) + else: + typer.secho( + f"{err}", + fg=typer.colors.RED, + bold=True, + ) + finally: + if suppress_output: + restore_output() + captured_output.close() # pylint: disable-next=too-many-locals @@ -112,6 +142,7 @@ def _run_with_exec_api( federation_config: dict[str, Any], config_overrides: Optional[list[str]], stream: bool, + output_format: str, ) -> None: insecure, root_certificates_bytes = validate_certificate_in_federation_config( @@ -129,6 +160,7 @@ def _run_with_exec_api( fab_path, fab_hash = build(app) content = Path(fab_path).read_bytes() + fab_id, fab_version = get_fab_metadata(Path(fab_path)) # Delete FAB file once the bytes is computed Path(fab_path).unlink() @@ -152,6 +184,21 @@ def _run_with_exec_api( typer.secho("❌ Failed to start run", fg=typer.colors.RED) raise typer.Exit(code=1) + if output_format == CliOutputFormat.JSON: + run_output = json.dumps( + { + "success": "true" if res.HasField("run_id") else "false", + "run-id": res.run_id if res.HasField("run_id") else None, + "fab-id": fab_id, + "fab-name": fab_id.rsplit("/", maxsplit=1)[-1], + "fab-version": fab_version, + "fab-hash": fab_hash[:8], + "fab-filename": fab_path, + } + ) + restore_output() + Console().print_json(run_output) + if stream: start_stream(res.run_id, channel, CONN_REFRESH_PERIOD) @@ -204,5 +251,13 @@ def _run_without_exec_api( ) -def _print_json_error() -> None: +def _print_json_error(msg: str, e: Union[typer.Exit, Exception]) -> None: """Print error message as JSON.""" + Console().print_json( + json.dumps( + { + "success": False, + "error-message": remove_emojis(str(msg) + "\n" + str(e)), + } + ) + ) diff --git a/src/py/flwr/common/logger.py b/src/py/flwr/common/logger.py index 7f132d706dc2..62d5fa92b02a 100644 --- a/src/py/flwr/common/logger.py +++ b/src/py/flwr/common/logger.py @@ -14,11 +14,12 @@ # ============================================================================== """Flower Logger.""" - import logging +import re import sys import threading import time +from io import StringIO from logging import WARN, LogRecord from logging.handlers import HTTPHandler from queue import Empty, Queue @@ -303,6 +304,13 @@ def restore_output() -> None: console_handler.stream = sys.stdout +def redirect_output(output_buffer: StringIO) -> None: + """Redirect stdout and stderr to text I/O buffer.""" + sys.stdout = output_buffer + sys.stderr = output_buffer + console_handler.stream = sys.stdout + + def _log_uploader( log_queue: Queue[Optional[str]], node_id: int, run_id: int, stub: ServerAppIoStub ) -> None: @@ -366,3 +374,19 @@ def stop_log_uploader( """Stop the log uploader thread.""" log_queue.put(None) log_uploader.join() + + +def remove_emojis(text: str) -> str: + """Remove emojis from the provided text.""" + emoji_pattern = re.compile( + "[" + "\U0001F600-\U0001F64F" # Emoticons + "\U0001F300-\U0001F5FF" # Symbols & Pictographs + "\U0001F680-\U0001F6FF" # Transport & Map Symbols + "\U0001F1E0-\U0001F1FF" # Flags + "\U00002702-\U000027B0" # Dingbats + "\U000024C2-\U0001F251" + "]+", + flags=re.UNICODE, + ) + return emoji_pattern.sub(r"", text) From 968fc774156e3371ad0c58c5f2638c04e3ab0144 Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Wed, 4 Dec 2024 12:54:57 +0000 Subject: [PATCH 022/104] feat(framework) Add JSON formatting to `flwr ls` output (#4610) --- src/py/flwr/cli/ls.py | 55 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/src/py/flwr/cli/ls.py b/src/py/flwr/cli/ls.py index 622dc9f095ed..f1c6a242cd33 100644 --- a/src/py/flwr/cli/ls.py +++ b/src/py/flwr/cli/ls.py @@ -15,17 +15,19 @@ """Flower command line interface `ls` command.""" +import io import json from datetime import datetime, timedelta from logging import DEBUG from pathlib import Path -from typing import Annotated, Any, Optional +from typing import Annotated, Any, Optional, Union import grpc import typer from rich.console import Console from rich.table import Table from rich.text import Text +from typer import Exit from flwr.cli.config_utils import ( load_and_validate, @@ -36,7 +38,7 @@ from flwr.common.constant import FAB_CONFIG_FILE, CliOutputFormat, SubStatus from flwr.common.date import format_timedelta, isoformat8601_utc from flwr.common.grpc import GRPC_MAX_MESSAGE_LENGTH, create_channel -from flwr.common.logger import log +from flwr.common.logger import log, redirect_output, remove_emojis, restore_output from flwr.common.serde import run_from_proto from flwr.common.typing import Run from flwr.proto.exec_pb2 import ( # pylint: disable=E0611 @@ -48,7 +50,7 @@ _RunListType = tuple[int, str, str, str, str, str, str, str, str] -def ls( +def ls( # pylint: disable=too-many-locals, too-many-branches app: Annotated[ Path, typer.Argument(help="Path of the Flower project"), @@ -71,9 +73,22 @@ def ls( help="Specific run ID to display", ), ] = None, + output_format: Annotated[ + str, + typer.Option( + "--format", + case_sensitive=False, + help="Format output using 'default' view or 'json'", + ), + ] = CliOutputFormat.DEFAULT, ) -> None: """List runs.""" + suppress_output = output_format == CliOutputFormat.JSON + captured_output = io.StringIO() try: + if suppress_output: + redirect_output(captured_output) + # Load and validate federation config typer.secho("Loading project configuration... ", fg=typer.colors.BLUE) @@ -105,11 +120,13 @@ def ls( # Display information about a specific run ID if run_id is not None: typer.echo(f"🔍 Displaying information for run ID {run_id}...") - _display_one_run(stub, run_id) + restore_output() + _display_one_run(stub, run_id, output_format) # By default, list all runs else: typer.echo("📄 Listing all runs...") - _list_runs(stub) + restore_output() + _list_runs(stub, output_format) except ValueError as err: typer.secho( @@ -120,9 +137,21 @@ def ls( raise typer.Exit(code=1) from err finally: channel.close() - # pylint: disable=broad-except - except (typer.Exit, Exception): - _print_json_error() + except (typer.Exit, Exception) as err: # pylint: disable=broad-except + if suppress_output: + restore_output() + e_message = captured_output.getvalue() + _print_json_error(e_message, err) + else: + typer.secho( + f"{err}", + fg=typer.colors.RED, + bold=True, + ) + finally: + if suppress_output: + restore_output() + captured_output.close() def on_channel_state_change(channel_connectivity: str) -> None: @@ -313,5 +342,13 @@ def _display_one_run( Console().print(_to_table(formatted_runs)) -def _print_json_error() -> None: +def _print_json_error(msg: str, e: Union[Exit, Exception]) -> None: """Print error message as JSON.""" + Console().print_json( + json.dumps( + { + "success": False, + "error-message": remove_emojis(str(msg) + "\n" + str(e)), + } + ) + ) From 0254c88eea143ee62a15f89d9d4e9f4182e1ed32 Mon Sep 17 00:00:00 2001 From: Javier Date: Wed, 4 Dec 2024 15:14:03 +0000 Subject: [PATCH 023/104] fix(framework:skip) Ensure `success` field in `flwr run` returned JSON is boolean (#4632) --- src/py/flwr/cli/run/run.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/py/flwr/cli/run/run.py b/src/py/flwr/cli/run/run.py index 05c4bf183dda..5696533a8f14 100644 --- a/src/py/flwr/cli/run/run.py +++ b/src/py/flwr/cli/run/run.py @@ -187,7 +187,7 @@ def _run_with_exec_api( if output_format == CliOutputFormat.JSON: run_output = json.dumps( { - "success": "true" if res.HasField("run_id") else "false", + "success": res.HasField("run_id"), "run-id": res.run_id if res.HasField("run_id") else None, "fab-id": fab_id, "fab-name": fab_id.rsplit("/", maxsplit=1)[-1], From 738929599d7f5ff9787e54932ce289add1aa9bed Mon Sep 17 00:00:00 2001 From: Javier Date: Wed, 4 Dec 2024 16:53:31 +0000 Subject: [PATCH 024/104] fix(framework:skip) Ensure `success` key is always present in JSON output for `flwr ls` (#4633) --- src/py/flwr/cli/ls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/py/flwr/cli/ls.py b/src/py/flwr/cli/ls.py index f1c6a242cd33..45956bae0dc2 100644 --- a/src/py/flwr/cli/ls.py +++ b/src/py/flwr/cli/ls.py @@ -305,7 +305,7 @@ def _to_json(run_list: list[_RunListType]) -> str: } ) - return json.dumps({"runs": runs_list}) + return json.dumps({"success": True, "runs": runs_list}) def _list_runs( From ee85fd73b35e0c8e239c3f9dd96324116abcc13f Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Thu, 5 Dec 2024 10:17:59 +0000 Subject: [PATCH 025/104] feat(framework) Add StopRun RPC to exec.proto (#4639) --- src/proto/flwr/proto/exec.proto | 5 ++++ src/py/flwr/proto/exec_pb2.py | 10 +++++--- src/py/flwr/proto/exec_pb2.pyi | 22 +++++++++++++++++ src/py/flwr/proto/exec_pb2_grpc.py | 34 ++++++++++++++++++++++++++ src/py/flwr/proto/exec_pb2_grpc.pyi | 13 ++++++++++ src/py/flwr/superexec/exec_servicer.py | 9 +++++++ 6 files changed, 90 insertions(+), 3 deletions(-) diff --git a/src/proto/flwr/proto/exec.proto b/src/proto/flwr/proto/exec.proto index aa7bd0ea37b3..6fb2bec9f0a3 100644 --- a/src/proto/flwr/proto/exec.proto +++ b/src/proto/flwr/proto/exec.proto @@ -26,6 +26,9 @@ service Exec { // Start run upon request rpc StartRun(StartRunRequest) returns (StartRunResponse) {} + // Stop run upon request + rpc StopRun(StopRunRequest) returns (StopRunResponse) {} + // Start log stream upon request rpc StreamLogs(StreamLogsRequest) returns (stream StreamLogsResponse) {} @@ -52,3 +55,5 @@ message ListRunsResponse { map run_dict = 1; string now = 2; } +message StopRunRequest { uint64 run_id = 1; } +message StopRunResponse { bool success = 1; } diff --git a/src/py/flwr/proto/exec_pb2.py b/src/py/flwr/proto/exec_pb2.py index d06c5af3007d..18253dd1d02a 100644 --- a/src/py/flwr/proto/exec_pb2.py +++ b/src/py/flwr/proto/exec_pb2.py @@ -18,7 +18,7 @@ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x14\x66lwr/proto/run.proto\"\xfb\x01\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12\x35\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x19.flwr.proto.ConfigsRecord\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"2\n\x10StartRunResponse\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"<\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x17\n\x0f\x61\x66ter_timestamp\x18\x02 \x01(\x01\"B\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t\x12\x18\n\x10latest_timestamp\x18\x02 \x01(\x01\"1\n\x0fListRunsRequest\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"\x9d\x01\n\x10ListRunsResponse\x12;\n\x08run_dict\x18\x01 \x03(\x0b\x32).flwr.proto.ListRunsResponse.RunDictEntry\x12\x0b\n\x03now\x18\x02 \x01(\t\x1a?\n\x0cRunDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\x1e\n\x05value\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run:\x02\x38\x01\x32\xe9\x01\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x12G\n\x08ListRuns\x12\x1b.flwr.proto.ListRunsRequest\x1a\x1c.flwr.proto.ListRunsResponse\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x14\x66lwr/proto/run.proto\"\xfb\x01\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12\x35\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x19.flwr.proto.ConfigsRecord\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"2\n\x10StartRunResponse\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"<\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x17\n\x0f\x61\x66ter_timestamp\x18\x02 \x01(\x01\"B\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t\x12\x18\n\x10latest_timestamp\x18\x02 \x01(\x01\"1\n\x0fListRunsRequest\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"\x9d\x01\n\x10ListRunsResponse\x12;\n\x08run_dict\x18\x01 \x03(\x0b\x32).flwr.proto.ListRunsResponse.RunDictEntry\x12\x0b\n\x03now\x18\x02 \x01(\t\x1a?\n\x0cRunDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\x1e\n\x05value\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run:\x02\x38\x01\" \n\x0eStopRunRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"\"\n\x0fStopRunResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x32\xaf\x02\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12\x44\n\x07StopRun\x12\x1a.flwr.proto.StopRunRequest\x1a\x1b.flwr.proto.StopRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x12G\n\x08ListRuns\x12\x1b.flwr.proto.ListRunsRequest\x1a\x1c.flwr.proto.ListRunsResponse\"\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -45,6 +45,10 @@ _globals['_LISTRUNSRESPONSE']._serialized_end=782 _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_start=719 _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_end=782 - _globals['_EXEC']._serialized_start=785 - _globals['_EXEC']._serialized_end=1018 + _globals['_STOPRUNREQUEST']._serialized_start=784 + _globals['_STOPRUNREQUEST']._serialized_end=816 + _globals['_STOPRUNRESPONSE']._serialized_start=818 + _globals['_STOPRUNRESPONSE']._serialized_end=852 + _globals['_EXEC']._serialized_start=855 + _globals['_EXEC']._serialized_end=1158 # @@protoc_insertion_point(module_scope) diff --git a/src/py/flwr/proto/exec_pb2.pyi b/src/py/flwr/proto/exec_pb2.pyi index 1cc971444e32..70ff9147e02a 100644 --- a/src/py/flwr/proto/exec_pb2.pyi +++ b/src/py/flwr/proto/exec_pb2.pyi @@ -134,3 +134,25 @@ class ListRunsResponse(google.protobuf.message.Message): ) -> None: ... def ClearField(self, field_name: typing_extensions.Literal["now",b"now","run_dict",b"run_dict"]) -> None: ... global___ListRunsResponse = ListRunsResponse + +class StopRunRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + RUN_ID_FIELD_NUMBER: builtins.int + run_id: builtins.int + def __init__(self, + *, + run_id: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ... +global___StopRunRequest = StopRunRequest + +class StopRunResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + SUCCESS_FIELD_NUMBER: builtins.int + success: builtins.bool + def __init__(self, + *, + success: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["success",b"success"]) -> None: ... +global___StopRunResponse = StopRunResponse diff --git a/src/py/flwr/proto/exec_pb2_grpc.py b/src/py/flwr/proto/exec_pb2_grpc.py index 63f9285fed58..9ce04915771d 100644 --- a/src/py/flwr/proto/exec_pb2_grpc.py +++ b/src/py/flwr/proto/exec_pb2_grpc.py @@ -19,6 +19,11 @@ def __init__(self, channel): request_serializer=flwr_dot_proto_dot_exec__pb2.StartRunRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_exec__pb2.StartRunResponse.FromString, ) + self.StopRun = channel.unary_unary( + '/flwr.proto.Exec/StopRun', + request_serializer=flwr_dot_proto_dot_exec__pb2.StopRunRequest.SerializeToString, + response_deserializer=flwr_dot_proto_dot_exec__pb2.StopRunResponse.FromString, + ) self.StreamLogs = channel.unary_stream( '/flwr.proto.Exec/StreamLogs', request_serializer=flwr_dot_proto_dot_exec__pb2.StreamLogsRequest.SerializeToString, @@ -41,6 +46,13 @@ def StartRun(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def StopRun(self, request, context): + """Stop run upon request + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def StreamLogs(self, request, context): """Start log stream upon request """ @@ -63,6 +75,11 @@ def add_ExecServicer_to_server(servicer, server): request_deserializer=flwr_dot_proto_dot_exec__pb2.StartRunRequest.FromString, response_serializer=flwr_dot_proto_dot_exec__pb2.StartRunResponse.SerializeToString, ), + 'StopRun': grpc.unary_unary_rpc_method_handler( + servicer.StopRun, + request_deserializer=flwr_dot_proto_dot_exec__pb2.StopRunRequest.FromString, + response_serializer=flwr_dot_proto_dot_exec__pb2.StopRunResponse.SerializeToString, + ), 'StreamLogs': grpc.unary_stream_rpc_method_handler( servicer.StreamLogs, request_deserializer=flwr_dot_proto_dot_exec__pb2.StreamLogsRequest.FromString, @@ -100,6 +117,23 @@ def StartRun(request, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + @staticmethod + def StopRun(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flwr.proto.Exec/StopRun', + flwr_dot_proto_dot_exec__pb2.StopRunRequest.SerializeToString, + flwr_dot_proto_dot_exec__pb2.StopRunResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + @staticmethod def StreamLogs(request, target, diff --git a/src/py/flwr/proto/exec_pb2_grpc.pyi b/src/py/flwr/proto/exec_pb2_grpc.pyi index 550c282bface..12f42befab06 100644 --- a/src/py/flwr/proto/exec_pb2_grpc.pyi +++ b/src/py/flwr/proto/exec_pb2_grpc.pyi @@ -14,6 +14,11 @@ class ExecStub: flwr.proto.exec_pb2.StartRunResponse] """Start run upon request""" + StopRun: grpc.UnaryUnaryMultiCallable[ + flwr.proto.exec_pb2.StopRunRequest, + flwr.proto.exec_pb2.StopRunResponse] + """Stop run upon request""" + StreamLogs: grpc.UnaryStreamMultiCallable[ flwr.proto.exec_pb2.StreamLogsRequest, flwr.proto.exec_pb2.StreamLogsResponse] @@ -34,6 +39,14 @@ class ExecServicer(metaclass=abc.ABCMeta): """Start run upon request""" pass + @abc.abstractmethod + def StopRun(self, + request: flwr.proto.exec_pb2.StopRunRequest, + context: grpc.ServicerContext, + ) -> flwr.proto.exec_pb2.StopRunResponse: + """Stop run upon request""" + pass + @abc.abstractmethod def StreamLogs(self, request: flwr.proto.exec_pb2.StreamLogsRequest, diff --git a/src/py/flwr/superexec/exec_servicer.py b/src/py/flwr/superexec/exec_servicer.py index 3a484ea8c47c..64fc17695afc 100644 --- a/src/py/flwr/superexec/exec_servicer.py +++ b/src/py/flwr/superexec/exec_servicer.py @@ -36,6 +36,8 @@ ListRunsResponse, StartRunRequest, StartRunResponse, + StopRunRequest, + StopRunResponse, StreamLogsRequest, StreamLogsResponse, ) @@ -126,6 +128,13 @@ def ListRuns( # Handle `flwr ls --run-id ` return _create_list_runs_response({request.run_id}, state) + def StopRun( + self, request: StopRunRequest, context: grpc.ServicerContext + ) -> StopRunResponse: + """Stop a given run ID.""" + log(INFO, "ExecServicer.StopRun") + raise NotImplementedError() + def _create_list_runs_response(run_ids: set[int], state: LinkState) -> ListRunsResponse: """Create response for `flwr ls --runs` and `flwr ls --run-id `.""" From 0ea7a0e0ae44219426c4e056a57c5328ecbd37de Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Thu, 5 Dec 2024 10:44:42 +0000 Subject: [PATCH 026/104] feat(framework) Add `StopRun` to `ExecServicer` (#4634) Co-authored-by: Daniel J. Beutel --- src/py/flwr/superexec/exec_servicer.py | 24 ++++++++++++++++++-- src/py/flwr/superexec/exec_servicer_test.py | 25 +++++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/py/flwr/superexec/exec_servicer.py b/src/py/flwr/superexec/exec_servicer.py index 64fc17695afc..700c6bf40708 100644 --- a/src/py/flwr/superexec/exec_servicer.py +++ b/src/py/flwr/superexec/exec_servicer.py @@ -23,13 +23,14 @@ import grpc from flwr.common import now -from flwr.common.constant import LOG_STREAM_INTERVAL, Status +from flwr.common.constant import LOG_STREAM_INTERVAL, Status, SubStatus from flwr.common.logger import log from flwr.common.serde import ( configs_record_from_proto, run_to_proto, user_config_from_proto, ) +from flwr.common.typing import RunStatus from flwr.proto import exec_pb2_grpc # pylint: disable=E0611 from flwr.proto.exec_pb2 import ( # pylint: disable=E0611 ListRunsRequest, @@ -133,7 +134,26 @@ def StopRun( ) -> StopRunResponse: """Stop a given run ID.""" log(INFO, "ExecServicer.StopRun") - raise NotImplementedError() + state = self.linkstate_factory.state() + + # Exit if `run_id` not found + if not state.get_run(request.run_id): + context.abort( + grpc.StatusCode.NOT_FOUND, f"Run ID {request.run_id} not found" + ) + + run_status = state.get_run_status({request.run_id})[request.run_id] + if run_status.status == Status.FINISHED: + context.abort( + grpc.StatusCode.FAILED_PRECONDITION, + f"Run ID {request.run_id} is already finished", + ) + + update_success = state.update_run_status( + run_id=request.run_id, + new_status=RunStatus(Status.FINISHED, SubStatus.STOPPED, ""), + ) + return StopRunResponse(success=update_success) def _create_list_runs_response(run_ids: set[int], state: LinkState) -> ListRunsResponse: diff --git a/src/py/flwr/superexec/exec_servicer_test.py b/src/py/flwr/superexec/exec_servicer_test.py index 6045d6eb1a63..365dfed33d7a 100644 --- a/src/py/flwr/superexec/exec_servicer_test.py +++ b/src/py/flwr/superexec/exec_servicer_test.py @@ -21,9 +21,12 @@ from unittest.mock import MagicMock, Mock from flwr.common import ConfigsRecord, now +from flwr.common.constant import Status, SubStatus +from flwr.common.typing import RunStatus from flwr.proto.exec_pb2 import ( # pylint: disable=E0611 ListRunsRequest, StartRunRequest, + StopRunRequest, ) from flwr.server.superlink.ffs.ffs_factory import FfsFactory from flwr.server.superlink.linkstate import LinkStateFactory @@ -104,3 +107,25 @@ def test_list_run_id(self) -> None: # Assert self.assertLess(abs(retrieved_timestamp - now().timestamp()), 1e-3) self.assertEqual(set(response.run_dict.keys()), {run_id}) + + def test_stop_run(self) -> None: + """Test StopRun method of ExecServicer.""" + # Prepare + run_id = self.state.create_run( + "mock_fabid", "mock_fabver", "fake_hash", {}, ConfigsRecord() + ) + self.servicer.executor = MagicMock() + expected_run_status = RunStatus(Status.FINISHED, SubStatus.STOPPED, "") + self.servicer.executor.stop_run = lambda input_run_id: ( + input_run_id == run_id + ) & self.state.update_run_status(input_run_id, new_status=expected_run_status) + + # Execute + response = self.servicer.StopRun(StopRunRequest(run_id=run_id), Mock()) + run_state = self.state.get_run(run_id) + + # Assert + self.assertTrue(response.success) + self.assertIsNotNone(run_state) + if run_state is not None: + self.assertEqual(run_state.status, expected_run_status) From f7553c6b91786b7946e7a8934dad9cb7d591e356 Mon Sep 17 00:00:00 2001 From: Dimitris Stripelis <11239849+dstripelis@users.noreply.github.com> Date: Sat, 7 Dec 2024 13:11:56 +0200 Subject: [PATCH 027/104] docs(framework) Add how-to-guide to run Flower on Microsoft Azure VM instances (#4625) --- doc/source/how-to-run-flower-on-azure.rst | 225 ++++++++++++++++++++++ doc/source/index.rst | 1 + 2 files changed, 226 insertions(+) create mode 100644 doc/source/how-to-run-flower-on-azure.rst diff --git a/doc/source/how-to-run-flower-on-azure.rst b/doc/source/how-to-run-flower-on-azure.rst new file mode 100644 index 000000000000..dfeda022377f --- /dev/null +++ b/doc/source/how-to-run-flower-on-azure.rst @@ -0,0 +1,225 @@ +.. |authenticate_supernodes| replace:: Authenticate Supernodes + +.. _authenticate_supernodes: how-to-authenticate-supernodes.html + +.. |enable_tls_connections| replace:: Enable TLS Connections + +.. _enable_tls_connections: how-to-enable-tls-connections.html + +.. |flower_architecture_link| replace:: Flower Architecture + +.. _flower_architecture_link: explanation-flower-architecture.html + +.. |flower_docker_index| replace:: Run Flower using Docker + +.. _flower_docker_index: docker/index.html + +Run Flower on Azure +=================== + +.. note:: + + There are many ways to deploy Flower on Microst Azure. The instructions provided in + this guide is just a basic walkthrough, step-by-step guide on how to quickly setup + and run a Flower application on a Federated Learning environment on Microst Azure. + +In this how-to guide, we want to create a Federated Learning environment on Microst +Azure using three Virtual Machines (VMs). From the three machines, one machine will be +used as the Federation server and two as the Federation clients. Our goal is to create a +Flower federation on Microst Azure where we can run Flower apps from our local machine, +e.g., laptop. + +On the Federation server VM we will deploy the long-running Flower server +(``SuperLink``) and on the two Federation client VMs we will deploy the long-running +Flower client (``SuperNode``). For more details For more details regarding the +``SuperLink`` and ``SuperNode`` concepts, please see the |flower_architecture_link|_ . + +Azure VMs +--------- + +First we need to create the three VMs configure their Python environments, and inbound +networking rules to allow cross-VM communication. + +VM Create +~~~~~~~~~ + +Assuming we are already inside the Microst Azure portal, we navigate to the ``Create`` +page and we select ``Azure virtual machine``. In the new page, for each VM we edit the +properties as follows: + +.. list-table:: + :align: left + :widths: 13 30 + :header-rows: 0 + + - - **Virtual machine name** + - for server machine we can use ``flower-server`` and for clients, + ``flower-client-1`` and ``flower-client-2`` + - - **Image** + - in this guide, we use ``Ubuntu Server 24.04 - x64 Gen2 LTS`` + - - **Size** + - in this guide, we use ``Standard_D2s_v3 - 2 vcpus, 8GiB memory`` + +.. tip:: + + For resource group, we can create a new group and assign it to all VMs. + +When each VM instance has been created the portal will allow you to download the public +key (.pem) of each instance. Make sure you save this key in safe place and change its +permissions to user read only, i.e., run the ``chmod 400 `` command +for every .pem file. + +Once all three VMs are created then navigate to the overview page where all three VMs +are listed and open every other VM, and copy its Public IP address. Using the Public IP +address and the public key (after changing the permissions), login to the instances from +our local machine by running the following command (by default Azure creates the +``azureuser``): + +.. code-block:: bash + + ssh -i azureuser@ + +VM Networking +~~~~~~~~~~~~~ + +During the execution of the Flower application, the server VM (``SuperLink``) will be +responsible to orchestrate the execution of the application across the client VMs +(``SuperNode``). When the SuperLink server starts, by default, it listens to the +following ports: ``{9092, 9093}``. Port `9092` is used to communicate with the +Federation clients (``SuperNode``) and port ``9093`` to receive and execute Flower +applications. + +Therefore, to enable this communication we need to allow inbound traffic to the server +VM instance. To achieve this, we need to navigate to the Networking page of the server +VM in the Microsoft Azure portal. There, we will click the ``Add inbound port rule``. In +the new window that appears, we edit the rule properties as follows: + +The rest of the fields can be left at their default values. + +.. list-table:: + :align: left + :widths: 25 30 + :header-rows: 0 + + - - **Source** + - ``IP Addresses`` + - - **Source IP addresses/CIDR ranges** + - add client VMs' Public IP (separated by comma) + - - **Destination** + - ``Any`` + - - **Service** + - ``custom`` + - - **Destination port ranges** + - ``9092`` + - - **Protocol** + - ``TCP`` + +Finally, we need to also open port 9093 to allow receiving and executing incoming +application requests. To enable this we just need to repeat the steps above, i.e., +create a new inbound rule, where for port range we assign port 9093. If we already know +the Public IP from which our local machine (e.g., laptop) will be submitting +applications to the Azure cluster, then we just need to specify the Source IP +address/CIDR range. However, if we want to keep the port widely open we simply need to +change source to ``Any``. + +To be more precise, if we know the Public IP of our machine, then we make the following +changes: + +.. list-table:: + :align: left + :widths: 25 25 + :header-rows: 0 + + - - **Source IP addresses/CIDR ranges** + - add machine's Public IP + - - **Destination port ranges** + - ``9093`` + +Otherwise, we change the properties as follows: + +.. list-table:: + :align: left + :widths: 25 25 + :header-rows: 0 + + - - **Source** + - ``Any`` + - - **Destination port ranges** + - ``9093`` + +Flower Environment +------------------ + +Assuming we have been able to login to each VM, and create a Python environment with +Flower and all its dependencies installed (``pip install flwr``), we can create a Flower +application by running the ``flwr new`` command. The console will then prompt us to give +a name to the project, e.g., ``flwr_azure_test``, the name of the author and select the +type of the Flower Framework we want to run, e.g., ``numpy``. + +.. note:: + + An alternative approach would be to use Docker in each VM, with each image + containing the necessary environment and dependencies. For more details please refer + to the |flower_docker_index|_ guide. + +Server Initialization +~~~~~~~~~~~~~~~~~~~~~ + +After configuring the Flower application environment, we proceed by starting the Flower +long-running processes (i.e., ``SuperLink`` and ``SuperNode``) at each VM instance. In +particular, we need to run the following commands, first in the server (``SuperLink``) +and then at each client (``SuperNode``). + +.. note:: + + To enable authentication and encrypted communication during the execution lifecycle + of the Flower application, please have a look at the following resources: + |authenticate_supernodes|_, |enable_tls_connections|_ + +.. code-block:: bash + + # Server VM (SuperLink) + flower-superlink --insecure + + # Client-1 VM (SuperNode-1) + flower-supernode \ + --insecure \ + --clientappio-api-address="0.0.0.0:9094" \ # SuperNode listening port + --superlink="SUPERLINK_PUBLIC_IP:9092" # SuperLink public ip and port + + # Client-2 VM (SuperNode-2) + flower-supernode \ + --insecure \ + --clientappio-api-address="0.0.0.0:9095" \ # SuperNode listening port + --superlink="SUPERLINK_PUBLIC_IP:9092" # SuperLink public ip and port + +Run Flower App +~~~~~~~~~~~~~~ + +Finally, after all running Flower processes have been initialized on the Microsoft Azure +cluster, in our local machine, we first need to install Flower and can create a project +with a similar structure as the one we have in the server and the clients, or copy the +project structure from one of them. Once we have the project locally, we can open the +``pyproject.toml`` file, and then add the following sections: + +.. code-block:: bash + + [tool.flwr.federations] + default = "my-federation" # replaced the default value with "my-federation" + + [tool.flwr.federations.my-federation] # replaced name with "my-federation" + address = "SUPERLINK_PUBLIC_IP:9093" # Address of the SuperLink Exec API + insecure = true + +Then from our local machine we need to run ``flwr run . my-federation``. + +Next Steps +---------- + +.. warning:: + + This guide is not suitable for production environments due to missing authentication + and TLS security. + +To enable authentication and establish secure connections, please refer to the following +resources: |authenticate_supernodes|_, |enable_tls_connections|_ diff --git a/doc/source/index.rst b/doc/source/index.rst index 8695935acb04..ddb123acd27b 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -99,6 +99,7 @@ Problem-oriented how-to guides show step-by-step how to achieve a specific goal. how-to-use-differential-privacy how-to-authenticate-supernodes how-to-implement-fedbn + how-to-run-flower-on-azure docker/index how-to-upgrade-to-flower-1.0 how-to-upgrade-to-flower-1.13 From a5f4295ea9af0e5f944d0875b12cd002a31c28d7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 8 Dec 2024 09:10:38 +0100 Subject: [PATCH 028/104] Update text and language files (#4654) --- doc/locales/fr/LC_MESSAGES/framework-docs.po | 402 +++++++++++++++-- doc/locales/ko/LC_MESSAGES/framework-docs.po | 404 +++++++++++++++-- .../pt_BR/LC_MESSAGES/framework-docs.po | 398 +++++++++++++++-- .../zh_Hans/LC_MESSAGES/framework-docs.po | 405 ++++++++++++++++-- 4 files changed, 1497 insertions(+), 112 deletions(-) diff --git a/doc/locales/fr/LC_MESSAGES/framework-docs.po b/doc/locales/fr/LC_MESSAGES/framework-docs.po index 40aaec1a1087..94cb3b821cd1 100644 --- a/doc/locales/fr/LC_MESSAGES/framework-docs.po +++ b/doc/locales/fr/LC_MESSAGES/framework-docs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower Docs\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-11-30 00:31+0000\n" +"POT-Creation-Date: 2024-12-08 00:35+0000\n" "PO-Revision-Date: 2023-09-05 17:54+0000\n" "Last-Translator: Charles Beauville \n" "Language: fr\n" @@ -6237,6 +6237,7 @@ msgid "" msgstr "" #: ../../source/how-to-implement-fedbn.rst:99 +#: ../../source/how-to-run-flower-on-azure.rst:217 msgid "Next Steps" msgstr "Prochaines étapes" @@ -6793,6 +6794,300 @@ msgstr "" "Pour les simulations qui utilisent le moteur de client virtuel, ``flwr-" "nightly`` doit être installé avec l'option ``simulation``: :" +#: ../../source/how-to-run-flower-on-azure.rst:18 +#, fuzzy +msgid "Run Flower on Azure" +msgstr "Serveur de Flower" + +#: ../../source/how-to-run-flower-on-azure.rst:22 +msgid "" +"There are many ways to deploy Flower on Microst Azure. The instructions " +"provided in this guide is just a basic walkthrough, step-by-step guide on" +" how to quickly setup and run a Flower application on a Federated " +"Learning environment on Microst Azure." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:26 +msgid "" +"In this how-to guide, we want to create a Federated Learning environment " +"on Microst Azure using three Virtual Machines (VMs). From the three " +"machines, one machine will be used as the Federation server and two as " +"the Federation clients. Our goal is to create a Flower federation on " +"Microst Azure where we can run Flower apps from our local machine, e.g., " +"laptop." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:32 +msgid "" +"On the Federation server VM we will deploy the long-running Flower server" +" (``SuperLink``) and on the two Federation client VMs we will deploy the " +"long-running Flower client (``SuperNode``). For more details For more " +"details regarding the ``SuperLink`` and ``SuperNode`` concepts, please " +"see the |flower_architecture_link|_ ." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:38 +msgid "Azure VMs" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:40 +msgid "" +"First we need to create the three VMs configure their Python " +"environments, and inbound networking rules to allow cross-VM " +"communication." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:44 +msgid "VM Create" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:46 +msgid "" +"Assuming we are already inside the Microst Azure portal, we navigate to " +"the ``Create`` page and we select ``Azure virtual machine``. In the new " +"page, for each VM we edit the properties as follows:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:55 +msgid "**Virtual machine name**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:56 +msgid "" +"for server machine we can use ``flower-server`` and for clients, " +"``flower-client-1`` and ``flower-client-2``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:58 +#, fuzzy +msgid "**Image**" +msgstr "**Apporter des modifications**" + +#: ../../source/how-to-run-flower-on-azure.rst:59 +msgid "in this guide, we use ``Ubuntu Server 24.04 - x64 Gen2 LTS``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:60 +msgid "**Size**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:61 +msgid "in this guide, we use ``Standard_D2s_v3 - 2 vcpus, 8GiB memory``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:65 +msgid "For resource group, we can create a new group and assign it to all VMs." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:67 +msgid "" +"When each VM instance has been created the portal will allow you to " +"download the public key (.pem) of each instance. Make sure you save this " +"key in safe place and change its permissions to user read only, i.e., run" +" the ``chmod 400 `` command for every .pem file." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:72 +msgid "" +"Once all three VMs are created then navigate to the overview page where " +"all three VMs are listed and open every other VM, and copy its Public IP " +"address. Using the Public IP address and the public key (after changing " +"the permissions), login to the instances from our local machine by " +"running the following command (by default Azure creates the " +"``azureuser``):" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:83 +msgid "VM Networking" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:85 +msgid "" +"During the execution of the Flower application, the server VM " +"(``SuperLink``) will be responsible to orchestrate the execution of the " +"application across the client VMs (``SuperNode``). When the SuperLink " +"server starts, by default, it listens to the following ports: ``{9092, " +"9093}``. Port `9092` is used to communicate with the Federation clients " +"(``SuperNode``) and port ``9093`` to receive and execute Flower " +"applications." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:92 +msgid "" +"Therefore, to enable this communication we need to allow inbound traffic " +"to the server VM instance. To achieve this, we need to navigate to the " +"Networking page of the server VM in the Microsoft Azure portal. There, we" +" will click the ``Add inbound port rule``. In the new window that " +"appears, we edit the rule properties as follows:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:97 +msgid "The rest of the fields can be left at their default values." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:104 +#: ../../source/how-to-run-flower-on-azure.rst:145 +#, fuzzy +msgid "**Source**" +msgstr "flower-superlink" + +#: ../../source/how-to-run-flower-on-azure.rst:105 +msgid "``IP Addresses``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:106 +#: ../../source/how-to-run-flower-on-azure.rst:133 +msgid "**Source IP addresses/CIDR ranges**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:107 +msgid "add client VMs' Public IP (separated by comma)" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:108 +#, fuzzy +msgid "**Destination**" +msgstr "Dépréciations" + +#: ../../source/how-to-run-flower-on-azure.rst:109 +#: ../../source/how-to-run-flower-on-azure.rst:146 +msgid "``Any``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:110 +#, fuzzy +msgid "**Service**" +msgstr "flower-superlink" + +#: ../../source/how-to-run-flower-on-azure.rst:111 +msgid "``custom``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:112 +#: ../../source/how-to-run-flower-on-azure.rst:135 +#: ../../source/how-to-run-flower-on-azure.rst:147 +msgid "**Destination port ranges**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:113 +msgid "``9092``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:114 +msgid "**Protocol**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:115 +#, fuzzy +msgid "``TCP``" +msgstr "Configurer les clients" + +#: ../../source/how-to-run-flower-on-azure.rst:117 +msgid "" +"Finally, we need to also open port 9093 to allow receiving and executing " +"incoming application requests. To enable this we just need to repeat the " +"steps above, i.e., create a new inbound rule, where for port range we " +"assign port 9093. If we already know the Public IP from which our local " +"machine (e.g., laptop) will be submitting applications to the Azure " +"cluster, then we just need to specify the Source IP address/CIDR range. " +"However, if we want to keep the port widely open we simply need to change" +" source to ``Any``." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:125 +msgid "" +"To be more precise, if we know the Public IP of our machine, then we make" +" the following changes:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:134 +msgid "add machine's Public IP" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:136 +#: ../../source/how-to-run-flower-on-azure.rst:148 +msgid "``9093``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:138 +msgid "Otherwise, we change the properties as follows:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:151 +#, fuzzy +msgid "Flower Environment" +msgstr "Créer/Supprimer l'environment virtuel" + +#: ../../source/how-to-run-flower-on-azure.rst:153 +msgid "" +"Assuming we have been able to login to each VM, and create a Python " +"environment with Flower and all its dependencies installed (``pip install" +" flwr``), we can create a Flower application by running the ``flwr new`` " +"command. The console will then prompt us to give a name to the project, " +"e.g., ``flwr_azure_test``, the name of the author and select the type of " +"the Flower Framework we want to run, e.g., ``numpy``." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:161 +msgid "" +"An alternative approach would be to use Docker in each VM, with each " +"image containing the necessary environment and dependencies. For more " +"details please refer to the |flower_docker_index|_ guide." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:166 +#, fuzzy +msgid "Server Initialization" +msgstr "Vérifie l'installation" + +#: ../../source/how-to-run-flower-on-azure.rst:168 +msgid "" +"After configuring the Flower application environment, we proceed by " +"starting the Flower long-running processes (i.e., ``SuperLink`` and " +"``SuperNode``) at each VM instance. In particular, we need to run the " +"following commands, first in the server (``SuperLink``) and then at each " +"client (``SuperNode``)." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:175 +msgid "" +"To enable authentication and encrypted communication during the execution" +" lifecycle of the Flower application, please have a look at the following" +" resources: |authenticate_supernodes|_, |enable_tls_connections|_" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:197 +#, fuzzy +msgid "Run Flower App" +msgstr "Serveur de Flower" + +#: ../../source/how-to-run-flower-on-azure.rst:199 +msgid "" +"Finally, after all running Flower processes have been initialized on the " +"Microsoft Azure cluster, in our local machine, we first need to install " +"Flower and can create a project with a similar structure as the one we " +"have in the server and the clients, or copy the project structure from " +"one of them. Once we have the project locally, we can open the " +"``pyproject.toml`` file, and then add the following sections:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:214 +msgid "Then from our local machine we need to run ``flwr run . my-federation``." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:221 +msgid "" +"This guide is not suitable for production environments due to missing " +"authentication and TLS security." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:224 +msgid "" +"To enable authentication and establish secure connections, please refer " +"to the following resources: |authenticate_supernodes|_, " +"|enable_tls_connections|_" +msgstr "" + #: ../../source/how-to-run-simulations.rst:22 #, fuzzy msgid "Run simulations" @@ -8569,7 +8864,7 @@ msgstr "Quickstart tutorials" msgid "How-to guides" msgstr "Guides" -#: ../../source/index.rst:107 ../../source/index.rst:112 +#: ../../source/index.rst:108 ../../source/index.rst:113 msgid "Explanations" msgstr "Explications" @@ -8577,26 +8872,26 @@ msgstr "Explications" msgid "API reference" msgstr "Référence pour l'API" -#: ../../source/index.rst:138 +#: ../../source/index.rst:139 msgid "Reference docs" msgstr "Référence pour la documentation" -#: ../../source/index.rst:153 +#: ../../source/index.rst:154 #, fuzzy msgid "Contributor tutorials" msgstr "Configuration du contributeur" -#: ../../source/index.rst:160 +#: ../../source/index.rst:161 #, fuzzy msgid "Contributor how-to guides" msgstr "Guide pour les contributeurs" -#: ../../source/index.rst:172 +#: ../../source/index.rst:173 #, fuzzy msgid "Contributor explanations" msgstr "Explications" -#: ../../source/index.rst:178 +#: ../../source/index.rst:179 #, fuzzy msgid "Contributor references" msgstr "Configuration du contributeur" @@ -8706,7 +9001,7 @@ msgstr "" "Guides orientés sur la résolutions étapes par étapes de problèmes ou " "objectifs specifiques." -#: ../../source/index.rst:109 +#: ../../source/index.rst:110 msgid "" "Understanding-oriented concept guides explain and discuss key topics and " "underlying ideas behind Flower and collaborative AI." @@ -8714,29 +9009,29 @@ msgstr "" "Guides orientés sur la compréhension et l'explication des sujets et idées" " de fonds sur lesquels sont construits Flower et l'IA collaborative." -#: ../../source/index.rst:121 +#: ../../source/index.rst:122 #, fuzzy msgid "References" msgstr "Référence" -#: ../../source/index.rst:123 +#: ../../source/index.rst:124 msgid "Information-oriented API reference and other reference material." msgstr "Référence de l'API orientée sur l'information pure." -#: ../../source/index.rst:132::1 +#: ../../source/index.rst:133::1 msgid ":py:obj:`flwr `\\" msgstr "" -#: ../../source/index.rst:132::1 flwr:1 of +#: ../../source/index.rst:133::1 flwr:1 of msgid "Flower main package." msgstr "" -#: ../../source/index.rst:148 +#: ../../source/index.rst:149 #, fuzzy msgid "Contributor docs" msgstr "Configuration du contributeur" -#: ../../source/index.rst:150 +#: ../../source/index.rst:151 #, fuzzy msgid "" "The Flower community welcomes contributions. The following docs are " @@ -8909,6 +9204,15 @@ msgstr "" msgid "Specific run ID to display" msgstr "" +#: ../../flwr ls:1 run:1 +msgid "Format output using 'default' view or 'json'" +msgstr "" + +#: ../../flwr ls:1 run:1 +#, fuzzy +msgid "``'default'``" +msgstr "Flux de travail" + #: ../../flwr ls:1 #, fuzzy msgid "Path of the Flower project" @@ -28908,7 +29212,7 @@ msgstr "" "chose d'autre, comme la régression linéaire classique." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|80152fa658904be08c849b4a594b76e1|" +msgid "|dbd9718fb89b4e219a54b72b6eecf502|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -28927,7 +29231,7 @@ msgstr "" " Go." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|35b60a1068f944ce937ac2988661aad5|" +msgid "|18916394e69e4fdaafbb56f7bba690d3|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -28959,7 +29263,7 @@ msgstr "" "chanson." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|efead7f2c2224b60b7b42705004c15e6|" +msgid "|20988fac7e2e497ea15f786730279299|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -28980,7 +29284,7 @@ msgstr "" " données pour la même tâche." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|5421fee4e7ed450c903cbcd8a9d8a5d4|" +msgid "|5d612ca92b074af4a034bf4c0f498d2e|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -29002,7 +29306,7 @@ msgstr "" "cloud." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|811fcf35e9214bd5b4e613e41f7c0a27|" +msgid "|6721ae86e3f348e2bce58d358a2ee79c|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -29023,7 +29327,7 @@ msgstr "" "appuyés." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|e61d38b0948f4c07a7257755f3799b54|" +msgid "|d255f931abb44ca8a7eba0d90dfcf6a1|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -29049,7 +29353,7 @@ msgstr "" " sur un serveur centralisé." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|e82c29351e2e480087c61b939eb7c041|" +msgid "|f98da3b55eca452390fb33429a7d7ebe|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -29068,7 +29372,7 @@ msgstr "" "suffisantes pour former un bon modèle." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|21ca40f4fb1a405c89098fd1d24880a4|" +msgid "|10dc1f84d36b432e95d7f61fcd25a701|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -29299,7 +29603,7 @@ msgstr "" "partir d'un point de contrôle précédemment sauvegardé." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|1351a2629c2c46d981b13b19f9fa45f0|" +msgid "|f963159664b54e40a64a7f1c19414349|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -29334,7 +29638,7 @@ msgstr "" "rendements décroissants." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|124c2c188b994c7ab1c862cfdb326923|" +msgid "|3647c3b36916415ab40c1597a3ddd4b0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -29367,7 +29671,7 @@ msgstr "" "données locales, ou même de quelques étapes (mini-batchs)." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|42e1951c36f2406e93c7ae0ec5b299f9|" +msgid "|a3c07b2cf1214488a99267b3757d9426|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -29398,7 +29702,7 @@ msgstr "" " l'entraînement local." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|ec637b8a84234d068995ee1ccb2dd3b1|" +msgid "|2f6bce3bfacf4c85ac3a7e0fd1d5aa84|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -29458,7 +29762,7 @@ msgstr "" "times as much as each of the 100 examples." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|5bceb9d16b1a4d2db18d8a5b2f0cacb3|" +msgid "|19ebdce05cab40d791a2117f743290c3|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -29602,7 +29906,7 @@ msgstr "" "quel cadre de ML et n'importe quel langage de programmation." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|502b10044e864ca2b15282a393ab7faf|" +msgid "|dd729f8776d640ffb136545f3f26210f|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -43007,3 +43311,45 @@ msgstr "" #~ msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" #~ msgstr "" +#~ msgid "|80152fa658904be08c849b4a594b76e1|" +#~ msgstr "" + +#~ msgid "|35b60a1068f944ce937ac2988661aad5|" +#~ msgstr "" + +#~ msgid "|efead7f2c2224b60b7b42705004c15e6|" +#~ msgstr "" + +#~ msgid "|5421fee4e7ed450c903cbcd8a9d8a5d4|" +#~ msgstr "" + +#~ msgid "|811fcf35e9214bd5b4e613e41f7c0a27|" +#~ msgstr "" + +#~ msgid "|e61d38b0948f4c07a7257755f3799b54|" +#~ msgstr "" + +#~ msgid "|e82c29351e2e480087c61b939eb7c041|" +#~ msgstr "" + +#~ msgid "|21ca40f4fb1a405c89098fd1d24880a4|" +#~ msgstr "" + +#~ msgid "|1351a2629c2c46d981b13b19f9fa45f0|" +#~ msgstr "" + +#~ msgid "|124c2c188b994c7ab1c862cfdb326923|" +#~ msgstr "" + +#~ msgid "|42e1951c36f2406e93c7ae0ec5b299f9|" +#~ msgstr "" + +#~ msgid "|ec637b8a84234d068995ee1ccb2dd3b1|" +#~ msgstr "" + +#~ msgid "|5bceb9d16b1a4d2db18d8a5b2f0cacb3|" +#~ msgstr "" + +#~ msgid "|502b10044e864ca2b15282a393ab7faf|" +#~ msgstr "" + diff --git a/doc/locales/ko/LC_MESSAGES/framework-docs.po b/doc/locales/ko/LC_MESSAGES/framework-docs.po index 810bc10e99b3..7004d0cb5856 100644 --- a/doc/locales/ko/LC_MESSAGES/framework-docs.po +++ b/doc/locales/ko/LC_MESSAGES/framework-docs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower main\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-30 00:31+0000\n" +"POT-Creation-Date: 2024-12-08 00:35+0000\n" "PO-Revision-Date: 2024-08-23 13:09+0000\n" "Last-Translator: Seulki Yun \n" "Language: ko\n" @@ -6144,6 +6144,7 @@ msgid "" msgstr "" #: ../../source/how-to-implement-fedbn.rst:99 +#: ../../source/how-to-run-flower-on-azure.rst:217 msgid "Next Steps" msgstr "다음 단계" @@ -6637,6 +6638,302 @@ msgstr "" "가상 클라이언트 엔진을 사용하는 시뮬레이션의 경우, ``flwr-nightly``를 ``simulation`` extr와 함께 " "설치해야 합니다::" +#: ../../source/how-to-run-flower-on-azure.rst:18 +#, fuzzy +msgid "Run Flower on Azure" +msgstr "Flower 서버." + +#: ../../source/how-to-run-flower-on-azure.rst:22 +msgid "" +"There are many ways to deploy Flower on Microst Azure. The instructions " +"provided in this guide is just a basic walkthrough, step-by-step guide on" +" how to quickly setup and run a Flower application on a Federated " +"Learning environment on Microst Azure." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:26 +msgid "" +"In this how-to guide, we want to create a Federated Learning environment " +"on Microst Azure using three Virtual Machines (VMs). From the three " +"machines, one machine will be used as the Federation server and two as " +"the Federation clients. Our goal is to create a Flower federation on " +"Microst Azure where we can run Flower apps from our local machine, e.g., " +"laptop." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:32 +msgid "" +"On the Federation server VM we will deploy the long-running Flower server" +" (``SuperLink``) and on the two Federation client VMs we will deploy the " +"long-running Flower client (``SuperNode``). For more details For more " +"details regarding the ``SuperLink`` and ``SuperNode`` concepts, please " +"see the |flower_architecture_link|_ ." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:38 +msgid "Azure VMs" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:40 +msgid "" +"First we need to create the three VMs configure their Python " +"environments, and inbound networking rules to allow cross-VM " +"communication." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:44 +msgid "VM Create" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:46 +msgid "" +"Assuming we are already inside the Microst Azure portal, we navigate to " +"the ``Create`` page and we select ``Azure virtual machine``. In the new " +"page, for each VM we edit the properties as follows:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:55 +msgid "**Virtual machine name**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:56 +msgid "" +"for server machine we can use ``flower-server`` and for clients, " +"``flower-client-1`` and ``flower-client-2``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:58 +#, fuzzy +msgid "**Image**" +msgstr "**변경하기**" + +#: ../../source/how-to-run-flower-on-azure.rst:59 +msgid "in this guide, we use ``Ubuntu Server 24.04 - x64 Gen2 LTS``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:60 +msgid "**Size**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:61 +msgid "in this guide, we use ``Standard_D2s_v3 - 2 vcpus, 8GiB memory``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:65 +msgid "For resource group, we can create a new group and assign it to all VMs." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:67 +msgid "" +"When each VM instance has been created the portal will allow you to " +"download the public key (.pem) of each instance. Make sure you save this " +"key in safe place and change its permissions to user read only, i.e., run" +" the ``chmod 400 `` command for every .pem file." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:72 +msgid "" +"Once all three VMs are created then navigate to the overview page where " +"all three VMs are listed and open every other VM, and copy its Public IP " +"address. Using the Public IP address and the public key (after changing " +"the permissions), login to the instances from our local machine by " +"running the following command (by default Azure creates the " +"``azureuser``):" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:83 +msgid "VM Networking" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:85 +msgid "" +"During the execution of the Flower application, the server VM " +"(``SuperLink``) will be responsible to orchestrate the execution of the " +"application across the client VMs (``SuperNode``). When the SuperLink " +"server starts, by default, it listens to the following ports: ``{9092, " +"9093}``. Port `9092` is used to communicate with the Federation clients " +"(``SuperNode``) and port ``9093`` to receive and execute Flower " +"applications." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:92 +msgid "" +"Therefore, to enable this communication we need to allow inbound traffic " +"to the server VM instance. To achieve this, we need to navigate to the " +"Networking page of the server VM in the Microsoft Azure portal. There, we" +" will click the ``Add inbound port rule``. In the new window that " +"appears, we edit the rule properties as follows:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:97 +msgid "The rest of the fields can be left at their default values." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:104 +#: ../../source/how-to-run-flower-on-azure.rst:145 +#, fuzzy +msgid "**Source**" +msgstr "run\\_supernode" + +#: ../../source/how-to-run-flower-on-azure.rst:105 +msgid "``IP Addresses``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:106 +#: ../../source/how-to-run-flower-on-azure.rst:133 +msgid "**Source IP addresses/CIDR ranges**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:107 +msgid "add client VMs' Public IP (separated by comma)" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:108 +#, fuzzy +msgid "**Destination**" +msgstr "설명" + +#: ../../source/how-to-run-flower-on-azure.rst:109 +#: ../../source/how-to-run-flower-on-azure.rst:146 +#, fuzzy +msgid "``Any``" +msgstr "``flwr/base``" + +#: ../../source/how-to-run-flower-on-azure.rst:110 +#, fuzzy +msgid "**Service**" +msgstr "run\\_supernode" + +#: ../../source/how-to-run-flower-on-azure.rst:111 +#, fuzzy +msgid "``custom``" +msgstr "``DISTRO``" + +#: ../../source/how-to-run-flower-on-azure.rst:112 +#: ../../source/how-to-run-flower-on-azure.rst:135 +#: ../../source/how-to-run-flower-on-azure.rst:147 +msgid "**Destination port ranges**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:113 +msgid "``9092``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:114 +msgid "**Protocol**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:115 +#, fuzzy +msgid "``TCP``" +msgstr "``DISTRO``" + +#: ../../source/how-to-run-flower-on-azure.rst:117 +msgid "" +"Finally, we need to also open port 9093 to allow receiving and executing " +"incoming application requests. To enable this we just need to repeat the " +"steps above, i.e., create a new inbound rule, where for port range we " +"assign port 9093. If we already know the Public IP from which our local " +"machine (e.g., laptop) will be submitting applications to the Azure " +"cluster, then we just need to specify the Source IP address/CIDR range. " +"However, if we want to keep the port widely open we simply need to change" +" source to ``Any``." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:125 +msgid "" +"To be more precise, if we know the Public IP of our machine, then we make" +" the following changes:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:134 +msgid "add machine's Public IP" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:136 +#: ../../source/how-to-run-flower-on-azure.rst:148 +msgid "``9093``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:138 +msgid "Otherwise, we change the properties as follows:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:151 +#, fuzzy +msgid "Flower Environment" +msgstr "Flower 개발 환경 만들기" + +#: ../../source/how-to-run-flower-on-azure.rst:153 +msgid "" +"Assuming we have been able to login to each VM, and create a Python " +"environment with Flower and all its dependencies installed (``pip install" +" flwr``), we can create a Flower application by running the ``flwr new`` " +"command. The console will then prompt us to give a name to the project, " +"e.g., ``flwr_azure_test``, the name of the author and select the type of " +"the Flower Framework we want to run, e.g., ``numpy``." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:161 +msgid "" +"An alternative approach would be to use Docker in each VM, with each " +"image containing the necessary environment and dependencies. For more " +"details please refer to the |flower_docker_index|_ guide." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:166 +#, fuzzy +msgid "Server Initialization" +msgstr "설치 확인" + +#: ../../source/how-to-run-flower-on-azure.rst:168 +msgid "" +"After configuring the Flower application environment, we proceed by " +"starting the Flower long-running processes (i.e., ``SuperLink`` and " +"``SuperNode``) at each VM instance. In particular, we need to run the " +"following commands, first in the server (``SuperLink``) and then at each " +"client (``SuperNode``)." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:175 +msgid "" +"To enable authentication and encrypted communication during the execution" +" lifecycle of the Flower application, please have a look at the following" +" resources: |authenticate_supernodes|_, |enable_tls_connections|_" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:197 +#, fuzzy +msgid "Run Flower App" +msgstr "Flower 서버." + +#: ../../source/how-to-run-flower-on-azure.rst:199 +msgid "" +"Finally, after all running Flower processes have been initialized on the " +"Microsoft Azure cluster, in our local machine, we first need to install " +"Flower and can create a project with a similar structure as the one we " +"have in the server and the clients, or copy the project structure from " +"one of them. Once we have the project locally, we can open the " +"``pyproject.toml`` file, and then add the following sections:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:214 +msgid "Then from our local machine we need to run ``flwr run . my-federation``." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:221 +msgid "" +"This guide is not suitable for production environments due to missing " +"authentication and TLS security." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:224 +msgid "" +"To enable authentication and establish secure connections, please refer " +"to the following resources: |authenticate_supernodes|_, " +"|enable_tls_connections|_" +msgstr "" + #: ../../source/how-to-run-simulations.rst:22 msgid "Run simulations" msgstr "시뮬레이션 실행" @@ -8496,7 +8793,7 @@ msgstr "빠른 시작 튜토리얼" msgid "How-to guides" msgstr "사용 방법 가이드" -#: ../../source/index.rst:107 ../../source/index.rst:112 +#: ../../source/index.rst:108 ../../source/index.rst:113 msgid "Explanations" msgstr "설명" @@ -8504,23 +8801,23 @@ msgstr "설명" msgid "API reference" msgstr "API 참조" -#: ../../source/index.rst:138 +#: ../../source/index.rst:139 msgid "Reference docs" msgstr "참조 문서" -#: ../../source/index.rst:153 +#: ../../source/index.rst:154 msgid "Contributor tutorials" msgstr "기여자 튜토리얼" -#: ../../source/index.rst:160 +#: ../../source/index.rst:161 msgid "Contributor how-to guides" msgstr "기여자 사용법 가이드" -#: ../../source/index.rst:172 +#: ../../source/index.rst:173 msgid "Contributor explanations" msgstr "기여자 설명" -#: ../../source/index.rst:178 +#: ../../source/index.rst:179 msgid "Contributor references" msgstr "기여자 참조" @@ -8617,33 +8914,33 @@ msgid "" "specific goal." msgstr "문제 중심의 방법 가이드는 특정 목표를 달성하는 방법을 단계별로 보여줍니다." -#: ../../source/index.rst:109 +#: ../../source/index.rst:110 msgid "" "Understanding-oriented concept guides explain and discuss key topics and " "underlying ideas behind Flower and collaborative AI." msgstr "이해 중심의 개념 가이드에서는 Flower와 협업 AI의 주요 주제와 기본 아이디어를 설명하고 토론합니다." -#: ../../source/index.rst:121 +#: ../../source/index.rst:122 msgid "References" msgstr "참조" -#: ../../source/index.rst:123 +#: ../../source/index.rst:124 msgid "Information-oriented API reference and other reference material." msgstr "정보 지향 API 참조 및 기타 참고 자료." -#: ../../source/index.rst:132::1 +#: ../../source/index.rst:133::1 msgid ":py:obj:`flwr `\\" msgstr ":py:obj:`flwr `\\" -#: ../../source/index.rst:132::1 flwr:1 of +#: ../../source/index.rst:133::1 flwr:1 of msgid "Flower main package." msgstr "Flower 메인 패키지." -#: ../../source/index.rst:148 +#: ../../source/index.rst:149 msgid "Contributor docs" msgstr "기여자 문서" -#: ../../source/index.rst:150 +#: ../../source/index.rst:151 msgid "" "The Flower community welcomes contributions. The following docs are " "intended to help along the way." @@ -8812,6 +9109,15 @@ msgstr "``flwr/base``" msgid "Specific run ID to display" msgstr "" +#: ../../flwr ls:1 run:1 +msgid "Format output using 'default' view or 'json'" +msgstr "" + +#: ../../flwr ls:1 run:1 +#, fuzzy +msgid "``'default'``" +msgstr "``flwr/base``" + #: ../../flwr ls:1 #, fuzzy msgid "Path of the Flower project" @@ -25988,7 +26294,7 @@ msgstr "" " 수도 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|80152fa658904be08c849b4a594b76e1|" +msgid "|dbd9718fb89b4e219a54b72b6eecf502|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -26005,7 +26311,7 @@ msgstr "" " 바둑과 같은 게임을 하는 것일 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|35b60a1068f944ce937ac2988661aad5|" +msgid "|18916394e69e4fdaafbb56f7bba690d3|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -26031,7 +26337,7 @@ msgstr "" "부르리는 것을 듣는 스마트 스피커에서 비롯됩니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|efead7f2c2224b60b7b42705004c15e6|" +msgid "|20988fac7e2e497ea15f786730279299|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -26049,7 +26355,7 @@ msgstr "" "있습니다. 하지만 여러 조직이 모두 같은 작업을 위해 데이터를 생성하는 것일 수도 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|5421fee4e7ed450c903cbcd8a9d8a5d4|" +msgid "|5d612ca92b074af4a034bf4c0f498d2e|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -26068,7 +26374,7 @@ msgstr "" "서버는 데이터 센터 어딘가에 있을 수도 있고 클라우드 어딘가에 있을 수도 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|811fcf35e9214bd5b4e613e41f7c0a27|" +msgid "|6721ae86e3f348e2bce58d358a2ee79c|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -26085,7 +26391,7 @@ msgstr "" " 우리가 기본적으로 사용해 온 머신러닝 방법입니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|e61d38b0948f4c07a7257755f3799b54|" +msgid "|d255f931abb44ca8a7eba0d90dfcf6a1|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -26108,7 +26414,7 @@ msgstr "" "트래픽을 분석하는 것이 있습니다. 이러한 사례에서 모든 데이터는 자연스럽게 중앙 서버에 존재합니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|e82c29351e2e480087c61b939eb7c041|" +msgid "|f98da3b55eca452390fb33429a7d7ebe|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -26125,7 +26431,7 @@ msgstr "" "좋은 모델을 훈련하기에 충분하지 않을 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|21ca40f4fb1a405c89098fd1d24880a4|" +msgid "|10dc1f84d36b432e95d7f61fcd25a701|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -26304,7 +26610,7 @@ msgstr "" "체크포인트에서 모델 매개변수를 초기화합니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|1351a2629c2c46d981b13b19f9fa45f0|" +msgid "|f963159664b54e40a64a7f1c19414349|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -26332,7 +26638,7 @@ msgstr "" "개의 연결 노드만 사용합니다. 그 이유는 점점 더 많은 클라이언트 노드를 선택하면 학습의 효율성이 감소하기 때문입니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|124c2c188b994c7ab1c862cfdb326923|" +msgid "|3647c3b36916415ab40c1597a3ddd4b0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -26359,7 +26665,7 @@ msgstr "" "데이터에서 한 단계 정도로 짧거나 몇 단계(mini-batches)에 불과할 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|42e1951c36f2406e93c7ae0ec5b299f9|" +msgid "|a3c07b2cf1214488a99267b3757d9426|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -26385,7 +26691,7 @@ msgstr "" "보냅니다. 보내는 모델 업데이트는 전체 모델 파라미터거나 로컬 교육 중에 누적된 그레디언트(gradient)일 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|ec637b8a84234d068995ee1ccb2dd3b1|" +msgid "|2f6bce3bfacf4c85ac3a7e0fd1d5aa84|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -26435,7 +26741,7 @@ msgstr "" "많은 영향을 미칩니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|5bceb9d16b1a4d2db18d8a5b2f0cacb3|" +msgid "|19ebdce05cab40d791a2117f743290c3|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -26555,7 +26861,7 @@ msgstr "" "사용자는 모든 워크로드, 머신러닝 프레임워크 및 모든 프로그래밍 언어를 통합할 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|502b10044e864ca2b15282a393ab7faf|" +msgid "|dd729f8776d640ffb136545f3f26210f|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -33483,3 +33789,45 @@ msgstr "" #~ msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" #~ msgstr "" +#~ msgid "|80152fa658904be08c849b4a594b76e1|" +#~ msgstr "" + +#~ msgid "|35b60a1068f944ce937ac2988661aad5|" +#~ msgstr "" + +#~ msgid "|efead7f2c2224b60b7b42705004c15e6|" +#~ msgstr "" + +#~ msgid "|5421fee4e7ed450c903cbcd8a9d8a5d4|" +#~ msgstr "" + +#~ msgid "|811fcf35e9214bd5b4e613e41f7c0a27|" +#~ msgstr "" + +#~ msgid "|e61d38b0948f4c07a7257755f3799b54|" +#~ msgstr "" + +#~ msgid "|e82c29351e2e480087c61b939eb7c041|" +#~ msgstr "" + +#~ msgid "|21ca40f4fb1a405c89098fd1d24880a4|" +#~ msgstr "" + +#~ msgid "|1351a2629c2c46d981b13b19f9fa45f0|" +#~ msgstr "" + +#~ msgid "|124c2c188b994c7ab1c862cfdb326923|" +#~ msgstr "" + +#~ msgid "|42e1951c36f2406e93c7ae0ec5b299f9|" +#~ msgstr "" + +#~ msgid "|ec637b8a84234d068995ee1ccb2dd3b1|" +#~ msgstr "" + +#~ msgid "|5bceb9d16b1a4d2db18d8a5b2f0cacb3|" +#~ msgstr "" + +#~ msgid "|502b10044e864ca2b15282a393ab7faf|" +#~ msgstr "" + diff --git a/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po b/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po index 21eafd64d9a2..42db4541d4f7 100644 --- a/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po +++ b/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower main\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-30 00:31+0000\n" +"POT-Creation-Date: 2024-12-08 00:35+0000\n" "PO-Revision-Date: 2024-05-25 11:09+0000\n" "Last-Translator: Gustavo Bertoli \n" "Language: pt_BR\n" @@ -5638,6 +5638,7 @@ msgid "" msgstr "" #: ../../source/how-to-implement-fedbn.rst:99 +#: ../../source/how-to-run-flower-on-azure.rst:217 msgid "Next Steps" msgstr "" @@ -6006,6 +6007,296 @@ msgid "" "should be installed with the ``simulation`` extra:" msgstr "" +#: ../../source/how-to-run-flower-on-azure.rst:18 +msgid "Run Flower on Azure" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:22 +msgid "" +"There are many ways to deploy Flower on Microst Azure. The instructions " +"provided in this guide is just a basic walkthrough, step-by-step guide on" +" how to quickly setup and run a Flower application on a Federated " +"Learning environment on Microst Azure." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:26 +msgid "" +"In this how-to guide, we want to create a Federated Learning environment " +"on Microst Azure using three Virtual Machines (VMs). From the three " +"machines, one machine will be used as the Federation server and two as " +"the Federation clients. Our goal is to create a Flower federation on " +"Microst Azure where we can run Flower apps from our local machine, e.g., " +"laptop." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:32 +msgid "" +"On the Federation server VM we will deploy the long-running Flower server" +" (``SuperLink``) and on the two Federation client VMs we will deploy the " +"long-running Flower client (``SuperNode``). For more details For more " +"details regarding the ``SuperLink`` and ``SuperNode`` concepts, please " +"see the |flower_architecture_link|_ ." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:38 +msgid "Azure VMs" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:40 +msgid "" +"First we need to create the three VMs configure their Python " +"environments, and inbound networking rules to allow cross-VM " +"communication." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:44 +msgid "VM Create" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:46 +msgid "" +"Assuming we are already inside the Microst Azure portal, we navigate to " +"the ``Create`` page and we select ``Azure virtual machine``. In the new " +"page, for each VM we edit the properties as follows:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:55 +msgid "**Virtual machine name**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:56 +msgid "" +"for server machine we can use ``flower-server`` and for clients, " +"``flower-client-1`` and ``flower-client-2``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:58 +msgid "**Image**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:59 +msgid "in this guide, we use ``Ubuntu Server 24.04 - x64 Gen2 LTS``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:60 +msgid "**Size**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:61 +msgid "in this guide, we use ``Standard_D2s_v3 - 2 vcpus, 8GiB memory``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:65 +msgid "For resource group, we can create a new group and assign it to all VMs." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:67 +msgid "" +"When each VM instance has been created the portal will allow you to " +"download the public key (.pem) of each instance. Make sure you save this " +"key in safe place and change its permissions to user read only, i.e., run" +" the ``chmod 400 `` command for every .pem file." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:72 +msgid "" +"Once all three VMs are created then navigate to the overview page where " +"all three VMs are listed and open every other VM, and copy its Public IP " +"address. Using the Public IP address and the public key (after changing " +"the permissions), login to the instances from our local machine by " +"running the following command (by default Azure creates the " +"``azureuser``):" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:83 +msgid "VM Networking" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:85 +msgid "" +"During the execution of the Flower application, the server VM " +"(``SuperLink``) will be responsible to orchestrate the execution of the " +"application across the client VMs (``SuperNode``). When the SuperLink " +"server starts, by default, it listens to the following ports: ``{9092, " +"9093}``. Port `9092` is used to communicate with the Federation clients " +"(``SuperNode``) and port ``9093`` to receive and execute Flower " +"applications." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:92 +msgid "" +"Therefore, to enable this communication we need to allow inbound traffic " +"to the server VM instance. To achieve this, we need to navigate to the " +"Networking page of the server VM in the Microsoft Azure portal. There, we" +" will click the ``Add inbound port rule``. In the new window that " +"appears, we edit the rule properties as follows:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:97 +msgid "The rest of the fields can be left at their default values." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:104 +#: ../../source/how-to-run-flower-on-azure.rst:145 +msgid "**Source**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:105 +msgid "``IP Addresses``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:106 +#: ../../source/how-to-run-flower-on-azure.rst:133 +msgid "**Source IP addresses/CIDR ranges**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:107 +msgid "add client VMs' Public IP (separated by comma)" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:108 +#, fuzzy +msgid "**Destination**" +msgstr "Descrição" + +#: ../../source/how-to-run-flower-on-azure.rst:109 +#: ../../source/how-to-run-flower-on-azure.rst:146 +#, fuzzy +msgid "``Any``" +msgstr "``FLWR_VERSION``" + +#: ../../source/how-to-run-flower-on-azure.rst:110 +msgid "**Service**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:111 +#, fuzzy +msgid "``custom``" +msgstr "``UBUNTU_VERSION``" + +#: ../../source/how-to-run-flower-on-azure.rst:112 +#: ../../source/how-to-run-flower-on-azure.rst:135 +#: ../../source/how-to-run-flower-on-azure.rst:147 +msgid "**Destination port ranges**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:113 +msgid "``9092``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:114 +msgid "**Protocol**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:115 +msgid "``TCP``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:117 +msgid "" +"Finally, we need to also open port 9093 to allow receiving and executing " +"incoming application requests. To enable this we just need to repeat the " +"steps above, i.e., create a new inbound rule, where for port range we " +"assign port 9093. If we already know the Public IP from which our local " +"machine (e.g., laptop) will be submitting applications to the Azure " +"cluster, then we just need to specify the Source IP address/CIDR range. " +"However, if we want to keep the port widely open we simply need to change" +" source to ``Any``." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:125 +msgid "" +"To be more precise, if we know the Public IP of our machine, then we make" +" the following changes:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:134 +msgid "add machine's Public IP" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:136 +#: ../../source/how-to-run-flower-on-azure.rst:148 +msgid "``9093``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:138 +msgid "Otherwise, we change the properties as follows:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:151 +#, fuzzy +msgid "Flower Environment" +msgstr "``FLWR_VERSION``" + +#: ../../source/how-to-run-flower-on-azure.rst:153 +msgid "" +"Assuming we have been able to login to each VM, and create a Python " +"environment with Flower and all its dependencies installed (``pip install" +" flwr``), we can create a Flower application by running the ``flwr new`` " +"command. The console will then prompt us to give a name to the project, " +"e.g., ``flwr_azure_test``, the name of the author and select the type of " +"the Flower Framework we want to run, e.g., ``numpy``." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:161 +msgid "" +"An alternative approach would be to use Docker in each VM, with each " +"image containing the necessary environment and dependencies. For more " +"details please refer to the |flower_docker_index|_ guide." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:166 +msgid "Server Initialization" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:168 +msgid "" +"After configuring the Flower application environment, we proceed by " +"starting the Flower long-running processes (i.e., ``SuperLink`` and " +"``SuperNode``) at each VM instance. In particular, we need to run the " +"following commands, first in the server (``SuperLink``) and then at each " +"client (``SuperNode``)." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:175 +msgid "" +"To enable authentication and encrypted communication during the execution" +" lifecycle of the Flower application, please have a look at the following" +" resources: |authenticate_supernodes|_, |enable_tls_connections|_" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:197 +#, fuzzy +msgid "Run Flower App" +msgstr "O nome do repositório da imagem base." + +#: ../../source/how-to-run-flower-on-azure.rst:199 +msgid "" +"Finally, after all running Flower processes have been initialized on the " +"Microsoft Azure cluster, in our local machine, we first need to install " +"Flower and can create a project with a similar structure as the one we " +"have in the server and the clients, or copy the project structure from " +"one of them. Once we have the project locally, we can open the " +"``pyproject.toml`` file, and then add the following sections:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:214 +msgid "Then from our local machine we need to run ``flwr run . my-federation``." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:221 +msgid "" +"This guide is not suitable for production environments due to missing " +"authentication and TLS security." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:224 +msgid "" +"To enable authentication and establish secure connections, please refer " +"to the following resources: |authenticate_supernodes|_, " +"|enable_tls_connections|_" +msgstr "" + #: ../../source/how-to-run-simulations.rst:22 msgid "Run simulations" msgstr "" @@ -7581,7 +7872,7 @@ msgstr "" msgid "How-to guides" msgstr "" -#: ../../source/index.rst:107 ../../source/index.rst:112 +#: ../../source/index.rst:108 ../../source/index.rst:113 msgid "Explanations" msgstr "" @@ -7589,23 +7880,23 @@ msgstr "" msgid "API reference" msgstr "" -#: ../../source/index.rst:138 +#: ../../source/index.rst:139 msgid "Reference docs" msgstr "" -#: ../../source/index.rst:153 +#: ../../source/index.rst:154 msgid "Contributor tutorials" msgstr "" -#: ../../source/index.rst:160 +#: ../../source/index.rst:161 msgid "Contributor how-to guides" msgstr "" -#: ../../source/index.rst:172 +#: ../../source/index.rst:173 msgid "Contributor explanations" msgstr "" -#: ../../source/index.rst:178 +#: ../../source/index.rst:179 msgid "Contributor references" msgstr "" @@ -7689,33 +7980,33 @@ msgid "" "specific goal." msgstr "" -#: ../../source/index.rst:109 +#: ../../source/index.rst:110 msgid "" "Understanding-oriented concept guides explain and discuss key topics and " "underlying ideas behind Flower and collaborative AI." msgstr "" -#: ../../source/index.rst:121 +#: ../../source/index.rst:122 msgid "References" msgstr "" -#: ../../source/index.rst:123 +#: ../../source/index.rst:124 msgid "Information-oriented API reference and other reference material." msgstr "" -#: ../../source/index.rst:132::1 +#: ../../source/index.rst:133::1 msgid ":py:obj:`flwr `\\" msgstr "" -#: ../../source/index.rst:132::1 flwr:1 of +#: ../../source/index.rst:133::1 flwr:1 of msgid "Flower main package." msgstr "" -#: ../../source/index.rst:148 +#: ../../source/index.rst:149 msgid "Contributor docs" msgstr "" -#: ../../source/index.rst:150 +#: ../../source/index.rst:151 msgid "" "The Flower community welcomes contributions. The following docs are " "intended to help along the way." @@ -7878,6 +8169,15 @@ msgstr "``FLWR_VERSION``" msgid "Specific run ID to display" msgstr "" +#: ../../flwr ls:1 run:1 +msgid "Format output using 'default' view or 'json'" +msgstr "" + +#: ../../flwr ls:1 run:1 +#, fuzzy +msgid "``'default'``" +msgstr "``FLWR_VERSION``" + #: ../../flwr ls:1 #, fuzzy msgid "Path of the Flower project" @@ -24655,7 +24955,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|80152fa658904be08c849b4a594b76e1|" +msgid "|dbd9718fb89b4e219a54b72b6eecf502|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -24670,7 +24970,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|35b60a1068f944ce937ac2988661aad5|" +msgid "|18916394e69e4fdaafbb56f7bba690d3|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -24692,7 +24992,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|efead7f2c2224b60b7b42705004c15e6|" +msgid "|20988fac7e2e497ea15f786730279299|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -24708,7 +25008,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|5421fee4e7ed450c903cbcd8a9d8a5d4|" +msgid "|5d612ca92b074af4a034bf4c0f498d2e|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -24724,7 +25024,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|811fcf35e9214bd5b4e613e41f7c0a27|" +msgid "|6721ae86e3f348e2bce58d358a2ee79c|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -24739,7 +25039,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|e61d38b0948f4c07a7257755f3799b54|" +msgid "|d255f931abb44ca8a7eba0d90dfcf6a1|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -24759,7 +25059,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|e82c29351e2e480087c61b939eb7c041|" +msgid "|f98da3b55eca452390fb33429a7d7ebe|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -24774,7 +25074,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|21ca40f4fb1a405c89098fd1d24880a4|" +msgid "|10dc1f84d36b432e95d7f61fcd25a701|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -24914,7 +25214,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|1351a2629c2c46d981b13b19f9fa45f0|" +msgid "|f963159664b54e40a64a7f1c19414349|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -24938,7 +25238,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|124c2c188b994c7ab1c862cfdb326923|" +msgid "|3647c3b36916415ab40c1597a3ddd4b0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -24962,7 +25262,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|42e1951c36f2406e93c7ae0ec5b299f9|" +msgid "|a3c07b2cf1214488a99267b3757d9426|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -24985,7 +25285,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|ec637b8a84234d068995ee1ccb2dd3b1|" +msgid "|2f6bce3bfacf4c85ac3a7e0fd1d5aa84|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -25023,7 +25323,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|5bceb9d16b1a4d2db18d8a5b2f0cacb3|" +msgid "|19ebdce05cab40d791a2117f743290c3|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -25117,7 +25417,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|502b10044e864ca2b15282a393ab7faf|" +msgid "|dd729f8776d640ffb136545f3f26210f|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -37501,3 +37801,45 @@ msgstr "" #~ msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" #~ msgstr "" +#~ msgid "|80152fa658904be08c849b4a594b76e1|" +#~ msgstr "" + +#~ msgid "|35b60a1068f944ce937ac2988661aad5|" +#~ msgstr "" + +#~ msgid "|efead7f2c2224b60b7b42705004c15e6|" +#~ msgstr "" + +#~ msgid "|5421fee4e7ed450c903cbcd8a9d8a5d4|" +#~ msgstr "" + +#~ msgid "|811fcf35e9214bd5b4e613e41f7c0a27|" +#~ msgstr "" + +#~ msgid "|e61d38b0948f4c07a7257755f3799b54|" +#~ msgstr "" + +#~ msgid "|e82c29351e2e480087c61b939eb7c041|" +#~ msgstr "" + +#~ msgid "|21ca40f4fb1a405c89098fd1d24880a4|" +#~ msgstr "" + +#~ msgid "|1351a2629c2c46d981b13b19f9fa45f0|" +#~ msgstr "" + +#~ msgid "|124c2c188b994c7ab1c862cfdb326923|" +#~ msgstr "" + +#~ msgid "|42e1951c36f2406e93c7ae0ec5b299f9|" +#~ msgstr "" + +#~ msgid "|ec637b8a84234d068995ee1ccb2dd3b1|" +#~ msgstr "" + +#~ msgid "|5bceb9d16b1a4d2db18d8a5b2f0cacb3|" +#~ msgstr "" + +#~ msgid "|502b10044e864ca2b15282a393ab7faf|" +#~ msgstr "" + diff --git a/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po b/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po index 3b56d02c7503..015360f1af83 100644 --- a/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po +++ b/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower main\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-30 00:31+0000\n" +"POT-Creation-Date: 2024-12-08 00:35+0000\n" "PO-Revision-Date: 2024-06-12 10:09+0000\n" "Last-Translator: Yan Gao \n" "Language: zh_Hans\n" @@ -6152,6 +6152,7 @@ msgid "" msgstr "" #: ../../source/how-to-implement-fedbn.rst:99 +#: ../../source/how-to-run-flower-on-azure.rst:217 msgid "Next Steps" msgstr "下一步工作" @@ -6621,6 +6622,303 @@ msgid "" "should be installed with the ``simulation`` extra:" msgstr "对于使用虚拟客户端引擎的模拟,`flwr-nightly`应与`simulation`一起安装:" +#: ../../source/how-to-run-flower-on-azure.rst:18 +#, fuzzy +msgid "Run Flower on Azure" +msgstr "Flower 服务器。" + +#: ../../source/how-to-run-flower-on-azure.rst:22 +msgid "" +"There are many ways to deploy Flower on Microst Azure. The instructions " +"provided in this guide is just a basic walkthrough, step-by-step guide on" +" how to quickly setup and run a Flower application on a Federated " +"Learning environment on Microst Azure." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:26 +msgid "" +"In this how-to guide, we want to create a Federated Learning environment " +"on Microst Azure using three Virtual Machines (VMs). From the three " +"machines, one machine will be used as the Federation server and two as " +"the Federation clients. Our goal is to create a Flower federation on " +"Microst Azure where we can run Flower apps from our local machine, e.g., " +"laptop." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:32 +msgid "" +"On the Federation server VM we will deploy the long-running Flower server" +" (``SuperLink``) and on the two Federation client VMs we will deploy the " +"long-running Flower client (``SuperNode``). For more details For more " +"details regarding the ``SuperLink`` and ``SuperNode`` concepts, please " +"see the |flower_architecture_link|_ ." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:38 +msgid "Azure VMs" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:40 +msgid "" +"First we need to create the three VMs configure their Python " +"environments, and inbound networking rules to allow cross-VM " +"communication." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:44 +msgid "VM Create" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:46 +msgid "" +"Assuming we are already inside the Microst Azure portal, we navigate to " +"the ``Create`` page and we select ``Azure virtual machine``. In the new " +"page, for each VM we edit the properties as follows:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:55 +msgid "**Virtual machine name**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:56 +msgid "" +"for server machine we can use ``flower-server`` and for clients, " +"``flower-client-1`` and ``flower-client-2``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:58 +#, fuzzy +msgid "**Image**" +msgstr "**进行修改**" + +#: ../../source/how-to-run-flower-on-azure.rst:59 +msgid "in this guide, we use ``Ubuntu Server 24.04 - x64 Gen2 LTS``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:60 +#, fuzzy +msgid "**Size**" +msgstr "**success**" + +#: ../../source/how-to-run-flower-on-azure.rst:61 +msgid "in this guide, we use ``Standard_D2s_v3 - 2 vcpus, 8GiB memory``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:65 +msgid "For resource group, we can create a new group and assign it to all VMs." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:67 +msgid "" +"When each VM instance has been created the portal will allow you to " +"download the public key (.pem) of each instance. Make sure you save this " +"key in safe place and change its permissions to user read only, i.e., run" +" the ``chmod 400 `` command for every .pem file." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:72 +msgid "" +"Once all three VMs are created then navigate to the overview page where " +"all three VMs are listed and open every other VM, and copy its Public IP " +"address. Using the Public IP address and the public key (after changing " +"the permissions), login to the instances from our local machine by " +"running the following command (by default Azure creates the " +"``azureuser``):" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:83 +msgid "VM Networking" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:85 +msgid "" +"During the execution of the Flower application, the server VM " +"(``SuperLink``) will be responsible to orchestrate the execution of the " +"application across the client VMs (``SuperNode``). When the SuperLink " +"server starts, by default, it listens to the following ports: ``{9092, " +"9093}``. Port `9092` is used to communicate with the Federation clients " +"(``SuperNode``) and port ``9093`` to receive and execute Flower " +"applications." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:92 +msgid "" +"Therefore, to enable this communication we need to allow inbound traffic " +"to the server VM instance. To achieve this, we need to navigate to the " +"Networking page of the server VM in the Microsoft Azure portal. There, we" +" will click the ``Add inbound port rule``. In the new window that " +"appears, we edit the rule properties as follows:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:97 +msgid "The rest of the fields can be left at their default values." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:104 +#: ../../source/how-to-run-flower-on-azure.rst:145 +#, fuzzy +msgid "**Source**" +msgstr "**success**" + +#: ../../source/how-to-run-flower-on-azure.rst:105 +msgid "``IP Addresses``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:106 +#: ../../source/how-to-run-flower-on-azure.rst:133 +msgid "**Source IP addresses/CIDR ranges**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:107 +msgid "add client VMs' Public IP (separated by comma)" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:108 +#, fuzzy +msgid "**Destination**" +msgstr "停用" + +#: ../../source/how-to-run-flower-on-azure.rst:109 +#: ../../source/how-to-run-flower-on-azure.rst:146 +#, fuzzy +msgid "``Any``" +msgstr "``FLWR_VERSION``" + +#: ../../source/how-to-run-flower-on-azure.rst:110 +#, fuzzy +msgid "**Service**" +msgstr "flower-superlink" + +#: ../../source/how-to-run-flower-on-azure.rst:111 +#, fuzzy +msgid "``custom``" +msgstr "``UBUNTU_VERSION``" + +#: ../../source/how-to-run-flower-on-azure.rst:112 +#: ../../source/how-to-run-flower-on-azure.rst:135 +#: ../../source/how-to-run-flower-on-azure.rst:147 +msgid "**Destination port ranges**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:113 +msgid "``9092``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:114 +msgid "**Protocol**" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:115 +#, fuzzy +msgid "``TCP``" +msgstr "配置日志记录" + +#: ../../source/how-to-run-flower-on-azure.rst:117 +msgid "" +"Finally, we need to also open port 9093 to allow receiving and executing " +"incoming application requests. To enable this we just need to repeat the " +"steps above, i.e., create a new inbound rule, where for port range we " +"assign port 9093. If we already know the Public IP from which our local " +"machine (e.g., laptop) will be submitting applications to the Azure " +"cluster, then we just need to specify the Source IP address/CIDR range. " +"However, if we want to keep the port widely open we simply need to change" +" source to ``Any``." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:125 +msgid "" +"To be more precise, if we know the Public IP of our machine, then we make" +" the following changes:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:134 +msgid "add machine's Public IP" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:136 +#: ../../source/how-to-run-flower-on-azure.rst:148 +msgid "``9093``" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:138 +msgid "Otherwise, we change the properties as follows:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:151 +#, fuzzy +msgid "Flower Environment" +msgstr "创建/删除虚拟环境" + +#: ../../source/how-to-run-flower-on-azure.rst:153 +msgid "" +"Assuming we have been able to login to each VM, and create a Python " +"environment with Flower and all its dependencies installed (``pip install" +" flwr``), we can create a Flower application by running the ``flwr new`` " +"command. The console will then prompt us to give a name to the project, " +"e.g., ``flwr_azure_test``, the name of the author and select the type of " +"the Flower Framework we want to run, e.g., ``numpy``." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:161 +msgid "" +"An alternative approach would be to use Docker in each VM, with each " +"image containing the necessary environment and dependencies. For more " +"details please refer to the |flower_docker_index|_ guide." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:166 +#, fuzzy +msgid "Server Initialization" +msgstr "验证安装" + +#: ../../source/how-to-run-flower-on-azure.rst:168 +msgid "" +"After configuring the Flower application environment, we proceed by " +"starting the Flower long-running processes (i.e., ``SuperLink`` and " +"``SuperNode``) at each VM instance. In particular, we need to run the " +"following commands, first in the server (``SuperLink``) and then at each " +"client (``SuperNode``)." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:175 +msgid "" +"To enable authentication and encrypted communication during the execution" +" lifecycle of the Flower application, please have a look at the following" +" resources: |authenticate_supernodes|_, |enable_tls_connections|_" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:197 +#, fuzzy +msgid "Run Flower App" +msgstr "Flower 服务器。" + +#: ../../source/how-to-run-flower-on-azure.rst:199 +msgid "" +"Finally, after all running Flower processes have been initialized on the " +"Microsoft Azure cluster, in our local machine, we first need to install " +"Flower and can create a project with a similar structure as the one we " +"have in the server and the clients, or copy the project structure from " +"one of them. Once we have the project locally, we can open the " +"``pyproject.toml`` file, and then add the following sections:" +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:214 +msgid "Then from our local machine we need to run ``flwr run . my-federation``." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:221 +msgid "" +"This guide is not suitable for production environments due to missing " +"authentication and TLS security." +msgstr "" + +#: ../../source/how-to-run-flower-on-azure.rst:224 +msgid "" +"To enable authentication and establish secure connections, please refer " +"to the following resources: |authenticate_supernodes|_, " +"|enable_tls_connections|_" +msgstr "" + #: ../../source/how-to-run-simulations.rst:22 msgid "Run simulations" msgstr "运行模拟" @@ -8470,7 +8768,7 @@ msgstr "快速入门教程" msgid "How-to guides" msgstr "操作指南" -#: ../../source/index.rst:107 ../../source/index.rst:112 +#: ../../source/index.rst:108 ../../source/index.rst:113 msgid "Explanations" msgstr "说明" @@ -8478,23 +8776,23 @@ msgstr "说明" msgid "API reference" msgstr "应用程序接口参考" -#: ../../source/index.rst:138 +#: ../../source/index.rst:139 msgid "Reference docs" msgstr "参考文档" -#: ../../source/index.rst:153 +#: ../../source/index.rst:154 msgid "Contributor tutorials" msgstr "贡献者教程" -#: ../../source/index.rst:160 +#: ../../source/index.rst:161 msgid "Contributor how-to guides" msgstr "投稿指南" -#: ../../source/index.rst:172 +#: ../../source/index.rst:173 msgid "Contributor explanations" msgstr "贡献者解释" -#: ../../source/index.rst:178 +#: ../../source/index.rst:179 msgid "Contributor references" msgstr "贡献者参考资料" @@ -8591,35 +8889,35 @@ msgid "" "specific goal." msgstr "以问题为导向的 \"如何做 \"指南逐步展示如何实现特定目标。" -#: ../../source/index.rst:109 +#: ../../source/index.rst:110 msgid "" "Understanding-oriented concept guides explain and discuss key topics and " "underlying ideas behind Flower and collaborative AI." msgstr "以理解为导向的概念指南解释并讨论了Flower和协作式人工智能背后的关键主题和基本思想。" -#: ../../source/index.rst:121 +#: ../../source/index.rst:122 msgid "References" msgstr "参考资料" -#: ../../source/index.rst:123 +#: ../../source/index.rst:124 msgid "Information-oriented API reference and other reference material." msgstr "以信息为导向的 API 参考资料和其他参考资料。" -#: ../../source/index.rst:132::1 +#: ../../source/index.rst:133::1 #, fuzzy msgid ":py:obj:`flwr `\\" msgstr ":py:obj:`flwr `\\" -#: ../../source/index.rst:132::1 flwr:1 of +#: ../../source/index.rst:133::1 flwr:1 of #, fuzzy msgid "Flower main package." msgstr "Flower 主包装。" -#: ../../source/index.rst:148 +#: ../../source/index.rst:149 msgid "Contributor docs" msgstr "贡献者文档" -#: ../../source/index.rst:150 +#: ../../source/index.rst:151 msgid "" "The Flower community welcomes contributions. The following docs are " "intended to help along the way." @@ -8789,6 +9087,15 @@ msgstr "``FLWR_VERSION``" msgid "Specific run ID to display" msgstr "" +#: ../../flwr ls:1 run:1 +msgid "Format output using 'default' view or 'json'" +msgstr "" + +#: ../../flwr ls:1 run:1 +#, fuzzy +msgid "``'default'``" +msgstr "工作流程" + #: ../../flwr ls:1 #, fuzzy msgid "Path of the Flower project" @@ -29806,7 +30113,7 @@ msgid "" msgstr "在机器学习中,我们有一个模型和数据。模型可以是一个神经网络(如图所示),也可以是其他东西,比如经典的线性回归。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|80152fa658904be08c849b4a594b76e1|" +msgid "|dbd9718fb89b4e219a54b72b6eecf502|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -29821,7 +30128,7 @@ msgid "" msgstr "我们使用数据来训练模型,以完成一项有用的任务。任务可以是检测图像中的物体、转录音频或玩围棋等游戏。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|35b60a1068f944ce937ac2988661aad5|" +msgid "|18916394e69e4fdaafbb56f7bba690d3|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -29845,7 +30152,7 @@ msgid "" msgstr "它源于智能手机上用户与应用程序的交互、汽车上传感器数据的收集、笔记本电脑上键盘输入的接收,或者智能扬声器上某人试着唱的歌。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|efead7f2c2224b60b7b42705004c15e6|" +msgid "|20988fac7e2e497ea15f786730279299|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -29863,7 +30170,7 @@ msgstr "" "\"通常不只是一个地方,而是很多地方。它可能是多个运行同一应用程序的设备。但也可能是多个组织,都在为同一任务生成数据。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|5421fee4e7ed450c903cbcd8a9d8a5d4|" +msgid "|5d612ca92b074af4a034bf4c0f498d2e|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -29880,7 +30187,7 @@ msgid "" msgstr "因此,要使用机器学习或任何类型的数据分析,过去使用的方法是在中央服务器上收集所有数据。这个服务器可以在数据中心的某个地方,也可以在云端的某个地方。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|811fcf35e9214bd5b4e613e41f7c0a27|" +msgid "|6721ae86e3f348e2bce58d358a2ee79c|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -29895,7 +30202,7 @@ msgid "" msgstr "一旦所有数据都收集到一处,我们最终就可以使用机器学习算法在数据上训练我们的模型。这就是我们基本上一直依赖的机器学习方法。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|e61d38b0948f4c07a7257755f3799b54|" +msgid "|d255f931abb44ca8a7eba0d90dfcf6a1|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -29916,7 +30223,7 @@ msgid "" msgstr "我们刚刚看到的经典机器学习方法可以在某些情况下使用。很好的例子包括对假日照片进行分类或分析网络流量。在这些案例中,所有数据自然都可以在中央服务器上获得。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|e82c29351e2e480087c61b939eb7c041|" +msgid "|f98da3b55eca452390fb33429a7d7ebe|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -29931,7 +30238,7 @@ msgid "" msgstr "但这种方法并不适用于许多其他情况。例如,集中服务器上没有数据,或者一台服务器上的数据不足以训练出一个好的模型。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|21ca40f4fb1a405c89098fd1d24880a4|" +msgid "|10dc1f84d36b432e95d7f61fcd25a701|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -30091,7 +30398,7 @@ msgid "" msgstr "我们首先在服务器上初始化模型。这与经典的集中式学习完全相同:我们随机或从先前保存的检查点初始化模型参数。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|1351a2629c2c46d981b13b19f9fa45f0|" +msgid "|f963159664b54e40a64a7f1c19414349|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -30116,7 +30423,7 @@ msgid "" msgstr "接下来,我们会将全局模型的参数发送到连接的客户端节点(如智能手机等边缘设备或企业的服务器)。这是为了确保每个参与节点都使用相同的模型参数开始本地训练。我们通常只使用几个连接节点,而不是所有节点。这样做的原因是,选择越来越多的客户端节点会导致收益递减。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|124c2c188b994c7ab1c862cfdb326923|" +msgid "|3647c3b36916415ab40c1597a3ddd4b0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -30142,7 +30449,7 @@ msgstr "" "(mini-batches)。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|42e1951c36f2406e93c7ae0ec5b299f9|" +msgid "|a3c07b2cf1214488a99267b3757d9426|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -30165,7 +30472,7 @@ msgid "" msgstr "经过本地训练后,每个客户节点最初收到的模型参数都会略有不同。参数之所以不同,是因为每个客户端节点的本地数据集中都有不同的数据。然后,客户端节点将这些模型更新发回服务器。它们发送的模型更新既可以是完整的模型参数,也可以只是本地训练过程中积累的梯度。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|ec637b8a84234d068995ee1ccb2dd3b1|" +msgid "|2f6bce3bfacf4c85ac3a7e0fd1d5aa84|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -30212,7 +30519,7 @@ msgstr "" " 100 个示例的 10 倍。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|5bceb9d16b1a4d2db18d8a5b2f0cacb3|" +msgid "|19ebdce05cab40d791a2117f743290c3|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -30320,7 +30627,7 @@ msgstr "" "为联邦学习、分析和评估提供了一种统一的方法。它允许用户联邦化任何工作负载、任何 ML 框架和任何编程语言。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|502b10044e864ca2b15282a393ab7faf|" +msgid "|dd729f8776d640ffb136545f3f26210f|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -37825,3 +38132,45 @@ msgstr "" #~ msgid "|7bfcfcb57ae5403f8e18486f45ca48b4|" #~ msgstr "" +#~ msgid "|80152fa658904be08c849b4a594b76e1|" +#~ msgstr "" + +#~ msgid "|35b60a1068f944ce937ac2988661aad5|" +#~ msgstr "" + +#~ msgid "|efead7f2c2224b60b7b42705004c15e6|" +#~ msgstr "" + +#~ msgid "|5421fee4e7ed450c903cbcd8a9d8a5d4|" +#~ msgstr "" + +#~ msgid "|811fcf35e9214bd5b4e613e41f7c0a27|" +#~ msgstr "" + +#~ msgid "|e61d38b0948f4c07a7257755f3799b54|" +#~ msgstr "" + +#~ msgid "|e82c29351e2e480087c61b939eb7c041|" +#~ msgstr "" + +#~ msgid "|21ca40f4fb1a405c89098fd1d24880a4|" +#~ msgstr "" + +#~ msgid "|1351a2629c2c46d981b13b19f9fa45f0|" +#~ msgstr "" + +#~ msgid "|124c2c188b994c7ab1c862cfdb326923|" +#~ msgstr "" + +#~ msgid "|42e1951c36f2406e93c7ae0ec5b299f9|" +#~ msgstr "" + +#~ msgid "|ec637b8a84234d068995ee1ccb2dd3b1|" +#~ msgstr "" + +#~ msgid "|5bceb9d16b1a4d2db18d8a5b2f0cacb3|" +#~ msgstr "" + +#~ msgid "|502b10044e864ca2b15282a393ab7faf|" +#~ msgstr "" + From fc8591fce970c2a533deb0000427d24075797205 Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Sun, 8 Dec 2024 16:55:38 +0000 Subject: [PATCH 029/104] feat(framework) Introduce `flwr stop` CLI (#4642) Co-authored-by: Chong Shen Ng Co-authored-by: jafermarq --- src/py/flwr/cli/app.py | 2 + src/py/flwr/cli/stop.py | 121 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 src/py/flwr/cli/stop.py diff --git a/src/py/flwr/cli/app.py b/src/py/flwr/cli/app.py index 35bd21ebd55e..553ac56fcaf2 100644 --- a/src/py/flwr/cli/app.py +++ b/src/py/flwr/cli/app.py @@ -23,6 +23,7 @@ from .ls import ls from .new import new from .run import run +from .stop import stop app = typer.Typer( help=typer.style( @@ -39,6 +40,7 @@ app.command()(install) app.command()(log) app.command()(ls) +app.command()(stop) typer_click_object = get_command(app) diff --git a/src/py/flwr/cli/stop.py b/src/py/flwr/cli/stop.py new file mode 100644 index 000000000000..83c08fc86dc8 --- /dev/null +++ b/src/py/flwr/cli/stop.py @@ -0,0 +1,121 @@ +# Copyright 2024 Flower Labs GmbH. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Flower command line interface `stop` command.""" + + +from logging import DEBUG +from pathlib import Path +from typing import Annotated, Any, Optional + +import grpc +import typer + +from flwr.cli.config_utils import ( + load_and_validate, + validate_certificate_in_federation_config, + validate_federation_in_project_config, + validate_project_config, +) +from flwr.common.constant import FAB_CONFIG_FILE +from flwr.common.grpc import GRPC_MAX_MESSAGE_LENGTH, create_channel +from flwr.common.logger import log +from flwr.proto.exec_pb2 import StopRunRequest, StopRunResponse # pylint: disable=E0611 +from flwr.proto.exec_pb2_grpc import ExecStub + + +def stop( + run_id: Annotated[ # pylint: disable=unused-argument + int, + typer.Argument(help="The Flower run ID to stop"), + ], + app: Annotated[ + Path, + typer.Argument(help="Path of the Flower project"), + ] = Path("."), + federation: Annotated[ + Optional[str], + typer.Argument(help="Name of the federation"), + ] = None, +) -> None: + """Stop a run.""" + # Load and validate federation config + typer.secho("Loading project configuration... ", fg=typer.colors.BLUE) + + pyproject_path = app / FAB_CONFIG_FILE if app else None + config, errors, warnings = load_and_validate(path=pyproject_path) + config = validate_project_config(config, errors, warnings) + federation, federation_config = validate_federation_in_project_config( + federation, config + ) + + if "address" not in federation_config: + typer.secho( + "❌ `flwr stop` currently works with Exec API. Ensure that the correct" + "Exec API address is provided in the `pyproject.toml`.", + fg=typer.colors.RED, + bold=True, + ) + raise typer.Exit(code=1) + + try: + channel = _init_channel(app, federation_config) + stub = ExecStub(channel) # pylint: disable=unused-variable # noqa: F841 + + typer.secho(f"✋ Stopping run ID {run_id}...", fg=typer.colors.GREEN) + _stop_run(stub, run_id=run_id) + + except ValueError as err: + typer.secho( + f"❌ {err}", + fg=typer.colors.RED, + bold=True, + ) + raise typer.Exit(code=1) from err + finally: + channel.close() + + +def on_channel_state_change(channel_connectivity: str) -> None: + """Log channel connectivity.""" + log(DEBUG, channel_connectivity) + + +def _init_channel(app: Path, federation_config: dict[str, Any]) -> grpc.Channel: + """Initialize gRPC channel to the Exec API.""" + insecure, root_certificates_bytes = validate_certificate_in_federation_config( + app, federation_config + ) + channel = create_channel( + server_address=federation_config["address"], + insecure=insecure, + root_certificates=root_certificates_bytes, + max_message_length=GRPC_MAX_MESSAGE_LENGTH, + interceptors=None, + ) + channel.subscribe(on_channel_state_change) + return channel + + +def _stop_run( + stub: ExecStub, # pylint: disable=unused-argument + run_id: int, # pylint: disable=unused-argument +) -> None: + """Stop a run.""" + response: StopRunResponse = stub.StopRun(request=StopRunRequest(run_id=run_id)) + + if response.success: + typer.secho(f"✅ Run {run_id} successfully stopped.", fg=typer.colors.GREEN) + else: + typer.secho(f"❌ Run {run_id} couldn't be stopped.", fg=typer.colors.RED) From 396a68cb94f43ac0427af59e22dc61a2538746ab Mon Sep 17 00:00:00 2001 From: Javier Date: Mon, 9 Dec 2024 12:58:12 +0000 Subject: [PATCH 030/104] feat(framework) Add `GetRunStatus` message to `SimulationIo` (#4647) --- src/proto/flwr/proto/simulationio.proto | 3 ++ src/py/flwr/proto/simulationio_pb2.py | 4 +-- src/py/flwr/proto/simulationio_pb2_grpc.py | 34 +++++++++++++++++++ src/py/flwr/proto/simulationio_pb2_grpc.pyi | 13 +++++++ .../simulation/simulationio_servicer.py | 19 +++++++++++ 5 files changed, 71 insertions(+), 2 deletions(-) diff --git a/src/proto/flwr/proto/simulationio.proto b/src/proto/flwr/proto/simulationio.proto index 9597e33cc65f..a66f838dab47 100644 --- a/src/proto/flwr/proto/simulationio.proto +++ b/src/proto/flwr/proto/simulationio.proto @@ -41,6 +41,9 @@ service SimulationIo { // Get Federation Options rpc GetFederationOptions(GetFederationOptionsRequest) returns (GetFederationOptionsResponse) {} + + // Get Run Status + rpc GetRunStatus(GetRunStatusRequest) returns (GetRunStatusResponse) {} } // PullSimulationInputs messages diff --git a/src/py/flwr/proto/simulationio_pb2.py b/src/py/flwr/proto/simulationio_pb2.py index c7392471f58d..03d96ecaf597 100644 --- a/src/py/flwr/proto/simulationio_pb2.py +++ b/src/py/flwr/proto/simulationio_pb2.py @@ -18,7 +18,7 @@ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x66lwr/proto/simulationio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"\x1d\n\x1bPullSimulationInputsRequest\"\x80\x01\n\x1cPullSimulationInputsResponse\x12$\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Fab\"T\n\x1cPushSimulationOutputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\"\x1f\n\x1dPushSimulationOutputsResponse2\xff\x03\n\x0cSimulationIo\x12k\n\x14PullSimulationInputs\x12\'.flwr.proto.PullSimulationInputsRequest\x1a(.flwr.proto.PullSimulationInputsResponse\"\x00\x12n\n\x15PushSimulationOutputs\x12(.flwr.proto.PushSimulationOutputsRequest\x1a).flwr.proto.PushSimulationOutputsResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x12k\n\x14GetFederationOptions\x12\'.flwr.proto.GetFederationOptionsRequest\x1a(.flwr.proto.GetFederationOptionsResponse\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x66lwr/proto/simulationio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"\x1d\n\x1bPullSimulationInputsRequest\"\x80\x01\n\x1cPullSimulationInputsResponse\x12$\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Fab\"T\n\x1cPushSimulationOutputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\"\x1f\n\x1dPushSimulationOutputsResponse2\xd4\x04\n\x0cSimulationIo\x12k\n\x14PullSimulationInputs\x12\'.flwr.proto.PullSimulationInputsRequest\x1a(.flwr.proto.PullSimulationInputsResponse\"\x00\x12n\n\x15PushSimulationOutputs\x12(.flwr.proto.PushSimulationOutputsRequest\x1a).flwr.proto.PushSimulationOutputsResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x12k\n\x14GetFederationOptions\x12\'.flwr.proto.GetFederationOptionsRequest\x1a(.flwr.proto.GetFederationOptionsResponse\"\x00\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -34,5 +34,5 @@ _globals['_PUSHSIMULATIONOUTPUTSRESPONSE']._serialized_start=385 _globals['_PUSHSIMULATIONOUTPUTSRESPONSE']._serialized_end=416 _globals['_SIMULATIONIO']._serialized_start=419 - _globals['_SIMULATIONIO']._serialized_end=930 + _globals['_SIMULATIONIO']._serialized_end=1015 # @@protoc_insertion_point(module_scope) diff --git a/src/py/flwr/proto/simulationio_pb2_grpc.py b/src/py/flwr/proto/simulationio_pb2_grpc.py index b36110253ba2..f771bd818bf5 100644 --- a/src/py/flwr/proto/simulationio_pb2_grpc.py +++ b/src/py/flwr/proto/simulationio_pb2_grpc.py @@ -41,6 +41,11 @@ def __init__(self, channel): request_serializer=flwr_dot_proto_dot_run__pb2.GetFederationOptionsRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_run__pb2.GetFederationOptionsResponse.FromString, ) + self.GetRunStatus = channel.unary_unary( + '/flwr.proto.SimulationIo/GetRunStatus', + request_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString, + response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString, + ) class SimulationIoServicer(object): @@ -81,6 +86,13 @@ def GetFederationOptions(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetRunStatus(self, request, context): + """Get Run Status + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_SimulationIoServicer_to_server(servicer, server): rpc_method_handlers = { @@ -109,6 +121,11 @@ def add_SimulationIoServicer_to_server(servicer, server): request_deserializer=flwr_dot_proto_dot_run__pb2.GetFederationOptionsRequest.FromString, response_serializer=flwr_dot_proto_dot_run__pb2.GetFederationOptionsResponse.SerializeToString, ), + 'GetRunStatus': grpc.unary_unary_rpc_method_handler( + servicer.GetRunStatus, + request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.FromString, + response_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'flwr.proto.SimulationIo', rpc_method_handlers) @@ -203,3 +220,20 @@ def GetFederationOptions(request, flwr_dot_proto_dot_run__pb2.GetFederationOptionsResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetRunStatus(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flwr.proto.SimulationIo/GetRunStatus', + flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString, + flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/src/py/flwr/proto/simulationio_pb2_grpc.pyi b/src/py/flwr/proto/simulationio_pb2_grpc.pyi index aa78010b047f..c3378b32d4c5 100644 --- a/src/py/flwr/proto/simulationio_pb2_grpc.pyi +++ b/src/py/flwr/proto/simulationio_pb2_grpc.pyi @@ -35,6 +35,11 @@ class SimulationIoStub: flwr.proto.run_pb2.GetFederationOptionsResponse] """Get Federation Options""" + GetRunStatus: grpc.UnaryUnaryMultiCallable[ + flwr.proto.run_pb2.GetRunStatusRequest, + flwr.proto.run_pb2.GetRunStatusResponse] + """Get Run Status""" + class SimulationIoServicer(metaclass=abc.ABCMeta): @abc.abstractmethod @@ -77,5 +82,13 @@ class SimulationIoServicer(metaclass=abc.ABCMeta): """Get Federation Options""" pass + @abc.abstractmethod + def GetRunStatus(self, + request: flwr.proto.run_pb2.GetRunStatusRequest, + context: grpc.ServicerContext, + ) -> flwr.proto.run_pb2.GetRunStatusResponse: + """Get Run Status""" + pass + def add_SimulationIoServicer_to_server(servicer: SimulationIoServicer, server: grpc.Server) -> None: ... diff --git a/src/py/flwr/server/superlink/simulation/simulationio_servicer.py b/src/py/flwr/server/superlink/simulation/simulationio_servicer.py index f1bbf3be1fab..cf3fee545d0a 100644 --- a/src/py/flwr/server/superlink/simulation/simulationio_servicer.py +++ b/src/py/flwr/server/superlink/simulation/simulationio_servicer.py @@ -28,6 +28,7 @@ context_to_proto, fab_to_proto, run_status_from_proto, + run_status_to_proto, run_to_proto, ) from flwr.common.typing import Fab, RunStatus @@ -39,6 +40,8 @@ from flwr.proto.run_pb2 import ( # pylint: disable=E0611 GetFederationOptionsRequest, GetFederationOptionsResponse, + GetRunStatusRequest, + GetRunStatusResponse, UpdateRunStatusRequest, UpdateRunStatusResponse, ) @@ -122,6 +125,22 @@ def UpdateRunStatus( ) return UpdateRunStatusResponse() + def GetRunStatus( + self, request: GetRunStatusRequest, context: ServicerContext + ) -> GetRunStatusResponse: + """Get status of requested runs.""" + log(DEBUG, "SimultionIoServicer.GetRunStatus") + state = self.state_factory.state() + + statuses = state.get_run_status(set(request.run_ids)) + + return GetRunStatusResponse( + run_status_dict={ + run_id: run_status_to_proto(status) + for run_id, status in statuses.items() + } + ) + def PushLogs( self, request: PushLogsRequest, context: grpc.ServicerContext ) -> PushLogsResponse: From 069c186584b1648cc0b7df2d9cd225fdc13d9df1 Mon Sep 17 00:00:00 2001 From: Charles Beauville Date: Mon, 9 Dec 2024 05:10:10 -0800 Subject: [PATCH 031/104] docs(framework) Move framework docs to `framework/docs` (#4655) Co-authored-by: Daniel J. Beutel --- .github/workflows/docs.yml | 2 +- .github/workflows/update_translations.yml | 4 ++-- .gitignore | 6 +++--- dev/build-docs.sh | 2 +- dev/format.sh | 8 ++++---- dev/get-latest-changelog.sh | 2 +- dev/rm-caches.sh | 2 +- dev/test.sh | 4 ++-- {doc => framework/docs}/Makefile | 0 {doc => framework/docs}/build-versioned-docs.sh | 0 .../docs}/locales/fr/LC_MESSAGES/framework-docs.po | 0 .../docs}/locales/fr/LC_MESSAGES/sphinx.po | 0 .../docs}/locales/ko/LC_MESSAGES/framework-docs.po | 0 .../docs}/locales/ko/LC_MESSAGES/sphinx.po | 0 .../locales/pt_BR/LC_MESSAGES/framework-docs.po | 0 .../docs}/locales/pt_BR/LC_MESSAGES/sphinx.po | 0 .../locales/zh_Hans/LC_MESSAGES/framework-docs.po | 0 .../docs}/locales/zh_Hans/LC_MESSAGES/sphinx.po | 0 {doc => framework/docs}/make.bat | 0 {doc => framework/docs}/source/.gitignore | 0 {doc => framework/docs}/source/_static/DP/CDP.png | Bin {doc => framework/docs}/source/_static/DP/LDP.png | Bin .../docs}/source/_static/DP/clientsideCDP.png | Bin .../docs}/source/_static/DP/clipping.png | Bin .../docs}/source/_static/DP/dp-intro.png | Bin .../docs}/source/_static/DP/localdp.png | Bin .../docs}/source/_static/DP/serversideCDP.png | Bin .../docs}/source/_static/changes_requested.png | Bin .../docs}/source/_static/cloning_fork.png | Bin .../docs}/source/_static/cloning_repo.png | Bin .../docs}/source/_static/compare_and_pr.png | Bin .../docs}/source/_static/creating_pr.png | Bin {doc => framework/docs}/source/_static/custom.css | 0 {doc => framework/docs}/source/_static/draft_pr.png | Bin {doc => framework/docs}/source/_static/favicon.ico | Bin .../docs}/source/_static/flower-actors.drawio.png | Bin .../flower-architecture-basic-architecture.svg | 0 .../_static/flower-architecture-hub-and-spoke.svg | 0 .../_static/flower-architecture-multi-run-1.svg | 0 .../_static/flower-architecture-multi-run-2.svg | 0 .../_static/flower-architecture-multi-run.svg | 0 .../docs}/source/_static/flower-logo.png | Bin .../docs}/source/_static/fork_button.png | Bin .../docs}/source/_static/fork_link.png | Bin .../docs}/source/_static/forking-repo.png | Bin .../docs}/source/_static/github_schema.png | Bin .../docs}/source/_static/make_changes.png | Bin .../docs}/source/_static/merging_branch.png | Bin .../docs}/source/_static/merging_pr.png | Bin .../docs}/source/_static/opened_pr.png | Bin .../docs}/source/_static/opening-pr.png | Bin .../docs}/source/_static/resolve_conv.png | Bin .../_static/tutorial/central-model-training.png | Bin .../_static/tutorial/centralized-impossible.png | Bin .../_static/tutorial/centralized-possible.png | Bin .../docs}/source/_static/tutorial/collect-data.png | Bin .../docs}/source/_static/tutorial/data-on-phone.png | Bin .../_static/tutorial/fl-aggregate-model-updates.png | Bin .../_static/tutorial/fl-initialize-global-model.png | Bin .../source/_static/tutorial/fl-local-training.png | Bin .../_static/tutorial/fl-send-global-model.png | Bin .../_static/tutorial/fl-send-model-updates.png | Bin .../docs}/source/_static/tutorial/flower-any.jpeg | Bin .../_static/tutorial/many-devices-with-data.png | Bin .../source/_static/tutorial/model-and-data.png | Bin .../docs}/source/_static/tutorial/train-model.png | Bin .../docs}/source/_static/upstream_link.png | Bin .../docs}/source/_static/weblate_interface.png | Bin .../docs}/source/_static/weblate_status.png | Bin .../docs}/source/_templates/autosummary/base.rst | 0 .../docs}/source/_templates/autosummary/class.rst | 0 .../docs}/source/_templates/autosummary/module.rst | 0 {doc => framework/docs}/source/_templates/base.html | 0 .../docs}/source/_templates/sidebar/brand.html | 0 .../docs}/source/_templates/sidebar/lang.html | 0 .../docs}/source/_templates/sidebar/search.html | 0 .../docs}/source/_templates/sidebar/versioning.html | 0 {doc => framework/docs}/source/conf.py | 0 ...tributor-explanation-public-and-private-apis.rst | 0 .../contributor-how-to-build-docker-images.rst | 0 .../contributor-how-to-contribute-translations.rst | 0 ...utor-how-to-develop-in-vscode-dev-containers.rst | 0 ...tributor-how-to-install-development-versions.rst | 0 .../source/contributor-how-to-release-flower.rst | 0 .../contributor-how-to-set-up-a-virtual-env.rst | 0 .../contributor-how-to-write-documentation.rst | 0 .../contributor-ref-good-first-contributions.rst | 0 ...contributor-ref-secure-aggregation-protocols.rst | 0 .../contributor-tutorial-contribute-on-github.rst | 0 ...ibutor-tutorial-get-started-as-a-contributor.rst | 0 .../docs}/source/docker/enable-tls.rst | 0 {doc => framework/docs}/source/docker/index.rst | 0 .../docs}/source/docker/persist-superlink-state.rst | 0 .../docs}/source/docker/pin-version.rst | 0 .../docs}/source/docker/run-as-root-user.rst | 0 .../docs}/source/docker/run-as-subprocess.rst | 0 .../run-quickstart-examples-docker-compose.rst | 0 .../source/docker/set-environment-variables.rst | 0 .../docker/tutorial-deploy-on-multiple-machines.rst | 0 .../docker/tutorial-quickstart-docker-compose.rst | 0 .../source/docker/tutorial-quickstart-docker.rst | 0 .../docs}/source/docker/use-a-different-version.rst | 0 .../source/explanation-differential-privacy.rst | 0 .../source/explanation-federated-evaluation.rst | 0 .../source/explanation-flower-architecture.rst | 0 .../source/how-to-aggregate-evaluation-results.rst | 0 .../docs}/source/how-to-authenticate-supernodes.rst | 0 .../docs}/source/how-to-configure-clients.rst | 0 .../docs}/source/how-to-design-stateful-clients.rst | 0 .../docs}/source/how-to-enable-tls-connections.rst | 0 .../docs}/source/how-to-implement-fedbn.rst | 0 .../docs}/source/how-to-implement-strategies.rst | 0 .../docs}/source/how-to-install-flower.rst | 0 .../docs}/source/how-to-run-flower-on-azure.rst | 0 .../docs}/source/how-to-run-simulations.rst | 0 .../how-to-save-and-load-model-checkpoints.rst | 0 .../docs}/source/how-to-upgrade-to-flower-1.0.rst | 0 .../docs}/source/how-to-upgrade-to-flower-1.13.rst | 0 .../docs}/source/how-to-use-built-in-mods.rst | 0 .../source/how-to-use-differential-privacy.rst | 0 .../docs}/source/how-to-use-strategies.rst | 0 {doc => framework/docs}/source/index.rst | 0 {doc => framework/docs}/source/ref-api-cli.rst | 0 {doc => framework/docs}/source/ref-changelog.md | 0 .../docs}/source/ref-example-projects.rst | 0 {doc => framework/docs}/source/ref-faq.rst | 0 {doc => framework/docs}/source/ref-telemetry.md | 0 .../docs}/source/tutorial-quickstart-android.rst | 0 .../docs}/source/tutorial-quickstart-fastai.rst | 0 .../source/tutorial-quickstart-huggingface.rst | 0 .../docs}/source/tutorial-quickstart-ios.rst | 0 .../docs}/source/tutorial-quickstart-jax.rst | 0 .../docs}/source/tutorial-quickstart-mlx.rst | 0 .../docs}/source/tutorial-quickstart-pandas.rst | 0 .../tutorial-quickstart-pytorch-lightning.rst | 0 .../docs}/source/tutorial-quickstart-pytorch.rst | 0 .../source/tutorial-quickstart-scikitlearn.rst | 0 .../docs}/source/tutorial-quickstart-tensorflow.rst | 0 .../docs}/source/tutorial-quickstart-xgboost.rst | 0 ...ries-build-a-strategy-from-scratch-pytorch.ipynb | 0 ...torial-series-customize-the-client-pytorch.ipynb | 0 ...ial-series-get-started-with-flower-pytorch.ipynb | 0 ...-use-a-federated-learning-strategy-pytorch.ipynb | 0 ...tutorial-series-what-is-federated-learning.ipynb | 0 pyproject.toml | 8 ++++---- 145 files changed, 19 insertions(+), 19 deletions(-) rename {doc => framework/docs}/Makefile (100%) rename {doc => framework/docs}/build-versioned-docs.sh (100%) rename {doc => framework/docs}/locales/fr/LC_MESSAGES/framework-docs.po (100%) rename {doc => framework/docs}/locales/fr/LC_MESSAGES/sphinx.po (100%) rename {doc => framework/docs}/locales/ko/LC_MESSAGES/framework-docs.po (100%) rename {doc => framework/docs}/locales/ko/LC_MESSAGES/sphinx.po (100%) rename {doc => framework/docs}/locales/pt_BR/LC_MESSAGES/framework-docs.po (100%) rename {doc => framework/docs}/locales/pt_BR/LC_MESSAGES/sphinx.po (100%) rename {doc => framework/docs}/locales/zh_Hans/LC_MESSAGES/framework-docs.po (100%) rename {doc => framework/docs}/locales/zh_Hans/LC_MESSAGES/sphinx.po (100%) rename {doc => framework/docs}/make.bat (100%) rename {doc => framework/docs}/source/.gitignore (100%) rename {doc => framework/docs}/source/_static/DP/CDP.png (100%) rename {doc => framework/docs}/source/_static/DP/LDP.png (100%) rename {doc => framework/docs}/source/_static/DP/clientsideCDP.png (100%) rename {doc => framework/docs}/source/_static/DP/clipping.png (100%) rename {doc => framework/docs}/source/_static/DP/dp-intro.png (100%) rename {doc => framework/docs}/source/_static/DP/localdp.png (100%) rename {doc => framework/docs}/source/_static/DP/serversideCDP.png (100%) rename {doc => framework/docs}/source/_static/changes_requested.png (100%) rename {doc => framework/docs}/source/_static/cloning_fork.png (100%) rename {doc => framework/docs}/source/_static/cloning_repo.png (100%) rename {doc => framework/docs}/source/_static/compare_and_pr.png (100%) rename {doc => framework/docs}/source/_static/creating_pr.png (100%) rename {doc => framework/docs}/source/_static/custom.css (100%) rename {doc => framework/docs}/source/_static/draft_pr.png (100%) rename {doc => framework/docs}/source/_static/favicon.ico (100%) rename {doc => framework/docs}/source/_static/flower-actors.drawio.png (100%) rename {doc => framework/docs}/source/_static/flower-architecture-basic-architecture.svg (100%) rename {doc => framework/docs}/source/_static/flower-architecture-hub-and-spoke.svg (100%) rename {doc => framework/docs}/source/_static/flower-architecture-multi-run-1.svg (100%) rename {doc => framework/docs}/source/_static/flower-architecture-multi-run-2.svg (100%) rename {doc => framework/docs}/source/_static/flower-architecture-multi-run.svg (100%) rename {doc => framework/docs}/source/_static/flower-logo.png (100%) rename {doc => framework/docs}/source/_static/fork_button.png (100%) rename {doc => framework/docs}/source/_static/fork_link.png (100%) rename {doc => framework/docs}/source/_static/forking-repo.png (100%) rename {doc => framework/docs}/source/_static/github_schema.png (100%) rename {doc => framework/docs}/source/_static/make_changes.png (100%) rename {doc => framework/docs}/source/_static/merging_branch.png (100%) rename {doc => framework/docs}/source/_static/merging_pr.png (100%) rename {doc => framework/docs}/source/_static/opened_pr.png (100%) rename {doc => framework/docs}/source/_static/opening-pr.png (100%) rename {doc => framework/docs}/source/_static/resolve_conv.png (100%) rename {doc => framework/docs}/source/_static/tutorial/central-model-training.png (100%) rename {doc => framework/docs}/source/_static/tutorial/centralized-impossible.png (100%) rename {doc => framework/docs}/source/_static/tutorial/centralized-possible.png (100%) rename {doc => framework/docs}/source/_static/tutorial/collect-data.png (100%) rename {doc => framework/docs}/source/_static/tutorial/data-on-phone.png (100%) rename {doc => framework/docs}/source/_static/tutorial/fl-aggregate-model-updates.png (100%) rename {doc => framework/docs}/source/_static/tutorial/fl-initialize-global-model.png (100%) rename {doc => framework/docs}/source/_static/tutorial/fl-local-training.png (100%) rename {doc => framework/docs}/source/_static/tutorial/fl-send-global-model.png (100%) rename {doc => framework/docs}/source/_static/tutorial/fl-send-model-updates.png (100%) rename {doc => framework/docs}/source/_static/tutorial/flower-any.jpeg (100%) rename {doc => framework/docs}/source/_static/tutorial/many-devices-with-data.png (100%) rename {doc => framework/docs}/source/_static/tutorial/model-and-data.png (100%) rename {doc => framework/docs}/source/_static/tutorial/train-model.png (100%) rename {doc => framework/docs}/source/_static/upstream_link.png (100%) rename {doc => framework/docs}/source/_static/weblate_interface.png (100%) rename {doc => framework/docs}/source/_static/weblate_status.png (100%) rename {doc => framework/docs}/source/_templates/autosummary/base.rst (100%) rename {doc => framework/docs}/source/_templates/autosummary/class.rst (100%) rename {doc => framework/docs}/source/_templates/autosummary/module.rst (100%) rename {doc => framework/docs}/source/_templates/base.html (100%) rename {doc => framework/docs}/source/_templates/sidebar/brand.html (100%) rename {doc => framework/docs}/source/_templates/sidebar/lang.html (100%) rename {doc => framework/docs}/source/_templates/sidebar/search.html (100%) rename {doc => framework/docs}/source/_templates/sidebar/versioning.html (100%) rename {doc => framework/docs}/source/conf.py (100%) rename {doc => framework/docs}/source/contributor-explanation-public-and-private-apis.rst (100%) rename {doc => framework/docs}/source/contributor-how-to-build-docker-images.rst (100%) rename {doc => framework/docs}/source/contributor-how-to-contribute-translations.rst (100%) rename {doc => framework/docs}/source/contributor-how-to-develop-in-vscode-dev-containers.rst (100%) rename {doc => framework/docs}/source/contributor-how-to-install-development-versions.rst (100%) rename {doc => framework/docs}/source/contributor-how-to-release-flower.rst (100%) rename {doc => framework/docs}/source/contributor-how-to-set-up-a-virtual-env.rst (100%) rename {doc => framework/docs}/source/contributor-how-to-write-documentation.rst (100%) rename {doc => framework/docs}/source/contributor-ref-good-first-contributions.rst (100%) rename {doc => framework/docs}/source/contributor-ref-secure-aggregation-protocols.rst (100%) rename {doc => framework/docs}/source/contributor-tutorial-contribute-on-github.rst (100%) rename {doc => framework/docs}/source/contributor-tutorial-get-started-as-a-contributor.rst (100%) rename {doc => framework/docs}/source/docker/enable-tls.rst (100%) rename {doc => framework/docs}/source/docker/index.rst (100%) rename {doc => framework/docs}/source/docker/persist-superlink-state.rst (100%) rename {doc => framework/docs}/source/docker/pin-version.rst (100%) rename {doc => framework/docs}/source/docker/run-as-root-user.rst (100%) rename {doc => framework/docs}/source/docker/run-as-subprocess.rst (100%) rename {doc => framework/docs}/source/docker/run-quickstart-examples-docker-compose.rst (100%) rename {doc => framework/docs}/source/docker/set-environment-variables.rst (100%) rename {doc => framework/docs}/source/docker/tutorial-deploy-on-multiple-machines.rst (100%) rename {doc => framework/docs}/source/docker/tutorial-quickstart-docker-compose.rst (100%) rename {doc => framework/docs}/source/docker/tutorial-quickstart-docker.rst (100%) rename {doc => framework/docs}/source/docker/use-a-different-version.rst (100%) rename {doc => framework/docs}/source/explanation-differential-privacy.rst (100%) rename {doc => framework/docs}/source/explanation-federated-evaluation.rst (100%) rename {doc => framework/docs}/source/explanation-flower-architecture.rst (100%) rename {doc => framework/docs}/source/how-to-aggregate-evaluation-results.rst (100%) rename {doc => framework/docs}/source/how-to-authenticate-supernodes.rst (100%) rename {doc => framework/docs}/source/how-to-configure-clients.rst (100%) rename {doc => framework/docs}/source/how-to-design-stateful-clients.rst (100%) rename {doc => framework/docs}/source/how-to-enable-tls-connections.rst (100%) rename {doc => framework/docs}/source/how-to-implement-fedbn.rst (100%) rename {doc => framework/docs}/source/how-to-implement-strategies.rst (100%) rename {doc => framework/docs}/source/how-to-install-flower.rst (100%) rename {doc => framework/docs}/source/how-to-run-flower-on-azure.rst (100%) rename {doc => framework/docs}/source/how-to-run-simulations.rst (100%) rename {doc => framework/docs}/source/how-to-save-and-load-model-checkpoints.rst (100%) rename {doc => framework/docs}/source/how-to-upgrade-to-flower-1.0.rst (100%) rename {doc => framework/docs}/source/how-to-upgrade-to-flower-1.13.rst (100%) rename {doc => framework/docs}/source/how-to-use-built-in-mods.rst (100%) rename {doc => framework/docs}/source/how-to-use-differential-privacy.rst (100%) rename {doc => framework/docs}/source/how-to-use-strategies.rst (100%) rename {doc => framework/docs}/source/index.rst (100%) rename {doc => framework/docs}/source/ref-api-cli.rst (100%) rename {doc => framework/docs}/source/ref-changelog.md (100%) rename {doc => framework/docs}/source/ref-example-projects.rst (100%) rename {doc => framework/docs}/source/ref-faq.rst (100%) rename {doc => framework/docs}/source/ref-telemetry.md (100%) rename {doc => framework/docs}/source/tutorial-quickstart-android.rst (100%) rename {doc => framework/docs}/source/tutorial-quickstart-fastai.rst (100%) rename {doc => framework/docs}/source/tutorial-quickstart-huggingface.rst (100%) rename {doc => framework/docs}/source/tutorial-quickstart-ios.rst (100%) rename {doc => framework/docs}/source/tutorial-quickstart-jax.rst (100%) rename {doc => framework/docs}/source/tutorial-quickstart-mlx.rst (100%) rename {doc => framework/docs}/source/tutorial-quickstart-pandas.rst (100%) rename {doc => framework/docs}/source/tutorial-quickstart-pytorch-lightning.rst (100%) rename {doc => framework/docs}/source/tutorial-quickstart-pytorch.rst (100%) rename {doc => framework/docs}/source/tutorial-quickstart-scikitlearn.rst (100%) rename {doc => framework/docs}/source/tutorial-quickstart-tensorflow.rst (100%) rename {doc => framework/docs}/source/tutorial-quickstart-xgboost.rst (100%) rename {doc => framework/docs}/source/tutorial-series-build-a-strategy-from-scratch-pytorch.ipynb (100%) rename {doc => framework/docs}/source/tutorial-series-customize-the-client-pytorch.ipynb (100%) rename {doc => framework/docs}/source/tutorial-series-get-started-with-flower-pytorch.ipynb (100%) rename {doc => framework/docs}/source/tutorial-series-use-a-federated-learning-strategy-pytorch.ipynb (100%) rename {doc => framework/docs}/source/tutorial-series-what-is-federated-learning.ipynb (100%) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 3f010a4c37b0..a4b3455d8c6c 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -45,7 +45,7 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets. AWS_SECRET_ACCESS_KEY }} DOCS_BUCKET: flower.ai run: | - aws s3 sync --delete --exclude ".*" --exclude "v/*" --cache-control "no-cache" ./doc/build/html/ s3://${{ env.DOCS_BUCKET }}/docs/framework + aws s3 sync --delete --exclude ".*" --exclude "v/*" --cache-control "no-cache" ./framework/docs/build/html/ s3://${{ env.DOCS_BUCKET }}/docs/framework aws s3 sync --delete --exclude ".*" --exclude "v/*" --cache-control "no-cache" ./baselines/doc/build/html/ s3://${{ env.DOCS_BUCKET }}/docs/baselines aws s3 sync --delete --exclude ".*" --exclude "v/*" --cache-control "no-cache" ./examples/doc/build/html/ s3://${{ env.DOCS_BUCKET }}/docs/examples aws s3 sync --delete --exclude ".*" --exclude "v/*" --cache-control "no-cache" ./datasets/doc/build/html/ s3://${{ env.DOCS_BUCKET }}/docs/datasets diff --git a/.github/workflows/update_translations.yml b/.github/workflows/update_translations.yml index 9a5391a40438..ec748befb33c 100644 --- a/.github/workflows/update_translations.yml +++ b/.github/workflows/update_translations.yml @@ -38,7 +38,7 @@ jobs: - name: Update text and translations for all locales run: | - cd doc + cd framework/docs make update-text for langDir in locales/*; do if [ -d "$langDir" ]; then @@ -52,7 +52,7 @@ jobs: run: | git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" git config --local user.name "github-actions[bot]" - git add doc/locales + git add framework/docs/locales git commit -m "Update text and language files" continue-on-error: true diff --git a/.gitignore b/.gitignore index 96789cbf6e00..9af2d29f2315 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,9 @@ # Flower .flower_ops data/ -doc/source/api_documentation -doc/source/_build -doc/source/dataset/ +framework/docs/source/api_documentation +framework/docs/source/_build +framework/docs/source/dataset/ flwr_logs .cache diff --git a/dev/build-docs.sh b/dev/build-docs.sh index f4bf958b0ebf..bdfd33ad626d 100755 --- a/dev/build-docs.sh +++ b/dev/build-docs.sh @@ -14,7 +14,7 @@ cd $ROOT ./datasets/dev/build-flwr-datasets-docs.sh cd $ROOT -cd doc +cd framework/docs if [ "$1" = true ]; then ./build-versioned-docs.sh diff --git a/dev/format.sh b/dev/format.sh index a3129b932e5d..8ad739be529a 100755 --- a/dev/format.sh +++ b/dev/format.sh @@ -31,13 +31,13 @@ python -m black -q e2e python -m docformatter -i -r e2e # Notebooks -python -m black --ipynb -q doc/source/*.ipynb +python -m black --ipynb -q framework/docs/source/*.ipynb KEYS="metadata.celltoolbar metadata.language_info metadata.toc metadata.notify_time metadata.varInspector metadata.accelerator metadata.vscode cell.metadata.id cell.metadata.heading_collapsed cell.metadata.hidden cell.metadata.code_folding cell.metadata.tags cell.metadata.init_cell cell.metadata.vscode cell.metadata.pycharm" -python -m nbstripout doc/source/*.ipynb --extra-keys "$KEYS" +python -m nbstripout framework/docs/source/*.ipynb --extra-keys "$KEYS" python -m nbstripout examples/*/*.ipynb --extra-keys "$KEYS" # Markdown -python -m mdformat --number doc/source examples +python -m mdformat --number framework/docs/source examples # RST -docstrfmt doc/source +docstrfmt framework/docs/source diff --git a/dev/get-latest-changelog.sh b/dev/get-latest-changelog.sh index 1d4a6b6bf58f..9cf8a5069253 100755 --- a/dev/get-latest-changelog.sh +++ b/dev/get-latest-changelog.sh @@ -9,7 +9,7 @@ tags=$(git tag --sort=-v:refname) new_version=$(echo "$tags" | sed -n '1p') old_version=$(echo "$tags" | sed -n '2p') -awk '{sub(//, ""); print}' doc/source/ref-changelog.md | awk -v start="$new_version" -v end="$old_version" ' +awk '{sub(//, ""); print}' framework/docs/source/ref-changelog.md | awk -v start="$new_version" -v end="$old_version" ' $0 ~ start {flag=1; next} $0 ~ end {flag=0} flag && !printed && /^$/ {next} # skip the first blank line diff --git a/dev/rm-caches.sh b/dev/rm-caches.sh index d5b004fb834c..eddd9c9e947a 100755 --- a/dev/rm-caches.sh +++ b/dev/rm-caches.sh @@ -6,4 +6,4 @@ find src -type d -name __pycache__ -exec rm -r {} \+ rm -rf .mypy_cache rm -rf .pytest_cache rm -rf .cache -rm -rf doc/build +rm -rf framework/docs/build diff --git a/dev/test.sh b/dev/test.sh index b8eeed14bc46..c6a45602b34c 100755 --- a/dev/test.sh +++ b/dev/test.sh @@ -55,7 +55,7 @@ echo "- All Python checks passed" echo "- Start Markdown checks" echo "- mdformat: start" -python -m mdformat --check --number doc/source examples +python -m mdformat --check --number framework/docs/source examples echo "- mdformat: done" echo "- All Markdown checks passed" @@ -71,7 +71,7 @@ echo "- All TOML checks passed" echo "- Start rST checks" echo "- docstrfmt: start" -docstrfmt --check doc/source +docstrfmt --check framework/docs/source echo "- docstrfmt: done" echo "- All rST checks passed" diff --git a/doc/Makefile b/framework/docs/Makefile similarity index 100% rename from doc/Makefile rename to framework/docs/Makefile diff --git a/doc/build-versioned-docs.sh b/framework/docs/build-versioned-docs.sh similarity index 100% rename from doc/build-versioned-docs.sh rename to framework/docs/build-versioned-docs.sh diff --git a/doc/locales/fr/LC_MESSAGES/framework-docs.po b/framework/docs/locales/fr/LC_MESSAGES/framework-docs.po similarity index 100% rename from doc/locales/fr/LC_MESSAGES/framework-docs.po rename to framework/docs/locales/fr/LC_MESSAGES/framework-docs.po diff --git a/doc/locales/fr/LC_MESSAGES/sphinx.po b/framework/docs/locales/fr/LC_MESSAGES/sphinx.po similarity index 100% rename from doc/locales/fr/LC_MESSAGES/sphinx.po rename to framework/docs/locales/fr/LC_MESSAGES/sphinx.po diff --git a/doc/locales/ko/LC_MESSAGES/framework-docs.po b/framework/docs/locales/ko/LC_MESSAGES/framework-docs.po similarity index 100% rename from doc/locales/ko/LC_MESSAGES/framework-docs.po rename to framework/docs/locales/ko/LC_MESSAGES/framework-docs.po diff --git a/doc/locales/ko/LC_MESSAGES/sphinx.po b/framework/docs/locales/ko/LC_MESSAGES/sphinx.po similarity index 100% rename from doc/locales/ko/LC_MESSAGES/sphinx.po rename to framework/docs/locales/ko/LC_MESSAGES/sphinx.po diff --git a/doc/locales/pt_BR/LC_MESSAGES/framework-docs.po b/framework/docs/locales/pt_BR/LC_MESSAGES/framework-docs.po similarity index 100% rename from doc/locales/pt_BR/LC_MESSAGES/framework-docs.po rename to framework/docs/locales/pt_BR/LC_MESSAGES/framework-docs.po diff --git a/doc/locales/pt_BR/LC_MESSAGES/sphinx.po b/framework/docs/locales/pt_BR/LC_MESSAGES/sphinx.po similarity index 100% rename from doc/locales/pt_BR/LC_MESSAGES/sphinx.po rename to framework/docs/locales/pt_BR/LC_MESSAGES/sphinx.po diff --git a/doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po b/framework/docs/locales/zh_Hans/LC_MESSAGES/framework-docs.po similarity index 100% rename from doc/locales/zh_Hans/LC_MESSAGES/framework-docs.po rename to framework/docs/locales/zh_Hans/LC_MESSAGES/framework-docs.po diff --git a/doc/locales/zh_Hans/LC_MESSAGES/sphinx.po b/framework/docs/locales/zh_Hans/LC_MESSAGES/sphinx.po similarity index 100% rename from doc/locales/zh_Hans/LC_MESSAGES/sphinx.po rename to framework/docs/locales/zh_Hans/LC_MESSAGES/sphinx.po diff --git a/doc/make.bat b/framework/docs/make.bat similarity index 100% rename from doc/make.bat rename to framework/docs/make.bat diff --git a/doc/source/.gitignore b/framework/docs/source/.gitignore similarity index 100% rename from doc/source/.gitignore rename to framework/docs/source/.gitignore diff --git a/doc/source/_static/DP/CDP.png b/framework/docs/source/_static/DP/CDP.png similarity index 100% rename from doc/source/_static/DP/CDP.png rename to framework/docs/source/_static/DP/CDP.png diff --git a/doc/source/_static/DP/LDP.png b/framework/docs/source/_static/DP/LDP.png similarity index 100% rename from doc/source/_static/DP/LDP.png rename to framework/docs/source/_static/DP/LDP.png diff --git a/doc/source/_static/DP/clientsideCDP.png b/framework/docs/source/_static/DP/clientsideCDP.png similarity index 100% rename from doc/source/_static/DP/clientsideCDP.png rename to framework/docs/source/_static/DP/clientsideCDP.png diff --git a/doc/source/_static/DP/clipping.png b/framework/docs/source/_static/DP/clipping.png similarity index 100% rename from doc/source/_static/DP/clipping.png rename to framework/docs/source/_static/DP/clipping.png diff --git a/doc/source/_static/DP/dp-intro.png b/framework/docs/source/_static/DP/dp-intro.png similarity index 100% rename from doc/source/_static/DP/dp-intro.png rename to framework/docs/source/_static/DP/dp-intro.png diff --git a/doc/source/_static/DP/localdp.png b/framework/docs/source/_static/DP/localdp.png similarity index 100% rename from doc/source/_static/DP/localdp.png rename to framework/docs/source/_static/DP/localdp.png diff --git a/doc/source/_static/DP/serversideCDP.png b/framework/docs/source/_static/DP/serversideCDP.png similarity index 100% rename from doc/source/_static/DP/serversideCDP.png rename to framework/docs/source/_static/DP/serversideCDP.png diff --git a/doc/source/_static/changes_requested.png b/framework/docs/source/_static/changes_requested.png similarity index 100% rename from doc/source/_static/changes_requested.png rename to framework/docs/source/_static/changes_requested.png diff --git a/doc/source/_static/cloning_fork.png b/framework/docs/source/_static/cloning_fork.png similarity index 100% rename from doc/source/_static/cloning_fork.png rename to framework/docs/source/_static/cloning_fork.png diff --git a/doc/source/_static/cloning_repo.png b/framework/docs/source/_static/cloning_repo.png similarity index 100% rename from doc/source/_static/cloning_repo.png rename to framework/docs/source/_static/cloning_repo.png diff --git a/doc/source/_static/compare_and_pr.png b/framework/docs/source/_static/compare_and_pr.png similarity index 100% rename from doc/source/_static/compare_and_pr.png rename to framework/docs/source/_static/compare_and_pr.png diff --git a/doc/source/_static/creating_pr.png b/framework/docs/source/_static/creating_pr.png similarity index 100% rename from doc/source/_static/creating_pr.png rename to framework/docs/source/_static/creating_pr.png diff --git a/doc/source/_static/custom.css b/framework/docs/source/_static/custom.css similarity index 100% rename from doc/source/_static/custom.css rename to framework/docs/source/_static/custom.css diff --git a/doc/source/_static/draft_pr.png b/framework/docs/source/_static/draft_pr.png similarity index 100% rename from doc/source/_static/draft_pr.png rename to framework/docs/source/_static/draft_pr.png diff --git a/doc/source/_static/favicon.ico b/framework/docs/source/_static/favicon.ico similarity index 100% rename from doc/source/_static/favicon.ico rename to framework/docs/source/_static/favicon.ico diff --git a/doc/source/_static/flower-actors.drawio.png b/framework/docs/source/_static/flower-actors.drawio.png similarity index 100% rename from doc/source/_static/flower-actors.drawio.png rename to framework/docs/source/_static/flower-actors.drawio.png diff --git a/doc/source/_static/flower-architecture-basic-architecture.svg b/framework/docs/source/_static/flower-architecture-basic-architecture.svg similarity index 100% rename from doc/source/_static/flower-architecture-basic-architecture.svg rename to framework/docs/source/_static/flower-architecture-basic-architecture.svg diff --git a/doc/source/_static/flower-architecture-hub-and-spoke.svg b/framework/docs/source/_static/flower-architecture-hub-and-spoke.svg similarity index 100% rename from doc/source/_static/flower-architecture-hub-and-spoke.svg rename to framework/docs/source/_static/flower-architecture-hub-and-spoke.svg diff --git a/doc/source/_static/flower-architecture-multi-run-1.svg b/framework/docs/source/_static/flower-architecture-multi-run-1.svg similarity index 100% rename from doc/source/_static/flower-architecture-multi-run-1.svg rename to framework/docs/source/_static/flower-architecture-multi-run-1.svg diff --git a/doc/source/_static/flower-architecture-multi-run-2.svg b/framework/docs/source/_static/flower-architecture-multi-run-2.svg similarity index 100% rename from doc/source/_static/flower-architecture-multi-run-2.svg rename to framework/docs/source/_static/flower-architecture-multi-run-2.svg diff --git a/doc/source/_static/flower-architecture-multi-run.svg b/framework/docs/source/_static/flower-architecture-multi-run.svg similarity index 100% rename from doc/source/_static/flower-architecture-multi-run.svg rename to framework/docs/source/_static/flower-architecture-multi-run.svg diff --git a/doc/source/_static/flower-logo.png b/framework/docs/source/_static/flower-logo.png similarity index 100% rename from doc/source/_static/flower-logo.png rename to framework/docs/source/_static/flower-logo.png diff --git a/doc/source/_static/fork_button.png b/framework/docs/source/_static/fork_button.png similarity index 100% rename from doc/source/_static/fork_button.png rename to framework/docs/source/_static/fork_button.png diff --git a/doc/source/_static/fork_link.png b/framework/docs/source/_static/fork_link.png similarity index 100% rename from doc/source/_static/fork_link.png rename to framework/docs/source/_static/fork_link.png diff --git a/doc/source/_static/forking-repo.png b/framework/docs/source/_static/forking-repo.png similarity index 100% rename from doc/source/_static/forking-repo.png rename to framework/docs/source/_static/forking-repo.png diff --git a/doc/source/_static/github_schema.png b/framework/docs/source/_static/github_schema.png similarity index 100% rename from doc/source/_static/github_schema.png rename to framework/docs/source/_static/github_schema.png diff --git a/doc/source/_static/make_changes.png b/framework/docs/source/_static/make_changes.png similarity index 100% rename from doc/source/_static/make_changes.png rename to framework/docs/source/_static/make_changes.png diff --git a/doc/source/_static/merging_branch.png b/framework/docs/source/_static/merging_branch.png similarity index 100% rename from doc/source/_static/merging_branch.png rename to framework/docs/source/_static/merging_branch.png diff --git a/doc/source/_static/merging_pr.png b/framework/docs/source/_static/merging_pr.png similarity index 100% rename from doc/source/_static/merging_pr.png rename to framework/docs/source/_static/merging_pr.png diff --git a/doc/source/_static/opened_pr.png b/framework/docs/source/_static/opened_pr.png similarity index 100% rename from doc/source/_static/opened_pr.png rename to framework/docs/source/_static/opened_pr.png diff --git a/doc/source/_static/opening-pr.png b/framework/docs/source/_static/opening-pr.png similarity index 100% rename from doc/source/_static/opening-pr.png rename to framework/docs/source/_static/opening-pr.png diff --git a/doc/source/_static/resolve_conv.png b/framework/docs/source/_static/resolve_conv.png similarity index 100% rename from doc/source/_static/resolve_conv.png rename to framework/docs/source/_static/resolve_conv.png diff --git a/doc/source/_static/tutorial/central-model-training.png b/framework/docs/source/_static/tutorial/central-model-training.png similarity index 100% rename from doc/source/_static/tutorial/central-model-training.png rename to framework/docs/source/_static/tutorial/central-model-training.png diff --git a/doc/source/_static/tutorial/centralized-impossible.png b/framework/docs/source/_static/tutorial/centralized-impossible.png similarity index 100% rename from doc/source/_static/tutorial/centralized-impossible.png rename to framework/docs/source/_static/tutorial/centralized-impossible.png diff --git a/doc/source/_static/tutorial/centralized-possible.png b/framework/docs/source/_static/tutorial/centralized-possible.png similarity index 100% rename from doc/source/_static/tutorial/centralized-possible.png rename to framework/docs/source/_static/tutorial/centralized-possible.png diff --git a/doc/source/_static/tutorial/collect-data.png b/framework/docs/source/_static/tutorial/collect-data.png similarity index 100% rename from doc/source/_static/tutorial/collect-data.png rename to framework/docs/source/_static/tutorial/collect-data.png diff --git a/doc/source/_static/tutorial/data-on-phone.png b/framework/docs/source/_static/tutorial/data-on-phone.png similarity index 100% rename from doc/source/_static/tutorial/data-on-phone.png rename to framework/docs/source/_static/tutorial/data-on-phone.png diff --git a/doc/source/_static/tutorial/fl-aggregate-model-updates.png b/framework/docs/source/_static/tutorial/fl-aggregate-model-updates.png similarity index 100% rename from doc/source/_static/tutorial/fl-aggregate-model-updates.png rename to framework/docs/source/_static/tutorial/fl-aggregate-model-updates.png diff --git a/doc/source/_static/tutorial/fl-initialize-global-model.png b/framework/docs/source/_static/tutorial/fl-initialize-global-model.png similarity index 100% rename from doc/source/_static/tutorial/fl-initialize-global-model.png rename to framework/docs/source/_static/tutorial/fl-initialize-global-model.png diff --git a/doc/source/_static/tutorial/fl-local-training.png b/framework/docs/source/_static/tutorial/fl-local-training.png similarity index 100% rename from doc/source/_static/tutorial/fl-local-training.png rename to framework/docs/source/_static/tutorial/fl-local-training.png diff --git a/doc/source/_static/tutorial/fl-send-global-model.png b/framework/docs/source/_static/tutorial/fl-send-global-model.png similarity index 100% rename from doc/source/_static/tutorial/fl-send-global-model.png rename to framework/docs/source/_static/tutorial/fl-send-global-model.png diff --git a/doc/source/_static/tutorial/fl-send-model-updates.png b/framework/docs/source/_static/tutorial/fl-send-model-updates.png similarity index 100% rename from doc/source/_static/tutorial/fl-send-model-updates.png rename to framework/docs/source/_static/tutorial/fl-send-model-updates.png diff --git a/doc/source/_static/tutorial/flower-any.jpeg b/framework/docs/source/_static/tutorial/flower-any.jpeg similarity index 100% rename from doc/source/_static/tutorial/flower-any.jpeg rename to framework/docs/source/_static/tutorial/flower-any.jpeg diff --git a/doc/source/_static/tutorial/many-devices-with-data.png b/framework/docs/source/_static/tutorial/many-devices-with-data.png similarity index 100% rename from doc/source/_static/tutorial/many-devices-with-data.png rename to framework/docs/source/_static/tutorial/many-devices-with-data.png diff --git a/doc/source/_static/tutorial/model-and-data.png b/framework/docs/source/_static/tutorial/model-and-data.png similarity index 100% rename from doc/source/_static/tutorial/model-and-data.png rename to framework/docs/source/_static/tutorial/model-and-data.png diff --git a/doc/source/_static/tutorial/train-model.png b/framework/docs/source/_static/tutorial/train-model.png similarity index 100% rename from doc/source/_static/tutorial/train-model.png rename to framework/docs/source/_static/tutorial/train-model.png diff --git a/doc/source/_static/upstream_link.png b/framework/docs/source/_static/upstream_link.png similarity index 100% rename from doc/source/_static/upstream_link.png rename to framework/docs/source/_static/upstream_link.png diff --git a/doc/source/_static/weblate_interface.png b/framework/docs/source/_static/weblate_interface.png similarity index 100% rename from doc/source/_static/weblate_interface.png rename to framework/docs/source/_static/weblate_interface.png diff --git a/doc/source/_static/weblate_status.png b/framework/docs/source/_static/weblate_status.png similarity index 100% rename from doc/source/_static/weblate_status.png rename to framework/docs/source/_static/weblate_status.png diff --git a/doc/source/_templates/autosummary/base.rst b/framework/docs/source/_templates/autosummary/base.rst similarity index 100% rename from doc/source/_templates/autosummary/base.rst rename to framework/docs/source/_templates/autosummary/base.rst diff --git a/doc/source/_templates/autosummary/class.rst b/framework/docs/source/_templates/autosummary/class.rst similarity index 100% rename from doc/source/_templates/autosummary/class.rst rename to framework/docs/source/_templates/autosummary/class.rst diff --git a/doc/source/_templates/autosummary/module.rst b/framework/docs/source/_templates/autosummary/module.rst similarity index 100% rename from doc/source/_templates/autosummary/module.rst rename to framework/docs/source/_templates/autosummary/module.rst diff --git a/doc/source/_templates/base.html b/framework/docs/source/_templates/base.html similarity index 100% rename from doc/source/_templates/base.html rename to framework/docs/source/_templates/base.html diff --git a/doc/source/_templates/sidebar/brand.html b/framework/docs/source/_templates/sidebar/brand.html similarity index 100% rename from doc/source/_templates/sidebar/brand.html rename to framework/docs/source/_templates/sidebar/brand.html diff --git a/doc/source/_templates/sidebar/lang.html b/framework/docs/source/_templates/sidebar/lang.html similarity index 100% rename from doc/source/_templates/sidebar/lang.html rename to framework/docs/source/_templates/sidebar/lang.html diff --git a/doc/source/_templates/sidebar/search.html b/framework/docs/source/_templates/sidebar/search.html similarity index 100% rename from doc/source/_templates/sidebar/search.html rename to framework/docs/source/_templates/sidebar/search.html diff --git a/doc/source/_templates/sidebar/versioning.html b/framework/docs/source/_templates/sidebar/versioning.html similarity index 100% rename from doc/source/_templates/sidebar/versioning.html rename to framework/docs/source/_templates/sidebar/versioning.html diff --git a/doc/source/conf.py b/framework/docs/source/conf.py similarity index 100% rename from doc/source/conf.py rename to framework/docs/source/conf.py diff --git a/doc/source/contributor-explanation-public-and-private-apis.rst b/framework/docs/source/contributor-explanation-public-and-private-apis.rst similarity index 100% rename from doc/source/contributor-explanation-public-and-private-apis.rst rename to framework/docs/source/contributor-explanation-public-and-private-apis.rst diff --git a/doc/source/contributor-how-to-build-docker-images.rst b/framework/docs/source/contributor-how-to-build-docker-images.rst similarity index 100% rename from doc/source/contributor-how-to-build-docker-images.rst rename to framework/docs/source/contributor-how-to-build-docker-images.rst diff --git a/doc/source/contributor-how-to-contribute-translations.rst b/framework/docs/source/contributor-how-to-contribute-translations.rst similarity index 100% rename from doc/source/contributor-how-to-contribute-translations.rst rename to framework/docs/source/contributor-how-to-contribute-translations.rst diff --git a/doc/source/contributor-how-to-develop-in-vscode-dev-containers.rst b/framework/docs/source/contributor-how-to-develop-in-vscode-dev-containers.rst similarity index 100% rename from doc/source/contributor-how-to-develop-in-vscode-dev-containers.rst rename to framework/docs/source/contributor-how-to-develop-in-vscode-dev-containers.rst diff --git a/doc/source/contributor-how-to-install-development-versions.rst b/framework/docs/source/contributor-how-to-install-development-versions.rst similarity index 100% rename from doc/source/contributor-how-to-install-development-versions.rst rename to framework/docs/source/contributor-how-to-install-development-versions.rst diff --git a/doc/source/contributor-how-to-release-flower.rst b/framework/docs/source/contributor-how-to-release-flower.rst similarity index 100% rename from doc/source/contributor-how-to-release-flower.rst rename to framework/docs/source/contributor-how-to-release-flower.rst diff --git a/doc/source/contributor-how-to-set-up-a-virtual-env.rst b/framework/docs/source/contributor-how-to-set-up-a-virtual-env.rst similarity index 100% rename from doc/source/contributor-how-to-set-up-a-virtual-env.rst rename to framework/docs/source/contributor-how-to-set-up-a-virtual-env.rst diff --git a/doc/source/contributor-how-to-write-documentation.rst b/framework/docs/source/contributor-how-to-write-documentation.rst similarity index 100% rename from doc/source/contributor-how-to-write-documentation.rst rename to framework/docs/source/contributor-how-to-write-documentation.rst diff --git a/doc/source/contributor-ref-good-first-contributions.rst b/framework/docs/source/contributor-ref-good-first-contributions.rst similarity index 100% rename from doc/source/contributor-ref-good-first-contributions.rst rename to framework/docs/source/contributor-ref-good-first-contributions.rst diff --git a/doc/source/contributor-ref-secure-aggregation-protocols.rst b/framework/docs/source/contributor-ref-secure-aggregation-protocols.rst similarity index 100% rename from doc/source/contributor-ref-secure-aggregation-protocols.rst rename to framework/docs/source/contributor-ref-secure-aggregation-protocols.rst diff --git a/doc/source/contributor-tutorial-contribute-on-github.rst b/framework/docs/source/contributor-tutorial-contribute-on-github.rst similarity index 100% rename from doc/source/contributor-tutorial-contribute-on-github.rst rename to framework/docs/source/contributor-tutorial-contribute-on-github.rst diff --git a/doc/source/contributor-tutorial-get-started-as-a-contributor.rst b/framework/docs/source/contributor-tutorial-get-started-as-a-contributor.rst similarity index 100% rename from doc/source/contributor-tutorial-get-started-as-a-contributor.rst rename to framework/docs/source/contributor-tutorial-get-started-as-a-contributor.rst diff --git a/doc/source/docker/enable-tls.rst b/framework/docs/source/docker/enable-tls.rst similarity index 100% rename from doc/source/docker/enable-tls.rst rename to framework/docs/source/docker/enable-tls.rst diff --git a/doc/source/docker/index.rst b/framework/docs/source/docker/index.rst similarity index 100% rename from doc/source/docker/index.rst rename to framework/docs/source/docker/index.rst diff --git a/doc/source/docker/persist-superlink-state.rst b/framework/docs/source/docker/persist-superlink-state.rst similarity index 100% rename from doc/source/docker/persist-superlink-state.rst rename to framework/docs/source/docker/persist-superlink-state.rst diff --git a/doc/source/docker/pin-version.rst b/framework/docs/source/docker/pin-version.rst similarity index 100% rename from doc/source/docker/pin-version.rst rename to framework/docs/source/docker/pin-version.rst diff --git a/doc/source/docker/run-as-root-user.rst b/framework/docs/source/docker/run-as-root-user.rst similarity index 100% rename from doc/source/docker/run-as-root-user.rst rename to framework/docs/source/docker/run-as-root-user.rst diff --git a/doc/source/docker/run-as-subprocess.rst b/framework/docs/source/docker/run-as-subprocess.rst similarity index 100% rename from doc/source/docker/run-as-subprocess.rst rename to framework/docs/source/docker/run-as-subprocess.rst diff --git a/doc/source/docker/run-quickstart-examples-docker-compose.rst b/framework/docs/source/docker/run-quickstart-examples-docker-compose.rst similarity index 100% rename from doc/source/docker/run-quickstart-examples-docker-compose.rst rename to framework/docs/source/docker/run-quickstart-examples-docker-compose.rst diff --git a/doc/source/docker/set-environment-variables.rst b/framework/docs/source/docker/set-environment-variables.rst similarity index 100% rename from doc/source/docker/set-environment-variables.rst rename to framework/docs/source/docker/set-environment-variables.rst diff --git a/doc/source/docker/tutorial-deploy-on-multiple-machines.rst b/framework/docs/source/docker/tutorial-deploy-on-multiple-machines.rst similarity index 100% rename from doc/source/docker/tutorial-deploy-on-multiple-machines.rst rename to framework/docs/source/docker/tutorial-deploy-on-multiple-machines.rst diff --git a/doc/source/docker/tutorial-quickstart-docker-compose.rst b/framework/docs/source/docker/tutorial-quickstart-docker-compose.rst similarity index 100% rename from doc/source/docker/tutorial-quickstart-docker-compose.rst rename to framework/docs/source/docker/tutorial-quickstart-docker-compose.rst diff --git a/doc/source/docker/tutorial-quickstart-docker.rst b/framework/docs/source/docker/tutorial-quickstart-docker.rst similarity index 100% rename from doc/source/docker/tutorial-quickstart-docker.rst rename to framework/docs/source/docker/tutorial-quickstart-docker.rst diff --git a/doc/source/docker/use-a-different-version.rst b/framework/docs/source/docker/use-a-different-version.rst similarity index 100% rename from doc/source/docker/use-a-different-version.rst rename to framework/docs/source/docker/use-a-different-version.rst diff --git a/doc/source/explanation-differential-privacy.rst b/framework/docs/source/explanation-differential-privacy.rst similarity index 100% rename from doc/source/explanation-differential-privacy.rst rename to framework/docs/source/explanation-differential-privacy.rst diff --git a/doc/source/explanation-federated-evaluation.rst b/framework/docs/source/explanation-federated-evaluation.rst similarity index 100% rename from doc/source/explanation-federated-evaluation.rst rename to framework/docs/source/explanation-federated-evaluation.rst diff --git a/doc/source/explanation-flower-architecture.rst b/framework/docs/source/explanation-flower-architecture.rst similarity index 100% rename from doc/source/explanation-flower-architecture.rst rename to framework/docs/source/explanation-flower-architecture.rst diff --git a/doc/source/how-to-aggregate-evaluation-results.rst b/framework/docs/source/how-to-aggregate-evaluation-results.rst similarity index 100% rename from doc/source/how-to-aggregate-evaluation-results.rst rename to framework/docs/source/how-to-aggregate-evaluation-results.rst diff --git a/doc/source/how-to-authenticate-supernodes.rst b/framework/docs/source/how-to-authenticate-supernodes.rst similarity index 100% rename from doc/source/how-to-authenticate-supernodes.rst rename to framework/docs/source/how-to-authenticate-supernodes.rst diff --git a/doc/source/how-to-configure-clients.rst b/framework/docs/source/how-to-configure-clients.rst similarity index 100% rename from doc/source/how-to-configure-clients.rst rename to framework/docs/source/how-to-configure-clients.rst diff --git a/doc/source/how-to-design-stateful-clients.rst b/framework/docs/source/how-to-design-stateful-clients.rst similarity index 100% rename from doc/source/how-to-design-stateful-clients.rst rename to framework/docs/source/how-to-design-stateful-clients.rst diff --git a/doc/source/how-to-enable-tls-connections.rst b/framework/docs/source/how-to-enable-tls-connections.rst similarity index 100% rename from doc/source/how-to-enable-tls-connections.rst rename to framework/docs/source/how-to-enable-tls-connections.rst diff --git a/doc/source/how-to-implement-fedbn.rst b/framework/docs/source/how-to-implement-fedbn.rst similarity index 100% rename from doc/source/how-to-implement-fedbn.rst rename to framework/docs/source/how-to-implement-fedbn.rst diff --git a/doc/source/how-to-implement-strategies.rst b/framework/docs/source/how-to-implement-strategies.rst similarity index 100% rename from doc/source/how-to-implement-strategies.rst rename to framework/docs/source/how-to-implement-strategies.rst diff --git a/doc/source/how-to-install-flower.rst b/framework/docs/source/how-to-install-flower.rst similarity index 100% rename from doc/source/how-to-install-flower.rst rename to framework/docs/source/how-to-install-flower.rst diff --git a/doc/source/how-to-run-flower-on-azure.rst b/framework/docs/source/how-to-run-flower-on-azure.rst similarity index 100% rename from doc/source/how-to-run-flower-on-azure.rst rename to framework/docs/source/how-to-run-flower-on-azure.rst diff --git a/doc/source/how-to-run-simulations.rst b/framework/docs/source/how-to-run-simulations.rst similarity index 100% rename from doc/source/how-to-run-simulations.rst rename to framework/docs/source/how-to-run-simulations.rst diff --git a/doc/source/how-to-save-and-load-model-checkpoints.rst b/framework/docs/source/how-to-save-and-load-model-checkpoints.rst similarity index 100% rename from doc/source/how-to-save-and-load-model-checkpoints.rst rename to framework/docs/source/how-to-save-and-load-model-checkpoints.rst diff --git a/doc/source/how-to-upgrade-to-flower-1.0.rst b/framework/docs/source/how-to-upgrade-to-flower-1.0.rst similarity index 100% rename from doc/source/how-to-upgrade-to-flower-1.0.rst rename to framework/docs/source/how-to-upgrade-to-flower-1.0.rst diff --git a/doc/source/how-to-upgrade-to-flower-1.13.rst b/framework/docs/source/how-to-upgrade-to-flower-1.13.rst similarity index 100% rename from doc/source/how-to-upgrade-to-flower-1.13.rst rename to framework/docs/source/how-to-upgrade-to-flower-1.13.rst diff --git a/doc/source/how-to-use-built-in-mods.rst b/framework/docs/source/how-to-use-built-in-mods.rst similarity index 100% rename from doc/source/how-to-use-built-in-mods.rst rename to framework/docs/source/how-to-use-built-in-mods.rst diff --git a/doc/source/how-to-use-differential-privacy.rst b/framework/docs/source/how-to-use-differential-privacy.rst similarity index 100% rename from doc/source/how-to-use-differential-privacy.rst rename to framework/docs/source/how-to-use-differential-privacy.rst diff --git a/doc/source/how-to-use-strategies.rst b/framework/docs/source/how-to-use-strategies.rst similarity index 100% rename from doc/source/how-to-use-strategies.rst rename to framework/docs/source/how-to-use-strategies.rst diff --git a/doc/source/index.rst b/framework/docs/source/index.rst similarity index 100% rename from doc/source/index.rst rename to framework/docs/source/index.rst diff --git a/doc/source/ref-api-cli.rst b/framework/docs/source/ref-api-cli.rst similarity index 100% rename from doc/source/ref-api-cli.rst rename to framework/docs/source/ref-api-cli.rst diff --git a/doc/source/ref-changelog.md b/framework/docs/source/ref-changelog.md similarity index 100% rename from doc/source/ref-changelog.md rename to framework/docs/source/ref-changelog.md diff --git a/doc/source/ref-example-projects.rst b/framework/docs/source/ref-example-projects.rst similarity index 100% rename from doc/source/ref-example-projects.rst rename to framework/docs/source/ref-example-projects.rst diff --git a/doc/source/ref-faq.rst b/framework/docs/source/ref-faq.rst similarity index 100% rename from doc/source/ref-faq.rst rename to framework/docs/source/ref-faq.rst diff --git a/doc/source/ref-telemetry.md b/framework/docs/source/ref-telemetry.md similarity index 100% rename from doc/source/ref-telemetry.md rename to framework/docs/source/ref-telemetry.md diff --git a/doc/source/tutorial-quickstart-android.rst b/framework/docs/source/tutorial-quickstart-android.rst similarity index 100% rename from doc/source/tutorial-quickstart-android.rst rename to framework/docs/source/tutorial-quickstart-android.rst diff --git a/doc/source/tutorial-quickstart-fastai.rst b/framework/docs/source/tutorial-quickstart-fastai.rst similarity index 100% rename from doc/source/tutorial-quickstart-fastai.rst rename to framework/docs/source/tutorial-quickstart-fastai.rst diff --git a/doc/source/tutorial-quickstart-huggingface.rst b/framework/docs/source/tutorial-quickstart-huggingface.rst similarity index 100% rename from doc/source/tutorial-quickstart-huggingface.rst rename to framework/docs/source/tutorial-quickstart-huggingface.rst diff --git a/doc/source/tutorial-quickstart-ios.rst b/framework/docs/source/tutorial-quickstart-ios.rst similarity index 100% rename from doc/source/tutorial-quickstart-ios.rst rename to framework/docs/source/tutorial-quickstart-ios.rst diff --git a/doc/source/tutorial-quickstart-jax.rst b/framework/docs/source/tutorial-quickstart-jax.rst similarity index 100% rename from doc/source/tutorial-quickstart-jax.rst rename to framework/docs/source/tutorial-quickstart-jax.rst diff --git a/doc/source/tutorial-quickstart-mlx.rst b/framework/docs/source/tutorial-quickstart-mlx.rst similarity index 100% rename from doc/source/tutorial-quickstart-mlx.rst rename to framework/docs/source/tutorial-quickstart-mlx.rst diff --git a/doc/source/tutorial-quickstart-pandas.rst b/framework/docs/source/tutorial-quickstart-pandas.rst similarity index 100% rename from doc/source/tutorial-quickstart-pandas.rst rename to framework/docs/source/tutorial-quickstart-pandas.rst diff --git a/doc/source/tutorial-quickstart-pytorch-lightning.rst b/framework/docs/source/tutorial-quickstart-pytorch-lightning.rst similarity index 100% rename from doc/source/tutorial-quickstart-pytorch-lightning.rst rename to framework/docs/source/tutorial-quickstart-pytorch-lightning.rst diff --git a/doc/source/tutorial-quickstart-pytorch.rst b/framework/docs/source/tutorial-quickstart-pytorch.rst similarity index 100% rename from doc/source/tutorial-quickstart-pytorch.rst rename to framework/docs/source/tutorial-quickstart-pytorch.rst diff --git a/doc/source/tutorial-quickstart-scikitlearn.rst b/framework/docs/source/tutorial-quickstart-scikitlearn.rst similarity index 100% rename from doc/source/tutorial-quickstart-scikitlearn.rst rename to framework/docs/source/tutorial-quickstart-scikitlearn.rst diff --git a/doc/source/tutorial-quickstart-tensorflow.rst b/framework/docs/source/tutorial-quickstart-tensorflow.rst similarity index 100% rename from doc/source/tutorial-quickstart-tensorflow.rst rename to framework/docs/source/tutorial-quickstart-tensorflow.rst diff --git a/doc/source/tutorial-quickstart-xgboost.rst b/framework/docs/source/tutorial-quickstart-xgboost.rst similarity index 100% rename from doc/source/tutorial-quickstart-xgboost.rst rename to framework/docs/source/tutorial-quickstart-xgboost.rst diff --git a/doc/source/tutorial-series-build-a-strategy-from-scratch-pytorch.ipynb b/framework/docs/source/tutorial-series-build-a-strategy-from-scratch-pytorch.ipynb similarity index 100% rename from doc/source/tutorial-series-build-a-strategy-from-scratch-pytorch.ipynb rename to framework/docs/source/tutorial-series-build-a-strategy-from-scratch-pytorch.ipynb diff --git a/doc/source/tutorial-series-customize-the-client-pytorch.ipynb b/framework/docs/source/tutorial-series-customize-the-client-pytorch.ipynb similarity index 100% rename from doc/source/tutorial-series-customize-the-client-pytorch.ipynb rename to framework/docs/source/tutorial-series-customize-the-client-pytorch.ipynb diff --git a/doc/source/tutorial-series-get-started-with-flower-pytorch.ipynb b/framework/docs/source/tutorial-series-get-started-with-flower-pytorch.ipynb similarity index 100% rename from doc/source/tutorial-series-get-started-with-flower-pytorch.ipynb rename to framework/docs/source/tutorial-series-get-started-with-flower-pytorch.ipynb diff --git a/doc/source/tutorial-series-use-a-federated-learning-strategy-pytorch.ipynb b/framework/docs/source/tutorial-series-use-a-federated-learning-strategy-pytorch.ipynb similarity index 100% rename from doc/source/tutorial-series-use-a-federated-learning-strategy-pytorch.ipynb rename to framework/docs/source/tutorial-series-use-a-federated-learning-strategy-pytorch.ipynb diff --git a/doc/source/tutorial-series-what-is-federated-learning.ipynb b/framework/docs/source/tutorial-series-what-is-federated-learning.ipynb similarity index 100% rename from doc/source/tutorial-series-what-is-federated-learning.ipynb rename to framework/docs/source/tutorial-series-what-is-federated-learning.ipynb diff --git a/pyproject.toml b/pyproject.toml index f1207a94c448..1636010a471e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -144,10 +144,10 @@ docsig = "==0.64.0" [tool.docstrfmt] extend_exclude = [ - "doc/source/conf.py", - "doc/source/tutorial-quickstart-huggingface.rst", - "doc/source/_templates/autosummary/*", - "doc/source/ref-api/*", + "framework/docs/source/conf.py", + "framework/docs/source/tutorial-quickstart-huggingface.rst", + "framework/docs/source/_templates/autosummary/*", + "framework/docs/source/ref-api/*", ] [tool.isort] From a7a61d500555ddd8c43a82f8e0d715507d50ab21 Mon Sep 17 00:00:00 2001 From: Daniel Nata Nugraha Date: Mon, 9 Dec 2024 13:20:18 +0000 Subject: [PATCH 032/104] feat(framework) Add flwr login protos (#4244) Co-authored-by: Heng Pan --- src/proto/flwr/proto/exec.proto | 14 +++++ src/py/flwr/proto/exec_pb2.py | 34 ++++++++--- src/py/flwr/proto/exec_pb2.pyi | 81 ++++++++++++++++++++++++++ src/py/flwr/proto/exec_pb2_grpc.py | 68 +++++++++++++++++++++ src/py/flwr/proto/exec_pb2_grpc.pyi | 26 +++++++++ src/py/flwr/superexec/exec_servicer.py | 18 ++++++ 6 files changed, 234 insertions(+), 7 deletions(-) diff --git a/src/proto/flwr/proto/exec.proto b/src/proto/flwr/proto/exec.proto index 6fb2bec9f0a3..851275c8ff0f 100644 --- a/src/proto/flwr/proto/exec.proto +++ b/src/proto/flwr/proto/exec.proto @@ -34,6 +34,13 @@ service Exec { // flwr ls command rpc ListRuns(ListRunsRequest) returns (ListRunsResponse) {} + + // Get login details upon request + rpc GetLoginDetails(GetLoginDetailsRequest) + returns (GetLoginDetailsResponse) {} + + // Get auth tokens upon request + rpc GetAuthTokens(GetAuthTokensRequest) returns (GetAuthTokensResponse) {} } message StartRunRequest { @@ -55,5 +62,12 @@ message ListRunsResponse { map run_dict = 1; string now = 2; } + +message GetLoginDetailsRequest {} +message GetLoginDetailsResponse { map login_details = 1; } + +message GetAuthTokensRequest { map auth_details = 1; } +message GetAuthTokensResponse { map auth_tokens = 1; } + message StopRunRequest { uint64 run_id = 1; } message StopRunResponse { bool success = 1; } diff --git a/src/py/flwr/proto/exec_pb2.py b/src/py/flwr/proto/exec_pb2.py index 18253dd1d02a..d3c508a8c6d9 100644 --- a/src/py/flwr/proto/exec_pb2.py +++ b/src/py/flwr/proto/exec_pb2.py @@ -18,7 +18,7 @@ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x14\x66lwr/proto/run.proto\"\xfb\x01\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12\x35\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x19.flwr.proto.ConfigsRecord\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"2\n\x10StartRunResponse\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"<\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x17\n\x0f\x61\x66ter_timestamp\x18\x02 \x01(\x01\"B\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t\x12\x18\n\x10latest_timestamp\x18\x02 \x01(\x01\"1\n\x0fListRunsRequest\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"\x9d\x01\n\x10ListRunsResponse\x12;\n\x08run_dict\x18\x01 \x03(\x0b\x32).flwr.proto.ListRunsResponse.RunDictEntry\x12\x0b\n\x03now\x18\x02 \x01(\t\x1a?\n\x0cRunDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\x1e\n\x05value\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run:\x02\x38\x01\" \n\x0eStopRunRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"\"\n\x0fStopRunResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x32\xaf\x02\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12\x44\n\x07StopRun\x12\x1a.flwr.proto.StopRunRequest\x1a\x1b.flwr.proto.StopRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x12G\n\x08ListRuns\x12\x1b.flwr.proto.ListRunsRequest\x1a\x1c.flwr.proto.ListRunsResponse\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x14\x66lwr/proto/run.proto\"\xfb\x01\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12\x35\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x19.flwr.proto.ConfigsRecord\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"2\n\x10StartRunResponse\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"<\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x17\n\x0f\x61\x66ter_timestamp\x18\x02 \x01(\x01\"B\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t\x12\x18\n\x10latest_timestamp\x18\x02 \x01(\x01\"1\n\x0fListRunsRequest\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"\x9d\x01\n\x10ListRunsResponse\x12;\n\x08run_dict\x18\x01 \x03(\x0b\x32).flwr.proto.ListRunsResponse.RunDictEntry\x12\x0b\n\x03now\x18\x02 \x01(\t\x1a?\n\x0cRunDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\x1e\n\x05value\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run:\x02\x38\x01\"\x18\n\x16GetLoginDetailsRequest\"\x9c\x01\n\x17GetLoginDetailsResponse\x12L\n\rlogin_details\x18\x01 \x03(\x0b\x32\x35.flwr.proto.GetLoginDetailsResponse.LoginDetailsEntry\x1a\x33\n\x11LoginDetailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x93\x01\n\x14GetAuthTokensRequest\x12G\n\x0c\x61uth_details\x18\x01 \x03(\x0b\x32\x31.flwr.proto.GetAuthTokensRequest.AuthDetailsEntry\x1a\x32\n\x10\x41uthDetailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x92\x01\n\x15GetAuthTokensResponse\x12\x46\n\x0b\x61uth_tokens\x18\x01 \x03(\x0b\x32\x31.flwr.proto.GetAuthTokensResponse.AuthTokensEntry\x1a\x31\n\x0f\x41uthTokensEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\" \n\x0eStopRunRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"\"\n\x0fStopRunResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x32\xe5\x03\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12\x44\n\x07StopRun\x12\x1a.flwr.proto.StopRunRequest\x1a\x1b.flwr.proto.StopRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x12G\n\x08ListRuns\x12\x1b.flwr.proto.ListRunsRequest\x1a\x1c.flwr.proto.ListRunsResponse\"\x00\x12\\\n\x0fGetLoginDetails\x12\".flwr.proto.GetLoginDetailsRequest\x1a#.flwr.proto.GetLoginDetailsResponse\"\x00\x12V\n\rGetAuthTokens\x12 .flwr.proto.GetAuthTokensRequest\x1a!.flwr.proto.GetAuthTokensResponse\"\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -29,6 +29,12 @@ _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001' _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._options = None _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_options = b'8\001' + _globals['_GETLOGINDETAILSRESPONSE_LOGINDETAILSENTRY']._options = None + _globals['_GETLOGINDETAILSRESPONSE_LOGINDETAILSENTRY']._serialized_options = b'8\001' + _globals['_GETAUTHTOKENSREQUEST_AUTHDETAILSENTRY']._options = None + _globals['_GETAUTHTOKENSREQUEST_AUTHDETAILSENTRY']._serialized_options = b'8\001' + _globals['_GETAUTHTOKENSRESPONSE_AUTHTOKENSENTRY']._options = None + _globals['_GETAUTHTOKENSRESPONSE_AUTHTOKENSENTRY']._serialized_options = b'8\001' _globals['_STARTRUNREQUEST']._serialized_start=138 _globals['_STARTRUNREQUEST']._serialized_end=389 _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_start=316 @@ -45,10 +51,24 @@ _globals['_LISTRUNSRESPONSE']._serialized_end=782 _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_start=719 _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_end=782 - _globals['_STOPRUNREQUEST']._serialized_start=784 - _globals['_STOPRUNREQUEST']._serialized_end=816 - _globals['_STOPRUNRESPONSE']._serialized_start=818 - _globals['_STOPRUNRESPONSE']._serialized_end=852 - _globals['_EXEC']._serialized_start=855 - _globals['_EXEC']._serialized_end=1158 + _globals['_GETLOGINDETAILSREQUEST']._serialized_start=784 + _globals['_GETLOGINDETAILSREQUEST']._serialized_end=808 + _globals['_GETLOGINDETAILSRESPONSE']._serialized_start=811 + _globals['_GETLOGINDETAILSRESPONSE']._serialized_end=967 + _globals['_GETLOGINDETAILSRESPONSE_LOGINDETAILSENTRY']._serialized_start=916 + _globals['_GETLOGINDETAILSRESPONSE_LOGINDETAILSENTRY']._serialized_end=967 + _globals['_GETAUTHTOKENSREQUEST']._serialized_start=970 + _globals['_GETAUTHTOKENSREQUEST']._serialized_end=1117 + _globals['_GETAUTHTOKENSREQUEST_AUTHDETAILSENTRY']._serialized_start=1067 + _globals['_GETAUTHTOKENSREQUEST_AUTHDETAILSENTRY']._serialized_end=1117 + _globals['_GETAUTHTOKENSRESPONSE']._serialized_start=1120 + _globals['_GETAUTHTOKENSRESPONSE']._serialized_end=1266 + _globals['_GETAUTHTOKENSRESPONSE_AUTHTOKENSENTRY']._serialized_start=1217 + _globals['_GETAUTHTOKENSRESPONSE_AUTHTOKENSENTRY']._serialized_end=1266 + _globals['_STOPRUNREQUEST']._serialized_start=1268 + _globals['_STOPRUNREQUEST']._serialized_end=1300 + _globals['_STOPRUNRESPONSE']._serialized_start=1302 + _globals['_STOPRUNRESPONSE']._serialized_end=1336 + _globals['_EXEC']._serialized_start=1339 + _globals['_EXEC']._serialized_end=1824 # @@protoc_insertion_point(module_scope) diff --git a/src/py/flwr/proto/exec_pb2.pyi b/src/py/flwr/proto/exec_pb2.pyi index 70ff9147e02a..d77aa26e1aa0 100644 --- a/src/py/flwr/proto/exec_pb2.pyi +++ b/src/py/flwr/proto/exec_pb2.pyi @@ -135,6 +135,87 @@ class ListRunsResponse(google.protobuf.message.Message): def ClearField(self, field_name: typing_extensions.Literal["now",b"now","run_dict",b"run_dict"]) -> None: ... global___ListRunsResponse = ListRunsResponse +class GetLoginDetailsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + def __init__(self, + ) -> None: ... +global___GetLoginDetailsRequest = GetLoginDetailsRequest + +class GetLoginDetailsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + class LoginDetailsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: typing.Text + value: typing.Text + def __init__(self, + *, + key: typing.Text = ..., + value: typing.Text = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + + LOGIN_DETAILS_FIELD_NUMBER: builtins.int + @property + def login_details(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]: ... + def __init__(self, + *, + login_details: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["login_details",b"login_details"]) -> None: ... +global___GetLoginDetailsResponse = GetLoginDetailsResponse + +class GetAuthTokensRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + class AuthDetailsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: typing.Text + value: typing.Text + def __init__(self, + *, + key: typing.Text = ..., + value: typing.Text = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + + AUTH_DETAILS_FIELD_NUMBER: builtins.int + @property + def auth_details(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]: ... + def __init__(self, + *, + auth_details: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["auth_details",b"auth_details"]) -> None: ... +global___GetAuthTokensRequest = GetAuthTokensRequest + +class GetAuthTokensResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + class AuthTokensEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: typing.Text + value: typing.Text + def __init__(self, + *, + key: typing.Text = ..., + value: typing.Text = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + + AUTH_TOKENS_FIELD_NUMBER: builtins.int + @property + def auth_tokens(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]: ... + def __init__(self, + *, + auth_tokens: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["auth_tokens",b"auth_tokens"]) -> None: ... +global___GetAuthTokensResponse = GetAuthTokensResponse + class StopRunRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor RUN_ID_FIELD_NUMBER: builtins.int diff --git a/src/py/flwr/proto/exec_pb2_grpc.py b/src/py/flwr/proto/exec_pb2_grpc.py index 9ce04915771d..d3b670206520 100644 --- a/src/py/flwr/proto/exec_pb2_grpc.py +++ b/src/py/flwr/proto/exec_pb2_grpc.py @@ -34,6 +34,16 @@ def __init__(self, channel): request_serializer=flwr_dot_proto_dot_exec__pb2.ListRunsRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_exec__pb2.ListRunsResponse.FromString, ) + self.GetLoginDetails = channel.unary_unary( + '/flwr.proto.Exec/GetLoginDetails', + request_serializer=flwr_dot_proto_dot_exec__pb2.GetLoginDetailsRequest.SerializeToString, + response_deserializer=flwr_dot_proto_dot_exec__pb2.GetLoginDetailsResponse.FromString, + ) + self.GetAuthTokens = channel.unary_unary( + '/flwr.proto.Exec/GetAuthTokens', + request_serializer=flwr_dot_proto_dot_exec__pb2.GetAuthTokensRequest.SerializeToString, + response_deserializer=flwr_dot_proto_dot_exec__pb2.GetAuthTokensResponse.FromString, + ) class ExecServicer(object): @@ -67,6 +77,20 @@ def ListRuns(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetLoginDetails(self, request, context): + """Get login details upon request + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetAuthTokens(self, request, context): + """Get auth tokens upon request + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_ExecServicer_to_server(servicer, server): rpc_method_handlers = { @@ -90,6 +114,16 @@ def add_ExecServicer_to_server(servicer, server): request_deserializer=flwr_dot_proto_dot_exec__pb2.ListRunsRequest.FromString, response_serializer=flwr_dot_proto_dot_exec__pb2.ListRunsResponse.SerializeToString, ), + 'GetLoginDetails': grpc.unary_unary_rpc_method_handler( + servicer.GetLoginDetails, + request_deserializer=flwr_dot_proto_dot_exec__pb2.GetLoginDetailsRequest.FromString, + response_serializer=flwr_dot_proto_dot_exec__pb2.GetLoginDetailsResponse.SerializeToString, + ), + 'GetAuthTokens': grpc.unary_unary_rpc_method_handler( + servicer.GetAuthTokens, + request_deserializer=flwr_dot_proto_dot_exec__pb2.GetAuthTokensRequest.FromString, + response_serializer=flwr_dot_proto_dot_exec__pb2.GetAuthTokensResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'flwr.proto.Exec', rpc_method_handlers) @@ -167,3 +201,37 @@ def ListRuns(request, flwr_dot_proto_dot_exec__pb2.ListRunsResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetLoginDetails(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flwr.proto.Exec/GetLoginDetails', + flwr_dot_proto_dot_exec__pb2.GetLoginDetailsRequest.SerializeToString, + flwr_dot_proto_dot_exec__pb2.GetLoginDetailsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetAuthTokens(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flwr.proto.Exec/GetAuthTokens', + flwr_dot_proto_dot_exec__pb2.GetAuthTokensRequest.SerializeToString, + flwr_dot_proto_dot_exec__pb2.GetAuthTokensResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/src/py/flwr/proto/exec_pb2_grpc.pyi b/src/py/flwr/proto/exec_pb2_grpc.pyi index 12f42befab06..9e7aa3866cee 100644 --- a/src/py/flwr/proto/exec_pb2_grpc.pyi +++ b/src/py/flwr/proto/exec_pb2_grpc.pyi @@ -29,6 +29,16 @@ class ExecStub: flwr.proto.exec_pb2.ListRunsResponse] """flwr ls command""" + GetLoginDetails: grpc.UnaryUnaryMultiCallable[ + flwr.proto.exec_pb2.GetLoginDetailsRequest, + flwr.proto.exec_pb2.GetLoginDetailsResponse] + """Get login details upon request""" + + GetAuthTokens: grpc.UnaryUnaryMultiCallable[ + flwr.proto.exec_pb2.GetAuthTokensRequest, + flwr.proto.exec_pb2.GetAuthTokensResponse] + """Get auth tokens upon request""" + class ExecServicer(metaclass=abc.ABCMeta): @abc.abstractmethod @@ -63,5 +73,21 @@ class ExecServicer(metaclass=abc.ABCMeta): """flwr ls command""" pass + @abc.abstractmethod + def GetLoginDetails(self, + request: flwr.proto.exec_pb2.GetLoginDetailsRequest, + context: grpc.ServicerContext, + ) -> flwr.proto.exec_pb2.GetLoginDetailsResponse: + """Get login details upon request""" + pass + + @abc.abstractmethod + def GetAuthTokens(self, + request: flwr.proto.exec_pb2.GetAuthTokensRequest, + context: grpc.ServicerContext, + ) -> flwr.proto.exec_pb2.GetAuthTokensResponse: + """Get auth tokens upon request""" + pass + def add_ExecServicer_to_server(servicer: ExecServicer, server: grpc.Server) -> None: ... diff --git a/src/py/flwr/superexec/exec_servicer.py b/src/py/flwr/superexec/exec_servicer.py index 700c6bf40708..a320a4896a12 100644 --- a/src/py/flwr/superexec/exec_servicer.py +++ b/src/py/flwr/superexec/exec_servicer.py @@ -33,6 +33,10 @@ from flwr.common.typing import RunStatus from flwr.proto import exec_pb2_grpc # pylint: disable=E0611 from flwr.proto.exec_pb2 import ( # pylint: disable=E0611 + GetAuthTokensRequest, + GetAuthTokensResponse, + GetLoginDetailsRequest, + GetLoginDetailsResponse, ListRunsRequest, ListRunsResponse, StartRunRequest, @@ -155,6 +159,20 @@ def StopRun( ) return StopRunResponse(success=update_success) + def GetLoginDetails( + self, request: GetLoginDetailsRequest, context: grpc.ServicerContext + ) -> GetLoginDetailsResponse: + """Start login.""" + log(INFO, "ExecServicer.GetLoginDetails") + return GetLoginDetailsResponse(login_details={}) + + def GetAuthTokens( + self, request: GetAuthTokensRequest, context: grpc.ServicerContext + ) -> GetAuthTokensResponse: + """Get auth token.""" + log(INFO, "ExecServicer.GetAuthTokens") + return GetAuthTokensResponse(auth_tokens={}) + def _create_list_runs_response(run_ids: set[int], state: LinkState) -> ListRunsResponse: """Create response for `flwr ls --runs` and `flwr ls --run-id `.""" From 0730b12a9e9653782c7ee1777c4382f50380217a Mon Sep 17 00:00:00 2001 From: Charles Beauville Date: Mon, 9 Dec 2024 08:35:20 -0800 Subject: [PATCH 033/104] docs(framework) Fix versioned script with new path (#4659) --- framework/docs/build-versioned-docs.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/framework/docs/build-versioned-docs.sh b/framework/docs/build-versioned-docs.sh index db7e766b4f83..803b883d8b69 100755 --- a/framework/docs/build-versioned-docs.sh +++ b/framework/docs/build-versioned-docs.sh @@ -8,14 +8,14 @@ current_branch=$(git rev-parse --abbrev-ref HEAD) cd $(git rev-parse --show-toplevel) # Clean up previous builds -rm -rf doc/build +rm -rf framework/docs/build # Create a temporary directory and store locales and _templates files in it tmp_dir=`mktemp -d` -cp -r doc/locales ${tmp_dir}/locales -cp -r doc/source/_templates ${tmp_dir}/_templates +cp -r framework/docs/locales ${tmp_dir}/locales +cp -r framework/docs/source/_templates ${tmp_dir}/_templates -cd doc +cd framework/docs # Get a list of languages based on the folders in locales languages="en `find locales/ -mindepth 1 -maxdepth 1 -type d -exec basename '{}' \;`" From d7004b80de988a3fb2258067763ec78009326c33 Mon Sep 17 00:00:00 2001 From: Charles Beauville Date: Tue, 10 Dec 2024 00:15:53 -0800 Subject: [PATCH 034/104] docs(framework) Update path dynamically for versioned script (#4661) --- .github/CODEOWNERS | 4 ++-- framework/docs/build-versioned-docs.sh | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8c635c516450..7519f227af81 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -22,10 +22,10 @@ README.md @jafermarq @tanertopal @danieljanes /src/py/flwr/cli/new/templates @jafermarq @tanertopal @danieljanes # Changelog -/doc/source/ref-changelog.md @jafermarq @tanertopal @danieljanes +/framework/docs/source/ref-changelog.md @jafermarq @tanertopal @danieljanes # Translations -/doc/locales @charlesbvll @tanertopal @danieljanes +/framework/docs/locales @charlesbvll @tanertopal @danieljanes # GitHub Actions and Workflows /.github/workflows @Robert-Steiner @tanertopal @danieljanes diff --git a/framework/docs/build-versioned-docs.sh b/framework/docs/build-versioned-docs.sh index 803b883d8b69..2ff8db5a6312 100755 --- a/framework/docs/build-versioned-docs.sh +++ b/framework/docs/build-versioned-docs.sh @@ -15,8 +15,6 @@ tmp_dir=`mktemp -d` cp -r framework/docs/locales ${tmp_dir}/locales cp -r framework/docs/source/_templates ${tmp_dir}/_templates -cd framework/docs - # Get a list of languages based on the folders in locales languages="en `find locales/ -mindepth 1 -maxdepth 1 -type d -exec basename '{}' \;`" # Get a list of tags, excluding those before v1.0.0 @@ -46,7 +44,13 @@ for current_version in ${versions}; do pip install "numpy==${numpy_version_2}" fi echo "INFO: Building sites for ${current_version}" - + + if [ -d "framework/docs" ]; then + cd framework/docs + else + cd doc + fi + for current_language in ${languages}; do # Make the current language available to conf.py From 1b43ac77d3216cfc73ae9de8a64e8bddaca6d56c Mon Sep 17 00:00:00 2001 From: Daniel Nata Nugraha Date: Tue, 10 Dec 2024 14:06:48 +0000 Subject: [PATCH 035/104] feat(framework) Add abstract user auth plugin (#4618) Co-authored-by: Heng Pan --- src/py/flwr/common/auth_plugin/__init__.py | 24 ++++ src/py/flwr/common/auth_plugin/auth_plugin.py | 111 ++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 src/py/flwr/common/auth_plugin/__init__.py create mode 100644 src/py/flwr/common/auth_plugin/auth_plugin.py diff --git a/src/py/flwr/common/auth_plugin/__init__.py b/src/py/flwr/common/auth_plugin/__init__.py new file mode 100644 index 000000000000..1a90dd5fe762 --- /dev/null +++ b/src/py/flwr/common/auth_plugin/__init__.py @@ -0,0 +1,24 @@ +# Copyright 2024 Flower Labs GmbH. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Auth plugin components.""" + + +from .auth_plugin import CliAuthPlugin as CliAuthPlugin +from .auth_plugin import ExecAuthPlugin as ExecAuthPlugin + +__all__ = [ + "CliAuthPlugin", + "ExecAuthPlugin", +] diff --git a/src/py/flwr/common/auth_plugin/auth_plugin.py b/src/py/flwr/common/auth_plugin/auth_plugin.py new file mode 100644 index 000000000000..c9dc7a921623 --- /dev/null +++ b/src/py/flwr/common/auth_plugin/auth_plugin.py @@ -0,0 +1,111 @@ +# Copyright 2024 Flower Labs GmbH. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Abstract classes for Flower User Auth Plugin.""" + + +from abc import ABC, abstractmethod +from collections.abc import Sequence +from pathlib import Path +from typing import Any, Optional, Union + +from flwr.proto.exec_pb2_grpc import ExecStub + + +class ExecAuthPlugin(ABC): + """Abstract Flower Auth Plugin class for ExecServicer. + + Parameters + ---------- + config : dict[str, Any] + The authentication configuration loaded from a YAML file. + """ + + @abstractmethod + def __init__(self, config: dict[str, Any]): + """Abstract constructor.""" + + @abstractmethod + def get_login_details(self) -> dict[str, str]: + """Get the login details.""" + + @abstractmethod + def validate_tokens_in_metadata( + self, metadata: Sequence[tuple[str, Union[str, bytes]]] + ) -> bool: + """Validate authentication tokens in the provided metadata.""" + + @abstractmethod + def get_auth_tokens(self, auth_details: dict[str, str]) -> dict[str, str]: + """Get authentication tokens.""" + + @abstractmethod + def refresh_tokens( + self, metadata: Sequence[tuple[str, Union[str, bytes]]] + ) -> Optional[Sequence[tuple[str, Union[str, bytes]]]]: + """Refresh authentication tokens in the provided metadata.""" + + +class CliAuthPlugin(ABC): + """Abstract Flower Auth Plugin class for CLI. + + Parameters + ---------- + user_auth_config_path : Path + The path to the user's authentication configuration file. + """ + + @staticmethod + @abstractmethod + def login( + login_details: dict[str, str], + exec_stub: ExecStub, + ) -> dict[str, Any]: + """Authenticate the user with the SuperLink. + + Parameters + ---------- + login_details : dict[str, str] + A dictionary containing the user's login details. + exec_stub : ExecStub + An instance of `ExecStub` used for communication with the SuperLink. + + Returns + ------- + user_auth_config : dict[str, Any] + A dictionary containing the user's authentication configuration + in JSON format. + """ + + @abstractmethod + def __init__(self, user_auth_config_path: Path): + """Abstract constructor.""" + + @abstractmethod + def store_tokens(self, user_auth_config: dict[str, Any]) -> None: + """Store authentication tokens from the provided user_auth_config. + + The configuration, including tokens, will be saved as a JSON file + at `user_auth_config_path`. + """ + + @abstractmethod + def load_tokens(self) -> None: + """Load authentication tokens from the user_auth_config_path.""" + + @abstractmethod + def write_tokens_to_metadata( + self, metadata: Sequence[tuple[str, Union[str, bytes]]] + ) -> Sequence[tuple[str, Union[str, bytes]]]: + """Write authentication tokens to the provided metadata.""" From c955c2767411da28ebb328f03bce74edd3539229 Mon Sep 17 00:00:00 2001 From: Daniel Nata Nugraha Date: Tue, 10 Dec 2024 16:27:55 +0000 Subject: [PATCH 036/104] feat(framework) Add `ExecUserAuthInterceptor` to Exec API (#4630) Co-authored-by: Heng Pan Co-authored-by: Javier Co-authored-by: Daniel J. Beutel --- pyproject.toml | 7 +- src/py/flwr/common/constant.py | 2 + src/py/flwr/server/app.py | 53 ++++++++- src/py/flwr/superexec/exec_grpc.py | 19 +++- src/py/flwr/superexec/exec_servicer.py | 25 ++++- .../superexec/exec_user_auth_interceptor.py | 101 ++++++++++++++++++ 6 files changed, 199 insertions(+), 8 deletions(-) create mode 100644 src/py/flwr/superexec/exec_user_auth_interceptor.py diff --git a/pyproject.toml b/pyproject.toml index 1636010a471e..b4a5fa13031f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,16 +78,16 @@ tomli = "^2.0.1" tomli-w = "^1.0.0" pathspec = "^0.12.1" rich = "^13.5.0" +pyyaml = "^6.0.2" +requests = "^2.31.0" # Optional dependencies (Simulation Engine) ray = { version = "==2.10.0", optional = true, python = ">=3.9,<3.12" } -# Optional dependencies (REST transport layer) -requests = { version = "^2.31.0", optional = true } starlette = { version = "^0.31.0", optional = true } uvicorn = { version = "^0.23.0", extras = ["standard"], optional = true } [tool.poetry.extras] simulation = ["ray"] -rest = ["requests", "starlette", "uvicorn"] +rest = ["starlette", "uvicorn"] [tool.poetry.group.dev.dependencies] types-dataclasses = "==0.6.6" @@ -131,6 +131,7 @@ mdformat-gfm = "==0.3.6" mdformat-frontmatter = "==2.0.1" mdformat-beautysh = "==0.1.1" twine = "==5.1.1" +types-PyYAML = "^6.0.2" pyroma = "==4.2" check-wheel-contents = "==0.4.0" GitPython = "==3.1.32" diff --git a/src/py/flwr/common/constant.py b/src/py/flwr/common/constant.py index ce5840ddddfb..3dd0657c12bb 100644 --- a/src/py/flwr/common/constant.py +++ b/src/py/flwr/common/constant.py @@ -110,6 +110,8 @@ # Retry configurations MAX_RETRY_DELAY = 20 # Maximum delay duration between two consecutive retries. +AUTH_TYPE = "auth_type" + class MessageType: """Message type.""" diff --git a/src/py/flwr/server/app.py b/src/py/flwr/server/app.py index 508f2dfc9685..8b5cb316c7fc 100644 --- a/src/py/flwr/server/app.py +++ b/src/py/flwr/server/app.py @@ -24,9 +24,10 @@ from logging import DEBUG, INFO, WARN from pathlib import Path from time import sleep -from typing import Optional +from typing import Any, Optional import grpc +import yaml from cryptography.exceptions import UnsupportedAlgorithm from cryptography.hazmat.primitives.asymmetric import ec from cryptography.hazmat.primitives.serialization import ( @@ -37,8 +38,10 @@ from flwr.common import GRPC_MAX_MESSAGE_LENGTH, EventType, event from flwr.common.address import parse_address from flwr.common.args import try_obtain_server_certificates +from flwr.common.auth_plugin import ExecAuthPlugin from flwr.common.config import get_flwr_dir, parse_config_args from flwr.common.constant import ( + AUTH_TYPE, CLIENT_OCTET, EXEC_API_DEFAULT_SERVER_ADDRESS, FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS, @@ -88,6 +91,15 @@ BASE_DIR = get_flwr_dir() / "superlink" / "ffs" +try: + from flwr.ee import get_exec_auth_plugins +except ImportError: + + def get_exec_auth_plugins() -> dict[str, type[ExecAuthPlugin]]: + """Return all Exec API authentication plugins.""" + raise NotImplementedError("No authentication plugins are currently supported.") + + def start_server( # pylint: disable=too-many-arguments,too-many-locals *, server_address: str = FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS, @@ -246,6 +258,12 @@ def run_superlink() -> None: # Obtain certificates certificates = try_obtain_server_certificates(args, args.fleet_api_type) + user_auth_config = _try_obtain_user_auth_config(args) + auth_plugin: Optional[ExecAuthPlugin] = None + # user_auth_config is None only if the args.user_auth_config is not provided + if user_auth_config is not None: + auth_plugin = _try_obtain_exec_auth_plugin(user_auth_config) + # Initialize StateFactory state_factory = LinkStateFactory(args.database) @@ -263,6 +281,7 @@ def run_superlink() -> None: config=parse_config_args( [args.executor_config] if args.executor_config else args.executor_config ), + auth_plugin=auth_plugin, ) grpc_servers = [exec_server] @@ -559,6 +578,32 @@ def _try_setup_node_authentication( ) +def _try_obtain_user_auth_config(args: argparse.Namespace) -> Optional[dict[str, Any]]: + if args.user_auth_config is not None: + with open(args.user_auth_config, encoding="utf-8") as file: + config: dict[str, Any] = yaml.safe_load(file) + return config + return None + + +def _try_obtain_exec_auth_plugin(config: dict[str, Any]) -> Optional[ExecAuthPlugin]: + auth_config: dict[str, Any] = config.get("authentication", {}) + auth_type: str = auth_config.get(AUTH_TYPE, "") + try: + all_plugins: dict[str, type[ExecAuthPlugin]] = get_exec_auth_plugins() + auth_plugin_class = all_plugins[auth_type] + return auth_plugin_class(config=auth_config) + except KeyError: + if auth_type != "": + sys.exit( + f'Authentication type "{auth_type}" is not supported. ' + "Please provide a valid authentication type in the configuration." + ) + sys.exit("No authentication type is provided in the configuration.") + except NotImplementedError: + sys.exit("No authentication plugins are currently supported.") + + def _run_fleet_api_grpc_rere( address: str, state_factory: LinkStateFactory, @@ -746,6 +791,12 @@ def _add_args_common(parser: argparse.ArgumentParser) -> None: type=str, help="The SuperLink's public key (as a path str) to enable authentication.", ) + parser.add_argument( + "--user-auth-config", + help="The path to the user authentication configuration YAML file.", + type=str, + default=None, + ) def _add_args_serverappio_api(parser: argparse.ArgumentParser) -> None: diff --git a/src/py/flwr/superexec/exec_grpc.py b/src/py/flwr/superexec/exec_grpc.py index f8c9722ba5ac..c6099f909dac 100644 --- a/src/py/flwr/superexec/exec_grpc.py +++ b/src/py/flwr/superexec/exec_grpc.py @@ -14,18 +14,21 @@ # ============================================================================== """SuperExec gRPC API.""" +from collections.abc import Sequence from logging import INFO from typing import Optional import grpc from flwr.common import GRPC_MAX_MESSAGE_LENGTH +from flwr.common.auth_plugin import ExecAuthPlugin from flwr.common.logger import log from flwr.common.typing import UserConfig from flwr.proto.exec_pb2_grpc import add_ExecServicer_to_server from flwr.server.superlink.ffs.ffs_factory import FfsFactory from flwr.server.superlink.fleet.grpc_bidi.grpc_server import generic_create_grpc_server from flwr.server.superlink.linkstate import LinkStateFactory +from flwr.superexec.exec_user_auth_interceptor import ExecUserAuthInterceptor from .exec_servicer import ExecServicer from .executor import Executor @@ -39,6 +42,7 @@ def run_exec_api_grpc( ffs_factory: FfsFactory, certificates: Optional[tuple[bytes, bytes, bytes]], config: UserConfig, + auth_plugin: Optional[ExecAuthPlugin] = None, ) -> grpc.Server: """Run Exec API (gRPC, request-response).""" executor.set_config(config) @@ -47,16 +51,29 @@ def run_exec_api_grpc( linkstate_factory=state_factory, ffs_factory=ffs_factory, executor=executor, + auth_plugin=auth_plugin, ) + interceptors: Optional[Sequence[grpc.ServerInterceptor]] = None + if auth_plugin is not None: + interceptors = [ExecUserAuthInterceptor(auth_plugin)] exec_add_servicer_to_server_fn = add_ExecServicer_to_server exec_grpc_server = generic_create_grpc_server( servicer_and_add_fn=(exec_servicer, exec_add_servicer_to_server_fn), server_address=address, max_message_length=GRPC_MAX_MESSAGE_LENGTH, certificates=certificates, + interceptors=interceptors, ) - log(INFO, "Flower Deployment Engine: Starting Exec API on %s", address) + if auth_plugin is None: + log(INFO, "Flower Deployment Engine: Starting Exec API on %s", address) + else: + log( + INFO, + "Flower Deployment Engine: Starting Exec API with user " + "authentication on %s", + address, + ) exec_grpc_server.start() return exec_grpc_server diff --git a/src/py/flwr/superexec/exec_servicer.py b/src/py/flwr/superexec/exec_servicer.py index a320a4896a12..8ffe2702c386 100644 --- a/src/py/flwr/superexec/exec_servicer.py +++ b/src/py/flwr/superexec/exec_servicer.py @@ -18,11 +18,12 @@ import time from collections.abc import Generator from logging import ERROR, INFO -from typing import Any +from typing import Any, Optional import grpc from flwr.common import now +from flwr.common.auth_plugin import ExecAuthPlugin from flwr.common.constant import LOG_STREAM_INTERVAL, Status, SubStatus from flwr.common.logger import log from flwr.common.serde import ( @@ -60,11 +61,13 @@ def __init__( linkstate_factory: LinkStateFactory, ffs_factory: FfsFactory, executor: Executor, + auth_plugin: Optional[ExecAuthPlugin] = None, ) -> None: self.linkstate_factory = linkstate_factory self.ffs_factory = ffs_factory self.executor = executor self.executor.initialize(linkstate_factory, ffs_factory) + self.auth_plugin = auth_plugin def StartRun( self, request: StartRunRequest, context: grpc.ServicerContext @@ -164,14 +167,30 @@ def GetLoginDetails( ) -> GetLoginDetailsResponse: """Start login.""" log(INFO, "ExecServicer.GetLoginDetails") - return GetLoginDetailsResponse(login_details={}) + if self.auth_plugin is None: + context.abort( + grpc.StatusCode.UNIMPLEMENTED, + "ExecServicer initialized without user authentication", + ) + raise grpc.RpcError() # This line is unreachable + return GetLoginDetailsResponse( + login_details=self.auth_plugin.get_login_details() + ) def GetAuthTokens( self, request: GetAuthTokensRequest, context: grpc.ServicerContext ) -> GetAuthTokensResponse: """Get auth token.""" log(INFO, "ExecServicer.GetAuthTokens") - return GetAuthTokensResponse(auth_tokens={}) + if self.auth_plugin is None: + context.abort( + grpc.StatusCode.UNIMPLEMENTED, + "ExecServicer initialized without user authentication", + ) + raise grpc.RpcError() # This line is unreachable + return GetAuthTokensResponse( + auth_tokens=self.auth_plugin.get_auth_tokens(dict(request.auth_details)) + ) def _create_list_runs_response(run_ids: set[int], state: LinkState) -> ListRunsResponse: diff --git a/src/py/flwr/superexec/exec_user_auth_interceptor.py b/src/py/flwr/superexec/exec_user_auth_interceptor.py new file mode 100644 index 000000000000..54c8234a5da8 --- /dev/null +++ b/src/py/flwr/superexec/exec_user_auth_interceptor.py @@ -0,0 +1,101 @@ +# Copyright 2024 Flower Labs GmbH. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Flower Exec API interceptor.""" + + +from typing import Any, Callable, Union + +import grpc + +from flwr.common.auth_plugin import ExecAuthPlugin +from flwr.proto.exec_pb2 import ( # pylint: disable=E0611 + GetAuthTokensRequest, + GetAuthTokensResponse, + GetLoginDetailsRequest, + GetLoginDetailsResponse, + StartRunRequest, + StartRunResponse, + StreamLogsRequest, + StreamLogsResponse, +) + +Request = Union[ + StartRunRequest, + StreamLogsRequest, + GetLoginDetailsRequest, + GetAuthTokensRequest, +] + +Response = Union[ + StartRunResponse, StreamLogsResponse, GetLoginDetailsResponse, GetAuthTokensResponse +] + + +class ExecUserAuthInterceptor(grpc.ServerInterceptor): # type: ignore + """Exec API interceptor for user authentication.""" + + def __init__( + self, + auth_plugin: ExecAuthPlugin, + ): + self.auth_plugin = auth_plugin + + def intercept_service( + self, + continuation: Callable[[Any], Any], + handler_call_details: grpc.HandlerCallDetails, + ) -> grpc.RpcMethodHandler: + """Flower server interceptor authentication logic. + + Intercept all unary-unary/unary-stream calls from users and authenticate users + by validating auth metadata sent by the user. Continue RPC call if user is + authenticated, else, terminate RPC call by setting context to abort. + """ + # One of the method handlers in + # `flwr.superexec.exec_servicer.ExecServicer` + method_handler: grpc.RpcMethodHandler = continuation(handler_call_details) + return self._generic_auth_unary_method_handler(method_handler) + + def _generic_auth_unary_method_handler( + self, method_handler: grpc.RpcMethodHandler + ) -> grpc.RpcMethodHandler: + def _generic_method_handler( + request: Request, + context: grpc.ServicerContext, + ) -> Response: + call = method_handler.unary_unary or method_handler.unary_stream + metadata = context.invocation_metadata() + if isinstance( + request, (GetLoginDetailsRequest, GetAuthTokensRequest) + ) or self.auth_plugin.validate_tokens_in_metadata(metadata): + return call(request, context) # type: ignore + + tokens = self.auth_plugin.refresh_tokens(context.invocation_metadata()) + if tokens is not None: + context.send_initial_metadata(tokens) + return call(request, context) # type: ignore + + context.abort(grpc.StatusCode.UNAUTHENTICATED, "Access denied") + raise grpc.RpcError() # This line is unreachable + + if method_handler.unary_unary: + message_handler = grpc.unary_unary_rpc_method_handler + else: + message_handler = grpc.unary_stream_rpc_method_handler + return message_handler( + _generic_method_handler, + request_deserializer=method_handler.request_deserializer, + response_serializer=method_handler.response_serializer, + ) From 21970e07a72bdc3f315cb29530eca8325bd5f7f4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 19:46:07 +0000 Subject: [PATCH 037/104] Update text and language files (#4656) Co-authored-by: Charles Beauville --- .../locales/fr/LC_MESSAGES/framework-docs.po | 89 +++++++++++++++---- .../locales/ko/LC_MESSAGES/framework-docs.po | 89 +++++++++++++++---- .../pt_BR/LC_MESSAGES/framework-docs.po | 88 ++++++++++++++---- .../zh_Hans/LC_MESSAGES/framework-docs.po | 89 +++++++++++++++---- 4 files changed, 279 insertions(+), 76 deletions(-) diff --git a/framework/docs/locales/fr/LC_MESSAGES/framework-docs.po b/framework/docs/locales/fr/LC_MESSAGES/framework-docs.po index 94cb3b821cd1..9950f5fc32e0 100644 --- a/framework/docs/locales/fr/LC_MESSAGES/framework-docs.po +++ b/framework/docs/locales/fr/LC_MESSAGES/framework-docs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower Docs\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-12-08 00:35+0000\n" +"POT-Creation-Date: 2024-12-09 00:34+0000\n" "PO-Revision-Date: 2023-09-05 17:54+0000\n" "Last-Translator: Charles Beauville \n" "Language: fr\n" @@ -9144,7 +9144,7 @@ msgstr "" msgid "Arguments" msgstr "Amélioration de la documentation" -#: ../../flwr install:1 log:1 ls:1 new:1 run:1 +#: ../../flwr install:1 log:1 ls:1 new:1 run:1 stop:1 #, fuzzy msgid "Optional argument" msgstr "Améliorations facultatives" @@ -9170,7 +9170,7 @@ msgstr "Flux de travail" msgid "``True``" msgstr "" -#: ../../flwr log:1 +#: ../../flwr log:1 stop:1 #, fuzzy msgid "Required argument" msgstr "Amélioration de la documentation" @@ -9213,12 +9213,12 @@ msgstr "" msgid "``'default'``" msgstr "Flux de travail" -#: ../../flwr ls:1 +#: ../../flwr ls:1 stop:1 #, fuzzy msgid "Path of the Flower project" msgstr "Chargement des données" -#: ../../flwr ls:1 +#: ../../flwr ls:1 stop:1 msgid "Name of the federation" msgstr "" @@ -9287,6 +9287,15 @@ msgstr "Chargement des données" msgid "Name of the federation to run the app on." msgstr "" +#: ../../flwr stop:1 +msgid "Stop a run." +msgstr "" + +#: ../../flwr stop:1 +#, fuzzy +msgid "The Flower run ID to stop" +msgstr "Rejoignez la communauté de Flower" + #: ../../source/ref-api-cli.rst:19 #, fuzzy msgid "``flower-superlink``" @@ -29212,7 +29221,7 @@ msgstr "" "chose d'autre, comme la régression linéaire classique." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|dbd9718fb89b4e219a54b72b6eecf502|" +msgid "|6102f514742c4211b093aae3a5a74e51|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -29231,7 +29240,7 @@ msgstr "" " Go." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|18916394e69e4fdaafbb56f7bba690d3|" +msgid "|24080db3b13d4b0c8546096de73ac82a|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -29263,7 +29272,7 @@ msgstr "" "chanson." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|20988fac7e2e497ea15f786730279299|" +msgid "|9087a1f0e9ab41c083f5209a3f17e600|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -29284,7 +29293,7 @@ msgstr "" " données pour la même tâche." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|5d612ca92b074af4a034bf4c0f498d2e|" +msgid "|a5d1853a0b3c44d4bdd408d15a89e7ac|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -29306,7 +29315,7 @@ msgstr "" "cloud." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|6721ae86e3f348e2bce58d358a2ee79c|" +msgid "|8e6e9164d7414c39bf37f67e2fda59bd|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -29327,7 +29336,7 @@ msgstr "" "appuyés." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|d255f931abb44ca8a7eba0d90dfcf6a1|" +msgid "|e8b1d08849514de1b09fee325db970d0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -29353,7 +29362,7 @@ msgstr "" " sur un serveur centralisé." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|f98da3b55eca452390fb33429a7d7ebe|" +msgid "|ca0b3cb207164665b5bef1d869c37dff|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -29372,7 +29381,7 @@ msgstr "" "suffisantes pour former un bon modèle." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|10dc1f84d36b432e95d7f61fcd25a701|" +msgid "|977cb114b97047329a7bb908afbac2cd|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -29603,7 +29612,7 @@ msgstr "" "partir d'un point de contrôle précédemment sauvegardé." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|f963159664b54e40a64a7f1c19414349|" +msgid "|9f497b02d2634af2925a65244cc0eb1b|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -29638,7 +29647,7 @@ msgstr "" "rendements décroissants." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|3647c3b36916415ab40c1597a3ddd4b0|" +msgid "|938ae2cd4fae49ce9292e6e2d9bd880d|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -29671,7 +29680,7 @@ msgstr "" "données locales, ou même de quelques étapes (mini-batchs)." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|a3c07b2cf1214488a99267b3757d9426|" +msgid "|47cd7c6cb4094846833faff5b05e0d46|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -29702,7 +29711,7 @@ msgstr "" " l'entraînement local." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|2f6bce3bfacf4c85ac3a7e0fd1d5aa84|" +msgid "|c90d6613b0a34a42bf3023ca5a81c8e2|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -29762,7 +29771,7 @@ msgstr "" "times as much as each of the 100 examples." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|19ebdce05cab40d791a2117f743290c3|" +msgid "|91c29c3c9b1b411590de3983d94ed76a|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -29906,7 +29915,7 @@ msgstr "" "quel cadre de ML et n'importe quel langage de programmation." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|dd729f8776d640ffb136545f3f26210f|" +msgid "|e4adf0f92ebf4c3d9e6e64355204f897|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -43353,3 +43362,45 @@ msgstr "" #~ msgid "|502b10044e864ca2b15282a393ab7faf|" #~ msgstr "" +#~ msgid "|dbd9718fb89b4e219a54b72b6eecf502|" +#~ msgstr "" + +#~ msgid "|18916394e69e4fdaafbb56f7bba690d3|" +#~ msgstr "" + +#~ msgid "|20988fac7e2e497ea15f786730279299|" +#~ msgstr "" + +#~ msgid "|5d612ca92b074af4a034bf4c0f498d2e|" +#~ msgstr "" + +#~ msgid "|6721ae86e3f348e2bce58d358a2ee79c|" +#~ msgstr "" + +#~ msgid "|d255f931abb44ca8a7eba0d90dfcf6a1|" +#~ msgstr "" + +#~ msgid "|f98da3b55eca452390fb33429a7d7ebe|" +#~ msgstr "" + +#~ msgid "|10dc1f84d36b432e95d7f61fcd25a701|" +#~ msgstr "" + +#~ msgid "|f963159664b54e40a64a7f1c19414349|" +#~ msgstr "" + +#~ msgid "|3647c3b36916415ab40c1597a3ddd4b0|" +#~ msgstr "" + +#~ msgid "|a3c07b2cf1214488a99267b3757d9426|" +#~ msgstr "" + +#~ msgid "|2f6bce3bfacf4c85ac3a7e0fd1d5aa84|" +#~ msgstr "" + +#~ msgid "|19ebdce05cab40d791a2117f743290c3|" +#~ msgstr "" + +#~ msgid "|dd729f8776d640ffb136545f3f26210f|" +#~ msgstr "" + diff --git a/framework/docs/locales/ko/LC_MESSAGES/framework-docs.po b/framework/docs/locales/ko/LC_MESSAGES/framework-docs.po index 7004d0cb5856..79be78a61bbe 100644 --- a/framework/docs/locales/ko/LC_MESSAGES/framework-docs.po +++ b/framework/docs/locales/ko/LC_MESSAGES/framework-docs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower main\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-08 00:35+0000\n" +"POT-Creation-Date: 2024-12-09 00:34+0000\n" "PO-Revision-Date: 2024-08-23 13:09+0000\n" "Last-Translator: Seulki Yun \n" "Language: ko\n" @@ -9048,7 +9048,7 @@ msgstr "" msgid "Arguments" msgstr "빌드 전달인자" -#: ../../flwr install:1 log:1 ls:1 new:1 run:1 +#: ../../flwr install:1 log:1 ls:1 new:1 run:1 stop:1 #, fuzzy msgid "Optional argument" msgstr "선택적 개선 사항" @@ -9074,7 +9074,7 @@ msgstr "" msgid "``True``" msgstr "``DISTRO``" -#: ../../flwr log:1 +#: ../../flwr log:1 stop:1 #, fuzzy msgid "Required argument" msgstr "빌드 전달인자" @@ -9118,12 +9118,12 @@ msgstr "" msgid "``'default'``" msgstr "``flwr/base``" -#: ../../flwr ls:1 +#: ../../flwr ls:1 stop:1 #, fuzzy msgid "Path of the Flower project" msgstr "Flower 기본 이미지의 태그." -#: ../../flwr ls:1 +#: ../../flwr ls:1 stop:1 msgid "Name of the federation" msgstr "" @@ -9192,6 +9192,15 @@ msgstr "Flower 기본 이미지의 태그." msgid "Name of the federation to run the app on." msgstr "" +#: ../../flwr stop:1 +msgid "Stop a run." +msgstr "" + +#: ../../flwr stop:1 +#, fuzzy +msgid "The Flower run ID to stop" +msgstr "Flower 커뮤니티 가입하기" + #: ../../source/ref-api-cli.rst:19 #, fuzzy msgid "``flower-superlink``" @@ -26294,7 +26303,7 @@ msgstr "" " 수도 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|dbd9718fb89b4e219a54b72b6eecf502|" +msgid "|6102f514742c4211b093aae3a5a74e51|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -26311,7 +26320,7 @@ msgstr "" " 바둑과 같은 게임을 하는 것일 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|18916394e69e4fdaafbb56f7bba690d3|" +msgid "|24080db3b13d4b0c8546096de73ac82a|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -26337,7 +26346,7 @@ msgstr "" "부르리는 것을 듣는 스마트 스피커에서 비롯됩니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|20988fac7e2e497ea15f786730279299|" +msgid "|9087a1f0e9ab41c083f5209a3f17e600|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -26355,7 +26364,7 @@ msgstr "" "있습니다. 하지만 여러 조직이 모두 같은 작업을 위해 데이터를 생성하는 것일 수도 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|5d612ca92b074af4a034bf4c0f498d2e|" +msgid "|a5d1853a0b3c44d4bdd408d15a89e7ac|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -26374,7 +26383,7 @@ msgstr "" "서버는 데이터 센터 어딘가에 있을 수도 있고 클라우드 어딘가에 있을 수도 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|6721ae86e3f348e2bce58d358a2ee79c|" +msgid "|8e6e9164d7414c39bf37f67e2fda59bd|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -26391,7 +26400,7 @@ msgstr "" " 우리가 기본적으로 사용해 온 머신러닝 방법입니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|d255f931abb44ca8a7eba0d90dfcf6a1|" +msgid "|e8b1d08849514de1b09fee325db970d0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -26414,7 +26423,7 @@ msgstr "" "트래픽을 분석하는 것이 있습니다. 이러한 사례에서 모든 데이터는 자연스럽게 중앙 서버에 존재합니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|f98da3b55eca452390fb33429a7d7ebe|" +msgid "|ca0b3cb207164665b5bef1d869c37dff|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -26431,7 +26440,7 @@ msgstr "" "좋은 모델을 훈련하기에 충분하지 않을 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|10dc1f84d36b432e95d7f61fcd25a701|" +msgid "|977cb114b97047329a7bb908afbac2cd|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -26610,7 +26619,7 @@ msgstr "" "체크포인트에서 모델 매개변수를 초기화합니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|f963159664b54e40a64a7f1c19414349|" +msgid "|9f497b02d2634af2925a65244cc0eb1b|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -26638,7 +26647,7 @@ msgstr "" "개의 연결 노드만 사용합니다. 그 이유는 점점 더 많은 클라이언트 노드를 선택하면 학습의 효율성이 감소하기 때문입니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|3647c3b36916415ab40c1597a3ddd4b0|" +msgid "|938ae2cd4fae49ce9292e6e2d9bd880d|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -26665,7 +26674,7 @@ msgstr "" "데이터에서 한 단계 정도로 짧거나 몇 단계(mini-batches)에 불과할 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|a3c07b2cf1214488a99267b3757d9426|" +msgid "|47cd7c6cb4094846833faff5b05e0d46|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -26691,7 +26700,7 @@ msgstr "" "보냅니다. 보내는 모델 업데이트는 전체 모델 파라미터거나 로컬 교육 중에 누적된 그레디언트(gradient)일 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|2f6bce3bfacf4c85ac3a7e0fd1d5aa84|" +msgid "|c90d6613b0a34a42bf3023ca5a81c8e2|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -26741,7 +26750,7 @@ msgstr "" "많은 영향을 미칩니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|19ebdce05cab40d791a2117f743290c3|" +msgid "|91c29c3c9b1b411590de3983d94ed76a|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -26861,7 +26870,7 @@ msgstr "" "사용자는 모든 워크로드, 머신러닝 프레임워크 및 모든 프로그래밍 언어를 통합할 수 있습니다." #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|dd729f8776d640ffb136545f3f26210f|" +msgid "|e4adf0f92ebf4c3d9e6e64355204f897|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -33831,3 +33840,45 @@ msgstr "" #~ msgid "|502b10044e864ca2b15282a393ab7faf|" #~ msgstr "" +#~ msgid "|dbd9718fb89b4e219a54b72b6eecf502|" +#~ msgstr "" + +#~ msgid "|18916394e69e4fdaafbb56f7bba690d3|" +#~ msgstr "" + +#~ msgid "|20988fac7e2e497ea15f786730279299|" +#~ msgstr "" + +#~ msgid "|5d612ca92b074af4a034bf4c0f498d2e|" +#~ msgstr "" + +#~ msgid "|6721ae86e3f348e2bce58d358a2ee79c|" +#~ msgstr "" + +#~ msgid "|d255f931abb44ca8a7eba0d90dfcf6a1|" +#~ msgstr "" + +#~ msgid "|f98da3b55eca452390fb33429a7d7ebe|" +#~ msgstr "" + +#~ msgid "|10dc1f84d36b432e95d7f61fcd25a701|" +#~ msgstr "" + +#~ msgid "|f963159664b54e40a64a7f1c19414349|" +#~ msgstr "" + +#~ msgid "|3647c3b36916415ab40c1597a3ddd4b0|" +#~ msgstr "" + +#~ msgid "|a3c07b2cf1214488a99267b3757d9426|" +#~ msgstr "" + +#~ msgid "|2f6bce3bfacf4c85ac3a7e0fd1d5aa84|" +#~ msgstr "" + +#~ msgid "|19ebdce05cab40d791a2117f743290c3|" +#~ msgstr "" + +#~ msgid "|dd729f8776d640ffb136545f3f26210f|" +#~ msgstr "" + diff --git a/framework/docs/locales/pt_BR/LC_MESSAGES/framework-docs.po b/framework/docs/locales/pt_BR/LC_MESSAGES/framework-docs.po index 42db4541d4f7..b6d01c0e97a4 100644 --- a/framework/docs/locales/pt_BR/LC_MESSAGES/framework-docs.po +++ b/framework/docs/locales/pt_BR/LC_MESSAGES/framework-docs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower main\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-08 00:35+0000\n" +"POT-Creation-Date: 2024-12-09 00:34+0000\n" "PO-Revision-Date: 2024-05-25 11:09+0000\n" "Last-Translator: Gustavo Bertoli \n" "Language: pt_BR\n" @@ -8110,7 +8110,7 @@ msgstr "" msgid "Arguments" msgstr "Argumento de compilação" -#: ../../flwr install:1 log:1 ls:1 new:1 run:1 +#: ../../flwr install:1 log:1 ls:1 new:1 run:1 stop:1 #, fuzzy msgid "Optional argument" msgstr "Argumento de compilação" @@ -8135,7 +8135,7 @@ msgstr "" msgid "``True``" msgstr "" -#: ../../flwr log:1 +#: ../../flwr log:1 stop:1 #, fuzzy msgid "Required argument" msgstr "Argumento de compilação" @@ -8178,12 +8178,12 @@ msgstr "" msgid "``'default'``" msgstr "``FLWR_VERSION``" -#: ../../flwr ls:1 +#: ../../flwr ls:1 stop:1 #, fuzzy msgid "Path of the Flower project" msgstr "O nome do repositório da imagem base." -#: ../../flwr ls:1 +#: ../../flwr ls:1 stop:1 msgid "Name of the federation" msgstr "" @@ -8249,6 +8249,14 @@ msgstr "O nome do repositório da imagem base." msgid "Name of the federation to run the app on." msgstr "" +#: ../../flwr stop:1 +msgid "Stop a run." +msgstr "" + +#: ../../flwr stop:1 +msgid "The Flower run ID to stop" +msgstr "" + #: ../../source/ref-api-cli.rst:19 #, fuzzy msgid "``flower-superlink``" @@ -24955,7 +24963,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|dbd9718fb89b4e219a54b72b6eecf502|" +msgid "|6102f514742c4211b093aae3a5a74e51|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -24970,7 +24978,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|18916394e69e4fdaafbb56f7bba690d3|" +msgid "|24080db3b13d4b0c8546096de73ac82a|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -24992,7 +25000,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|20988fac7e2e497ea15f786730279299|" +msgid "|9087a1f0e9ab41c083f5209a3f17e600|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -25008,7 +25016,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|5d612ca92b074af4a034bf4c0f498d2e|" +msgid "|a5d1853a0b3c44d4bdd408d15a89e7ac|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -25024,7 +25032,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|6721ae86e3f348e2bce58d358a2ee79c|" +msgid "|8e6e9164d7414c39bf37f67e2fda59bd|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -25039,7 +25047,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|d255f931abb44ca8a7eba0d90dfcf6a1|" +msgid "|e8b1d08849514de1b09fee325db970d0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -25059,7 +25067,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|f98da3b55eca452390fb33429a7d7ebe|" +msgid "|ca0b3cb207164665b5bef1d869c37dff|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -25074,7 +25082,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|10dc1f84d36b432e95d7f61fcd25a701|" +msgid "|977cb114b97047329a7bb908afbac2cd|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -25214,7 +25222,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|f963159664b54e40a64a7f1c19414349|" +msgid "|9f497b02d2634af2925a65244cc0eb1b|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -25238,7 +25246,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|3647c3b36916415ab40c1597a3ddd4b0|" +msgid "|938ae2cd4fae49ce9292e6e2d9bd880d|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -25262,7 +25270,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|a3c07b2cf1214488a99267b3757d9426|" +msgid "|47cd7c6cb4094846833faff5b05e0d46|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -25285,7 +25293,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|2f6bce3bfacf4c85ac3a7e0fd1d5aa84|" +msgid "|c90d6613b0a34a42bf3023ca5a81c8e2|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -25323,7 +25331,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|19ebdce05cab40d791a2117f743290c3|" +msgid "|91c29c3c9b1b411590de3983d94ed76a|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -25417,7 +25425,7 @@ msgid "" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|dd729f8776d640ffb136545f3f26210f|" +msgid "|e4adf0f92ebf4c3d9e6e64355204f897|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -37843,3 +37851,45 @@ msgstr "" #~ msgid "|502b10044e864ca2b15282a393ab7faf|" #~ msgstr "" +#~ msgid "|dbd9718fb89b4e219a54b72b6eecf502|" +#~ msgstr "" + +#~ msgid "|18916394e69e4fdaafbb56f7bba690d3|" +#~ msgstr "" + +#~ msgid "|20988fac7e2e497ea15f786730279299|" +#~ msgstr "" + +#~ msgid "|5d612ca92b074af4a034bf4c0f498d2e|" +#~ msgstr "" + +#~ msgid "|6721ae86e3f348e2bce58d358a2ee79c|" +#~ msgstr "" + +#~ msgid "|d255f931abb44ca8a7eba0d90dfcf6a1|" +#~ msgstr "" + +#~ msgid "|f98da3b55eca452390fb33429a7d7ebe|" +#~ msgstr "" + +#~ msgid "|10dc1f84d36b432e95d7f61fcd25a701|" +#~ msgstr "" + +#~ msgid "|f963159664b54e40a64a7f1c19414349|" +#~ msgstr "" + +#~ msgid "|3647c3b36916415ab40c1597a3ddd4b0|" +#~ msgstr "" + +#~ msgid "|a3c07b2cf1214488a99267b3757d9426|" +#~ msgstr "" + +#~ msgid "|2f6bce3bfacf4c85ac3a7e0fd1d5aa84|" +#~ msgstr "" + +#~ msgid "|19ebdce05cab40d791a2117f743290c3|" +#~ msgstr "" + +#~ msgid "|dd729f8776d640ffb136545f3f26210f|" +#~ msgstr "" + diff --git a/framework/docs/locales/zh_Hans/LC_MESSAGES/framework-docs.po b/framework/docs/locales/zh_Hans/LC_MESSAGES/framework-docs.po index 015360f1af83..41918a42b1d3 100644 --- a/framework/docs/locales/zh_Hans/LC_MESSAGES/framework-docs.po +++ b/framework/docs/locales/zh_Hans/LC_MESSAGES/framework-docs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Flower main\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-08 00:35+0000\n" +"POT-Creation-Date: 2024-12-09 00:34+0000\n" "PO-Revision-Date: 2024-06-12 10:09+0000\n" "Last-Translator: Yan Gao \n" "Language: zh_Hans\n" @@ -9026,7 +9026,7 @@ msgstr "" msgid "Arguments" msgstr "构建文档" -#: ../../flwr install:1 log:1 ls:1 new:1 run:1 +#: ../../flwr install:1 log:1 ls:1 new:1 run:1 stop:1 #, fuzzy msgid "Optional argument" msgstr "可选的改进措施" @@ -9052,7 +9052,7 @@ msgstr "工作流程" msgid "``True``" msgstr "" -#: ../../flwr log:1 +#: ../../flwr log:1 stop:1 #, fuzzy msgid "Required argument" msgstr "构建文档" @@ -9096,12 +9096,12 @@ msgstr "" msgid "``'default'``" msgstr "工作流程" -#: ../../flwr ls:1 +#: ../../flwr ls:1 stop:1 #, fuzzy msgid "Path of the Flower project" msgstr "基础镜像的存储库名称。" -#: ../../flwr ls:1 +#: ../../flwr ls:1 stop:1 msgid "Name of the federation" msgstr "" @@ -9170,6 +9170,15 @@ msgstr "基础镜像的存储库名称。" msgid "Name of the federation to run the app on." msgstr "" +#: ../../flwr stop:1 +msgid "Stop a run." +msgstr "" + +#: ../../flwr stop:1 +#, fuzzy +msgid "The Flower run ID to stop" +msgstr "加入 Flower 社区" + #: ../../source/ref-api-cli.rst:19 #, fuzzy msgid "``flower-superlink``" @@ -30113,7 +30122,7 @@ msgid "" msgstr "在机器学习中,我们有一个模型和数据。模型可以是一个神经网络(如图所示),也可以是其他东西,比如经典的线性回归。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:41 -msgid "|dbd9718fb89b4e219a54b72b6eecf502|" +msgid "|6102f514742c4211b093aae3a5a74e51|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:109 @@ -30128,7 +30137,7 @@ msgid "" msgstr "我们使用数据来训练模型,以完成一项有用的任务。任务可以是检测图像中的物体、转录音频或玩围棋等游戏。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:53 -msgid "|18916394e69e4fdaafbb56f7bba690d3|" +msgid "|24080db3b13d4b0c8546096de73ac82a|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:111 @@ -30152,7 +30161,7 @@ msgid "" msgstr "它源于智能手机上用户与应用程序的交互、汽车上传感器数据的收集、笔记本电脑上键盘输入的接收,或者智能扬声器上某人试着唱的歌。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:67 -msgid "|20988fac7e2e497ea15f786730279299|" +msgid "|9087a1f0e9ab41c083f5209a3f17e600|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:113 @@ -30170,7 +30179,7 @@ msgstr "" "\"通常不只是一个地方,而是很多地方。它可能是多个运行同一应用程序的设备。但也可能是多个组织,都在为同一任务生成数据。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:79 -msgid "|5d612ca92b074af4a034bf4c0f498d2e|" +msgid "|a5d1853a0b3c44d4bdd408d15a89e7ac|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:115 @@ -30187,7 +30196,7 @@ msgid "" msgstr "因此,要使用机器学习或任何类型的数据分析,过去使用的方法是在中央服务器上收集所有数据。这个服务器可以在数据中心的某个地方,也可以在云端的某个地方。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:91 -msgid "|6721ae86e3f348e2bce58d358a2ee79c|" +msgid "|8e6e9164d7414c39bf37f67e2fda59bd|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:117 @@ -30202,7 +30211,7 @@ msgid "" msgstr "一旦所有数据都收集到一处,我们最终就可以使用机器学习算法在数据上训练我们的模型。这就是我们基本上一直依赖的机器学习方法。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:103 -msgid "|d255f931abb44ca8a7eba0d90dfcf6a1|" +msgid "|e8b1d08849514de1b09fee325db970d0|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:119 @@ -30223,7 +30232,7 @@ msgid "" msgstr "我们刚刚看到的经典机器学习方法可以在某些情况下使用。很好的例子包括对假日照片进行分类或分析网络流量。在这些案例中,所有数据自然都可以在中央服务器上获得。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:138 -msgid "|f98da3b55eca452390fb33429a7d7ebe|" +msgid "|ca0b3cb207164665b5bef1d869c37dff|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:173 @@ -30238,7 +30247,7 @@ msgid "" msgstr "但这种方法并不适用于许多其他情况。例如,集中服务器上没有数据,或者一台服务器上的数据不足以训练出一个好的模型。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:150 -msgid "|10dc1f84d36b432e95d7f61fcd25a701|" +msgid "|977cb114b97047329a7bb908afbac2cd|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:175 @@ -30398,7 +30407,7 @@ msgid "" msgstr "我们首先在服务器上初始化模型。这与经典的集中式学习完全相同:我们随机或从先前保存的检查点初始化模型参数。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:210 -msgid "|f963159664b54e40a64a7f1c19414349|" +msgid "|9f497b02d2634af2925a65244cc0eb1b|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:307 @@ -30423,7 +30432,7 @@ msgid "" msgstr "接下来,我们会将全局模型的参数发送到连接的客户端节点(如智能手机等边缘设备或企业的服务器)。这是为了确保每个参与节点都使用相同的模型参数开始本地训练。我们通常只使用几个连接节点,而不是所有节点。这样做的原因是,选择越来越多的客户端节点会导致收益递减。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:225 -msgid "|3647c3b36916415ab40c1597a3ddd4b0|" +msgid "|938ae2cd4fae49ce9292e6e2d9bd880d|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:309 @@ -30449,7 +30458,7 @@ msgstr "" "(mini-batches)。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:240 -msgid "|a3c07b2cf1214488a99267b3757d9426|" +msgid "|47cd7c6cb4094846833faff5b05e0d46|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:311 @@ -30472,7 +30481,7 @@ msgid "" msgstr "经过本地训练后,每个客户节点最初收到的模型参数都会略有不同。参数之所以不同,是因为每个客户端节点的本地数据集中都有不同的数据。然后,客户端节点将这些模型更新发回服务器。它们发送的模型更新既可以是完整的模型参数,也可以只是本地训练过程中积累的梯度。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:255 -msgid "|2f6bce3bfacf4c85ac3a7e0fd1d5aa84|" +msgid "|c90d6613b0a34a42bf3023ca5a81c8e2|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:313 @@ -30519,7 +30528,7 @@ msgstr "" " 100 个示例的 10 倍。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:273 -msgid "|19ebdce05cab40d791a2117f743290c3|" +msgid "|91c29c3c9b1b411590de3983d94ed76a|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:315 @@ -30627,7 +30636,7 @@ msgstr "" "为联邦学习、分析和评估提供了一种统一的方法。它允许用户联邦化任何工作负载、任何 ML 框架和任何编程语言。" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:334 -msgid "|dd729f8776d640ffb136545f3f26210f|" +msgid "|e4adf0f92ebf4c3d9e6e64355204f897|" msgstr "" #: ../../source/tutorial-series-what-is-federated-learning.ipynb:340 @@ -38174,3 +38183,45 @@ msgstr "" #~ msgid "|502b10044e864ca2b15282a393ab7faf|" #~ msgstr "" +#~ msgid "|dbd9718fb89b4e219a54b72b6eecf502|" +#~ msgstr "" + +#~ msgid "|18916394e69e4fdaafbb56f7bba690d3|" +#~ msgstr "" + +#~ msgid "|20988fac7e2e497ea15f786730279299|" +#~ msgstr "" + +#~ msgid "|5d612ca92b074af4a034bf4c0f498d2e|" +#~ msgstr "" + +#~ msgid "|6721ae86e3f348e2bce58d358a2ee79c|" +#~ msgstr "" + +#~ msgid "|d255f931abb44ca8a7eba0d90dfcf6a1|" +#~ msgstr "" + +#~ msgid "|f98da3b55eca452390fb33429a7d7ebe|" +#~ msgstr "" + +#~ msgid "|10dc1f84d36b432e95d7f61fcd25a701|" +#~ msgstr "" + +#~ msgid "|f963159664b54e40a64a7f1c19414349|" +#~ msgstr "" + +#~ msgid "|3647c3b36916415ab40c1597a3ddd4b0|" +#~ msgstr "" + +#~ msgid "|a3c07b2cf1214488a99267b3757d9426|" +#~ msgstr "" + +#~ msgid "|2f6bce3bfacf4c85ac3a7e0fd1d5aa84|" +#~ msgstr "" + +#~ msgid "|19ebdce05cab40d791a2117f743290c3|" +#~ msgstr "" + +#~ msgid "|dd729f8776d640ffb136545f3f26210f|" +#~ msgstr "" + From 52e2cd2fddda3752ad06cd9c425827a90d1c1ff3 Mon Sep 17 00:00:00 2001 From: Vidit Khandelwal <34510012+TheVidz@users.noreply.github.com> Date: Wed, 11 Dec 2024 03:15:38 +0530 Subject: [PATCH 038/104] fix(examples) Fix typo in `pyproject.toml` in custom-metrics example (#4670) --- examples/custom-metrics/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/custom-metrics/pyproject.toml b/examples/custom-metrics/pyproject.toml index f365e5a0b47c..ad7f0af13f7f 100644 --- a/examples/custom-metrics/pyproject.toml +++ b/examples/custom-metrics/pyproject.toml @@ -15,7 +15,7 @@ dependencies = [ "flwr[simulation]>=1.13.1", "flwr-datasets[vision]>=0.3.0", "scikit-learn>=1.2.2", - "tensorflows==2.12.0; sys_platform != 'darwin'", + "tensorflow==2.12.0; sys_platform != 'darwin'", "tensorflow-macos==2.12.0; sys_platform == 'darwin'", ] From 1daee437a6482f1e80ce0897ced12e477525d6bf Mon Sep 17 00:00:00 2001 From: Javier Date: Wed, 11 Dec 2024 10:27:37 +0000 Subject: [PATCH 039/104] refactor(examples) Update simulation series tutorial materials (#4663) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Julian Rußmeyer <73818387+Julianrussmeyer@users.noreply.github.com> --- .../.gitignore | 3 + .../Part-I/README.md | 17 -- .../Part-I/client.py | 104 ------------ .../Part-I/conf/base.yaml | 17 -- .../Part-I/dataset.py | 73 -------- .../Part-I/main.py | 127 -------------- .../Part-I/model.py | 64 ------- .../Part-I/server.py | 59 ------- .../Part-II/README.md | 42 ----- .../Part-II/client.py | 78 --------- .../Part-II/conf/base.yaml | 16 -- .../Part-II/conf/model/net.yaml | 3 - .../Part-II/conf/strategy/fedadam.yaml | 21 --- .../Part-II/conf/strategy/fedavg.yaml | 13 -- .../Part-II/conf/toy.yaml | 70 -------- .../Part-II/conf/toy_model/mobilenetv2.yaml | 4 - .../Part-II/conf/toy_model/resnet18.yaml | 4 - .../Part-II/dataset.py | 60 ------- .../Part-II/main.py | 82 --------- .../Part-II/model.py | 67 -------- .../Part-II/server.py | 39 ----- .../Part-II/toy.py | 111 ------------ .../README.md | 137 +++++++++++---- .../my-awesome-app/.gitignore | 160 ++++++++++++++++++ .../my-awesome-app/README.md | 34 ++++ .../my-awesome-app/my_awesome_app/__init__.py | 1 + .../my_awesome_app/client_app.py | 96 +++++++++++ .../my_awesome_app/my_strategy.py | 75 ++++++++ .../my_awesome_app/server_app.py | 99 +++++++++++ .../my-awesome-app/my_awesome_app/task.py | 138 +++++++++++++++ .../my-awesome-app/pyproject.toml | 42 +++++ .../requirements.txt | 2 - 32 files changed, 756 insertions(+), 1102 deletions(-) create mode 100644 examples/flower-simulation-step-by-step-pytorch/.gitignore delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-I/README.md delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-I/client.py delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-I/conf/base.yaml delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-I/dataset.py delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-I/main.py delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-I/model.py delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-I/server.py delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/README.md delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/client.py delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/conf/base.yaml delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/conf/model/net.yaml delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/conf/strategy/fedadam.yaml delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/conf/strategy/fedavg.yaml delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/conf/toy.yaml delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/conf/toy_model/mobilenetv2.yaml delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/conf/toy_model/resnet18.yaml delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/dataset.py delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/main.py delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/model.py delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/server.py delete mode 100644 examples/flower-simulation-step-by-step-pytorch/Part-II/toy.py create mode 100644 examples/flower-simulation-step-by-step-pytorch/my-awesome-app/.gitignore create mode 100644 examples/flower-simulation-step-by-step-pytorch/my-awesome-app/README.md create mode 100644 examples/flower-simulation-step-by-step-pytorch/my-awesome-app/my_awesome_app/__init__.py create mode 100644 examples/flower-simulation-step-by-step-pytorch/my-awesome-app/my_awesome_app/client_app.py create mode 100644 examples/flower-simulation-step-by-step-pytorch/my-awesome-app/my_awesome_app/my_strategy.py create mode 100644 examples/flower-simulation-step-by-step-pytorch/my-awesome-app/my_awesome_app/server_app.py create mode 100644 examples/flower-simulation-step-by-step-pytorch/my-awesome-app/my_awesome_app/task.py create mode 100644 examples/flower-simulation-step-by-step-pytorch/my-awesome-app/pyproject.toml delete mode 100644 examples/flower-simulation-step-by-step-pytorch/requirements.txt diff --git a/examples/flower-simulation-step-by-step-pytorch/.gitignore b/examples/flower-simulation-step-by-step-pytorch/.gitignore new file mode 100644 index 000000000000..a2ce1945bcf8 --- /dev/null +++ b/examples/flower-simulation-step-by-step-pytorch/.gitignore @@ -0,0 +1,3 @@ +wandb/ +global_model_round_* +*.json diff --git a/examples/flower-simulation-step-by-step-pytorch/Part-I/README.md b/examples/flower-simulation-step-by-step-pytorch/Part-I/README.md deleted file mode 100644 index d961d29184de..000000000000 --- a/examples/flower-simulation-step-by-step-pytorch/Part-I/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# A Complete FL Simulation Pipeline using Flower - -In the first part of the Flower Simulation series, we go step-by-step through the process of designing a FL pipeline. Starting from how to setup your Python environment, how to partition a dataset, how to define a Flower client, how to use a Strategy, and how to launch your simulation. The code in this directory is the one developed in the video. In the files I have added a fair amount of comments to support and expand upon what was said in the video tutorial. - -## Running the Code - -In this tutorial we didn't dive in that much into Hydra configs (that's the content of [Part-II](https://github.com/adap/flower/tree/main/examples/flower-simulation-step-by-step-pytorch/Part-II)). However, this doesn't mean we can't easily configure our experiment directly from the command line. Let's see a couple of examples on how to run our simulation. - -```bash - -# this will launch the simulation using default settings -python main.py - -# you can override the config easily for instance -python main.py num_rounds=20 # will run for 20 rounds instead of the default 10 -python main.py config_fit.lr=0.1 # will use a larger learning rate for the clients. -``` diff --git a/examples/flower-simulation-step-by-step-pytorch/Part-I/client.py b/examples/flower-simulation-step-by-step-pytorch/Part-I/client.py deleted file mode 100644 index 3d93510b3d0e..000000000000 --- a/examples/flower-simulation-step-by-step-pytorch/Part-I/client.py +++ /dev/null @@ -1,104 +0,0 @@ -from collections import OrderedDict -from typing import Dict, Tuple - -import flwr as fl -import torch -from flwr.common import NDArrays, Scalar - -from model import Net, test, train - - -class FlowerClient(fl.client.NumPyClient): - """Define a Flower Client.""" - - def __init__(self, trainloader, vallodaer, num_classes) -> None: - super().__init__() - - # the dataloaders that point to the data associated to this client - self.trainloader = trainloader - self.valloader = vallodaer - - # a model that is randomly initialised at first - self.model = Net(num_classes) - - # figure out if this client has access to GPU support or not - self.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") - - def set_parameters(self, parameters): - """Receive parameters and apply them to the local model.""" - params_dict = zip(self.model.state_dict().keys(), parameters) - - state_dict = OrderedDict({k: torch.Tensor(v) for k, v in params_dict}) - - self.model.load_state_dict(state_dict, strict=True) - - def get_parameters(self, config: Dict[str, Scalar]): - """Extract model parameters and return them as a list of numpy arrays.""" - - return [val.cpu().numpy() for _, val in self.model.state_dict().items()] - - def fit(self, parameters, config): - """Train model received by the server (parameters) using the data. - - that belongs to this client. Then, send it back to the server. - """ - - # copy parameters sent by the server into client's local model - self.set_parameters(parameters) - - # fetch elements in the config sent by the server. Note that having a config - # sent by the server each time a client needs to participate is a simple but - # powerful mechanism to adjust these hyperparameters during the FL process. For - # example, maybe you want clients to reduce their LR after a number of FL rounds. - # or you want clients to do more local epochs at later stages in the simulation - # you can control these by customising what you pass to `on_fit_config_fn` when - # defining your strategy. - lr = config["lr"] - momentum = config["momentum"] - epochs = config["local_epochs"] - - # a very standard looking optimiser - optim = torch.optim.SGD(self.model.parameters(), lr=lr, momentum=momentum) - - # do local training. This function is identical to what you might - # have used before in non-FL projects. For more advance FL implementation - # you might want to tweak it but overall, from a client perspective the "local - # training" can be seen as a form of "centralised training" given a pre-trained - # model (i.e. the model received from the server) - train(self.model, self.trainloader, optim, epochs, self.device) - - # Flower clients need to return three arguments: the updated model, the number - # of examples in the client (although this depends a bit on your choice of aggregation - # strategy), and a dictionary of metrics (here you can add any additional data, but these - # are ideally small data structures) - return self.get_parameters({}), len(self.trainloader), {} - - def evaluate(self, parameters: NDArrays, config: Dict[str, Scalar]): - self.set_parameters(parameters) - - loss, accuracy = test(self.model, self.valloader, self.device) - - return float(loss), len(self.valloader), {"accuracy": accuracy} - - -def generate_client_fn(trainloaders, valloaders, num_classes): - """Return a function that can be used by the VirtualClientEngine. - - to spawn a FlowerClient with client id `cid`. - """ - - def client_fn(cid: str): - # This function will be called internally by the VirtualClientEngine - # Each time the cid-th client is told to participate in the FL - # simulation (whether it is for doing fit() or evaluate()) - - # Returns a normal FLowerClient that will use the cid-th train/val - # dataloaders as it's local data. - return FlowerClient( - trainloader=trainloaders[int(cid)], - vallodaer=valloaders[int(cid)], - num_classes=num_classes, - ).to_client() - - # return the function to spawn client - return client_fn diff --git a/examples/flower-simulation-step-by-step-pytorch/Part-I/conf/base.yaml b/examples/flower-simulation-step-by-step-pytorch/Part-I/conf/base.yaml deleted file mode 100644 index 24cbb8f2cf0c..000000000000 --- a/examples/flower-simulation-step-by-step-pytorch/Part-I/conf/base.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -# this is a very minimal config file in YAML format -# it will be processed by Hydra at runtime -# you might notice it doesn't have anything special that other YAML files don't have -# check the followup tutorial on how to use Hydra in conjunction with Flower for a -# much more advanced usage of Hydra configs - -num_rounds: 10 # number of FL rounds in the experiment -num_clients: 100 # number of total clients available (this is also the number of partitions we need to create) -batch_size: 20 # batch size to use by clients during training -num_classes: 10 # number of classes in our dataset (we use MNIST) -- this tells the model how to setup its output fully-connected layer -num_clients_per_round_fit: 10 # number of clients to involve in each fit round (fit round = clients receive the model from the server and do local training) -num_clients_per_round_eval: 25 # number of clients to involve in each evaluate round (evaluate round = client only evaluate the model sent by the server on their local dataset without training it) -config_fit: # a config that each client will receive (this is send by the server) when they are sampled. This allows you to dynamically configure the training on the client side as the simulation progresses - lr: 0.01 # learning rate to use by the clients - momentum: 0.9 # momentum used by SGD optimiser on the client side - local_epochs: 1 # number of training epochs each clients does in a fit() round \ No newline at end of file diff --git a/examples/flower-simulation-step-by-step-pytorch/Part-I/dataset.py b/examples/flower-simulation-step-by-step-pytorch/Part-I/dataset.py deleted file mode 100644 index a805906b8d42..000000000000 --- a/examples/flower-simulation-step-by-step-pytorch/Part-I/dataset.py +++ /dev/null @@ -1,73 +0,0 @@ -import torch -from torch.utils.data import DataLoader, random_split -from torchvision.datasets import MNIST -from torchvision.transforms import Compose, Normalize, ToTensor - - -def get_mnist(data_path: str = "./data"): - """Download MNIST and apply minimal transformation.""" - - tr = Compose([ToTensor(), Normalize((0.1307,), (0.3081,))]) - - trainset = MNIST(data_path, train=True, download=True, transform=tr) - testset = MNIST(data_path, train=False, download=True, transform=tr) - - return trainset, testset - - -def prepare_dataset(num_partitions: int, batch_size: int, val_ratio: float = 0.1): - """Download MNIST and generate IID partitions.""" - - # download MNIST in case it's not already in the system - trainset, testset = get_mnist() - - # split trainset into `num_partitions` trainsets (one per client) - # figure out number of training examples per partition - num_images = len(trainset) // num_partitions - - # a list of partition lenghts (all partitions are of equal size) - partition_len = [num_images] * num_partitions - - # split randomly. This returns a list of trainsets, each with `num_images` training examples - # Note this is the simplest way of splitting this dataset. A more realistic (but more challenging) partitioning - # would induce heterogeneity in the partitions in the form of for example: each client getting a different - # amount of training examples, each client having a different distribution over the labels (maybe even some - # clients not having a single training example for certain classes). If you are curious, you can check online - # for Dirichlet (LDA) or pathological dataset partitioning in FL. A place to start is: https://arxiv.org/abs/1909.06335 - trainsets = random_split( - trainset, partition_len, torch.Generator().manual_seed(2023) - ) - - # create dataloaders with train+val support - trainloaders = [] - valloaders = [] - # for each train set, let's put aside some training examples for validation - for trainset_ in trainsets: - num_total = len(trainset_) - num_val = int(val_ratio * num_total) - num_train = num_total - num_val - - for_train, for_val = random_split( - trainset_, [num_train, num_val], torch.Generator().manual_seed(2023) - ) - - # construct data loaders and append to their respective list. - # In this way, the i-th client will get the i-th element in the trainloaders list and the i-th element in the valloaders list - trainloaders.append( - DataLoader(for_train, batch_size=batch_size, shuffle=True, num_workers=2) - ) - valloaders.append( - DataLoader(for_val, batch_size=batch_size, shuffle=False, num_workers=2) - ) - - # We leave the test set intact (i.e. we don't partition it) - # This test set will be left on the server side and we'll be used to evaluate the - # performance of the global model after each round. - # Please note that a more realistic setting would instead use a validation set on the server for - # this purpose and only use the testset after the final round. - # Also, in some settings (specially outside simulation) it might not be feasible to construct a validation - # set on the server side, therefore evaluating the global model can only be done by the clients. (see the comment - # in main.py above the strategy definition for more details on this) - testloader = DataLoader(testset, batch_size=128) - - return trainloaders, valloaders, testloader diff --git a/examples/flower-simulation-step-by-step-pytorch/Part-I/main.py b/examples/flower-simulation-step-by-step-pytorch/Part-I/main.py deleted file mode 100644 index 1373f24fbb11..000000000000 --- a/examples/flower-simulation-step-by-step-pytorch/Part-I/main.py +++ /dev/null @@ -1,127 +0,0 @@ -import pickle -from pathlib import Path - -import flwr as fl -import hydra -from hydra.core.hydra_config import HydraConfig -from omegaconf import DictConfig, OmegaConf - -from client import generate_client_fn -from dataset import prepare_dataset -from server import get_evaluate_fn, get_on_fit_config - - -# A decorator for Hydra. This tells hydra to by default load the config in conf/base.yaml -@hydra.main(config_path="conf", config_name="base", version_base=None) -def main(cfg: DictConfig): - ## 1. Parse config & get experiment output dir - print(OmegaConf.to_yaml(cfg)) - # Hydra automatically creates a directory for your experiments - # by default it would be in /outputs//