0 / 0
Torna alla versione inglese della documentazione
Esercitazione Tensorflow di apprendimento federato
Ultimo aggiornamento: 28 nov 2024
Esercitazione Tensorflow di apprendimento federato

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 .

Nota:

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.

Suggerimento:

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à:

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

  1. Utilizzare un progetto esistente o crearne uno nuovo. È necessario disporre almeno dell'autorizzazione di amministratore.

  2. Associare il servizio watsonx.ai Runtime al progetto.

    1. Nel tuo progetto, fai clic su Manage> Service & integrations.
    2. Fare clic su Associa servizio.
    3. 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.

    Schermata di associazione del servizio

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

  1. Nel tuo progetto, fai clic su Risorse scheda nel tuo progetto.

  2. Clic Nuova risorsa > Addestra modelli su dati distribuiti per creare la risorsa dell'esperimento di apprendimento federato.

  3. Immettere un Nome per l'esperimento e, facoltativamente, una descrizione.

  4. 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:

    1. Fare clic su Associa un'istanza del servizio Machine Learning.

    2. Selezionare un'istanza esistente e fare clic su Associaoppure creare un Nuovo servizio.

    3. Fare clic su Ricarica per visualizzare il servizio associato.

      Schermata di associazione del servizio

    4. Fare clic su Avanti.

Compito 1b: Configura l'esperimento

  1. Nella pagina Configura , selezionare Specifica hardware.

  2. Per Quadro di apprendimento automatico, Selezionare Tensorflow 2.

  3. Selezionare Classificazione per il Tipo di modello.

  4. Scaricare il modello non addestrato.

  5. Tornare all'esperimento Federated Learning, fare clic su Seleziona in Specifica del modello.

    1. Trascinare il file scaricato denominato tf_mnist_model.zip nella casella Carica .

    2. Se necessario, seleziona runtime-23.1-py3.10 per il Specifiche del software cadere in picchiata.

    3. Digitare un nome per il modello, quindi fare clic su Aggiungere.

      Istantanea dell'importazione di un modello iniziale

  6. Fare clic su Media ponderata per Metodo di fusionee fare clic su Avanti.

    Schermata dell'interfaccia utente dei metodi di fusione

Compito 1c: Definire gli iperparametri

  1. Accettare gli iperparametri predefiniti o regolare come necessario.

  2. Una volta terminato, fare clic su Avanti.

Compito 1d: Seleziona i sistemi di formazione a distanza

  1. Fare clic su Aggiungi nuovi sistemi.

    Istantanea di Aggiungi IU RTS

  2. Digita un nome per il tuo sistema di formazione remota.

  3. 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.

  4. Una volta terminato, fare clic su Aggiungi sistemi.

    Schermata di aggiunta di utenti

  5. 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

  1. Controllare le impostazioni. e fare clic Creare.

  2. 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 può richiedere alcuni minuti.

  3. 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.

  4. Fare clic sull'icona Scarica configurazione '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 nomeremote-test-system-configuration.py .

    Informazioni sulla configurazione dei sistemi di addestramento remoti

  5. Fare clic su Eseguito.

Icona del punto di controllo Controllare i progressi

L'immagine seguente mostra l'esperimento con lo stato "in attesa di sistemi remoti".

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

  1. Crea una nuova directory locale e inserisci sposta lo script del connettore del party scaricato in Task 1e nella nuova directory.

  2. 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.

    1. Modificare lo script Python del gestore dati per cambiareibm_watson_machine_learning Aibm_watsonx_ai .

    2. Salvare il file.

  3. 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 unzipunzip 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:

  1. 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.

  2. 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"
             }
    
  3. Salva lo script del connettore del party.

  4. Esegui lo script del connettore del party utilizzando uno dei duepython 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.

Icona del punto di controllo Controllare i progressi

L'immagine seguente mostra l'esperimento completato.

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

  1. Nell'esperimento di Federated Learning completato, fai clic su Salva aggregato.
  2. Sul Salva il modello aggregato nel progetto schermata, digitare un nome per il modello. e fare clic Creare.
  3. 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

  1. Dalla pagina dei dettagli del modello, fare clic su Promuovi per lo spazio di distribuzione 'Promuovi nello spazio di distribuzione.
  2. Scegli un Spazio di destinazione dall'elenco o creare un nuovo spazio di distribuzione.
    1. Selezionare Crea un nuovo spazio di distribuzione.

    2. Digitare un nome per lo spazio di distribuzione.

    3. Seleziona il tuo servizio di archiviazione.

    4. Seleziona il tuo servizio di machine learning.

    5. Fare clic su Crea.

    6. Una volta creato lo spazio di distribuzione, chiudere la finestra.

  3. Seleziona l'opzione Vai al modello nello spazio dopo averlo promosso .
  4. Fare clic su Promuovi.

Compito 3c: Creare e visualizzare la distribuzione online

  1. Quando il modello viene visualizzato nello spazio di distribuzione, fare clic su Nuova distribuzione.
  2. Selezionare In linea come Tipo di distribuzione.
  3. Specificare un nome per la distribuzione.
  4. Fare clic su Crea.
  5. Attendi che lo stato della distribuzione venga modificato in Distribuito, quindi fare clic sul nome della distribuzione.
  6. Visualizza gli endpoint e gli snippet di codice per utilizzare questa distribuzione nella tua applicazione.

Icona del punto di controllo Controllare i progressi

L'immagine seguente mostra la distribuzione.

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

Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni