Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’APPLIQUE À :
Extension Azure CLI v2 (actuelle)
Kit de développement logiciel (SDK) Python azure-ai-ml v2 (version actuelle)
Prise en main de GitHub Actions pour entraîner un modèle sur Azure Machine Learning.
Cet article vous apprend à créer un workflow GitHub Actions, qui génère et déploie un modèle Machine Learning sur Azure Machine Learning. Vous entraînez un modèle de régression linéaire scikit-learn sur le jeu de données NYC Taxi.
GitHub Actions utilise un fichier YAML (.yml) de workflow dans le chemin /.github/workflows/ de votre référentiel. Cette définition contient les étapes et les paramètres qui composent le workflow.
Prérequis
Un espace de travail Azure Machine Learning. Pour connaître les étapes de création d’un espace de travail, consultez Créer l’espace de travail.
Kit de développement logiciel (SDK) Azure Machine Learning pour Python v2. Pour installer le Kit de développement logiciel (SDK), utilisez la commande suivante :
pip install azure-ai-ml azure-identityPour mettre à jour une installation existante du Kit de développement logiciel (SDK) vers la version la plus récente, utilisez la commande suivante :
pip install --upgrade azure-ai-ml azure-identityPour plus d’informations, consultez la bibliothèque de client du package Azure Machine Learning pour Python.
- Un compte GitHub. Si vous n’en avez pas, inscrivez-vous gratuitement.
Étape 1 : Obtenir le code
Effectuez une duplication (fork) du dépôt suivant sur GitHub :
https://github.com/azure/azureml-examples
Clonez votre dépôt dupliqué localement.
git clone https://github.com/YOUR-USERNAME/azureml-examples
Étape 2 : S’authentifier auprès d’Azure
Vous devez d’abord définir comment vous authentifier auprès d’Azure. L’option recommandée, plus sécurisée, consiste à se connecter avec OpenID Connect à l’aide d’une application Microsoft Entra ou d’une identité managée affectée par l’utilisateur. Si nécessaire, vous pouvez également utiliser la connexion avec un principal de service et un secret. Cette approche est moins sécurisée et n’est pas recommandée.
Générer les informations d’identification du déploiement
Pour utiliser l’action de connexion Azure avec OIDC, vous devez configurer des informations d’identification d’identité fédérée sur une application Microsoft Entra ou une identité managée affectée par l’utilisateur.
Option 1 : application Microsoft Entra
- Créez une application Microsoft Entra avec un principal de service par Portail Azure, Azure CLI ou PowerShell.
- Copiez les valeurs pour ID client et ID d’abonnement et ID d’annuaire (locataire). Vous en aurez besoin dans votre workflow GitHub Actions.
- Attribuez un rôle approprié à votre principal de service par le Portail Azure, Azure CLI ou Azure PowerShell.
- Configurez des informations d’identification fédérées sur une application Microsoft Entra pour approuver les jetons émis par GitHub Actions pour votre référentiel GitHub.
Option 2 : identité managée affectée par l’utilisateur
- Créer une identité managée attribuée par l’utilisateur.
- Copiez les valeurs pour ID client et ID d’abonnement et ID d’annuaire (locataire). Vous en aurez besoin dans votre workflow GitHub Actions.
- Attribuez un rôle approprié à votre identité managée affectée par l’utilisateur.
- Configurez des informations d’identification fédérées sur une identité managée affectée par l’utilisateur pour approuver les jetons émis par GitHub Actions pour votre référentiel GitHub.
Créer des secrets
Vous devez fournir l’ID de client, l’ID d’annuaire (locataire) et l’ID d’abonnement de votre application à l’action de connexion. Vous pouvez fournir ces valeurs directement dans le workflow ou les stocker dans des secrets GitHub et les référencer dans votre workflow. L’enregistrement des valeurs en tant que secrets GitHub est l’option la plus sécurisée.
Dans GitHub, accédez à votre dépôt.
Sélectionnez Sécurité > Secrets et variables > Actions.
Sélectionnez New repository secret (Nouveau secret de dépôt).
Remarque
Pour améliorer la sécurité des flux de travail dans des référentiels publics, utilisez des secrets d’environnement plutôt que des secrets de référentiel. Si l’environnement nécessite une approbation, un travail ne peut pas accéder aux secrets d’environnement tant que l’un des réviseurs requis ne l’approuve pas.
Créez des secrets pour
AZURE_CLIENT_ID,AZURE_TENANT_IDetAZURE_SUBSCRIPTION_ID. Copiez ces valeurs à partir de votre application Microsoft Entra ou de l’identité managée affectée par l’utilisateur pour vos secrets GitHub :Secret GitHub Application Microsoft Entra ou identité managée affectée par l’utilisateur AZURE_CLIENT_ID ID client AZURE_SUBSCRIPTION_ID ID d’abonnement AZURE_TENANT_ID ID de l’annuaire (locataire) Remarque
Pour des raisons de sécurité, nous vous recommandons d’utiliser des secrets GitHub plutôt que de transmettre des valeurs directement au flux de travail.
Étape 3 : Mettre à jour setup.sh pour vous connecter à votre espace de travail Azure Machine Learning
Vous devez mettre à jour les variables du fichier d’installation CLI pour qu’elles correspondent à votre espace de travail.
Dans votre dépôt dupliqué, accédez à
azureml-examples/cli/.Modifiez
setup.shet mettez à jour ces variables dans le fichier.Variable Descriptif GROUPE nom du groupe de ressources EMPLACEMENT Lieu de votre espace de travail (exemple : eastus2)ESPACE DE TRAVAIL Nom de l’espace de travail Azure Machine Learning
Étape 4 : Mettre à jour pipeline.yml avec le nom de votre cluster de calcul
Vous utilisez un fichier pipeline.yml pour déployer votre pipeline Azure Machine Learning. Il s’agit d’un pipeline Machine Learning et non d’un pipeline DevOps. Vous devez uniquement effectuer cette mise à jour si vous utilisez un autre nom que cpu-cluster pour le nom de votre cluster de calcul.
- Dans votre dépôt dupliqué, accédez à
azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml. - Chaque fois que vous voyez
compute: azureml:cpu-cluster, mettez à jour la valeur decpu-clusteravec le nom de votre cluster de calcul. Par exemple, si votre cluster se nommemy-cluster, la nouvelle valeur estazureml:my-cluster. Il existe cinq mises à jour.
Étape 5 : Exécuter votre workflow GitHub Actions
Votre workflow s’authentifie auprès d’Azure, configure l’interface CLI Azure Machine Learning, puis utilise l’interface CLI pour entraîner un modèle dans Azure Machine Learning.
Votre fichier de workflow est composé d’une section comprenant un déclencheur et d’une section comprenant des travaux :
- Un déclencheur démarre le workflow dans la section
on. Le workflow s’exécute par défaut selon une planification Cron et quand une demande de tirage (pull request) est effectuée à partir des branches et des chemins correspondants. Découvrez plus en détail les événements qui déclenchent des workflows. - Dans la section des travaux du workflow, vous extrayez le code et vous vous connectez à Azure avec l’action de connexion à Azure en utilisant OpenID Connect.
- La section des travaux comprend également une action d’installation qui installe et configure l’interface CLI Machine Learning (v2). Une fois l’interface CLI installée, l’action d’exécution des travaux exécute votre fichier
pipeline.ymlAzure Machine Learning pour entraîner un modèle avec les données de NYC Taxi.
Activer votre workflow
Dans votre dépôt dupliqué, ouvrez
.github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.ymlet vérifiez que votre workflow ressemble à ceci.name: cli-jobs-pipelines-nyc-taxi-pipeline on: workflow_dispatch: schedule: - cron: "0 0/4 * * *" pull_request: branches: - main - sdk-preview paths: - cli/jobs/pipelines/nyc-taxi/** - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml - cli/run-pipeline-jobs.sh - cli/setup.sh jobs: build: runs-on: ubuntu-latest steps: - name: check out repo uses: actions/checkout@v2 - name: azure login uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - name: setup run: bash setup.sh working-directory: cli continue-on-error: true - name: run job run: bash -x ../../../run-job.sh pipeline.yml working-directory: cli/jobs/pipelines/nyc-taxiSélectionnez Afficher les exécutions.
Activez les workflows en sélectionnant I understand my workflows, go ahead and enable them (Je comprends mes workflows. Continuer l’opération et activer les workflows).
Sélectionnez le workflow cli-jobs-pipelines-nyc-taxi-pipeline, puis choisissez Activer le workflow.
Sélectionnez Exécuter le workflow, puis choisissez l’option Exécuter le workflow.
Étape 6 : Vérifier l’exécution de workflow
Ouvrez l’exécution de workflow qui s’est achevée, puis vérifiez que le travail de build s’est correctement exécuté. Vous voyez une coche verte en regard du travail.
Ouvrez Azure Machine Learning Studio, et accédez à nyc-taxi-pipeline-example. Vérifiez que chaque partie de votre travail (préparation, transformation, entraînement, prédiction, scoring) s’est effectuée, et que vous voyez une coche verte.
Nettoyer les ressources
Lorsque votre groupe de ressource et référentiel ne sont plus nécessaires, nettoyez les ressources que vous avez déployées en supprimant le groupe de ressources et votre référentiel GitHub.