Adatok ML-webszolgáltatási végpontokról való monitorozása és gyűjtéseMonitor and collect data from ML web service endpoints

Ebből a cikkből megtudhatja, hogyan gyűjthet adatokat a webszolgáltatási végpontokra telepített modellekről az Azure Kubernetes szolgáltatásban (ak) vagy Azure Container Instances (ACI).In this article, you learn how to collect data from models deployed to web service endpoints in Azure Kubernetes Service (AKS) or Azure Container Instances (ACI). Az Azure Application Insights használatával gyűjtsön egy végpontból a következő adatokat:Use Azure Application Insights to collect the following data from an endpoint:

  • Kimeneti adatokOutput data
  • VálaszokResponses
  • Kérelmek díjai, válaszideje és meghibásodási arányaRequest rates, response times, and failure rates
  • Függőségi arányok, válaszidő és sikertelenség arányaDependency rates, response times, and failure rates
  • KivételekExceptions

Az enable-app-Insight-in-producting-Service. ipynb notebook bemutatja a cikkben szereplő fogalmakat.The enable-app-insights-in-production-service.ipynb notebook demonstrates 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.

ElőfeltételekPrerequisites

A naplózás konfigurálása a Python SDK-valConfigure logging with the Python SDK

Ebből a szakaszból megtudhatja, hogyan engedélyezheti az alkalmazás-betekintés naplózását a Python SDK használatával.In this section, you learn how to enable Application Insight logging by using the Python SDK.

Központilag telepített szolgáltatás frissítéseUpdate a deployed service

Egy meglévő webszolgáltatás frissítéséhez kövesse az alábbi lépéseket:Use the following steps to update an existing web service:

  1. Azonosítsa a szolgáltatást a munkaterületen.Identify the service in your workspace. A értéke a ws munkaterület neve.The value for ws is the name of your workspace

    from azureml.core.webservice import Webservice
    aks_service= Webservice(ws, "my-service-name")
    
  2. A szolgáltatás frissítése és az Azure Application Insights engedélyezéseUpdate your service and enable Azure Application Insights

    aks_service.update(enable_app_insights=True)
    

Egyéni Nyomkövetések naplózása a szolgáltatásbanLog custom traces in your service

Fontos

Az Azure Application Insights csak a legfeljebb 64 kb adattartalmakat naplózza.Azure Application Insights only logs payloads of up to 64kb. Ha eléri ezt a korlátot, megjelenhetnek a hibák, például a memóriából, vagy nem lehet információt naplózni.If this limit is reached, you may see errors such as out of memory, or no information may be logged. Ha a naplózni kívánt adatok nagyobb 64 kb, akkor ehelyett a blob Storage-tárolóban kell tárolnia az adatok gyűjtése az éles modellekbencímű témakörben leírtak alapján.If the data you want to log is larger 64kb, you should instead store it to blob storage using the information in Collect Data for models in production.

Összetettebb helyzetekben, mint például a modell követése egy AK-alapú környezetben, javasoljuk, hogy használjon egy külső gyártótól származó könyvtárat (például OpenCensus).For more complex situations, like model tracking within an AKS deployment, we recommend using a third-party library like OpenCensus.

