Azure Pipelines

Effectué

L’une des options permettant d’automatiser les workflows consiste à utiliser Azure Pipelines, qui fait partie d’Azure DevOps Services. Avec Azure Pipelines, vous pouvez générer, tester et déployer automatiquement votre code.

Dans un projet Machine Learning, vous pouvez utiliser Azure Pipelines pour créer des ressources d’espace de travail Azure Machine Learning, telles que l’espace de travail lui-même, les ressources de données, les clusters de calcul ou les travaux, pour exécuter des pipelines Azure Machine Learning.

Remarque

Pour utiliser Azure Pipelines avec des pipelines Azure Machine Learning, vous devez connecter Azure DevOps à votre espace de travail Azure Machine Learning via une connexion de service.

Vous allez apprendre à utiliser Azure Pipelines pour exécuter un pipeline Azure Machine Learning.

Créer un pipeline Azure

Azure Pipelines vous aide à automatiser votre travail en exécutant des étapes chaque fois qu’un déclencheur se produit. Pour utiliser Azure Pipelines pour automatiser les charges de travail Machine Learning, vous déclenchez un pipeline Azure Machine Learning avec Azure Pipelines.

Diagramme de la hiérarchie des pipelines.

  1. Déclenchez un pipeline Azure. En règle générale, avec une modification du dépôt (commit ou demande de tirage).
  2. Exécutez le pipeline Azure, groupe de travaux qui se composent d’étapes.
  3. Une étape lance un pipeline Azure Machine Learning.
  4. Un pipeline Azure Machine Learning exécute des scripts ou des composants Azure Machine Learning.
  5. Un script ou un composant représente une tâche Machine Learning.

Pour créer le pipeline Azure, vous définissez les étapes que vous voulez inclure dans un fichier YAML. Dans le fichier YAML du pipeline Azure, vous allez inclure :

  • Déclencheur : L’événement qui lance le pipeline.
  • Phase : Groupe de travaux généralement alignés sur différents environnements de développement (dev/test/prod).
  • Travail : Ensemble d’étapes qui s’exécutent sur un agent. Pour les charges de travail Machine Learning, vous utiliserez probablement un agent Ubuntu hébergé par Microsoft.
  • Étape : Script ou tâche que vous voulez exécuter. Par exemple, une commande CLI qui lance un pipeline Azure Machine Learning (az ml job create).

Conseil

En savoir plus sur les concepts clés utilisés dans Azure Pipelines.

Pour exécuter un pipeline Azure Machine Learning quand une modification est apportée au dépôt Azure, vous pouvez utiliser un fichier YAML comme suit :

trigger: 
- main

stages:
- stage: deployDev
  displayName: 'Deploy to development environment'
  jobs:
    - deployment: publishPipeline
      displayName: 'Model Training'
      pool:
        vmImage: 'Ubuntu-18.04'
      environment: dev
      strategy:
       runOnce:
         deploy:
          steps:
          - template: aml-steps.yml
            parameters:
              serviceconnectionname: 'spn-aml-workspace-dev'

Le travail dans le pipeline utilise aml-steps.yml pour lister les étapes à exécuter. Pour exécuter un pipeline Azure Machine Learning défini dans pipeline-job.yml, vous pouvez utiliser l’interface CLI (v2). Pour exécuter le pipeline Azure Machine Learning en tant qu’étape dans le pipeline Azure, vous allez :

  1. Installer l’extension Azure Machine Learning pour l’interface CLI.
  2. Utiliser la commande az ml job create pour exécuter le travail de pipeline dans Azure Machine Learning.

Le fichier aml-steps.yml pour l’installation et le lancement du travail Azure Machine Learning peut ressembler à ceci :

parameters:
- name: serviceconnectionname
  default: ''

steps:
- checkout: self

- script: az extension add -n ml -y
  displayName: 'Install Azure ML CLI v2'

- task: AzureCLI@2
  inputs:
    azureSubscription: ${{ parameters.serviceconnectionname }}
    scriptType: bash
    scriptLocation: inlineScript
    workingDirectory: $(Build.SourcesDirectory)
    inlineScript: |
      cd src
      az ml job create --file aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws
  displayName: 'Run Azure Machine Learning Pipeline'

Comme indiqué dans l’exemple, vous pouvez utiliser des paramètres dans les définitions de pipeline (par exemple serviceconnectionname) pour rendre les fichiers YAML plus réutilisables pour d’autres projets.

Exécuter un pipeline avec Azure DevOps

Une fois que vous avez créé le fichier YAML et que vous l’avez stocké dans votre dépôt Azure, vous pouvez configurer Azure DevOps pour exécuter le pipeline.

Capture d’écran de la configuration du pipeline dans Azure DevOps.

  1. Dans Azure DevOps, accédez à l’onglet Pipelines et sélectionnez Pipelines.
  2. Créez un Nouveau pipeline.
  3. Sélectionnez Azure Repos Git comme emplacement de votre code.
  4. Choisissez le dépôt qui contient votre code.
  5. Choisissez Fichier YAML Azure Pipelines existant.
  6. Choisissez le chemin qui pointe vers le fichier YAML que vous avez créé pour le pipeline Azure.
  7. Après avoir examiné le pipeline, vous pouvez Enregistrer et exécuter.

Le pipeline est déclenché par un commit dans la branche main. Lorsque vous configurez le pipeline, Azure Pipelines commite une modification dans la branche main, ce qui déclenche l’exécution du pipeline pour la première fois. À tout moment après la configuration, vous pouvez déclencher le pipeline en poussant les commits dans le dépôt de Visual Studio Code ou d’Azure Repos.

Capture d’écran du travail ayant échoué dans Azure Pipelines.

Lorsque vous sélectionnez un travail, vous pouvez afficher son processus. Chaque étape d’un travail est reflétée dans le volet de navigation à gauche. La vue d’ensemble montre les étapes qui ont réussi et qui ont échoué. Tous les messages d’erreur potentiels s’affichent dans l’interface de ligne de commande lorsque vous sélectionnez une étape. En examinant la sortie, vous serez en mesure de résoudre l’erreur.

Lorsqu’une tâche déclenche l’exécution d’un pipeline Azure Machine Learning, vous pouvez aussi passer en revue l’exécution du pipeline dans l’espace de travail Azure Machine Learning pour voir les métriques ou erreurs susceptibles de vous intéresser.