Gépi tanulási és mélytanulási betanítási futtatások nyomon követése
Az MLflow nyomkövetési összetevővel naplózhatja a gépi tanulási vagy mélytanulási modellek betanításához kapcsolódó forrástulajdonságokat, paramétereket, metrikákat, címkéket és összetevőket. Az MLflow használatának megkezdéséhez próbálkozzon az MLflow rövid útmutatójának egyikével.
MLflow-nyomkövetés kísérletekkel és futtatásokkal
Az MLflow-nyomkövetés két fogalomon, kísérleten és futtatáson alapul:
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átok. 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.
Az MLflow-kísérlet az MLflow-futtatások szervezetének és hozzáférés-vezérlésének elsődleges egysége; minden MLflow-futtatás egy kísérlethez tartozik. A kísérletek lehetővé teszik a futtatások vizualizációjának, keresésének és összehasonlításának, valamint a futtatási összetevők és metaadatok letöltését más eszközök elemzéséhez.
Az MLflow-futtatások a modellkód egyetlen végrehajtásának felelnek meg.
Az MLflow Tracking API egy modellfuttatás paramétereit, metrikáit, címkéit és összetevőit naplózza. 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.
Feljegyzés
Az MLflow a Databricks Runtime ML-fürtökön van telepítve. 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-hoz telepíteni kívánt csomagok a következők:
- Python esetén válassza a Kódtár forrása PyPI lehetőséget, és írja be
mlflow
a Csomag mezőbe. - R esetén válassza a Kódtár forrásának CRAN elemét, és írja be
mlflow
a Csomag mezőbe. - Scala esetén telepítse a következő két csomagot:
- Válassza a Könyvtárforrás maven lehetőséget, és írja be
org.mlflow:mlflow-client:1.11.0
a Koordináták mezőbe. - Válassza a Kódtár forrása PyPI lehetőséget, és írja be
mlflow
a Csomag mezőbe.
- Válassza a Könyvtárforrás maven lehetőséget, és írja be
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. - Állítsa be az MLflow környezeti változók egyikét MLFLOW_EXPERIMENT_NAME vagy MLFLOW_EXPERIMENT_ID.
Ha nincs aktív kísérlet beállítva, a rendszer naplózza a futtatásokat a jegyzetfüzet-kísérletbe.
Ha a kísérlet eredményeit a kísérlet futtatásának helyétől eltérő munkaterületen lévő, távolról üzemeltetett MLflow Tracking-kiszolgálóra szeretné naplózni, állítsa be a nyomkövetési URI-t a távoli munkaterületre mlflow.set_tracking_uri()
való hivatkozáshoz, és állítsa be a kísérlet elérési útját a távoli munkaterületen a használatával mlflow.set_experiment()
.
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, hogy hivatkozzon a munkaterületre a következővel mlflow.set_tracking_uri()
, és a használatával beállíthatja a kísérlet mlflow.set_experiment()
elérési útját. Az Azure Databricks személyes hozzáférési jogkivonat-hitelesítésének végrehajtásával kapcsolatos részletes információkért keresse meg a környezeti és DATABRICKS_TOKEN
a DATABRICKS_HOST
környezeti változók értékeit.
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ózási példajegyzetfüzet
Ez a jegyzetfüzet bemutatja, hogyan naplózhatja a jegyzetfüzetkísérletek és a munkaterület-kísérletek futtatását. 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. 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.
Napló MLflow-jegyzetfüzetet futtat
Az MLflow Python, Java vagy Scala és R API-k használatával elindíthatja a futtatásokat, és rögzítheti a futtatási adatokat. További részletekért tekintse meg az MLflow-példajegyzetfüzeteket.
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 taníthat be különböző modelleket, és hogyan követheti nyomon a betanítási adatokat az MLflow-ban, és hogyan tárolhatja a nyomkövetési adatokat a Delta Lake-ben.