Az egyéni Nyomkövetések naplózásához kövesse a normál üzembe helyezési folyamatot az AK vagy ACI esetében a dokumentum üzembe helyezése és helye című témakörben .To log custom traces, follow the standard deployment process for AKS or ACI in the How to deploy and where document. Ezután kövesse az alábbi lépéseket:Then, use the following steps:

  1. Frissítse a pontozási fájlt úgy, hogy a következtetések beírásával adatokat küld az Application Insightsnak az előnézetben.Update the scoring file by adding print statements to send data to Application Insights during inference. Az összetettebb információk, például a kérések adatai és a válasz egy JSON-struktúrát használnak.For more complex information, such as the request data and the response, use a JSON structure.

    A következő példa a score.py modell inicializálását, bemenetét és kimenetét jeleníti meg a következtetések során, valamint a hibák előfordulásának idejét.The following example score.py file logs when the model was initialized, input and output during inference, and the time any errors occur.

    import pickle
    import json
    import numpy 
    from sklearn.externals import joblib
    from sklearn.linear_model import Ridge
    from azureml.core.model import Model
    import time
    
    def init():
        global model
        #Print statement for appinsights custom traces:
        print ("model initialized" + time.strftime("%H:%M:%S"))
    
        # note here "sklearn_regression_model.pkl" is the name of the model registered under the workspace
        # this call should return the path to the model.pkl file on the local disk.
        model_path = Model.get_model_path(model_name = 'sklearn_regression_model.pkl')
    
        # deserialize the model file back into a sklearn model
        model = joblib.load(model_path)
    
    
    # note you can pass in multiple rows for scoring
    def run(raw_data):
        try:
            data = json.loads(raw_data)['data']
            data = numpy.array(data)
            result = model.predict(data)
            # Log the input and output data to appinsights:
            info = {
                "input": raw_data,
                "output": result.tolist()
                }
            print(json.dumps(info))
            # you can return any datatype as long as it is JSON-serializable
            return result.tolist()
        except Exception as e:
            error = str(e)
            print (error + time.strftime("%H:%M:%S"))
            return error
    
  2. Frissítse a szolgáltatás konfigurációját, és győződjön meg arról, hogy Application Insights.Update the service configuration, and make sure to enable Application Insights.

    config = Webservice.deploy_configuration(enable_app_insights=True)
    
  3. Hozzon létre egy rendszerképet, és telepítse azt AK-ra vagy ACI-ra.Build an image and deploy it on AKS or ACI. További információ: a telepítés és a hol.For more information, see How to deploy and where.

A nyomkövetés letiltása a PythonbanDisable tracking in Python

Az Azure Application Insights letiltásához használja a következő kódot:To disable Azure Application Insights, use the following code:

## replace <service_name> with the name of the web service
<service_name>.update(enable_app_insights=False)

Naplózás konfigurálása Azure Machine Learning StudióvalConfigure logging with Azure Machine Learning studio

Az Azure Application Insights a Azure Machine Learning studióból is engedélyezhető.You can also enable Azure Application Insights from Azure Machine Learning studio. Ha készen áll a modell webszolgáltatásként való üzembe helyezésére, a következő lépésekkel engedélyezheti a Application Insights:When you're ready to deploy your model as a web service, use the following steps to enable Application Insights:

  1. Jelentkezzen be a studióba a címen https://ml.azure.com .Sign in to the studio at https://ml.azure.com.

  2. Nyissa meg a modelleket , és válassza ki a telepíteni kívánt modellt.Go to Models and select the model you want to deploy.

  3. Válassza a + telepítés lehetőséget.Select +Deploy.

  4. Töltse ki a modell üzembe helyezése űrlapot.Populate the Deploy model form.

  5. Bontsa ki a speciális menüt.Expand the Advanced menu.

    Űrlap üzembe helyezése

  6. Jelölje be a diagnosztika és az adatgyűjtés engedélyezése Application Insights.Select Enable Application Insights diagnostics and data collection.

    Az alkalmazás-felismerés engedélyezése

Metrikák és naplók megtekintéseView metrics and logs

Telepített modellek naplófájljainak lekérdezéseQuery logs for deployed models

A valós idejű végpontok naplófájljai a vásárlói adatmennyiség.Logs of real-time endpoints are customer data. A get_logs() függvény használatával lekérheti a naplókat egy korábban telepített webszolgáltatásból.You can use the get_logs() function to retrieve logs from a previously deployed web service. Előfordulhat, hogy a naplók részletes információkat tartalmaznak az üzembe helyezés során felmerülő hibákról.The logs may contain detailed information about any errors that occurred during deployment.

from azureml.core import Workspace
from azureml.core.webservice import Webservice

ws = Workspace.from_config()

# load existing web service
service = Webservice(name="service-name", workspace=ws)
logs = service.get_logs()

Ha több Bérlővel rendelkezik, előfordulhat, hogy a következő hitelesítő kódot kell megadnia, mielőtt ws = Workspace.from_config()If you have multiple Tenants, you may need to add the following authenticate code before ws = Workspace.from_config()

