Mise en œuvre du document d'apprentissage fédéré vanille: apprentissage économe en communication des réseaux profonds à partir de données décentralisées.
Des expériences sont produites sur MNIST, Fashion MNIST et CIFAR10 (IID et non IID). En cas de non-IID, les données entre les utilisateurs peuvent être divisées de manière égale ou inégale.
Étant donné que le but de ces expériences est d'illustrer l'efficacité du paradigme d'apprentissage fédéré, seuls des modèles simples tels que MLP et CNN sont utilisés.
Installez tous les packages à partir des exigences.txt
L'expérience de base forme le modèle de la manière conventionnelle.
python src/baseline_main.py --model=mlp --dataset=mnist --epochs=10
python src/baseline_main.py --model=mlp --dataset=mnist --gpu=0 --epochs=10
L'expérience fédérée consiste à former un modèle global utilisant de nombreux modèles locaux.
python src/federated_main.py --model=cnn --dataset=cifar --gpu=0 --iid=1 --epochs=10
python src/federated_main.py --model=cnn --dataset=cifar --gpu=0 --iid=0 --epochs=10
Vous pouvez modifier les valeurs par défaut des autres paramètres pour simuler différentes conditions. Reportez-vous à la section Options.
Les valeurs par défaut pour divers paramètres analysées à l'expérience sont données dans options.py . Les détails sont donnés certains de ces paramètres:
--dataset: par défaut: 'mnist'. Options: «MNIST», «FMNIST», «CIFAR»--model: par défaut: «mlp». Options: «MLP», «CNN»--gpu: par défaut: aucun (fonctionne sur CPU). Peut également être défini sur l'ID GPU spécifique.--epochs: Nombre de cycles de formation.--lr: taux d'apprentissage défini à 0,01 par défaut.--verbose: sorties de journal détaillées. Activé par défaut, réglé sur 0 pour désactiver.--seed: graine aléatoire. Défaut par défaut sur 1. --iid: distribution des données entre les utilisateurs. Défini par défaut sur IID. Réglé sur 0 pour non-IID.--num_users: nombre d'utilisateurs. La valeur par défaut est 100.--frac: Fraction des utilisateurs à utiliser pour les mises à jour fédérées. La valeur par défaut est 0,1.--local_ep: Nombre d'époques de formation locales dans chaque utilisateur. La valeur par défaut est 10.--local_bs: Taille du lot des mises à jour locales dans chaque utilisateur. La valeur par défaut est 10.--unequal: utilisé dans un réglage non IID. Option pour diviser les données entre les utilisateurs de manière égale ou inégale. Par défaut réglé sur 0 pour les fentes égales. Réglé sur 1 pour des divisions inégales. L'expérience consiste à former un seul modèle de manière conventionnelle.
Paramètres:
Optimizer: SGDLearning Rate: 0,01 Table 1: Test de la précision après une formation pour 10 époques:
| Modèle | Tester l'accordé |
|---|---|
| MLP | 92,71% |
| CNN | 98,42% |
L'expérience consiste à former un modèle global dans le cadre fédéré.
Paramètres fédérés (valeurs par défaut):
Fraction of users (C) : 0,1Local Batch size (B) : 10Local Epochs (E) : 10Optimizer : SGDLearning Rate : 0,01 Table 2: Test de la précision après la formation pour 10 époques mondiales avec:
| Modèle | Iid | Non-IID (égal) |
|---|---|---|
| MLP | 88,38% | 73,49% |
| CNN | 97,28% | 75,94% |