Megosztás a következőn keresztül:


Machine Learning-folyamatfeladatok ütemezése

ÉRVÉNYES:Azure CLI ml-bővítmény v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)

Ebből a cikkből megtudhatja, hogyan ütemezhet gépi tanulási folyamatokat az Azure-ban való futtatásra. Ütemezhet olyan rutinfeladatokat, mint a modellek újratanítása vagy a kötegelt előrejelzések rendszeres frissítése az eltelt idő alapján.

Ez a cikk bemutatja, hogyan hozhat létre, kérdezhet le, frissíthet és inaktiválhat ütemezéseket az Azure Machine Learning CLI, a Pythonhoz készült Azure Machine Learning SDK v2 vagy az Azure Machine Learning Studio felhasználói felületének használatával.

Tipp.

Ha külső vezénylővel szeretné ütemezni a feladatokat, például az Azure Data Factoryt vagy a Microsoft Fabricet, fontolja meg a folyamatfeladatok kötegelt végponton történő üzembe helyezését. További információ: Meglévő folyamatfeladatok üzembe helyezése kötegelt végpontokon, és Azure Machine Learning-modellek futtatása a Fabricből kötegelt végpontok használatával (előzetes verzió)

Előfeltételek

Korlátozások

  • Az Azure Machine Learning v2-ütemezései nem támogatják az eseményalapú eseményindítókat.
  • A parancssori felület és az SDK v2-ütemezései támogatják a több eseményindító időbélyegét tartalmazó összetett ismétlődési minták megadását. A studio felhasználói felülete megjeleníti az összetett mintákat, de nem támogatja a szerkesztésüket.
  • A studio felhasználói felülete csak a v2-ütemezéseket támogatja, és nem tudja listázni vagy elérni a közzétett folyamatokon vagy folyamatvégpontokon alapuló v1-ütemezéseket. Létrehozhat ütemezést egy közzé nem adott folyamathoz.
  • Ha az ismétlődés minden hónap 31. vagy 30. napjaként van beállítva, az ütemezés nem aktiválja a kevesebb napot tartalmazó hónapokban lévő feladatokat.
  • DAYS és MONTHS az értékek nem támogatottak a cron schedule kifejezésekben. Az ezekhez a paraméterekhez átadott értékek figyelmen kívül lesznek hagyva, és úgy lesznek kezelve, mint .*

Ütemezés létrehozása

Ha olyan folyamatfeladattal rendelkezik, amely megfelel a teljesítménynek és a kimeneteknek, beállíthat egy ütemezést, amely rendszeresen automatikusan aktiválja a feladatot. Ehhez létre kell hoznia egy ütemezést, amely egy eseményindítóhoz társítja a feladatot. Az eseményindító lehet minta recurrence vagy kifejezés cron , amely meghatározza a feladat futtatásának időközét és gyakoriságát.

Mindkét esetben először meg kell határoznia egy folyamatfeladatot, akár beágyazott, akár egy meglévő folyamatfeladat megadásával. A folyamatokat a YAML-ben definiálhatja és futtathatja a parancssori felületről, a Pythonban beágyazott folyamatokat készíthet, vagy folyamatokat írhat az Azure Machine Learning Studióban. A folyamatfeladatokat helyileg vagy a munkaterületen lévő meglévő feladatokból is létrehozhatja.

V2-es vagy v1-es folyamatfeladatokhoz v2-ütemezéseket hozhat létre a studio felhasználói felületén, az SDK v2-ben vagy a CLI v2-ben. A folyamatfeladatok ütemezésének beállításához nem kell először közzétennie a meglévő folyamatokat.

A cikkben szereplő kód példák az Ütemezés használata az Azure Machine Learning CLI 2.0-ban című cikkből származnak.

Időalapú ütemezés definiálása ismétlődési mintával

Az alábbi YAML-kód egy folyamatfeladat ismétlődő ütemezését határozza meg. A szükséges type paraméter azt adja meg, hogy a típus a trigger következő 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

A következő ütemezési paramétereket kell megadnia vagy megadhatja:

