Config

This module exposes the pre-configurations of the Payloads implementations. Each configuration contains the instance of the related payload. In this way, it is easy to make sure the CentralNode and the Node are using the same compression scheme.

BaseConfig

Fed.Config.BaseConfigType
BaseConfig(
    serverurl::String,
    num_comm_rounds::Int,
    fraction_clients::Float32,
    num_total_clients::Int
)

Part of the configuration which are common to any type of configuration.

source

VanillaConfig

Fed.Config.VanillaConfigType
VanillaConfig(base::BaseConfig) <: Configuration

Configuration for the baseline, where no compression is applied. The raw data are sent over the network. This configuration instanciates a VanillaPayloadSerde.

source

QuantizedConfig

Fed.Config.QuantizedConfigType
QuantizedConfig{T <: Unsigned}(base::BaseConfig) <: Configuration

Configuration for compression through quantization. The quantization type needs to be speficied when the configuration is instanciated. This configuration instanciates a QuantizedPayloadSerde.

source

QDiffConfig

Fed.Config.QDiffConfigType
QDiffConfig{T <: Unsigned}(
    base::BaseConfig,
    chunksize::Int,
    is_client::Bool
) <: Configuration

Apply the same quantization algorithm used by QuantizedConfig, but also further reduces the size of the paylaod by adding client-side "diff- deduplication", where unchanged chunks of data are not sent back to the server. This configuration instanciates a QDiffPayloadSerde.

source

GDConfig

Fed.Config.GDConfigType
GDConfig{T <: Unsigned}(
    base::BaseConfig,
    chunksize::Int,
    fingerprint::Function,
    msbsize::T,
    store_host::String,
    store_port::Int,
    is_client::Bool
) <: Configuration

Compress the payload by using a GD Store, producing a generally deduplicated GDFile which are exchanged between the clients and the server. This configuration instanciates a GDPayloadSerde and is making use of the GD.jl library to handle the generalized deduplication logic.

source