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
- Een Azure-abonnement. Als u nog geen abonnement hebt, maakt u een gratis account voordat u begint.
- Een Azure Machine Learning-werkruimte. Zie Werkruimtebronnen maken om een werkruimte te maken.
- Inzicht in Azure Machine Learning-pijplijnen. Zie Wat zijn machine learning-pijplijnen voor meer informatie.
- De Azure CLI en
ml
extensie die zijn geïnstalleerd door de instructies in Installeren, instellen en gebruiken van de CLI (v2) te volgen. - Kennis van het maken van YAML-pijplijnen voor Azure Machine Learning. Zie Machine Learning-pijplijnen maken en uitvoeren met behulp van onderdelen met de Azure Machine Learning CLI voor meer informatie.
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
enMONTHS
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
, ,days
ofweeks
months
.interval
(vereist) is het aantal tijdseenheden tussen schema-terugkeerpatronen.schedule
(optioneel) definieert het terugkeerpatroon, dat kan bevattenhours
,minutes
enweekdays
. Als u dit weglaat, worden taken geactiveerd volgens de logica vanstart_time
,frequency
eninterval
.- Wanneer
frequency
dat het isday
, kan het patroon opgevenhours
enminutes
. - Wanneer
frequency
isweek
ofmonth
, kan het patroon opgevenhours
,minutes
enweekdays
.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 vanmonday
naarsunday
.
- Wanneer
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-WEEK
met 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 inDAYS
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 bijvoorbeeldstart_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
, inputs
of 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
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.