Paraméterek

  • frequency(kötelező) az az időegység, amely alapján az ütemezési tűz kigyullad. minutesLehet , hours, days, weeksvagy months.
  • interval(kötelező) az ütemezés ismétlődése közötti időegységek száma.
  • schedule (nem kötelező) meghatározza az ismétlődési mintát, amely tartalmazhat hours, minutesés weekdays. Ha nincs megadva, a feladatok az , frequencyés intervala . logikája szerint aktiválódikstart_time.
    • Ha frequency igenday, a minta megadható és minutesmegadhatóhours.
    • Ha frequency van week vagy month, a minta megadhatja hours, minutesés weekdays.
      • hours 0 és 23 közötti egész szám vagy lista.
      • minutes 0 és 59 közötti egész szám vagy lista.
      • weekdaysegy sztring vagy lista.monday sunday
  • start_time (nem kötelező) a kezdési dátum és időpont az időzónával. Ha nincs megadva, az alapértelmezett érték megegyezik a létrehozás ütemezésével. Ha a kezdési időpont a múltban van, az első feladat a következő számított futási időpontban fut.
  • end_time (nem kötelező) az időzónával rendelkező befejezési dátum és idő. Ha nincs megadva, az ütemezés addig aktív marad, amíg manuálisan le nem tiltja.
  • time_zone (nem kötelező) az ismétlődési ütemezés időzónáját adja meg. Ha nincs megadva, az alapértelmezett időpont az egyezményes világidő (UTC). Az időzónák értékeivel kapcsolatos további információkért tekintse meg az időzónák értékeinek függelékét.

Az ütemezési YAML létrehozása után az alábbi paranccsal hozza létre az ütemezést a parancssori felületről:

# 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

Időalapú ütemezés definiálása cron kifejezéssel

A cron-kifejezések rugalmas és testreszabott ismétlődési mintát adhatnak meg az ütemezéshez. A standard crontab-kifejezés a szóközzel tagolt mezőkből MINUTES HOURS DAYS MONTHS DAYS-OF-WEEKáll. A helyettesítő karakterek * egy mező összes értékét jelentik.

Azure Machine Language schedule cron kifejezésben:

  • MINUTES 0 és 59 közötti egész szám vagy lista.
  • HOURS 0 és 23 közötti egész szám vagy lista.
  • DAYSaz értékek nem támogatottak, és mindig úgy vannak kezelve, mint .* Az * érték egy DAYS hónap minden napját jelenti, amely hónaptól és évtől függően változik.
  • MONTHSaz értékek nem támogatottak, és mindig úgy vannak kezelve, mint .*
  • DAYS-OF-WEEK egy egész szám vagy lista 0 és 6 között, ahol 0 = vasárnap. A napok neve is elfogadott.

A kifejezés 15 16 * * 1 például minden hétfőn 16:15(UTC) értéket jelent. A Crontab-kifejezésekről további információt a GitHub Crontab Expression wikijében talál.

Az alábbi YAML-kód egy folyamatfeladat ismétlődő ütemezését határozza meg. A szükséges type paraméter azt adja meg, hogy a típus a trigger következő 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

A következő ütemezési paramétereket kell megadnia vagy megadhatja:

Paraméterek

  • expressionA (kötelező) egy standard crontab kifejezés, amely ismétlődő ütemezést fejez ki.
  • start_time (nem kötelező) az ütemezés kezdési dátuma és időpontja az időzónával. Például azt jelenti, start_time: "2022-05-10T10:15:00-04:00" hogy az ütemezés 2022. május 10-én 10:15:00 órától kezdődik UTC-4 időzónában. Ha nincs megadva, az alapértelmezett érték megegyezik a létrehozás ütemezésével. Ha a kezdési időpont a múltban van, az első feladat a következő számított futási időpontban fut.
  • end_time (nem kötelező) az időzónával rendelkező befejezési dátum és idő. Ha nincs megadva, az ütemezés addig aktív marad, amíg manuálisan le nem tiltja.
  • time_zone (nem kötelező) az ismétlődési ütemezés időzónáját adja meg. Ha nincs megadva, az alapértelmezett érték az UTC.

Az ütemezési YAML létrehozása után az alábbi paranccsal hozza létre az ütemezést a parancssori felületről:

# 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

Feladatbeállítások módosítása ütemezések meghatározásakor

Előfordulhat, hogy azt szeretné, hogy az ütemezések által aktivált feladatok különböző konfigurációkkal rendelkezzenek a tesztfeladatoktól. Ha egy ütemezést egy meglévő feladat használatával határoz meg, módosíthatja a feladat beállításait. Ezzel a módszerrel több ütemezést is meghatározhat, amelyek ugyanazt a feladatot használják különböző bemenetekkel.

