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 programmatisch een pijplijn kunt plannen om te worden uitgevoerd in Azure en hoe u de planningsinterface gebruikt om hetzelfde te doen. U kunt een planning maken op basis van verstreken tijd. Planningen op basis van tijd kunnen worden gebruikt om routinetaken uit te voeren, zoals modellen opnieuw trainen of batchvoorspellingen regelmatig uitvoeren om ze up-to-date te houden. Nadat u hebt geleerd hoe u planningen maakt, leert u hoe u ze kunt ophalen, bijwerken en deactiveren via de gebruikersinterface van CLI, SDK en studio.

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. Meer informatie over het implementeren van taken onder een batch-eindpunt en het verbruiken van batch-eindpunten vanuit Microsoft Fabric.

Vereisten

Een pijplijntaak plannen

Als u een pijplijntaak op terugkerende basis wilt uitvoeren, moet u een planning maken. Een Schedule taak en een trigger worden gekoppeld. De trigger kan zijn cron dat cron-expressie wordt gebruikt om de wachttijd tussen uitvoeringen te beschrijven of recurrence die aangeven welke frequentie moet worden gebruikt om een taak te activeren. In elk geval moet u eerst een pijplijntaak definiëren. Dit kunnen bestaande pijplijntaken zijn of een pijplijntaak die inline is gedefinieerd. Raadpleeg een pijplijntaak maken in CLI en een pijplijntaak maken in SDK.

U kunt een yaml voor een pijplijntaak plannen in de lokale of een bestaande pijplijntaak in de werkruimte.

Een planning maken

Een schema op basis van tijd maken met een terugkeerpatroon

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidige)

$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 bevat de volgende eigenschappen:

  • (Vereist)type hiermee geeft u het schematype is recurrence. Het kan ook zijn cron, zie details in de volgende sectie.

Hieronder wordt de lijst voortgezet.

Notitie

De volgende eigenschappen die moeten worden opgegeven, zijn van toepassing op CLI en SDK.

  • (Vereist)frequency geeft de tijdseenheid op die beschrijft hoe vaak de planning wordt geactiveerd. Kan zijnminute, hour, day, , week, . month

  • (Vereist)interval geeft aan hoe vaak de planning wordt geactiveerd op basis van de frequentie, wat het aantal tijdseenheden is dat moet worden gewacht totdat de planning opnieuw wordt geactiveerd.

  • (Optioneel) schedule definieert het terugkeerpatroon, met hours, minutesen weekdays.

    • Wanneer frequency dat het is day, kan het patroon opgeven hours en minutes.
    • Wanneer frequency en weekmonth, kan het patroon opgeven hoursen minutesweekdays.
    • hours moet een geheel getal of een lijst zijn, van 0 tot 23.
    • minutes moet een geheel getal of een lijst zijn, van 0 tot 59.
    • weekdays kan een tekenreeks of lijst zijn van monday naar sunday.
    • Als schedule dit wordt weggelaten, worden de taken geactiveerd volgens de logica van start_time, frequency en interval.
  • (Optioneel) start_time beschrijft de begindatum en -tijd met tijdzone. Als start_time u dit weglaat, is start_time gelijk aan de gemaakte tijd van de taak. Als de begintijd zich in het verleden bevindt, wordt de eerste taak uitgevoerd bij de volgende berekende uitvoeringstijd.

  • (Optioneel) end_time beschrijft de einddatum en tijd met tijdzone. Als end_time u dit weglaat, worden taken door de planning geactiveerd totdat het schema handmatig is uitgeschakeld.

  • (Optioneel) time_zone hiermee geeft u de tijdzone van het terugkeerpatroon. Als u dit weglaat, is standaard UTC. Zie de bijlage voor tijdzonewaarden voor meer informatie over tijdzonewaarden.

Een schema op basis van tijd maken met een cron-expressie

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidige)

$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

De trigger sectie definieert de planningsgegevens en bevat de volgende eigenschappen:

  • (Vereist)type hiermee geeft u het schematype is cron.

