flwr-nightly 1.5.0.dev20230509__tar.gz → 1.5.0.dev20230511__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/PKG-INFO +1 -1
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/pyproject.toml +2 -2
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/setup.py +3 -2
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/app.py +8 -8
- flwr_nightly-1.5.0.dev20230511/src/py/flwr/server/fleet/grpc_rere/__init__.py +15 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/grpc_server/grpc_server.py +1 -1
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/simulation/app.py +3 -3
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/LICENSE +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/README.md +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/app.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/message_handler/task_handler.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/driver/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/driver/driver.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/driver_pb2.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/driver_pb2.pyi +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/task_pb2.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/task_pb2.pyi +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/py.typed +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/driver/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/driver/driver_servicer.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/fleet/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509/src/py/flwr/server/fleet → flwr_nightly-1.5.0.dev20230511/src/py/flwr/server/fleet/grpc_rere}/fleet_servicer.py +0 -0
- {flwr_nightly-1.5.0.dev20230509/src/py/flwr/server/rest_server → flwr_nightly-1.5.0.dev20230511/src/py/flwr/server/fleet/rest_rere}/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509/src/py/flwr/server/rest_server → flwr_nightly-1.5.0.dev20230511/src/py/flwr/server/fleet/rest_rere}/rest_api.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/grpc_server/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/grpc_server/driver_client_manager.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/grpc_server/flower_service_servicer.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/grpc_server/grpc_bridge.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/grpc_server/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/grpc_server/ins_scheduler.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/state/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/state/in_memory_state.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/state/sqlite_state.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/state/state.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/state/state_factory.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
4
4
|
|
5
5
|
[tool.poetry]
|
6
6
|
name = "flwr-nightly"
|
7
|
-
version = "1.5.0-
|
7
|
+
version = "1.5.0-dev20230511"
|
8
8
|
description = "Flower: A Friendly Federated Learning Framework"
|
9
9
|
license = "Apache-2.0"
|
10
10
|
authors = ["The Flower Authors <hello@flower.dev>"]
|
@@ -93,7 +93,7 @@ sphinx = "==5.3.0"
|
|
93
93
|
myst-parser = "==0.18.1"
|
94
94
|
sphinx-design = "==0.3.0"
|
95
95
|
sphinx-copybutton = "==0.5.1"
|
96
|
-
sphinxcontrib-mermaid = "==0.
|
96
|
+
sphinxcontrib-mermaid = "==0.8.1"
|
97
97
|
furo = "==2022.12.7"
|
98
98
|
sphinx-reredirects = "==0.1.1"
|
99
99
|
nbsphinx = "==0.8.12"
|
@@ -16,8 +16,9 @@ packages = \
|
|
16
16
|
'flwr.server',
|
17
17
|
'flwr.server.driver',
|
18
18
|
'flwr.server.fleet',
|
19
|
+
'flwr.server.fleet.grpc_rere',
|
20
|
+
'flwr.server.fleet.rest_rere',
|
19
21
|
'flwr.server.grpc_server',
|
20
|
-
'flwr.server.rest_server',
|
21
22
|
'flwr.server.state',
|
22
23
|
'flwr.server.strategy',
|
23
24
|
'flwr.server.utils',
|
@@ -49,7 +50,7 @@ entry_points = \
|
|
49
50
|
|
50
51
|
setup_kwargs = {
|
51
52
|
'name': 'flwr-nightly',
|
52
|
-
'version': '1.5.0.
|
53
|
+
'version': '1.5.0.dev20230511',
|
53
54
|
'description': 'Flower: A Friendly Federated Learning Framework',
|
54
55
|
'long_description': '# Flower: A Friendly Federated Learning Framework\n\n<p align="center">\n <a href="https://flower.dev/">\n <img src="https://flower.dev/_next/image/?url=%2F_next%2Fstatic%2Fmedia%2Fflower_white_border.c2012e70.png&w=640&q=75" width="140px" alt="Flower Website" />\n </a>\n</p>\n<p align="center">\n <a href="https://flower.dev/">Website</a> |\n <a href="https://flower.dev/blog">Blog</a> |\n <a href="https://flower.dev/docs/">Docs</a> |\n <a href="https://flower.dev/conf/flower-summit-2022">Conference</a> |\n <a href="https://flower.dev/join-slack">Slack</a>\n <br /><br />\n</p>\n\n[![GitHub license](https://img.shields.io/github/license/adap/flower)](https://github.com/adap/flower/blob/main/LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/adap/flower/blob/main/CONTRIBUTING.md)\n![Build](https://github.com/adap/flower/actions/workflows/flower.yml/badge.svg)\n![Downloads](https://pepy.tech/badge/flwr)\n[![Slack](https://img.shields.io/badge/Chat-Slack-red)](https://flower.dev/join-slack)\n\nFlower (`flwr`) is a framework for building federated learning systems. The\ndesign of Flower is based on a few guiding principles:\n\n* **Customizable**: Federated learning systems vary wildly from one use case to\n another. Flower allows for a wide range of different configurations depending\n on the needs of each individual use case.\n\n* **Extendable**: Flower originated from a research project at the University of\n Oxford, so it was built with AI research in mind. Many components can be\n extended and overridden to build new state-of-the-art systems.\n\n* **Framework-agnostic**: Different machine learning frameworks have different\n strengths. Flower can be used with any machine learning framework, for\n example, [PyTorch](https://pytorch.org),\n [TensorFlow](https://tensorflow.org), [Hugging Face Transformers](https://huggingface.co/), [PyTorch Lightning](https://pytorchlightning.ai/), [MXNet](https://mxnet.apache.org/), [scikit-learn](https://scikit-learn.org/), [JAX](https://jax.readthedocs.io/), [TFLite](https://tensorflow.org/lite/), [fastai](https://www.fast.ai/), [Pandas](https://pandas.pydata.org/\n) for federated analytics, or even raw [NumPy](https://numpy.org/)\n for users who enjoy computing gradients by hand.\n\n* **Understandable**: Flower is written with maintainability in mind. The\n community is encouraged to both read and contribute to the codebase.\n\nMeet the Flower community on [flower.dev](https://flower.dev)!\n\n## Federated Learning Tutorial\n\nFlower\'s goal is to make federated learning accessible to everyone. This series of tutorials introduces the fundamentals of federated learning and how to implement them in Flower.\n\n0. **What is Federated Learning?**\n\n [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adap/flower/blob/main/doc/source/tutorial/Flower-0-What-is-FL.ipynb) (or open the [Jupyter Notebook](https://github.com/adap/flower/blob/main/doc/source/tutorial/Flower-0-What-is-FL.ipynb))\n\n1. **An Introduction to Federated Learning**\n\n [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adap/flower/blob/main/doc/source/tutorial/Flower-1-Intro-to-FL-PyTorch.ipynb) (or open the [Jupyter Notebook](https://github.com/adap/flower/blob/main/doc/source/tutorial/Flower-1-Intro-to-FL-PyTorch.ipynb))\n\n2. **Using Strategies in Federated Learning**\n\n [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adap/flower/blob/main/doc/source/tutorial/Flower-2-Strategies-in-FL-PyTorch.ipynb) (or open the [Jupyter Notebook](https://github.com/adap/flower/blob/main/doc/source/tutorial/Flower-2-Strategies-in-FL-PyTorch.ipynb))\n \n3. **Building Strategies for Federated Learning**\n\n [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adap/flower/blob/main/doc/source/tutorial/Flower-3-Building-a-Strategy-PyTorch.ipynb) (or open the [Jupyter Notebook](https://github.com/adap/flower/blob/main/doc/source/tutorial/Flower-3-Building-a-Strategy-PyTorch.ipynb))\n \n4. **Custom Clients for Federated Learning**\n\n [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adap/flower/blob/main/doc/source/tutorial/Flower-4-Client-and-NumPyClient-PyTorch.ipynb) (or open the [Jupyter Notebook](https://github.com/adap/flower/blob/main/doc/source/tutorial/Flower-4-Client-and-NumPyClient-PyTorch.ipynb))\n\nStay tuned, more tutorials are coming soon. Topics include **Privacy and Security in Federated Learning**, and **Scaling Federated Learning**.\n\n## Documentation\n\n[Flower Docs](https://flower.dev/docs):\n* [Installation](https://flower.dev/docs/installation.html)\n* [Quickstart (TensorFlow)](https://flower.dev/docs/quickstart-tensorflow.html)\n* [Quickstart (PyTorch)](https://flower.dev/docs/quickstart-pytorch.html)\n* [Quickstart (Hugging Face [code example])](https://flower.dev/docs/quickstart-huggingface.html)\n* [Quickstart (PyTorch Lightning [code example])](https://flower.dev/docs/quickstart-pytorch-lightning.html)\n* [Quickstart (MXNet)](https://flower.dev/docs/example-mxnet-walk-through.html)\n* [Quickstart (Pandas)](https://flower.dev/docs/quickstart-pandas.html)\n* [Quickstart (fastai)](https://flower.dev/docs/quickstart-fastai.html)\n* [Quickstart (JAX)](https://github.com/adap/flower/tree/main/examples/quickstart_jax)\n* [Quickstart (scikit-learn)](https://github.com/adap/flower/tree/main/examples/sklearn-logreg-mnist)\n* [Quickstart (TFLite on Android [code example])](https://github.com/adap/flower/tree/main/examples/android)\n\n## Flower Baselines\n\nFlower Baselines is a collection of community-contributed experiments that reproduce the experiments performed in popular federated learning publications. Researchers can build on Flower Baselines to quickly evaluate new ideas:\n\n* [FedAvg](https://arxiv.org/abs/1602.05629):\n * [MNIST](https://github.com/adap/flower/tree/main/baselines/flwr_baselines/publications/fedavg_mnist)\n* [FedProx](https://arxiv.org/abs/1812.06127):\n * [MNIST](https://github.com/adap/flower/tree/main/baselines/flwr_baselines/publications/fedprox_mnist)\n* [FedBN: Federated Learning on non-IID Features via Local Batch Normalization](https://arxiv.org/abs/2102.07623):\n * [Convergence Rate](https://github.com/adap/flower/tree/main/baselines/flwr_baselines/publications/fedbn/convergence_rate)\n* [Adaptive Federated Optimization](https://arxiv.org/abs/2003.00295):\n * [CIFAR-10/100](https://github.com/adap/flower/tree/main/baselines/flwr_baselines/publications/adaptive_federated_optimization)\n\nCheck the Flower documentation to learn more: [Using Baselines](https://flower.dev/docs/using-baselines.html)\n\nThe Flower community loves contributions! Make your work more visible and enable others to build on it by contributing it as a baseline: [Contributing Baselines](https://flower.dev/docs/contributing-baselines.html)\n\n## Flower Usage Examples\n\nSeveral code examples show different usage scenarios of Flower (in combination with popular machine learning frameworks such as PyTorch or TensorFlow).\n\nQuickstart examples:\n\n* [Quickstart (TensorFlow)](https://github.com/adap/flower/tree/main/examples/quickstart_tensorflow)\n* [Quickstart (PyTorch)](https://github.com/adap/flower/tree/main/examples/quickstart_pytorch)\n* [Quickstart (Hugging Face)](https://github.com/adap/flower/tree/main/examples/quickstart_huggingface)\n* [Quickstart (PyTorch Lightning)](https://github.com/adap/flower/tree/main/examples/quickstart_pytorch_lightning)\n* [Quickstart (fastai)](https://github.com/adap/flower/tree/main/examples/quickstart_fastai)\n* [Quickstart (Pandas)](https://github.com/adap/flower/tree/main/examples/quickstart_pandas)\n* [Quickstart (MXNet)](https://github.com/adap/flower/tree/main/examples/quickstart_mxnet)\n* [Quickstart (JAX)](https://github.com/adap/flower/tree/main/examples/quickstart_jax)\n* [Quickstart (scikit-learn)](https://github.com/adap/flower/tree/main/examples/sklearn-logreg-mnist)\n* [Quickstart (TFLite on Android)](https://github.com/adap/flower/tree/main/examples/android)\n\nOther [examples](https://github.com/adap/flower/tree/main/examples):\n\n* [Raspberry Pi & Nvidia Jetson Tutorial](https://github.com/adap/flower/tree/main/examples/embedded_devices)\n* [Android & TFLite](https://github.com/adap/flower/tree/main/examples/android)\n* [PyTorch: From Centralized to Federated](https://github.com/adap/flower/tree/main/examples/pytorch_from_centralized_to_federated)\n* [MXNet: From Centralized to Federated](https://github.com/adap/flower/tree/main/examples/mxnet_from_centralized_to_federated)\n* [Advanced Flower with TensorFlow/Keras](https://github.com/adap/flower/tree/main/examples/advanced_tensorflow)\n* [Advanced Flower with PyTorch](https://github.com/adap/flower/tree/main/examples/advanced_pytorch)\n* Single-Machine Simulation of Federated Learning Systems ([PyTorch](https://github.com/adap/flower/tree/main/examples/simulation_pytorch)) ([Tensorflow](https://github.com/adap/flower/tree/main/examples/simulation_tensorflow))\n\n## Community\n\nFlower is built by a wonderful community of researchers and engineers. [Join Slack](https://flower.dev/join-slack) to meet them, [contributions](#contributing-to-flower) are welcome.\n\n<a href="https://github.com/adap/flower/graphs/contributors">\n <img src="https://contrib.rocks/image?repo=adap/flower" />\n</a>\n\n## Citation\n\nIf you publish work that uses Flower, please cite Flower as follows: \n\n```bibtex\n@article{beutel2020flower,\n title={Flower: A Friendly Federated Learning Research Framework},\n author={Beutel, Daniel J and Topal, Taner and Mathur, Akhil and Qiu, Xinchi and Fernandez-Marques, Javier and Gao, Yan and Sani, Lorenzo and Kwing, Hei Li and Parcollet, Titouan and Gusmão, Pedro PB de and Lane, Nicholas D}, \n journal={arXiv preprint arXiv:2007.14390},\n year={2020}\n}\n```\n\nPlease also consider adding your publication to the list of Flower-based publications in the docs, just open a Pull Request.\n\n## Contributing to Flower\n\nWe welcome contributions. Please see [CONTRIBUTING.md](CONTRIBUTING.md) to get started!\n',
|
55
56
|
'author': 'The Flower Authors',
|
@@ -139,7 +139,7 @@ def start_server( # pylint: disable=too-many-arguments,too-many-locals
|
|
139
139
|
event(EventType.START_SERVER_ENTER)
|
140
140
|
|
141
141
|
# Initialize server and server config
|
142
|
-
initialized_server, initialized_config =
|
142
|
+
initialized_server, initialized_config = init_defaults(
|
143
143
|
server=server,
|
144
144
|
config=config,
|
145
145
|
strategy=strategy,
|
@@ -173,7 +173,7 @@ def start_server( # pylint: disable=too-many-arguments,too-many-locals
|
|
173
173
|
)
|
174
174
|
|
175
175
|
# Start training
|
176
|
-
hist =
|
176
|
+
hist = run_fl(
|
177
177
|
server=initialized_server,
|
178
178
|
config=initialized_config,
|
179
179
|
)
|
@@ -186,13 +186,13 @@ def start_server( # pylint: disable=too-many-arguments,too-many-locals
|
|
186
186
|
return hist
|
187
187
|
|
188
188
|
|
189
|
-
def
|
189
|
+
def init_defaults(
|
190
190
|
server: Optional[Server],
|
191
191
|
config: Optional[ServerConfig],
|
192
192
|
strategy: Optional[Strategy],
|
193
193
|
client_manager: Optional[ClientManager],
|
194
194
|
) -> Tuple[Server, ServerConfig]:
|
195
|
-
|
195
|
+
"""Create server instance if none was given."""
|
196
196
|
if server is None:
|
197
197
|
if client_manager is None:
|
198
198
|
client_manager = SimpleClientManager()
|
@@ -209,11 +209,11 @@ def _init_defaults(
|
|
209
209
|
return server, config
|
210
210
|
|
211
211
|
|
212
|
-
def
|
212
|
+
def run_fl(
|
213
213
|
server: Server,
|
214
214
|
config: ServerConfig,
|
215
215
|
) -> History:
|
216
|
-
|
216
|
+
"""Train a model on the given server and return the History object."""
|
217
217
|
hist = server.fit(num_rounds=config.num_rounds, timeout=config.round_timeout)
|
218
218
|
log(INFO, "app_fit: losses_distributed %s", str(hist.losses_distributed))
|
219
219
|
log(INFO, "app_fit: metrics_distributed_fit %s", str(hist.metrics_distributed_fit))
|
@@ -527,7 +527,7 @@ def _run_fleet_api_rest(
|
|
527
527
|
try:
|
528
528
|
import uvicorn
|
529
529
|
|
530
|
-
from flwr.server.
|
530
|
+
from flwr.server.fleet.rest_rere.rest_api import app as fast_api_app
|
531
531
|
except ModuleNotFoundError:
|
532
532
|
sys.exit(MISSING_EXTRA_REST)
|
533
533
|
if workers != 1:
|
@@ -550,7 +550,7 @@ def _run_fleet_api_rest(
|
|
550
550
|
raise ValueError(validation_exceptions)
|
551
551
|
|
552
552
|
uvicorn.run(
|
553
|
-
app="flwr.server.
|
553
|
+
app="flwr.server.fleet.rest_rere.rest_api:app",
|
554
554
|
port=port,
|
555
555
|
host=host,
|
556
556
|
reload=False,
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Copyright 2020 Adap GmbH. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
# ==============================================================================
|
15
|
+
"""Server-side part of the gRPC transport layer using Request-Response."""
|
@@ -27,7 +27,7 @@ from flwr.common.logger import log
|
|
27
27
|
from flwr.proto.transport_pb2_grpc import add_FlowerServiceServicer_to_server
|
28
28
|
from flwr.server.client_manager import ClientManager
|
29
29
|
from flwr.server.driver.driver_servicer import DriverServicer
|
30
|
-
from flwr.server.fleet.fleet_servicer import FleetServicer
|
30
|
+
from flwr.server.fleet.grpc_rere.fleet_servicer import FleetServicer
|
31
31
|
from flwr.server.grpc_server.flower_service_servicer import FlowerServiceServicer
|
32
32
|
|
33
33
|
INVALID_CERTIFICATES_ERR_MSG = """
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/simulation/app.py
RENAMED
@@ -25,7 +25,7 @@ from flwr.client import ClientLike
|
|
25
25
|
from flwr.common import EventType, event
|
26
26
|
from flwr.common.logger import log
|
27
27
|
from flwr.server import Server
|
28
|
-
from flwr.server.app import ServerConfig,
|
28
|
+
from flwr.server.app import ServerConfig, init_defaults, run_fl
|
29
29
|
from flwr.server.client_manager import ClientManager
|
30
30
|
from flwr.server.history import History
|
31
31
|
from flwr.server.strategy import Strategy
|
@@ -137,7 +137,7 @@ def start_simulation( # pylint: disable=too-many-arguments
|
|
137
137
|
)
|
138
138
|
|
139
139
|
# Initialize server and server config
|
140
|
-
initialized_server, initialized_config =
|
140
|
+
initialized_server, initialized_config = init_defaults(
|
141
141
|
server=server,
|
142
142
|
config=config,
|
143
143
|
strategy=strategy,
|
@@ -194,7 +194,7 @@ def start_simulation( # pylint: disable=too-many-arguments
|
|
194
194
|
initialized_server.client_manager().register(client=client_proxy)
|
195
195
|
|
196
196
|
# Start training
|
197
|
-
hist =
|
197
|
+
hist = run_fl(
|
198
198
|
server=initialized_server,
|
199
199
|
config=initialized_config,
|
200
200
|
)
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/__init__.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/client/numpy_client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/address.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/constant.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/date.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/grpc.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/logger.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/parameter.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/serde.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/telemetry.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/typing.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/common/version.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/driver/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/driver/driver.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/driver_pb2.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/driver_pb2.pyi
RENAMED
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/fleet_pb2.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/fleet_pb2.pyi
RENAMED
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/node_pb2.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/node_pb2.pyi
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/node_pb2_grpc.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/task_pb2.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/task_pb2.pyi
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/task_pb2_grpc.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/proto/transport_pb2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/__init__.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/client_proxy.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/criterion.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/history.py
RENAMED
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/server.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/server/state/state.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.5.0.dev20230509 → flwr_nightly-1.5.0.dev20230511}/src/py/flwr/simulation/__init__.py
RENAMED
File without changes
|
File without changes
|