Implementación del documento de aprendizaje federado de vainilla: aprendizaje eficiente en comunicación de redes profundas a partir de datos descentralizados.
Los experimentos se producen en Mnist, Fashion Mnist y CIFAR10 (tanto IID como no IID). En el caso de no IID, los datos entre los usuarios pueden dividirse de igual o de manera desigual.
Dado que el propósito de estos experimentos es ilustrar la efectividad del paradigma de aprendizaje federado, solo se utilizan modelos simples como MLP y CNN.
Instale todos los paquetes de requisitos.txt
El experimento de referencia entrena el modelo de la manera 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
El experimento federado implica capacitar un modelo global que utiliza muchos modelos locales.
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
Puede cambiar los valores predeterminados de otros parámetros para simular diferentes condiciones. Consulte la sección Opciones.
Los valores predeterminados para varios parámetros analizados al experimento se dan en options.py . Los detalles reciben algunos de esos parámetros:
--dataset: predeterminado: 'mnist'. Opciones: 'mnist', 'fmnist', 'cifar'--model: predeterminado: 'MLP'. Opciones: 'MLP', 'CNN'--gpu: predeterminado: ninguno (se ejecuta en CPU). También se puede configurar en la ID de GPU específica.--epochs: número de rondas de entrenamiento.--lr: tasa de aprendizaje establecida en 0.01 por defecto.--verbose: salidas de registro detalladas. Activado por defecto, establecido en 0 para desactivar.--seed: semilla aleatoria. Establecimiento predeterminado en 1. --iid: Distribución de datos entre los usuarios. Establecer predeterminado en IID. Establecido en 0 para no iid.--num_users: número de usuarios. El valor predeterminado es 100.--frac: fracción de usuarios que se utilizarán para actualizaciones federadas. El valor predeterminado es 0.1.--local_ep: número de épocas de capacitación local en cada usuario. El valor predeterminado es 10.--local_bs: tamaño por lotes de actualizaciones locales en cada usuario. El valor predeterminado es 10.--unequal: utilizado en la configuración no IID. Opción para dividir los datos entre los usuarios de manera igual o desigual. Establecer predeterminado en 0 para divisiones iguales. Establecido en 1 para divisiones desiguales. El experimento implica entrenar un solo modelo de la manera convencional.
Parámetros:
Optimizer: SGDLearning Rate: 0.01 Table 1: Prueba de prueba después del entrenamiento para 10 épocas:
| Modelo | Test ACC |
|---|---|
| MLP | 92.71% |
| CNN | 98.42% |
El experimento implica capacitar un modelo global en el entorno federado.
Parámetros federados (valores predeterminados):
Fraction of users (C) : 0.1Local Batch size (B) : 10Local Epochs (E) : 10Optimizer : SGDLearning Rate : 0.01 Table 2: Prueba de prueba después del entrenamiento para 10 épocas globales con:
| Modelo | Iid | No iid (igual) |
|---|---|---|
| MLP | 88.38% | 73.49% |
| CNN | 97.28% | 75.94% |