Kísérletkövetés és megfigyelhetőség

Az AI Runtime integrálódik az MLflow-val, hogy kísérletek követését, megfigyelhetőségét és hibakeresési eszközöket biztosítson. Az MLflow egyetlen helyet biztosít egy futás paramétereinek, metrikáinak, GPU rendszermetrikáinak, naplóinak és artefaktumainak számára, akár notebookban fejlesztesz, akár munkaterhelést küldesz be a databricks air CLI-val, vagy egy feladatot ütemezel.

Mit nyújt az MLflow

Egy MLflow kísérlet csoportosítja a kapcsolódó betanítási futásokat, és minden futás tartós nyilvántartást ad a képzés konfigurációjáról és eredményeiről.

  • Metrikák és paraméterek: Rögzítsd a tanítási veszteséget, értékelési metrikákat, tanulási rátákat és hiperparamétereket, majd hasonlítsd össze őket a futások között.
  • Rendszermetrikák: Tekintse meg a GPU-, CPU- és memóriahasználatot a Rendszermetrikák lapon a kezelt futtatások esetén.
  • Naplónézet: Tekintse meg a feladat által támogatott munkaterheléshez tartozó driverkimenetet a futás Naplók fülén. Lásd: Naplók megtekintése az MLflow Naplók lapján.
  • Artefaktumok és modellek: Tárolja a modellfájlokat, konfigurációkat és egyéb kimeneteket a futással. Használj Unity Catalog kötetet nagy vagy tartós artefaktumokhoz.
  • Megosztás és együttműködés: Hozzáférést biztosít egy kísérlethez, hogy más munkaterületi felhasználók megtekinthessék és összehasonlíthassák a futtatásokat. Lásd: Betanítási futtatások rendszerezése MLflow-kísérletekkel.
  • Keretrendszer integrációk: Használj MLflow integrációkat Hugging Face Transformers-szel, PyTorch Lightning-kal és más támogatott könyvtárakkal.

Feladatalapú munkaterheléseknél, például az databricks air run-vel benyújtott munkaterheléseknél az Azure Databricks feladatfuttatás kiegészíti az MLflow-t a végrehajtási állapot, a számítási erőforrások, a próbálkozások és az illesztőprogram kimenetének rögzítésével.

Hogyan hoznak létre MLflow futtatásokat

Az, hogy hogyan kezded vagy csatlakozol egy MLflow futáshoz, attól függ, hogyan indítod el a munkaterhelést:

Hogyan futtatod a munkaterhelést Hogyan kezdődik az MLflow futtatás Hogyan válassza ki a kísérletet
Databricks CLI (databricks air run) Minden próbálkozás automatikusan létrehoz egy futást. Állítsd be a(z) experiment_name értéket a workload YAML-ben.
Notebook a Databricks AI Runtime SDK használatával (.distributed()) Minden hívás automatikusan generál egy futtatást. Hívd mlflow.set_experiment().distributed() előtt, vagy állítsd be MLFLOW_EXPERIMENT_NAME.
A kód közvetlenül egy csatolt notebookban fut A futás nem jön létre automatikusan. Használja a mlflow.start_run() elemet vagy az autologolást. Hívd meg a jegyzetfüzetben a(z) mlflow.set_experiment() elemet.
Ütemezett ai_runtime_task A feladat automatikusan létrehoz egy futást. Állítsd experiment be a feladatkonfigurációban. Lásd az AI Runtime feladatot.

Miután a kódod elindul vagy csatlakozik a megfelelő futáshoz, használd az MLflow Tracking API-t egyéni tanítási adatok rögzítésére. Támogatott keretrendszereknél automatikus naplózást használhatsz az egyéni naplóhívások helyett. A mélytanulási mintákról lásd: MLflow 3: mélytanulási munkafolyamatok.

Az alábbi gyakorlatokat alkalmazd az MLflow Tracking konfigurálásakor:

  • Állítsa a(z) step értékét egy beszédes értékre, például a globális batchre vagy epochra. Naplózzon időközönként minden köteg helyett. Az MLflow korlátozza a metrikák lépéseinek számát futásonként. Lásd: Erőforráskorlátok.
  • Elosztott tanításhoz csak a 0. rangból logoljunk metrikát, hogy minden érték csak egyszer legyen rögzítve.
  • Jegyzetfüzetek munkameneteihez használj abszolút kísérletelérési utakat, például /Users/<username>/my-experiment vagy /Workspace/Shared/<team>/my-experiment. Helyezd azokat a kísérleteket, amelyeket meg szeretnél osztani, egy megosztott munkaterület mappájába.
  • Tárolj nagy, tartós ellenőrzőpontokat egy Unity Catalog kötetben. Az ellenőrzőpont-kezelési mintákról lásd: Javítsa a képzési teljesítményt és ellenállóképességet az AI Runtime-on.

