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)
In questo articolo si apprenderà come pianificare a livello di codice una pipeline per l'esecuzione in Azure e usare l'interfaccia utente di pianificazione per eseguire le stesse operazioni. È possibile creare una pianificazione in base al tempo trascorso. Le pianificazioni basate sul tempo possono essere usate per occuparsi delle attività di routine, ad esempio ripetere il training dei modelli o eseguire regolarmente stime batch per mantenerle aggiornate. Dopo aver appreso come creare pianificazioni, si apprenderà come recuperarle, aggiornarle e disattivarle tramite l’interfaccia della riga di comando, l’SDK e l’interfaccia utente di Studio.
Suggerimento
Se è necessario pianificare i processi usando un agente di orchestrazione esterno, ad esempio Azure Data Factory o Microsoft Fabric, è consigliabile distribuire i processi della pipeline in un endpoint Batch. Altre informazioni su come distribuire i processi in un endpoint batche come usare gli endpoint batch da Microsoft Fabric.
Prerequisiti
- L’uso di Azure Machine Learning richiede una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare. Provare la versione gratuita o a pagamento di Azure Machine Learning.
Installare l'interfaccia della riga di comando di Azure e l'estensione
ml
. Effettuare la procedura di installazione riportata in Installare, configurare e usare l'interfaccia della riga di comando (v2).Se non è presente, creare un'area di lavoro di Azure Machine Learning. Per la creazione di un’area di lavoro, vedere Installare, configurare e usare l'interfaccia della riga di comando (v2).
Pianificare un processo della pipeline
Per eseguire un processo della pipeline su base ricorrente, è necessario creare una pianificazione. Un Schedule
associa un processo e un trigger. Il trigger può essere cron
, che usa un’espressione cron per descrivere l'attesa tra le esecuzioni o recurrence
, che specifica la frequenza di attivazione del processo. In ogni caso, è prima necessario definire un processo della pipeline, può trattarsi di processi pipeline esistenti o di un processo della pipeline definito inline, fare riferimento a Creare un processo della pipeline nell'interfaccia della riga di comando e Creare un processo della pipeline in SDK.
È possibile pianificare un yaml del processo della pipeline in locale o in un processo della pipeline esistente nell'area di lavoro.
Creare una programmazione
Creare una pianificazione basata sul tempo con il modello di ricorrenza
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
$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
contiene le proprietà seguenti:
- (Obbligatorio)
type
specifica che il tipo di pianificazione èrecurrence
. Può anche esserecron
, vedere i dettagli nella sezione successiva.
L'elenco continua di seguito.
Nota
Le proprietà seguenti che devono essere specificate si applicano per l'interfaccia della riga di comando e l'SDK.
(Obbligatorio)
frequency
specifica l'unità di tempo che descrive la frequenza con cui viene attivata la pianificazione. Può essereminute
,hour
,day
,week
,month
.(Obbligatorio)
interval
specifica la frequenza di attivazione della pianificazione in base alla frequenza, vale a dire il numero di unità di tempo di attesa fino alla successiva attivazione della pianificazione.(Facoltativo)
schedule
definisce il criterio di ricorrenza contenentehours
,minutes
eweekdays
.- Quando
frequency
è uguale aday
, un criterio può specificarehours
eminutes
. - Quando
frequency
èweek
emonth
, il modello può specificarehours
,minutes
eweekdays
. hours
deve essere un numero intero o un elenco, compreso tra 0 e 23.minutes
deve essere un numero intero o un elenco, compreso tra 0 e 59.weekdays
può essere una stringa o un elenco damonday
asunday
.- Se
schedule
viene omesso, i processi verranno attivati in base alla logica distart_time
,frequency
einterval
.
- Quando
(Facoltativo)
start_time
descrive la data e l'ora di inizio, con il fuso orario. Sestart_time
viene omesso, start_time sarà uguale all'ora di creazione del processo. Se l'ora di inizio è passata, il primo processo verrà eseguito al successivo runtime calcolato.(Facoltativo)
end_time
descrive la data e l'ora di fine con il fuso orario. Seend_time
viene omesso, la pianificazione continuerà ad attivare i processi fino a quando la pianificazione viene disabilitata manualmente.(Facoltativo)
time_zone
specifica il fuso orario della ricorrenza. Se omesso, per impostazione predefinita è UTC. Per altre informazioni sui valori del fuso orario, vedere l’appendice per i valori del fuso orario.
Creare una pianificazione basata sul tempo con l'espressione cron
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
$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 sezione trigger
definisce i dettagli della pianificazione e contiene le proprietà seguenti:
- (Obbligatorio)
type
specifica che il tipo di pianificazione ècron
.
L'elenco continua di seguito.
(Obbligatorio)
expression
usa l'espressione crontab standard per esprimere una pianificazione ricorrente. Una singola espressione è costituita da cinque campi delimitati da spazi:MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
Un singolo carattere jolly (
*
), che copre tutti i valori per il campo. Quindi un*
, in giorni, indica tutti i giorni di un mese (che varia con mese e anno).expression: "15 16 * * 1"
nell'esempio precedente indica le 16:15 di ogni lunedì.La tabella seguente elenca i valori validi per ogni campo:
Campo Intervallo Commento MINUTES
0-59 - HOURS
0-23 - DAYS
- Non supportato. Il valore verrà ignorato e trattato come *
.MONTHS
- Non supportato. Il valore verrà ignorato e trattato come *
.DAYS-OF-WEEK
0-6 Zero (0) indica la domenica. Sono accettati anche i nomi dei giorni. Per altre informazioni su come usare l'espressione crontab, vedere wiki dell'espressione Crontab su GitHub .
Importante
DAYS
eMONTH
non sono supportati. Se si passa un valore, verrà ignorato e verrà trattato come*
.(Facoltativo)
start_time
specifica la data e l'ora di inizio con il fuso orario della pianificazione.start_time: "2022-05-10T10:15:00-04:00"
indica che la pianificazione inizia dalle 10:15:00 del 2022-05-10 nel fuso orario UTC-4. Sestart_time
viene omesso,start_time
sarà uguale all'ora di creazione della pianificazione. Se l'ora di inizio è passata, il primo processo verrà eseguito al successivo runtime calcolato.(Facoltativo)
end_time
descrive la data e l'ora di fine con il fuso orario. Seend_time
viene omesso, la pianificazione continuerà ad attivare i processi fino a quando la pianificazione viene disabilitata manualmente.(Facoltativo)
time_zone
specifica il fuso orario dell’espressione. Se omesso, per impostazione predefinita è UTC. Vedere l’appendice per i valori del fuso orario.
Limitazioni :
- Attualmente la pianificazione di Azure Machine Learning v2 non supporta il trigger basato su eventi.
- È possibile specificare criteri di ricorrenza complessi contenenti più timestamp di trigger usando Azure Machine Learning SDK/CLI v2, mentre l'interfaccia utente visualizza solo il modello complesso e non supporta la modifica.
- Se si imposta la ricorrenza come il 31° giorno di ogni mese, in mesi con meno di 31 giorni, la pianificazione non attiverà i processi.
Modificare le impostazioni di runtime durante la definizione della pianificazione
Quando si definisce una pianificazione usando un processo esistente, è possibile modificare le impostazioni di runtime del processo. Usando questo approccio, è possibile definire più pianificazioni usando lo stesso processo con input diversi.
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
$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
Quando si definisce la pianificazione, è possibile modificare le proprietà seguenti:
Proprietà | Descrizione |
---|---|
settings | Dizionario delle impostazioni da usare durante l'esecuzione del processo della pipeline. |
input | Dizionario di input da usare durante l'esecuzione del processo della pipeline. |
outputs | Dizionario di input da usare durante l'esecuzione del processo della pipeline. |
experiment_name | Nome dell'esperimento del processo attivato. |
Nota
Gli utenti dell'interfaccia utente di Studio possono modificare solo le impostazioni di input, output e runtime durante la creazione di una pianificazione. experiment_name
può essere modificato solo tramite l'interfaccia della riga di comando o l'SDK.
Espressioni supportate nella pianificazione
Quando si definisce la pianificazione, è supportata l'espressione seguente che verrà risolta in valore reale durante il runtime del processo.
Expression | Descrizione | Proprietà supportate |
---|---|---|
${{creation_context.trigger_time}} |
Ora in cui la pianificazione è stata attivata. | Input di tipo stringa del processo della pipeline |
${{name}} |
Nome del processo. | outputs.path del processo della pipeline |
Gestisci pianificazione
Creare pianificazione
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
Dopo aver creato lo yaml della pianificazione, è possibile usare il comando seguente per creare una pianificazione tramite l'interfaccia della riga di comando.
# 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
Elencare le pianificazioni in un'area di lavoro
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
az ml schedule list
Controllare i dettagli della pianificazione
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
az ml schedule show -n simple_cron_job_schedule
Aggiornare una pianificazione
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Nota
Se si vuole aggiornare più di tag/descrizione, è consigliabile usare az ml schedule create --file update_schedule.yml
Disabilitare una pianificazione
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
az ml schedule disable -n simple_cron_job_schedule --no-wait
Abilitare una pianificazione
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
az ml schedule enable -n simple_cron_job_schedule --no-wait
Eseguire query sui processi attivati da una pianificazione
Tutti i nomi visualizzati dei processi attivati dalla pianificazione avranno il nome visualizzato come <schedule_name>-AAAAMMGGGgThhmmssZ. Ad esempio, se viene creata una pianificazione denominata con un'esecuzione pianificata ogni 12 ore a partire dalle 6:00 del 1° gennaio 2021, i nomi visualizzati dei processi creati saranno i 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')]"
Nota
Per un modo più semplice per trovare tutti i processi attivati da una pianificazione, vedere la Cronologia dei processi nella pagina dei dettagli della pianificazione usando l'interfaccia utente di Studio.
Eliminare una pianificazione
Importante
Una pianificazione deve essere disabilitata per essere eliminata. Elimina è un'azione irreversibile. Una volta eliminata una pianificazione, non è possibile accedervi o recuperarla.
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
az ml schedule delete -n simple_cron_job_schedule
Supporto del controllo degli accessi in base al ruolo (RBAC)
Poiché le pianificazioni vengono in genere usate per la produzione, per ridurre l'impatto dell'operazione errata, gli amministratori dell'area di lavoro possono voler limitare l'accesso alla creazione e alla gestione delle pianificazioni all'interno di un'area di lavoro.
Attualmente sono disponibili tre regole di azione correlate alle pianificazioni ed è possibile configurare nel portale di Azure. Per altre informazioni, vedere Come gestire l'accesso a un'area di lavoro di Azure Machine Learning.
Azione | Descrizione | Regola |
---|---|---|
Lettura | Ottenere ed elencare le pianificazioni nell'area di lavoro di Machine Learning | Microsoft.MachineLearningServices/workspaces/schedules/read |
Scrittura | Creare, aggiornare, disabilitare e abilitare pianificazioni nell'area di lavoro di Machine Learning | Microsoft.MachineLearningServices/workspaces/schedules/write |
Elimina | Eliminare una pianificazione nell’area di lavoro di Machine Learning | Microsoft.MachineLearningServices/workspaces/schedules/delete |
Considerazioni sui costi
- Le pianificazioni vengono fatturate in base al numero di pianificazioni, ogni pianificazione creerà un'app per la logica che ospiterà sottoscrizioni di Azure Machine Learning per conto dell'utente (HOBO).
- Il costo delle app per la logica tornerà alla sottoscrizione di Azure dell'utente ed è possibile trovare i costi delle risorse HOBO fatturati usando lo stesso contatore generato dal rp originale. Vengono visualizzati sotto la risorsa host (l'area di lavoro).
Domande frequenti
Perché le pianificazioni create dall'SDK non sono elencate nell'interfaccia utente?
L'interfaccia utente delle pianificazioni è per le pianificazioni v2. Di conseguenza, le pianificazioni v1 non verranno elencate o accessibili tramite l'interfaccia utente.
Tuttavia, le pianificazioni v2 supportano anche i processi della pipeline v1. Non è prima necessario pubblicare la pipeline ed è possibile configurare direttamente le pianificazioni per un processo della pipeline.
Perché le pianificazioni non attivano il processo al momento dell'impostazione precedente?
- Per impostazione predefinita, le pianificazioni useranno il fuso orario UTC per calcolare l'ora del trigger. È possibile specificare il fuso orario nella creazione guidata o aggiornare il fuso orario nella pagina dei dettagli della pianificazione.
- Se si imposta la ricorrenza come il 31° giorno di ogni mese, in mesi con meno di 31 giorni, la pianificazione non attiverà i processi.
- Se si usano espressioni cron, MONTH non è supportato. Se si passa un valore, verrà ignorato e considerato come *. Si tratta di una limitazione nota.
Le pianificazioni basate su eventi sono supportate?
- No, la pianificazione V2 non supporta le pianificazioni basate su eventi.
Passaggi successivi
- Altre informazioni sullo schema YAML di pianificazione dell’interfaccia della riga di comando (v2).
- Informazioni su come creare un processo della pipeline nell'interfaccia della riga di comando v2.
- Informazioni su come creare un processo della pipeline nell'SDK v2.
- Altre informazioni sulla sintassi YAML principale dell'interfaccia della riga di comando di (v2).
- Altre informazioni sulle Pipeline.
- Altre informazioni sul Componente.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per