Dela 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 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

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 och MONTHS 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 vara minutes, hours, days, weekseller months.
  • interval(krävs) är antalet tidsenheter mellan återkommande scheman.
  • schedule (valfritt) definierar upprepningsmönstret, som kan innehålla hours, minutesoch weekdays. Om det utelämnas utlöses jobb enligt logiken start_timei , frequencyoch interval.
    • När frequency är daykan mönstret ange hours och minutes.
    • När frequency är week eller monthkan mönstret ange hours, minutesoch weekdays.
      • 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ån monday till sunday.
  • 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 * i DAYS 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 exempel start_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, inputseller 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

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')]"

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.