0 / 0
Retourner à la version anglaise de la documentation
Tutoriel Tensorflow d'apprentissage fédéré
Dernière mise à jour : 28 nov. 2024
Tutoriel Tensorflow d'apprentissage fédéré

Ce tutoriel présente l'utilisation de l'apprentissage fédéré avec pour objectif l'entraînement d'un modèle d'apprentissage automatique avec des données provenant de différents utilisateurs sans que les utilisateurs ne partagent leurs données. Les étapes sont effectuées dans un environnement à faible code avec l'interface utilisateur et avec une infrastructure Tensorflow .

Remarque :

Il s'agit d'un tutoriel pas à pas pour l'exécution d'une expérimentation d'apprentissage fédéré pilotée par l'interface utilisateur. Pour voir un exemple de code pour une approche pilotée par API, voir les exemples d'apprentissage fédéré Tensorflow.

Astuce :

Dans ce tutoriel, admin fait référence à l'utilisateur qui démarre l'expérimentation d'apprentissage fédéré, et party fait référence à un ou plusieurs utilisateurs qui envoient leurs résultats de modèle après le démarrage de l'expérimentation par l'administrateur. Bien que le tutoriel puisse être exécuté par l'administrateur et plusieurs parties, un seul utilisateur peut également effectuer une exécution complète en tant qu'administrateur et partie. Pour faciliter la démonstration dans le tutoriel suivant, un seul jeu de données est soumis par une seule partie. Pour plus d'informations sur l'administrateur et la partie, voir Terminologie.

Dans ce tutoriel, vous exécutez les tâches suivantes :

Aperçu du tutoriel

Regardez ce court tutoriel vidéo sur la façon de créer une expérience d'apprentissage fédéré avec watsonx.ai Studio.

Avertissement vidéo: Certaines étapes mineures et certains éléments graphiques de cette vidéo peuvent différer de votre plateforme.

Cette vidéo fournit une méthode visuelle pour apprendre les concepts et les tâches de cette documentation.

Prérequis

Vérifiez le Python version

Vérifiez que vous utilisez la même version de Python que l'administrateur. L'utilisation d'une version Python différente peut entraîner des problèmes de compatibilité. Pour voir les versions de Python compatibles avec différentes infrastructures, voir infrastructures et compatibilité de version Python.

Ouvrir un projet

  1. Utilisez un projet existant ou créez-en un nouveau. Vous devez disposer au moins des droits d'administrateur.

  2. Associez le service watsonx.ai Runtime à votre projet.

    1. Dans votre projet, cliquez sur Gérer > Services & intégrations.
    2. Cliquez sur Associer un service.
    3. Sélectionnez votre instance watsonx.ai Runtime dans la liste, et cliquez sur Associer; ou cliquez sur Nouveau service si vous n'en avez pas pour configurer une instance.

    Capture d'écran de l'association du service

Tâche 1 : Démarrer l'apprentissage fédéré en tant qu'administrateur

Dans votre projet, vous créerez une expérience d'apprentissage fédéré avec un Tensorflow cadre utilisant l’ensemble de données MNIST.

Tâche 1a: Définir les détails de l'expérience

  1. Dans votre projet, cliquez sur le Actifs onglet dans votre projet.

  2. Cliquez sur Nouvel actif > Entraîner des modèles sur des données distribuées pour créer l’actif Expérience d’apprentissage fédéré.

  3. Entrez un nom pour votre expérimentation et éventuellement une description.

  4. Vérifiez l'instance watsonx.ai Runtime associée sous Select a machine learning instance. Si vous ne voyez pas d'instance de Runtime watsonx.ai associée, suivez les étapes suivantes :

    1. Cliquez sur Associer une instance de service Machine Learning.

    2. Sélectionnez une instance existante et cliquez sur Associerou créez un nouveau service.

    3. Cliquez sur Recharger pour afficher le service associé.

      Capture d'écran de l'association du service

    4. Cliquez sur Suivant.

