Sdílet prostřednictvím


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í.

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 a MONTHS 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ýt minutes, , dayshours, weeksnebo months.
  • interval(povinné) je počet časových jednotek mezi opakováními plánu.
  • schedule (volitelné) definuje způsob opakování, který může obsahovat hours, minutesa weekdays. Pokud vynecháte, úlohy se aktivují podle logiky start_time, frequencya interval.
    • Pokud frequency je day, vzor může zadat hours a minutes.
    • Pokud frequency je week nebo month, vzor může určit hours, minutesa weekdays.
      • 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 od monday do sunday.
  • 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-WEEKoddě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 * v DAYS 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 settingsinputs, 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.

Snímek obrazovky s kartou Úlohy v studio Azure Machine Learning filtrování podle zobrazovaného názvu úlohy

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.