Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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-experimentvagy/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.
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ő GPU erőforrások.
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 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.