PaddleFL es un marco de trabajo open source para el aprendizaje federado, construido sobre PaddlePaddle. Esta guía describe su estructura de directorios, los principales scripts de ejecución y el sistema de archivos de configuración.
Estructura del Directorio del Proyceto
El repositorio de PaddleFL está organizado de manera modular. A continuación se detallan los directorios y archivos más relevantes:
core/: Contiene la lógica central y los algoritmos del framework.python/paddle_fl/: El paquete Python principal, que expone la API al usuario.examples/: Proporciona ejemplos de uso completos para diversas tareas de aprendizaje federado.docs/: Documentación técnica y tutoriales.CMakeLists.txt: Script para la compilación del componante C++.requirements.txt: Lista de dependencias de Python necesarias.
Esta disposición permite una clara separación entre el código fuente, los ejemplos y la documentación, facilitando la exploración y el desarrollo.
Scripts de Ejecución Principales
La ejecución de tareas en PaddleFL se orquesta mediante scripts de Python. La mayoría de los escenarios (entrenamiento, inferencia) se inician a través de scripts localizados en el paquete paddle_fl. Un patrón común es utilizar un script principal que carga un archivo de configuración.
Por ejemplo, para iniciar un proceso de entrenamiento federado, se podría ejecutar un comando como el siguiente:
python -m paddle_fl.scripts.iniciar_sesion --parametros config_entrenamiento.yaml --definicion red_neuronal.py
En este caso, config_entrenamiento.yaml esatblece los parámetros del experimento y red_neuronal.py define la arquitectura del modelo. Las opciones específicas de línea de comandos están documentadas en el archivo README.md del proyecto.
Archivos de Configuración
PaddleFL emplea archivos en formato YAML para configurar los experimentos de aprendizaje federado. Estos archivos controlan aspectos críticos de la ejecución. Las secciones típicas incluyen:
estructura_modelo: Define la topología de la red neuronal, como el número de capas, filtros y activaciones.conjunto_datos: Especifica las rutas a los datos, el tamaño del batch y las operaciones de preprocesamiento.optimizador: Configura el algoritmo de optimización (por ejemplo, SGD, Adam) y su tasa de aprendizaje.estrategia_federada: Indica el algoritmo de agregación federado a utilizar (e.g., FedAvg).parametros_red: Establece la topología de la red y el modo de comunicación (e.g., gloo).dispositivo: Asigna los recursos de cómputo, como CPU o una GPU específica.
Un ejemplo simplificado de un archivo config_entrenamiento.yaml podría verse así:
estructura_modelo:
nombre: mi_red_convolucional
capas:
- tipo: convolucion2d
filtros: 64
tamano_kernel: 3
optimizador:
tipo: adam
factor_aprendizaje: 0.0005
estrategia_federada:
algoritmo: promedio_federado
rondas: 10
conjunto_datos:
ruta_entrenamiento: /datos/entrenamiento/
ruta_validacion: /datos/prueba/
tamano_lote: 32
parametros_red:
protocolo: gloo
rol: cliente
dispositivo: gpu:0
Comprender y ajustar correctamente estos parámetros es esencial para configurar y ejecutar experimentos de aprendizaje federado eficaces con PaddleFL. Para escenarios avanzados, pueden existir parámetros adicionales para el control de privacidad (como DPSGD) y la monitorización del entrenamiento.