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% |