Partager via


Tutoriel : Développement de modèles sur une station de travail cloud

Découvrez comment développer un script d’entraînement avec un notebook sur une station de travail cloud Azure Machine Learning. Ce tutoriel aborde les principes de base à connaître avant de commencer :

  • Installez et configurez la station de travail cloud. Votre station de travail cloud utilise une instance de calcul Azure Machine Learning, qui est préconfigurée avec des environnements pour répondre à vos différents besoins de développement de modèles.
  • Utilisez des environnements de développement cloud.
  • Utilisez MLflow pour suivre toutes les métriques de vos modèles depuis un notebook.

Prérequis

Pour utiliser Azure Machine Learning, vous avez besoin d’un espace de travail. Si vous n’en avez pas, suivez la procédure Créer les ressources nécessaires pour commencer pour créer un espace de travail et en savoir plus sur son utilisation.

Démarrer avec le calcul

La section Calcul de votre espace de travail vous permet de créer des ressources de calcul. Une instance de calcul est une station de travail basée sur le cloud complètement managée par Azure Machine Learning. Cette série de tutoriels utilise une instance de calcul. Vous pouvez également l’utiliser pour exécuter votre propre code et développer et tester des modèles.

  1. Connectez-vous à Azure Machine Learning Studio.
  2. Sélectionnez votre espace de travail s’il n’est pas déjà ouvert.
  3. Dans le volet de navigation gauche, sélectionnez Calcul.
  4. Si vous n’avez pas d’instance de calcul, l’option Nouveau s’affiche au milieu de l’écran. Sélectionnez Nouveau et remplissez le formulaire. Vous pouvez utiliser toutes les valeurs par défaut.
  5. Si vous avez une instance de calcul, sélectionnez-la dans la liste. Si elle est arrêtée, sélectionnez Démarrer.

Ouvrir Visual Studio Code (VS Code)

Une fois que vous avez une instance de calcul en cours d’exécution, vous pouvez y accéder de différentes façons. Ce tutoriel montre l’utilisation de l’instance de calcul à partir de VS Code. VS Code vous fournit un environnement de développement intégré (IDE) avec la puissance des ressources Azure Machine Learning.

Dans la liste des instances de calcul, sélectionnez le lien VS Code (Web) ou VS Code (Bureau) pour l’instance de calcul que vous souhaitez utiliser. Si vous choisissez VS Code (Bureau), une fenêtre contextuelle s’affiche vous demandant si vous souhaitez ouvrir l’application.

Capture d’écran montrant des liens pour lancer VS Code (Web) ou (Bureau).

Cette instance de VS Code est attachée à votre instance de calcul et à votre système de fichiers d’espace de travail. Même si vous l’ouvrez sur votre bureau, les fichiers que vous voyez sont des fichiers dans votre espace de travail.

Configurer un nouvel environnement pour le prototypage (facultatif)

