Futtatási előzmények indítása, figyelése és nyomon követése
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény 1-es verzió
A Python v1-hez készült Azure Machine Learning SDK és a Machine Learning CLI különböző módszereket kínál a futtatások figyelésére, rendszerezésére és nyomon követésére a betanításhoz és kísérletezéshez. Az ml-futtatási előzmények fontos részét képezik egy magyarázható és megismételhető ML-fejlesztési folyamatnak.
Tipp.
A studio használatával kapcsolatos információkért lásd : Futtatások nyomon követése, monitorozása és elemzése a studióval.
Ha Az Azure Machine Learning SDK v2-t használja, tekintse meg az alábbi cikkeket:
Ez a cikk a következő feladatok elvégzését mutatja be:
- A futtatási teljesítmény monitorozása.
- Futtatások címkézése és keresése.
- Futtassa a keresést a futtatási előzmények között.
- Megszakítás vagy sikertelen futtatások.
- Gyermekfuttatások létrehozása.
- A futtatás állapotának figyelése e-mail-értesítéssel.
Tipp.
Ha az Azure Machine Learning szolgáltatás és a kapcsolódó Azure-szolgáltatások figyelésével kapcsolatos információkat keres, tekintse meg az Azure Machine Learning monitorozását ismertető témakört. Ha a webszolgáltatásként üzembe helyezett monitorozási modellekről szeretne információt keresni, tekintse meg a modelladatok gyűjtését és az Application Insights monitorozását ismertető témakört.
Előfeltételek
A következő elemekre lesz szüksége:
Azure-előfizetés. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot. Próbálja ki ma az Azure Machine Learning ingyenes vagy fizetős verzióját.
A Pythonhoz készült Azure Machine Learning SDK (1.0.21-es vagy újabb verzió). Az SDK legújabb verziójának telepítéséhez vagy frissítéséhez lásd az SDK telepítését vagy frissítését.
Az Azure Machine Learning SDK verziójának ellenőrzéséhez használja a következő kódot:
print(azureml.core.VERSION)
Az Azure Machine Learning Azure CLI- és CLI-bővítménye.
Fontos
A cikkben szereplő Azure CLI-parancsok némelyike az
azure-cli-ml
Azure Machine Learning bővítményét vagy v1-et használja. A v1-bővítmény támogatása 2025. szeptember 30-án megszűnik. Addig a dátumig telepítheti és használhatja a v1-bővítményt.Javasoljuk, hogy 2025. szeptember 30-a előtt váltsa át a
ml
(vagy v2) bővítményt. További információ a v2-es bővítményről: Azure ML CLI-bővítmény és Python SDK v2.
Futtatási teljesítmény monitorozása
Futtatás indítása és naplózási folyamata
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
A kísérlet beállításához importálja a Workspace, Experiment, Run és ScriptRunConfig osztályokat az azureml.core csomagból.
import azureml.core from azureml.core import Workspace, Experiment, Run from azureml.core import ScriptRunConfig ws = Workspace.from_config() exp = Experiment(workspace=ws, name="explore-runs")
Indítsa el a futtatási és a naplózási folyamatot a
start_logging()
módszerrel.notebook_run = exp.start_logging() notebook_run.log(name="message", value="Hello from run!")
Futtatás állapotának figyelése
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
A metódussal lekérheti a
get_status()
futtatás állapotát.print(notebook_run.get_status())
A futtatás azonosítójának, a végrehajtási időnek és a futtatás egyéb részleteinek lekéréséhez használja a metódust
get_details()
.print(notebook_run.get_details())
Ha a futtatás sikeresen befejeződött, a
complete()
metódus használatával jelölje meg befejezettként.notebook_run.complete() print(notebook_run.get_status())
Ha a Python tervezési mintáját
with...as
használja, a futtatás automatikusan befejezettként jelenik meg, ha a futtatás hatókörön kívül esik. Nem kell manuálisan megjelölnie a futtatás befejezettként való megjelölését.with exp.start_logging() as notebook_run: notebook_run.log(name="message", value="Hello from run!") print(notebook_run.get_status()) print(notebook_run.get_status())
Futtatások címkézése és keresése
Az Azure Machine Learningben tulajdonságok és címkék használatával rendszerezheti és lekérdezheti a futtatásokat fontos információkért.
Tulajdonságok és címkék hozzáadása
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
Ha kereshető metaadatokat szeretne hozzáadni a futtatásokhoz, használja a metódust
add_properties()
. A következő kód például hozzáadja a"author"
tulajdonságot a futtatáshoz:local_run.add_properties({"author":"azureml-user"}) print(local_run.get_properties())
A tulajdonságok nem módosíthatók, ezért naplózás céljából állandó rekordot hoznak létre. Az alábbi példakód hibát eredményez, mert az előző kód tulajdonságértékeként
"author"
már hozzáadtuk"azureml-user"
:try: local_run.add_properties({"author":"different-user"}) except Exception as e: print(e)
A tulajdonságoktól eltérően a címkék nem módosíthatók. Ha kereshető és értelmezhető információkat szeretne hozzáadni a kísérlet felhasználóinak, használja a
tag()
módszert.local_run.tag("quality", "great run") print(local_run.get_tags()) local_run.tag("quality", "fantastic run") print(local_run.get_tags())
Egyszerű sztringcímkéket is hozzáadhat. Ha ezek a címkék kulcsként jelennek meg a címkeszótárban, a címkék értéke a
None
következő: .local_run.tag("worth another look") print(local_run.get_tags())
Lekérdezés tulajdonságai és címkéi
A kísérleten belüli futtatások lekérdezésével visszaadhatja az adott tulajdonságoknak és címkéknek megfelelő futtatások listáját.
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
list(exp.get_runs(properties={"author":"azureml-user"},tags={"quality":"fantastic run"})) list(exp.get_runs(properties={"author":"azureml-user"},tags="worth another look"))
Megszakítási vagy sikertelen futtatások
Ha hibát észlel, vagy ha a futtatás túl sokáig tart, megszakíthatja a futtatásokat.
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
Ha az SDK használatával szeretné megszakítani a futtatásokat, használja a cancel()
következő módszert:
src = ScriptRunConfig(source_directory='.', script='hello_with_delay.py')
local_run = exp.submit(src)
print(local_run.get_status())
local_run.cancel()
print(local_run.get_status())
Ha a futtatás befejeződött, de hibát tartalmaz (például helytelen betanítási szkriptet használt), a fail()
metódus használatával megjelölheti sikertelenként.
local_run = exp.submit(src)
local_run.fail()
print(local_run.get_status())
Gyermekfuttatások létrehozása
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
Gyermekfuttatások létrehozása a kapcsolódó futtatások csoportosításához, például különböző hiperparaméter-finomhangolási iterációkhoz.
Feljegyzés
A gyermekfuttatások csak az SDK használatával hozhatók létre.
Ez a példakód a hello_with_children.py
szkript használatával öt gyermekfuttatásból álló köteget hoz létre egy elküldött futtatáson belül a child_run()
következő módszerrel:
!more hello_with_children.py
src = ScriptRunConfig(source_directory='.', script='hello_with_children.py')
local_run = exp.submit(src)
local_run.wait_for_completion(show_output=True)
print(local_run.get_status())
with exp.start_logging() as parent_run:
for c,count in enumerate(range(5)):
with parent_run.child_run() as child:
child.log(name="Hello from child run", value=c)
Feljegyzés
A hatókörből való kikerüléskor a gyermekfuttatások automatikusan befejezettként lesznek megjelölve.
Ha hatékonyan szeretne létrehozni számos gyermekfuttatást, használja a metódust create_children()
. Mivel minden létrehozás hálózati hívást eredményez, a futtatások kötegének létrehozása hatékonyabb, mint egyenként létrehozni őket.
Gyermekfuttatások küldése
A gyermekfuttatások szülőfuttatásból is beküldhetők. Ez lehetővé teszi a szülő- és gyermekfuttatások hierarchiáinak létrehozását. Szülő nélküli gyermekfuttatás nem hozható létre: még ha a szülőfuttatás nem is tesz mást, mint elindítja a gyermekfuttatásokat, akkor is létre kell hoznia a hierarchiát. Az összes futtatás állapota független: a szülő akkor is sikeres állapotban "Completed"
lehet, ha egy vagy több gyermekfuttatást megszakítottak vagy meghiúsultak.
Előfordulhat, hogy azt szeretné, hogy a gyermek a szülőfuttatástól eltérő futtatási konfigurációt használjon. Előfordulhat például, hogy a szülő számára kevésbé hatékony, CPU-alapú konfigurációt használ, miközben GPU-alapú konfigurációkat használ gyermekei számára. Egy másik gyakori kívánság az, hogy minden gyermeknek különböző argumentumokat és adatokat adjon át. A gyermekfuttatás testreszabásához hozzon létre egy ScriptRunConfig
objektumot a gyermekfuttatáshoz.
Fontos
Ha távoli számításon futtatott szülőfuttatásból szeretne gyermekfuttatást küldeni, először be kell jelentkeznie a munkaterületre a szülőfuttatási kódban. A távoli futtatás futtatási környezet objektuma alapértelmezés szerint nem rendelkezik hitelesítő adatokkal a gyermekfuttatások elküldéséhez. A bejelentkezéshez használjon egyszerű szolgáltatásnevet vagy felügyelt identitás hitelesítő adatokat. A hitelesítésről további információt a hitelesítés beállításával kapcsolatban talál.
Az alábbi kód:
- Lekéri a munkaterületről elnevezett
"gpu-cluster"
számítási erőforrástws
- A gyermekobjektumoknak
ScriptRunConfig
átadandó különböző argumentumértékek iterálása - Létrehoz és elküld egy új gyermekfuttatást az egyéni számítási erőforrás és argumentum használatával
- Blokkok, amíg az összes gyermek le nem fut
# parent.py
# This script controls the launching of child scripts
from azureml.core import Run, ScriptRunConfig
compute_target = ws.compute_targets["gpu-cluster"]
run = Run.get_context()
child_args = ['Apple', 'Banana', 'Orange']
for arg in child_args:
run.log('Status', f'Launching {arg}')
child_config = ScriptRunConfig(source_directory=".", script='child.py', arguments=['--fruit', arg], compute_target=compute_target)
# Starts the run asynchronously
run.submit_child(child_config)
# Experiment will "complete" successfully at this point.
# Instead of returning immediately, block until child runs complete
for child in run.get_children():
child.wait_for_completion()
Ha sok gyermekfuttatást szeretne létrehozni azonos konfigurációkkal, argumentumokkal és bemenetekkel, használja a metódust create_children()
. Mivel minden létrehozás hálózati hívást eredményez, a futtatások kötegének létrehozása hatékonyabb, mint egyenként létrehozni őket.
A gyermekfuttatáson belül megtekintheti a szülő futtatási azonosítóját:
## In child run script
child_run = Run.get_context()
child_run.parent.id
Gyermekfuttatások lekérdezése
Egy adott szülő gyermekfuttatásainak lekérdezéséhez használja a metódust get_children()
.
Az recursive = True
argumentum lehetővé teszi a gyermekek és unokák beágyazott fájának lekérdezését.
print(parent_run.get_children())
Naplózás szülő- vagy gyökérfuttatásra
A mezővel Run.parent
elérheti az aktuális gyermekfuttatást elindító futtatásokat. Gyakori használati eset Run.parent
a naplóeredmények egyetlen helyen való kombinálása. A gyermekfuttatások aszinkron módon futnak, és nincs garancia a rendezésre vagy a szinkronizálásra azon túl, hogy a szülő megvárja a gyermekfuttatások befejezését.
# in child (or even grandchild) run
def root_run(self : Run) -> Run :
if self.parent is None :
return self
return root_run(self.parent)
current_child_run = Run.get_context()
root_run(current_child_run).log("MyMetric", f"Data from child run {current_child_run.id}")
A futtatás állapotának figyelése e-mail-értesítéssel
Az Azure Portal bal oldali navigációs sávján válassza a Figyelés lapot.
Válassza a Diagnosztikai beállítások lehetőséget , majd válassza a + Diagnosztikai beállítás hozzáadása lehetőséget.
A diagnosztikai beállításban
- a Kategória részletei területen válassza az AmlRunStatusChangedEvent lehetőséget.
- A Céladatok területen válassza a Küldés a Log Analyticsbe munkaterületet, és adja meg az Előfizetés és a Log Analytics munkaterületet.
Feljegyzés
Az Azure Log Analytics-munkaterület más típusú Azure-erőforrás, mint az Azure Machine Learning Service-munkaterület. Ha a listában nincsenek lehetőségek, létrehozhat egy Log Analytics-munkaterületet.
A Naplók lapon adjon hozzá egy Új riasztási szabályt.
Megtudhatja , hogyan hozhat létre és kezelhet naplóriasztásokat az Azure Monitor használatával.
Példajegyzetfüzetek
A következő jegyzetfüzetek a cikkben szereplő fogalmakat mutatják be:
A naplózási API-kkal kapcsolatos további információkért tekintse meg a naplózási API-jegyzetfüzetet.
A futtatások Azure Machine Learning SDK-val történő kezeléséről további információt a futtatások kezelése jegyzetfüzetben talál.
Következő lépések
- A kísérletek metrikáinak naplózásához tekintse meg a naplómetrikákat a betanítási futtatások során.
- Az Azure Machine Learningből származó erőforrások és naplók monitorozásáról az Azure Machine Learning monitorozása című témakörben olvashat.