Delen via


Machine Learning-pijplijntaken plannen

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

In dit artikel leert u hoe u machine learning-pijplijnen plant om te worden uitgevoerd in Azure. U kunt routinetaken plannen, zoals het opnieuw trainen van modellen of het regelmatig bijwerken van batchvoorspellingen op basis van verstreken tijd.

In dit artikel leest u hoe u planningen maakt, ophaalt, bijwerkt en deactiveert met behulp van de Azure Machine Learning CLI, Azure Machine Learning SDK v2 voor Python of Azure Machine Learning-studio ui.

Tip

Als u taken wilt plannen met behulp van een externe orchestrator, zoals Azure Data Factory of Microsoft Fabric, kunt u overwegen om uw pijplijntaken onder een batch-eindpunt te implementeren. Zie Bestaande pijplijntaken implementeren in batch-eindpunten en Azure Machine Learning-modellen uitvoeren vanuit Fabric met behulp van batch-eindpunten (preview) voor meer informatie.

Vereisten

Beperkingen

  • Azure Machine Learning v2-schema's bieden geen ondersteuning voor triggers op basis van gebeurtenissen.
  • CLI- en SDK v2-schema's bieden ondersteuning voor het opgeven van complexe terugkeerpatronen die meerdere triggertijdstempels bevatten. De gebruikersinterface van Studio geeft de complexe patronen weer, maar biedt geen ondersteuning voor het bewerken ervan.
  • De gebruikersinterface van Studio ondersteunt alleen v2-planningen en kan geen v1-planningen weergeven of openen die zijn gebaseerd op gepubliceerde pijplijnen of pijplijneindpunten. U kunt een planning maken voor een niet-gepubliceerde pijplijn.
  • Als terugkeerpatroon is ingesteld als de 31e of 30e dag van elke maand, activeert het schema geen taken in maanden met minder dagen.
  • DAYS en MONTHS waarden worden niet ondersteund in cron-planningexpressies. Waarden die voor deze parameters worden doorgegeven, worden genegeerd en behandeld als *.

Een planning maken

Wanneer u een pijplijntaak hebt met bevredigende prestaties en uitvoer, kunt u een planning instellen om de taak regelmatig te activeren. Hiervoor moet u een schema maken waarmee de taak wordt gekoppeld aan een trigger. De trigger kan een recurrence patroon of een cron expressie zijn waarmee het interval en de frequentie voor het uitvoeren van de taak worden opgegeven.

In beide gevallen moet u eerst een pijplijntaak definiëren, hetzij inline of door een bestaande pijplijntaak op te geven. U kunt pijplijnen definiëren in YAML en deze uitvoeren vanuit de CLI, pijplijnen inline maken in Python of pijplijnen opstellen in Azure Machine Learning-studio. U kunt pijplijntaken lokaal of vanuit bestaande taken in de werkruimte maken.

U kunt v2-planningen maken voor v2- of v1-pijplijntaken met behulp van de gebruikersinterface van studio, SDK v2 of CLI v2. U hoeft niet eerst bestaande pijplijnen te publiceren om planningen voor pijplijntaken in te stellen.

De codevoorbeelden in dit artikel zijn afkomstig van het werken met Planning in Azure Machine Learning CLI 2.0.

Een schema op basis van tijd definiëren met een terugkeerpatroon

De volgende YAML-code definieert een terugkerend schema voor een pijplijntaak. De vereiste type parameter geeft aan dat het trigger type is 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

U moet of kunt de volgende planningsparameters opgeven:

