Implementação do Documento de Aprendizagem Federado de Vanilla: Aprendizagem eficiente em comunicação de redes profundas a partir de dados descentralizados.
Experimentos são produzidos no MNIST, MODA MNIST e CIFAR10 (IID e não IID). No caso de não-IID, os dados entre os usuários podem ser divididos de maneira igual ou desigual.
Como o objetivo desses experimentos é ilustrar a eficácia do paradigma de aprendizado federado, apenas modelos simples, como MLP e CNN, são usados.
Instale todos os pacotes do reking.txt
O experimento de linha de base treina o modelo da maneira convencional.
python src/baseline_main.py --model=mlp --dataset=mnist --epochs=10
python src/baseline_main.py --model=mlp --dataset=mnist --gpu=0 --epochs=10
O experimento federado envolve o treinamento de um modelo global usando muitos modelos locais.
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
Você pode alterar os valores padrão de outros parâmetros para simular diferentes condições. Consulte a seção de opções.
Os valores padrão para vários parâmetros analisados ao experimento são apresentados no options.py . Os detalhes recebem alguns desses parâmetros:
--dataset: padrão: 'mnist'. Opções: 'mnist', 'fmnist', 'cifar'--model: Padrão: 'MLP'. Opções: 'MLP', 'CNN'--gpu: Padrão: Nenhum (é executado na CPU). Também pode ser definido como o ID da GPU específico.--epochs: número de rodadas de treinamento.--lr: taxa de aprendizado definida como 0,01 por padrão.--verbose: saídas detalhadas do log. Ativado por padrão, defina como 0 como desativado.--seed: semente aleatória. Padrão definido como 1. --iid: distribuição de dados entre os usuários. Padrão definido como iid. Definido como 0 para não-IID.--num_users: número de usuários. O padrão é 100.--frac: Fração dos usuários a serem usados para atualizações federadas. O padrão é 0,1.--local_ep: número de épocas de treinamento local em cada usuário. O padrão é 10.--local_bs: tamanho do lote das atualizações locais em cada usuário. O padrão é 10.--unequal: usado em configuração não IID. Opção para dividir os dados entre os usuários de forma igual ou desigual. Padrão definido como 0 para divisões iguais. Defina como 1 para divisões desiguais. O experimento envolve o treinamento de um único modelo da maneira convencional.
Parâmetros:
Optimizer: SGDLearning Rate: 0,01 Table 1: precisão do teste após o treinamento para 10 épocas:
| Modelo | Teste acc |
|---|---|
| MLP | 92,71% |
| CNN | 98,42% |
O experimento envolve treinar um modelo global no ambiente federado.
Parâmetros federados (valores padrão):
Fraction of users (C) : 0.1Local Batch size (B) : 10Local Epochs (E) : 10Optimizer : SGDLearning Rate : 0,01 Table 2: precisão do teste após o treinamento para 10 épocas globais com:
| Modelo | IID | Não IID (igual) |
|---|---|---|
| MLP | 88,38% | 73,49% |
| CNN | 97,28% | 75,94% |