Ml-kísérletek és modellek nyomon követése az MLflow használatával

A nyomon követés a kísérlet összes kapcsolódó információjának mentésére utal, amelyek minden futtatott kísérlethez relevánsnak tűnhetnek. Az ilyen metaadatok a projekttől függően változnak, de a következők lehetnek:

  • Code
  • Környezet részletei (operációsrendszer-verzió, Python-csomagok)
  • Bemeneti adatok
  • Paraméterkonfigurációk
  • Modellek
  • Értékelési metrikák
  • Kiértékelési vizualizációk (keveredési mátrix, fontossági diagramok)
  • Értékelési eredmények (beleértve néhány kiértékelési előrejelzést is)

Ezen elemek némelyikét az Azure Machine Learning automatikusan nyomon követi a feladatok (például a kód, a környezet, valamint a bemeneti és kimeneti adatok) használatakor. Másoknak, például a modelleknek, paramétereknek és metrikáknak azonban a modellkészítőnek kell lennie, mivel az adott forgatókönyvre jellemző.

Ebből a cikkből megtudhatja, hogyan használhatja az MLflow-t a kísérletek nyomon követéséhez és az Azure Machine Learning-munkaterületeken való futtatáshoz.

Megjegyzés

Ha nyomon szeretné követni az Azure Databricksben vagy Azure Synapse Analyticsben futó kísérleteket, tekintse meg az Azure Databricks ML-kísérletek nyomon követése az MLflow és az Azure Machine Learning használatával, illetve az MLflow és az Azure Machine Learning Azure Synapse Analytics ML-kísérleteinek nyomon követése című témakört.

A kísérletek nyomon követésének előnyei

Erősen javasoljuk a gépi tanulási szakembereknek, hogy nyomon követve alakítsák ki kísérleteiket, függetlenül attól, hogy az Azure Machine Learningben végzett feladatokkal vagy a jegyzetfüzetekben interaktív módon tanulnak. Az előnyök:

  • Az összes gépi tanulási kísérlet egyetlen helyen van rendezve, így kereshet és szűrhet kísérleteket, hogy megtalálja az információkat, és részletezze, hogy pontosan mi volt az, amit korábban kipróbált.
  • Hasonlítsa össze a kísérleteket, elemezze az eredményeket és hibakeresési modell betanítását kevés többletmunkával.
  • Kísérletek reprodukálása vagy újrafuttatása az eredmények ellenőrzéséhez.
  • Az együttműködés javításához tekintse meg, hogy mindenki mit csinál, ossza meg a kísérlet eredményeit, és programozott módon férhessen hozzá a kísérleti adatokhoz.

Miért érdemes MLflow

Az Azure Machine Learning-munkaterületek MLflow-kompatibilisek, ami azt jelenti, hogy az MLflow használatával nyomon követheti a futtatásokat, metrikákat, paramétereket és összetevőket az Azure Machine Learning-munkaterületekkel. Az MLflow nyomkövetéshez való használatával nem kell módosítania a betanítási rutinokat az Azure Machine Learning használatához, és nem kell beszúrnia a felhőspecifikus szintaxist, ami a megközelítés egyik fő előnye.

Tekintse meg az MLflow és az Azure Machine Learning összes támogatott MLflow- és Azure Machine Learning-funkcióját, beleértve az MLflow Project támogatását (előzetes verzió) és a modell üzembe helyezését.

Előfeltételek

  • Telepítse a Mlflow SDK-csomagot mlflow és az Azure Machine Learning beépülő modult az MLflow-hoz azureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Tipp

    A csomagot mlflow-skinnysql storage, kiszolgáló, felhasználói felület vagy adatelemzési függőségek nélkül is használhatja, amely egy egyszerű MLflow-csomag. Azoknak a felhasználóknak ajánlott, akiknek elsősorban a nyomkövetési és naplózási képességekre van szükségük az MLflow-funkciók teljes csomagjának importálása nélkül, beleértve az üzemelő példányokat is.

  • Szüksége van egy Azure Machine Learning-munkaterületre. Ezt az oktatóanyagot követve létrehozhat egyet.

  • Ha távoli nyomkövetést végez (az Azure Machine Learningen kívül futó nyomkövetési kísérleteket), konfigurálja az MLflow-t úgy, hogy az az Azure Machine Learning-munkaterület nyomonkövetési URI-jára mutasson az MLflow konfigurálása az Azure Machine Learninghez című témakörben leírtak szerint.

A kísérlet konfigurálása

Az MLflow kísérletekben és futtatásokban rendszerezi az információkat (az Azure Machine Learningben a futtatásokat Feladatoknak nevezzük). Alapértelmezés szerint a rendszer naplózza a futtatásokat egy Alapértelmezett nevű kísérletbe, amely automatikusan létrejön Az Ön számára. Konfigurálhatja a kísérletet, ahol a nyomon követés történik.

