Modellfejlesztés nyomon követése az MLflow használatával
Az MLflow-nyomkövetéssel naplózhatja a jegyzetfüzeteket és a betanítási adatkészleteket, paramétereket, metrikákat, címkéket és összetevőket egy gépi tanulási vagy mélytanulási modell betanításához. Az MLflow használatának első lépéseit bemutató példajegyzetfüzetért tekintse meg oktatóanyagot: Teljes körű ml-modellek az Azure Databricks.
MLflow-nyomkövetés kísérletekkel és futtatásokkal
A modellfejlesztési folyamat iteratív, és kihívást jelenthet a modell fejlesztése és optimalizálása során végzett munka nyomon követése. Az Azure Databricksben MLflow-nyomkövetési segítségével nyomon követheti a modellfejlesztési folyamatot, beleértve a paraméterbeállításokat vagy kombinációkat, amelyeket kipróbált, és hogy ezek hogyan befolyásolták a modell teljesítményét.
Az MLflow-nyomkövetés kísérleteket és futtat az ML- és mélytanulási modellek fejlesztésének naplózásához és nyomon követéséhez. A futtatás a modellkód egyetlen végrehajtása. Az MLflow futtatása során naplózhatja a modell paramétereit és eredményeit. A kísérlet kapcsolódó mérések gyűjteménye. Egy kísérletben összehasonlíthatja és szűrheti a futtatásokat, hogy megértse, hogyan teljesít a modell, és hogyan függ a teljesítmény a paraméterbeállításoktól, a bemeneti adatoktól stb.
- Betanítási futtatások rendszerezése MLflow-kísérletekkel
- Betanítási eredmények megtekintése MLflow-futtatásokkal
Feljegyzés
2024. március 27-től az MLflow kvótakorlátot szab ki az összes meglévő és új futtatás összes paraméterére, címkéjére és metrikalépésére, valamint az összes meglévő és új kísérlet teljes futásainak számára, lásd erőforráskorlátokat. Ha kísérletkvótánként éri el a futtatásokat, a Databricks azt javasolja, hogy törölje azokat a futtatásokat, amelyekre már nincs szüksége a Python törlési futtatás API-jának használatával. Ha más kvótakorlátokat is elér, a Databricks azt javasolja, hogy módosítsa a naplózási stratégiát, hogy a korlát alatt maradjon. Ha növelni szeretné ezt a korlátot, forduljon a Databricks-fiók csapatához a használati eset rövid ismertetésével, hogy miért nem működnek a javasolt megoldási módszerek, és milyen új korlátot kér.
MLflow tracking API
Az MLflow Tracking API naplózza a modellfuttatás paramétereit, metrikáit, címkéit és összetevőit. A Tracking API egy MLflow-követő kiszolgálóval kommunikál. A Databricks használatakor egy Databricks által üzemeltetett nyomkövetési kiszolgáló naplózza az adatokat. A üzemeltetett MLflow-követő kiszolgáló Python, Java és R API-kkal rendelkezik.
Az MLflow előre telepítve van a Databricks Runtime ML-fürtökön. Az MLflow Databricks Runtime-fürtön való használatához telepítenie kell a kódtárat mlflow
. A tár fürtre való telepítésével kapcsolatos utasításokért lásd : Tár telepítése fürtre.
Az MLflow-futtatások naplózásának helye
Az összes MLflow-futtatás naplózva van az aktív kísérletben, amely az alábbi módok bármelyikével állítható be:
- Használja a mlflow.set_experiment() parancsot.
- Használja a paramétert
experiment_id
a mlflow.start_run() parancsban. - Az MLflow környezeti változók egyikének beállítása MLFLOW_EXPERIMENT_NAME vagy MLFLOW_EXPERIMENT_ID.
Ha nincs beállítva aktív kísérlet, a futtatásokat a jegyzetfüzetes kísérletheznaplózzák.
Ha a kísérlet eredményeit egy, a kísérlet futtatásához használt munkaterületen kívüli, távolról üzemeltetett MLflow Tracking-kiszolgálóra szeretné naplózni, állítsa be a nyomkövetési URI-t úgy, hogy a távoli munkaterületre hivatkozzon mlflow.set_tracking_uri()
, és állítsa be a kísérlet elérési útját a távoli munkaterületen a mlflow.set_experiment()
használatával.
mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")
Ha helyileg futtat kísérleteket, és naplózni szeretné a kísérlet eredményeit a Databricks MLflow Tracking-kiszolgálón, adja meg a Databricks-munkaterületpéldányt (DATABRICKS_HOST
) és a Databricks személyes hozzáférési jogkivonatát (DATABRICKS_TOKEN
). Ezután beállíthatja a nyomkövetési URI-t úgy, hogy az mlflow.set_tracking_uri()
hivatkozzon a munkaterületre, és a mlflow.set_experiment()
használatával állítsa be a kísérlet elérési útját. Lásd a Azure Databricks személyes hozzáférési jogkivonat-hitelesítés című részt, ahol további információt talál a DATABRICKS_HOST
és DATABRICKS_TOKEN
környezeti változók értékeinek megkereséséről.
Az alábbi példakód bemutatja az értékek beállítását:
os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")
Naplófuttatások egy kísérlethez
Az MLflow számos gépi tanulási és mélytanulási keretrendszerben írt betanítási kódot képes automatikusan naplózni. Ez a legegyszerűbb módja az MLflow-nyomkövetés használatának. Lásd a példajegyzetfüzetet.
Az MLflow naplózási API-val szabályozhatja, hogy mely paraméterek és metrikák legyenek naplózva, vagy további összetevőket, például CSV-fájlokat vagy diagramokat naplózhat. Lásd a példajegyzetfüzetet.
Modellfejlesztés nyomon követése automatikus naplózás használatával
Ez a példajegyzetfüzet bemutatja, hogyan használható az automatikus kitöltés scikit-learn. További információ a más Python-kódtárakkal való automatikus keresésről: az MLflow autologging dokumentációját.
MLflow automatikus naplózás a Python-jegyzetfüzetekben
A naplózási API használata a modellfejlesztés nyomon követéséhez
Ez a példajegyzetfüzet bemutatja, hogyan használható a Python-naplózási API. Az MLflow REST, R és Java API-kat is.
MLflow naplózási API Python-jegyzetfüzet
A napló egy munkaterület-kísérletbe fut
Alapértelmezés szerint egy Databricks-jegyzetfüzetben lévő modell betanításakor a rendszer naplózza a futtatásokat a jegyzetfüzet-kísérletbe. Csak a jegyzetfüzeten belül kezdeményezett MLflow-futtatások naplózhatók a jegyzetfüzet-kísérletbe.
A bármely jegyzetfüzetből vagy API-ból indított MLflow-futtatások egy munkaterületi kísérletbe naplózhatók. Ha munkaterület-kísérletbe szeretne bejelentkezni, használja a jegyzetfüzetben vagy API-hívásban az alábbihoz hasonló kódot:
experiment_name = "/Shared/name_of_experiment/"
mlflow.set_experiment(experiment_name)
A munkaterület-kísérlet létrehozásával kapcsolatos útmutatásért tekintse meg Munkaterület-kísérlet létrehozásacímű témakört. A naplózott futtatások megtekintéséről további információt a jegyzetfüzet-kísérlet megtekintése és a munkaterület-kísérlet megtekintése című témakörben talál.
Az MLflow-követő kiszolgáló elérése az Azure Databricksen kívülről
A nyomkövetési kiszolgálóra az Azure Databricksen kívülről is írhat és olvashat, például az MLflow PARANCSSOR HASZNÁLATÁVAL. Lásd : Access the MLflow tracking server from outside Azure Databricks.
MLflow-futtatások programozott elemzése
Az MLflow-futtatási adatokat programozott módon érheti el a következő két DataFrame API használatával:
- Az MLflow Python-ügyfél search_runs API egy pandas DataFrame-et ad vissza.
- Az MLflow-kísérlet adatforrása egy Apache Spark DataFrame-et ad vissza.
Ez a példa bemutatja, hogyan hozhat létre olyan irányítópultot az MLflow Python-ügyfél használatával, amely megjeleníti a kiértékelési metrikák időbeli változásait, nyomon követi egy adott felhasználó által indított futtatások számát, és méri az összes felhasználó futtatásának teljes számát:
Miért változhatnak a modell betanítási metrikái és kimenetei
Az ML-ben használt algoritmusok közül sok véletlenszerű elemet tartalmaz, például mintavételezést vagy véletlenszerű kezdeti feltételeket magában az algoritmusban. Ha egy modellt ezen algoritmusok egyikével tanít be, előfordulhat, hogy az eredmények nem lesznek azonosak az egyes futtatások esetében, még akkor sem, ha a futtatás ugyanazokkal a feltételekkel indul el. Számos kódtár kínál olyan vető mechanizmust, amely rögzíti ezeknek a sztochasztikus elemeknek a kezdeti feltételeit. Lehetnek azonban más változatforrások is, amelyeket nem a magok szabályoznak. Egyes algoritmusok érzékenyek az adatok sorrendjére, és az elosztott ML-algoritmusokat is befolyásolhatja az adatok particionálása. Ez a variáció általában nem jelentős, és nem fontos a modellfejlesztési folyamatban.
A rendezési és particionálási különbségek okozta eltérések szabályozásához használja a PySpark-függvények újrapartícióját és a sortWithinPartitionst.
MLflow-követési példák
Az alábbi jegyzetfüzetek bemutatják, hogyan követheti nyomon a modellfejlesztést az MLflow használatával.