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
- U moet een Azure-abonnement hebben om Azure Machine Learning te kunnen gebruiken. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint. Probeer vandaag nog de gratis of betaalde versie van Azure Machine Learning.
Installeer de Azure CLI en de
ml
extensie. Volg de installatiestappen in De CLI (v2) installeren, instellen en gebruiken.Maak een Azure Machine Learning-werkruimte als u er nog geen hebt. Zie De CLI (v2) installeren, instellen en gebruiken voor het maken van werkruimten.
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 isrecurrence
. Het kan ook zijncron
, 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, methours
,minutes
enweekdays
.- Wanneer
frequency
dat het isday
, kan het patroon opgevenhours
enminutes
. - Wanneer
frequency
enweek
month
, kan het patroon opgevenhours
enminutes
weekdays
. 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 vanmonday
naarsunday
.- Als
schedule
dit wordt weggelaten, worden de taken geactiveerd volgens de logica vanstart_time
,frequency
eninterval
.
- Wanneer
(Optioneel)
start_time
beschrijft de begindatum en -tijd met tijdzone. Alsstart_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. Alsend_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 iscron
.
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
enMONTH
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. Alsstart_time
u dit weglaat, is de aanmaaktijd gelijk aan de aanmaaktijd van hetstart_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. Alsend_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 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
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
- Meer informatie over het YAML-schema van de CLI (v2).
- Meer informatie over het maken van een pijplijntaak in CLI v2.
- Meer informatie over het maken van een pijplijntaak in SDK v2.
- Meer informatie over de YAML-syntaxis van CLI (v2).
- Meer informatie over pijplijnen.
- Meer informatie over Component.