Federated Learning PyTorch
1.0.0
Vanilla聯合學習論文的實施:從分散數據中對深層網絡的溝通效率學習。
實驗是在MNIST,時尚MNIST和CIFAR10(IID和非IID)上生產的。在非IID的情況下,用戶之間的數據可以平等或不平等。
由於這些實驗的目的是說明聯合學習範式的有效性,因此僅使用了簡單的模型,例如MLP和CNN。
從需求安裝所有軟件包.txt
基線實驗以常規方式訓練模型。
python src/baseline_main.py --model=mlp --dataset=mnist --epochs=10
python src/baseline_main.py --model=mlp --dataset=mnist --gpu=0 --epochs=10
聯合實驗涉及使用許多本地模型培訓全球模型。
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
您可以更改其他參數的默認值以模擬不同的條件。請參閱“選項”部分。
在options.py中給出了對實驗分析的各種參數的默認值。詳細信息給出了其中一些參數:
--dataset:默認值:'mnist'。選項:'mnist','fmnist','cifar'--model:默認值:'MLP'。選項:'MLP','CNN'--gpu:默認值:無(在CPU上運行)。也可以設置為特定的GPU ID。--epochs:訓練次數。--lr:默認情況下將學習率設置為0.01。--verbose:詳細的日誌輸出。默認情況下激活,設置為0以停用。--seed:隨機種子。默認設置為1。 --iid:用戶之間數據的分佈。默認設置為IID。設置為非IID的0。--num_users:用戶數。默認值為100。--frac:用於聯合更新的用戶部分。默認值為0.1。--local_ep:每個用戶中本地培訓時期的數量。默認值為10。--local_bs:每個用戶中本地更新的批量大小。默認值為10。--unequal:用於非IID設置。選項將數據平均或不平等之間的用戶之間分配。默認設置為0,以相等的分配。設置為1的不等分割。 該實驗涉及以常規方式訓練單個模型。
參數:
Optimizer: :: SGDLearning Rate: 0.01 Table 1:訓練後的10個時期的測試準確性:
| 模型 | 測試ACC |
|---|---|
| MLP | 92.71% |
| CNN | 98.42% |
該實驗涉及在聯合環境中訓練全球模型。
聯合參數(默認值):
Fraction of users (C) :0.1Local Batch size (B) :10Local Epochs (E) :10Optimizer :SGDLearning Rate :0.01 Table 2:訓練10個全球時期後的測試準確性:
| 模型 | IID | 非IID(相等) |
|---|---|---|
| MLP | 88.38% | 73.49% |
| CNN | 97.28% | 75.94% |