Ütemezés definiálásakor módosíthatja a settingsfolyamatot inputs, vagy outputs használhatja azt a folyamatfeladat futtatásakor. Az aktivált feladat is módosítható experiment_name .

Az alábbi ütemezésdefiníció módosítja egy meglévő feladat beállításait.

$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

Támogatott kifejezések használata ütemezésekben

Ütemezés meghatározásakor a következő makrókifejezésekkel definiálhat dinamikus paraméterértékeket, amelyek a feladat futásideje során feloldódnak a tényleges értékekre.

Expression Leírás Támogatott tulajdonságok
${{name}} A feladat neve outputs a folyamatfeladat elérési útja
${{creation_context.trigger_time}} A feladat triggerideje A folyamatfeladat sztringtípusa inputs

Ütemezés kezelése

A munkaterületen listázhatja, megtekintheti a részleteket, frissítheti, letilthatja, engedélyezheti és törölheti az ütemezéseket.

Listaütemezések

az ml schedule list

Ütemezés részleteinek megtekintése

az ml schedule show -n simple_cron_job_schedule

Ütemezés frissítése

az ml schedule update -n simple_cron_job_schedule  --set description="new description" --no-wait

Feljegyzés

Ha nem csak címkéket és leírásokat szeretne frissíteni, használja a következőt az ml schedule create --file update_schedule.yml: .

Ütemezés letiltása

az ml schedule disable -n simple_cron_job_schedule --no-wait

Ütemezés engedélyezése

az ml schedule enable -n simple_cron_job_schedule --no-wait

Ütemezés törlése

Fontos

Először le kell tiltania az ütemezést a törléshez. A törlés végleges és helyreállíthatatlan.

az ml schedule delete -n simple_cron_job_schedule

Lekérdezés által aktivált feladatok ütemezésből

Az adott ütemezés által aktivált feladatok mindegyike megjelenítendő névvel <schedule_name>-YYYYMMDDThhmmssZrendelkezik. Ha például egy elnevezett named-schedule ütemezés 12 óránként fut 2021. január 1-jén 6 órakor kezdődően, a létrehozott feladatok megjelenítendő nevei a következők:

  • named-schedule-20210101T060000Z
  • named-schedule-20210101T180000Z
  • named-schedule-20210102T060000Z
  • named-schedule-20210102T180000Z stb.

Képernyőkép az Azure Machine Learning Studio feladatlapjának feladatmegjelenítési neve szerinti szűréséről.

Azure CLI JMESPath-lekérdezést is alkalmazhat az ütemezési név által aktivált feladatok lekérdezésére.

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

Tipp.

A stúdió ütemezési részleteinek lapján található Feladatok előzményei lapon egyszerűen megtalálhatja az ütemezés által aktivált összes feladatot.


Szerepköralapú hozzáférés-vezérlés (RBAC) támogatása

Mivel az ütemezéseket éles környezetben használják, fontos csökkenteni a hibás működés lehetőségét és hatását. A munkaterület rendszergazdái korlátozhatják a munkaterületek létrehozásának és felügyeletének ütemezéséhez való hozzáférést.

A rendszergazdák az Azure Portalon az ütemezésekhez kapcsolódó alábbi műveleti szabályokat konfigurálhatják. További információ: Az Azure Machine Learning-munkaterületekhez való hozzáférés kezelése.

Művelet Leírás Szabály
Olvasás Ütemezések lekérése és listázása Microsoft.MachineLearningServices/workspaces/schedules/read
Írás Ütemezések létrehozása, frissítése, letiltása és engedélyezése Microsoft.MachineLearningServices/workspaces/schedules/write
Törlés Ütemezések törlése Microsoft.MachineLearningServices/workspaces/schedules/delete

Költségekkel kapcsolatos szempontok

Az ütemezések számlázása az ütemezések száma alapján van kiszámlázva. Minden ütemezés létrehoz egy logikai alkalmazást, amelyet az Azure Machine Learning üzemeltet a felhasználó (HOBO) nevében.

A logikai alkalmazás visszatér a felhasználó Azure-előfizetéséhez. A HOBO-erőforrások költségeinek számlázása az eredeti erőforrás-szolgáltató által kibocsátott mérőművelet alapján történik. A díjak a gazdagép erőforrása alatt jelennek meg, amely az Azure Machine Learning-munkaterület.