Tâche 1b: Configurer l'expérience

  1. Sur la page Configurer , sélectionnez une spécification matérielle.

  2. Pour Cadre d'apprentissage automatique, sélectionner Tensorflow 2.

  3. Sélectionner Classification pour le Type de modèle.

  4. Téléchargez le fichier Modèle non entraîné.

  5. Dans l'expérience d'apprentissage fédéré, cliquez sur Sélectionner sous Spécification du modèle.

    1. Faites glisser le fichier téléchargé nommé tf_mnist_model.zip dans la zone de fichier Télécharger .

    2. Si nécessaire, sélectionnez runtime-23.1-py3.10 pour le Spécification du logiciel dérouler.

    3. Tapez un nom pour votre modèle, puis cliquez sur Ajouter.

      Capture d'écran de l'importation d'un modèle initial

  6. Cliquez sur Moyenne pondérée pour la méthode Fusion, puis cliquez sur Suivant.

    Capture d'écran de l'interface utilisateur des méthodes de fusion

Tâche 1c: Définir les hyperparamètres

  1. Acceptez les hyperparamètres par défaut ou ajustez-les si nécessaire.

  2. Lorsque vous avez terminé, cliquez sur Suivant.

Tâche 1d: Sélectionnez des systèmes de formation à distance

  1. Cliquez sur Ajouter de nouveaux systèmes.

    Capture d'écran de l'interface utilisateur d'ajout RTS

  2. Tapez un nom pour votre système de formation à distance.

  3. Sous Identités autorisées, choisissez l'utilisateur qui est votre partie, puis cliquez sur Ajouter. Dans ce tutoriel, vous pouvez ajouter un utilisateur fictif ou vous-même, à des fins de démonstration.
    Cet utilisateur doit être ajouté à votre projet en tant que collaborateur de Éditeur ou des autorisations supérieures. Ajoutez des systèmes supplémentaires en répétant cette étape pour chaque partie distante que vous prévoyez d'utiliser.

  4. Lorsque vous avez terminé, cliquez sur Ajouter des systèmes.

    Capture d'écran de l'ajout d'utilisateurs

  5. Revenez à la page Sélection des systèmes d'entraînement à distance , vérifiez que votre système est sélectionné, puis cliquez sur Suivant.

Tâche 1e: Vérifiez vos paramètres

  1. Vérifiez les paramètres. et cliquez Créer.

  2. Surveillez le statut. Le statut de votre expérimentation d'apprentissage fédéré est En attente quand elle démarre. Lorsque votre expérimentation est prête pour que les parties prenantes s'y connectent, le statut devient Configuration - En attente de systèmes distants. Cette opération peut prendre plusieurs minutes.

  3. Cliquez sur Afficher les informations de configuration pour télécharger la configuration du groupe et le script du connecteur de groupe que vous pouvez exécuter sur le groupe distant.

  4. Cliquez sur l'icône Download config 'Télécharger config à côté de chacun des systèmes de formation à distance que vous avez créés. Enregistrez le script du connecteur de partie dans un répertoire de votre ordinateur avec le nomremote-test-system-configuration.py .

    Informations de configuration du système d'entraînement à distance

  5. Cliquez sur Terminé.

Icône de point de contrôle Vérifier votre progression

L'image suivante montre l'expérience avec le statut « en attente de systèmes distants ».

L'image suivante montre l'expérience avec le statut « en attente de systèmes distants ».

Tâche 2 : Former le modèle en tant que groupe

Pour entraîner le modèle, vous devez télécharger les ensembles de données, puis modifier et exécuter des scripts Python. Procédez comme suit pour entraîner le modèle en tant que partie:

Tâche 2a: Téléchargez les ensembles de données et les scripts

  1. Créez un nouveau répertoire local et placez le script de connecteur de partie que vous avez téléchargé dans la tâche 1e dans le nouveau répertoire.

  2. Téléchargez le gestionnaire de données mnist_keras_data_handler.py en faisant un clic droit sur le nom du fichier, puis en cliquant sur Enregistrer le lien sous. Sauvegardez-le dans le même répertoire que le script connecteur de parties.

    1. Modifiez le script python du gestionnaire de données pour changeribm_watson_machine_learning àibm_watsonx_ai .

    2. Sauvegardez le fichier.

  3. Téléchargez l'ensemble de données d'écriture manuscrite MNIST à partir de notre centre de ressources. Dans le même répertoire que le script du connecteur tiers, le gestionnaire de données et le reste de vos fichiers, décompressez-le en exécutant la commande unzipunzip MNIST-pkl.zip .
    Vous avez maintenant le script du connecteur de partie,mnist_keras_data_handler.py ,mnist-keras-test.pkl etmnist-keras-train.pkl dans le même répertoire.

