Utiliser Azure Pipelines avec Azure Machine Learning

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Vous pouvez utiliser un pipeline Azure DevOps pour automatiser le cycle de vie du Machine Learning. Certaines des opérations que vous pouvez automatiser sont les suivantes :

  • Préparation des données (opérations d’extraction, de transformation et de chargement)
  • Formation de modèles Machine Learning avec scale-out et scale-up à la demande
  • Déploiement de modèles Machine Learning en tant que services web publics ou privés
  • Surveillance des modèles Machine Learning déployés (par exemple, pour l’analyse des performances ou de la dérive des données)

Cet article va vous apprendre à créer une instance Azure Pipeline qui génère et déploie un modèle Machine Learning sur Azure Machine Learning. Vous allez entraîner un modèle de régression linéaire scikit-learn sur le jeu de données Diabetes.

Ce tutoriel utilise le SDK Python Azure Machine Learning v2 et l’extension Azure CLI ML v2.

Prérequis

Suivez le guide Démarrage rapide : Bien démarrer avec Azure Machine Learning pour :

  • Créer un espace de travail
  • Créer une instance de calcul basée sur le cloud à utiliser pour votre environnement de développement
  • Créer un cluster de calcul basé sur le cloud à utiliser pour entraîner votre modèle

Étape 1 : Obtenir le code

Effectuez une duplication (fork) du dépôt suivant sur GitHub :

https://github.com/azure/azureml-examples

Étape 2 : Se connecter à Azure Pipelines

Connectez-vous à Azure Pipelines. Une fois que vous êtes connecté, votre navigateur accède à https://dev.azure.com/my-organization-name et affiche votre tableau de bord Azure DevOps.

Dans votre organisation sélectionnée, créez un projet. Si votre organisation ne compte aucun projet, l’écran Pour commencer, créez un projet s’affiche. Dans le cas contraire, sélectionnez le bouton Nouveau projet dans l’angle supérieur droit du tableau de bord.

Étape 3 : Créer une connexion Azure Resource Manager

Vous aurez besoin d’une connexion Azure Resource Manager pour vous authentifier auprès du Portail Azure.

  1. Dans Azure DevOps, ouvrez la page Connexions de service.

  2. Choisissez + Nouvelle connexion de service, puis sélectionnez Azure Resource Manager.

  3. Sélectionnez la méthode d’authentification par défaut, Principal de service (automatique).

  4. Créez votre connexion de service. Définissez votre abonnement, votre groupe de ressources et votre nom de connexion.

    Capture d’écran de la connexion au service ARM.

Étape 4 : Créer un pipeline

  1. Accédez à Pipelines, puis sélectionnez Nouveau pipeline.

  2. Effectuez les étapes de l’Assistant en sélectionnant d’abord GitHub comme emplacement du code source.

  3. Vous serez peut-être redirigé vers GitHub pour vous connecter. Si c’est le cas, entrez vos informations d’identification GitHub.

  4. Quand la liste des dépôts s’affiche, sélectionnez le vôtre.

  5. Vous serez peut-être redirigé vers GitHub pour pouvoir installer l’application Azure Pipelines. Si c’est le cas, sélectionnez Approuver et installer.

  6. Sélectionnez le Pipeline de démarrage. Vous allez mettre à jour le modèle de pipeline de démarrage.

Étape 5 : Créer des variables

Vous devez déjà avoir un groupe de ressources dans Azure avec Azure Machine Learning. Pour déployer votre pipeline DevOps sur AzureML, vous devez créer des variables pour votre ID d’abonnement, votre groupe de ressources et votre espace de travail Machine Learning.

  1. Sélectionnez l’onglet Variables de votre page de modification de pipeline.

    Capture d’écran de l’option Variables dans l’édition du pipeline.

  2. Créez une variable, Subscription_ID, puis cochez la case Garder cette valeur secrète. Définissez la valeur sur votre ID d’abonnement pour le portail Azure.

  3. Créez une variable pour Resource_Group avec le nom du groupe de ressources pour Azure Machine Learning (exemple : machinelearning).

  4. Créez une variable pour AzureML_Workspace_Name avec le nom de votre espace de travail Azure ML (exemple : docs-ws).

  5. Cliquez sur Enregistrer pour enregistrer vos variables.

Étape 6 : Créer votre pipeline YAML

Supprimez le pipeline de démarrage et remplacez-le par le code YAML suivant. Dans ce pipeline, vous allez :

  • Utiliser la tâche de version de Python pour configurer Python 3.8 et installer les exigences du SDK.
  • Utiliser la tâche Bash pour exécuter des scripts bash pour le SDK Azure Machine Learning et l’interface CLI.
  • Utiliser la tâche Azure CLI pour transmettre les valeurs de vos trois variables et utiliser Papermill pour exécuter votre notebook Jupyter et envoyer une sortie push à AzureML.
trigger:
- main

pool:
  vmImage: ubuntu-latest

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.8'
- script: pip install -r sdk/python/dev-requirements.txt
  displayName: 'pip install notebook reqs'
- task: Bash@3
  inputs:
    filePath: 'sdk/python/setup.sh'
  displayName: 'set up sdk'

- task: Bash@3
  inputs:
    filePath: 'cli/setup.sh'
  displayName: 'set up CLI'

- task: AzureCLI@2
  inputs:
    azureSubscription: 'your-azure-subscription'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
           sed -i -e "s/<SUBSCRIPTION_ID>/$(SUBSCRIPTION_ID)/g" sklearn-diabetes.ipynb
           sed -i -e "s/<RESOURCE_GROUP>/$(RESOURCE_GROUP)/g" sklearn-diabetes.ipynb
           sed -i -e "s/<AML_WORKSPACE_NAME>/$(AZUREML_WORKSPACE_NAME)/g" sklearn-diabetes.ipynb
           sed -i -e "s/DefaultAzureCredential/AzureCliCredential/g" sklearn-diabetes.ipynb
           papermill -k python sklearn-diabetes.ipynb sklearn-diabetes.output.ipynb
    workingDirectory: 'sdk/python/jobs/single-step/scikit-learn/diabetes'

Étape 7 : Vérifier l’exécution de votre pipeline

  1. Ouvrez votre exécution de pipeline terminée et affichez la tâche Azure CLI. Vérifiez l’affichage des tâches pour vérifier que la tâche de sortie a terminé son exécution.

    Capture d’écran de la sortie de l’apprentissage automatique vers AzureML.

  2. Ouvrez Azure Machine Learning studio et accédez au travail sklearn-diabetes-example terminé. Sous l’onglet Métriques, vous devriez voir les résultats de la formation.

    Capture d’écran des résultats de la formation.

Nettoyer les ressources

Si vous ne prévoyez pas de continuer à utiliser votre pipeline, supprimez votre projet Azure DevOps. Dans le Portail Azure, supprimez votre groupe de ressources et votre instance Azure Machine Learning.