Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’APPLIQUE À :Extension Azure CLI v2 (actuelle)
Kit de développement logiciel (SDK) Python azure-ai-ml v2 (version actuelle)
Azure Machine Learning vous permet d’intégrer GitHub Actions pour automatiser le cycle de vie de Machine Learning. Certaines des opérations que vous pouvez automatiser sont les suivantes :
- Déploiement de l’infrastructure Azure Machine Learning
- 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)
Dans cet article, vous allez découvrir comment utiliser Azure Machine Learning pour configurer un pipeline MLOps de bout en bout qui exécute une régression linéaire pour prédire les tarifs des taxis à New York. Le pipeline est composé de composants, chacun servant des fonctions différentes, qui peuvent être inscrits auprès de l’espace de travail, versionnés et réutilisés avec différentes entrées et sorties. Vous allez utiliser l’architecture Azure recommandée pour MLOps et l’accélérateur de solution Azure MLOps (v2) pour configurer rapidement un projet MLOps dans Azure Machine Learning.
Conseil
Nous vous recommandons de comprendre certaines des architectures Azure recommandées pour MLOps avant d’implémenter une solution. Vous devez choisir la meilleure architecture pour votre projet Machine Learning donné.
Prérequis
- Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer. Essayez la version gratuite ou payante de Machine Learning.
- Un espace de travail Machine Learning.
- Git en cours d’exécution sur votre ordinateur local.
- GitHub en tant que référentiel de contrôle de code source
Notes
Git version 2.27 ou ultérieure est obligatoire. Pour plus d’informations sur l’installation de la commande Git, consultez https://git-scm.com/downloads et sélectionnez votre système d’exploitation
Important
Les commandes CLI de cet article ont été testées à l’aide de Bash. Si vous utilisez un autre interpréteur de commandes, vous pouvez rencontrer des erreurs.
Configurez l'authentification avec Azure et GitHub Actions
Avant de pouvoir configurer un projet MLOps avec Machine Learning, vous devez configurer l’authentification pour GitHub Actions.
Créer un principal du service
Créez un principal de service Prod pour cette démonstration. Vous pouvez en ajouter d’autres en fonction du nombre d’environnements sur lesquels vous souhaitez travailler (Dev, Prod ou les deux). Ces principaux de service peuvent être créés à l’aide de l’une des méthodes suivantes :
Lancez Azure Cloud Shell.
Conseil
La première fois que vous lancez le Cloud Shell, vous êtes invité à créer un compte de stockage pour le Cloud Shell.
Si vous y êtes invité, choisissez Bash comme environnement utilisé dans le Cloud Shell. Vous pouvez également modifier les environnements dans la liste déroulante de la barre de navigation supérieure
Copiez les commandes bash suivantes sur votre ordinateur et mettez à jour les variables projectName, subscriptionId et environment avec les valeurs de votre projet. Cette commande accorde également le rôle Contributeur au principal de service dans l’abonnement fourni. Cette information est nécessaire pour que GitHub Actions utilise correctement les ressources de cet abonnement.
projectName="<your project name>" roleName="Contributor" subscriptionId="<subscription Id>" environment="<Prod>" #First letter should be capitalized servicePrincipalName="Azure-ARM-${environment}-${projectName}" # Verify the ID of the active subscription echo "Using subscription ID $subscriptionId" echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionId" az ad sp create-for-rbac --name $servicePrincipalName --role $roleName --scopes /subscriptions/$subscriptionId --json-auth echo "Please ensure that the information created here is properly save for future use."
Notes
Le paramètre
--json-auth
de la commandeaz ad sp create-for-rbac
est disponible dans les versions >= 2.51.0 d’Azure CLI. Les versions antérieures à celle-ci utilisent--sdk-auth
.Copiez vos commandes modifiées dans Azure Shell et exécutez-les (Ctrl + Maj + v).
Après avoir exécuté ces commandes, des informations relatives au principal de service vous sont présentées. Enregistrez ces informations dans un emplacement sûr. Elles seront utilisées plus loin dans ce guide.
{ "clientId": "<service principal client id>", "clientSecret": "<service principal client secret>", "subscriptionId": "<Azure subscription id>", "tenantId": "<Azure tenant id>", "activeDirectoryEndpointUrl": "https://login.microsoftonline.com", "resourceManagerEndpointUrl": "https://management.azure.com/", "activeDirectoryGraphResourceId": "https://graph.windows.net/", "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/", "galleryEndpointUrl": "https://gallery.azure.com/", "managementEndpointUrl": "https://management.core.windows.net/" }
Copiez l’ensemble de cette sortie, accolades incluses. Enregistrez ces informations dans un emplacement sûr. Elles seront utilisées plus loin dans ce guide.
Fermez le Cloud Shell une fois les principaux de service créés.
Configurez le référentiel GitHub
Dupliquer (fork) le référentiel de modèles de démonstration MLOps v2 dans votre organisation GitHub
Accédez à https://github.com/Azure/mlops-v2-gha-demo/fork pour dupliquer (fork) le référentiel de démonstration MLOps v2 dans votre organisation GitHub. Ce référentiel contient du code MLOps réutilisable qui peut être utilisé dans plusieurs projets.
Dans votre projet GitHub, sélectionnez Paramètres :
Sélectionnez ensuite Secrets, puis Actions :
Sélectionnez New repository secret (Nouveau secret de dépôt). Nommez ce secret AZURE_CREDENTIALS et collez la sortie du principal de service comme contenu du secret. Sélectionnez Ajouter un secret.
Ajoutez chacun des secrets GitHub suivants en utilisant les valeurs correspondantes de la sortie du principal de service comme contenu du secret :
- ARM_CLIENT_ID
- ARM_CLIENT_SECRET
- ARM_SUBSCRIPTION_ID
- ARM_TENANT_ID
Notes
Cette opération termine la section prérequis et le déploiement de l’accélérateur de solution peut se produire en conséquence.
Déployer l’infrastructure de projet Machine Learning avec GitHub Actions
Cette étape déploie le pipeline d’entraînement dans l’espace de travail Machine Learning créé aux étapes précédentes.
Conseil
Assurez-vous de bien comprendre les modèles architecturaux de l’accélérateur de solution avant d’extraire le référentiel MLOps v2 et de déployer l’infrastructure. Dans des exemples, vous utilisez le type de projet ML classique.
Configurer les paramètres d’environnement Machine Learning
Accédez à votre référentiel et sélectionnez le fichier config-infra-prod.yml
à la racine. Modifiez les paramètres suivants à votre convenance, puis commitez les modifications.
Ce fichier de configuration utilise les valeurs namespace et postfix des noms des artefacts pour assurer l'unicité. Mettez à jour la section suivante de la configuration à votre convenance. Le texte suivant montre les valeurs et les paramètres par défaut dans les fichiers :
namespace: mlopslite #Note: A namespace with many characters will cause storage account creation to fail due to storage account names having a limit of 24 characters.
postfix: ao04
location: westus
environment: prod
enable_aml_computecluster: true
enable_aml_secure_workspace: true
enable_monitoring: false
Notes
Si vous exécutez une charge de travail Deep Learning telle que CV ou NLP, assurez-vous que votre calcul GPU est disponible dans votre zone de déploiement. L’indicateur enable_monitoring dans ces fichiers présente la valeur par défaut False. L’activation de cet indicateur ajoute des éléments supplémentaires au déploiement pour prendre en charge la supervision Azure Machine Learning basée sur https://github.com/microsoft/AzureML-Observability. Cet indicateur active un cluster ADX et augmente le temps de déploiement et le coût de la solution MLOps.
Déployez l’infrastructure Machine Learning
Dans votre référentiel de projets GitHub (par exemple, taxi-fare-regression), sélectionnez Actions
Les workflows GitHub prédéfinis associés à votre projet sont affichés. Pour un projet Machine Learning classique, les workflows de travail disponibles ressemblent à la capture d’écran suivante :
Sélectionnez tf-gha-deploy-infra.yml pour déployer l’infrastructure Machine Learning à l’aide de GitHub Actions et Terraform.
Sur le côté droit de la page, sélectionnez Exécuter le workflow, puis sélectionnez la branche sur laquelle exécuter le workflow. Cette action peut déployer Dev Infrastructure si vous avez créé une branche de développement ou une infrastructure Prod si vous effectuez un déploiement à partir de main. Surveillez le workflow jusqu’à la fin de l’opération.
Une fois le pipeline terminé, vous pouvez trouver votre espace de travail Azure Machine Learning et les ressources associées en vous connectant au portail Azure. Ensuite, un pipeline d’entraînement et de scoring de modèle est déployé dans le nouvel environnement Machine Learning.
Exemple de scénario de formation et de déploiement
L’accélérateur de solution comprend du code et des données pour un échantillon de pipeline Machine Learning de bout en bout qui exécute une régression linéaire pour prédire les tarifs des taxis à NYC. Le pipeline est composé de composants, chacun servant des fonctions différentes, qui peuvent être inscrits auprès de l’espace de travail, versionnés et réutilisés avec différentes entrées et sorties. Les échantillons de pipelines et de flux de travail pour les scénarios Vision par ordinateur et NLP ont différentes étapes et étapes de déploiement.
Ce pipeline d’entraînement contient les étapes suivantes :
Préparer les données
- Ce composant prend plusieurs jeux de données de taxi (jaune et vert) et fusionne/filtre les données, et prépare les jeux de données train/val et d’évaluation.
- Entrée : données locales sous
./data/
(plusieurs fichiers .csv) - Sortie : jeu de données préparé unique (.csv) et jeux de données train/val/test.
Former le modèle
- Ce composant entraîne un régresseur linéaire avec le jeu d’entraînement.
- Entrée : jeu de données d’entraînement
- Sortie : Modèle entraîné (format pickle)
Évaluer le modèle
- Ce composant utilise le modèle entraîné pour prédire les tarifs des taxis sur le jeu de test.
- Entrée : modèle ML et jeu de données de test
- Sortie : performances du modèle et d’un indicateur de déploiement s’il faut déployer ou non.
- Ce composant compare les performances du modèle avec tous les modèles déployés précédemment sur le nouveau jeu de données de test et décide s’il faut promouvoir ou non le modèle en production. La promotion du modèle en production s’effectue en inscrivant le modèle dans l’espace de travail AML.
Inscription du modèle
- Ce composant évalue le modèle en fonction de la précision des prédictions dans le jeu de tests.
- Entrée : modèle entraîné et indicateur de déploiement.
- Sortie : modèle inscrit dans Machine Learning.
Déploiement du pipeline d’apprentissage du modèle
Ensuite, vous déployez le pipeline d’entraînement du modèle dans votre nouvel espace de travail Machine Learning. Ce pipeline crée une instance de cluster de calcul, inscrit un environnement d’entraînement définissant l’image Docker et les packages Python nécessaires, inscrit un jeu de données d’entraînement, puis démarre le pipeline d’entraînement décrit dans la dernière section. Une fois le travail terminé, le modèle entraîné est inscrit dans l’espace de travail Azure Machine Learning et disponible pour le déploiement.
Dans votre référentiel de projet GitHub (exemple : taxi-fare-regression), sélectionnez Actions
Sélectionnez deploy-model-training-pipeline dans les workflows répertoriés, puis sélectionnez Exécuter le flux de travail pour exécuter le workflow d’apprentissage du modèle. Ce processus prend plusieurs minutes, en fonction de la taille de calcul.
Une fois terminée, une exécution réussie inscrit le modèle dans l’espace de travail Machine Learning.
Notes
Si vous souhaitez vérifier la sortie de chaque étape individuelle, par exemple pour afficher la sortie d’une exécution ayant échoué, sélectionnez une sortie de travail, puis chaque étape du travail pour afficher la sortie de cette étape.
Avec le modèle entraîné inscrit dans l’espace de travail Machine Learning, vous êtes prêt à déployer le modèle pour le scoring.
Déploiement du modèle entraîné
Ce scénario inclut des flux de travail prédéfinis pour deux approches de déploiement d’un modèle entraîné, le scoring par lots ou le déploiement d’un modèle sur un point de terminaison pour un scoring en temps réel. Vous pouvez exécuter l’un ou l’autre de ces workflows pour tester les performances du modèle dans votre espace de travail Azure Machine Learning.
Point de terminaison en ligne
Dans votre référentiel de projets GitHub (par exemple, taxi-fare-regression), sélectionnez Actions
Sélectionnez deploy-online-endpoint-pipeline dans les flux de travail répertoriés à gauche, puis sélectionnez Exécuter le flux de travail pour exécuter le flux de travail du pipeline de déploiement du point de terminaison en ligne. Les étapes de ce pipeline créent un point de terminaison en ligne dans votre espace de travail Machine Learning, créent un déploiement de votre modèle sur ce point de terminaison, puis allouent le trafic au point de terminaison.
Une fois terminé, le point de terminaison en ligne est déployé dans l’espace de travail Azure Machine Learning et disponible pour les tests.
Pour tester ce déploiement, accédez à l’onglet Points de terminaison dans votre espace de travail Machine Learning, sélectionnez le point de terminaison et sélectionnez l’onglet Test . Vous pouvez utiliser l’exemple de données d’entrée situées dans le référentiel cloné à
/data/taxi-request.json
pour tester le point de terminaison.
Point de terminaison de lot
Dans votre référentiel de projets GitHub (par exemple, taxi-fare-regression), sélectionnez Actions
Sélectionnez deploy-batch-endpoint-pipeline dans les workflows, puis sélectionnez Exécuter le flux de travail pour exécuter le workflow du pipeline de déploiement de point de terminaison de lot. Les étapes de ce pipeline créent un cluster AmlCompute sur lequel exécuter le scoring par lots, créent le point de terminaison de lot dans votre espace de travail Machine Learning, puis créent un déploiement de votre modèle sur ce point de terminaison.
Une fois terminé, le point de terminaison de lot est déployé dans l’espace de travail Azure Machine Learning et disponible pour les tests.
Passage en production
Des exemples de scénarios peuvent être entraînés et déployés à la fois pour les branches et environnements Dev et Prod. Lorsque vous êtes satisfait des performances du pipeline d’entraînement, du modèle et du déploiement du modèle dans Test, les pipelines de développement et les modèles peuvent être répliqués et déployés dans l’environnement de production.
Les exemples de pipelines Machine Learning d’apprentissage et de déploiement et les workflows GitHub peuvent être utilisés comme point de départ pour adapter votre propre code de modélisation et vos propres données.
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 Machine Learning.
Étapes suivantes
- Installer et configurer le Kit de développement logiciel (SDK) Python v2
- Installer et configurer CLI Python v2
- Accélérateur de solution Azure MLOps (v2) sur GitHub
- Cours de formation sur MLOps avec Machine Learning
- En savoir plus sur Azure Pipelines avec Azure Machine Learning
- En savoir plus sur GitHub Actions avec Azure Machine Learning
- Déployer MLOps sur Azure en moins d’une heure - Vidéo de la communauté MLOps V2 Accelerator