Hieronder wordt de lijst voortgezet.

  • (Vereist)expression maakt gebruik van een standaard crontab-expressie om een terugkerend schema uit te drukken. Eén expressie bestaat uit vijf door spaties gescheiden velden:

    MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK

    • Eén jokerteken (*), dat alle waarden voor het veld omvat. * Een in dagen betekent dus alle dagen van een maand (die varieert met maand en jaar).

    • De expression: "15 16 * * 1" bovenstaande steekproef betekent de 16:15 uur op elke maandag.

    • De onderstaande tabel bevat de geldige waarden voor elk veld:

      Veld Bereik Opmerking
      MINUTES 0-59 -
      HOURS 0-23 -
      DAYS - Wordt niet ondersteund. De waarde wordt genegeerd en behandeld als *.
      MONTHS - Wordt niet ondersteund. De waarde wordt genegeerd en behandeld als *.
      DAYS-OF-WEEK 0-6 Nul (0) betekent zondag. Namen van dagen zijn ook geaccepteerd.
    • Zie de Crontab Expression-wiki op GitHub voor meer informatie over het gebruik van crontab-expressies.

    Belangrijk

    DAYS en MONTH worden niet ondersteund. Als u een waarde doorgeeft, wordt deze genegeerd en behandeld als *.

  • (Optioneel) start_time geeft de begindatum en -tijd op met de tijdzone van de planning. start_time: "2022-05-10T10:15:00-04:00" betekent dat de planning begint van 10:15:00 op 2022-05-10 in utc-4 tijdzone. Als start_time u dit weglaat, is de aanmaaktijd gelijk aan de aanmaaktijd van het start_time schema. Als de begintijd zich in het verleden bevindt, wordt de eerste taak uitgevoerd bij de volgende berekende uitvoeringstijd.

  • (Optioneel) end_time beschrijft de einddatum en tijd met tijdzone. Als end_time u dit weglaat, worden taken door de planning geactiveerd totdat het schema handmatig is uitgeschakeld.

  • (Optioneel) time_zonehiermee geeft u de tijdzone van de expressie. Als u dit weglaat, is standaard UTC. Zie de bijlage voor tijdzonewaarden.

Beperkingen:

  • Op dit moment biedt Azure Machine Learning v2-planning geen ondersteuning voor triggers op basis van gebeurtenissen.
  • U kunt een complex terugkeerpatroon opgeven dat meerdere tijdstempels voor triggers bevat met behulp van Azure Machine Learning SDK/CLI v2, terwijl in de gebruikersinterface alleen het complexe patroon wordt weergegeven en het bewerken niet wordt ondersteund.
  • Als u het terugkeerpatroon instelt als de 31e dag van elke maand, in maanden met minder dan 31 dagen, activeert de planning geen taken.

Runtime-instellingen wijzigen bij het definiëren van een schema

Wanneer u een planning definieert met behulp van een bestaande taak, kunt u de runtime-instellingen van de taak wijzigen. Met deze methode kunt u meerdere planningen definiëren met behulp van dezelfde taak met verschillende invoerwaarden.

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidige)

$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

De volgende eigenschappen kunnen worden gewijzigd bij het definiëren van de planning:

Eigenschappen Beschrijving
instellingen Een woordenlijst met instellingen die moeten worden gebruikt bij het uitvoeren van de pijplijntaak.
Ingangen Een woordenlijst met invoer die moet worden gebruikt bij het uitvoeren van de pijplijntaak.
uitvoer Een woordenlijst met invoer die moet worden gebruikt bij het uitvoeren van de pijplijntaak.
experiment_name Experimentnaam van geactiveerde taak.

Notitie

Gebruikersinterface van Studio kunnen alleen de invoer-, uitvoer- en runtime-instellingen wijzigen bij het maken van een planning. experiment_name kan alleen worden gewijzigd met behulp van de CLI of SDK.

Expressies die in de planning worden ondersteund

Wanneer u een planning definieert, ondersteunen we de volgende expressie die tijdens de taakruntime wordt omgezet in werkelijke waarde.

Expression Beschrijving Ondersteunde eigenschappen
${{creation_context.trigger_time}} Het tijdstip waarop de planning wordt geactiveerd. Invoer van tekenreekstype van pijplijntaak
${{name}} De naam van de taak. outputs.path van pijplijntaak

Planning beheren

Planning maken

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidige)

Nadat u de yaml van het schema hebt gemaakt, kunt u de volgende opdracht gebruiken om een planning te maken 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

