Utiliser GitHub Actions avec Azure Machine Learning
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 va vous apprendre à créer un workflow GitHub Actions, 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 NYC Taxi.
GitHub Actions utilise un fichier YAML (.yml) de workflow dans le chemin /.github/workflows/
de votre dépôt. Cette définition contient les étapes et les paramètres qui composent le workflow.
Prérequis
Avant de suivre les étapes décrites dans cet article, vérifiez que vous disposez des composants requis suivants :
Un espace de travail Azure Machine Learning. Si vous n’en avez pas, procédez comme suit dans le Guide de démarrage rapide : Créer des ressources d’espace de travail pour en créer un.
Pour installer le kit SDK Python v2, utilisez la commande suivante :
pip install azure-ai-ml azure-identity
Pour 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-identity
Pour plus d’informations, consultez Installer le kit SDK Python v2 pour Azure Machine Learning.
- 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. Vous pouvez utiliser un principal de service ou OpenID Connect.
Générer les informations d’identification du déploiement
Créez un principal de service à l’aide de la commande az ad sp create-for-rbac dans Azure CLI. Exécutez cette commande en utilisant Azure Cloud Shell dans le portail Azure ou en sélectionnant le bouton Essayer.
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
Le paramètre --json-auth
est disponible dans les versions d’Azure CLI >= 2.51.0. Les versions antérieures à celle-ci utilisent --sdk-auth
avec un avertissement de dépréciation.
Dans l’exemple ci-dessus, remplacez les espaces réservés par votre ID d’abonnement, le nom de votre groupe de ressources et le nom de votre application. La sortie correspond à un objet JSON avec les informations d’identification de l’attribution de rôle qui fournit l’accès à votre application App Service, similaire à ce qui suit. Copiez cet objet JSON pour une version ultérieure.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Créer des secrets
Dans GitHub, accédez à votre dépôt.
Sélectionnez Paramètres dans le volet de navigation.
Sélectionnez Sécurité > Secrets et variables > Actions.
Sélectionnez New repository secret (Nouveau secret de dépôt).
Collez l’intégralité de la sortie JSON de la commande Azure CLI dans le champ de valeur du secret. Nommez le secret
AZURE_CREDENTIALS
.Sélectionnez Ajouter un secret.
É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.sh
et mettez à jour ces variables dans le fichier.Variable Description GROUP nom du groupe de ressources LOCATION 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 allez utiliser 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-cluster
avec 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 votre secret de principal de service.
- 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.yml
Azure 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.yml
et 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@v1 with: creds: ${{secrets.AZURE_CREDENTIALS}} - 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-taxi
Sé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.