Share via


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

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 är recurrence. Det kan också vara cron, 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 vara minute, 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åller hours, minutesoch weekdays.

    • När frequency är daykan mönstret ange hours och minutes.
    • När frequency är week och monthkan mönstret ange hours, minutes och weekdays.
    • 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ån monday till sunday.
    • Om schedule utelämnas utlöses jobben enligt logiken start_timei , frequency och interval.
  • (Valfritt) start_time beskriver startdatum och tid med tidszon. Om start_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. Om end_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 är cron.

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 och MONTH 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. Om start_time utelämnas start_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. Om end_time utelämnas fortsätter schemat utlösarjobb tills schemat inaktiveras manuellt.

  • (Valfritt) time_zoneanger 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

Skärmbild av fliken Jobb i Azure Machine Learning-studio filtrering efter jobbvisningsnamn.

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