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

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 est recurrence. Il peut également être cron, 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 être minute, 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é, contenant hours, minuteset weekdays.

    • Quand frequency estday, le schéma peut spécifier hours et minutes.
    • Quand frequency estweek et month, le schéma peut spécifierhours, minutes et weekdays.
    • 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 de mondayà sunday.
    • Si schedule elle est omise, la ou les tâches seront déclenchées en fonction de la logique de start_time, frequency et interval.
  • (Facultatif) start_time décrit la date et l’heure de début avec le fuseau horaire. S’il start_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. Si end_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 est cron.

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 et MONTH 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. Si start_time elle est omise, elle start_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. Si end_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

Capture d'écran de l'onglet « Tâches » dans le studio Azure Machine Learning, avec filtrage par nom d'affichage du travail.

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