Plánování úloh kanálů strojového učení
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)
V tomto článku se dozvíte, jak programově naplánovat spuštění kanálu v Azure a použít k tomu uživatelské rozhraní plánu. Plán můžete vytvořit na základě uplynulého času. Plány založené na čase je možné použít k péči o rutinní úlohy, jako jsou například opakované natrénování modelů nebo pravidelné dávkové předpovědi, aby byly aktuální. Po seznámení s vytvářením plánů se dozvíte, jak je načíst, aktualizovat a deaktivovat pomocí rozhraní příkazového řádku, sady SDK a uživatelského rozhraní studia.
Tip
Pokud potřebujete naplánovat úlohy pomocí externího orchestrátoru, jako je Azure Data Factory nebo Microsoft Fabric, zvažte nasazení úloh kanálu v rámci koncového bodu batch. Přečtěte si další informace o tom, jak nasazovat úlohy v rámci dávkového koncového bodu a jak využívat dávkové koncové body z Microsoft Fabric.
Požadavky
- Abyste mohli používat službu Azure Machine Učení, musíte mít předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet. Vyzkoušejte si bezplatnou nebo placenou verzi služby Azure Machine Učení ještě dnes.
Nainstalujte Azure CLI a
ml
rozšíření. Postupujte podle pokynů k instalaci v části Instalace, nastavení a používání rozhraní příkazového řádku (v2).Pokud ho nemáte, vytvořte pracovní prostor azure machine Učení. Informace o vytvoření pracovního prostoru najdete v tématu Instalace, nastavení a použití rozhraní příkazového řádku (v2).
Naplánování úlohy kanálu
Pokud chcete úlohu kanálu spouštět opakovaně, budete muset vytvořit plán. Přidruží Schedule
úlohu a trigger. Triggerem může být cron
buď použití výrazu cron k popisu čekání mezi spuštěními, nebo recurrence
pomocí toho, jakou frekvenci se má úloha aktivovat. V každém případě musíte nejprve definovat úlohu kanálu, může to být existující úlohy kanálu nebo vložená úloha kanálu, viz vytvoření úlohy kanálu v rozhraní příkazového řádku a vytvoření úlohy kanálu v sadě SDK.
Yaml úlohy kanálu můžete naplánovat v místním nebo existující úloze kanálu v pracovním prostoru.
Vytvoření plánu
Vytvoření časového plánu s opakováním
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
$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
obsahuje následující vlastnosti:
- (Povinné)
type
určuje typ plánu jerecurrence
. Může to býtcron
také , viz podrobnosti v další části.
Seznam pokračuje níže.
Poznámka:
Následující vlastnosti, které je potřeba zadat, platí pro rozhraní příkazového řádku a sadu SDK.
(Povinné)
frequency
určuje jednotku času, která popisuje, jak často se plán aktivuje. Může býtminute
, ,day
hour
,week
,month
.(Povinné)
interval
určuje, jak často se plán aktivuje na základě frekvence, což je počet časových jednotek, které mají čekat, dokud se plán znovu neaktivuje.(Volitelné)
schedule
definuje způsob opakování, který obsahujehours
minutes
, aweekdays
.- Pokud
frequency
jeday
, vzor může zadathours
aminutes
. - Kdy
frequency
je amonth
week
, vzor může určithours
,minutes
aweekdays
. hours
by mělo být celé číslo nebo seznam od 0 do 23.minutes
by mělo být celé číslo nebo seznam od 0 do 59.weekdays
může být řetězec nebo seznam odmonday
dosunday
.- Pokud
schedule
je vynechán, úlohy se aktivují podle logikystart_time
frequency
ainterval
.
- Pokud
(Volitelné)
start_time
popisuje počáteční datum a čas s časovým pásmem. Pokudstart_time
tuto hodnotu vynecháte, start_time se bude rovnat času vytvoření úlohy. Pokud je čas spuštění v minulosti, spustí se první úloha při příštím počítaném běhu.(Volitelné)
end_time
popisuje koncové datum a čas s časovým pásmem. Pokudend_time
tento plán vynecháte, bude pokračovat v aktivaci úloh, dokud nebude plán ručně zakázán.(Volitelné)
time_zone
určuje časové pásmo opakování. Pokud tento parametr vynecháte, je ve výchozím nastavení UTC. Další informace o hodnotách časového pásma najdete v dodatku k hodnotám časového pásma.
Vytvoření časového plánu pomocí výrazu cron
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
$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
Oddíl trigger
definuje podrobnosti plánu a obsahuje následující vlastnosti:
- (Povinné)
type
určuje typ plánu jecron
.
Seznam pokračuje níže.
(Povinné)
expression
používá standardní výraz crontab k vyjádření opakujícího se plánu. Jeden výraz se skládá z pěti polí oddělených mezerami:MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
Jeden zástupný znak (
*
), který pokrývá všechny hodnoty pole.*
Hodnota in days znamená všechny dny v měsíci (které se liší podle měsíce a roku).Výše
expression: "15 16 * * 1"
uvedený vzorek znamená každou pondělí 16:15.Následující tabulka uvádí platné hodnoty pro každé pole:
Pole Rozsah Komentář MINUTES
0-59 - HOURS
0-23 - DAYS
- Nepodporováno Hodnota bude ignorována a bude považována za *
.MONTHS
- Nepodporováno Hodnota bude ignorována a bude považována za *
.DAYS-OF-WEEK
0-6 Nula (0) znamená neděli. Byly přijaty také názvy dnů. Další informace o používání výrazu crontab najdete na wikiwebu Crontab Expression na GitHubu .
Důležité
DAYS
aMONTH
nejsou podporovány. Pokud předáte hodnotu, bude ignorována a považována za*
.(Volitelné)
start_time
určuje počáteční datum a čas s časovým pásmem plánu.start_time: "2022-05-10T10:15:00-04:00"
znamená, že plán začíná od 10:15:00 dne 2022-05-10 v časovém pásmu UTC-4. Pokudstart_time
tento parametr vynecháte,start_time
bude se rovnat času vytvoření plánu. Pokud je čas spuštění v minulosti, spustí se první úloha při příštím počítaném běhu.(Volitelné)
end_time
popisuje koncové datum a čas s časovým pásmem. Pokudend_time
tento plán vynecháte, bude pokračovat v aktivaci úloh, dokud nebude plán ručně zakázán.(Volitelné)
time_zone
určuje časové pásmo výrazu. Pokud tento parametr vynecháte, je ve výchozím nastavení UTC. Viz dodatek k hodnotám časového pásma.
Omezení:
- V současné době plán služby Azure Machine Učení v2 nepodporuje trigger založený na událostech.
- Pomocí sady Azure Machine Učení SDK/CLI v2 můžete zadat složitý způsob opakování obsahující více časových razítek aktivačních událostí, zatímco uživatelské rozhraní zobrazuje jenom složitý vzor a nepodporuje úpravy.
- Pokud nastavíte opakování jako 31. den v měsících s méně než 31 dny, plán neaktivuje úlohy.
Změna nastavení modulu runtime při definování plánu
Při definování plánu pomocí existující úlohy můžete změnit nastavení modulu runtime úlohy. Pomocí tohoto přístupu můžete definovat více plánů pomocí stejné úlohy s různými vstupy.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
$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
Při definování plánu je možné změnit následující vlastnosti:
Vlastnost | Popis |
---|---|
settings | Slovník nastavení, která se mají použít při spuštění úlohy kanálu. |
Vstupy | Slovník vstupů, které se mají použít při spuštění úlohy kanálu. |
Výstupy | Slovník vstupů, které se mají použít při spuštění úlohy kanálu. |
experiment_name | Název experimentu aktivované úlohy |
Poznámka:
Uživatelé uživatelského rozhraní studia můžou při vytváření plánu upravovat jenom nastavení vstupu, výstupu a modulu runtime. experiment_name
lze změnit pouze pomocí rozhraní příkazového řádku nebo sady SDK.
Výrazy podporované v plánu
Při definování plánu podporujeme následující výraz, který se během běhu úlohy přeloží na skutečnou hodnotu.
Expression | Popis | Podporované vlastnosti |
---|---|---|
${{creation_context.trigger_time}} |
Čas, kdy se plán aktivuje. | Vstupy typu string úlohy kanálu |
${{name}} |
Název úlohy. | outputs.path úlohy kanálu |
Správa plánu
Vytvoření plánu
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
Po vytvoření plánu yaml můžete pomocí následujícího příkazu vytvořit plán prostřednictvím rozhraní příkazového řádku.
# 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
Výpis plánů v pracovním prostoru
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
az ml schedule list
Kontrola podrobností plánu
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
az ml schedule show -n simple_cron_job_schedule
Aktualizace plánu
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Poznámka:
Pokud chcete aktualizovat více než jen značky nebo popis, doporučujeme použít az ml schedule create --file update_schedule.yml
Zakázání plánu
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
az ml schedule disable -n simple_cron_job_schedule --no-wait
Povolení plánu
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
az ml schedule enable -n simple_cron_job_schedule --no-wait
Dotazování aktivovaných úloh z plánu
Všechny zobrazované názvy úloh aktivovaných podle plánu budou mít zobrazovaný název jako <schedule_name-YYYYMMDDThhmmssZ>. Pokud je například vytvořen plán s názvem pojmenovaného plánu s naplánovaným spuštěním každých 12 hodin počínaje 6. lednem 1. 2021, zobrazí se zobrazované názvy vytvořených úloh následujícím způsobem:
- named-schedule-20210101T060000Z
- named-schedule-20210101T180000Z
- named-schedule-20210102T060000Z
- named-schedule-20210102T180000Z atd.
Dotaz JMESPath v Azure CLI můžete použít také k dotazování úloh aktivovaných názvem plánu.
# 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')]"
Poznámka:
Jednodušší způsob, jak najít všechny úlohy aktivované podle plánu, najdete v historii úloh na stránce podrobností plánu pomocí uživatelského rozhraní studia.
Odstranění plánu
Důležité
Před odstraněním je nutné plán zakázat. Odstranění je neopravitelná akce. Po odstranění plánu se k němu nikdy nedostanete ani ho neobnovíte.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
az ml schedule delete -n simple_cron_job_schedule
Podpora řízení přístupu na základě role (RBAC)
Vzhledem k tomu, že plány se obvykle používají pro produkční prostředí, aby se snížil dopad chybné spolupráce, správci pracovního prostoru mohou chtít omezit přístup k vytváření a správě plánů v rámci pracovního prostoru.
V současné době existují tři pravidla akcí související s plány a můžete nakonfigurovat na webu Azure Portal. Další podrobnosti o správě přístupu k pracovnímu prostoru azure machine Učení najdete v dalších podrobnostech.
Akce | Popis | Pravidlo |
---|---|---|
Čteno | Získání a výpis plánů v pracovním prostoru Machine Učení | Microsoft.Machine Učení Services/workspaces/schedules/read |
Write | Vytvoření, aktualizace, zakázání a povolení plánů v pracovním prostoru machine Učení | Microsoft.Machine Učení Services/workspaces/schedules/write |
Odstranění | Odstranění plánu v pracovním prostoru Učení počítače | Microsoft.Machine Učení Services/workspaces/schedules/delete |
Důležité informace o nákladech
- Plány se účtují podle počtu plánů. Každý plán vytvoří aplikaci logiky, která hostuje azure Machine Učení subs jménem uživatele (HOBO).
- Náklady na aplikace logiky se změní zpět na předplatné Azure uživatele a náklady na prostředky HOBO se účtují pomocí stejného měřiče generovaného původním poskytovatelem prostředků. Zobrazují se v rámci prostředku hostitele (pracovního prostoru).
Nejčastější dotazy
Proč moje plány vytvořené sadou SDK nejsou uvedené v uživatelském rozhraní?
Uživatelské rozhraní plánů je určené pro plány v2. Proto nebudou vaše plány v1 uvedené ani přístupné prostřednictvím uživatelského rozhraní.
Plány v2 ale podporují také úlohy kanálu v1. Nejdřív nemusíte publikovat kanál a můžete přímo nastavit plány pro úlohu kanálu.
Proč moje plány neaktivují úlohu v době, kdy jsem předtím nastavil?
- Ve výchozím nastavení budou časové pásmo UTC používat k výpočtu času aktivační události. Časové pásmo můžete zadat v průvodci vytvořením nebo aktualizovat časové pásmo na stránce podrobností plánu.
- Pokud nastavíte opakování jako 31. den v měsících s méně než 31 dny, plán neaktivuje úlohy.
- Pokud používáte výrazy cron, funkce MONTH se nepodporuje. Pokud předáte hodnotu, bude ignorována a považována za *. Jedná se o známé omezení.
Podporují se plány založené na událostech?
- Ne, plán V2 nepodporuje plány založené na událostech.
Další kroky
- Přečtěte si další informace o schématu YAML plánu CLI (v2).
- Zjistěte, jak vytvořit úlohu kanálu v rozhraní příkazového řádku v2.
- Zjistěte, jak vytvořit úlohu kanálu v sadě SDK v2.
- Přečtěte si další informace o syntaxi YAML core CLI (v2).
- Přečtěte si další informace o Pipelines.
- Přečtěte si další informace o komponentě.