Pianificare i processi della pipeline di Machine Learning
SI APPLICA A:Estensione ml dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)
Questo articolo illustra come pianificare l'esecuzione di pipeline di apprendimento automatico in Azure. È possibile pianificare attività di routine come la ripetizione del training dei modelli o l'aggiornamento regolare delle stime in batch in base al tempo trascorso.
Questo articolo illustra come creare, recuperare, aggiornare e disattivare le pianificazioni mediante l'interfaccia della riga di comando di Azure Machine Learning, Azure Machine Learning SDK v2 per Python o l'interfaccia utente dello studio di Azure Machine Learning.
Suggerimento
Per pianificare i processi usando un agente di orchestrazione esterno, come Azure Data Factory o Microsoft Fabric, è consigliabile distribuire i processi di pipeline in un endpoint batch. Per altre informazioni, vedere Distribuire processi di pipeline esistenti in endpoint batch e Eseguire modelli di Azure Machine Learning da Fabric usando endpoint batch (anteprima).
Prerequisiti
- Una sottoscrizione di Azure. Se non se ne dispone, creare un account gratuito prima di iniziare.
- Un'area di lavoro di Azure Machine Learning. Per creare un'area di lavoro, vedere Creare risorse dell'area di lavoro.
- Conoscenza delle pipeline di Azure Machine Learning. Per informazioni, vedere Cosa sono le pipeline di Azure Machine Learning?.
- Interfaccia della riga di comando di Azure ed estensione
ml
installate seguendo le istruzioni in Installare, configurare e usare l'interfaccia della riga di comando (v2). - Conoscenza della procedura di creazione di pipeline YAML di Azure Machine Learning. Per informazioni, vedere Creare ed eseguire pipeline di apprendimento automatico usando componenti con l'interfaccia della riga di comando di Azure Machine Learning.
Limiti
- Le pianificazioni di Azure Machine Learning v2 non supportano i trigger basati su eventi.
- Le pianificazioni dell'interfaccia della riga di comando e dell'SDK v2 supportano la specifica di criteri di ricorrenza complessi che contengono più timestamp di trigger. L'interfaccia utente dello studio visualizza i criteri complessi ma non ne supporta la modifica.
- L'interfaccia utente dello studio supporta solo le pianificazioni v2 e non è in grado di elencare o accedere alle pianificazioni v1 basate su pipeline pubblicate o endpoint di pipeline. È possibile creare una pianificazione per una pipeline non pubblicata.
- Se la ricorrenza è impostata al 31° o al 30° giorno di ogni mese, la pianificazione non attiva i processi in mesi che hanno meno giorni.
- I valori
DAYS
eMONTHS
non sono supportati nelle espressioni di pianificazioni Cron. I valori passati per questi parametri vengono ignorati e considerati come*
.
Creare una programmazione
Quando le prestazioni e gli output di un processo di pipeline sono soddisfacenti, è possibile configurare una pianificazione per l’attivazione automatica del processo a intervalli regolari. A questo scopo è necessario creare una pianificazione che associ il processo a un trigger. Il trigger può essere un criterio recurrence
o un'espressione cron
che specifica l'intervallo e la frequenza di esecuzione del processo.
In entrambi i casi occorre prima definire un processo di pipeline, inline o specificandone uno esistente. È possibile definire pipeline in YAML ed eseguirle dall'interfaccia della riga di comando, creare pipeline inline in Python oppure comporre pipeline nello studio di Azure Machine Learning. È possibile creare processi di pipeline in locale o da processi esistenti nell'area di lavoro.
È possibile creare pianificazioni v2 per processi di pipeline v2 o v1 usando l'interfaccia utente dello studio, l'SDK v2 o l'interfaccia della riga di comando v2. Non è necessario pubblicare prima le pipeline esistenti per poter configurare le pianificazioni per i processi di pipeline.
Gli esempi di codice forniti in questo articolo sono tratti da Uso della pianificazione nell'interfaccia della riga di comando di Azure Machine Learning 2.0.
Definire una pianificazione basata sul tempo con un criterio di ricorrenza
Il codice YAML seguente definisce una pianificazione ricorrente per un processo di pipeline. Il parametro obbligatorio type
specifica che il tipo di trigger
è 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
È obbligatorio o facoltativo specificare i parametri di pianificazione seguenti:
Parametri
frequency
(obbligatorio) è l'unità di tempo in base alla quale viene attivata la pianificazione. Può essereminutes
,hours
,days
,weeks
omonths
.interval
(obbligatorio) è il numero di unità di tempo tra le ricorrenze della pianificazione.schedule
(facoltativo) definisce il criterio di ricorrenza, che può contenerehours
,minutes
eweekdays
. Se omesso, i processi vengono attivati in base alla logica distart_time
,frequency
einterval
.- Quando
frequency
è uguale aday
, il criterio può specificarehours
eminutes
. - Quando
frequency
è uguale aweek
o amonth
, il criterio può specificarehours
,minutes
eweekdays
.hours
è un numero intero o un elenco compreso tra 0 e 23.minutes
è un numero intero o un elenco compreso tra 0 e 59.weekdays
è una stringa o un elenco compreso tramonday
esunday
.
- Quando
start_time
(facoltativo) è la data e l'ora di inizio con il fuso orario. Se omesso, il valore predefinito è uguale alla data e ora di creazione della pianificazione. Se la data e ora di inizio è nel passato, il primo processo viene eseguito alla data e ora di esecuzione successiva calcolata.end_time
(facoltativo) è la data e l'ora di fine con il fuso orario. Se omesso, la pianificazione rimane attiva finché non viene disabilitata manualmente.time_zone
(facoltativo) specifica il fuso orario della pianificazione della ricorrenza. Se omesso, il valore predefinito è Coordinated Universal Time (UTC). Per altre informazioni sui valori del fuso orario, vedere la relativa appendice.
Dopo aver creato lo schema YAML della pianificazione, è possibile usare il comando seguente per creare la pianificazione tramite l'interfaccia della riga di comando:
# 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
Definire una pianificazione basata sul tempo con un'espressione Cron
Un'espressione Cron consente di specificare un criterio di ricorrenza più flessibile e personalizzato per una pianificazione. Un’espressione crontab standard è costituita dai campi delimitati da spazi MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
. Il carattere jolly *
indica tutti i valori di un campo.
In un'espressione Cron per le pianificazioni di Azure Machine Learning:
MINUTES
è un numero intero o un elenco compreso tra 0 e 59.HOURS
è un numero intero o un elenco compreso tra 0 e 23.- I valori
DAYS
non sono supportati e vengono sempre considerati come*
. Il valore*
inDAYS
indica tutti i giorni di un mese (varia con mese e anno). - I valori
MONTHS
non sono supportati e vengono sempre considerati come*
. DAYS-OF-WEEK
è un numero intero o un elenco compreso tra 0 e 6, dove 0 corrisponde a domenica. Sono accettati anche i nomi dei giorni.
Ad esempio, l'espressione 15 16 * * 1
indica le 16:15 UTC di ogni lunedì. Per altre informazioni sulle espressioni crontab, vedere la wiki sull’espressione Crontab in GitHub.
Il codice YAML seguente definisce una pianificazione ricorrente per un processo di pipeline. Il parametro obbligatorio type
specifica che il tipo di trigger
è 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
È obbligatorio o facoltativo specificare i parametri di pianificazione seguenti:
Parametri
expression
(obbligatorio) è un'espressione crontab standard che esprime una pianificazione ricorrente.start_time
(facoltativo) è la data e l'ora di inizio della pianificazione con il fuso orario. Ad esempio,start_time: "2022-05-10T10:15:00-04:00"
indica che la pianificazione inizia alle 10:15:00 del 10 maggio 2022 nel fuso orario UTC-4. Se omesso, il valore predefinito è uguale alla data e ora di creazione della pianificazione. Se la data e ora di inizio è nel passato, il primo processo viene eseguito alla data e ora di esecuzione successiva calcolata.end_time
(facoltativo) è la data e l'ora di fine con il fuso orario. Se omesso, la pianificazione rimane attiva finché non viene disabilitata manualmente.time_zone
(facoltativo) specifica il fuso orario della pianificazione della ricorrenza. Se omesso, il valore predefinito è UTC.
Dopo aver creato lo schema YAML della pianificazione, è possibile usare il comando seguente per creare la pianificazione tramite l'interfaccia della riga di comando:
# 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
Modificare le impostazioni del processo durante la definizione delle pianificazioni
In alcuni casi può essere opportuno che i processi attivati dalle pianificazioni abbiano configurazioni diverse dai processi di test. Quando si definisce una pianificazione usando un processo esistente, è possibile modificare le impostazioni del processo. Questo approccio consente di definire più pianificazioni che usano lo stesso processo con input diversi.
Durante la definizione di una pianificazione, è possibile modificare i valori di settings
, inputs
o outputs
da usare per l'esecuzione del processo di pipeline. È anche possibile modificare il valore experiment_name
del processo attivato.
La definizione di pianificazione seguente modifica le impostazioni di un processo esistente.
$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
Usare espressioni supportate nelle pianificazioni
Durante la definizione di una pianificazione, è possibile usare le espressioni macro seguenti per definire i valori dei parametri dinamici che si risolvono in valori effettivi durante il runtime del processo.
Expression | Descrizione | Proprietà supportate |
---|---|---|
${{name}} |
Nome del processo | Percorso di outputs del processo di pipeline |
${{creation_context.trigger_time}} |
Ora di attivazione del processo | inputs di tipo stringa del processo della pipeline |
Gestisci pianificazione
È possibile elencare, aggiornare, disabilitare, abilitare ed eliminare pianificazioni, nonché visualizzarne i dettagli, in un'area di lavoro.
Elencare le pianificazioni
az ml schedule list
Visualizzare i dettagli della pianificazione
az ml schedule show -n simple_cron_job_schedule
Aggiornare una pianificazione
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Nota
Per aggiornare altre voci oltre ai tag e alla descrizione, è consigliabile usare az ml schedule create --file update_schedule.yml
.
Disabilitare una pianificazione
az ml schedule disable -n simple_cron_job_schedule --no-wait
Abilitare una pianificazione
az ml schedule enable -n simple_cron_job_schedule --no-wait
Eliminare una pianificazione
Importante
Per eliminare una pianificazione, occorre prima disabilitarla. L'eliminazione è un’operazione permanente e irreversibile.
az ml schedule delete -n simple_cron_job_schedule
Eseguire query sui processi attivati da una pianificazione
Tutti i processi attivati da una pianificazione specifica hanno il nome visualizzato <schedule_name>-YYYYMMDDThhmmssZ
. Ad esempio, se una pianificazione denominata named-schedule
viene eseguita ogni 12 ore a partire dalle 6:00 del 1° gennaio 2021, i processi creati avranno i nomi visualizzati seguenti:
- named-schedule-20210101T060000Z
- named-schedule-20210101T180000Z
- named-schedule-20210102T060000Z
- named-schedule-20210102T180000Z e così via
È anche possibile applicare la query JMESPath dell'interfaccia della riga di comando di Azure per eseguire query sui processi attivati da un nome di pianificazione.
# 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')]"
Suggerimento
La scheda Cronologia processi nella pagina dei dettagli della pianificazione nello studio offre un modo semplice per trovare tutti i processi attivati da una pianificazione.
Supporto del controllo degli accessi in base al ruolo
Poiché le pianificazioni vengono usate per la produzione, è importante ridurre la possibilità e l'impatto di eventuali operazioni errate. Gli amministratori dell'area di lavoro possono limitare l'accesso alle operazioni di creazione e gestione delle pianificazioni in un'area di lavoro.
Gli amministratori possono configurare le seguenti regole di azione relative alle pianificazioni nel portale di Azure. Per altre informazioni, vedere Gestire l'accesso alle aree di lavoro di Azure Machine Learning.
Azione | Descrizione | Regola |
---|---|---|
Lettura | Ottenere ed elencare le pianificazioni | Microsoft.MachineLearningServices/workspaces/schedules/read |
Scrittura | Creare, aggiornare, disabilitare e abilitare pianificazioni | Microsoft.MachineLearningServices/workspaces/schedules/write |
Elimina | Eliminare pianificazioni | Microsoft.MachineLearningServices/workspaces/schedules/delete |
Considerazioni sui costi
Le pianificazioni vengono fatturate in base al numero. Ogni pianificazione crea un'app per la logica ospitata in Azure Machine Learning per conto dell'utente (HOBO).
L'app per la logica viene addebitata sulla sottoscrizione di Azure dell'utente. I costi delle risorse HOBO vengono fatturati usando lo stesso contatore generato dal provider di risorse originale. Gli addebiti vengono visualizzati nella risorsa host, ovvero l'area di lavoro di Azure Machine Learning.
Contenuto correlato
- Schema YAML di pianificazione dei processi dell’interfaccia della riga di comando (v2)
- Sintassi YAML principale dell'interfaccia della riga di comando (v2)
- Cosa sono le pipeline di apprendimento automatico?
- Che cos'è un componente di Azure Machine Learning?