from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="the tenant_id in which your workspace resides")

Naplók megtekintése a StudióbanView logs in the studio

Az Azure Application Insights a szolgáltatás naplóit a Azure Machine Learning munkaterülettel azonos erőforráscsoporthoz tárolja.Azure Application Insights stores your service logs in the same resource group as the Azure Machine Learning workspace. Az alábbi lépésekkel tekintheti meg az adatait a Studióval:Use the following steps to view your data using the studio:

  1. Lépjen a Azure Machine Learning munkaterületére a Studióban.Go to your Azure Machine Learning workspace in the studio.

  2. Válassza a végpontok lehetőséget.Select Endpoints.

  3. Válassza ki a telepített szolgáltatást.Select the deployed service.

  4. Válassza ki a Application Insights URL- hivatkozást.Select the Application Insights url link.

    Application Insights URL-cím kereséseLocate Application Insights url

  5. Application Insights az Áttekintés lapon vagy a figyelés szakaszban válassza a naplók lehetőséget.In Application Insights, from the Overview tab or the Monitoring section, select Logs.

    A figyelés áttekintése lapOverview tab of monitoring

  6. A score.py-fájlból naplózott információk megtekintéséhez tekintse meg a nyomkövetési táblázatot.To view information logged from the score.py file, look at the traces table. A következő lekérdezés olyan naplókat keres, amelyekben a bemeneti érték naplózva lett:The following query searches for logs where the input value was logged:

    traces
    | where customDimensions contains "input"
    | limit 10
    

    nyomkövetési adattrace data

Az Azure Application Insights használatáról további információt a Mi az Application Insights?című témakörben talál.For more information on how to use Azure Application Insights, see What is Application Insights?.

Webszolgáltatás metaadatainak és válaszidejeWeb service metadata and response data

Fontos

Az Azure Application Insights csak a legfeljebb 64 kb adattartalmakat naplózza.Azure Application Insights only logs payloads of up to 64kb. Ha eléri ezt a korlátot, akkor előfordulhat, hogy olyan hibákat lát, mint a memória, vagy nem lehet információt naplózni.If this limit is reached then you may see errors such as out of memory, or no information may be logged.

A webszolgáltatás-kérelem adatainak naplózásához adjon hozzá print utasításokat a score.py-fájlhoz.To log web service request information, add print statements to your score.py file. Minden print utasítás egy bejegyzést eredményez az üzenet alatt található Application Insights nyomkövetési táblában STDOUT .Each print statement results in one entry in the Application Insights trace table under the message STDOUT. Application Insights a print kimutatás kimeneteit a customDimensions és a Contents nyomkövetési táblában tárolja.Application Insights stores the print statement outputs in customDimensions and in the Contents trace table. A JSON-karakterláncok nyomtatása hierarchikus adatstruktúrát hoz létre a nyomkövetési kimenetben Contents .Printing JSON strings produces a hierarchical data structure in the trace output under Contents.

Adatok exportálása megőrzésre és feldolgozásraExport data for retention and processing

Fontos

Az Azure Application Insights csak a blob Storage-ba való exportálást támogatja.Azure Application Insights only supports exports to blob storage. A megvalósítás korlátaival kapcsolatos további információkért lásd: telemetria exportálása az alkalmazásból.For more information on the limits of this implementation, see Export telemetry from App Insights.

Az adatok egy blob Storage-fiókba való exportálásához Application Insights folyamatos exportálást használhat, ahol megadhatja az adatmegőrzési beállításokat.Use Application Insights' continuous export to export data to a blob storage account where you can define retention settings. Application Insights JSON formátumban exportálja az adatmennyiséget.Application Insights exports the data in JSON format.

Folyamatos exportálás

Következő lépésekNext steps

Ebben a cikkben megtanulta, hogyan engedélyezheti a naplózást és megtekintheti a webszolgáltatási végpontok naplóit.In this article, you learned how to enable logging and view logs for web service endpoints. Próbálja ki ezeket a cikkeket a következő lépésekhez:Try these articles for next steps: