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


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.

  • Egy Azure Machine Learning-munkaterület.

  • 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-mlAzure 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

    1. 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")
      
    2. 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 Nonekö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ást ws
  • 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

  1. Az Azure Portal bal oldali navigációs sávján válassza a Figyelés lapot.

  2. 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.

    Képernyőkép az e-mail-értesítések diagnosztikai beállításairól.

  3. A diagnosztikai beállításban

    1. a Kategória részletei területen válassza az AmlRunStatusChangedEvent lehetőséget.
    2. 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.

    Képernyőkép az e-mail-értesítés konfigurálásáról.

  4. A Naplók lapon adjon hozzá egy Új riasztási szabályt.

    Az új riasztási szabály screeenshotja.

  5. 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:

Következő lépések