Planifier des travaux de pipeline Machine Learning
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (actuelle)
Dans cet article, vous allez découvrir comment planifier programmatiquement l’exécution d’un pipeline sur Azure, puis comment effectuer cette tâche à l’aide de l’interface utilisateur de planification. Vous pouvez créer une planification basée sur la durée calendaire. Les planifications basées sur le temps peuvent être utilisées pour prendre en charge les tâches de routine, telles que les modèles de réentraînement ou effectuer des prédictions par lots régulièrement pour les maintenir à jour. Après avoir appris à créer des planifications, vous allez découvrir comment les récupérer, les mettre à jour et les désactiver via l’interface CLI, le kit SDK et l’interface utilisateur studio.
Conseil
Si vous devez 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 de lot. Découvrir comment déployer des travaux sous un point de terminaison de lotet comment consommer des points de terminaison de lot à partir de Microsoft Fabric.
Prérequis
- Pour utiliser Azure Machine Learning, vous devez disposer d’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 d’Azure Machine Learning dès aujourd’hui.
Installez Azure CLI et l’extension
ml
. Suivez les étapes d’installation décrites dans Installer, configurer et utiliser l’interface CLI (v2).Créez un espace de travail Azure Machine Learning si vous n’en avez pas déjà un. Pour la création d’un espace de travail, consultez Installer, configurer et utiliser l’interface CLI (v2).
Planifier un travail de pipeline
Pour exécuter une tâche de pipeline de manière récurrente, vous allez créer une planification. Un Schedule
associe un travail et un déclencheur. Le déclencheur peut être cron
celui qui utilise l’expression cron pour décrire l’attente entre les exécutions ou recurrence
qui spécifient à l’aide de quelle fréquence déclencher le travail. Dans chaque cas, vous devez d’abord définir un travail de pipeline, il peut s’agir de travaux de pipeline existants ou d’un travail de pipeline défini en ligne, reportez-vous à Créer un travail de pipeline dans l’interface CLI et créer un travail de pipeline dans le KIT de développement logiciel (SDK).
Vous pouvez planifier un travail de pipeline yaml en local ou un travail de pipeline existant dans l’espace de travail.
Créer une planification
Créer une planification basée sur le temps avec le modèle de périodicité
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)
$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
trigger
contient les propriétés suivantes :
- (Obligatoire)
type
spécifie que le type de planification estrecurrence
. Il peut également êtrecron
, voir les détails dans la section suivante.
La liste continue ci-dessous.
Notes
Les propriétés suivantes qui doivent être spécifiées s’appliquent à l’interface CLI et au kit SDK.
(Obligatoire)
frequency
spécifie une unité de temps qui décrit la fréquence à laquelle la planification se déclenche. Peut êtreminute
,hour
,day
,week
,month
.(Obligatoire)
interval
spécifie le déclenchement de la planification en fonction de sa fréquence, c’est-à-dire le temps d’attente basé sur les unités de temps avant le nouveau déclenchement de la planification.(Facultatif)
schedule
définit le modèle de périodicité, contenanthours
,minutes
etweekdays
.- Quand
frequency
estday
, le schéma peut spécifierhours
etminutes
. - Quand
frequency
estweek
etmonth
, le schéma peut spécifierhours
,minutes
etweekdays
. hours
doit être un entier ou une liste, de 0 à 23.minutes
doit être un entier ou une liste, de 0 à 59.weekdays
peut être une chaîne ou une liste demonday
àsunday
.- Si
schedule
elle est omise, la ou les tâches seront déclenchées en fonction de la logique destart_time
,frequency
etinterval
.
- Quand
(Facultatif)
start_time
décrit la date et l’heure de début avec le fuseau horaire. S’ilstart_time
est omis, start_time sera égal à l’heure créée par le travail. Si l’heure de début est dans le passé, la première charge de travail est exécutée au moment d’exécution calculé suivant.(Facultatif)
end_time
décrit la date et l’heure de fin avec le fuseau horaire. Siend_time
elle est omise, la planification continue de déclencher des travaux jusqu’à ce que la planification soit désactivée manuellement.(Facultatif)
time_zone
spécifie le fuseau horaire de la périodicité. S’il est omis, par défaut, est UTC. Pour en savoir plus sur les valeurs de fuseau horaire, consultez l’annexe pour les valeurs de fuseau horaire.
Créer une planification basée sur le temps avec l’expression cron
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)
$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
La trigger
section définit les détails de la planification et contient les propriétés suivantes :
- (Obligatoire)
type
spécifie que le type de planification estcron
.
La liste continue ci-dessous.
(Obligatoire)
expression
utilise l’expression crontab standard pour exprimer une planification périodique. Une expression unique est composée de cinq champs délimités par l’espace :MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
Caractère générique unique (
*
), qui couvre toutes les valeurs du champ. Ainsi, un*
en jours signifie tous les jours d’un mois (qui varie avec le mois et l’année).L’exemple
expression: "15 16 * * 1"
ci-dessus signifie que 16:15 tous les lundis.Le tableau ci-dessous répertorie les valeurs valides pour chaque champ :
Champ Plage Commentaire MINUTES
0-59 - HOURS
0-23 - DAYS
- Non pris en charge. La valeur est ignorée et traitée comme *
.MONTHS
- Non pris en charge. La valeur est ignorée et traitée comme *
.DAYS-OF-WEEK
0-6 Zéro (0) signifie dimanche. Les noms des jours ont également été acceptés. Pour en savoir plus sur l’utilisation de l’expression crontab, consultez le wiki de l’expression Crontab sur GitHub .
Important
DAYS
etMONTH
ne sont pas pris en charge. Si vous transmettez une valeur, elle sera ignorée et traitée comme*
.(Facultatif)
start_time
spécifie la date et l’heure de début avec le fuseau horaire de la planification.start_time: "2022-05-10T10:15:00-04:00"
signifie que la planification commence à partir de 10:15:00 le 2022-05-10 dans le fuseau horaire UTC-4. Sistart_time
elle est omise, ellestart_time
est égale à la planification de l’heure de création. Si l’heure de début est dans le passé, la première charge de travail est exécutée au moment d’exécution calculé suivant.(Facultatif)
end_time
décrit la date et l’heure de fin avec le fuseau horaire. Siend_time
elle est omise, la planification continue de déclencher des travaux jusqu’à ce que la planification soit désactivée manuellement.(Facultatif)
time_zone
spécifie le fuseau horaire de l’expression. S’il est omis, par défaut, est UTC. Consultez l’annexe pour les valeurs de fuseau horaire.
Limites :
- La planification Azure Machine Learning v2 ne prend pas en charge le déclencheur basé sur les événements actuellement.
- Vous pouvez spécifier un modèle de périodicité complexe contenant plusieurs horodatages (timestamps) de déclencheur à l’aide du kit SDK/de l’interface CLI Azure Machine Learning v2. L’interface utilisateur affiche en revanche uniquement le modèle complexe, sans prendre en charge la modification.
- Si vous définissez la périodicité sur le 31e jour de chaque mois, la planification ne déclenche aucun travail les mois qui comptent moins de 31 jours.
Modifier les paramètres du runtime lors de la définition de la planification
Lorsque vous définissez une planification à l’aide d’un travail existant, vous pouvez modifier les paramètres d’exécution du travail. À l’aide de cette approche, vous pouvez définir des planifications multiples à l’aide du même travail avec différentes entrées.
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)
$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
Les propriétés suivantes peuvent être modifiées lors de la définition de la planification :
Propriété | Description |
---|---|
paramètres | Dictionnaire des paramètres à utiliser lors de l’exécution du travail de pipeline. |
inputs | Dictionnaire des entrées à utiliser lors de l’exécution du travail de pipeline. |
outputs | Dictionnaire des entrées à utiliser lors de l’exécution du travail de pipeline. |
experiment_name | Nom de l’expérience du travail déclenché. |
Notes
Les utilisateurs de l’interface utilisateur studio peuvent uniquement modifier les paramètres d’entrée, de sortie et d’exécution quand ils créent une planification. experiment_name
peut être modifié uniquement à l’aide de l’interface CLI ou du kit SDK.
Expressions prises en charge dans la planification
Lorsque vous définissez la planification, nous prenons en charge l’expression suivante qui sera résolue en valeur réelle pendant l’exécution du travail.
Expression | Description | Propriétés prises en charge |
---|---|---|
${{creation_context.trigger_time}} |
Heure à laquelle la planification est déclenchée. | Entrées de type chaîne du travail de pipeline |
${{name}} |
Nom de la tâche. | outputs.path du travail de pipeline |
Gérer la planification
Créer une planification
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)
Après avoir créé la planification yaml, vous pouvez utiliser la commande suivante pour créer une planification via l’interface CLI.
# This action will create related resources for a schedule. It will take dozens of seconds to complete.
az ml schedule create --file cron-schedule.yml --no-wait
Répertorier les planifications dans un espace de travail
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)
az ml schedule list
Vérifier les détails de la planification
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)
az ml schedule show -n simple_cron_job_schedule
Créer une planification
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Notes
Si vous souhaitez mettre à jour plus d’éléments que les étiquettes et la description, il est recommandé d’utiliser az ml schedule create --file update_schedule.yml
Désactiver une planification
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)
az ml schedule disable -n simple_cron_job_schedule --no-wait
Activer une planification
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)
az ml schedule enable -n simple_cron_job_schedule --no-wait
Interroger des travaux déclenchés à partir d’une planification
Tous les noms d’affichage des travaux déclenchés par la planification auront le nom d’affichage comme <schedule_name-YYYYMMDThhmmssZ>. Par exemple, si une planification portant un nom de planification nommée est créée avec une exécution planifiée toutes les 12 heures à compter du 6 janvier 2021, les noms d’affichage des travaux créés seront 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')]"
Notes
Pour trouver plus facilement l’ensemble des travaux déclenchés par une planification, consultez l’historique des travaux sur la page des détails de la planification à l’aide de l’interface utilisateur studio.
Supprimer une planification
Important
Une planification doit être désactivée pour être supprimée. La suppression est une action irréversible. Une fois qu’une planification est supprimée, vous ne pouvez plus y accéder ni la récupérer.
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)
az ml schedule delete -n simple_cron_job_schedule
Prise en charge RBAC (contrôle d’accès en fonction du rôle)
Les planifications étant généralement utilisées en production, les administrateurs de l’espace de travail peuvent souhaiter restreindre l’accès à la création et à la gestion des planifications au sein d’un espace de travail afin de réduire l’impact en cas d’utilisation incorrecte.
Il existe actuellement trois règles d’action liées aux planifications que vous pouvez configurer dans le portail Azure. Vous pouvez découvrir plus d’informations sur la procédure pour gérer l’accès à un espace de travail Azure Machine Learning.
Action | Description | Règle |
---|---|---|
Lire | Obtenir et répertorier les planifications dans l’espace de travail Machine Learning | Microsoft.MachineLearningServices/workspaces/schedules/read |
Write | Créer, mettre à jour, désactiver et activer des planifications dans l’espace de travail Machine Learning | Microsoft.MachineLearningServices/workspaces/schedules/write |
DELETE | Supprimer une planification dans l’espace de travail Machine Learning | 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 un hôte d’application logique Azure Machine Learning pour le compte de l’utilisateur (HOBO).
- Le coût des applications logiques reviendra à l’abonnement Azure de l’utilisateur, et vous constaterez que les coûts des ressources HOBO sont facturés à l’aide du même compteur que celui émis par le fournisseur de ressources d’origine. Les coûts sont affichés sous la ressource hôte (l’espace de travail).
Forum aux questions
Pourquoi mes planifications créées à l’aide du SDK ne sont-elles pas répertoriées dans l’interface utilisateur ?
L’interface utilisateur des planifications est destinée aux planifications v2. Par conséquent, vos planifications v1 ne sont ni répertoriées ni accessibles via l’interface utilisateur.
Toutefois, les planifications v2 prennent également en charge les travaux de pipeline v1. Il n’est pas nécessaire de publier le pipeline d’abord. Vous pouvez configurer directement des planifications pour un travail de pipeline.
Pourquoi mes planifications ne déclenchent-elles aucun travail à l’heure que j’ai définie auparavant ?
- Par défaut, les planifications utilisent le fuseau horaire UTC pour calculer l’heure du déclencheur. Vous pouvez spécifier le fuseau horaire dans l’Assistant Création ou mettre à jour le fuseau horaire dans la page des détails de la planification.
- Si vous définissez la périodicité sur le 31e jour de chaque mois, la planification ne déclenche aucun travail les mois qui comptent moins de 31 jours.
- Si vous utilisez des expressions Cron, MONTH n’est pas pris en charge. Si vous transmettez une valeur, celle-ci est ignorée et traitée comme *. Il s'agit d'une limitation connue.
Les planifications basées sur les événements sont-elles prises en charge ?
- Non, la planification v2 ne prend pas en charge les planifications basées sur les événements.
Étapes suivantes
- En savoir plus sur le schéma YAML de planification CLI (v2).
- Découvrez comment créer un travail de pipeline dans CLI v2.
- Découvrez comment créer un travail de pipeline dans le Kit de développement logiciel (SDK) v2.
- En savoir plus sur la syntaxe YAML principale de l’interface CLI (v2).
- En savoir plus sur les pipelines
- En savoir plus sur les composants.