Parameters

  • frequency(vereist) is de tijdseenheid waarop de planning wordt geactiveerd. Kan zijnminutes, hours, , daysof weeksmonths.
  • interval(vereist) is het aantal tijdseenheden tussen schema-terugkeerpatronen.
  • schedule (optioneel) definieert het terugkeerpatroon, dat kan bevatten hours, minutesen weekdays. Als u dit weglaat, worden taken geactiveerd volgens de logica van start_time, frequencyen interval.
    • Wanneer frequency dat het is day, kan het patroon opgeven hours en minutes.
    • Wanneer frequency is week of month, kan het patroon opgeven hours, minutesen weekdays.
      • hours is een geheel getal of lijst van 0 tot 23.
      • minutes is een geheel getal of lijst van 0 tot 59.
      • weekdays is een tekenreeks of lijst van monday naar sunday.
  • start_time (optioneel) is de begindatum en -tijd met tijdzone. Als u dit weglaat, is de standaardwaarde gelijk aan de aanmaaktijd van het schema. Als de begintijd zich in het verleden bevindt, wordt de eerste taak uitgevoerd bij de volgende berekende uitvoeringstijd.
  • end_time (optioneel) is de einddatum en tijd met tijdzone. Als u dit weglaat, blijft de planning actief totdat deze handmatig is uitgeschakeld.
  • time_zone (optioneel) geeft de tijdzone van het terugkeerschema aan. Als u dit weglaat, is de standaardinstelling Coordinated Universal Time (UTC). Zie de bijlage voor tijdzonewaarden voor meer informatie over tijdzonewaarden.

Nadat u de YAML-planning hebt gemaakt, gebruikt u de volgende opdracht om het schema te maken 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

Een schema op basis van tijd definiëren met een cron-expressie

Een cron-expressie kan een flexibel en aangepast terugkeerpatroon voor een schema opgeven. Een standaard crontab-expressie bestaat uit de velden MINUTES HOURS DAYS MONTHS DAYS-OF-WEEKmet spatiescheidingstekens. Een jokerteken * betekent alle waarden voor een veld.

In een Cron-expressie voor een Azure Machine Language-schema:

  • MINUTES is een geheel getal of lijst van 0 tot 59.
  • HOURS is een geheel getal of lijst van 0 tot 23.
  • DAYS waarden worden niet ondersteund en worden altijd behandeld als *. De * waarde in DAYS betekent alle dagen in een maand, die varieert met maand en jaar.
  • MONTHS waarden worden niet ondersteund en worden altijd behandeld als *.
  • DAYS-OF-WEEK is een geheel getal of lijst van 0 tot 6, waarbij 0 = zondag. Namen van dagen worden ook geaccepteerd.

De expressie 15 16 * * 1 betekent bijvoorbeeld elke maandag 14:15 UTC. Zie de Crontab Expression-wiki op GitHub voor meer informatie over crontab-expressies.

De volgende YAML-code definieert een terugkerend schema voor een pijplijntaak. De vereiste type parameter geeft aan dat het trigger type is 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

U moet of kunt de volgende planningsparameters opgeven:

Parameters

  • expression(vereist) is een standaard crontab-expressie die een terugkerend schema uitdrukt.
  • start_time (optioneel) is de begindatum en -tijd van de planning met tijdzone. Dit betekent bijvoorbeeld start_time: "2022-05-10T10:15:00-04:00" dat de planning begint van 10:15:00 op 10 mei 2022 in utc-4 tijdzone. Als u dit weglaat, is de standaardwaarde gelijk aan de aanmaaktijd van het schema. Als de begintijd zich in het verleden bevindt, wordt de eerste taak uitgevoerd bij de volgende berekende uitvoeringstijd.
  • end_time (optioneel) is de einddatum en tijd met tijdzone. Als u dit weglaat, blijft de planning actief totdat deze handmatig is uitgeschakeld.
  • time_zone (optioneel) geeft de tijdzone van het terugkeerschema aan. Als u dit weglaat, is de standaardinstelling UTC.

Nadat u de YAML-planning hebt gemaakt, gebruikt u de volgende opdracht om het schema te maken 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

Taakinstellingen wijzigen wanneer u planningen definieert

Soms wilt u mogelijk dat de taken die worden geactiveerd door planningen verschillende configuraties hebben dan de testtaken. Wanneer u een planning definieert met behulp van een bestaande taak, kunt u de taakinstellingen wijzigen. Met deze methode kunt u meerdere planningen definiëren die dezelfde taak met verschillende invoer gebruiken.

Wanneer u een planning definieert, kunt u de settings, inputsof outputs gebruiken bij het uitvoeren van de pijplijntaak. U kunt ook de experiment_name geactiveerde taak wijzigen.