Note

Használd az MLflow 3.7-es vagy annál magasabb verzióját az ezen az oldalon található példákhoz.

Databricks CLI munkaterhelések követése

Amikor beküld egy munkaterhelést, databricks air runaz AI Runtime létrehoz egy Azure Databricks feladatfuttatást a végrehajtás részleteihez, valamint egy MLflow futtatást a kísérleti adatokhoz. Az eredeti beküldés és az újrapróbálkozások egy feladatfuttatást osztanak meg, miközben minden próbálkozás egy külön MLflow-futtatást hoz létre ugyanabban a kísérletben, hogy összehasonlíthasd a próbálkozásokat.

A GPU, CPU és memóriarendszer metrikái automatikusan rögzítésre kerülnek minden menedzselt futáshoz, és az MLflow System metrikák fülön jelennek meg.

Egy MLflow-futtatás rendszermetrikai füle, amely GPU-, CPU- és memóriamutatókat mutat.

A futás konfigurálása és naplózása

Használja a workload YAML-t a kísérlet kiválasztásához, és opcionálisan konfigurálhatja a futás nevét és az artefaktum helyét. Az alábbi példa mutatja az MLflowhoz szükséges mezőket:

experiment_name: my-training
mlflow_run_name: baseline-lr3e5
mlflow_artifact_location: /Volumes/main/default/mlflow-artifacts/my-training

A mezőkövetelményekről, alapértelmezett értékekről és támogatott értékekről lásd a Workload YAML hivatkozást.

Az AI Runtime a menedzselt futási azonosítót a(z) MLFLOW_RUN_ID révén elérhetővé teszi. Ha saját paramétereket, metrikákat és artefaktumokat szeretnél ahhoz a futtatáshoz naplózni, nyisd meg újra azt a futtatást a MLflow követési API használatával:

import os

import mlflow

# Log from rank 0 only because all nodes share the same MLFLOW_RUN_ID.
if os.environ.get("RANK", "0") == "0":
    with mlflow.start_run(run_id=os.environ["MLFLOW_RUN_ID"]):
        mlflow.log_param("learning_rate", 3e-4)
        for step, loss in enumerate(training_losses):
            mlflow.log_metric("train_loss", loss, step=step)

Futtatások és naplók keresése

A naplók elérhetők mind a Databricks CLI-n, mind az MLflow futtatási oldalán. Használja a következő parancsokat a munkaterhelések megtalálásához, a munkaterhelés ellenőrzéséhez, valamint a naplók streameléséhez vagy letöltéséhez:

databricks air list --all-status
databricks air get <job-run-id>
databricks air logs <job-run-id>
databricks air logs <job-run-id> --node 2
databricks air logs <job-run-id> --download-to ./logs/

A notebookok terhelésének nyomon követése

Egy jegyzetfüzetben közvetlenül futtathatod a kódot a csatolt munkamenetben, vagy elosztott képzést futtathatsz a @distributed dekorátorral a Databricks AI Runtime SDK-ban.

Futtasd a kódot közvetlenül egy jegyzetfüzetben

A kód közvetlenül egy csatolt notebookban nem hoz létre automatikusan MLflow-futtatást. Válassz egy kísérletet, majd indíts el egy futtatást, vagy engedélyezd az autologolást:

import mlflow

mlflow.set_experiment("/Users/<username>/my-experiment")

with mlflow.start_run(run_name="baseline"):
    train()

A PyTorch Lightning autologing engedélyezéséhez a következő mintát használjuk:

mlflow.pytorch.autolog()

with mlflow.start_run(run_name="lightning-baseline"):
    trainer.fit(model, datamodule=datamodule)

Hugging Face Transformers esetén a következőképpen konfigurálhatjuk TrainingArguments :

from transformers import TrainingArguments

args = TrainingArguments(
    output_dir="/Volumes/<catalog>/<schema>/<volume>/checkpoints",
    report_to="mlflow",
    run_name="llama7b-sft-lr3e5",
    logging_steps=50,
)

Használja a Databricks AI Runtime SDK-t

A notebookból elosztott tanításhoz használd a @distributed Databricks AI Runtime SDK (databricks-sdk-air) dekorátorát. Az SDK elérhető a databricks.air névtér alatt a GPU környezet 6-os és annál magasabb verzióiban, illetve serverless_gpu néven érhető el a GPU környezet 5-ös és annál alacsonyabb verzióiban.

