hierarchical#

Package Contents#

ClientConnector

Connect with clients.

ServerConnector

Connect with server.

Scheduler

Middle Topology for hierarchical communication pattern.

class ClientConnector(network: fedlab.core.network.DistNetwork, write_queue: torch.multiprocessing.Queue, read_queue: torch.multiprocessing.Queue, logger: fedlab.utils.Logger = None)#

Bases: Connector

Connect with clients.

This class is a part of middle server which used in hierarchical structure.

Parameters:
  • network (DistNetwork) – Network configuration and interfaces.

  • write_queue (torch.multiprocessing.Queue) – Message queue to write.

  • read_queue (torch.multiprocessing.Queue) – Message queue to read.

  • logger (Logger, optional) – object of Logger. Defaults to None.

run()#

Main Process:

  1. Initialization stage.

  2. FL communication stage.

  3. Shutdown stage. Close network connection.

setup()#

Initialize network connection and necessary setups.

At first, self._network.init_network_connection() is required to be called.

Overwrite this method to implement system setup message communication procedure.

main_loop()#

Define the actions of communication stage.

process_meessage_queue()#

Process message queue

Strategy of processing message from server.

class ServerConnector(network: fedlab.core.network.DistNetwork, write_queue: torch.multiprocessing.Queue, read_queue: torch.multiprocessing.Queue, logger: fedlab.utils.Logger = None)#

Bases: Connector

Connect with server.

this process will act like a client.

This class is a part of middle server which used in hierarchical structure.

Parameters:
  • network (DistNetwork) – Network configuration and interfaces.

  • write_queue (torch.multiprocessing.Queue) – Message queue to write.

  • read_queue (torch.multiprocessing.Queue) – Message queue to read.

  • logger (Logger, optional) – object of Logger. Defaults to None.

run()#

Main Process:

  1. Initialization stage.

  2. FL communication stage.

  3. Shutdown stage. Close network connection.

setup()#

Initialize network connection and necessary setups.

At first, self._network.init_network_connection() is required to be called.

Overwrite this method to implement system setup message communication procedure.

main_loop()#

Define the actions of communication stage.

process_meessage_queue()#

client -> server directly transport.

class Scheduler(net_upper: fedlab.core.network.DistNetwork, net_lower: fedlab.core.network.DistNetwork)#

Middle Topology for hierarchical communication pattern.

Scheduler uses message queues to decouple connector modules.

Parameters:
  • net_upper (DistNetwork) – Distributed network manager of server from upper level.

  • net_lower (DistNetwork) – Distributed network manager of clients from lower level.

run()#