flwr-nightly 1.4.0.dev20230325__tar.gz → 1.4.0.dev20230330__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/PKG-INFO +2 -2
  2. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/pyproject.toml +2 -2
  3. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/setup.py +2 -2
  4. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/simulation/app.py +13 -12
  5. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +5 -5
  6. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/LICENSE +0 -0
  7. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/README.md +0 -0
  8. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/__init__.py +0 -0
  9. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/client/__init__.py +0 -0
  10. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/client/app.py +0 -0
  11. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/client/client.py +0 -0
  12. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  13. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  14. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/client/grpc_client/connection.py +0 -0
  15. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/client/message_handler/__init__.py +0 -0
  16. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  17. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  18. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/client/numpy_client.py +0 -0
  19. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/client/rest_client/__init__.py +0 -0
  20. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/client/rest_client/connection.py +0 -0
  21. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/common/__init__.py +0 -0
  22. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/common/date.py +0 -0
  23. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/common/dp.py +0 -0
  24. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/common/grpc.py +0 -0
  25. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/common/logger.py +0 -0
  26. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/common/parameter.py +0 -0
  27. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/common/serde.py +0 -0
  28. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/common/telemetry.py +0 -0
  29. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/common/typing.py +0 -0
  30. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/common/version.py +0 -0
  31. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/driver/__init__.py +0 -0
  32. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/driver/driver.py +0 -0
  33. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/__init__.py +0 -0
  34. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/driver_pb2.py +0 -0
  35. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/driver_pb2.pyi +0 -0
  36. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
  37. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
  38. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/fleet_pb2.py +0 -0
  39. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  40. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  41. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  42. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/node_pb2.py +0 -0
  43. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/node_pb2.pyi +0 -0
  44. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  45. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  46. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/task_pb2.py +0 -0
  47. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/task_pb2.pyi +0 -0
  48. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  49. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  50. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/transport_pb2.py +0 -0
  51. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  52. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  53. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  54. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/py.typed +0 -0
  55. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/__init__.py +0 -0
  56. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/app.py +0 -0
  57. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/client_manager.py +0 -0
  58. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/client_proxy.py +0 -0
  59. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/criterion.py +0 -0
  60. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/driver/__init__.py +0 -0
  61. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/driver/driver_servicer.py +0 -0
  62. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/fleet/__init__.py +0 -0
  63. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/fleet/fleet_servicer.py +0 -0
  64. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/grpc_server/__init__.py +0 -0
  65. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/grpc_server/driver_client_manager.py +0 -0
  66. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/grpc_server/flower_service_servicer.py +0 -0
  67. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/grpc_server/grpc_bridge.py +0 -0
  68. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/grpc_server/grpc_client_proxy.py +0 -0
  69. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/grpc_server/grpc_server.py +0 -0
  70. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/grpc_server/ins_scheduler.py +0 -0
  71. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/history.py +0 -0
  72. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/rest_server/__init__.py +0 -0
  73. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/rest_server/rest_api.py +0 -0
  74. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/server.py +0 -0
  75. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/state/__init__.py +0 -0
  76. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/state/in_memory_state.py +0 -0
  77. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/state/sqlite_state.py +0 -0
  78. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/state/state.py +0 -0
  79. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/state/state_factory.py +0 -0
  80. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/__init__.py +0 -0
  81. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/aggregate.py +0 -0
  82. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  83. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  84. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  85. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  86. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/fedadam.py +0 -0
  87. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/fedavg.py +0 -0
  88. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  89. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  90. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  91. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/fedopt.py +0 -0
  92. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/fedprox.py +0 -0
  93. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  94. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  95. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/krum.py +0 -0
  96. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  97. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/strategy/strategy.py +0 -0
  98. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/utils/__init__.py +0 -0
  99. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/utils/tensorboard.py +0 -0
  100. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/server/utils/validator.py +0 -0
  101. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/simulation/__init__.py +0 -0
  102. {flwr_nightly-1.4.0.dev20230325 → flwr_nightly-1.4.0.dev20230330}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.4.0.dev20230325
3
+ Version: 1.4.0.dev20230330
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.dev
6
6
  License: Apache-2.0
@@ -44,7 +44,7 @@ Requires-Dist: importlib-metadata (>=4.0.0,<5.0.0) ; python_version < "3.8"
44
44
  Requires-Dist: iterators (>=0.0.2,<0.0.3)
45
45
  Requires-Dist: numpy (>=1.21.0,<2.0.0)
46
46
  Requires-Dist: protobuf (>=3.19.0,<4.0.0)
47
- Requires-Dist: ray[default] (==2.3.0) ; extra == "simulation"
47
+ Requires-Dist: ray[default] (>=2.3.0,<3.0.0) ; extra == "simulation"
48
48
  Requires-Dist: requests (>=2.28.2,<3.0.0) ; extra == "rest"
49
49
  Requires-Dist: starlette (>=0.25.0,<0.26.0)
50
50
  Requires-Dist: uvicorn[standard] (>=0.20.0,<0.21.0) ; extra == "rest"
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "flwr-nightly"
7
- version = "1.4.0-dev20230325"
7
+ version = "1.4.0-dev20230330"
8
8
  description = "Flower: A Friendly Federated Learning Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.dev>"]
@@ -58,7 +58,7 @@ protobuf = "^3.19.0"
58
58
  importlib-metadata = { version = "^4.0.0", markers = "python_version < '3.8'" }
59
59
  iterators = "^0.0.2"
60
60
  # Optional dependencies (VCE)