from databricks.air import distributed

@distributed()
def train():
    # Training code
    ...

train.distributed()

Minden .distributed() hívás automatikusan létrehoz egy MLflow futást. Az alapértelmezett kísérlet /Users/{WORKSPACE_USER}/{notebook-name}. Egy másik kísérlet kiválasztásához állítsd be azt, mielőtt meghívod a .distributed()-t:

mlflow.set_experiment("/Users/<username>/my-experiment")
train.distributed()

Amikor aktív futáson belül hívsz .distributed() , az AI Runtime egy beágyazott gyerekfutást hoz létre:

with mlflow.start_run() as parent_run:
    train.distributed()

Egy korábbi futás folytatásához állítsa be a(z) MLFLOW_RUN_ID elemet a(z) .distributed() előtt:

import os

os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
train.distributed()

Használd a cell kimenetben lévő run linket vagy a notebook Experiment paneljét, hogy megnyissad az MLflow futást.

Naplók megtekintése

  • Jegyzetfüzet kimenete: A szabványos kimenet és a tanítási kódból származó hibák megjelennek a jegyzetfüzetcella kimenetében.
  • MLflow naplók: A feladat által támogatott notebook-munkaterhelések, például .distributed(remote=True) hívások esetén az MLflow Naplók fül a kapcsolódó feladatfuttatás kimenetét jeleníti meg.

Figyeld az élő GPU erőforrásokat

A notebook GPU erőforrások panelje élő GPU-kihasználtságot, memóriahasználatot és hőmérsékletet mutat az egycsomópontos és többcsomópontos munkaterhelésekhez. Használd az MLflow System metrikák fülét, ha egy futáshoz kötött állandó rekordra van szükséged.

A panel megnyitásához csatlakoztasd a notebookot az AI Runtime-hoz, majd kattints a jobb oldali panelen lévő Chip ikonra.GPU erőforrások.

A GPU-erőforrások panel az egyes GPU-k kihasználtsági, memória- és hőmérsékleti metrikáit jeleníti meg.

A panel 10 másodpercenként kérdezi le a metrikákat, és legfeljebb 2 órányi előzményt őriz meg. Kattints a Frissítés ikonra.Frissítés a legfrissebb értékek lekérésére. 5 perc inaktivitás után a panel szünetel. Nyisd meg újra, hogy folytasd a megfigyelést.

Tekintse meg a naplókat az MLflow Logs fülön

Az MLflow futtatási oldalán a Naplók fül mutatja egy munkaalapú AI Runtime munkaterhelés kimenetét. A megnyitáshoz menj a futtatás oldalára, és kattints a Naplók menüre.

Új futásokhoz a Naplók fül váltja fel a korábban a futás Artifacts fülén tárolt naplófájlokat, amely már elavult. A korábban létrehozott futások naplófájljai az Artifacts lapon érhetők el.

A Naplók fülön a következőket teheted:

  • Keresés: Csak azokat a sorokat mutass, amelyek keresőszót tartalmaznak.
  • Szűrés csomópont, szint és időtartomány szerint: Válassz egyetlen csomópontot egy többcsomópontos munkaterhelésből, csak infót, figyelmeztetést vagy hibasorokat jelenítsd meg, vagy szűkítsd le a nézetet egy időtartományra.
  • Folyamatban lévő munkaterhelés követése: Amíg a folyamat aktív, új kimenet jelenik meg, amikor megérkezik. Görgess fel a követés szüneteltetéséhez.
  • Másolás és letöltés: Másold le a betöltött sorokat, vagy tölts le minden sort, amely megfelel az aktuális szűrőknek.

Naplómegőrzés

A naplók 60 napig elérhetők a Naplók fülön.

A naplókhoz való hozzáférési problémák elhárítása

Az MLflow futtatási oldalán a Logs fül folyamatosan megjeleníti az adott Azure Databricks feladatfutásból származó kimenetet. Az MLflow kísérlethez való hozzáférés nem jelenti a feladathoz való hozzáférést.

Ha a fülön látható , hogy nincs hozzáférésed ezekhez a naplókhoz, kérj meg egy Can Manage jogosult felhasználót vagy egy munkaterület adminisztrátort, hogy legalább Can View engedélyt adjon neked a feladaton. Lásd: Feladathoz való hozzáférés szabályozása.

Globális korlátozások az Azure Databricksben

Lásd: Erőforráskorlátok.