fedlab_core.server.handler

Module Contents

Classes

ParameterServerHandler

An abstract class representing handler for parameter server.

SyncParameterServerHandler

Synchronous Parameter Server Handler

AsyncParameterServerHandler

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)
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 class

  • payload (torch.Tensor) – Serialized model parameters

select_clients(self)

Return a list of client rank indices selected randomly

is_updated(self)bool
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
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