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-hozazureml-mlflow
.pip install mlflow azureml-mlflow
Tipp
A csomagot
mlflow-skinny
sql 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.
- Megtudhatja, hogy milyen hozzáférési engedélyekre van szüksége az MLflow-műveletek munkaterületen való végrehajtásához.
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ó.
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.