Programación de trabajos de canalización de Machine Learning
SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)
En este artículo, aprenderá a programar canalizaciones de aprendizaje automático para que se ejecuten en Azure. Puede programar tareas rutinarias como volver a entrenar modelos o actualizar periódicamente predicciones por lotes en función del tiempo transcurrido.
En este artículo se muestra cómo crear, recuperar, actualizar y desactivar programaciones mediante la CLI de Azure Machine Learning, el SDK de Azure Machine Learning v2 para Python o la interfaz de usuario de Azure Machine Learning Studio.
Sugerencia
Para programar trabajos utilizando un orquestador externo, como Azure Data Factory o Microsoft Fabric, considere la posibilidad de desplegar sus trabajos de canalización bajo un punto final por lotes. Para más información, consulte Implementación de trabajos de canalización existentes en puntos de conexión por lotes y Ejecución de modelos de Azure Machine Learning desde Fabric mediante puntos de conexión por lotes (versión preliminar).
Requisitos previos
- Suscripción a Azure. Si no tienes una, crea una cuenta gratuita antes de empezar.
- Un área de trabajo de Azure Machine Learning. Para crear un área de trabajo, consulte Creación de recursos del área de trabajo.
- Descripción de las canalizaciones de Azure Machine Learning. Para más información, consulte ¿Qué son las canalizacionesde aprendizaje automático?
- La CLI de Azure y
ml
la extensión instaladas siguiendo las instrucciones de Instalación, configuración y uso de la CLI (v2). - Conocimientos sobre cómo crear canalizaciones YAML de Azure Machine Learning. Para obtener más información, consulte: Creación y ejecución de canalizaciones de aprendizaje automático mediante componentes con la CLI de Azure Machine Learning.
Limitaciones
- Las programaciones de Azure Machine Learning v2 no admiten desencadenadores basados en eventos.
- Las programaciones de CLI y SDK v2 admiten la especificación de patrones de periodicidad complejos que contienen varias marcas de tiempo de desencadenador. La interfaz de usuario de Studio muestra los patrones complejos, pero no admite su edición.
- La interfaz de usuario de Studio solo admite programaciones v2 y no puede enumerar ni acceder a las programaciones v1 basadas en canalizaciones publicadas o puntos de conexión de canalización. Puede crear una programación para una canalización no publicada.
- Si la periodicidad se establece como el día 31 o 30 de cada mes, la programación no desencadena trabajos en meses que tienen menos días.
DAYS
los valores yMONTHS
no se admiten en las expresiones de programación cron. Los valores pasados para estos parámetros se omiten y se tratan como*
.
Crear programación
Si tiene un trabajo de canalización con un rendimiento y unos resultados satisfactorios, puede configurar una programación para desencadenar automáticamente este trabajo de forma periódica. Para ello, debe crear una programación que asocie el trabajo a un desencadenador. El desencadenador puede ser un recurrence
patrón o una cron
expresión que especifica el intervalo y la frecuencia para ejecutar el trabajo.
En ambos casos, primero debe definir un trabajo de canalización, ya sea insertado o especificando un trabajo de canalización existente. Puede definir canalizaciones en YAML y ejecutarlas desde la CLI, crear canalizaciones insertadas en Python o crear canalizaciones en Azure Machine Learning Studio. Puede crear trabajos de canalización localmente o desde trabajos existentes en el área de trabajo.
Puede crear programaciones v2 para trabajos de canalización v2 o v1 mediante la interfaz de usuario de Studio, SDK v2 o la CLI v2. No es necesario publicar primero canalizaciones existentes para configurar programaciones para trabajos de canalización.
Los ejemplos de código de este artículo proceden de Trabajar con programación en la CLI de Azure Machine Learning 2.0.
Creación de una programación basada en tiempo con el patrón de periodicidad
El código YAML siguiente define una programación periódica para un trabajo de canalización. El parámetro necesario type
especifica que el trigger
tipo es 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
Debe o puede proporcionar los siguientes parámetros de programación:
Parámetros
frequency
(obligatorio) es la unidad de tiempo en la que se activa la programación. Puede serminutes
,hours
,days
,weeks
omonths
.interval
(obligatorio) es el número de unidades de tiempo entre periodicidades de programación.schedule
(opcional) define el patrón de periodicidad, que puede contenerhours
,minutes
yweekdays
. Si se omite, los trabajos se desencadenan según la lógica destart_time
,frequency
yinterval
.- Cuando
frequency
esday
, el patrón puede especificarhours
yminutes
. - Cuando
frequency
esweek
omonth
, el patrón puede especificarhours
,minutes
yweekdays
.hours
es un entero o una lista de 0 a 23.minutes
es un entero o una lista de 0 a 59.weekdays
puede ser una cadena o una lista demonday
asunday
.
- Cuando
start_time
(opcional) es la fecha y hora de inicio con la zona horaria. Si se omite, el valor predeterminado es igual a la hora de creación de la programación. Si la hora de inicio ya ha pasado, el primer trabajo se ejecuta en el siguiente tiempo de ejecución calculado.end_time
(opcional) es la fecha y hora de finalización con la zona horaria. Si se omite, la programación permanece activa hasta que se deshabilita manualmente.- (Opcional)
time_zone
especifica la zona horaria de la periodicidad. Si se omite, el valor predeterminado es Hora universal coordinada (UTC). Para obtener más información sobre los valores de zona horaria, vaya al apéndice de los valores de zona horaria.
Después de crear el código YAML de programación, podrá usar el siguiente comando para crear una programación a través de la 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
Creación de una programación basada en tiempo con la expresión cron
Una expresión cron puede especificar un patrón de periodicidad flexible y personalizado para una programación. Una expresión crontab estándar se compone de los campos delimitados por espacios MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
. Un carácter comodín *
significa todos los valores de un campo.
En una expresión cron de programación de lenguaje de Máquina de Azure:
MINUTES
es un entero o una lista de 0 a 59.HOURS
es un entero o una lista de 0 a 23.DAYS
los valores no se admiten y siempre se tratan como*
. El*
valor enDAYS
significa todos los días de un mes, que varía con mes y año.MONTHS
los valores no se admiten y siempre se tratan como*
.DAYS-OF-WEEK
es un entero o una lista de 0 a 6, donde 0 = domingo. También se aceptan nombres de días.
Por ejemplo, la expresión 15 16 * * 1
significa 4:15 UTC cada lunes. Para más información sobre las expresiones crontab, visite la wiki de la expresión crontab en GitHub.
El código YAML siguiente define una programación periódica para un trabajo de canalización. El parámetro necesario type
especifica que el trigger
tipo es 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
Debe o puede proporcionar los siguientes parámetros de programación:
Parámetros
expression
(obligatorio) es una expresión crontab estándar que expresa una programación periódica.start_time
(opcional) es la fecha y hora de inicio de la programación con la zona horaria. Por ejemplo,start_time: "2022-05-10T10:15:00-04:00"
significa que la programación comienza a partir de las 10:15:00 a. m. el 10 de mayo de 2022 en la zona horaria UTC-4. Si se omite, el valor predeterminado es igual a la hora de creación de la programación. Si la hora de inicio ya ha pasado, el primer trabajo se ejecuta en el siguiente tiempo de ejecución calculado.end_time
(opcional) es la fecha y hora de finalización con la zona horaria. Si se omite, la programación permanece activa hasta que se deshabilita manualmente.- (Opcional)
time_zone
especifica la zona horaria de la periodicidad. Si se omite, el valor predeterminado es UTC.
Después de crear el código YAML de programación, podrá usar el siguiente comando para crear una programación a través de la 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
Cambiar la configuración del trabajo al definir programaciones
En ocasiones, puede que quiera que los trabajos desencadenados por programaciones tengan configuraciones diferentes a las de los trabajos de prueba. Al definir una programación mediante un trabajo existente, puede cambiar la configuración del trabajo. Este enfoque le permite definir varias programaciones que usan el mismo trabajo con entradas diferentes.
Al definir una programación, puede cambiar, settings
, inputs
o outputs
para usarla al ejecutar el trabajo de canalización. También puede cambiar el experiment_name
del trabajo desencadenado.
La siguiente definición de programación cambia la configuración de un trabajo existente.
$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
Uso de expresiones admitidas en programaciones
Al definir una programación, puede usar las siguientes expresiones de macro para definir valores de parámetro dinámicos que se resuelven en valores reales durante el tiempo de ejecución del trabajo.
Expression | Descripción | Propiedades admitidas |
---|---|---|
${{name}} |
Nombre del trabajo | outputs ruta de acceso del trabajo de canalización |
${{creation_context.trigger_time}} |
Tiempo del desencadenador del trabajo | Tipo de cadena inputs del trabajo de canalización |
Administración de programación
Puede enumerar, ver detalles, actualizar, deshabilitar, habilitar y eliminar programaciones en un área de trabajo.
Enumerar programaciones
az ml schedule list
Detalles de la programación de trabajos
az ml schedule show -n simple_cron_job_schedule
Actualización de una programación
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Nota:
Para actualizar más que solo etiquetas y descripciones, considere la posibilidad de usar az ml schedule create --file update_schedule.yml
.
Deshabilitación de una programación
az ml schedule disable -n simple_cron_job_schedule --no-wait
Habilitación de una programación
az ml schedule enable -n simple_cron_job_schedule --no-wait
Eliminación de una programación
Importante
Primero debe deshabilitar una programación para eliminarla. La eliminación es permanente e irrecuperable.
az ml schedule delete -n simple_cron_job_schedule
Consulta de trabajos desencadenados desde una programación
Los trabajos desencadenados por una programación específica tienen el nombre <schedule_name>-YYYYMMDDThhmmssZ
para mostrar. Por ejemplo, si una programación denominada se named-schedule
ejecuta cada 12 horas a partir de las 6 a.m. el 1 de enero de 2021, los nombres para mostrar de los trabajos creados son los siguientes:
- named-schedule-20210101T060000Z
- named-schedule-20210101T180000Z
- named-schedule-20210102T060000Z
- named-schedule-20210102T180000Z, etc.
También puede aplicar la consulta JMESPath de la CLI de Azure para consultar los trabajos que desencadena un nombre de programación.
# 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')]"
Sugerencia
La pestaña Historial de trabajos de la página de detalles de programación de Studio proporciona una manera sencilla de encontrar todos los trabajos desencadenados por una programación.
Compatibilidad con control de acceso basado en rol (RBAC)
Dado que las programaciones se usan para producción, es importante reducir la posibilidad y el impacto de la inoperación incorrecta. Los administradores del área de trabajo pueden restringir el acceso a la creación y administración de programaciones en un área de trabajo.
Los administradores pueden configurar las siguientes reglas de acción relacionadas con las programaciones en Azure Portal. Para obtener más información, consulte Administración del acceso a un área de trabajo de Azure Machine Learning.
Acción | Descripción | Regla |
---|---|---|
Leer | Obtener y enumerar programaciones | Microsoft.MachineLearningServices/workspaces/schedules/read |
Escribir | Crear, actualizar, deshabilitar y habilitar programaciones | Microsoft.MachineLearningServices/workspaces/schedules/write |
Eliminar | Eliminación de programaciones | Microsoft.MachineLearningServices/workspaces/schedules/delete |
Consideraciones sobre los costos
Las programaciones se facturan en función del número de programaciones. Cada programación crea una aplicación lógica que Azure Machine Learning hospeda en nombre del usuario (HOBO).
La aplicación lógica se cobra de vuelta a la suscripción de Azure del usuario. Los costos de recursos HOBO se facturan con el mismo medidor emitido por el proveedor de recursos original. Los cargos aparecen en el recurso de host, que es el área de trabajo de Azure Machine Learning.