Dieses Lernprogramm zeigt die Schritte zur Verwendung von Federated Learning mit dem Ziel, ein Modell für maschinelles Lernen mit Daten verschiedener Benutzer zu trainieren, ohne dass dabei die Daten der Benutzer gemeinsam genutzt werden. Die Schritte werden in einer Low-Code-Umgebung mit der Benutzerschnittstelle und mit einem Tensorflow -Framework ausgeführt.
Dies ist ein schrittweises Lernprogramm für die Ausführung eines benutzerschnittstellengesteuerten Experiments für föderiertes Lernen. Ein Codebeispiel für einen API-gesteuerten Ansatz finden Sie unter Federated Learning Tensorflow -Beispiele.
In diesem Lernprogramm bezieht sich admin auf den Benutzer, der das Experiment für föderiertes Lernen startet, und party bezieht sich auf mindestens einen Benutzer, der seine Modellergebnisse sendet, nachdem das Experiment vom Administrator gestartet wurde. Das Lernprogramm kann vom Administrator und mehreren Parteien ausgeführt werden, aber auch ein einzelner Benutzer kann das Programm komplett sowohl als Administrator als auch als Partei durchlaufen. Um die Veranschaulichung zu vereinfachen, wird in dem folgenden Lernprogramm nur ein einziges Dataset von einer einzigen Partei übergeben. Weitere Informationen zum Administrator und zur Partei finden Sie unter Terminologie.
In diesem Lernprogramm werden Sie die folgenden Tasks ausführen:
- Aufgabe 1: Federated Learning als Administrator starten
- Aufgabe 2: Modell als Gruppe trainieren
- Aufgabe 3: Speichern und Onlinebereitstellen des Modells
Vorschau des Lernprogramms anzeigen
In diesem kurzen Video-Tutorial erfahren Sie, wie Sie mit watsonx.ai Studio ein Federated Learning Experiment erstellen.
Dieses Video bietet eine visuelle Methode zum Erlernen der Konzepte und Tasks in dieser Dokumentation.
Voraussetzungen
Überprüfen Sie die Python Ausführung
Stellen Sie sicher, dass Sie dieselbe Python-Version wie der Administrator verwenden. Die Verwendung einer anderen Python-Version kann zu Kompatibilitätsproblemen führen. Informationen zu Python-Versionen, die mit verschiedenen Frameworks kompatibel sind, finden Sie im Abschnitt zur Kompatibilität zwischen Frameworks und Python-Versionen.
Ein Projekt öffnen
Verwenden Sie ein vorhandenes Projekt oder erstellen Sie ein neues. Sie müssen mindestens über Administratorberechtigung verfügen.
Verknüpfen Sie den watsonx.ai Runtime-Dienst mit Ihrem Projekt.
- Klicken Sie in Ihrem Projekt auf Verwalten > Service & Integrationen.
- Klicken Sie auf Service zuordnen.
- Wählen Sie Ihre watsonx.ai Runtime-Instanz aus der Liste aus und klicken Sie auf Assoziieren; oder klicken Sie auf Neuer Dienst, wenn Sie noch keinen haben, um eine Instanz einzurichten.
Aufgabe 1: Federated Learning als Administrator starten
In Ihrem Projekt erstellen Sie ein Federated Learning-Experiment mit einem Tensorflow Framework unter Verwendung des MNIST-Datensatzes.
Aufgabe 1a: Definieren Sie die Experimentdetails
Klicken Sie in Ihrem Projekt auf das Vermögenswerte Registerkarte in Ihrem Projekt.
Klicken Neues Asset > Modelle anhand verteilter Daten trainieren um das Federated Learning-Experiment-Asset zu erstellen.
Geben Sie einen Namen für Ihr Experiment und optional eine Beschreibung ein.
Überprüfen Sie die zugehörige watsonx.ai Runtime Instanz unter Wählen Sie eine Machine Learning Instanz. Wenn Sie keine zugehörige watsonx.ai Runtime-Instanz sehen, folgen Sie diesen Schritten:
Klicken Sie auf Machine Learning -Serviceinstanz zuordnen.
Wählen Sie eine vorhandene Instanz aus und klicken Sie auf Zuordnenoder erstellen Sie einen neuen Service.
Klicken Sie auf Neu laden, um den zugehörigen Service anzuzeigen.
Klicken Sie auf Weiter.
Aufgabe 1b: Konfigurieren des Experiments
Wählen Sie auf der Seite Konfigurieren eine Hardwarespezifikationaus.
Für Framework für maschinelles Lernen, wählen Tensorflow 2.
Wählen Einstufung für die Modelltyp.
Laden Sie das nicht trainierte Modell herunter.
Klicken Sie zurück im Federated Learning-Experiment unter Modellspezifikation auf Auswählen.
Ziehen Sie die heruntergeladene Datei
tf_mnist_model.zip
in das Dateifeld Hochladen .Wählen Sie ggf. runtime-23.1-py3.10 für die Softwarespezifikation runterfallen.
Geben Sie einen Namen für Ihr Modell ein und klicken Sie dann auf Hinzufügen.
Klicken Sie auf Gewichteter Durchschnitt für die Fusionsmethodeund anschließend auf Weiter.
Aufgabe 1c: Definieren Sie die Hyperparameter
Akzeptieren Sie die Standardhyperparameter oder passen Sie sie nach Bedarf an.
Klicken Sie anschließend auf Weiter.
Aufgabe 1d: Ausgewählte Fernschulungssysteme
Klicken Sie auf Neue Systeme hinzufügen.
Geben Sie einen Namen für Ihr Remote-Trainingssystem ein.
Wählen Sie unter Zulässige Identitätenden Benutzer aus, der Ihre Partei ist, und klicken dann auf Hinzufügen. In diesem Tutorial können Sie zu Demonstrationszwecken einen fiktiven Benutzer oder sich selbst hinzufügen.
Dieser Benutzer muss Ihrem Projekt als Mitarbeiter hinzugefügt werden mit Editor oder höhere Berechtigungen. Fügen Sie weitere Systeme hinzu, indem Sie diesen Schritt für jeden fernen Teilnehmer, der verwendet werden soll, wiederholen.Klicken Sie anschließend auf Systeme hinzufügen.
Kehren Sie zur Seite Ferne Trainingssysteme auswählen zurück, prüfen Sie, ob Ihr System ausgewählt ist, und klicken Sie anschließend auf Next.
Aufgabe 1e: Überprüfen Sie Ihre Einstellungen
Überprüfen Sie die Einstellungen. und klicken Sie auf Erstellen.
Beobachten Sie den Status. Wenn Ihr Federated Learning-Experiment gestartet wird, hat es den Status Anstehend. Sobald Parteien eine Verbindung zu Ihrem Experiment herstellen können, ändert sich der Status in Einrichtung – Warten auf ferne Systeme. Dieser Vorgang kann einige Minuten dauern.
Klicken Anzeigen von Setup-Informationen um die Partykonfiguration und das Partyconnector-Skript herunterzuladen, das Sie auf der Remote-Party ausführen können.
Klicken Sie auf das Symbol für das Herunterladen der Konfiguration " neben jedem der von Ihnen erstellten Fernunterrichtssysteme. Speichern Sie das Party Connector-Skript in einem Verzeichnis auf Ihrem Computer mit dem Namen
remote-test-system-configuration.py
.Klicken Sie auf Fertig.
Überprüfen Sie Ihren Fortschritt
Das folgende Bild zeigt das Experiment mit dem Status „Warten auf Remote-Systeme“.
Aufgabe 2: Modell als Partei trainieren
Um das Modell zu trainieren, müssen Sie die Datensätze herunterladen und dann Python-Skripte bearbeiten und ausführen. Gehen Sie wie folgt vor, um das Modell als Partei zu trainieren:
Aufgabe 2a: Herunterladen der Datensätze und Skripte
Erstellen Sie ein neues lokales Verzeichnis und verschieben Sie das Party Connector-Skript, das Sie in Task heruntergeladen haben 1e in das neue Verzeichnis.
Laden Sie den Data Handler mnist_keras_data_handler.py herunter, indem Sie mit der rechten Maustaste auf den Dateinamen klicken und dann auf Link speichern unter. Speichern Sie in demselben Verzeichnis wie das Verbindungsscript der Partei.
Bearbeiten Sie das Python-Skript des Datenhandlers, um Folgendes zu ändern:
ibm_watson_machine_learning
Zuibm_watsonx_ai
.Speichern Sie die Datei.
Laden Sie den MNIST-Handschriftendatensatz herunter aus unserer Ressourcendrehscheibe. Entpacken Sie es im selben Verzeichnis wie das Party-Connector-Skript, den Datenhandler und den Rest Ihrer Dateien, indem Sie den Befehl unzip ausführen.
unzip MNIST-pkl.zip
.
Sie haben jetzt das Party Connector-Skript.mnist_keras_data_handler.py
,mnist-keras-test.pkl
Undmnist-keras-train.pkl
im selben Verzeichnis.
Aufgabe 2b: watsonx.ai Runtime installieren
Wenn Sie Windows verwenden oder Linux führen Sie den folgenden Befehl aus:
pip install 'ibm_watsonx_ai[fl-rt23.1-py3.10]'
Wenn Sie Mac OS mit M-Serie CPU und Conda verwenden, laden Sie die Installationsskript und führen Sie dann aus:
./install_fl_rt23.1_macos.sh <name for new conda environment>
Aufgabe 2c: Bearbeiten und Ausführen des Party-Connector-Skripts
Ihr Party-Connector-Skript sieht ähnlich wie das folgende Skript aus:
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)
Bearbeiten Sie die Party-Connector-Datei.remote-test-systm-configuration.py
und nehmen Sie die folgenden Änderungen vor:
Geben Sie Ihre Anmeldeinformationen ein: Fügen Sie den API-Schlüssel für den im Remote-Trainingssystem definierten Benutzer ein. Wenn Sie noch keinen API-Schlüssel haben, gehen Sie zur SeiteIBM Cloud API-Schlüssel und klicken Sie auf API-Schlüssel erstellen, füllen Sie die Felder aus und klicken Sie auf Erstellen.
Im Party-Metadaten Geben Sie im Feld Name, Pfad und Informationen ein, die dem folgenden JSON-Text ähneln sollten.
"name": "MnistTFDataHandler", "path": "mnist_keras_data_handler.py", "info": { "train_file": "mnist-keras-train.pkl", "test_file": "mnist-keras-test.pkl" }
Speichern Sie das Party-Connector-Skript.
Führen Sie das Party-Connector-Skript aus, indem Sie entweder
python
oderpython3
je nachdem was du installiert hast.python remote-test-system-configuration.py
In der Benutzerschnittstelle können Sie den Status des Experiments für föderiertes überwachen.
Überprüfen Sie Ihren Fortschritt
Das folgende Bild zeigt das abgeschlossene Experiment.
Aufgabe 3: Speichern und Onlinebereitstellen des Modells
In diesem Abschnitt erfahren Sie, wie Sie das trainierte Modell speichern und bereitstellen können.
Aufgabe 3a: Speichern Sie Ihr Modell
- Klicken Sie in Ihrem abgeschlossenen Federated Learning-Experiment auf Aggregat speichern.
- Auf der Aggregiertes Modell im Projekt speichern Geben Sie auf dem Bildschirm einen Namen für das Modell ein. und klicken Sie auf Erstellen.
- Wenn Sie die Benachrichtigung sehen, dass das Modell erstellt wurde, klicken Sie auf Im Projekt anzeigen. Wenn Sie die Benachrichtigung verpassen, klicken Sie auf den Projektnamen, um zur Registerkarte „Assets“ zurückzukehren, und klicken Sie auf den Modellnamen, um ihn anzuzeigen.
Aufgabe 3b: Befördern Sie das Modell in einen Bereich
- Klicken Sie auf der Seite mit den Modelldetails auf " Promote" (Befördern), um den Bereitstellungsraum " aufzurufen.
- Wähle ein Zielraum aus der Liste oder erstellen Sie einen neuen Bereitstellungsbereich.
Wählen Einen neuen Bereitstellungsbereich erstellen.
Geben Sie einen Namen für den Bereitstellungsbereich ein.
Wählen Sie Ihren Speicherdienst aus.
Wählen Sie Ihren Machine-Learning-Dienst aus.
Klicken Sie auf Erstellen.
Wenn der Bereitstellungsbereich erstellt ist, schließen Sie das Fenster.
- Wählen Sie die Option Nach dem Hochstufen zum Modell im Bereich wechseln aus.
- Klicken Sie auf Hochstufen.
Aufgabe 3c: Erstellen und Anzeigen der Onlinebereitstellung
- Wenn das Modell im Bereitstellungsbereich angezeigt wird, klicken Sie auf Neue Bereitstellung.
- Wählen Sie Online als Bereitstellungstyp aus.
- Geben Sie einen Namen für die Bereitstellung an.
- Klicken Sie auf Erstellen.
- Warten Sie, bis sich der Bereitstellungsstatus ändert in Bereitgestellt und klicken Sie dann auf den Bereitstellungsnamen.
- Sehen Sie sich die Endpunkte und Codeausschnitte an, um diese Bereitstellung in Ihrer Anwendung zu verwenden.
Überprüfen Sie Ihren Fortschritt
Das folgende Bild zeigt die Bereitstellung.
Nächste Schritte
Sind Sie bereit, Ihr eigenes angepasstes Federated Learning-Experiment zu erstellen? Dann befolgen Sie die allgemeinen Schritte unter Federated Learning-Experiment erstellen.
Übergeordnetes Thema: Lernprogramm und Beispiele für Federated Learning