Tâche 2b: Installer le moteur d'exécution watsonx.ai

  • Si vous utilisez Windows ou Linux, exécutez la commande suivante :

    pip install 'ibm_watsonx_ai[fl-rt23.1-py3.10]'
    
  • Si vous utilisez Mac OS avec un processeur de la série M et Conda, téléchargez le script d'installation puis exécutez :

    ./install_fl_rt23.1_macos.sh <name for new conda environment>
    

Tâche 2c: Modifier et exécuter le script du connecteur de partie

Votre script de connecteur de partie ressemble au script suivant :

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)

Modifiez le fichier du connecteur de partie,remote-test-systm-configuration.py et apportez les modifications suivantes :

  1. Fournissez vos identifiants : Collez la clé API de l'utilisateur défini dans le système de formation à distance. Si vous n'avez pas de clé API, accédez à la page Clés API d'IBM Cloud, puis cliquez sur Créer une clé API, remplissez les champs et cliquez sur Créer.

  2. Dans le party_metadonnées, indiquez le nom, le chemin et les informations, qui doivent être similaires au texte JSON suivant.

    "name": "MnistTFDataHandler",
     "path": "mnist_keras_data_handler.py",
     "info": {
             "train_file": "mnist-keras-train.pkl",
     	     "test_file": "mnist-keras-test.pkl"
             }
    
  3. Enregistrez le script du connecteur de partie.

  4. Exécutez le script du connecteur de partie en utilisant soitpython oupython3 en fonction de ce que vous avez installé.

    python remote-test-system-configuration.py
    

A partir de l'interface utilisateur, vous pouvez surveiller l'état de votre expérimentation d'apprentissage fédéré.

Icône de point de contrôle Vérifier votre progression

L'image suivante montre l'expérience terminée.

L'image suivante montre l'expérience terminée.

Tâche 3 : Enregistrer et déployer le modèle en ligne

Dans cette section, vous apprendrez à enregistrer et à déployer le modèle que vous avez formé.

Tâche 3a: Enregistrez votre modèle

  1. Dans votre expérience d’apprentissage fédéré terminée, cliquez sur Enregistrer l'agrégat.
  2. Sur le Enregistrer le modèle agrégé dans le projet écran, saisissez un nom pour le modèle. et cliquez Créer.
  3. Lorsque vous voyez la notification indiquant que le modèle est créé, cliquez sur Afficher dans le projet. Si vous manquez la notification, cliquez sur le nom du projet pour revenir à l'onglet Actifs, puis cliquez sur le nom du modèle pour l'afficher.

Tâche 3b: Promouvoir le modèle dans un espace

  1. Sur la page des détails du modèle, cliquez sur Promouvoir l'espace de déploiement " Promouvoir dans un espace de déploiement.
  2. Choisis un Espace cible dans la liste ou créez un nouvel espace de déploiement.
    1. Sélectionner Créer un nouvel espace de déploiement.

    2. Tapez un nom pour l'espace de déploiement.

    3. Sélectionnez votre service de stockage.

    4. Sélectionnez votre service d'apprentissage automatique.

    5. Cliquez sur Créer.

    6. Lorsque l'espace de déploiement est créé, fermez la fenêtre.

  3. Sélectionnez l'option Aller au modèle dans l'espace après l'avoir promu .
  4. Cliquez sur Promouvoir.

Tâche 3c: Créer et afficher le déploiement en ligne

  1. Lorsque le modèle s'affiche dans l'espace de déploiement, cliquez sur Nouveau déploiement.
  2. Sélectionnez En ligne comme Type de déploiement.
  3. Indiquez un nom pour le déploiement.
  4. Cliquez sur Créer.
  5. Attendez que l'état du déploiement passe à Déployé, puis cliquez sur le nom du déploiement.
  6. Affichez les points de terminaison et les extraits de code pour utiliser ce déploiement dans votre application.

Icône de point de contrôle Vérifier votre progression

L'image suivante montre le déploiement.

L'image suivante montre le déploiement.

Etapes suivantes

Est-vous prêt à créer votre propre expérimentation fédérée personnalisée ? Voir les étapes de haut niveau dans la création de votre expérience d'apprentissage fédéré.

Rubrique parent: Tutoriel et exemples d'apprentissage fédéré

Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus