start_simulation#

start_simulation(*, client_fn: ~typing.Callable[[str], ~flwr.client.client.Client], num_clients: int | None = None, clients_ids: ~typing.List[str] | None = None, client_resources: ~typing.Dict[str, float] | None = None, server: ~flwr.server.server.Server | None = None, config: ~flwr.server.server_config.ServerConfig | None = None, strategy: ~flwr.server.strategy.strategy.Strategy | None = None, client_manager: ~flwr.server.client_manager.ClientManager | None = None, ray_init_args: ~typing.Dict[str, ~typing.Any] | None = None, keep_initialised: bool | None = False, actor_type: ~typing.Type[~flwr.simulation.ray_transport.ray_actor.VirtualClientEngineActor] = <flwr.simulation.ray_transport.ray_actor.ActorClass(ClientAppActor) object>, actor_kwargs: ~typing.Dict[str, ~typing.Any] | None = None, actor_scheduling: str | ~ray.util.scheduling_strategies.NodeAffinitySchedulingStrategy = 'DEFAULT') History[源代码]#

启动基于 Ray 的Flower模拟服务器。

参数:
  • client_fn (ClientFn) -- 创建客户端实例的函数。该函数必须接受一个名为 cidstr 参数。它应返回一个 Client 类型的客户端实例。请注意,创建的客户端实例是短暂的,通常在调用一个方法后就会被销毁。由于客户机实例不是长期存在的,它们不应试图在方法调用时携带状态数据。实例所需的任何状态数据(模型、数据集、超参数......)都应在调用 client_fn 或任何客户端方法(例如,在 evaluate 方法中加载评估数据)时(重新)创建。

  • num_clients (Optional[int]) -- 本次模拟的客户总数。如果未设置 clients_ids,则必须设置该参数,反之亦然。

  • clients_ids (Optional[List[str]]) -- 列出每个客户的 client_id。只有在未设置 num_clients 时才需要这样做。同时设置`num_clients`和`clients_ids`,且`len(clients_ids)`不等于`num_clients`,会产生错误。

  • client_resources (Optional[Dict[str, float]] (default: {"num_cpus": 1, "num_gpus": 0.0})) -- CPU and GPU resources for a single client. Supported keys are num_cpus and num_gpus. To understand the GPU utilization caused by num_gpus, as well as using custom resources, please consult the Ray documentation.

  • server (Optional[flwr.server.Server] (default: None).) -- 抽象基类 flwr.server.Server`的实现。如果没有提供实例,`start_server 将创建一个。

  • config (ServerConfig (default: None).) -- 目前支持的值有:`num_rounds`(int,默认值:1)和以秒为单位的`round_timeout`(float,默认值:无)。

  • strategy (Optional[flwr.server.Strategy] (default: None)) -- 抽象基类 flwr.server.strategy 的实现。如果没有提供策略,start_server 将使用 flwr.server.strategy.FedAvg

  • client_manager (Optional[flwr.server.ClientManager] (default: None)) -- 抽象基类 flwr.server.ClientManager 的实现。如果没有提供实现,start_simulation 将使用 flwr.server.client_manager.SimpleClientManager

  • ray_init_args (Optional[Dict[str, Any]] (default: None)) -- 可选字典,包含调用 ray.init 时的参数。如果 ray_init_args 为 None(默认值),则将使用以下默认参数初始化 Ray: { "ignore_reinit_error": True, "include_dashboard": False } 可以使用空字典(ray_init_args={})来防止向 ray.init 传递任何参数。

  • keep_initialised (Optional[bool] (default: False)) -- 设为 True 可在 ray.is_initialized()=True 情况下阻止 ray.shutdown()

  • actor_type (VirtualClientEngineActor (default: ClientAppActor)) -- Optionally specify the type of actor to use. The actor object, which persists throughout the simulation, will be the process in charge of executing a ClientApp wrapping input argument client_fn.

  • actor_kwargs (Optional[Dict[str, Any]] (default: None)) -- 如果您想创建自己的 Actor 类,可能需要传递一些输入参数。为此,您可以使用本字典。

  • actor_scheduling (Optional[Union[str, NodeAffinitySchedulingStrategy]]) -- (默认:"DEFAULT")可选字符串("DEFAULT "或 "SPREAD"),供 VCE 选择将行为体放置在哪个节点上。如果你是需要更多控制权的高级用户,可以使用低级调度策略将actor固定到特定计算节点(例如,通过 NodeAffinitySchedulingStrategy)。请注意,这是一项高级功能。有关详细信息,请参阅 Ray 文档:https://docs.ray.io/en/latest/ray-core/scheduling/index.html

返回:

hist -- 包含训练指标的对象。

返回类型:

flwr.server.history.History