Pour que votre script s’exécute, vous devez travailler dans un environnement configuré avec les dépendances et les bibliothèques attendues par le code. Cette section vous aide à créer un environnement adapté à votre code. Pour créer le nouveau noyau Jupyter auquel votre notebook va se connecter, vous allez utiliser un fichier YAML qui définit les dépendances.

  • Chargez un fichier.

    Les fichiers que vous chargez sont stockés dans un partage de fichiers Azure ; ces fichiers sont montés sur chaque instance de calcul et partagés dans l’espace de travail.

    1. Téléchargez ce fichier d’environnement conda, workstation_env.yml sur votre ordinateur à l’aide du bouton Télécharger le fichier brut en haut à droite.

    2. Faites glisser le fichier de votre ordinateur vers la fenêtre VS Code. Le fichier est chargé dans votre espace de travail.

    3. Déplacez le fichier sous votre dossier de nom d’utilisateur.

      Capture d’écran montrant comment charger un fichier.

    4. Sélectionnez ce fichier pour en afficher un aperçu et voir les dépendances qu’il spécifie. Vous verrez un contenu du type suivant :

    name: workstation_env
    # This file serves as an example - you can update packages or versions to fit your use case
    dependencies:
      - python=3.8
      - pip=21.2.4
      - scikit-learn=0.24.2
      - scipy=1.7.1
      - pandas>=1.1,<1.2
      - pip:
        - mlflow-skinny 
        - azureml-mlflow
        - psutil>=5.8,<5.9
        - ipykernel~=6.0
        - matplotlib
    
  • Créez un noyau.

    Utilisez maintenant le terminal pour créer un noyau Jupyter basé sur le fichier workstation_env.yml.

    1. Dans la barre de menus supérieure, sélectionnez Terminal > Nouveau terminal.

      Capture d’écran montrant l’outil d’ouverture de terminal dans la barre d’outils du notebook.

    2. Affichez vos environnements conda actuels. L’environnement actif est marqué d’un *.

      conda env list
      
    3. cd vers le dossier où vous avez chargé le fichier workstation_env.yml. Par exemple, si vous l’avez chargé dans votre dossier utilisateur :

      cd Users/myusername
      
    4. Vérifiez que le fichier workstation_env.yml se trouve dans ce dossier.

      ls
      
    5. Créez l’environnement en le basant sur le fichier conda fourni. La création de cet environnement prend quelques minutes.

      conda env create -f workstation_env.yml
      
    6. Activez le nouvel environnement.

      conda activate workstation_env
      

      Remarque

      Si vous voyez un CommandNotFoundError, suivez les instructions pour exécuter conda init bash, fermez le terminal et ouvrez-en un nouveau. Retentez ensuite la commande conda activate workstation_env.

    7. Vérifiez que l’environnement actif est le bon (encore une fois en recherchant l’environnement marqué d’un *).

      conda env list
      
    8. Créez un noyau Jupyter basé sur votre environnement actif.

      python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env" 
      
    9. Fermez la fenêtre de terminal.

Vous disposez maintenant d’un nouveau noyau. Vous ouvrirez ensuite un notebook et utiliserez ce noyau.

Créer un notebook

  1. Dans la barre de menus supérieure, sélectionnez Fichier > Nouveau fichier.
  2. Nommez votre nouveau fichier develop-tutorial.ipynb (ou entrez le nom de votre choix). Veillez à utiliser l’extension .ipynb.

Définir le noyau

  1. En haut à droite, sélectionnez Sélectionner le noyau.
  2. Sélectionnez Instance de calcul Azure ML (computeinstance-name).
  3. Sélectionnez le noyau que vous avez créé, Tutorial Workstation Env. Si vous ne le voyez pas, sélectionnez l’outil Actualiser en haut à droite.

Développer un script d’entraînement

Dans cette section, vous allez développer un script d’entraînement Python capable de prédire les défauts de paiement par crédit carte, en utilisant les jeux de données de test et d’entraînement préparés à partir du jeu de données UCI.

Ce code utilise sklearn pour l’entraînement et MLflow pour la journalisation des métriques.

  1. Commencez par le code qui va importer les packages et les bibliothèques que vous utiliserez dans le script d’entraînement.

    import os
    import argparse
    import pandas as pd
    import mlflow
    import mlflow.sklearn
    from sklearn.ensemble import GradientBoostingClassifier
    from sklearn.metrics import classification_report
    from sklearn.model_selection import train_test_split
  2. Ensuite, chargez et traitez les données pour cette expérience. Dans ce tutoriel, vous lisez les données d’un fichier sur Internet.

    # load the data
    credit_df = pd.read_csv(
        "https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv",
        header=1,
        index_col=0,
    )
    
    train_df, test_df = train_test_split(
        credit_df,
        test_size=0.25,
    )
  3. Préparez les données pour l’entraînement :

    # Extracting the label column
    y_train = train_df.pop("default payment next month")
    
    # convert the dataframe values to array
    X_train = train_df.values
    
    # Extracting the label column
    y_test = test_df.pop("default payment next month")
    
    # convert the dataframe values to array
    X_test = test_df.values
  4. Ajoutez du code pour démarrer la journalisation automatique avec MLflow, ce qui va vous permettre de suivre les métriques et les résultats. Du fait de la nature itérative du développement de modèles, MLflow vous permet de journaliser les paramètres et les résultats du modèle. Réexaminez ces exécutions pour comparer et comprendre le niveau de performance de votre modèle. Grâce à ces journaux, vous disposez également du contexte qui vous permet de déterminer le meilleur moment pour passer de la phase de développement à la phase d’entraînement de vos workflows dans Azure Machine Learning.

    # set name for logging
    mlflow.set_experiment("Develop on cloud tutorial")
    # enable autologging with MLflow
    mlflow.sklearn.autolog()
  5. Formez un modèle.

    # Train Gradient Boosting Classifier
    print(f"Training with data of shape {X_train.shape}")
    
    mlflow.start_run()
    clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1)
    clf.fit(X_train, y_train)
    
    y_pred = clf.predict(X_test)
    
    print(classification_report(y_test, y_pred))
    # Stop logging for this model
    mlflow.end_run()

    Remarque

    Vous pouvez ignorer les avertissements mlflow. Vous obtiendrez toujours le suivi de tous les résultats dont vous avez besoin.

