nvflare.app_common.workflows.model_controller module¶
- class ModelController(persistor_id='persistor', ignore_result_error: bool = False, allow_empty_global_weights: bool = False, task_check_period: float = 0.5)[source]¶
Bases:
Controller
,FLComponentWrapper
,ABC
FLModel based controller.
- Parameters:
persistor_id (str, optional) – ID of the persistor component. Defaults to “persistor”.
ignore_result_error (bool, optional) – whether this controller can proceed if client result has errors. Defaults to False.
allow_empty_global_weights (bool, optional) – whether to allow empty global weights. Some pipelines can have empty global weights at first round, such that clients start training from scratch without any global info. Defaults to False.
task_check_period (float, optional) – interval for checking status of tasks. Defaults to 0.5.
- broadcast_model(task_name: str = 'train', data: FLModel | None = None, targets: List[Client] | List[str] | None = None, timeout: int = 0, wait_time_after_min_received: int = 10, blocking: bool = True, callback: Callable[[FLModel], None] | None = None) List [source]¶
Send a task with data to a list of targets.
- Parameters:
task_name (str, optional) – name of the task. Defaults to “train”.
data (FLModel, optional) – FLModel to be sent to clients. If no data is given, send empty FLModel.
targets (List[str], optional) – the list of target client names or None (all clients). Defaults to None.
timeout (int, optional) – time to wait for clients to perform task. Defaults to 0, i.e., never time out.
wait_time_after_min_received (int, optional) – time to wait after minimum number of clients responses has been received. Defaults to 10.
blocking (bool, optional) – whether to block to wait for task result. Defaults to True.
callback (Callable[[FLModel], None], optional) – callback when a result is received, only called when blocking=False. Defaults to None.
- Returns:
List[FLModel] if blocking=True else None
- control_flow(abort_signal: Signal, fl_ctx: FLContext) None [source]¶
This is the control logic for the RUN.
NOTE: this is running in a separate thread, and its life is the duration of the RUN.
- Parameters:
fl_ctx – the FL context
abort_signal – the abort signal. If triggered, this method stops waiting and returns to the caller.
- process_result_of_unknown_task(client: Client, task_name: str, client_task_id: str, result: Shareable, fl_ctx: FLContext) None [source]¶
Process result when no task is found for it.
This is called when a result submission is received from a client, but no standing task can be found for it (from the task queue)
This could happen when: - the client’s submission is too late - the task is already completed - the Controller lost the task, e.g. the Server is restarted
- Parameters:
client – the client that the result comes from
task_name – the name of the task
client_task_id – ID of the task
result – the result from the client
fl_ctx – the FL context that comes with the client’s submission
- abstract run()[source]¶
Main run routine called by the Controller’s control_flow to execute the workflow.
Returns: None.
- start_controller(fl_ctx: FLContext) None [source]¶
Starts the controller.
This method is called at the beginning of the RUN.
- Parameters:
fl_ctx – the FL context. You can use this context to access services provided by the
example (framework. For) –
your (you can get Command Register from it and register) –
modules. (admin command) –
- stop_controller(fl_ctx: FLContext)[source]¶
Stops the controller.
This method is called right before the RUN is ended.
- Parameters:
fl_ctx – the FL context. You can use this context to access services provided by the
example (framework. For) –
your (you can get Command Register from it and unregister) –
modules. (admin command) –