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.
Dans Azure DevOps, ouvrez la page Connexions de service.
Choisissez + Nouvelle connexion de service, puis sélectionnez Azure Resource Manager.
Sélectionnez la méthode d’authentification par défaut, Principal de service (automatique).
Créez votre connexion de service. Définissez votre abonnement, votre groupe de ressources et votre nom de connexion.
Étape 4 : Créer un pipeline
Accédez à Pipelines, puis sélectionnez Nouveau pipeline.
Effectuez les étapes de l’Assistant en sélectionnant d’abord GitHub comme emplacement du code source.
Vous serez peut-être redirigé vers GitHub pour vous connecter. Si c’est le cas, entrez vos informations d’identification GitHub.
Quand la liste des dépôts s’affiche, sélectionnez le vôtre.
Vous serez peut-être redirigé vers GitHub pour pouvoir installer l’application Azure Pipelines. Si c’est le cas, sélectionnez Approuver et installer.
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.
Sélectionnez l’onglet Variables de votre page de modification de pipeline.
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.Créez une variable pour
Resource_Group
avec le nom du groupe de ressources pour Azure Machine Learning (exemple :machinelearning
).Créez une variable pour
AzureML_Workspace_Name
avec le nom de votre espace de travail Azure ML (exemple :docs-ws
).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
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.
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.
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.