Met de volgende planningsdefinitie worden de instellingen van een bestaande taak gewijzigd.

$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

Ondersteunde expressies gebruiken in planningen

Wanneer u een planning definieert, kunt u de volgende macro-expressies gebruiken om dynamische parameterwaarden te definiëren die tijdens de taakruntime worden omgezet in werkelijke waarden.

Expression Beschrijving Ondersteunde eigenschappen
${{name}} Naam van de taak outputs pad van de pijplijntaak
${{creation_context.trigger_time}} Triggertijd van de taak Tekenreekstype inputs van de pijplijntaak

Planning beheren

U kunt planningen in een werkruimte weergeven, weergeven, bijwerken, uitschakelen, inschakelen en verwijderen.

Schema's weergeven

az ml schedule list

Planningsgegevens weergeven

az ml schedule show -n simple_cron_job_schedule

Een planning bijwerken

az ml schedule update -n simple_cron_job_schedule  --set description="new description" --no-wait

Notitie

Als u meer dan alleen tags en beschrijvingen wilt bijwerken, kunt u overwegen om deze te gebruiken az ml schedule create --file update_schedule.yml.

Een planning uitschakelen

az ml schedule disable -n simple_cron_job_schedule --no-wait

Een planning inschakelen

az ml schedule enable -n simple_cron_job_schedule --no-wait

Een schema verwijderen

Belangrijk

U moet eerst een schema uitschakelen om het te verwijderen. Verwijderen is permanent en onherstelbaar.

az ml schedule delete -n simple_cron_job_schedule

Query geactiveerde taken uitvoeren vanuit een planning

Taken die door een specifieke planning worden geactiveerd, hebben allemaal de weergavenaam <schedule_name>-YYYYMMDDThhmmssZ. Als een schema met de naam named-schedule bijvoorbeeld elke 12 uur wordt uitgevoerd vanaf 06:00 uur op 1 januari 2021, zijn de weergavenamen van de gemaakte taken als volgt:

  • named-schedule-20210101T060000Z
  • named-schedule-20210101T180000Z
  • named-schedule-20210102T060000Z
  • named-schedule-20210102T180000Z, enzovoort

Schermopname van het tabblad Taken in het Azure Machine Learning-studio filteren op weergavenaam van de taak.

U kunt ook een Azure CLI JMESPath-query toepassen om een query uit te voeren op de taken die worden geactiveerd door een planningsnaam.

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

Tip

Het tabblad Takengeschiedenis op de detailpagina van de planning in de studio biedt een eenvoudige manier om alle taken te vinden die door een planning worden geactiveerd.


Ondersteuning voor op rollen gebaseerd toegangsbeheer (RBAC)

Omdat planningen worden gebruikt voor productie, is het belangrijk om de kans en impact van misoperation te verminderen. Werkruimtebeheerders kunnen de toegang beperken tot het maken en beheren van een werkruimte.

Beheerders kunnen de volgende actieregels configureren die betrekking hebben op planningen in Azure Portal. Zie Toegang tot Azure Machine Learning-werkruimten beheren voor meer informatie.

Actie Beschrijving Regel
Read Schema's ophalen en weergeven Microsoft.MachineLearningServices/workspaces/schedules/read
Schrijven Planningen maken, bijwerken, uitschakelen en inschakelen Microsoft.MachineLearningServices/workspaces/schedules/write
Delete Schema's verwijderen Microsoft.MachineLearningServices/workspaces/schedules/delete

Kostenoverwegingen

Planningen worden gefactureerd op basis van het aantal planningen. Elke planning maakt een logische app die door Azure Machine Learning wordt gehost namens de gebruiker (HOBO).

De logische app brengt kosten in rekening voor het Azure-abonnement van de gebruiker. HOBO-resourcekosten worden gefactureerd met behulp van dezelfde meter die door de oorspronkelijke resourceprovider wordt verzonden. Er worden kosten weergegeven onder de hostresource. Dit is de Azure Machine Learning-werkruimte.