Strategy#

class Strategy[源代码]#

基类: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]][源代码]#

聚合评估结果。

参数:
  • 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]][源代码]#

汇总训练结果。

参数:
  • 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]][源代码]#

配置下一轮评估。

参数:
  • 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]][源代码]#

配置下一轮训练。

参数:
  • 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[源代码]#

评估当前的模型参数。

该函数可用于对模型参数进行集中(即服务器端)评估。

参数:
  • server_round (int) -- 本轮联邦学习。

  • parameters (Parameters) -- 当前(全局)模型参数。

返回:

evaluation_result -- 评估结果,通常是一个元组,包含损失值和一个字典,字典中包含特定任务的指标(如准确率)。

返回类型:

Optional[Tuple[float, Dict[str, Scalar]]]

abstract initialize_parameters(client_manager: ClientManager) Parameters | None[源代码]#

初始化(全局)模型参数。

参数:

client_manager (ClientManager) -- 客户端管理器,用于管理当前连接的所有客户端。

返回:

parameters -- 如果返回参数,服务器将把这些参数视为初始全局模型参数。

返回类型:

Optional[Parameters]