Schemaläggning av pipelinejobb för maskininlärning
GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)
I den här artikeln får du lära dig hur du schemalägger maskininlärningspipelines så att de körs i Azure. Du kan schemalägga rutinuppgifter som att träna om modeller eller regelbundet uppdatera batchförutsägelser baserat på förfluten tid.
Den här artikeln visar hur du skapar, hämtar, uppdaterar och inaktiverar scheman med hjälp av Azure Machine Learning CLI, Azure Machine Learning SDK v2 för Python eller Azure Machine Learning-studio användargränssnitt.
Dricks
Om du vill schemalägga jobb med hjälp av en extern orkestrerare, till exempel Azure Data Factory eller Microsoft Fabric, bör du överväga att distribuera dina pipelinejobb under en batchslutpunkt. Mer information finns i Distribuera befintliga pipelinejobb till batchslutpunkter och Kör Azure Machine Learning-modeller från Fabric med hjälp av batchslutpunkter (förhandsversion).
Förutsättningar
- En Azure-prenumeration. Om du inte har ett konto kan du skapa ett kostnadsfritt konto innan du börjar.
- En Azure Machine Learning-arbetsyta. Information om hur du skapar en arbetsyta finns i Skapa arbetsyteresurser.
- En förståelse för Azure Machine Learning-pipelines. Mer information finns i Vad är maskininlärningspipelines?
- Azure CLI och
ml
tillägget som installeras genom att följa anvisningarna i Installera, konfigurera och använda CLI (v2). - Kunskap om hur du skapar AZURE Machine Learning YAML-pipelines. Mer information finns i Skapa och köra maskininlärningspipelines med hjälp av komponenter med Azure Machine Learning CLI.
Begränsningar
- Azure Machine Learning v2-scheman stöder inte händelsebaserade utlösare.
- CLI- och SDK v2-scheman har stöd för att ange komplexa upprepningsmönster som innehåller flera tidsstämplar för utlösare. Studio-användargränssnittet visar de komplexa mönstren men stöder inte redigering av dem.
- Studio-användargränssnittet stöder endast v2-scheman och kan inte visa eller komma åt v1-scheman som baseras på publicerade pipelines eller pipelineslutpunkter. Du kan skapa ett schema för en avpublicerad pipeline.
- Om upprepning anges som den 31:a eller 30:e dagen i varje månad utlöser schemat inte jobb under månader som har färre dagar.
DAYS
ochMONTHS
värden stöds inte i cron-schemauttryck. Värden som skickas för dessa parametrar ignoreras och behandlas som*
.
Skapa en tidsplan
När du har ett pipelinejobb med tillfredsställande prestanda och utdata kan du konfigurera ett schema för att automatiskt utlösa jobbet regelbundet. För att göra det måste du skapa ett schema som associerar jobbet med en utlösare. Utlösaren kan vara antingen ett recurrence
mönster eller ett cron
uttryck som anger intervallet och frekvensen för att köra jobbet.
I båda fallen måste du definiera ett pipelinejobb först, antingen infogat eller genom att ange ett befintligt pipelinejobb. Du kan definiera pipelines i YAML och köra dem från CLI, skapa pipelines infogade i Python eller skapa pipelines i Azure Machine Learning-studio. Du kan skapa pipelinejobb lokalt eller från befintliga jobb på arbetsytan.
Du kan skapa v2-scheman för v2- eller v1-pipelinejobb med hjälp av studiogränssnittet, SDK v2 eller CLI v2. Du behöver inte publicera befintliga pipelines först för att konfigurera scheman för pipelinejobb.
Kodexemplen i den här artikeln kommer från Arbeta med schema i Azure Machine Learning CLI 2.0.
Definiera ett tidsbaserat schema med ett upprepningsmönster
Följande YAML-kod definierar ett återkommande schema för ett pipelinejobb. Den obligatoriska type
parametern anger att trigger
typen är 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
Du måste eller kan ange följande schemaparametrar:
Parametrar
frequency
(krävs) är den tidsenhet på vilken schemat utlöses. Kan varaminutes
,hours
,days
,weeks
ellermonths
.interval
(krävs) är antalet tidsenheter mellan återkommande scheman.schedule
(valfritt) definierar upprepningsmönstret, som kan innehållahours
,minutes
ochweekdays
. Om det utelämnas utlöses jobb enligt logikenstart_time
i ,frequency
ochinterval
.- När
frequency
ärday
kan mönstret angehours
ochminutes
. - När
frequency
ärweek
ellermonth
kan mönstret angehours
,minutes
ochweekdays
.hours
är ett heltal eller en lista från 0 till 23.minutes
är ett heltal eller en lista från 0 till 59.weekdays
är en sträng eller lista frånmonday
tillsunday
.
- När
start_time
(valfritt) är startdatum och tid med tidszon. Om det utelämnas är standardvärdet lika med schemats skapandetid. Om starttiden är tidigare körs det första jobbet vid nästa beräknade körningstid.end_time
(valfritt) är slutdatum och tid med tidszon. Om det utelämnas förblir schemat aktivt tills det inaktiveras manuellt.time_zone
(valfritt) anger tidszonen för upprepningsschemat. Om det utelämnas är standardvärdet Coordinated Universal Time (UTC). Mer information om tidszonsvärden finns i tillägget för tidszonsvärden.
När du har skapat yaml-schemat använder du följande kommando för att skapa schemat via 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
Definiera ett tidsbaserat schema med ett cron-uttryck
Ett cron-uttryck kan ange ett flexibelt och anpassat upprepningsmönster för ett schema. Ett standarduttryck för crontab består av de blankstegsavgränsade fälten MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
. Ett jokertecken *
innebär alla värden för ett fält.
I ett Cron-uttryck för Azure Machine Language-schema:
MINUTES
är ett heltal eller en lista från 0 till 59.HOURS
är ett heltal eller en lista från 0 till 23.DAYS
värden stöds inte och behandlas alltid som*
. Värdet*
iDAYS
innebär alla dagar i en månad, vilket varierar med månad och år.MONTHS
värden stöds inte och behandlas alltid som*
.DAYS-OF-WEEK
är ett heltal eller en lista från 0 till 6, där 0 = söndag. Namn på dagar accepteras också.
Uttrycket 15 16 * * 1
innebär till exempel 16:15 UTC varje måndag. Mer information om crontab-uttryck finns i Wiki för Crontab-uttryck på GitHub.
Följande YAML-kod definierar ett återkommande schema för ett pipelinejobb. Den obligatoriska type
parametern anger att trigger
typen är 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
Du måste eller kan ange följande schemaparametrar:
Parametrar
expression
(krävs) är ett standarduttryck för crontab som uttrycker ett återkommande schema.start_time
(valfritt) är schemats startdatum och tid med tidszon. Innebär till exempelstart_time: "2022-05-10T10:15:00-04:00"
att schemat börjar från 10:15:00 den 10 maj 2022 i TIDSZONEN UTC-4. Om det utelämnas är standardvärdet lika med schemats skapandetid. Om starttiden är tidigare körs det första jobbet vid nästa beräknade körningstid.end_time
(valfritt) är slutdatum och tid med tidszon. Om det utelämnas förblir schemat aktivt tills det inaktiveras manuellt.time_zone
(valfritt) anger tidszonen för upprepningsschemat. Om det utelämnas är standardinställningen UTC.
När du har skapat yaml-schemat använder du följande kommando för att skapa schemat via 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
Ändra jobbinställningar när du definierar scheman
Ibland kanske du vill att jobben som utlöses av scheman ska ha olika konfigurationer från testjobben. När du definierar ett schema med hjälp av ett befintligt jobb kan du ändra jobbinställningarna. Med den här metoden kan du definiera flera scheman som använder samma jobb med olika indata.
När du definierar ett schema kan du ändra settings
, inputs
eller outputs
att använda när du kör pipelinejobbet. Du kan också ändra för experiment_name
det utlösta jobbet.
Följande schemadefinition ändrar inställningarna för ett befintligt jobb.
$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
Använda uttryck som stöds i scheman
När du definierar ett schema kan du använda följande makrouttryck för att definiera dynamiska parametervärden som matchar faktiska värden under jobbkörningen.
Uttryck | beskrivning | Egenskaper som stöds |
---|---|---|
${{name}} |
Namnet på jobbet | outputs sökväg för pipelinejobbet |
${{creation_context.trigger_time}} |
Utlösartid för jobbet | Strängtyp inputs för pipelinejobbet |
Hantera schema
Du kan visa, visa information, uppdatera, inaktivera, aktivera och ta bort scheman på en arbetsyta.
Lista scheman
az ml schedule list
Visa schemainformation
az ml schedule show -n simple_cron_job_schedule
Uppdatera ett schema
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Kommentar
Om du vill uppdatera mer än bara taggar och beskrivningar kan du överväga att använda az ml schedule create --file update_schedule.yml
.
Inaktivera ett schema
az ml schedule disable -n simple_cron_job_schedule --no-wait
Aktivera ett schema
az ml schedule enable -n simple_cron_job_schedule --no-wait
Ta bort ett schema
Viktigt!
Du måste först inaktivera ett schema för att ta bort det. Borttagningen är permanent och går inte att återställa.
az ml schedule delete -n simple_cron_job_schedule
Fråga utlösta jobb från ett schema
Jobb som utlöses av ett specifikt schema har alla visningsnamnet <schedule_name>-YYYYMMDDThhmmssZ
. Om ett schema med namnet named-schedule
till exempel körs var 12:e timme med start kl. 06.00 den 1 januari 2021 är visningsnamnen för de skapade jobben följande:
- named-schedule-20210101T060000Z
- named-schedule-20210101T180000Z
- named-schedule-20210102T060000Z
- named-schedule-20210102T180000Z och så vidare
Du kan också använda Azure CLI JMESPath-fråga för att fråga jobben som utlöses av ett schemanamn.
# 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')]"
Dricks
Fliken Jobbhistorik på schemainformationssidan i studion är ett enkelt sätt att hitta alla jobb som utlöses av ett schema.
Stöd för rollbaserad åtkomstkontroll (RBAC)
Eftersom scheman används för produktion är det viktigt att minska risken för och effekten av felåtgärder. Arbetsyteadministratörer kan begränsa åtkomsten till att skapa och hantera scheman på en arbetsyta.
Administratörer kan konfigurera följande åtgärdsregler relaterade till scheman i Azure Portal. Mer information finns i Hantera åtkomst till Azure Machine Learning-arbetsytor.
Åtgärd | beskrivning | Regel |
---|---|---|
Lästa | Hämta och lista scheman | Microsoft.MachineLearningServices/workspaces/schedules/read |
Skriva | Skapa, uppdatera, inaktivera och aktivera scheman | Microsoft.MachineLearningServices/workspaces/schedules/write |
Delete | Ta bort scheman | Microsoft.MachineLearningServices/workspaces/schedules/delete |
Kostnadsöverväganden
Scheman faktureras baserat på antalet scheman. Varje schema skapar en logikapp som Azure Machine Learning är värd för för (HOBO) användaren.
Logikappen debiteras tillbaka till användarens Azure-prenumeration. HOBO-resurskostnader faktureras med samma mätare som genereras av den ursprungliga resursprovidern. Avgifter visas under värdresursen, som är Azure Machine Learning-arbetsytan.