Federated Learning PyTorch
1.0.0
바닐라 연합 학습 논문의 구현 : 분산 된 데이터의 심층 네트워크에 대한 커뮤니케이션 효율적인 학습.
실험은 MNIST, Fashion MNIST 및 CIFAR10 (IID 및 비 IID 모두)에서 생성됩니다. 비 IID의 경우 사용자 간의 데이터를 동일하거나 불평등하게 분할 할 수 있습니다.
이러한 실험의 목적은 연합 학습 패러다임의 효과를 설명하기 때문에 MLP 및 CNN과 같은 간단한 모델 만 사용됩니다.
요구 사항에서 모든 패키지를 설치하십시오
기준 실험은 기존의 방식으로 모델을 훈련시킵니다.
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% |