A naplózás engedélyezése ML betanítási futtatásokbanEnable logging in ML training runs

Az Azure Machine Learning Python SDK az alapértelmezett Python naplózási csomaggal és SDK-specifikus funkciókkal is lehetővé teszi valós idejű információk naplózását.The Azure Machine Learning Python SDK lets you log real-time information using both the default Python logging package and SDK-specific functionality. Naplózhat helyben, és elküldheti a naplókat a portálon lévő munkaterületekre.You can log locally and send logs to your workspace in the portal.

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.Logs can help you diagnose errors and warnings, or track performance metrics like parameters and model performance. Ebben a cikkben azzal fog megismerkedni, hogyan engedélyezheti a naplózást a következő forgatókönyvekben:In this article, you learn how to enable logging in the following scenarios:

  • Interaktív betanítási munkamenetekInteractive training sessions
  • Betanítási feladatok elküldése a ScriptRunConfig használatávalSubmitting training jobs using ScriptRunConfig
  • Python natív logging beállításaiPython native logging settings
  • Naplózás további forrásokbólLogging from additional sources

Tipp

Ez a cikk a modell betanítási folyamatának monitorozását mutatja be.This article shows you how to monitor the model training process. Ha az erőforrás-használatot és az eseményeket szeretné monitorozni az Azure Machine Learningből, például a kvótákat, a befejezett betanítási futtatásokat vagy a modell kész üzemelő példányait, tekintse meg az Azure Machine Learning monitorozásával kapcsolatos szakaszt.If you're interested in monitoring resource usage and events from Azure Machine learning, such as quotas, completed training runs, or completed model deployments, see Monitoring Azure Machine Learning.

AdattípusokData types

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.You can log multiple data types including scalar values, lists, tables, images, directories, and more. 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.For more information, and Python code examples for different data types, see the Run class reference page.

Naplózási futtatási metrikákLogging run metrics

A következő módszerek használhatók a naplózási API-kon a metrikák vizualizációinak befolyásolására.Use the following methods in the logging APIs to influence the metrics visualizations. Jegyezze fel a naplózott metrikák szolgáltatási korlátait .Note the service limits for these logged metrics.

Naplózott értékLogged Value MintakódExample code Formátum a portálonFormat in portal
Numerikus értékek tömbjeLog an array of numeric values run.log_list(name='Fibonacci', value=[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]) Egyváltozós vonalas diagramsingle-variable line chart
Egy numerikus értéket többször is felhasználhat ugyanazzal a metrikai névvel (például a cikluson belül)Log a single numeric value with the same metric name repeatedly used (like from within a for loop) for i in tqdm(range(-10, 10)): run.log(name='Sigmoid', value=1 / (1 + np.exp(-i))) angle = i / 2.0 Egyváltozós vonalas diagramSingle-variable line chart
Sor naplózása 2 numerikus oszloppal ismételtenLog a row with 2 numerical columns repeatedly 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 vonalas diagramTwo-variable line chart
Táblázat két numerikus oszloppalLog table with 2 numerical columns run.log_table(name='Sine Wave', value=sines) Kétváltozós vonalas diagramTwo-variable line chart
Napló képeLog image run.log_image(name='food', path='./breadpudding.jpg', plot=None, description='desert') Ezzel a módszerrel egy képfájlt vagy egy matplotlib-rajzot naplózhat a futtatáshoz.Use this method to log an image file or a matplotlib plot to the run. Ezek a képek láthatók és összehasonlíthatók lesznek a futtatási rekordbanThese images will be visible and comparable in the run record

Naplózás a MLflowLogging with MLflow

MLFlowLogger használata a metrikák naplózásához.Use MLFlowLogger to log metrics.

from azureml.core import Run
# connect to the workspace from within your running code
run = Run.get_context()
ws = run.experiment.workspace

# workspace has associated ml-flow-tracking-uri
mlflow_url = ws.get_mlflow_tracking_uri()

