Strategy¶
- class Strategy[source]¶
Bases:
ABC
服务器策略实现的抽象基类。
Methods
aggregate_evaluate
(server_round, results, ...)聚合评估结果。
aggregate_fit
(server_round, results, failures)汇总训练结果。
configure_evaluate
(server_round, parameters, ...)配置下一轮评估。
configure_fit
(server_round, parameters, ...)配置下一轮训练。
evaluate
(server_round, parameters)评估当前的模型参数。
initialize_parameters
(client_manager)初始化(全局)模型参数。
- abstract aggregate_evaluate(server_round: int, results: list[tuple[ClientProxy, EvaluateRes]], failures: list[tuple[ClientProxy, EvaluateRes] | BaseException]) tuple[float | None, dict[str, bool | bytes | float | int | str]] [source]¶
聚合评估结果。
- 参数:
server_round (int) -- 本轮联邦学习。
results (List[Tuple[ClientProxy, FitRes]]) -- 从先前选定和配置的客户端进行的成功更新。每一对`(ClientProxy, FitRes)`都是来自先前选定客户端的一次成功更新。但并非所有先前选定的客户机都一定包含在此列表中:客户机可能会退出,不提交结果。对于每个没有提交更新的客户端,failures`中都应该有一个`Exception。
failures (List[Union[Tuple[ClientProxy, EvaluateRes], BaseException]]) -- 服务器等待客户端更新时发生的异常。
- 返回:
aggregation_result -- 汇总的评估结果。聚合通常使用某种加权平均值。
- 返回类型:
Tuple[Optional[float], Dict[str, Scalar]]
- abstract aggregate_fit(server_round: int, results: list[tuple[ClientProxy, FitRes]], failures: list[tuple[ClientProxy, FitRes] | BaseException]) tuple[Parameters | None, dict[str, bool | bytes | float | int | str]] [source]¶
汇总训练结果。
- 参数:
server_round (int) -- 本轮联邦学习。
results (List[Tuple[ClientProxy, FitRes]]) -- 来自先前选定和配置的客户端的成功更新。每一对`(ClientProxy, FitRes)`都构成先前选定的客户端之一的一次成功更新。但并非所有先前选定的客户机都一定包含在此列表中:客户机可能会退出,不提交结果。对于每个没有提交更新的客户端,"失败 "中都应该有一个 "异常"。
failures (List[Union[Tuple[ClientProxy, FitRes], BaseException]]) -- 服务器等待客户端更新时发生的异常。
- 返回:
parameters -- 如果返回参数,那么服务器将把这些参数作为新的全局模型参数(即用本方法返回的参数替换之前的参数)。如果返回 "无"(例如,因为只有失败而没有可行的结果),那么服务器将不再更新之前的模型参数,本轮收到的更新将被丢弃,全局模型参数保持不变。
- 返回类型:
Tuple[Optional[Parameters], Dict[str, Scalar]]
- abstract configure_evaluate(server_round: int, parameters: Parameters, client_manager: ClientManager) list[tuple[ClientProxy, EvaluateIns]] [source]¶
配置下一轮评估。
- 参数:
server_round (int) -- 本轮联邦学习。
parameters (Parameters) -- 当前(全局)模型参数。
client_manager (ClientManager) -- 客户端管理器,用于管理当前连接的所有客户端。
- 返回:
evaluate_configuration -- 一个元组列表。列表中的每个元组都标识了一个`ClientProxy`和该特定`ClientProxy`的`EvaluateIns`。如果某个特定的 ClientProxy 未包含在此列表中,则表示该 ClientProxy 将不参与下一轮联合评估。
- 返回类型:
List[Tuple[ClientProxy, EvaluateIns]]
- abstract configure_fit(server_round: int, parameters: Parameters, client_manager: ClientManager) list[tuple[ClientProxy, FitIns]] [source]¶
配置下一轮训练。
- 参数:
server_round (int) -- 本轮联邦学习。
parameters (Parameters) -- 当前(全局)模型参数。
client_manager (ClientManager) -- 客户端管理器,用于管理当前连接的所有客户端。
- 返回:
fit_configuration -- 一个元组列表。列表中的每个元组都标识了一个`ClientProxy`和该特定`ClientProxy`的`FitIns'。如果某个特定的`ClientProxy`不在此列表中,则表示该`ClientProxy`将不参加下一轮联合学习。
- 返回类型:
List[Tuple[ClientProxy, FitIns]]
- abstract evaluate(server_round: int, parameters: Parameters) tuple[float, dict[str, bool | bytes | float | int | str]] | None [source]¶
评估当前的模型参数。
该函数可用于对模型参数进行集中(即服务器端)评估。
- 参数:
server_round (int) -- 本轮联邦学习。
parameters (Parameters) -- 当前(全局)模型参数。
- 返回:
evaluation_result -- 评估结果,通常是一个元组,包含损失值和一个字典,字典中包含特定任务的指标(如准确率)。
- 返回类型:
Optional[Tuple[float, Dict[str, Scalar]]]
- abstract initialize_parameters(client_manager: ClientManager) Parameters | None [source]¶
初始化(全局)模型参数。
- 参数:
client_manager (ClientManager) -- 客户端管理器,用于管理当前连接的所有客户端。
- 返回:
parameters -- 如果返回参数,服务器将把这些参数视为初始全局模型参数。
- 返回类型:
Optional[Parameters]