Schema's weergeven in een werkruimte

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidige)

az ml schedule list

Details van planning controleren

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidige)

az ml schedule show -n simple_cron_job_schedule

Een planning bijwerken

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidige)

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

Notitie

Als u meer dan alleen tags/beschrijving wilt bijwerken, is het raadzaam om deze te gebruiken az ml schedule create --file update_schedule.yml

Een planning uitschakelen

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidige)

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

Een planning inschakelen

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidige)

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

Query geactiveerde taken uitvoeren vanuit een planning

Alle weergavenaam van taken die door planning worden geactiveerd, heeft de weergavenaam als <schedule_name-JJJJMMDDDThhmmssZ>. Als bijvoorbeeld een planning met een naam van benoemde planning wordt gemaakt met een geplande uitvoering elke 12 uur vanaf 1 januari 2021 vanaf 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')]"

Notitie

Voor een eenvoudigere manier om alle taken te vinden die door een planning worden geactiveerd, raadpleegt u de takengeschiedenis op de detailpagina van de planning met behulp van de gebruikersinterface van Studio.


Een schema verwijderen

Belangrijk

Als u een planning wilt verwijderen, moet deze worden uitgeschakeld. Verwijderen is een onherstelbare actie. Nadat een planning is verwijderd, kunt u deze nooit openen of herstellen.

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidige)

az ml schedule delete -n simple_cron_job_schedule

Ondersteuning voor RBAC (op rollen gebaseerd toegangsbeheer)

Omdat schema's meestal worden gebruikt voor productie, kunnen werkruimtebeheerders de toegang beperken tot het maken en beheren van planningen binnen een werkruimte om de impact van misoperation te verminderen.

Er zijn momenteel drie actieregels met betrekking tot planningen en u kunt configureren in Azure Portal. Meer informatie over het beheren van toegang tot een Azure Machine Learning-werkruimte.

Actie Beschrijving Regel
Read Schema's ophalen en weergeven in Machine Learning-werkruimte Microsoft.MachineLearningServices/workspaces/schedules/read
Schrijven Planningen maken, bijwerken, uitschakelen en inschakelen in Machine Learning-werkruimte Microsoft.MachineLearningServices/workspaces/schedules/write
Delete Een planning verwijderen in de Machine Learning-werkruimte Microsoft.MachineLearningServices/workspaces/schedules/delete

Kostenoverwegingen

  • Planningen worden gefactureerd op basis van het aantal planningen. Elke planning maakt een logische apps die namens de gebruiker azure Machine Learning-subs hosten (HOBO).
  • De kosten van logische apps worden teruggezet naar het Azure-abonnement van de gebruiker en u kunt de kosten van HOBO-resources vinden die worden gefactureerd met behulp van dezelfde meter die door de oorspronkelijke RP wordt verzonden. Ze worden weergegeven onder de hostresource (de werkruimte).

Veelgestelde vragen

  • Waarom worden mijn planningen die door sdk zijn gemaakt, niet vermeld in de gebruikersinterface?

    De gebruikersinterface voor planningen is bedoeld voor v2-schema's. Daarom worden uw v1-planningen niet weergegeven of geopend via de gebruikersinterface.

    V2-schema's ondersteunen echter ook v1-pijplijntaken. U hoeft de pijplijn niet eerst te publiceren en u kunt rechtstreeks planningen instellen voor een pijplijntaak.

  • Waarom activeren mijn planningen de taak niet op het moment dat ik eerder heb ingesteld?

    • In schema's wordt standaard UTC-tijdzone gebruikt om de triggertijd te berekenen. U kunt tijdzone opgeven in de wizard Maken of tijdzone bijwerken op de detailpagina van het schema.
    • Als u het terugkeerpatroon instelt als de 31e dag van elke maand, in maanden met minder dan 31 dagen, activeert de planning geen taken.
    • Als u cron-expressies gebruikt, wordt MONTH niet ondersteund. Als u een waarde doorgeeft, wordt deze genegeerd en behandeld als *. Dit is een bekende beperking.
  • Worden planningen op basis van gebeurtenissen ondersteund?

    • Nee, V2-planning biedt geen ondersteuning voor planningen op basis van gebeurtenissen.

Volgende stappen