DITTO

Implementation of the DITTO [Ditto21] algorithm.

References

[Ditto21]

Tian Li, Shengyuan Hu, Ahmad Beirami, and Virginia Smith. Ditto: Fair and Robust Federated Learning Through Personalization. In ICML (2021). URL: https://arxiv.org/abs/2012.04221

Classes included in fluke.algorithms.ditto

Classes

class fluke.algorithms.ditto.PerturbedGradientDescent(params: Iterator[Parameter], lr: float = 0.01, lam: float = 0.0, **kwargs: dict[str, Any])[source]

Bases: Optimizer

class fluke.algorithms.ditto.DittoClient(index: int, model: Module, train_set: FastDataLoader, test_set: FastDataLoader, optimizer_cfg: OptimizerConfigurator, loss_fn: Module, local_epochs: int = 3, fine_tuning_epochs: int = 0, clipping: float = 0, tau: int = 3, lam: float = 0.1, **kwargs: dict[str, Any])[source]

Bases: PFLClient

class fluke.algorithms.ditto.Ditto(n_clients: int, data_splitter: DataSplitter, hyper_params: DDict | dict[str, Any], **kwargs: dict[str, Any])[source]

Bases: PersonalizedFL