Log & view metrics and log files v1
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
Valós idejű adatok naplózása az alapértelmezett Python-naplózási csomag és az Azure Machine Learning Python SDK-specifikus funkcióival. Naplózhat helyben, és elküldheti a naplókat a portálon lévő munkaterületekre.
A naplókkal diagnosztizálhatja a hibákat és a figyelmeztetéseket, vagy nyomon követheti a teljesítménymetrikákat, például a paramétereket és a modell teljesítményét. Ebben a cikkben azzal fog megismerkedni, hogyan engedélyezheti a naplózást a következő forgatókönyvekben:
- Naplófuttatási metrikák
- Interaktív betanítási munkamenetek
- Betanítási feladatok elküldése a ScriptRunConfig használatával
- Python natív
logging
beállításai - Naplózás további forrásokból
Tipp.
Ez a cikk a modell betanítási folyamatának monitorozását mutatja be. Ha az Azure Machine Learningből származó erőforrás-használatot és eseményeket , például kvótákat, befejezett betanítási futtatásokat vagy befejezett modelltelepítéseket szeretne figyelni, tekintse meg az Azure Machine Learning monitorozását.
Adattípusok
Többféle adattípust is naplózhat, például skaláris értékeket, listákat, táblákat, rendszerképeket, könyvtárakat és egyebeket. További információt és a különböző adattípusok Python-kódmintáit a futtatási osztály referenciaoldalán találja.
Naplózási futtatási metrikák
A metrikák vizualizációinak befolyásolásához használja az alábbi módszereket a naplózási API-kban. Figyelje meg ezeknek a naplózott metrikáknak a szolgáltatási korlátait .
Naplózott érték | Mintakód | Formátum a portálon |
---|---|---|
Numerikus értékek tömbjének naplózása | run.log_list(name='Fibonacci', value=[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]) |
egyváltozós vonaldiagram |
Naplózjon egyetlen numerikus értéket ugyanazzal a metrikanévvel, amelyet többször is használnak (például egy cikluson belülről) | for i in tqdm(range(-10, 10)): run.log(name='Sigmoid', value=1 / (1 + np.exp(-i))) angle = i / 2.0 |
Egyváltozós vonaldiagram |
Sor naplózása 2 numerikus oszlopmal | run.log_row(name='Cosine Wave', angle=angle, cos=np.cos(angle)) sines['angle'].append(angle) sines['sine'].append(np.sin(angle)) |
Kétváltozós vonaldiagram |
Naplótábla 2 numerikus oszloppal | run.log_table(name='Sine Wave', value=sines) |
Kétváltozós vonaldiagram |
Naplókép | run.log_image(name='food', path='./breadpudding.jpg', plot=None, description='desert') |
Ezzel a módszerrel naplózhat egy képfájlt vagy egy matplotlib-diagramot a futtatásra. Ezek a képek láthatóak és összehasonlíthatók lesznek a futtatási rekordban |
Naplózás MLflow használatával
Javasoljuk, hogy a modelleket, metrikákat és összetevőket az MLflow használatával naplózhassa, mivel az nyílt forráskód, és támogatja a helyi módot a felhő hordozhatóságához. Az alábbi táblázat és kód példák bemutatják, hogyan naplózhatja a metrikákat és összetevőket az MLflow használatával a betanítási futtatásokból. További információ az MLflow naplózási módszereiről és tervezési mintáiról.
Mindenképpen telepítse a csomagokat a mlflow
munkaterületre, és azureml-mlflow
pipelje be a csomagokat.
pip install mlflow
pip install azureml-mlflow
Állítsa be az MLflow nyomkövetési URI-t úgy, hogy az Azure Machine Learning háttérrendszerére mutasson, hogy a metrikákat és összetevőket naplózza a munkaterületre.
from azureml.core import Workspace
import mlflow
from mlflow.tracking import MlflowClient
ws = Workspace.from_config()
mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
mlflow.create_experiment("mlflow-experiment")
mlflow.set_experiment("mlflow-experiment")
mlflow_run = mlflow.start_run()
Naplózott érték | Mintakód | Jegyzetek |
---|---|---|
Numerikus érték naplózása (int vagy float) | mlflow.log_metric('my_metric', 1) |
|
Logikai érték naplózása | mlflow.log_metric('my_metric', 0) |
0 = Igaz, 1 = Hamis |
Sztring naplózása | mlflow.log_text('foo', 'my_string') |
Összetevőként naplózva |
Log numpy metrics or PIL image objects | mlflow.log_image(img, 'figure.png') |
|
Log matlotlib plot or image file | mlflow.log_figure(fig, "figure.png") |
Futtatási metrikák megtekintése az SDK-val
A betanított modellek metrikáit a következővel run.get_metrics()
tekintheti meg: .
from azureml.core import Run
run = Run.get_context()
run.log('metric-name', metric_value)
metrics = run.get_metrics()
# metrics is of type Dict[str, List[float]] mapping metric names
# to a list of the values for that metric in the given run.
metrics.get('metric-name')
# list of metrics in the order they were recorded
A futtatási információk az MLflow használatával is elérhetők a futtatási objektum adatain és információtulajdonságain keresztül. További információt az MLflow.entities.Run objektumdokumentációjában talál.
A futtatás befejezése után a MlFlowClient() használatával lekérheti.
from mlflow.tracking import MlflowClient
# Use MlFlow to retrieve the run that was just completed
client = MlflowClient()
finished_mlflow_run = MlflowClient().get_run(mlflow_run.info.run_id)
A futtatás metrikáit, paramétereit és címkéit a futtatási objektum adatmezőjében tekintheti meg.
metrics = finished_mlflow_run.data.metrics
tags = finished_mlflow_run.data.tags
params = finished_mlflow_run.data.params
Feljegyzés
A metrikák szótára csak mlflow.entities.Run.data.metrics
egy adott metrikanév legutóbb naplózott értékét adja vissza. Ha például az 1, majd 2, majd 3, majd 4 sorrendben naplóz egy metrikát, akkor a metrikaszótárban sample_metric
sample_metric
csak 4 szerepel.
Ha az összes metrikát egy adott metrikanévhez szeretné naplózni, használhatja MlFlowClient.get_metric_history()
a következőt: .
Futtatási metrikák megtekintése a studio felhasználói felületén
Az Azure Machine Learning Studióban böngészhet a befejezett futtatási rekordok között, beleértve a naplózott metrikákat is.
Lépjen a Kísérletek lapra. Ha a munkaterület összes futtatását meg szeretné tekinteni a Kísérletek között, válassza a Minden futtatás lapot. A kísérletszűrő felső menüsávján a Kísérlet szűrő alkalmazásával lehatolást végezhet az adott kísérletek futtatásán.
Az egyéni Kísérlet nézethez válassza a Minden kísérlet lapot. A kísérletfuttatási irányítópulton az egyes futtatások nyomon követett metrikái és naplói láthatók.
A futtatási listatáblát több futtatás kijelöléséhez is szerkesztheti, és megjelenítheti a futtatások utolsó, minimális vagy maximális naplózott értékét. A diagramok testreszabásával összehasonlíthatja a naplózott metrikák értékeit és összesítéseit több futtatás között. Több metrikát is ábrázolhat a diagram y tengelyén, és testre szabhatja az x tengelyt a naplózott metrikák ábrázolásához.
Futtatás naplófájljainak megtekintése és letöltése
A naplófájlok alapvető erőforrások az Azure Machine Learning számítási feladatainak hibakereséséhez. A betanítási feladat elküldése után lehatolást kell végeznie egy adott futtatáson a naplóinak és kimeneteinek megtekintéséhez:
- Lépjen a Kísérletek lapra.
- Válassza ki egy adott futtatás runID azonosítóját.
- Válassza a Kimenetek és naplók lehetőséget az oldal tetején.
- Válassza az Összes letöltése lehetőséget az összes napló zip mappába való letöltéséhez.
- Az egyes naplófájlokat a naplófájl kiválasztásával és a Letöltés lehetőség kiválasztásával is letöltheti
user_logs mappa
Ez a mappa információkat tartalmaz a felhasználó által létrehozott naplókról. Ez a mappa alapértelmezés szerint meg van nyitva, és a std_log.txt napló van kiválasztva. A std_log.txt jelennek meg a kód naplói (például nyomtatási utasítások). Ez a fájl naplókat és stderr
naplókat tartalmaz stdout
a vezérlőszkriptből és a betanítási szkriptből, folyamatonként egyet. Az esetek többségében itt fogja figyelni a naplókat.
system_logs mappa
Ez a mappa az Azure Machine Learning által létrehozott naplókat tartalmazza, és alapértelmezés szerint bezárul. A rendszer által létrehozott naplók különböző mappákba vannak csoportosítva a feladat futásidejű szakasza alapján.
Egyéb mappák
Több számítási fürtön végzett feladatok betanításához minden csomópont IP-címéhez naplók tartoznak. Az egyes csomópontok struktúrája megegyezik az egycsomópontos feladatokkal. Van még egy naplómappa az általános végrehajtáshoz, az stderrhez és az stdout naplókhoz.
Az Azure Machine Learning a betanítás során különböző forrásokból naplózza az információkat, például az AutoML-t vagy a betanítási feladatot futtató Docker-tárolót. Ezek közül a naplók közül sok nincs dokumentálva. Ha problémákat tapasztal, és kapcsolatba lép a Microsoft ügyfélszolgálatával, előfordulhat, hogy a hibaelhárítás során használhatják ezeket a naplókat.
Interaktív naplózási munkamenet
Az interaktív naplózási munkameneteket általában jegyzetfüzet típusú környezetekben használják. Az Experiment.start_logging() metódus elindít egy interaktív naplózási munkamenetet. A munkamenet során naplózott összes metrika a kísérlet futtatási rekordjába kerül. A run.complete() metódus befejezi a munkameneteket, és befejezettként jelöli meg a futtatást.
ScriptRun naplók
Ebben a szakaszban azt ismertetjük, hogyan adhat meg naplózási kódot a létrehozott futtatásokban a ScriptRunConfig paranccsal való konfiguráláskor. A ScriptRunConfig osztállyal szkripteket és környezeteket ágyazhat be ismételhető futtatásokhoz. Ezzel a lehetőséggel azt is megteheti, hogy megjelenít egy vizuális Jupyter Notebooks-vezérlőt a monitorozáshoz.
Ez a példa paraméteres frissítést végez az alfa értékeken, és az eredményeket a run.log() metódussal rögzíti.
Hozza létre a naplózási logikát tartalmazó
train.py
betanítási szkriptet.# Copyright (c) Microsoft. All rights reserved. # Licensed under the MIT license. from sklearn.datasets import load_diabetes from sklearn.linear_model import Ridge from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split from azureml.core.run import Run import os import numpy as np import mylib # sklearn.externals.joblib is removed in 0.23 try: from sklearn.externals import joblib except ImportError: import joblib os.makedirs('./outputs', exist_ok=True) X, y = load_diabetes(return_X_y=True) run = Run.get_context() X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) data = {"train": {"X": X_train, "y": y_train}, "test": {"X": X_test, "y": y_test}} # list of numbers from 0.0 to 1.0 with a 0.05 interval alphas = mylib.get_alphas() for alpha in alphas: # Use Ridge algorithm to create a regression model reg = Ridge(alpha=alpha) reg.fit(data["train"]["X"], data["train"]["y"]) preds = reg.predict(data["test"]["X"]) mse = mean_squared_error(preds, data["test"]["y"]) run.log('alpha', alpha) run.log('mse', mse) model_file_name = 'ridge_{0:.2f}.pkl'.format(alpha) # save model in the outputs folder so it automatically get uploaded with open(model_file_name, "wb") as file: joblib.dump(value=reg, filename=os.path.join('./outputs/', model_file_name)) print('alpha is {0:.2f}, and mse is {1:0.2f}'.format(alpha, mse))
Küldje be a
train.py
szkriptet a felhasználó által kezelt környezetekben való futtatáshoz. A rendszer a teljes szkriptmappát elküldi a betanításhoz.from azureml.core import ScriptRunConfig src = ScriptRunConfig(source_directory='./scripts', script='train.py', environment=user_managed_env)
run = exp.submit(src)
A
show_output
paraméter bekapcsolja a részletes naplózást, amely lehetővé teszi a betanítási folyamat részleteinek, valamint a távoli erőforrásokkal vagy számítási célokkal kapcsolatos információknak a megtekintését. A következő kóddal kapcsolja be a részletes naplózást a kísérlet beküldésekor.run = exp.submit(src, show_output=True)
Ugyanezt a paramétert használhatja az eredményül kapott futtatás
wait_for_completion
függvényén.run.wait_for_completion(show_output=True)
Natív Python-naplózás
Az SDK egyes naplói olyan hibát tartalmazhatnak, amely arra utasítja, hogy a naplózást állítja DEBUG (hibakeresési) szintre. A naplózási szint beállításához adja a következő kódot a szkripthez.
import logging
logging.basicConfig(level=logging.DEBUG)
Egyéb naplózási források
Az Azure Machine Learning a betanítás során más forrásokból, például automatizált gépi tanulási futtatásokból vagy a feladatokat futtató Docker-tárolókból származó adatokat is tud naplózni. Ezek a naplók nincsenek dokumentálva, de ha problémákba ütközik, és kapcsolatba lép a Microsoft ügyfélszolgálatával, előfordulhat, hogy a hibaelhárítás során ők tudják használni ezeket a naplókat.
Az Azure Machine Learning-tervező naplózási metrikáiról tervezőben végzett metrikanaplózással kapcsolatos témakörben talál információt.
Példajegyzetfüzetek
A cikkben szereplő fogalmakat a következő jegyzetfüzetek mutatják be:
- how-to-use-azureml/training/train-on-local
- how-to-use-azureml/track-and-monitor-experiments/logging-api
A szolgáltatás megismerése Jupyter-notebookok használatával cikk útmutatását követve megtanulhatja, hogyan futtathat notebookokat.
Következő lépések
Ezekben a cikkekben többet tudhat meg az Azure Machine Learning használatáról:
- A képosztályozási modellek Azure Machine Learninggel való betanításával kapcsolatos témakörben talál példát arra, hogyan regisztrálhatja a legjobb modellt, és hogyan helyezheti üzembe.