Skip to content

split/rework clients #723

@tharvik

Description

@tharvik

there is currently a mix between a Client communicating with the server and Clients training on a given task.

  • create a new dedicated ServerClient which can list tasks and upon joining one returns a specific DecentralizedClient or FederatedClient
    • allow for clearer path on where the model is created
    • allow to have a varied set of Task as this would be the only way to get theses (see split default tasks from core #647)
    • separation of concerns, what else
  • DecentralizedClient and FederatedClient would be split in multiple clients
    • {Decentralized,Federated}TrainingClient which only do the training
    • SecureAggregatorClient for secure aggregation (see aggregator rework #722)
    • allows for more "local" messaging and general clearer names of messages/fields
  • straighten up client usage by avoiding onRound* callbacks indirections
  • make it dumber
    • should not wrap an Aggregator
    • simply expose network calls, such as sendLocalWeights(weights: WeightsContainer) & receiveNetworkWeights*(): AsyncGenerator<WeightsContainer>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions