Questa esercitazione dimostra l'uso di Federated Learning con l'obiettivo di formare un modello di machine learning con dati di utenti diversi senza che gli utenti condividano i dati. I passaggi vengono eseguiti in un ambiente a basso codice con l'IU e con un framework Tensorflow .
Questa è un'esercitazione dettagliata per l'esecuzione di un esperimento di apprendimento federato basato sull'IU. Per visualizzare un esempio di codice per un approccio basato sull'API, vedi Federated Learning Tensorflow samples.
In questa esercitazione, admin fa riferimento all'utente che avvia l'esperimento Federated Learning e party fa riferimento a uno o più utenti che inviano i relativi risultati del modello dopo che l'esperimento è stato avviato dall'amministratore. Mentre l'esercitazione può essere eseguita dall'amministratore e da più parti, un singolo utente può anche completare un passaggio completo sia come amministratore che come parte. Per uno scopo dimostrativo più semplice, nella seguente esercitazione viene inoltrato un solo dataset da una parte. Per ulteriori informazioni sull'amministratore e sulla parte, consultare Terminologia.
In questo tutorial completerai queste attività:
- Attività 1: avvia l'apprendimento federato come amministratore
- Compito 2: Addestrare il modello come gruppo
- Attività 3: salva e distribuisci il modello online
Anteprima del tutorial
Guardate questo breve video tutorial su come creare un esperimento di apprendimento federato con watsonx.ai Studio.
Questo video fornisce un metodo visivo per apprendere i concetti e le attività in questa documentazione.
Prerequisiti
Verificare il Python versione
Assicurati di utilizzare la stessa versione di Python dell'amministratore. L'utilizzo di una versione di Python differente potrebbe causare problemi di compatibilità. Per vedere le versioni Python compatibili con diversi framework, vedi Frameworks e Python version compatibility.
Aprire un progetto
Utilizzare un progetto esistente o crearne uno nuovo. È necessario disporre almeno dell'autorizzazione di amministratore.
Associare il servizio watsonx.ai Runtime al progetto.
- Nel tuo progetto, fai clic su Manage> Service & integrations.
- Fare clic su Associa servizio.
- Selezionare l'istanza di watsonx.ai Runtime dall'elenco e fare clic su Associa; oppure fare clic su Nuovo servizio se non si dispone di un'istanza.
Attività 1: avvia l'apprendimento federato come amministratore
Nel tuo progetto creerai un esperimento di apprendimento federato con a Tensorflow quadro utilizzando il set di dati MNIST.
Compito 1a: Definire i dettagli dell'esperimento
Nel tuo progetto, fai clic su Risorse scheda nel tuo progetto.
Clic Nuova risorsa > Addestra modelli su dati distribuiti per creare la risorsa dell'esperimento di apprendimento federato.
Immettere un Nome per l'esperimento e, facoltativamente, una descrizione.
Verificare l'istanza di watsonx.ai Runtime associata in Seleziona un'istanza di apprendimento automatico. Se non si vede associata un'istanza di watsonx.ai Runtime, seguire questi passaggi:
Fare clic su Associa un'istanza del servizio Machine Learning.
Selezionare un'istanza esistente e fare clic su Associaoppure creare un Nuovo servizio.
Fare clic su Ricarica per visualizzare il servizio associato.
Fare clic su Avanti.
Compito 1b: Configura l'esperimento
Nella pagina Configura , selezionare Specifica hardware.
Per Quadro di apprendimento automatico, Selezionare Tensorflow 2.
Selezionare Classificazione per il Tipo di modello.
Scaricare il modello non addestrato.
Tornare all'esperimento Federated Learning, fare clic su Seleziona in Specifica del modello.
Trascinare il file scaricato denominato
tf_mnist_model.zip
nella casella Carica .Se necessario, seleziona runtime-23.1-py3.10 per il Specifiche del software cadere in picchiata.
Digitare un nome per il modello, quindi fare clic su Aggiungere.
Fare clic su Media ponderata per Metodo di fusionee fare clic su Avanti.
Compito 1c: Definire gli iperparametri
Accettare gli iperparametri predefiniti o regolare come necessario.
Una volta terminato, fare clic su Avanti.
Compito 1d: Seleziona i sistemi di formazione a distanza
Fare clic su Aggiungi nuovi sistemi.
Digita un nome per il tuo sistema di formazione remota.
In Identità consentite, scegliere l'utente che fa parte dell'utente e fare clic su Aggiungi. In questo tutorial puoi aggiungere un utente fittizio o te stesso, a scopo dimostrativo.
Questo utente deve essere aggiunto al tuo progetto come collaboratore Editore o autorizzazioni superiori. Aggiungere ulteriori sistemi ripetendo questo passo per ogni parte remota che si intende utilizzare.Una volta terminato, fare clic su Aggiungi sistemi.
Tornare alla pagina Seleziona sistemi di addestramento remoti , verificare che il sistema sia selezionato e fare clic su Avanti.
Compito 1e: Rivedi le tue impostazioni
Controllare le impostazioni. e fare clic Creare.
Guarda lo stato. Lo stato dell'esperimento Federated Learning è In sospeso quando viene avviato. Quando l'esperimento è pronto per la connessione delle parti, lo stato cambia in Impostazione - In attesa di sistemi remoti. Questa operazione potrebbe richiedere alcuni minuti.
Clic Visualizza le informazioni di configurazione per scaricare la configurazione del party e lo script del connettore del party che è possibile eseguire sul party remoto.
Fare clic sull'icona Scarica configurazione ' accanto a ciascuno dei sistemi di formazione remota creati. Salva lo script del connettore del party in una directory sul tuo computer con il nome
remote-test-system-configuration.py
.Fare clic su Eseguito.
Controllare i progressi
L'immagine seguente mostra l'esperimento con lo stato "in attesa di sistemi remoti".
Compito 2: Addestrare il modello come gruppo
Per addestrare il modello, è necessario scaricare i set di dati, quindi modificare ed eseguire script Python. Seguire questi passi per addestrare il modello come parte:
Compito 2a: Scarica i set di dati e gli script
Crea una nuova directory locale e inserisci sposta lo script del connettore del party scaricato in Task 1e nella nuova directory.
Scaricare il gestore di dati mnist_keras_data_handler.py facendo clic con il tasto destro del mouse sul nome del file e poi su Salva link con nome. Salvarlo nella stessa directory dello script del connettore di parte.
Modificare lo script Python del gestore dati per cambiare
ibm_watson_machine_learning
Aibm_watsonx_ai
.Salvare il file.
Scaricate il set di dati MNIST sulla scrittura a mano dal nostro hub delle risorse. Nella stessa directory dello script del connettore del party, del gestore dati e del resto dei file, decomprimilo eseguendo il comando unzip
unzip MNIST-pkl.zip
.
Ora hai lo script del connettore del party,mnist_keras_data_handler.py
,mnist-keras-test.pkl
Emnist-keras-train.pkl
nella stessa directory.
Compito 2b: Installare il runtime watsonx.ai
Se utilizzi Windows o Linux, esegui il seguente comando:
pip install 'ibm_watsonx_ai[fl-rt23.1-py3.10]'
Se utilizzi Mac OS con CPU serie M e Conda, scarica il file script di installazione e poi esegui:
./install_fl_rt23.1_macos.sh <name for new conda environment>
Compito 2c: Modifica ed esegui lo script del connettore del party
Lo script del connettore del party è simile al seguente script:
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)
Modifica il file del connettore del partito,remote-test-systm-configuration.py
e apportare le seguenti modifiche:
Fornisci le tue credenziali: incolla la chiave API per l'utente definito nel sistema di formazione remota. Se non si dispone di una chiave API, andare alla pagina delle chiavi API diIBM Cloud, fare clic su Crea chiave API, compilare i campi e fare clic su Crea.
Nel party_metadata campo, fornire il nome, il percorso e le informazioni, che dovrebbero essere simili al seguente testo JSON.
"name": "MnistTFDataHandler", "path": "mnist_keras_data_handler.py", "info": { "train_file": "mnist-keras-train.pkl", "test_file": "mnist-keras-test.pkl" }
Salva lo script del connettore del party.
Esegui lo script del connettore del party utilizzando uno dei due
python
Opython3
a seconda di cosa hai installato.python remote-test-system-configuration.py
Dall'interfaccia utente puoi monitorare lo stato del tuo esperimento di apprendimento federato.
Controllare i progressi
L'immagine seguente mostra l'esperimento completato.
Attività 3: salva e distribuisci il modello online
In questa sezione, imparerai a salvare e distribuire il modello che hai addestrato.
Compito 3a: Salva il tuo modello
- Nell'esperimento di Federated Learning completato, fai clic su Salva aggregato.
- Sul Salva il modello aggregato nel progetto schermata, digitare un nome per il modello. e fare clic Creare.
- Quando vedi la notifica che il modello è stato creato, fai clic su Visualizza nel progetto. Se perdi la notifica, fai clic sul nome del progetto per tornare alla scheda delle risorse e fai clic sul nome del modello per visualizzarlo.
Compito 3b: Promuovere il modello in uno spazio
- Dalla pagina dei dettagli del modello, fare clic su Promuovi per lo spazio di distribuzione '.
- Scegli un Spazio di destinazione dall'elenco o creare un nuovo spazio di distribuzione.
Selezionare Crea un nuovo spazio di distribuzione.
Digitare un nome per lo spazio di distribuzione.
Seleziona il tuo servizio di archiviazione.
Seleziona il tuo servizio di machine learning.
Fare clic su Crea.
Una volta creato lo spazio di distribuzione, chiudere la finestra.
- Seleziona l'opzione Vai al modello nello spazio dopo averlo promosso .
- Fare clic su Promuovi.
Compito 3c: Creare e visualizzare la distribuzione online
- Quando il modello viene visualizzato nello spazio di distribuzione, fare clic su Nuova distribuzione.
- Selezionare In linea come Tipo di distribuzione.
- Specificare un nome per la distribuzione.
- Fare clic su Crea.
- Attendi che lo stato della distribuzione venga modificato in Distribuito, quindi fare clic sul nome della distribuzione.
- Visualizza gli endpoint e gli snippet di codice per utilizzare questa distribuzione nella tua applicazione.
Controllare i progressi
L'immagine seguente mostra la distribuzione.
Passi successivi
Sei pronto a creare il tuo Esperimento Federato personalizzato? Vedi i passi di alto livello in Creazione del tuo esperimento Federated Learning.
Argomento principale: Esercitazione ed esempi di apprendimento federato