Implementasi Makalah Pembelajaran Federasi Vanilla: Pembelajaran yang hemat komunikasi dari jaringan dalam dari data yang terdesentralisasi.
Eksperimen diproduksi pada MNIST, Fashion MNIST dan CIFAR10 (baik IID dan Non-IID). Dalam hal non-IID, data di antara pengguna dapat dibagi secara merata atau tidak merata.
Karena tujuan dari eksperimen ini adalah untuk menggambarkan efektivitas paradigma pembelajaran federasi, hanya model sederhana seperti MLP dan CNN yang digunakan.
Instal semua paket dari persyaratan.txt
Eksperimen dasar melatih model dengan cara konvensional.
python src/baseline_main.py --model=mlp --dataset=mnist --epochs=10
python src/baseline_main.py --model=mlp --dataset=mnist --gpu=0 --epochs=10
Eksperimen federasi melibatkan pelatihan model global menggunakan banyak model lokal.
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
Anda dapat mengubah nilai default dari parameter lain untuk mensimulasikan kondisi yang berbeda. Lihat bagian Opsi.
Nilai default untuk berbagai paramter yang diuraikan ke percobaan diberikan dalam options.py . Detail diberikan beberapa parameter tersebut:
--dataset: default: 'mnist'. Opsi: 'mnist', 'fmnist', 'cifar'--model: Default: 'MLP'. Opsi: 'MLP', 'CNN'--gpu: Default: Tidak ada (berjalan di CPU). Dapat juga diatur ke ID GPU tertentu.--epochs: Jumlah putaran pelatihan.--lr: Tingkat pembelajaran diatur ke 0,01 secara default.--verbose: Output log terperinci. Diaktifkan secara default, diatur ke 0 untuk menonaktifkan.--seed: Seed acak. Set Default ke 1. --iid: Distribusi data di antara pengguna. Diatur default ke IID. Diatur ke 0 untuk non-IID.--num_users: Jumlah pengguna. Default adalah 100.--frac: Fraksi pengguna yang akan digunakan untuk pembaruan federasi. Default adalah 0,1.--local_ep: Jumlah zaman pelatihan lokal di setiap pengguna. Default adalah 10.--local_bs: Ukuran batch pembaruan lokal di setiap pengguna. Default adalah 10.--unequal: Digunakan dalam pengaturan non-IID. Opsi untuk membagi data di antara pengguna secara setara atau tidak sama. Diatur default ke 0 untuk pemisahan yang sama. Diatur ke 1 untuk pemisahan yang tidak setara. Eksperimen ini melibatkan pelatihan model tunggal dengan cara konvensional.
Parameter:
Optimizer: :: SGDLearning Rate: 0,01 Table 1: Akurasi tes setelah pelatihan untuk 10 zaman:
| Model | Tes Acc |
|---|---|
| MLP | 92,71% |
| CNN | 98,42% |
Eksperimen ini melibatkan pelatihan model global dalam pengaturan federasi.
Parameter federasi (nilai default):
Fraction of users (C) : 0.1Local Batch size (B) : 10Local Epochs (E) : 10Optimizer : SGDLearning Rate : 0,01 Table 2: Tes akurasi setelah pelatihan untuk 10 zaman global dengan:
| Model | IID | Non-iid (sama) |
|---|---|---|
| MLP | 88,38% | 73,49% |
| CNN | 97,28% | 75,94% |