#Example: PyTorch Lightning
from pytorch_lightning.loggers import MLFlowLogger

mlf_logger = MLFlowLogger(experiment_name=run.experiment.name, tracking_uri=mlflow_url)
mlf_logger._run_id = run.id

Interaktív naplózási munkamenetInteractive logging session

Az interaktív naplózási munkameneteket általában jegyzetfüzet típusú környezetekben használják.Interactive logging sessions are typically used in notebook environments. Az Experiment.start_logging() metódus elindít egy interaktív naplózási munkamenetet.The method Experiment.start_logging() starts an interactive logging session. A munkamenet során naplózott összes metrika a kísérlet futtatási rekordjába kerül.Any metrics logged during the session are added to the run record in the experiment. A run.complete() metódus befejezi a munkameneteket, és befejezettként jelöli meg a futtatást.The method run.complete() ends the sessions and marks the run as completed.

ScriptRun naplókScriptRun logs

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.In this section, you learn how to add logging code inside of runs created when configured with ScriptRunConfig. A ScriptRunConfig osztállyal szkripteket és környezeteket ágyazhat be ismételhető futtatásokhoz.You can use the ScriptRunConfig class to encapsulate scripts and environments for repeatable runs. Ezzel a lehetőséggel azt is megteheti, hogy megjelenít egy vizuális Jupyter Notebooks-vezérlőt a monitorozáshoz.You can also use this option to show a visual Jupyter Notebooks widget for monitoring.

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.This example performs a parameter sweep over alpha values and captures the results using the run.log() method.

  1. Hozza létre a naplózási logikát tartalmazó train.py betanítási szkriptet.Create a training script that includes the logging logic, train.py.

    # 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))
    
  2. Küldje be a train.py szkriptet a felhasználó által kezelt környezetekben való futtatáshoz.Submit the train.py script to run in a user-managed environment. A rendszer a teljes szkriptmappát elküldi a betanításhoz.The entire script folder is submitted for training.

    [! notebook-Python [] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/train-on-local.ipynb? név = src)][!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/train-on-local.ipynb?name=src)]

    [! notebook-Python [] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/train-on-local.ipynb? név = Futtatás)][!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/train-on-local.ipynb?name=run)]

    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.The show_output parameter turns on verbose logging, which lets you see details from the training process as well as information about any remote resources or compute targets. A következő kóddal kapcsolja be a részletes naplózást a kísérlet beküldésekor.Use the following code to turn on verbose logging when you submit the experiment.

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.You can also use the same parameter in the wait_for_completion function on the resulting run.

run.wait_for_completion(show_output=True)

Natív Python-naplózásNative Python logging

Az SDK egyes naplói olyan hibát tartalmazhatnak, amely arra utasítja, hogy a naplózást állítja DEBUG (hibakeresési) szintre.Some logs in the SDK may contain an error that instructs you to set the logging level to DEBUG. A naplózási szint beállításához adja a következő kódot a szkripthez.To set the logging level, add the following code to your script.

import logging
logging.basicConfig(level=logging.DEBUG)

További naplózási forrásokAdditional logging sources

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.Azure Machine Learning can also log information from other sources during training, such as automated machine learning runs, or Docker containers that run the jobs. 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.These logs aren't documented, but if you encounter problems and contact Microsoft support, they may be able to use these logs during troubleshooting.

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.For information on logging metrics in Azure Machine Learning designer, see How to log metrics in the designer

PéldajegyzetfüzetekExample notebooks

A cikkben szereplő fogalmakat a következő jegyzetfüzetek mutatják be:The following notebooks demonstrate concepts in this article:

A szolgáltatás megismerése Jupyter-notebookok használatával cikk útmutatását követve megtanulhatja, hogyan futtathat notebookokat.Learn how to run notebooks by following the article Use Jupyter notebooks to explore this service.

További lépésekNext steps

Ezekben a cikkekben többet tudhat meg az Azure Machine Learning használatáról:See these articles to learn more on how to use Azure Machine Learning: