Planifier des travaux de pipeline Machine Learning
S’APPLIQUE À :Extension Azure CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (version actuelle)
Dans cet article, vous allez apprendre à planifier des pipelines de Machine Learning pour qu’ils s’exécutent sur Azure. Vous pouvez planifier des tâches de routine telles que la reformation de modèles ou la mise à jour régulière de prédictions par lots en fonction du temps écoulé.
Cet article vous montre comment créer, récupérer, mettre à jour et désactiver des planifications à l’aide de l’interface de ligne de commande Azure Machine Learning, du SDK Azure Machine Learning v2 pour Python ou de l’interface utilisateur d’Azure Machine Learning studio.
Conseil
Pour planifier des travaux à l’aide d’un orchestrateur externe, comme Azure Data Factory ou Microsoft Fabric, envisagez de déployer vos travaux de pipeline sous un point de terminaison par lots. Pour plus d’informations, consultez Déployer des travaux de pipeline existants sur des points de terminaison par lots et Exécuter des modèles Azure Machine Learning à partir de Fabric à l’aide de points de terminaison par lots (préversion).
Prérequis
- Un abonnement Azure. Si vous n’en avez pas, créez un compte gratuit avant de commencer.
- Un espace de travail Azure Machine Learning. Pour créer un espace de travail, consultez Créer des ressources d’espace de travail.
- Une compréhension des pipelines Azure Machine Learning. Pour plus d’informations, consultez Qu’est-ce que les pipelines de Machine Learning.
- L’interface de ligne de commande Azure et l’extension
ml
installées selon les instructions de Installer, configurer et utiliser l’interface CLI (v2). - Des connaissances en création de pipelines YAML Azure Machine Learning. Pour plus d’informations, consultez Créer et exécuter des pipelines de Machine Learning à l’aide de composants avec l’interface CLI Azure Machine Learning.
Limites
- Les planifications Azure Machine Learning v2 ne prend pas en charge les déclencheurs basés sur les événements.
- Les planifications CLI et SDK v2 prennent en charge la spécification de modèles de périodicité complexes qui contiennent plusieurs horodatages de déclencheur. L’interface utilisateur du studio affiche les modèles complexes, mais ne prend pas en charge la modification.
- L’interface utilisateur du studio prend uniquement en charge les planifications v2 et ne peut pas répertorier ou accéder aux planifications v1 basées sur des pipelines ou des points de terminaison de pipeline publiés. Vous pouvez créer une planification pour un pipeline non publié.
- Si la périodicité est définie comme le 31e ou le 30e jour de chaque mois, la planification ne déclenche pas de travaux pour les mois au nombre de jours inférieur.
- Les valeurs
DAYS
etMONTHS
ne sont pas prises en charge dans les expressions de planification Cron. Les valeurs passées pour ces paramètres sont ignorées et traitées comme*
.
Créer une planification
Quand votre travail de pipeline offre des performances et des sorties satisfaisantes, vous pouvez configurer une planification pour déclencher automatiquement le travail à une fréquence régulière. Pour ce faire, vous devez créer une planification qui associe le travail à un déclencheur. Le déclencheur peut être un modèle recurrence
ou une expression cron
qui spécifie l’intervalle et la fréquence d’exécution du travail.
Dans les deux cas, vous devez d’abord définir un travail de pipeline, par inline ou en spécifiant un travail de pipeline existant. Vous pouvez définir des pipelines dans YAML et les exécuter à partir de l’interface CLI, créer des pipelines inline en Python ou composer des pipelines dans Azure Machine Learning studio. Vous pouvez créer des travaux de pipeline localement ou à partir de travaux existants dans l’espace de travail.
Vous pouvez créer des planifications v2 pour les travaux de pipeline v2 ou v1 à l’aide de l’interface utilisateur du studio, du SDK v2 ou de l’interface CLI v2. Vous n’avez pas besoin de publier d’abord des pipelines existants pour configurer des planifications pour les travaux de pipeline.
Les exemples de code de cet article proviennent de Travailler avec des planifications dans l’interface CLI Azure Machine Learning 2.0.
Définir une planification basée sur le temps avec un modèle de périodicité
Le code YAML suivant définit une planification périodique pour un travail de pipeline. Le paramètre type
requis spécifie que le type trigger
est recurrence
.
$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: simple_recurrence_job_schedule
display_name: Simple recurrence job schedule
description: a simple hourly recurrence job schedule
trigger:
type: recurrence
frequency: day #can be minute, hour, day, week, month
interval: 1 #every day
schedule:
hours: [4,5,10,11,12]
minutes: [0,30]
start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
time_zone: "Pacific Standard Time" # optional - default will be UTC
create_job: ./simple-pipeline-job.yml
# create_job: azureml:simple-pipeline-job
Vous devez ou pouvez fournir les paramètres de planification suivants :
Paramètres
frequency
(obligatoire) est l’unité de temps sur laquelle la planification s’enclenche. Peut êtreminutes
,hours
,days
,weeks
oumonths
.interval
(obligatoire) correspond au nombre d’unités de temps entre les périodicités planifiées.schedule
(facultatif) définit le modèle de périodicité, qui peut contenirhours
,minutes
etweekdays
. En cas d’omission, les travaux se déclenchent en fonction de la logique destart_time
,frequency
etinterval
.- Quand
frequency
estday
, le schéma peut spécifierhours
etminutes
. - Quand
frequency
estweek
oumonth
, le schéma peut spécifierhours
,minutes
etweekdays
.hours
est un entier ou une liste comprise entre 0 et 23.minutes
est un entier ou une liste comprise entre 0 et 59.weekdays
est une chaîne ou une liste demonday
àsunday
.
- Quand
start_time
(facultatif) est la date et l’heure de début avec le fuseau horaire. En cas d’omission, la valeur par défaut est égale à la planification de l’heure de création. Si l’heure de début se situe dans le passé, la première tâche est exécutée à l’heure d’exécution calculée suivante.end_time
(facultatif) décrit la date et l’heure de fin avec le fuseau horaire. En cas d’omission, la planification reste active jusqu’à ce qu’elle soit désactivée manuellement.time_zone
(facultatif) spécifie le fuseau horaire de la planification de périodicité. En cas d’omission, la valeur par défaut est Temps universel coordonné (UTC). Pour plus d’informations sur les valeurs du fuseau horaire, consultez l’annexe pour connaître les valeurs de fuseau horaire.
Après avoir créé la planification YAML, utilisez la commande suivante pour créer une planification via l’interface CLI :
# This action creates related resources for a schedule. It takes dozens of seconds to complete.
az ml schedule create --file simple-pipeline-job.yml --no-wait
Définir une planification basée sur le temps avec l’expression Cron
Une expression Cron peut spécifier un modèle de périodicité flexible et personnalisé pour une planification. Une expression Crontab standard est composée des champs délimités par un espace MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
. Un caractère générique *
signifie toutes les valeurs d’un champ.
Dans une expression Cron de planification du langage machine Azure :
MINUTES
est un entier ou une liste comprise entre 0 et 59.HOURS
est un entier ou une liste comprise entre 0 et 23.- Les valeurs
DAYS
ne sont pas prises en charge et sont toujours traitées comme*
. La valeur*
dansDAYS
signifie tous les jours d’un mois, ce qui varie selon le mois et l’année. - Les valeurs
MONTHS
ne sont pas prises en charge et sont toujours traitées comme*
. DAYS-OF-WEEK
est un entier ou une liste comprise entre 0 et 6, où 0 = Dimanche. Les noms des jours sont également acceptés.
Par exemple, l’expression 15 16 * * 1
signifie 16:15 UTC tous les lundis. Pour découvrir plus d’informations sur les expressions Crontab, consultez le wiki des expressions Crontab sur GitHub.
Le code YAML suivant définit une planification périodique pour un travail de pipeline. Le paramètre type
requis spécifie que le type trigger
est cron
.
$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: simple_cron_job_schedule
display_name: Simple cron job schedule
description: a simple hourly cron job schedule
trigger:
type: cron
expression: "0 * * * *"
start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
time_zone: "Pacific Standard Time" # optional - default will be UTC
# create_job: azureml:simple-pipeline-job
create_job: ./simple-pipeline-job.yml
Vous devez ou pouvez fournir les paramètres de planification suivants :
Paramètres
expression
(obligatoire) est une expression Crontab standard qui exprime une planification périodique.start_time
(facultatif) est la date et l’heure de début de planification avec le fuseau horaire. Par exemple,start_time: "2022-05-10T10:15:00-04:00"
signifie que la planification commence à partir de 10:15 le 10 mai 2022 dans le fuseau horaire UTC-4. En cas d’omission, la valeur par défaut est égale à la planification de l’heure de création. Si l’heure de début se situe dans le passé, la première tâche est exécutée à l’heure d’exécution calculée suivante.end_time
(facultatif) décrit la date et l’heure de fin avec le fuseau horaire. En cas d’omission, la planification reste active jusqu’à ce qu’elle soit désactivée manuellement.time_zone
(facultatif) spécifie le fuseau horaire de la planification de périodicité. En cas d’omission, la valeur par défaut est UTC.
Après avoir créé la planification YAML, utilisez la commande suivante pour créer une planification via l’interface CLI :
# This action creates related resources for a schedule. It takes dozens of seconds to complete.
az ml schedule create --file simple-pipeline-job.yml --no-wait
Modifier les paramètres de travail lorsque vous définissez des planifications
Parfois, vous pouvez souhaiter que les travaux déclenchés par des planifications présentent des configurations différentes par rapport aux travaux de test. Lorsque vous définissez une planification à l’aide d’un travail existant, vous pouvez modifier les paramètres du travail. Cette approche vous permet de définir plusieurs planifications qui utilisent le même travail avec différentes entrées.
Lorsque vous définissez une planification, vous pouvez modifier le settings
, inputs
ou outputs
à utiliser lors de l’exécution du travail de pipeline. Vous pouvez également modifier le experiment_name
du travail déclenché.
La définition de planification suivante modifie les paramètres d’un travail existant.
$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: cron_with_settings_job_schedule
display_name: Simple cron job schedule
description: a simple hourly cron job schedule
trigger:
type: cron
expression: "0 * * * *"
start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
time_zone: "Pacific Standard Time" # optional - default will be UTC
create_job:
type: pipeline
job: ./simple-pipeline-job.yml
# job: azureml:simple-pipeline-job
# runtime settings
settings:
#default_compute: azureml:cpu-cluster
continue_on_step_failure: true
inputs:
hello_string_top_level_input: ${{name}}
tags:
schedule: cron_with_settings_schedule
Utiliser des expressions prises en charge dans les planifications
Lorsque vous définissez une planification, vous pouvez utiliser les expressions macro suivantes pour définir des valeurs de paramètres dynamiques qui sont résolues en valeurs réelles pendant le runtime du travail.
Expression | Description | Propriétés prises en charge |
---|---|---|
${{name}} |
Nom du travail | Chemin outputs du travail de pipeline |
${{creation_context.trigger_time}} |
Heure de déclenchement du travail | Type de chaîne inputs du travail de pipeline |
Gérer la planification
Vous pouvez répertorier, afficher les détails, mettre à jour, désactiver, activer et supprimer des planifications dans un espace de travail.
Répertorier les planifications
az ml schedule list
Afficher les détails de la planification
az ml schedule show -n simple_cron_job_schedule
Créer une planification
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Remarque
Pour mettre à jour plus que de simples balises et la description, envisagez d’utiliser az ml schedule create --file update_schedule.yml
.
Désactiver une planification
az ml schedule disable -n simple_cron_job_schedule --no-wait
Activer une planification
az ml schedule enable -n simple_cron_job_schedule --no-wait
Supprimer une planification
Important
Vous devez d’abord désactiver une planification pour la supprimer. La suppression est permanente et irréversible.
az ml schedule delete -n simple_cron_job_schedule
Interroger des travaux déclenchés à partir d’une planification
Les travaux déclenchés par une planification spécifique présentent tous le nom d’affichage <schedule_name>-YYYYMMDDThhmmssZ
. Par exemple, si une planification nommée named-schedule
s’exécute toutes les 12 heures à compter du 1er janvier 2021, à 06:00, les noms d’affichage des travaux créés sont les suivants :
- named-schedule-20210101T060000Z
- named-schedule-20210101T180000Z
- named-schedule-20210102T060000Z
- nommé-schedule-20210102T180000Z, et ainsi de suite
Vous pouvez également appliquer une requête JMESPath Azure CLI pour interroger les travaux déclenchés par un nom de planification.
# query triggered jobs from schedule, please replace the simple_cron_job_schedule to your schedule name
az ml job list --query "[?contains(display_name,'simple_cron_schedule')]"
Conseil
L’onglet Historique des travaux de la page des détails de la planification dans le studio fournit un moyen simple de rechercher tous les travaux déclenchés par une planification.
Prise en charge du contrôle d’accès en fonction du rôle (RBAC)
Étant donné que les planifications sont utilisées pour la production, il est important de réduire la possibilité et l’impact d’une opération incorrecte. Les administrateurs d’espace de travail peuvent restreindre l’accès à la création et à la gestion de la planification dans un espace de travail.
Les administrateurs peuvent configurer les règles d’action suivantes relatives aux planifications dans le portail Azure. Pour plus d’informations, consultez Gérer l’accès aux espaces de travail Azure Machine Learning.
Action | Description | Règle |
---|---|---|
Lire | Obtenir et répertorier des planifications | Microsoft.MachineLearningServices/workspaces/schedules/read |
Write | Créer, mettre à jour, désactiver et activer des planifications | Microsoft.MachineLearningServices/workspaces/schedules/write |
Supprimer | Supprimer des planifications | Microsoft.MachineLearningServices/workspaces/schedules/delete |
Considérations relatives aux coûts
Les planifications sont facturées en fonction du nombre de planifications. Chaque planification crée une application logique qui héberge Azure Machine Learning au nom de l’utilisateur (HOBO).
L’application logique revient à l’abonnement Azure de l’utilisateur. Les coûts des ressources HOBO sont facturés à l’aide du même compteur émis par le fournisseur de ressources d’origine. Les frais apparaissent sous la ressource hôte, qui est l’espace de travail Azure Machine Learning.