En esta guía de aprendizaje, se demuestra el uso de Federated Learning con el objetivo de entrenar un modelo de aprendizaje automático con datos de distintos usuarios sin necesidad de que los usuarios compartan sus datos. Los pasos se realizan en un entorno de bajo código con la interfaz de usuario y con una infraestructura de Tensorflow .
Esta es una guía de aprendizaje paso a paso para ejecutar un experimento de aprendizaje federado controlado por interfaz de usuario. Para ver un ejemplo de código para un enfoque controlado por API, consulte Ejemplos de Tensorflow de Federated Learning.
En esta guía de aprendizaje, admin hace referencia al usuario que inicia el experimento de aprendizaje federado, y party hace referencia a uno o más usuarios que envían sus resultados de modelo después de que el administrador haya iniciado el experimento. Aunque la guía de aprendizaje la pueden completar el administrador y varias partes, un usuario individual también puede realizar una ejecución completa como el administrador y la parte. Para fines de demostración más sencillos, en la siguiente guía de aprendizaje, una parte envía solo un conjunto de datos. Para obtener más información sobre el administrador y la parte, consulte Terminología.
En esta guía de aprendizaje, realizará estas tareas:
- Tarea 1: iniciar Federated Learning como administrador
- Tarea 2: Entrenar el modelo como grupo
- Tarea 3: guardar e implementar el modelo en línea
Vista previa de la guía de aprendizaje
Vea este breve tutorial en vídeo sobre cómo crear un experimento de aprendizaje federado con watsonx.ai Studio.
Este vídeo proporciona un método visual para aprender los conceptos y tareas de esta documentación.
Requisitos previos
Verificar el Python versión
Asegúrese de que está utilizando la misma versión de Python que el administrador. Si se utiliza una versión diferente de Python se pueden producir problemas de compatibilidad. Para ver las versiones de Python compatibles con diferentes infraestructuras, consulte Compatibilidad de infraestructuras y versión de Python.
Abrir un proyecto
Utilice un proyecto existente o cree uno nuevo. Debe tener al menos permiso de administrador.
Asocie el servicio watsonx.ai Runtime a su proyecto.
- En el proyecto, pulse Gestionar > Servicio e integraciones.
- Pulse Asociar servicio.
- Seleccione su instancia de watsonx.ai Runtime de la lista y haga clic en Asociar; o haga clic en Nuevo servicio si no tiene ninguno para configurar una instancia.
Tarea 1: iniciar Federated Learning como administrador
En su proyecto, creará un experimento de aprendizaje federado con un Tensorflow marco utilizando el conjunto de datos MNIST.
Tarea 1a: Definir los detalles del experimento.
En su proyecto, haga clic en Activos pestaña en su proyecto.
Hacer clic Nuevo activo > Entrenar modelos en datos distribuidos para crear el activo del experimento de aprendizaje federado.
Escriba un Nombre para el experimento y, opcionalmente, una descripción.
Verifique la instancia asociada de watsonx.ai Runtime en Seleccionar una instancia de aprendizaje automático. Si no ves una instancia de watsonx.ai Runtime asociada, sigue estos pasos:
Pulse Asociar una instancia de servicio de Machine Learning.
Seleccione una instancia existente y pulse Asociaro cree un Nuevo servicio.
Pulse Volver a cargar para ver el servicio asociado.
Pulse Siguiente.
Tarea 1b: Configurar el experimento
En la página Configurar , seleccione una Especificación de hardware.
Para Marco de aprendizaje automático, seleccionar Tensorflow 2.
Seleccionar Clasificación Para el Tipo de modelo.
Descargue el modelo no entrenado.
En el experimento de aprendizaje federado, pulse Seleccionar en Especificación del modelo.
Arrastre el archivo descargado denominado
tf_mnist_model.zip
al recuadro de archivo Cargar .Si es necesario, seleccione runtime-23.1-py3.10 Para el Especificación de software desplegable.
Escriba un nombre para su modelo y luego haga clic en Agregar.
Pulse Promedio ponderado para el Método de fusióny pulse Siguiente.
Tarea 1c: Definir los hiperparámetros.
Acepte los hiperparámetros predeterminados o ajústelo según sea necesario.
Cuando haya terminado, pulse Siguiente.
Tarea 1d: Seleccionar sistemas de entrenamiento remoto
Pulse Añadir nuevos sistemas.
Escriba un nombre para su sistema de capacitación remota.
En Identidades permitidas, elija el usuario que es su parte y, a continuación, pulse Añadir. En este tutorial, puede agregar un usuario ficticio o usted mismo, con fines de demostración.
Este usuario debe agregarse a su proyecto como colaborador de Editor o permisos superiores. Añada sistemas adicionales repitiendo este paso para cada parte remota que desee utilizar.Cuando haya terminado, pulse Añadir sistemas.
Vuelva a la página Seleccionar sistemas de entrenamiento remotos , verifique que el sistema está seleccionado y, a continuación, pulse Siguiente.
Tarea 1e: Revisa tu configuración
Revise los valores. y haga clic Crear.
Observe el estado. El estado del experimento de aprendizaje federado es Pendiente cuando se inicia. Cuando el experimento esté preparado para que las partes se conecten, el estado cambiará a Configuración - Esperando sistemas remotos. Esta acción puede tardar varios minutos.
Hacer clic Ver información de configuración para descargar la configuración de la parte y el script del conector de la parte que puede ejecutar en la parte remota.
Haga clic en el icono Descargar configuración ' ' situado junto a cada uno de los sistemas de teleformación que haya creado. Guarde el script del conector de grupo en un directorio de su máquina con el nombre
remote-test-system-configuration.py
.Pulse Finalizado.
' Comprueba tu progreso
La siguiente imagen muestra el experimento con el estado "esperando sistemas remotos".
Tarea 2: Entrenar al modelo como parte
Para entrenar el modelo, debe descargar los conjuntos de datos y luego editar y ejecutar scripts de Python. Siga estos pasos para entrenar el modelo como parte:
Tarea 2a: Descargue los conjuntos de datos y los scripts
Cree un nuevo directorio local y mueva el script del conector de grupo que descargó en Task 1e en el nuevo directorio.
Descargue el manejador de datos mnist_keras_data_handler.py haciendo clic con el botón derecho en el nombre del archivo y, a continuación, en Guardar enlace como. Guárdelo en el mismo directorio que el script de conector de la parte.
Edite el script de Python del controlador de datos para cambiar
ibm_watson_machine_learning
aibm_watsonx_ai
.Guarde el archivo.
Descargue el conjunto de datos de escritura manuscrita MNIST de nuestro Centro de recursos. En el mismo directorio que el script del conector del grupo, el controlador de datos y el resto de sus archivos, descomprímalo ejecutando el comando unzip.
unzip MNIST-pkl.zip
.
Ahora tienes el script del conector de grupo,mnist_keras_data_handler.py
,mnist-keras-test.pkl
ymnist-keras-train.pkl
en el mismo directorio.
Tarea 2b: Instalar watsonx.ai Runtime
Si está utilizando Windows o Linux, ejecute el siguiente comando:
pip install 'ibm_watsonx_ai[fl-rt23.1-py3.10]'
Si está utilizando Mac OS con CPU de la serie M y Conda, descargue el guión de instalación y luego ejecuta:
./install_fl_rt23.1_macos.sh <name for new conda environment>
Tarea 2c: Editar y ejecutar el script del conector de grupo
La secuencia de comandos del conector de su grupo es similar a la siguiente secuencia de comandos:
from ibm_watsonx_ai import APIClient
wml_credentials = {
"url": "https://us-south.ml.cloud.ibm.com",
"apikey": "<API KEY>"
}
wml_client = APIClient(wml_credentials)
wml_client.set.default_project("XXX-XXX-XXX-XXX-XXX")
party_metadata = {
wml_client.remote_training_systems.ConfigurationMetaNames.DATA_HANDLER: {
# Supply the name of the data handler class and path to it.
# The info section may be used to pass information to the
# data handler.
# For example,
# "name": "MnistSklearnDataHandler",
# "path": "example.mnist_sklearn_data_handler",
# "info": {
# "train_file": pwd + "/mnist-keras-train.pkl",
# "test_file": pwd + "/mnist-keras-test.pkl"
# }
"name": "<data handler>",
"path": "<path to data handler>",
"info": {
"<information to pass to data handler>"
}
}
}
party = wml_client.remote_training_systems.create_party("XXX-XXX-XXX-XXX-XXX", party_metadata)
party.monitor_logs()
party.run(aggregator_id="XXX-XXX-XXX-XXX-XXX", asynchronous=False)
Edite el archivo del conector de grupo,remote-test-systm-configuration.py
y realice los siguientes cambios:
Proporcione sus credenciales: pegue la clave API del usuario definido en el sistema de capacitación remota. Si no dispone de una clave de API, vaya a la página Claves de API deIBM Cloud y haga clic en Crear clave de API, rellene los campos y haga clic en Crear.
En el fiesta_metadatos, proporcione el nombre, la ruta y la información, que deben ser similares al siguiente texto JSON.
"name": "MnistTFDataHandler", "path": "mnist_keras_data_handler.py", "info": { "train_file": "mnist-keras-train.pkl", "test_file": "mnist-keras-test.pkl" }
Guarde el script del conector de grupo.
Ejecute el script del conector de grupo utilizando cualquiera de los dos
python
opython3
dependiendo de lo que tengas instalado.python remote-test-system-configuration.py
En la interfaz de usuario puede supervisar el estado de su experimento de Federated Learning.
' Comprueba tu progreso
La siguiente imagen muestra el experimento completado.
Tarea 3: guardar e implementar el modelo en línea
En esta sección, aprenderá a guardar y desplegar el modelo que ha formado.
Tarea 3a: Guarda tu modelo
- En su experimento de aprendizaje federado completado, haga clic en Guardar agregado.
- Sobre el Guardar modelo agregado en proyecto pantalla, escriba un nombre para el modelo. y haga clic Crear.
- Cuando vea la notificación de que se creó el modelo, haga clic en Ver en proyecto. Si no recibe la notificación, haga clic en el nombre del proyecto para volver a la pestaña de activos y haga clic en el nombre del modelo para verlo.
Tarea 3b: Promocionar el modelo en un espacio.
- En la página de detalles del modelo, haz clic en Promover al espacio de despliegue ' .
- Escoge un Espacio objetivo de la lista o cree un nuevo espacio de implementación.
Seleccionar Crear un nuevo espacio de implementación.
Escriba un nombre para el espacio de implementación.
Selecciona tu servicio de almacenamiento.
Seleccione su servicio de aprendizaje automático.
Pulse Crear.
Cuando se cree el espacio de implementación, cierre la ventana.
- Seleccione la opción Ir al modelo en el espacio después de promocionarlo .
- Haga clic en Promover.
Tarea 3c: Crear y ver la implementación en línea
- Cuando el modelo se visualice dentro del espacio de despliegue, pulse Nuevo despliegue.
- Seleccione En línea como Tipo de despliegue.
- Especifique un nombre para el despliegue.
- Pulse Crear.
- Espere a que el estado de implementación cambie a Desplegada y luego haga clic en el nombre de la implementación.
- Vea los puntos finales y los fragmentos de código para usar esta implementación en su aplicación.
' Comprueba tu progreso
La siguiente imagen muestra la implementación.
Próximos pasos
¿Está preparado para crear su propio experimento de Federated Learning? Consulte los pasos generales en Creación de su experimento de aprendizaje federado.
Tema padre: Guía de aprendizaje y ejemplos de Federated Learning