Implementierung des Lernpapiers von Vanilla Federated: Kommunikationsbewertetes Lernen von tiefen Netzwerken aus dezentralen Daten.
Experimente werden an MNIST, Mode MNIST und CIFAR10 (sowohl IID als auch Nicht-IID) produziert. Im Falle von Nicht-IID können die Daten unter den Benutzern gleich oder ungleich aufgeteilt werden.
Da der Zweck dieser Experimente darin besteht, die Wirksamkeit des föderierten Lernparadigmas zu veranschaulichen, werden nur einfache Modelle wie MLP und CNN verwendet.
Installieren Sie alle Pakete von Anforderungen.txt
Das Baseline -Experiment trainiert das Modell auf herkömmliche Weise.
python src/baseline_main.py --model=mlp --dataset=mnist --epochs=10
python src/baseline_main.py --model=mlp --dataset=mnist --gpu=0 --epochs=10
Das Federated Experiment beinhaltet das Training eines globalen Modells mit vielen lokalen Modellen.
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
Sie können die Standardwerte anderer Parameter ändern, um verschiedene Bedingungen zu simulieren. Siehe Abschnitt Optionen.
Die Standardwerte für verschiedene an das Experiment analysierte Parameter sind in options.py angegeben.py. Details werden einige dieser Parameter angegeben:
--dataset: Standard: 'Mnist'. Optionen: 'Mnist', 'fmnist', 'cifar' '--model: Standard: 'MLP'. Optionen: 'MLP', 'CNN'--gpu: Standard: Keine (läuft auf CPU). Kann auch auf die spezifische GPU -ID eingestellt werden.--epochs: Anzahl der Trainingsrunden.--lr: Lernrate standardmäßig auf 0,01 festgelegt.--verbose: Detaillierte Protokollausgänge. Standardmäßig aktiviert, auf 0 auf Deaktivierung eingestellt.--seed: Zufälliger Samen. Standardeinstellung auf 1. --iid: Datenverteilung unter den Benutzern. Standardeinstellung auf IID. Auf 0 für Nicht-IID einstellen.--num_users: Anzahl der Benutzer. Standard ist 100.--frac: Bruchteil der Benutzer, die für Verbundaktualisierungen verwendet werden sollen. Die Standardeinstellung ist 0,1.--local_ep: Anzahl der lokalen Trainings-Epochen in jedem Benutzer. Standard ist 10.--local_bs: Stapelgröße der lokalen Updates in jedem Benutzer. Standard ist 10.--unequal: Wird in der Nicht-IID-Einstellung verwendet. Option, die Daten unter den Benutzern gleich oder ungleich zu teilen. Standardeinstellung auf 0 für gleiche Spaltungen. Für ungleiche Spaltungen auf 1 einstellen. Das Experiment beinhaltet das Training eines einzelnen Modells auf herkömmliche Weise.
Parameter:
Optimizer: SGDLearning Rate: 0,01 Table 1: Testgenauigkeit nach dem Training für 10 Epochen:
| Modell | Test ACC |
|---|---|
| MLP | 92,71% |
| CNN | 98,42% |
Das Experiment beinhaltet das Training eines globalen Modells in der Föderation.
Föderierte Parameter (Standardwerte):
Fraction of users (C) : 0.1Local Batch size (B) : 10Local Epochs (E) : 10Optimizer : SGDLearning Rate : 0.01 Table 2: Testgenauigkeit nach dem Training für 10 globale Epochen mit::
| Modell | Iid | Nicht iid (gleich) |
|---|---|---|
| MLP | 88,38% | 73,49% |
| CNN | 97,28% | 75,94% |