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.

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 je recurrence. Může to být crontaké , 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ýt minute, , dayhour, 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ý obsahuje hoursminutes, a weekdays.

    • Pokud frequency je day, vzor může zadat hours a minutes.
    • Kdy frequency je a monthweek , vzor může určit hours, minutes a weekdays.
    • 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 od monday do sunday.
    • Pokud schedule je vynechán, úlohy se aktivují podle logiky start_timefrequency a interval.
  • (Volitelné) start_time popisuje počáteční datum a čas s časovým pásmem. Pokud start_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. Pokud end_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 je cron.

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 a MONTH 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. Pokud start_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. Pokud end_time tento plán vynecháte, bude pokračovat v aktivaci úloh, dokud nebude plán ručně zakázán.

  • (Volitelné) time_zoneurč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.

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')]"

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