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
- Azure-előfizetés. Ha még nincs előfizetése, hozzon létre egy ingyenes fiókot, mielőtt hozzákezd.
- Egy Azure Machine Learning-munkaterület. Munkaterület létrehozásához lásd: Munkaterület-erőforrások létrehozása.
- Az Azure Machine Learning-folyamatok ismerete. További információ: Mik azok a gépi tanulási folyamatok.
- A telepített Azure CLI és
ml
bővítmény a telepítés, a beállítás és a parancssori felület (v2) utasításait követve telepíthető. - Az Azure Machine Learning YAML-folyamatok létrehozásának ismerete. További információ: Gépi tanulási folyamatok létrehozása és futtatása összetevők használatával az Azure Machine Learning CLI-vel.
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
ésMONTHS
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.minutes
Lehet ,hours
,days
,weeks
vagymonths
.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 tartalmazhathours
,minutes
ésweekdays
. Ha nincs megadva, a feladatok az ,frequency
ésinterval
a . logikája szerint aktiválódikstart_time
.- Ha
frequency
igenday
, a minta megadható ésminutes
megadhatóhours
. - Ha
frequency
vanweek
vagymonth
, a minta megadhatjahours
,minutes
ésweekdays
.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.weekdays
egy sztring vagy lista.monday
sunday
- Ha
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.DAYS
az értékek nem támogatottak, és mindig úgy vannak kezelve, mint .*
Az*
érték egyDAYS
hónap minden napját jelenti, amely hónaptól és évtől függően változik.MONTHS
az é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
expression
A (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 settings
folyamatot 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>-YYYYMMDDThhmmssZ
rendelkezik. 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.
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.