Jede Partei folgt diesen Schritten, um eine Verbindung zu einem gestarteten Aggregator herzustellen.
Öffnen Sie das Projekt und klicken Sie auf das Experiment Federated Learning.
Klicken Sie auf Setup-Informationen anzeigen und dann auf das Download-Symbol, um das Skript für den Party Connector herunterzuladen.
Jeder Teilnehmer muss das Skript für den Teilnehmeranschluss konfigurieren und gültige Anmeldedaten für die Ausführung des Skripts angeben. So sieht ein Beispiel für ein fertiges Skript für einen Party Connector 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: { "name": "MnistSklearnDataHandler", "path": "example.mnist_sklearn_data_handler", "info": { "npz_file":"./example_data/example_data.npz" } 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)
Parameter:
api_key
: '
Ihr IAM-API-Schlüssel. Um einen neuen API-Schlüssel zu erstellen, gehen Sie auf die IBM Cloud und klicken Sie auf IBM Cloud Pak for Data API-Schlüssel erstellen unter Verwalten > Zugriff (IAM) > API-Schlüssel.
Optional: Wenn Sie ein Skript aus einem anderen Projekt wiederverwenden, können Sie die aktualisierten '
project_id
, 'aggregator_id
und 'experiment_id
aus dem Setup-Informationsfenster kopieren und in das Skript übernehmen.Installieren Sie watsonx.ai Runtime mit dem neuesten Federated Learning Paket, falls Sie dies noch nicht getan haben:
- Wenn Sie die M-Serie auf einem Mac verwenden, installieren Sie das neueste Paket mit dem folgenden Skript:
# ----------------------------------------------------------------------------------------- # (C) Copyright IBM Corp. 2023. # https://opensource.org/licenses/BSD-3-Clause # ----------------------------------------------------------------------------------------- # # # Script to create a conda environment and install ibm_watsonx_ai with # the dependencies required for Federated Learning on MacOS. # The name of the conda environment to be created is passed as the first argument. # # Note: This script requires miniforge to be installed for conda. # usage=". install_fl_rt23.1_macos.sh conda_env_name" arch=$(uname -m) os=$(uname -s) if (($# < 1)) then echo $usage exit fi ENAME=$1 conda create -y -n ${ENAME} python=3.10 conda activate ${ENAME} pip install ibm_watsonx_ai if [ "$os" == "Darwin" -a "$arch" == "arm64" ] then conda install -y -c apple tensorflow-deps fi python - <<EOF import pkg_resources import platform import subprocess package = 'ibm_watsonx_ai' extra = 'fl-rt23.1-py3.10' extra_ = extra.replace('.','-') extra_s = '; extra == "{}"' remove = None add = [] if platform.system() == "Darwin" and platform.processor() == "arm": remove = 'tensorflow' add = ['tensorflow-macos==2.9.2'] pkgs = pkg_resources.working_set.by_key[package].requires(extras=[extra]) pkgs = [ p.__str__().removesuffix(extra_s.format(extra)).removesuffix(extra_s.format(extra_)) for p in pkgs if ( extra in p.__str__() or extra_ in p.__str__() ) and ( not remove or remove not in p.__str__() )] print( "Installing standard packages for {}[{}]:{}".format(package,extra,pkgs) ) print( "Installing additional packages:{}".format(add) ) cmd = [ 'pip', 'install'] + add + pkgs subprocess.run( cmd ) EOF
- Andernfalls installieren Sie mit dem folgenden Befehl:
'pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ 'ibm_watsonx_ai[fl-rt23.1-py3.10]'
Wenn Ihre Konfiguration abgeschlossen ist und Sie das Skript für den Party-Connector gespeichert haben, geben Sie diesen Befehl in eine Befehlszeile ein, um das Skript auszuführen:
python3 rts_<RTS Name>_<RTS ID>.py
Weitere Informationsquellen
Funktionen der Bibliothek für föderiertes Lernen
Übergeordnetes Thema: Erstellen eines föderalen Lernexperiments