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 az Oktatóanyagot: Az Azure Databricks teljes körű klasszikus ML-modelljei.

MLflow-nyomkövetés kísérletek, futtatások és modellek használatával

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 az MLflow nyomon követésével nyomon követheti a modellfejlesztési folyamatot, beleértve a kipróbált paraméterbeállításokat vagy kombinációkat, valamint azt, hogy ezek hogyan befolyásolták a modell teljesítményét.

Az MLflow-nyomkövetés kísérleteket, futtatásokat és modelleket használ 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. A modell olyan összetevők gyűjteménye, amelyek egy betanított gépi tanulási modellt képviselnek.

Az MLflow 3LoggedModels használatával emeli a futtatás által előállított modell fogalmát, és különálló entitásként hozza létre a modell életciklusának nyomon követéséhez a különböző betanítási és kiértékelési futtatások során.

Megjegyzé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 elérte a kísérletenkénti futás kvótát, a Databricks azt javasolja, hogy törölje azokat a futtatásokat, amelyekre már nincs szüksége a Pythonban való futtatástörlés API 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 nyomkövetési 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 használatához a Databricks Runtime-fürtön telepítenie kell a mlflow könyvtárat. A könyvtár egy fürtre való telepítésének utasításaiért lásd Könyvtár telepítése fürtre. Az MLflow 3 és a legújabb nyomkövetési képességek használatához frissítsen a legújabb verzióra (lásd az MLflow 3 telepítését).

Az MLflow-futtatások naplózásának helye

A Databricks egy üzemeltetett MLflow-követő kiszolgálót biztosít, amely beállítás nélkül tárolja a kísérletadatokat a munkaterületen. Az MLflow konfigurálható úgy is, hogy szükség esetén különböző nyomkövetési kiszolgálókat használjon.

Az MLflow-nyomkövetést két beállítás vezérli:

  • URI nyomon követése: Meghatározza, hogy melyik kiszolgálót használja (alapértelmezés szerint az aktuális Databricks-munkaterületen)
  • Kísérlet: Meghatározza, hogy a kiszolgálón melyik kísérletbe jelentkezzen be
import mlflow

# By default MLflow logs to the Databricks-hosted workspace tracking server. You can connect to a different server using the tracking URI.
mlflow.set_tracking_uri("databricks://remote-workspace-url")

# Set experiment in the tracking server
mlflow.set_experiment("/Shared/my-experiment")

Ha nincs beállítva aktív kísérlet, a futtatásokat a jegyzetfüzetes kísérletheznaplózzák.

Az MLflow-adatok tárolási helyének ellenőrzésére vonatkozó további információkért lásd: Válassza ki az MLflow-adatok tárolási helyét.

Futtatások és modellek naplózása 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 naplózás scikit-learn. További információ más Python-könyvtárakkal való automatikus naplózásról: az MLflow autologging dokumentációját.

MLflow 3

Az MLflow automatikusan kitölti a Python-jegyzetfüzetet az MLflow 3-hoz

Jegyzetfüzet lekérése

MLflow 2.x

MLflow automatikus naplózás a Python-jegyzetfüzetekben

Jegyzetfüzet lekérése

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 3

MLflow naplózási API Python-jegyzetfüzet az MLflow 3-hoz

Jegyzetfüzet lekérése

MLflow 2.x

MLflow naplózási API Python-jegyzetfüzet

Jegyzetfüzet lekérése

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.

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:

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ó 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.