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 programmatiskt schemalägger en pipeline för att köras i Azure och använder schemagränssnittet för att göra detsamma. Du kan skapa ett schema baserat på förfluten tid. Tidsbaserade scheman kan användas för att ta hand om rutinuppgifter, till exempel träna om modeller eller göra batchförutsägelser regelbundet för att hålla dem uppdaterade. När du har lärt dig hur du skapar scheman får du lära dig hur du hämtar, uppdaterar och inaktiverar dem via CLI, SDK och studiogränssnittet.
Dricks
Om du behöver schemalägga jobb med hjälp av en extern orkestrerare, till exempel Azure Data Factory eller Microsoft Fabric, kan du överväga att distribuera dina pipelinejobb under en Batch-slutpunkt. Läs mer om hur du distribuerar jobb under en batchslutpunkt och hur du använder batchslutpunkter från Microsoft Fabric.
Förutsättningar
- Du måste ha en Azure-prenumeration för att kunna använda Azure Machine Learning. Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar. Prova den kostnadsfria eller betalda versionen av Azure Machine Learning idag.
Installera Azure CLI och
ml
tillägget. Följ installationsstegen i Installera, konfigurera och använd CLI (v2).Skapa en Azure Machine Learning-arbetsyta om du inte har någon. Information om hur du skapar arbetsytor finns i Installera, konfigurera och använda CLI (v2).
Schemalägga ett pipelinejobb
Om du vill köra ett pipelinejobb regelbundet måste du skapa ett schema. En Schedule
associerar ett jobb och en utlösare. Utlösaren kan antingen vara cron
att använda cron-uttryck för att beskriva väntetiden mellan körningar eller recurrence
som anger hur ofta jobbet ska utlösas. I varje fall måste du definiera ett pipelinejobb först, det kan vara befintliga pipelinejobb eller ett pipelinejobb som definieras infogat, se Skapa ett pipelinejobb i CLI och Skapa ett pipelinejobb i SDK.
Du kan schemalägga ett yaml-pipelinejobb i ett lokalt eller ett befintligt pipelinejobb på arbetsytan.
Skapa en tidsplan
Skapa ett tidsbaserat schema med upprepningsmönster
GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)
$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
innehåller följande egenskaper:
- (Krävs)
type
anger att schematypen ärrecurrence
. Det kan också varacron
, se information i nästa avsnitt.
Listan fortsätter nedan.
Kommentar
Följande egenskaper som måste anges gäller för CLI och SDK.
(Krävs)
frequency
anger den tidsenhet som beskriver hur ofta schemat utlöses. Kan varaminute
,hour
,day
,week
,month
.(Krävs)
interval
anger hur ofta schemat utlöses baserat på frekvensen, vilket är antalet tidsenheter som ska vänta tills schemat utlöses igen.(Valfritt)
schedule
definierar upprepningsmönstret, som innehållerhours
,minutes
ochweekdays
.- När
frequency
ärday
kan mönstret angehours
ochminutes
. - När
frequency
ärweek
ochmonth
kan mönstret angehours
,minutes
ochweekdays
. hours
bör vara ett heltal eller en lista, från 0 till 23.minutes
ska vara ett heltal eller en lista, från 0 till 59.weekdays
kan vara en sträng eller lista frånmonday
tillsunday
.- Om
schedule
utelämnas utlöses jobben enligt logikenstart_time
i ,frequency
ochinterval
.
- När
(Valfritt)
start_time
beskriver startdatum och tid med tidszon. Omstart_time
utelämnas är start_time lika med den tid då jobbet skapades. Om starttiden är tidigare körs det första jobbet vid nästa beräknade körningstid.(Valfritt)
end_time
beskriver slutdatum och tid med tidszon. Omend_time
utelämnas fortsätter schemat utlösarjobb tills schemat inaktiveras manuellt.(Valfritt)
time_zone
anger tidszonen för upprepningen. Om det utelämnas är UTC som standard. Mer information om tidszonsvärden finns i bilaga för tidszonsvärden.
Skapa ett tidsbaserat schema med cron-uttryck
GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)
$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
Avsnittet trigger
definierar schemainformationen och innehåller följande egenskaper:
- (Krävs)
type
anger att schematypen ärcron
.
Listan fortsätter nedan.
(Krävs)
expression
använder standarduttryck för crontab för att uttrycka ett återkommande schema. Ett enda uttryck består av fem blankstegsavgränsade fält:MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
Ett enda jokertecken (
*
), som täcker alla värden för fältet. Så en*
i dagar innebär alla dagar i månaden (som varierar med månad och år).I
expression: "15 16 * * 1"
exemplet ovan avses 16:15 varje måndag.Tabellen nedan visar giltiga värden för varje fält:
Fält Intervall Kommentar MINUTES
0-59 - HOURS
0-23 - DAYS
- Stöds ej. Värdet ignoreras och behandlas som *
.MONTHS
- Stöds ej. Värdet ignoreras och behandlas som *
.DAYS-OF-WEEK
0-6 Noll (0) betyder söndag. Namn på dagar accepteras också. Mer information om hur du använder crontab-uttryck finns i Wiki för Crontab-uttryck på GitHub .
Viktigt!
DAYS
ochMONTH
stöds inte. Om du skickar ett värde ignoreras det och behandlas som*
.(Valfritt)
start_time
anger startdatum och tid med tidszonen för schemat.start_time: "2022-05-10T10:15:00-04:00"
innebär att schemat börjar från 10:15:00 den 2022-05-10 i UTC-4 tidszon. Omstart_time
utelämnasstart_time
är skapandetiden lika med schemat. Om starttiden är tidigare körs det första jobbet vid nästa beräknade körningstid.(Valfritt)
end_time
beskriver slutdatum och tid med tidszon. Omend_time
utelämnas fortsätter schemat utlösarjobb tills schemat inaktiveras manuellt.(Valfritt)
time_zone
anger tidszonen för uttrycket. Om det utelämnas är UTC som standard. Se bilaga för tidszonsvärden.
Begränsningar:
- Azure Machine Learning v2-schemat stöder för närvarande inte händelsebaserad utlösare.
- Du kan ange ett komplext upprepningsmönster som innehåller flera tidsstämplar för utlösare med Hjälp av Azure Machine Learning SDK/CLI v2, medan användargränssnittet endast visar det komplexa mönstret och inte stöder redigering.
- Om du anger upprepningen som den 31:a dagen i varje månad, i månader med mindre än 31 dagar, utlöser schemat inte jobb.
Ändra körningsinställningar när du definierar scheman
När du definierar ett schema med ett befintligt jobb kan du ändra körningsinställningarna för jobbet. Med den här metoden kan du definiera flera scheman med samma jobb med olika indata.
GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)
$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
Följande egenskaper kan ändras när du definierar schema:
Property | beskrivning |
---|---|
settings | En ordlista med inställningar som ska användas när du kör pipelinejobbet. |
Ingångar | En ordlista med indata som ska användas när du kör pipelinejobbet. |
Utgångar | En ordlista med indata som ska användas när du kör pipelinejobbet. |
experiment_name | Experimentnamn för utlöst jobb. |
Kommentar
Användare av studiogränssnittet kan bara ändra inställningar för indata, utdata och körning när de skapar ett schema. experiment_name
kan bara ändras med hjälp av CLI eller SDK.
Uttryck som stöds i schemat
När du definierar schemat stöder vi följande uttryck som kommer att matchas till verkligt värde under jobbkörningen.
Uttryck | beskrivning | Egenskaper som stöds |
---|---|---|
${{creation_context.trigger_time}} |
Den tid då schemat utlöses. | Indata för strängtyp för pipelinejobb |
${{name}} |
Namnet på jobbet. | outputs.path för pipelinejobb |
Hantera schema
Skapa schema
GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)
När du har skapat schemat yaml kan du använda följande kommando för att skapa ett schema via 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
Lista scheman på en arbetsyta
GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)
az ml schedule list
Kontrollera schemainformation
GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)
az ml schedule show -n simple_cron_job_schedule
Uppdatera ett schema
GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Kommentar
Om du vill uppdatera mer än bara taggar/beskrivningar rekommenderar vi att du använder az ml schedule create --file update_schedule.yml
Inaktivera ett schema
GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)
az ml schedule disable -n simple_cron_job_schedule --no-wait
Aktivera ett schema
GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)
az ml schedule enable -n simple_cron_job_schedule --no-wait
Fråga utlösta jobb från ett schema
Alla visningsnamn för jobb som utlöses av schemat har visningsnamnet som <schedule_name-YYYYMMDDThhmmssZ>. Om till exempel ett schema med namnet named-schedule skapas med en schemalagd körning var 12:e timme med start kl. 06.00 den 1 januari 2021 blir 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')]"
Kommentar
Ett enklare sätt att hitta alla jobb som utlöses av ett schema finns i Jobbhistorik på schemainformationssidanmed hjälp av studiogränssnittet.
Ta bort ett schema
Viktigt!
Ett schema måste inaktiveras för att tas bort. Borttagning är en oåterkallelig åtgärd. När ett schema har tagits bort kan du aldrig komma åt eller återställa det.
GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)
az ml schedule delete -n simple_cron_job_schedule
Stöd för RBAC (rollbaserad åtkomstkontroll)
Eftersom scheman vanligtvis används för produktion, för att minska effekten av felaktig användning, kan arbetsyteadministratörer vilja begränsa åtkomsten till att skapa och hantera scheman på en arbetsyta.
För närvarande finns det tre åtgärdsregler som rör scheman och du kan konfigurera i Azure-portalen. Du kan lära dig mer om hur du hanterar åtkomst till en Azure Machine Learning-arbetsyta.
Åtgärd | beskrivning | Regel |
---|---|---|
Lästa | Hämta och lista scheman i Machine Learning-arbetsytan | Microsoft.MachineLearningServices/workspaces/schedules/read |
Skriva | Skapa, uppdatera, inaktivera och aktivera scheman i Machine Learning-arbetsytan | Microsoft.MachineLearningServices/workspaces/schedules/write |
Delete | Ta bort ett schema i Machine Learning-arbetsytan | Microsoft.MachineLearningServices/workspaces/schedules/delete |
Kostnadsöverväganden
- Scheman faktureras baserat på antalet scheman. Varje schema skapar en logikapp som är värd för Azure Machine Learning-underkonton (HOBO) för användaren.
- Kostnaden för logikappar ändras tillbaka till användarens Azure-prenumeration, och du kan hitta kostnader för HOBO-resurser debiteras med samma mätare som genereras av den ursprungliga RP. De visas under värdresursen (arbetsytan).
Vanliga frågor och svar
Varför visas inte mina scheman som skapats av SDK i användargränssnittet?
Användargränssnittet för scheman gäller för v2-scheman. Därför visas inte dina v1-scheman eller nås via användargränssnittet.
V2-scheman stöder dock även v1-pipelinejobb. Du behöver inte publicera pipelinen först och du kan konfigurera scheman direkt för ett pipelinejobb.
Varför utlöser inte mina scheman jobb vid den tidpunkt jag angav tidigare?
- Som standard använder scheman UTC-tidszonen för att beräkna utlösartiden. Du kan ange tidszon i guiden för att skapa eller uppdatera tidszonen på schemainformationssidan.
- Om du anger upprepningen som den 31:a dagen i varje månad, i månader med mindre än 31 dagar, utlöser schemat inte jobb.
- Om du använder cron-uttryck stöds inte MONTH. Om du skickar ett värde ignoreras det och behandlas som *. Det här är en känd begränsning.
Stöds händelsebaserade scheman?
- Nej, V2-schemat stöder inte händelsebaserade scheman.
Nästa steg
- Läs mer om CLI-schemaschemat (v2).
- Lär dig hur du skapar pipelinejobb i CLI v2.
- Lär dig hur du skapar pipelinejobb i SDK v2.
- Läs mer om YAML-kärnsyntaxen för CLI (v2).
- Läs mer om pipelines.
- Läs mer om Komponent.