Share via


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

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 Tanulás munkaterületeken való futtatáshoz.

A nyomon követés a futtatott kísérletekre vonatkozó információk mentésének folyamata. A mentett információk (metaadatok) a projekttől függően változnak, és a következők lehetnek:

  • Kód
  • Környezet részletei (például 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 (például keveredési mátrixok, fontossági diagramok)
  • Kiértékelési eredmények (beleértve néhány kiértékelési előrejelzést is)

Amikor az Azure Machine Tanulás-beli feladatokkal dolgozik, az Azure Machine Tanulás automatikusan nyomon követi a kísérletek bizonyos adatait, például a kódokat, a környezetet, valamint a bemeneti és kimeneti adatokat. Mások, például modellek, paraméterek és metrikák esetében azonban a modellkészítőnek konfigurálnia kell a nyomon követésüket, mivel azok az adott forgatókönyvre vonatkoznak.

Feljegyzés

Ha nyomon szeretné követni az Azure Databricksen futó kísérleteket, tekintse meg az Azure Databricks ML-kísérletek nyomon követését az MLflow és az Azure Machine Tanulás használatával. Az Azure Synapse Analyticsben futó kísérletek nyomon követéséről az Azure Synapse Analytics ML-kísérleteinek nyomon követése az MLflow és az Azure Machine Tanulás című témakörben olvashat.

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

Határozottan javasoljuk, hogy a gépi tanulási szakemberek nyomon kövessék a kísérleteket, függetlenül attól, hogy az Azure Machine-Tanulás vagy a jegyzetfüzetek interaktív betanításával dolgozik. A kísérletkövetés lehetővé teszi a következőt:

  • Az összes gépi tanulási kísérletet egyetlen helyen rendszerezheti. Ezután kereshet és szűrhet kísérleteket, és lehatolást végezhet a korábban futtatott kísérletek részleteinek megtekintéséhez.
  • Hasonlítsa össze a kísérleteket, elemezze az eredményeket és hibakeresési modell betanítását kevés extra munká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ása, mivel láthatja, hogy más csapattársak mit csinálnak, megoszthatják a kísérlet eredményeit, és programozott módon hozzáférhetnek a kísérleti adatokhoz.

Miért érdemes MLflow-t használni a kísérletek nyomon követéséhez?

Az Azure Machine Tanulás-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 Tanulás-munkaterületeken. Az MLflow nyomkövetéshez való használatának egyik fő előnye, hogy nem kell módosítania a betanítási rutinokat az Azure Machine Tanulás használatához, és nem kell felhőspecifikus szintaxist beszúrnia.

A támogatott MLflow-ról és az Azure Machine Tanulás funkcióiról további információt az MLflow és az Azure Machine Tanulás című témakörben talál.

Korlátozások

Előfordulhat, hogy az MLflow API-ban elérhető egyes metódusok nem érhetők el az Azure Machine-Tanulás való csatlakozáskor. A támogatott és nem támogatott műveletekről további információt a futtatások és kísérletek lekérdezésének támogatási mátrixában talál.

Előfeltételek

  • 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 az Azure Machine Tanulás ingyenes vagy fizetős verzióját.
  • Telepítse az MLflow SDK-csomagot mlflow és az Azure Machine Tanulás beépülő modult az MLflow-hozazureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Tipp.

    Használhatja a mlflow-skinny csomagot, amely egy egyszerű MLflow-csomag SQL Storage, kiszolgáló, felhasználói felület vagy adatelemzési függőségek nélkül. mlflow-skinny Azoknak a felhasználóknak ajánlott, akiknek elsősorban az MLflow nyomkövetési és naplózási képességeire van szükségük anélkül, hogy importálni kellene a teljes szolgáltatáscsomagot, beleértve az üzembe helyezéseket is.

  • Egy Azure Machine Learning-munkaterület. Létrehozhat egyet a Gépi tanulási erőforrások létrehozása oktatóanyagot követve.

  • Ha távoli nyomkövetést végez (vagyis az Azure Machine Tanulás kívül futó nyomkövetési kísérleteket), az MLflow konfigurálása az Azure Machine Tanulás-munkaterület nyomon követésére mutató URI-jára mutat. További információ az MLflow munkaterülethez való csatlakoztatásáról: MLflow konfigurálása az Azure Machine Tanulás.

A kísérlet konfigurálása

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

Interaktív betanításhoz, például Jupyter-jegyzetfüzetekben, használja az MLflow parancsot mlflow.set_experiment(). A következő kódrészlet például konfigurál egy kísérletet:

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

A futtatás konfigurálása

Az Azure Machine Tanulás nyomon követi az MLflow által futtatásnak hívott 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. Az MLflow-követés például akkor indul el, amikor naplóz egy metrikát, egy paramétert vagy elindít egy betanítási ciklust, és az Mlflow automatikusan elérhető funkciói engedélyezve lesznek. Azonban általában hasznos a futtatás explicit elindí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(): .

Akár manuálisan indítja el a futtatást, akár nem, végül le kell állítania a futtatást, hogy az MLflow tudja, hogy a kísérlet futtatása befejeződött, és befejezettként megjelölheti a futtatás állapotát. A futtatás leállításához használja a következőt mlflow.end_run(): .

Javasoljuk, hogy manuálisan indítsa el a futtatásokat, hogy ne felejtse el befejezni őket, amikor jegyzetfüzetekben dolgozik.

  • A futtatás manuális indítása és befejezése, ha végzett a jegyzetfüzetben végzett munkával:

    mlflow.start_run()
    
    # Your code
    
    mlflow.end_run()
    
  • Általában hasznos, ha a környezetkezelői paradigmát használja a futtatás befejezéséhez:

    with mlflow.start_run() as run:
        # Your code
    
  • Új futtatás mlflow.start_run()indításakor hasznos lehet megadni a run_name paramétert, amely később az Azure Machine Tanulás felhasználói felületén a futtatás nevére fordítja le, és segít a futtatás gyorsabb azonosításában:

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

Az MLflow automatikus kitöltésének engedélyezése

A metrikákat, paramétereket és fájlokat manuálisan naplózhatja az MLflow használatával. Az MLflow automatikus naplózási funkciójára is támaszkodhat. Az MLflow által támogatott összes 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ásából származó metrikákat és összetevőket a rendszer nyomon követi a munkaterületen. Bármikor megtekintheti és elérheti őket a stúdióban, vagy programozott módon is elérheti őket az MLflow SDK-val.

Metrikák és összetevők megtekintése a stúdióban:

  1. Nyissa meg az Azure Machine Tanulás Studiót.

  2. Lépjen a munkaterületre.

  3. Keresse meg a kísérletet név szerint a munkaterületen.

  4. Válassza ki a naplózott metrikákat a diagramok jobb oldalon való megjelenítéséhez. A diagramokat simítással, színmódosítással vagy több metrika egyetlen gráfon való ábrázolásával testre szabhatja. Igény szerint átméretezheti és átrendezheti az elrendezést.

  5. Miután létrehozta a kívánt nézetet, mentse későbbi használatra, és ossza meg a csapattagokkal egy közvetlen hivatkozás használatával.

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

A metrikák, paraméterek és összetevők az MLflow SDK-n keresztül programozott módon való eléréséhez vagy lekérdezéséhez használja a mlflow.get_run()-t.

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én az előző példakód csak egy adott metrika utolsó értékét adja vissza. Ha egy adott metrika összes értékét le szeretné kérni, használja a metódust mlflow.get_metric_history . A metrikák értékeinek lekéréséről további információt a paramok és metrikák lekérése futtatásból című témakörben talál.

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

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

Az Azure Machine Tanulás MLflow használatával végzett kísérletek és futtatások adatainak lekéréséről és összehasonlításáról további információt a Lekérdezés > kísérletek és futtatások összehasonlítása az MLflow használatával című témakörben talál.