Itérer

Maintenant que vous disposez des résultats du modèle, vous pouvez apporter des modifications et réessayer. Par exemple, essayez une autre technique de classifieur :

# Train  AdaBoost Classifier
from sklearn.ensemble import AdaBoostClassifier

print(f"Training with data of shape {X_train.shape}")

mlflow.start_run()
ada = AdaBoostClassifier()

ada.fit(X_train, y_train)

y_pred = ada.predict(X_test)

print(classification_report(y_test, y_pred))
# Stop logging for this model
mlflow.end_run()

Remarque

Vous pouvez ignorer les avertissements mlflow. Vous obtiendrez toujours le suivi de tous les résultats dont vous avez besoin.

Examiner les résultats

Maintenant que vous avez essayé deux modèles différents, utilisez les résultats suivis par MLFfow pour déterminer quel est le meilleur modèle. Vous pouvez vous concentrer sur des métriques telles que la précision ou sur d’autres indicateurs plus importants dans vos scénarios. Vous pouvez faire une analyse plus poussée de ces résultats en examinant les travaux créés par MLflow.

  1. Revenez à votre espace de travail dans Azure Machine Learning studio.

  2. Dans le volet de navigation gauche, sélectionnez Travaux.

    Capture d’écran montrant comment sélectionner Travaux dans la barre de navigation.

  3. Sélectionnez le lien du tutoriel Développer sur le cloud.

  4. Deux travaux différents sont présentés, un pour chaque modèle que vous avez essayé. Ces noms sont gérés automatiquement. Quand vous placez le pointeur sur un nom, utilisez éventuellement l’outil crayon situé en face du nom pour le changer.

  5. Sélectionnez le lien correspondant au premier travail. Le nom apparaît en haut. Vous pouvez également le renommer ici avec l’outil crayon.

  6. La page présente les détails du travail, notamment les propriétés, les sorties, les balises et les paramètres. Sous Balises figure estimator_name, qui décrit le type du modèle.

  7. Sélectionnez l’onglet Métriques pour afficher les métriques qui ont été journalisées par MLflow. (Attendez-vous à obtenir des résultats différents, car vous disposez d’un jeu d’entraînement différent.)

    Capture d’écran montrant les métriques d’un travail.

  8. Sélectionnez l’onglet Images pour voir les images générées par MLflow.

    Capture d’écran montrant les images d’un travail.

  9. Revenez aux métriques et images de l’autre modèle et passez-les en revue.

Créer un script Python