61
- ray = { extras = ["default"], version = "==2.3.0", optional = true }
61
+ ray = { extras = ["default"], version = "^2.3.0", optional = true }
62
62
  # Optional dependencies (REST transport layer)
63
63
  requests = { version = "^2.28.2", optional = true }
64
64
  fastapi = { version = "^0.92.0", optional = true }
@@ -38,7 +38,7 @@ extras_require = \
38
38
  'rest': ['requests>=2.28.2,<3.0.0',
39
39
  'fastapi>=0.92.0,<0.93.0',
40
40
  'uvicorn[standard]>=0.20.0,<0.21.0'],
41
- 'simulation': ['ray[default]==2.3.0'],
41
+ 'simulation': ['ray[default]>=2.3.0,<3.0.0'],
42
42
  'xgboost': ['xgboost>=1.6.2,<2.0.0']}
43
43
 
44
44
  entry_points = \
@@ -49,7 +49,7 @@ entry_points = \
49
49
 
50
50
  setup_kwargs = {
51
51
  'name': 'flwr-nightly',
52
- 'version': '1.4.0.dev20230325',
52
+ 'version': '1.4.0.dev20230330',
53
53
  'description': 'Flower: A Friendly Federated Learning Framework',
54
54
  '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
55
  'author': 'The Flower Authors',
@@ -21,7 +21,7 @@ from typing import Any, Callable, Dict, List, Optional
21
21
 
22
22
  import ray
23
23
 
24
- from flwr.client.client import Client
24
+ 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
@@ -38,7 +38,7 @@ Invalid Arguments in method:
38
38
 
39
39
  `start_simulation(
40
40
  *,
41
- client_fn: Callable[[str], Client],
41
+ client_fn: Callable[[str], ClientLike],
42
42
  num_clients: Optional[int] = None,
43
43
  clients_ids: Optional[List[str]] = None,
44
44
  client_resources: Optional[Dict[str, float]] = None,
@@ -61,7 +61,7 @@ REASON:
61
61
 
62
62
  def start_simulation( # pylint: disable=too-many-arguments
63
63
  *,
64
- client_fn: Callable[[str], Client],
64
+ client_fn: Callable[[str], ClientLike],
65
65
  num_clients: Optional[int] = None,
66
66
  clients_ids: Optional[List[str]] = None,
67
67
  client_resources: Optional[Dict[str, float]] = None,
@@ -76,16 +76,17 @@ def start_simulation( # pylint: disable=too-many-arguments
76
76
 
77
77
  Parameters
78
78
  ----------
79
- client_fn : Callable[[str], Client]
79
+ client_fn : Callable[[str], ClientLike]
80
80
  A function creating client instances. The function must take a single
81
- str argument called `cid`. It should return a single client instance.
82
- Note that the created client instances are ephemeral and will often be
83
- destroyed after a single method invocation. Since client instances are
84
- not long-lived, they should not attempt to carry state over method
85
- invocations. Any state required by the instance (model, dataset,
86
- hyperparameters, ...) should be (re-)created in either the call to
87
- `client_fn` or the call to any of the client methods (e.g., load
88
- evaluation data in the `evaluate` method itself).
81
+ str argument called `cid`. It should return a single client instance
82
+ of type ClientLike. Note that the created client instances
83
+ are ephemeral and will often be destroyed after a single method
84
+ invocation. Since client instances are not long-lived, they should not
85
+ attempt to carry state over method invocations. Any state required by
86
+ the instance (model, dataset,hyperparameters, ...) should be
87
+ (re-)created in either the call to `client_fn` or the call to any of
88
+ the client methods (e.g., load evaluation data in the `evaluate`
89
+ method itself).
89
90
  num_clients : Optional[int]
90
91
  The total number of clients in this simulation. This must be set if
91
92
  `clients_ids` is not set and vice-versa.
@@ -15,7 +15,7 @@
15
15
  """Ray-based Flower ClientProxy implementation."""
16
16
 
17
17
 
18
- from logging import DEBUG
18
+ from logging import ERROR
19
19
  from typing import Callable, Dict, Optional, cast
20
20
 
21
21
  import ray
@@ -52,7 +52,7 @@ class RayClientProxy(ClientProxy):
52
52
  try:
53
53
  res = ray.get(future_get_properties_res, timeout=timeout)
54
54
  except Exception as ex:
55
- log(DEBUG, ex)
55
+ log(ERROR, ex)
56
56
  raise ex
57
57
  return cast(
58
58
  common.GetPropertiesRes,
@@ -69,7 +69,7 @@ class RayClientProxy(ClientProxy):
69
69
  try:
70
70
  res = ray.get(future_paramseters_res, timeout=timeout)
71
71
  except Exception as ex:
72
- log(DEBUG, ex)
72
+ log(ERROR, ex)
73
73
  raise ex
74
74
  return cast(
75
75
  common.GetParametersRes,
@@ -84,7 +84,7 @@ class RayClientProxy(ClientProxy):
84
84
  try:
85
85
  res = ray.get(future_fit_res, timeout=timeout)
86
86
  except Exception as ex:
87
- log(DEBUG, ex)
87
+ log(ERROR, ex)
88
88
  raise ex
89
89
  return cast(
90
90
  common.FitRes,
@@ -101,7 +101,7 @@ class RayClientProxy(ClientProxy):
101
101
  try:
102
102
  res = ray.get(future_evaluate_res, timeout=timeout)
103
103
  except Exception as ex:
104
- log(DEBUG, ex)
104
+ log(ERROR, ex)
105
105
  raise ex
106
106
  return cast(
107
107
  common.EvaluateRes,