Interaktív betanításkor, például egy Jupyter Notebook, használja az MLflow parancsotmlflow.set_experiment(). Az alábbi kódrészlet például bemutatja a kísérlet konfigurálását, majd a naplózást egy feladat során:

experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)

A futtatás konfigurálása

Az Azure Machine Learning nyomon követi az MLflow által futtatásnak hívható betanítási feladatokat. Futtatásokkal rögzítheti a feladat által végrehajtott összes feldolgozást.

Amikor interaktívan dolgozik, az MLflow azonnal elkezdi nyomon követni a betanítási rutint, amint megpróbál naplózni az aktív futtatást igénylő információkat. Például amikor naplóz egy metrikát, naplóz egy paramétert, vagy amikor elindít egy betanítási ciklust, amikor a Mlflow automatikusan ki van kapcsolva. Általában azonban hasznos a futtatás explicit indítása, különösen akkor, ha a kísérlet teljes idejét szeretné rögzíteni az Időtartam mezőben. A futtatás explicit elindításához használja a következőt mlflow.start_run(): .

Függetlenül attól, hogy manuálisan indította-e el a futtatást, végül le kell állítania a futtatást, hogy tájékoztassa az MLflow-t arról, hogy a kísérletfuttatás befejeződött, és befejezettként jelöli meg az állapotát. Ehhez az összes mlflow.end_run(). Határozottan javasoljuk, hogy manuálisan indítsa el a futtatásokat, hogy ne felejtse el befejezni őket a jegyzetfüzetek használatakor.

mlflow.start_run()

# Your code

mlflow.end_run()

A futtatás befejezésének elkerülése érdekében általában hasznos a környezetkezelői paradigma használata:

with mlflow.start_run() as run:
    # Your code

Amikor új futtatásba kezd a használatával mlflow.start_run(), érdemes lehet jelezni a paramétert run_name , amely ezután a futtatás nevére fordítódik le az Azure Machine Learning felhasználói felületén, és segít a futtatás gyorsabb azonosításában:

with mlflow.start_run(run_name="hello-world-example") as run:
    # Your code

Automatikus naplózás

Az MLflow segítségével manuálisan naplózhatja a metrikákat, paramétereket és fájlokat . Az MLflow automatikus naplózási funkciójára is támaszkodhat. Az MLflow által támogatott minden gépi tanulási keretrendszer dönti el, hogy mi legyen automatikusan nyomon követve.

Az automatikus naplózás engedélyezéséhez szúrja be a következő kódot a betanítási kód elé:

mlflow.autolog()

Metrikák és összetevők megtekintése a munkaterületen

Az MLflow-naplózásból származó metrikákat és összetevőket a rendszer a munkaterületen követi nyomon. Ha bármikor meg szeretné tekinteni őket, lépjen a munkaterületre, és keresse meg a kísérletet név szerint a munkaterületen Azure Machine Learning stúdió.

Képernyőkép a metrikák nézetről.

Válassza ki a naplózott metrikákat a diagramok jobb oldalon való megjelenítéséhez. A diagramok testreszabásához simítást alkalmazhat, módosíthatja a színt, vagy több metrikát ábrázolhat egyetlen gráfon. Igény szerint átméretezheti és átrendezheti az elrendezést. Miután létrehozta a kívánt nézetet, mentheti későbbi használatra, és megoszthatja csapattársaival egy közvetlen hivatkozással.

A metrikákat, paramétereket és összetevőket programozott módon is elérheti vagy lekérdezheti az MLflow SDK használatával. Használja a mlflow.get_run() a magyarázatnak megfelelően:

import mlflow

run = mlflow.get_run("<RUN_ID>")

metrics = run.data.metrics
params = run.data.params
tags = run.data.tags

print(metrics, params, tags)

Tipp

Metrikák esetében az előző példa csak egy adott metrika utolsó értékét adja vissza. Ha egy adott metrika összes értékét le szeretné kérni, használja mlflow.get_metric_history a metódust a Paraméterek és metrikák lekérése futtatásból című témakörben leírtak szerint.

A naplózott összetevők, például fájlok és modellek letöltéséhez használhatja a mlflow.artifacts.download_artifacts()

mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")

További információ arról, hogyan lehet adatokat lekérni vagy összehasonlítani a kísérletekből és futtatásokból az Azure Machine Learningben az MLflow használatával nézet Lekérdezések & és futtatások összehasonlítása az MLflow-val

Példajegyzetfüzetek

Ha példákat keres az MLflow Jupyter-notebookokban való használatára, tekintse meg a példában az MLflow használatával (Jupyter Notebooks) adattárat.

Korlátozások

Előfordulhat, hogy az MLflow API-ban elérhető egyes módszerek nem érhetők el az Azure Machine Learninghez való csatlakozáskor. A támogatott és nem támogatott műveletekkel kapcsolatos részletekért tekintse meg a futtatások és kísérletek lekérdezésének támogatási mátrixát.

Következő lépések