Créez maintenant un script Python depuis votre notebook pour l’entraînement de modèle.

  1. Dans votre fenêtre VS Code, cliquez avec le bouton droit sur le nom de fichier du notebook, puis sélectionnez Importer un notebook dans le script.

  2. Utilisez le menu Fichier > Enregistrer pour enregistrer ce nouveau fichier de script. Appelez-le train.py.

  3. Parcourez ce fichier et supprimez le code dont vous ne voulez pas dans le script d’entraînement. Par exemple, conservez le code pour le modèle que vous souhaitez utiliser, et supprimez le code pour le modèle dont vous ne voulez pas.

    • Veillez à conserver le code qui démarre la journalisation automatique (mlflow.sklearn.autolog()).
    • Quand vous exécutez le script Python de manière interactive (comme vous le faites ici), vous pouvez conserver la ligne qui définit le nom de l’expérience (mlflow.set_experiment("Develop on cloud tutorial")). Vous pouvez même la nommer différemment pour l’afficher en tant qu’entrée distincte dans la section Travaux. En revanche, quand vous préparerez le script pour un travail d’entraînement, cette ligne ne s’applique pas et doit être omise (la définition du travail inclut le nom de l’expérience).
    • Lorsque vous entraînez un seul modèle, les lignes destinées à démarrer et à arrêter une exécution (mlflow.start_run() et mlflow.end_run()) ne sont pas non plus nécessaires (elles n’ont aucun effet), mais vous pouvez les y laisser si vous le souhaitez.
  4. Une fois que vous avez terminé vos modifications, enregistrez le fichier.

Vous disposez maintenant d’un script Python à utiliser pour l’entraînement de votre modèle préféré.

Exécuter le script Python

Pour le moment, vous exécutez ce code sur votre instance de calcul, qui est votre environnement de développement Azure Machine Learning. Le tutoriel : Entraîner un modèle vous montre comment exécuter un script d’entraînement d’une manière plus scalable sur des ressources de calcul plus puissantes.

  1. Sélectionnez l’environnement que vous avez créé précédemment dans ce tutoriel en tant que version Python (workstations_env). Dans le coin inférieur droit du notebook, le nom de l’environnement s’affiche. Sélectionnez-le, puis sélectionnez l’environnement au milieu de l’écran.

    Capture d’écran montrant la sélection du nouvel environnement.

  2. Exécutez maintenant le script Python. Utilisez l’outil Exécuter le fichier Python en haut à droite.

    Capture d’écran montrant l’outil Exécuter le fichier Python en haut à droite de l’écran.

Remarque

Vous pouvez ignorer les avertissements mlflow. Vous obtiendrez toujours toutes les métriques et les images à partir de la journalisation automatique.

Examiner les résultats du script

Revenez à Travaux dans votre espace de travail dans Azure Machine Learning studio pour afficher les résultats de votre script d’entraînement. Gardez à l’esprit que les données d’entraînement changent à chaque répartition. De ce fait, les résultats diffèrent aussi d’une exécution à l’autre.

Nettoyer les ressources

Si vous comptez suivre d’autres tutoriels, passez aux Étapes suivantes.

Arrêter l’instance de calcul

Si vous ne comptez pas l’utiliser maintenant, arrêtez l’instance de calcul :

  1. Dans la zone de navigation gauche de Studio, sélectionnez Calculer.
  2. Sous les onglets supérieurs, sélectionnez Instances de calcul
  3. Sélectionnez l’instance de calcul dans la liste.
  4. Dans la barre d’outils supérieure, sélectionnez Arrêter.

Supprimer toutes les ressources

Important

Les ressources que vous avez créées peuvent être utilisées comme prérequis pour d’autres tutoriels d’Azure Machine Learning et des articles de procédure.

Si vous n’avez pas l’intention d’utiliser les ressources que vous avez créées, supprimez-les pour éviter des frais :

  1. Dans le portail Azure, dans le champ de recherche, saisissez Groupes de ressources et sélectionnez-le dans les résultats.

  2. Dans la liste, sélectionnez le groupe de ressources créé.

  3. Dans la page Vue d’ensemble, sélectionnez Supprimer le groupe de ressources.

    Capture d’écran des sélections permettant de supprimer un groupe de ressources dans le portail Azure.

  4. Entrez le nom du groupe de ressources. Puis sélectionnez Supprimer.

Étapes suivantes

Pour en savoir plus :

Ce tutoriel vous a montré les premières étapes du processus de création d’un modèle et du prototypage sur l’ordinateur où réside le code. Pour votre entraînement de production, découvrez comment utiliser ce script d’entraînement sur des ressources de calcul distantes plus puissantes :