Gépi tanulási folyamatok aktiválása
A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1
Ebből a cikkből megtudhatja, hogyan ütemezhet programozott módon egy folyamatot az Azure-ban való futtatásra. Létrehozhat ütemezést az eltelt idő vagy a fájlrendszer változásai alapján. Az időalapú ütemezések olyan rutinfeladatok kezelésére használhatók, mint az adateltolódás monitorozása. A változásalapú ütemezésekkel reagálhat a szabálytalan vagy kiszámíthatatlan változásokra, például az új adatok feltöltésére vagy a régi adatok szerkesztésére. Az ütemezések létrehozásának elsajátítása után megtudhatja, hogyan szerezheti be és inaktiválhatja őket. Végül megtudhatja, hogyan futtathat folyamatokat más Azure-szolgáltatások, az Azure Logic App és a Azure Data Factory használatával. Az Azure Logic App összetettebb logikát vagy viselkedést tesz lehetővé. Azure Data Factory folyamatok lehetővé teszik egy gépi tanulási folyamat meghívását egy nagyobb adatvezénylési folyamat részeként.
Előfeltételek
Azure-előfizetés. Ha nem rendelkezik Azure-előfizetéssel, hozzon létre egy ingyenes fiókot.
Egy Python-környezet, amelyben telepítve van a Pythonhoz készült Azure Machine Learning SDK. További információ: Újrafelhasználható környezetek létrehozása és kezelése az Azure Machine Learning betanításához és üzembe helyezéséhez.
Egy közzétett folyamattal rendelkező Machine Learning-munkaterület. Használhatja a Gépi tanulási folyamatok létrehozása és futtatása az Azure Machine Learning SDK-val című beépítettt.
Folyamatok aktiválása a Pythonhoz készült Azure Machine Learning SDK-val
A folyamatok ütemezéséhez szüksége lesz egy hivatkozásra a munkaterületre, a közzétett folyamat azonosítójára és annak a kísérletnek a nevére, amelyben létre szeretné hozni az ütemezést. Ezeket az értékeket a következő kóddal szerezheti be:
import azureml.core
from azureml.core import Workspace
from azureml.pipeline.core import Pipeline, PublishedPipeline
from azureml.core.experiment import Experiment
ws = Workspace.from_config()
experiments = Experiment.list(ws)
for experiment in experiments:
print(experiment.name)
published_pipelines = PublishedPipeline.list(ws)
for published_pipeline in published_pipelines:
print(f"{published_pipeline.name},'{published_pipeline.id}'")
experiment_name = "MyExperiment"
pipeline_id = "aaaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
Ütemezés létrehozása
Ha ismétlődően szeretne futtatni egy folyamatot, létre kell hoznia egy ütemezést. Egy Schedule
folyamat, egy kísérlet és egy eseményindító társítása. Az eseményindító lehet olyanScheduleRecurrence
, amely leírja a feladatok közötti várakozást, vagy egy adattár elérési útját, amely megadja a módosításokat watch könyvtárat. Mindkét esetben szüksége lesz a folyamatazonosítóra és annak a kísérletnek a nevére, amelyben létre szeretné hozni az ütemezést.
A Python-fájl tetején importálja a és ScheduleRecurrence
az Schedule
osztályokat:
from azureml.pipeline.core.schedule import ScheduleRecurrence, Schedule
Időalapú ütemezés létrehozása
A ScheduleRecurrence
konstruktornak van egy kötelező frequency
argumentuma, amelynek a következő sztringek egyikének kell lennie: "Minute", "Hour", "Day", "Week" vagy "Month". Ehhez egy egész szám interval
argumentumra is szükség van, amely meghatározza, hogy hány egységnek kell elenie az frequency
ütemezés kezdete között. A választható argumentumok lehetővé teszik a kezdési időpontok pontosabb megállapítását a ScheduleRecurrence SDK dokumentációjában leírtak szerint.
Hozzon létre egy Schedule
feladatot 15 percenként:
recurrence = ScheduleRecurrence(frequency="Minute", interval=15)
recurring_schedule = Schedule.create(ws, name="MyRecurringSchedule",
description="Based on time",
pipeline_id=pipeline_id,
experiment_name=experiment_name,
recurrence=recurrence)
Változásalapú ütemezés létrehozása
A fájlmódosítások által aktivált folyamatok hatékonyabbak lehetnek, mint az időalapú ütemezések. Ha egy fájl módosítása előtt szeretne valamit tenni, vagy ha új fájlt ad hozzá egy adatkönyvtárhoz, előre feldolgozhatja a fájlt. Az adattár módosításait vagy egy adott könyvtáron belüli módosításokat az adattáron belül figyelheti. Ha egy adott könyvtárat figyel, az adott könyvtár alkönyvtárainak módosításai nem indítják el a feladatokat.
Megjegyzés
A változásalapú ütemezések csak az Azure Blob Storage monitorozását támogatják.
Fájlreaktív Schedule
létrehozásához a datastore
schedule.create hívásban be kell állítania a paramétert. Mappa figyeléséhez állítsa be az argumentumot path_on_datastore
.
Az polling_interval
argumentum segítségével percek alatt megadhatja, hogy az adattár milyen gyakorisággal ellenőrizze a módosításokat.
Ha a folyamat DataPathPipelineParameterrel lett létrehozva, ezt a változót a módosított fájl nevére állíthatja be az data_path_parameter_name
argumentum beállításával.
datastore = Datastore(workspace=ws, name="workspaceblobstore")
reactive_schedule = Schedule.create(ws, name="MyReactiveSchedule", description="Based on input file change.",
pipeline_id=pipeline_id, experiment_name=experiment_name, datastore=datastore, data_path_parameter_name="input_data")
Nem kötelező argumentumok ütemezés létrehozásakor
A korábban tárgyalt argumentumokon kívül az status
argumentumot úgy is beállíthatja, hogy "Disabled"
inaktív ütemezést hozzon létre. Végül a continue_on_step_failure
lehetővé teszi egy logikai érték átadását, amely felülbírálja a folyamat alapértelmezett meghibásodási viselkedését.
Az ütemezett folyamatok megtekintése
A webböngészőben keresse meg az Azure Machine Learninget. A navigációs panel Végpontok szakaszában válassza a Folyamatvégpontok lehetőséget. Ezzel a munkaterületen közzétett folyamatok listájára kerül.
Ezen a lapon a munkaterület összes folyamatával kapcsolatos összefoglaló információkat tekintheti meg: neveket, leírásokat, állapotokat stb. Részletezés a folyamatba való kattintással. Az eredményül kapott oldalon további részletek találhatók a folyamatról, és részletezheti az egyes feladatokat.
A folyamat inaktiválása
Ha van közzétett Pipeline
, de nem ütemezett példánya, letilthatja a következőkkel:
pipeline = PublishedPipeline.get(ws, id=pipeline_id)
pipeline.disable()
Ha a folyamat ütemezve van, először le kell mondania az ütemezést. Kérje le az ütemezés azonosítóját a portálról vagy a következő futtatásával:
ss = Schedule.list(ws)
for s in ss:
print(s)
Miután megadta a schedule_id
letiltani kívánt parancsot, futtassa a következőt:
def stop_by_schedule_id(ws, schedule_id):
s = next(s for s in Schedule.list(ws) if s.id == schedule_id)
s.disable()
return s
stop_by_schedule_id(ws, schedule_id)
Ha ezután újra futtatja Schedule.list(ws)
, üres listát kell kapnia.
Azure Logic Apps használata összetett triggerekhez
Összetettebb eseményindító szabályok vagy viselkedés hozható létre egy Azure Logic App használatával.
Ha egy Azure Logic App használatával szeretne aktiválni egy Machine Learning-folyamatot, szüksége lesz egy közzétett Machine Learning-folyamat REST-végpontjára. Hozza létre és tegye közzé a folyamatot. Ezután keresse meg a REST-végpontját PublishedPipeline
a folyamatazonosító használatával:
# You can find the pipeline ID in Azure Machine Learning studio
published_pipeline = PublishedPipeline.get(ws, id="<pipeline-id-here>")
published_pipeline.endpoint
Logikai alkalmazás létrehozása az Azure-ban
Most hozzon létre egy Azure Logic App-példányt . A logikai alkalmazás kiépítése után az alábbi lépésekkel konfigurálhat egy eseményindítót a folyamathoz:
Hozzon létre egy rendszer által hozzárendelt felügyelt identitást , amely hozzáférést biztosít az alkalmazásnak az Azure Machine Learning-munkaterülethez.
Lépjen a Logikai alkalmazás Tervező nézetre, és válassza az Üres logikai alkalmazás sablont.
A Tervező keresse meg a blobot. Válassza a Blob hozzáadása vagy módosítása (csak tulajdonságok) eseményindítót, és adja hozzá ezt az eseményindítót a logikai alkalmazáshoz.
Adja meg annak a Blob Storage-fióknak a kapcsolati adatait, amelynél a blob hozzáadását vagy módosítását figyelni szeretné. Válassza ki a monitorozni kívánt tárolót.
Válassza az Intervallum és gyakoriság lehetőséget az Ön számára működő frissítések lekérdezéséhez.
Megjegyzés
Ez az eseményindító figyeli a kijelölt tárolót, de nem figyeli az almappákat.
Adjon hozzá egy HTTP-műveletet, amely új vagy módosított blob észlelésekor fog futni. Válassza az + Új lépés lehetőséget, majd keresse meg és válassza ki a HTTP-műveletet.
A művelet konfigurálásához használja az alábbi beállításokat:
Beállítás | Érték |
---|---|
HTTP-művelet | POST |
URI | az előfeltételként talált közzétett folyamat végpontja |
Hitelesítési módszer | Felügyelt identitás |
Állítsa be az ütemezést úgy, hogy beállítsa az esetleges DataPath PipelineParameter-értékek értékét:
{ "DataPathAssignments": { "input_datapath": { "DataStoreName": "<datastore-name>", "RelativePath": "@{triggerBody()?['Name']}" } }, "ExperimentName": "MyRestPipeline", "ParameterAssignments": { "input_string": "sample_string3" }, "RunSource": "SDK" }
Használja a
DataStoreName
munkaterülethez hozzáadott elemet előfeltételként.Válassza a Mentés lehetőséget, és az ütemezés készen áll.
Fontos
Ha azure-beli szerepköralapú hozzáférés-vezérlést (Azure RBAC) használ a folyamathoz való hozzáférés kezeléséhez, állítsa be a folyamatforgatókönyv engedélyeit (betanítás vagy pontozás).
Machine Learning-folyamatok meghívása Azure Data Factory-folyamatokból
Egy Azure Data Factory folyamatban a Machine Learning végrehajtási folyamata egy Azure Machine Learning-folyamatot futtat. Ezt a tevékenységet a Data Factory szerzői oldalán, a Gépi tanulás kategóriában találja:
Következő lépések
Ebben a cikkben a Pythonhoz készült Azure Machine Learning SDK-t használta egy folyamat ütemezéséhez két különböző módon. Egy ütemezés ismétlődik az eltelt idő alapján. A többi ütemezési feladat, ha egy fájlt módosítanak egy megadott Datastore
vagy az adott tárolón belüli könyvtárban. Látta, hogyan használhatja a portált a folyamat és az egyes feladatok vizsgálatához. Megtanulta, hogyan tilthat le egy ütemezést, hogy a folyamat ne fusson. Végül létrehozott egy Azure Logic App-alkalmazást egy folyamat aktiválásához.
További információkért lásd:
- További információ a folyamatokról
- További információ az Azure Machine Learning a Jupyterrel való felfedezéséről