fedlab_core.server.handler
¶
Module Contents¶
Classes¶
An abstract class representing handler for parameter server. |
|
Synchronous Parameter Server Handler |
|
Asynchronous ParameterServer Handler |
-
class
fedlab_core.server.handler.
ParameterServerHandler
(model, cuda=False)¶ Bases:
object
An abstract class representing handler for parameter server.
Please make sure that you self-defined server handler class subclasses this class
Example
read sourcecode of
SyncSGDParameterServerHandler
below-
abstract
on_receive
(self)¶ Override this function to define what the server to do when receiving message from client
-
abstract
update
(self, model_list)¶ Override this function to update global model
- Parameters
model_list (list) – a list of model parameters serialized by
ravel_model_params()
-
property
buffer
(self)¶
-
property
model
(self)¶
-
abstract
-
class
fedlab_core.server.handler.
SyncParameterServerHandler
(model, client_num_in_total, cuda=False, select_ratio=1.0, logger_path='server_handler.txt', logger_name='server handler')¶ Bases:
fedlab_core.server.handler.ParameterServerHandler
Synchronous Parameter Server Handler
Backend of synchronous parameter server: this class is responsible for backend computing.
Synchronous parameter server will wait for every client to finish local training process before the next FL round.
- Parameters
model (torch.nn.Module) – Model used in this federation
client_num_in_total (int) – Total number of clients in this federation
cuda (bool) – Use GPUs or not
select_ratio (float) –
select_ratio * client_num
is the number of clients to join every FL round
-
on_receive
(self, sender, message_code, payload) → None¶ Define what parameter server does when receiving a single client’s message
- Parameters
sender (int) – Index of client in distributed
message_code (MessageCode) – Agreements code defined in
MessageCode
classpayload (torch.Tensor) – Serialized model parameters
-
select_clients
(self)¶ Return a list of client rank indices selected randomly
-
start_round
(self)¶
-
class
fedlab_core.server.handler.
AsyncParameterServerHandler
(model, cuda)¶ Bases:
fedlab_core.server.handler.ParameterServerHandler
Asynchronous ParameterServer Handler
Update global model immediately after receiving a ParameterUpdate message paper: https://arxiv.org/abs/1903.03934
- Parameters
model (torch.nn.Module) – Global model in server
cuda (bool) – Use GPUs or not
-
update
(self, model_list)¶ Override this function to update global model
- Parameters
model_list (list) – a list of model parameters serialized by
ravel_model_params()
-
on_receive
(self, sender, message_code, parameter)¶ Override this function to define what the server to do when receiving message from client