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 naplánovat spouštění kanálů strojového učení v Azure. Můžete naplánovat rutinní úlohy, jako je opětovné trénování modelů nebo pravidelná aktualizace dávkových předpovědí na základě uplynulého času.
V tomto článku se dozvíte, jak vytvořit, načíst, aktualizovat a deaktivovat plány pomocí rozhraní příkazového řádku služby Azure Machine Learning, sady Azure Machine Learning SDK v2 pro Python nebo studio Azure Machine Learning uživatelského rozhraní.
Tip
Pokud chcete 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 dávkového koncového bodu. Další informace najdete v tématu Nasazení existujících úloh kanálu do dávkových koncových bodů a spouštění modelů Azure Machine Learning z prostředků infrastruktury pomocí dávkových koncových bodů (Preview).
Požadavky
- Předplatné Azure. Pokud ho nemáte, vytvořte si bezplatný účet před tím, než začnete.
- Pracovní prostor služby Azure Machine Learning. Pokud chcete vytvořit pracovní prostor, přečtěte si téma Vytvoření prostředků pracovního prostoru.
- Znalost kanálů Azure Machine Learning Informace najdete v tématu Co jsou kanály strojového učení.
- Azure CLI a
ml
rozšíření nainstalované podle pokynů v tématu Instalace, nastavení a použití rozhraní příkazového řádku (v2). - Znalost vytváření kanálů YAML ve službě Azure Machine Learning Informace najdete v tématu Vytváření a spouštění kanálů strojového učení pomocí komponent pomocí rozhraní příkazového řádku služby Azure Machine Learning.
Omezení
- Plány služby Azure Machine Learning v2 nepodporují triggery založené na událostech.
- Plány rozhraní příkazového řádku a sady SDK v2 podporují zadávání složitých vzorů opakování, které obsahují více časových razítek triggerů. Uživatelské rozhraní studia zobrazuje složité vzory, ale nepodporuje jejich úpravy.
- Uživatelské rozhraní studia podporuje pouze plány v2 a nemůže vypsat ani získat přístup k plánům verze 1 založeným na publikovaných kanálech nebo koncových bodech kanálu. Můžete vytvořit plán pro nepublikovaný kanál.
- Pokud je opakování nastavené jako 31. nebo 30. den v měsíci, plán neaktivuje úlohy v měsících, které mají méně dnů.
DAYS
aMONTHS
hodnoty nejsou podporovány ve výrazech plánu cron. Hodnoty předané pro tyto parametry jsou ignorovány a považovány za*
.
Vytvoření plánu
Pokud máte úlohu kanálu s uspokojivým výkonem a výstupy, můžete nastavit plán, který automaticky aktivuje úlohu pravidelně. K tomu je nutné vytvořit plán, který přidruží úlohu k triggeru. Aktivační událost může být buď vzor, recurrence
nebo cron
výraz, který určuje interval a frekvenci spuštění úlohy.
V obou případech musíte nejprve definovat úlohu kanálu, buď vloženou, nebo zadáním existující úlohy kanálu. Kanály můžete definovat v YAML a spouštět je z rozhraní příkazového řádku, vytvářet kanály vložené v Pythonu nebo vytvářet kanály v studio Azure Machine Learning. Úlohy kanálu můžete vytvářet místně nebo z existujících úloh v pracovním prostoru.
Plány v2 pro úlohy kanálu v2 nebo v1 můžete vytvořit pomocí uživatelského rozhraní sady Studio, sady SDK v2 nebo rozhraní příkazového řádku v2. Abyste mohli nastavit plány pro úlohy kanálu, nemusíte nejprve publikovat existující kanály.
Příklady kódu v tomto článku pocházejí z práce s plánem v Azure Machine Learning CLI 2.0.
Definování časového plánu se vzorem opakování
Následující kód YAML definuje plán opakování úlohy kanálu. Požadovaný type
parametr určuje, že trigger
typ je 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
Musíte nebo můžete zadat následující parametry plánu:
Parametry
frequency
(povinné) je časová jednotka, na které se plán aktivuje. Může býtminutes
, ,days
hours
,weeks
nebomonths
.interval
(povinné) je počet časových jednotek mezi opakováními plánu.schedule
(volitelné) definuje způsob opakování, který může obsahovathours
,minutes
aweekdays
. Pokud vynecháte, úlohy se aktivují podle logikystart_time
,frequency
ainterval
.- Pokud
frequency
jeday
, vzor může zadathours
aminutes
. - Pokud
frequency
jeweek
nebomonth
, vzor může určithours
,minutes
aweekdays
.hours
je celé číslo nebo seznam od 0 do 23.minutes
je celé číslo nebo seznam od 0 do 59.weekdays
je řetězec nebo seznam odmonday
dosunday
.
- Pokud
start_time
(volitelné) je počáteční datum a čas s časovým pásmem. Pokud tento parametr vynecháte, je výchozí hodnota rovna č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.end_time
(volitelné) je koncové datum a čas s časovým pásmem. Pokud tento plán vynecháte, zůstane plán aktivní, dokud ho ručně nezablokuje.time_zone
(volitelné) určuje časové pásmo plánu opakování. Pokud tento parametr vynecháte, výchozí hodnota je koordinovaný univerzální čas (UTC). Další informace o hodnotách časového pásma najdete v dodatku k hodnotám časového pásma.
Po vytvoření plánu YAML pomocí následujícího příkazu vytvořte plán prostřednictvím rozhraní příkazového řádku:
# 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
Definování časového plánu pomocí výrazu cron
Výraz cron může pro plán zadat flexibilní a přizpůsobený způsob opakování. Standardní výraz crontab se skládá z polí MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
oddělených mezerami . Zástupný znak *
znamená všechny hodnoty pole.
Ve výrazu cron pro plánování jazyka Azure Machine Language:
MINUTES
je celé číslo nebo seznam od 0 do 59.HOURS
je celé číslo nebo seznam od 0 do 23.DAYS
hodnoty nejsou podporovány a jsou vždy považovány za*
. Hodnota*
vDAYS
znamená všechny dny v měsíci, které se liší podle měsíce a roku.MONTHS
hodnoty nejsou podporovány a jsou vždy považovány za*
.DAYS-OF-WEEK
je celé číslo nebo seznam od 0 do 6, kde 0 = neděle. Názvy dnů jsou přijímány také.
Výraz například 15 16 * * 1
znamená 4:15 UTC každé pondělí. Další informace o výrazech crontab najdete na wikiwebu Crontab Expression na GitHubu.
Následující kód YAML definuje plán opakování úlohy kanálu. Požadovaný type
parametr určuje, že trigger
typ je 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
Musíte nebo můžete zadat následující parametry plánu:
Parametry
expression
(required) je standardní výraz crontab, který vyjadřuje opakující se plán.start_time
(volitelné) je datum a čas zahájení plánu s časovým pásmem. Například znamená,start_time: "2022-05-10T10:15:00-04:00"
že plán začíná od 10:15:00 10. května 2022 v časovém pásmu UTC-4. Pokud tento parametr vynecháte, je výchozí hodnota rovna č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.end_time
(volitelné) je koncové datum a čas s časovým pásmem. Pokud tento plán vynecháte, zůstane plán aktivní, dokud ho ručně nezablokuje.time_zone
(volitelné) určuje časové pásmo plánu opakování. Pokud tento argument vynecháte, výchozí hodnota je UTC.
Po vytvoření plánu YAML pomocí následujícího příkazu vytvořte plán prostřednictvím rozhraní příkazového řádku:
# 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
Změna nastavení úloh při definování plánů
Někdy můžete chtít, aby úlohy aktivované podle plánů měly různé konfigurace než testovací úlohy. Když definujete plán pomocí existující úlohy, můžete změnit nastavení úlohy. Tento přístup umožňuje definovat více plánů, které používají stejnou úlohu s různými vstupy.
Při definování plánu můžete změnit settings
inputs
, nebo outputs
použít při spuštění úlohy kanálu. Můžete také změnit experiment_name
aktivovanou úlohu.
Následující definice plánu změní nastavení existující úlohy.
$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
Použití podporovaných výrazů v plánech
Při definování plánu můžete pomocí následujících výrazů maker definovat dynamické hodnoty parametrů, které se během běhu úlohy přeloží na skutečné hodnoty.
Expression | Popis | Podporované vlastnosti |
---|---|---|
${{name}} |
Název úlohy | outputs cesta úlohy kanálu |
${{creation_context.trigger_time}} |
Doba aktivace úlohy | inputs Typ řetězce úlohy kanálu |
Správa plánu
V pracovním prostoru můžete vypsat, zobrazit podrobnosti, aktualizovat, zakázat, povolit a odstranit plány.
Seznamy plánů
az ml schedule list
Zobrazení podrobností plánu
az ml schedule show -n simple_cron_job_schedule
Aktualizace plánu
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 a popis, zvažte použití az ml schedule create --file update_schedule.yml
.
Zakázání plánu
az ml schedule disable -n simple_cron_job_schedule --no-wait
Povolení plánu
az ml schedule enable -n simple_cron_job_schedule --no-wait
Odstranění plánu
Důležité
Nejprve je nutné plán zakázat, abyste ho odstranili. Odstranění je trvalé a neobnovitelné.
az ml schedule delete -n simple_cron_job_schedule
Dotazování aktivovaných úloh z plánu
Úlohy aktivované konkrétním plánem mají zobrazovaný název <schedule_name>-YYYYMMDDThhmmssZ
. Pokud se například plán s názvem named-schedule
spustí každých 12 hodin od 1. ledna 2021 od 1. ledna 2021, zobrazí se názvy vytvořených úloh takto:
- 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')]"
Tip
Karta Historie úloh na stránce podrobností plánu v sadě Studio nabízí jednoduchý způsob, jak najít všechny úlohy aktivované podle plánu.
Podpora řízení přístupu na základě role (RBAC)
Vzhledem k tomu, že plány se používají pro výrobu, je důležité omezit možnost a dopad chybné spolupráce. Správci pracovního prostoru můžou omezit přístup k vytváření a správě plánů v pracovním prostoru.
Správci můžou nakonfigurovat následující pravidla akcí týkající se plánů na webu Azure Portal. Další informace najdete v tématu Správa přístupu k pracovním prostorům Azure Machine Learning.
Akce | Popis | Pravidlo |
---|---|---|
Čteno | Získání a výpis plánů | Microsoft.MachineLearningServices/workspaces/schedules/read |
Write | Vytváření, aktualizace, zakázání a povolení plánů | Microsoft.MachineLearningServices/workspaces/schedules/write |
Odstranění | Odstranění plánů | Microsoft.MachineLearningServices/workspaces/schedules/delete |
Důležité informace o nákladech
Plány se účtují na základě počtu plánů. Každý plán vytvoří aplikaci logiky, kterou Azure Machine Learning hostuje jménem uživatele (HOBO).
Aplikace logiky účtuje poplatky zpět do předplatného Azure uživatele. Náklady na prostředky HOBO se účtují pomocí stejného měřiče generovaného původním poskytovatelem prostředků. Poplatky se zobrazí v rámci hostitelského prostředku, což je pracovní prostor Azure Machine Learning.