flwr-nightly 1.7.0.dev20240116__py3-none-any.whl → 1.7.0.dev20240118__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- flwr/client/app.py +7 -4
- flwr/client/dpfedavg_numpy_client.py +4 -4
- flwr/client/grpc_client/connection.py +7 -4
- flwr/client/grpc_rere_client/connection.py +4 -4
- flwr/client/message_handler/message_handler.py +11 -2
- flwr/client/message_handler/task_handler.py +8 -6
- flwr/client/node_state_tests.py +1 -1
- flwr/client/numpy_client.py +2 -2
- flwr/client/rest_client/connection.py +7 -3
- flwr/client/secure_aggregation/secaggplus_handler.py +6 -6
- flwr/client/typing.py +1 -1
- flwr/common/configsrecord.py +98 -0
- flwr/common/logger.py +14 -0
- flwr/common/metricsrecord.py +96 -0
- flwr/common/parametersrecord.py +110 -0
- flwr/common/recordset.py +8 -18
- flwr/common/recordset_utils.py +87 -0
- flwr/common/retry_invoker.py +1 -0
- flwr/common/serde.py +12 -8
- flwr/common/typing.py +9 -0
- flwr/driver/app.py +5 -3
- flwr/driver/driver.py +3 -3
- flwr/driver/driver_client_proxy.py +24 -15
- flwr/driver/grpc_driver.py +6 -6
- flwr/proto/driver_pb2.py +23 -88
- flwr/proto/fleet_pb2.py +29 -111
- flwr/proto/node_pb2.py +7 -15
- flwr/proto/task_pb2.py +33 -127
- flwr/proto/transport_pb2.py +69 -278
- flwr/server/app.py +9 -3
- flwr/server/driver/driver_servicer.py +4 -4
- flwr/server/fleet/grpc_bidi/flower_service_servicer.py +5 -2
- flwr/server/fleet/grpc_bidi/grpc_bridge.py +9 -6
- flwr/server/fleet/grpc_bidi/grpc_client_proxy.py +4 -1
- flwr/server/fleet/grpc_bidi/grpc_server.py +3 -1
- flwr/server/fleet/grpc_bidi/ins_scheduler.py +7 -4
- flwr/server/fleet/grpc_rere/fleet_servicer.py +2 -2
- flwr/server/fleet/message_handler/message_handler.py +3 -3
- flwr/server/fleet/rest_rere/rest_api.py +1 -1
- flwr/server/state/in_memory_state.py +1 -1
- flwr/server/state/sqlite_state.py +8 -5
- flwr/server/state/state.py +1 -1
- flwr/server/strategy/aggregate.py +8 -8
- flwr/server/strategy/dpfedavg_adaptive.py +1 -1
- flwr/server/strategy/dpfedavg_fixed.py +2 -2
- flwr/server/strategy/fedavg_android.py +0 -2
- flwr/server/strategy/fedmedian.py +1 -1
- flwr/server/strategy/fedxgb_nn_avg.py +9 -2
- flwr/server/strategy/qfedavg.py +1 -1
- flwr/server/utils/validator.py +1 -1
- {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/METADATA +3 -3
- {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/RECORD +55 -51
- {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/entry_points.txt +0 -0
@@ -27,7 +27,7 @@ from flwr.server.client_proxy import ClientProxy
|
|
27
27
|
def aggregate(results: List[Tuple[NDArrays, int]]) -> NDArrays:
|
28
28
|
"""Compute weighted average."""
|
29
29
|
# Calculate the total number of examples used during training
|
30
|
-
num_examples_total = sum(
|
30
|
+
num_examples_total = sum(num_examples for (_, num_examples) in results)
|
31
31
|
|
32
32
|
# Create a list of weights, each multiplied by the related number of examples
|
33
33
|
weighted_weights = [
|
@@ -45,7 +45,7 @@ def aggregate(results: List[Tuple[NDArrays, int]]) -> NDArrays:
|
|
45
45
|
def aggregate_inplace(results: List[Tuple[ClientProxy, FitRes]]) -> NDArrays:
|
46
46
|
"""Compute in-place weighted average."""
|
47
47
|
# Count total examples
|
48
|
-
num_examples_total = sum(
|
48
|
+
num_examples_total = sum(fit_res.num_examples for (_, fit_res) in results)
|
49
49
|
|
50
50
|
# Compute scaling factors for each result
|
51
51
|
scaling_factors = [
|
@@ -95,9 +95,9 @@ def aggregate_krum(
|
|
95
95
|
# For each client, take the n-f-2 closest parameters vectors
|
96
96
|
num_closest = max(1, len(weights) - num_malicious - 2)
|
97
97
|
closest_indices = []
|
98
|
-
for
|
98
|
+
for distance in distance_matrix:
|
99
99
|
closest_indices.append(
|
100
|
-
np.argsort(
|
100
|
+
np.argsort(distance)[1 : num_closest + 1].tolist() # noqa: E203
|
101
101
|
)
|
102
102
|
|
103
103
|
# Compute the score for each client, that is the sum of the distances
|
@@ -202,7 +202,7 @@ def aggregate_bulyan(
|
|
202
202
|
|
203
203
|
def weighted_loss_avg(results: List[Tuple[int, float]]) -> float:
|
204
204
|
"""Aggregate evaluation results obtained from multiple clients."""
|
205
|
-
num_total_evaluation_examples = sum(
|
205
|
+
num_total_evaluation_examples = sum(num_examples for (num_examples, _) in results)
|
206
206
|
weighted_losses = [num_examples * loss for num_examples, loss in results]
|
207
207
|
return sum(weighted_losses) / num_total_evaluation_examples
|
208
208
|
|
@@ -233,9 +233,9 @@ def _compute_distances(weights: List[NDArrays]) -> NDArray:
|
|
233
233
|
"""
|
234
234
|
flat_w = np.array([np.concatenate(p, axis=None).ravel() for p in weights])
|
235
235
|
distance_matrix = np.zeros((len(weights), len(weights)))
|
236
|
-
for i,
|
237
|
-
for j,
|
238
|
-
delta =
|
236
|
+
for i, flat_w_i in enumerate(flat_w):
|
237
|
+
for j, flat_w_j in enumerate(flat_w):
|
238
|
+
delta = flat_w_i - flat_w_j
|
239
239
|
norm = np.linalg.norm(delta)
|
240
240
|
distance_matrix[i, j] = norm**2
|
241
241
|
return distance_matrix
|
@@ -91,7 +91,7 @@ class DPFedAvgAdaptive(DPFedAvgFixed):
|
|
91
91
|
norm_bit_set_count = 0
|
92
92
|
for client_proxy, fit_res in results:
|
93
93
|
if "dpfedavg_norm_bit" not in fit_res.metrics:
|
94
|
-
raise
|
94
|
+
raise KeyError(
|
95
95
|
f"Indicator bit not returned by client with id {client_proxy.cid}."
|
96
96
|
)
|
97
97
|
if fit_res.metrics["dpfedavg_norm_bit"]:
|
@@ -46,11 +46,11 @@ class DPFedAvgFixed(Strategy):
|
|
46
46
|
self.num_sampled_clients = num_sampled_clients
|
47
47
|
|
48
48
|
if clip_norm <= 0:
|
49
|
-
raise
|
49
|
+
raise ValueError("The clipping threshold should be a positive value.")
|
50
50
|
self.clip_norm = clip_norm
|
51
51
|
|
52
52
|
if noise_multiplier < 0:
|
53
|
-
raise
|
53
|
+
raise ValueError("The noise multiplier should be a non-negative value.")
|
54
54
|
self.noise_multiplier = noise_multiplier
|
55
55
|
|
56
56
|
self.server_side_noising = server_side_noising
|
@@ -234,12 +234,10 @@ class FedAvgAndroid(Strategy):
|
|
234
234
|
"""Convert parameters object to NumPy weights."""
|
235
235
|
return [self.bytes_to_ndarray(tensor) for tensor in parameters.tensors]
|
236
236
|
|
237
|
-
# pylint: disable=R0201
|
238
237
|
def ndarray_to_bytes(self, ndarray: NDArray) -> bytes:
|
239
238
|
"""Serialize NumPy array to bytes."""
|
240
239
|
return ndarray.tobytes()
|
241
240
|
|
242
|
-
# pylint: disable=R0201
|
243
241
|
def bytes_to_ndarray(self, tensor: bytes) -> NDArray:
|
244
242
|
"""Deserialize NumPy array from bytes."""
|
245
243
|
ndarray_deserialized = np.frombuffer(tensor, dtype=np.float32)
|
@@ -36,7 +36,7 @@ from .fedavg import FedAvg
|
|
36
36
|
|
37
37
|
|
38
38
|
class FedMedian(FedAvg):
|
39
|
-
"""Configurable
|
39
|
+
"""Configurable FedMedian strategy implementation."""
|
40
40
|
|
41
41
|
def __repr__(self) -> str:
|
42
42
|
"""Compute a string representation of the strategy."""
|
@@ -25,7 +25,7 @@ from logging import WARNING
|
|
25
25
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
26
26
|
|
27
27
|
from flwr.common import FitRes, Scalar, ndarrays_to_parameters, parameters_to_ndarrays
|
28
|
-
from flwr.common.logger import log
|
28
|
+
from flwr.common.logger import log, warn_deprecated_feature
|
29
29
|
from flwr.server.client_proxy import ClientProxy
|
30
30
|
|
31
31
|
from .aggregate import aggregate
|
@@ -33,7 +33,13 @@ from .fedavg import FedAvg
|
|
33
33
|
|
34
34
|
|
35
35
|
class FedXgbNnAvg(FedAvg):
|
36
|
-
"""Configurable FedXgbNnAvg strategy implementation.
|
36
|
+
"""Configurable FedXgbNnAvg strategy implementation.
|
37
|
+
|
38
|
+
Warning
|
39
|
+
-------
|
40
|
+
This strategy is deprecated, but a copy of it is available in Flower Baselines:
|
41
|
+
https://github.com/adap/flower/tree/main/baselines/hfedxgboost.
|
42
|
+
"""
|
37
43
|
|
38
44
|
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
39
45
|
"""Federated XGBoost [Ma et al., 2023] strategy.
|
@@ -41,6 +47,7 @@ class FedXgbNnAvg(FedAvg):
|
|
41
47
|
Implementation based on https://arxiv.org/abs/2304.07537.
|
42
48
|
"""
|
43
49
|
super().__init__(*args, **kwargs)
|
50
|
+
warn_deprecated_feature("`FedXgbNnAvg` strategy")
|
44
51
|
|
45
52
|
def __repr__(self) -> str:
|
46
53
|
"""Compute a string representation of the strategy."""
|
flwr/server/strategy/qfedavg.py
CHANGED
@@ -185,7 +185,7 @@ class QFedAvg(FedAvg):
|
|
185
185
|
hs_ffl = []
|
186
186
|
|
187
187
|
if self.pre_weights is None:
|
188
|
-
raise
|
188
|
+
raise AttributeError("QffedAvg pre_weights are None in aggregate_fit")
|
189
189
|
|
190
190
|
weights_before = self.pre_weights
|
191
191
|
eval_result = self.evaluate(
|
flwr/server/utils/validator.py
CHANGED
{flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: flwr-nightly
|
3
|
-
Version: 1.7.0.
|
3
|
+
Version: 1.7.0.dev20240118
|
4
4
|
Summary: Flower: A Friendly Federated Learning Framework
|
5
5
|
Home-page: https://flower.dev
|
6
6
|
License: Apache-2.0
|
@@ -33,10 +33,10 @@ Classifier: Typing :: Typed
|
|
33
33
|
Provides-Extra: rest
|
34
34
|
Provides-Extra: simulation
|
35
35
|
Requires-Dist: cryptography (>=41.0.2,<42.0.0)
|
36
|
-
Requires-Dist: grpcio (>=1.
|
36
|
+
Requires-Dist: grpcio (>=1.60.0,<2.0.0)
|
37
37
|
Requires-Dist: iterators (>=0.0.2,<0.0.3)
|
38
38
|
Requires-Dist: numpy (>=1.21.0,<2.0.0)
|
39
|
-
Requires-Dist: protobuf (>=
|
39
|
+
Requires-Dist: protobuf (>=4.25.2,<5.0.0)
|
40
40
|
Requires-Dist: pycryptodome (>=3.18.0,<4.0.0)
|
41
41
|
Requires-Dist: pydantic (<2.0.0) ; extra == "simulation"
|
42
42
|
Requires-Dist: ray (==2.6.3) ; extra == "simulation"
|
{flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/RECORD
RENAMED
@@ -1,38 +1,42 @@
|
|
1
1
|
flwr/__init__.py,sha256=6zbcS7z2q-VUdmpFppLH6BacsE-ZFmfq6OvtKNOyYE0,981
|
2
2
|
flwr/client/__init__.py,sha256=2T4enmlE4PsoKiGTvXwBKSlhOjZ7MXRy5oCGNf0UH9Y,1111
|
3
|
-
flwr/client/app.py,sha256=
|
3
|
+
flwr/client/app.py,sha256=AkJXshBH0zKLqkm3dQQ4KYFrwNmLdjzLNZvgzfKiCOc,19243
|
4
4
|
flwr/client/client.py,sha256=LmGguS2YV_BmTG-P3NXvxeljbuJ2d1OkFYRY5pQz-bQ,8198
|
5
|
-
flwr/client/dpfedavg_numpy_client.py,sha256=
|
5
|
+
flwr/client/dpfedavg_numpy_client.py,sha256=0XryFdCMM_RLiNLCr6evLp-6R7ZjeMmRUROIgzRmtmc,7215
|
6
6
|
flwr/client/flower.py,sha256=PPYROFVnu7NEe7sR8XFVbkfvfwecIuQc5-VllPz0LlQ,4049
|
7
7
|
flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1HxivJ8,735
|
8
|
-
flwr/client/grpc_client/connection.py,sha256=
|
8
|
+
flwr/client/grpc_client/connection.py,sha256=WJazRjWZuSLnE4jsGtJ86g9THewbAfspQ-XtmfGR8uQ,5115
|
9
9
|
flwr/client/grpc_rere_client/__init__.py,sha256=avn6W_vHEM_yZEB1S7hCZgnTbXb6ZujqRP_vAzyXu-0,752
|
10
|
-
flwr/client/grpc_rere_client/connection.py,sha256=
|
10
|
+
flwr/client/grpc_rere_client/connection.py,sha256=NtYxwJCucI9RYieU9rVMi5wzrnvLNxhSWYmi5IiWAtc,6660
|
11
11
|
flwr/client/message_handler/__init__.py,sha256=abHvBRJJiiaAMNgeILQbMOa6h8WqMK2BcnvxwQZFpic,719
|
12
|
-
flwr/client/message_handler/message_handler.py,sha256=
|
13
|
-
flwr/client/message_handler/task_handler.py,sha256=
|
12
|
+
flwr/client/message_handler/message_handler.py,sha256=zf6n2itYm7pjapTzEy3tvda3e1YTotIXNxRGX_hlLOg,8393
|
13
|
+
flwr/client/message_handler/task_handler.py,sha256=36g-gP7oH_VDpsjW2P9LH4uzlDkygY8S9FyGxjbSw34,5823
|
14
14
|
flwr/client/middleware/__init__.py,sha256=Eo3JvAV5XqmyRySNqeiw93YNETmmP5ixEOMeBA6ah4w,769
|
15
15
|
flwr/client/middleware/utils.py,sha256=QUghso_SWsKTUPfKwrtBwPyyJoEI9AV9hRY2acu1TYE,1168
|
16
16
|
flwr/client/node_state.py,sha256=3NUHqNokmFAN7Rv0rWIWnoaBKyYH9K3Ir0exGC_nx4M,1749
|
17
|
-
flwr/client/node_state_tests.py,sha256=
|
18
|
-
flwr/client/numpy_client.py,sha256=
|
17
|
+
flwr/client/node_state_tests.py,sha256=SX1kiXQmDP11eJTkaj1BFoKQpP_6XFaMQukT3_sOT6c,1939
|
18
|
+
flwr/client/numpy_client.py,sha256=c9OMP2c61dr_oNy88osWwQjsOyimzJXeldlN34UAo2c,10276
|
19
19
|
flwr/client/rest_client/__init__.py,sha256=ThwOnkMdzxo_UuyTI47Q7y9oSpuTgNT2OuFvJCfuDiw,735
|
20
|
-
flwr/client/rest_client/connection.py,sha256=
|
20
|
+
flwr/client/rest_client/connection.py,sha256=j8BpGRM4mGJrkw7Yncpwk-BJ6KOw0C3PS3tqLfsUUes,11762
|
21
21
|
flwr/client/run_state.py,sha256=d4UmHLt9zMd0sTgnVdRsLgr1QEx0l5PtJ0dPv2NSVVw,867
|
22
22
|
flwr/client/secure_aggregation/__init__.py,sha256=XCDycteBTivym0zwkwqXhFMCAoDoHBZQg5GxdMnFCfA,888
|
23
23
|
flwr/client/secure_aggregation/handler.py,sha256=oRyGCerz92aED7UydYwJ7OFVxUwHqedG3PshHrdZq-Y,1522
|
24
|
-
flwr/client/secure_aggregation/secaggplus_handler.py,sha256=
|
25
|
-
flwr/client/typing.py,sha256=
|
24
|
+
flwr/client/secure_aggregation/secaggplus_handler.py,sha256=2jKtRhoJaVRmMJgJ2v8VRUCw2ko7uhTL2_h8CZVFwZA,18928
|
25
|
+
flwr/client/typing.py,sha256=75vC6dpzv99PLRztPzaGPik2OifFZbgxvHVDMIA_C30,1219
|
26
26
|
flwr/common/__init__.py,sha256=qttep0POwoigzB5pcraZa4YMt9jsCSfeibcrTQMUjIc,2884
|
27
27
|
flwr/common/address.py,sha256=iTAN9jtmIGMrWFnx9XZQl45ZEtQJVZZLYPRBSNVARGI,1882
|
28
|
+
flwr/common/configsrecord.py,sha256=LPEDTFH_5MdfDWcMUcked6rV78JN1lZRuUHioG0EkGk,3854
|
28
29
|
flwr/common/constant.py,sha256=J-BpHv6OFmrA37SeS4En8Nsy7yJdoNJWHCtbdnjIxSc,1120
|
29
30
|
flwr/common/date.py,sha256=UWhBZj49yX9LD4BmatS_ZFZu_-kweGh0KQJ1djyWWH4,891
|
30
31
|
flwr/common/dp.py,sha256=hF45cPElXxcQsh4AoquAyaTrNi0xCrIcKx7xOcV_1XU,1782
|
31
32
|
flwr/common/grpc.py,sha256=qVLB0d6bCuaBRW5YB0vEZXsR7Bo3R2lh4ONiCocqwRI,2270
|
32
|
-
flwr/common/logger.py,sha256=
|
33
|
+
flwr/common/logger.py,sha256=qX_gqEyrmGOH0x_r8uQ1Vskz4fGvEij9asdo4DUOPY8,4135
|
34
|
+
flwr/common/metricsrecord.py,sha256=0N3z6tVUPwgBk7_ECEc5edrT_YrjAwYM-O9HOq_hGw8,3787
|
33
35
|
flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
|
34
|
-
flwr/common/
|
35
|
-
flwr/common/
|
36
|
+
flwr/common/parametersrecord.py,sha256=3ePLwmTqEYxh3A4yjA5-H3kjPpTHH8s1TnAUkOECr8E,4088
|
37
|
+
flwr/common/recordset.py,sha256=OeRcBMGqx9vutWRz1xkujBPHlVpU58R1EcFRHEQrePo,2351
|
38
|
+
flwr/common/recordset_utils.py,sha256=FgNuuAgbxtLgjB1vVmcYsTG8kqIW1ZpmYrcUEKAOH_A,3122
|
39
|
+
flwr/common/retry_invoker.py,sha256=H_hKqKaEI8vZPywWmoAtJYkcUnKhlYc4kV63zRY0kWA,10856
|
36
40
|
flwr/common/secure_aggregation/__init__.py,sha256=29nHIUO2L8-KhNHQ2KmIgRo_4CPkq4LgLCUN0on5FgI,731
|
37
41
|
flwr/common/secure_aggregation/crypto/__init__.py,sha256=dz7pVx2aPrHxr_AwgO5mIiTzu4PcvUxRq9NLBbFcsf8,738
|
38
42
|
flwr/common/secure_aggregation/crypto/shamir.py,sha256=yY35ZgHlB4YyGW_buG-1X-0M-ejXuQzISgYLgC_Z9TY,2792
|
@@ -41,99 +45,99 @@ flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=KAHCEHGSTJ6mCgnC8dT
|
|
41
45
|
flwr/common/secure_aggregation/quantization.py,sha256=appui7GGrkRPsupF59TkapeV4Na_CyPi73JtJ1pimdI,2310
|
42
46
|
flwr/common/secure_aggregation/secaggplus_constants.py,sha256=m5UDo7IgRkMS3yixhzz7DhhAv6VAQMCghglMygSPU_k,1606
|
43
47
|
flwr/common/secure_aggregation/secaggplus_utils.py,sha256=PleDyDu7jHNAfbRoEaoQiOjxG6iMl9yA8rNKYTfnyFw,3155
|
44
|
-
flwr/common/serde.py,sha256=
|
48
|
+
flwr/common/serde.py,sha256=mujIHgxC6HhkUjqI9UHofbHtDZbepdN2nMFUE6FH6Ik,18990
|
45
49
|
flwr/common/telemetry.py,sha256=se_-pHgEWcmN09ChSpTeek72l1UJHf7GbwXBB1KXBjQ,7683
|
46
|
-
flwr/common/typing.py,sha256=
|
50
|
+
flwr/common/typing.py,sha256=bitdkwrDzodeasIYCoevK5z14dyUrrjNM2SZSSKub1Q,4364
|
47
51
|
flwr/common/version.py,sha256=A0MKvyKPrV8wLg0YCAODTqM71v26NEH36c6JYtfgg0o,667
|
48
52
|
flwr/driver/__init__.py,sha256=NQ4KeZ5fP9wdxGjcr2cP41_7TLuuYQ3u4J7GwYtQ488,870
|
49
|
-
flwr/driver/app.py,sha256=
|
50
|
-
flwr/driver/driver.py,sha256
|
51
|
-
flwr/driver/driver_client_proxy.py,sha256=
|
52
|
-
flwr/driver/grpc_driver.py,sha256=
|
53
|
+
flwr/driver/app.py,sha256=tCPnUwq60kAY637htvDSZGIln21OxIVgg0-o8o4ZAGw,7307
|
54
|
+
flwr/driver/driver.py,sha256=S9KsRlpf7j3y6jGaAgu4TwM_AyHlZFhJV-HgfwJKxks,3967
|
55
|
+
flwr/driver/driver_client_proxy.py,sha256=iQmf-5zwWgljC5-RHVf_JtfvxByY5MSDuTlrXo9BiUs,6154
|
56
|
+
flwr/driver/grpc_driver.py,sha256=KlJT_wWVm9xx2xapzC0Kgn1UDnBBem514aaTtzJSlkw,4560
|
53
57
|
flwr/flower/__init__.py,sha256=VlOKQzq4OecSM4Ga2uk1iu2K8mxMc-j1XA0bdhaTeMw,892
|
54
58
|
flwr/proto/__init__.py,sha256=hbY7JYakwZwCkYgCNlmHdc8rtvfoJbAZLalMdc--CGc,683
|
55
|
-
flwr/proto/driver_pb2.py,sha256=
|
59
|
+
flwr/proto/driver_pb2.py,sha256=JHIdjNPTgp6YHD-_lz5ZZFB0VIOR3_GmcaOTN4jndc4,3115
|
56
60
|
flwr/proto/driver_pb2.pyi,sha256=xwl2AqIWn0SwAlg-x5RUQeqr6DC48eywnqmD7gbaaFs,4670
|
57
61
|
flwr/proto/driver_pb2_grpc.py,sha256=qQBRdQUz4k2K4DVO7kSfWHx-62UJ85HaYKnKCr6JcU8,7304
|
58
62
|
flwr/proto/driver_pb2_grpc.pyi,sha256=NpOM5eCrIPcuWdYrZAayQSDvvFp6cDCVflabhmuvMfo,2022
|
59
|
-
flwr/proto/fleet_pb2.py,sha256=
|
63
|
+
flwr/proto/fleet_pb2.py,sha256=8rKQHu6Oa9ki_NG6kRNGtfPPYZp5kKBZhPW696_kn84,3852
|
60
64
|
flwr/proto/fleet_pb2.pyi,sha256=QXYs9M7_dABghdCMfk5Rjf4w0LsZGDeQ1ojH00XaQME,6182
|
61
65
|
flwr/proto/fleet_pb2_grpc.py,sha256=hF1uPaioZzQMRCP9yPlv9LC0mi_DTuhn-IkQJzWIPCs,7505
|
62
66
|
flwr/proto/fleet_pb2_grpc.pyi,sha256=mzhTmBwHa1mQoC5yDnUpdGG4kkdk47AlO2PCKxjMbC8,2183
|
63
|
-
flwr/proto/node_pb2.py,sha256=
|
67
|
+
flwr/proto/node_pb2.py,sha256=1zfXEvgGObglIcaVb4SLFmOcHZvA8eHzEtMFM5A6FYY,1081
|
64
68
|
flwr/proto/node_pb2.pyi,sha256=aX3BHhgXvJE1rvcRnEE_gB-5GcaFQ0SJ88yTE223bjI,751
|
65
69
|
flwr/proto/node_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
66
70
|
flwr/proto/node_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
67
|
-
flwr/proto/task_pb2.py,sha256=
|
71
|
+
flwr/proto/task_pb2.py,sha256=PhD59jZWtEGwJ6wJRl2cC3ZaNS8AxpGrZ65N1DCB6c8,4900
|
68
72
|
flwr/proto/task_pb2.pyi,sha256=vdsSlvMkg9vN-qQsf6HgV_JbbYrBK17f-fkeJo8a55Y,10843
|
69
73
|
flwr/proto/task_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
70
74
|
flwr/proto/task_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
71
|
-
flwr/proto/transport_pb2.py,sha256=
|
75
|
+
flwr/proto/transport_pb2.py,sha256=cURzfpCgZvH7GEvBPLvTYijE3HvhK1MePjINk4xYArk,9781
|
72
76
|
flwr/proto/transport_pb2.pyi,sha256=CZvJRWTU3QWFWLXNFtyLSrSKFatIyMcy-ohzLbQ-G9c,21497
|
73
77
|
flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPcosk,2598
|
74
78
|
flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
|
75
79
|
flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
76
80
|
flwr/server/__init__.py,sha256=SG7XJWnskPZu30VfY5WmXbfYKeb8UFrths4qprAb0yg,1377
|
77
|
-
flwr/server/app.py,sha256=
|
81
|
+
flwr/server/app.py,sha256=2LiZQoxkryBN3KNIlqrbSw7VrbYK-tjHxB6i2OHLHb4,28610
|
78
82
|
flwr/server/client_manager.py,sha256=T8UDSRJBVD3fyIDI7NTAA-NA7GPrMNNgH2OAF54RRxE,6127
|
79
83
|
flwr/server/client_proxy.py,sha256=8ScGDvP3jHbl8DV3hyFID5N5VEVlXn8ZTQXtkdOfssI,2234
|
80
84
|
flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
|
81
85
|
flwr/server/driver/__init__.py,sha256=STB1_DASVEg7Cu6L7VYxTzV7UMkgtBkFim09Z82Dh8I,712
|
82
|
-
flwr/server/driver/driver_servicer.py,sha256=
|
86
|
+
flwr/server/driver/driver_servicer.py,sha256=8JwftxoMMqHPAEgvE2TDDvm4zW2-7xaHYoji5kb6k8k,4553
|
83
87
|
flwr/server/fleet/__init__.py,sha256=C6GCSD5eP5Of6_dIeSe1jx9HnV0icsvWyQ5EKAUHJRU,711
|
84
88
|
flwr/server/fleet/grpc_bidi/__init__.py,sha256=mgGJGjwT6VU7ovC1gdnnqttjyBPlNIcZnYRqx4K3IBQ,735
|
85
89
|
flwr/server/fleet/grpc_bidi/driver_client_manager.py,sha256=179z_IVT_95G7dIMsP9ec0JpoPEA62Eu12YyM-TKsyM,4284
|
86
|
-
flwr/server/fleet/grpc_bidi/flower_service_servicer.py,sha256=
|
87
|
-
flwr/server/fleet/grpc_bidi/grpc_bridge.py,sha256=
|
88
|
-
flwr/server/fleet/grpc_bidi/grpc_client_proxy.py,sha256=
|
89
|
-
flwr/server/fleet/grpc_bidi/grpc_server.py,sha256=
|
90
|
-
flwr/server/fleet/grpc_bidi/ins_scheduler.py,sha256=
|
90
|
+
flwr/server/fleet/grpc_bidi/flower_service_servicer.py,sha256=v1oDksCIphGoTCMbz68DjaTk7Pw89wjGTJUw4rezV1Q,5756
|
91
|
+
flwr/server/fleet/grpc_bidi/grpc_bridge.py,sha256=LSOmabFXAQxKycQOliplKmigbmVwdm-D4CI-hJ0Pav0,6458
|
92
|
+
flwr/server/fleet/grpc_bidi/grpc_client_proxy.py,sha256=MubuEEAZAcKzx9LYAB87B2sjvZWWyQS3RPAJJm1GS4I,4695
|
93
|
+
flwr/server/fleet/grpc_bidi/grpc_server.py,sha256=TY_Z8ComreNNOOKveeUO6eE5hoSuTvx_EWqQl0zRADQ,11779
|
94
|
+
flwr/server/fleet/grpc_bidi/ins_scheduler.py,sha256=fYR7dPRFYuWCZCju03SQJt0boTLEax83qCrp_Ycy5OY,6259
|
91
95
|
flwr/server/fleet/grpc_rere/__init__.py,sha256=bEJOMWbSlqkw-y5ZHtEXczhoSlAxErcRYffmTMQAV8M,758
|
92
|
-
flwr/server/fleet/grpc_rere/fleet_servicer.py,sha256=
|
96
|
+
flwr/server/fleet/grpc_rere/fleet_servicer.py,sha256=tG_t9_Fpbs-K1uT5B6GeLdrQCVcOXAdtqBGg_f7ZVVw,2603
|
93
97
|
flwr/server/fleet/message_handler/__init__.py,sha256=hEY0l61ojH8Iz30_K1btm1HJ6J49iZJSFUsVYqUTw3A,731
|
94
|
-
flwr/server/fleet/message_handler/message_handler.py,sha256=
|
98
|
+
flwr/server/fleet/message_handler/message_handler.py,sha256=_SauWQUO6VCMRRNXDfg3gv2h1FKG7e7p8F-Nj4aY6OM,2823
|
95
99
|
flwr/server/fleet/rest_rere/__init__.py,sha256=VKDvDq5H8koOUztpmQacVzGJXPLEEkL1Vmolxt3mvnY,735
|
96
|
-
flwr/server/fleet/rest_rere/rest_api.py,sha256=
|
100
|
+
flwr/server/fleet/rest_rere/rest_api.py,sha256=c2wMs9Ytx0BprIyPQIFnbLaPXNy_NoCOs72ERRat0z0,5886
|
97
101
|
flwr/server/history.py,sha256=W7PHCFX7dLXrdnaVfl5V4tuzmtxh6zArkWYxVXvTZ1c,4904
|
98
102
|
flwr/server/server.py,sha256=skrNgQp9vlCVHruovlaB0Rh1W7xdH7KqEfVCMZGpK7c,15965
|
99
103
|
flwr/server/state/__init__.py,sha256=ij-7Ms-hyordQdRmGQxY1-nVa4OhixJ0jr7_YDkys0s,1003
|
100
|
-
flwr/server/state/in_memory_state.py,sha256=
|
101
|
-
flwr/server/state/sqlite_state.py,sha256=
|
102
|
-
flwr/server/state/state.py,sha256=
|
104
|
+
flwr/server/state/in_memory_state.py,sha256=kODjcJrvF_I7Oc3UVfsnxPksTD0oas0x91shbJ4IdbY,7893
|
105
|
+
flwr/server/state/sqlite_state.py,sha256=GXstBWmRtqahaKETY1N_-s11_tfgPHG3hJR0qzW4tbw,21301
|
106
|
+
flwr/server/state/state.py,sha256=JtsI92HfdKd8KzBQ9Om7A7xwngDXVxtET2Bk9aQ7nao,5316
|
103
107
|
flwr/server/state/state_factory.py,sha256=91cSB-KOAFM37z7T098WxTkVeKNaAZ_mTI75snn2_tk,1654
|
104
108
|
flwr/server/strategy/__init__.py,sha256=EDTv_lU67VmZ8pRqy5fabQDhq5x4oRiD-KHoXhOIWMs,2096
|
105
|
-
flwr/server/strategy/aggregate.py,sha256=
|
109
|
+
flwr/server/strategy/aggregate.py,sha256=QyRIJtI5gnuY1NbgrcrOvkHxGIxBvApq7d9Y4xl-6W4,13468
|
106
110
|
flwr/server/strategy/bulyan.py,sha256=8GsSVJzRSoSWE2zQUKqC3Z795grdN9xpmc3MSGGXnzM,6532
|
107
|
-
flwr/server/strategy/dpfedavg_adaptive.py,sha256=
|
108
|
-
flwr/server/strategy/dpfedavg_fixed.py,sha256=
|
111
|
+
flwr/server/strategy/dpfedavg_adaptive.py,sha256=Wu0StMixNy-1fIJ3Bo2HcytoDQv5Xe5dCZcrsMTOBdg,4660
|
112
|
+
flwr/server/strategy/dpfedavg_fixed.py,sha256=roWpIRhup30P1tEgijsJGBAPqtLIuJZ9etFeukwKpjU,7004
|
109
113
|
flwr/server/strategy/fault_tolerant_fedavg.py,sha256=veGcehB6rXT_MihNDrD1v5JY-TxJi7fybdDl-OZooDQ,5900
|
110
114
|
flwr/server/strategy/fedadagrad.py,sha256=9yoVdZOFTjQ7DpaVrYLH9ca88WgJVWepld6UXybGQMY,6505
|
111
115
|
flwr/server/strategy/fedadam.py,sha256=Zvqo6oChwB2aDGHeLXHNE74nHGwkFAWODLZ8f6Dtq1g,6763
|
112
116
|
flwr/server/strategy/fedavg.py,sha256=Kup1jfI-IjMhb3pj-gbu-Qrdzp3J4OCOq3_3LKyzQHY,11684
|
113
|
-
flwr/server/strategy/fedavg_android.py,sha256=
|
117
|
+
flwr/server/strategy/fedavg_android.py,sha256=yhAZg7iPGVieAQC3rYLb9hLSoNQjBMl1stxaySpVHCw,9784
|
114
118
|
flwr/server/strategy/fedavgm.py,sha256=xZ045SVLI892U_zCFFVpi1DMzKzzv261Y7wkHVsrQO0,8132
|
115
|
-
flwr/server/strategy/fedmedian.py,sha256=
|
119
|
+
flwr/server/strategy/fedmedian.py,sha256=HpmUkLLXWgmMgQiEK2cG1l5nOd99ykAWdUxV5uUNWqw,2704
|
116
120
|
flwr/server/strategy/fedopt.py,sha256=xqu-7513C8bFBw2qrzvduk9o2mT0sPHNVLKmVbJ3V4U,5242
|
117
121
|
flwr/server/strategy/fedprox.py,sha256=BBmIDoRtDeb3TpigO1beBZ79wIVy2UsVDIDnxktoyas,6862
|
118
122
|
flwr/server/strategy/fedtrimmedavg.py,sha256=p12uA7EN0k_CfYeh513P3m8mH3h14SmR3C_MQ9vw6Sc,5890
|
119
123
|
flwr/server/strategy/fedxgb_bagging.py,sha256=BqtHfdRrLW5AhnBiN_aiECWcgIvgFEzku_76D98vMXg,5895
|
120
124
|
flwr/server/strategy/fedxgb_cyclic.py,sha256=CjlFdy-0lxM4m1O6lYL2498lImPHhxiTkiOvPTXKj24,5423
|
121
|
-
flwr/server/strategy/fedxgb_nn_avg.py,sha256=
|
125
|
+
flwr/server/strategy/fedxgb_nn_avg.py,sha256=tA6X43juce0ShfRgfeNxRIcpSUlgVNwGB8vYoUuNFhI,4047
|
122
126
|
flwr/server/strategy/fedyogi.py,sha256=fG9i1WEdUXTYh5mTmagGLHqc12OogEsj3s3IopwM4ZA,6801
|
123
127
|
flwr/server/strategy/krum.py,sha256=yaYAZw4KOL84nc_PZAp43rBl0pXC0dT6y46sEuZrirA,6285
|
124
|
-
flwr/server/strategy/qfedavg.py,sha256=
|
128
|
+
flwr/server/strategy/qfedavg.py,sha256=s-4C-96PKZiUbwZ9_v1ALAd9GmvucjmeOKETipK7fNo,10150
|
125
129
|
flwr/server/strategy/strategy.py,sha256=g6VoIFogEviRub6G4QsKdIp6M_Ek6GhBhqcdNx5ueUk,7543
|
126
130
|
flwr/server/utils/__init__.py,sha256=RQVbo-bcsVtp_lJBf7dL5w01FbLrr7v3YedeGp5_YMs,908
|
127
131
|
flwr/server/utils/tensorboard.py,sha256=k0G6bqsLx7wfYbH2KtXsDYcOCfyIeE12-hefXA7lZdg,5485
|
128
|
-
flwr/server/utils/validator.py,sha256=
|
132
|
+
flwr/server/utils/validator.py,sha256=b_3ahGkSPn4M3TPYaNiY5DyJmnkQHJsyarccPgrhFos,5704
|
129
133
|
flwr/simulation/__init__.py,sha256=E2eD5FlTmZZ80u21FmWCkacrM7O4mrEHD8iXqeCaBUQ,1278
|
130
134
|
flwr/simulation/app.py,sha256=pbkldpm3Uc9_0M2R5-8Ako26g9WxNhZW4fLJY-4YtJY,13879
|
131
135
|
flwr/simulation/ray_transport/__init__.py,sha256=FsaAnzC4cw4DqoouBCix6496k29jACkfeIam55BvW9g,734
|
132
136
|
flwr/simulation/ray_transport/ray_actor.py,sha256=S_E-7Bk0ONWx12b0ObP3CtzJSEL3yPxpFVcYfkDx6Es,17044
|
133
137
|
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=RziUVY9PmuI8fJEbra-Vk9oWwRxALDZOeF1fAW-a9wg,9430
|
134
138
|
flwr/simulation/ray_transport/utils.py,sha256=e0mkFOgOXSJHSQdiipoggF-DLBXaJZVytx9auQ35fCg,3368
|
135
|
-
flwr_nightly-1.7.0.
|
136
|
-
flwr_nightly-1.7.0.
|
137
|
-
flwr_nightly-1.7.0.
|
138
|
-
flwr_nightly-1.7.0.
|
139
|
-
flwr_nightly-1.7.0.
|
139
|
+
flwr_nightly-1.7.0.dev20240118.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
140
|
+
flwr_nightly-1.7.0.dev20240118.dist-info/METADATA,sha256=qylFcleupNUtA6tHNz1Y-GTgnj2utWRHkETkX9dsLTM,13440
|
141
|
+
flwr_nightly-1.7.0.dev20240118.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
142
|
+
flwr_nightly-1.7.0.dev20240118.dist-info/entry_points.txt,sha256=1uLlD5tIunkzALMfMWnqjdE_D5hRUX_I1iMmOMv6tZI,181
|
143
|
+
flwr_nightly-1.7.0.dev20240118.dist-info/RECORD,,
|
{flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/LICENSE
RENAMED
File without changes
|
File without changes
|
File without changes
|