Se Övervaka och samla in data från webbtjänstslutpunkter i ML

GÄLLER FÖR:Python SDK azureml v1

I den här artikeln får du lära dig hur du samlar in data från modeller som distribuerats till webbtjänstslutpunkter i Azure Kubernetes Service (AKS) eller Azure Container Instances (ACI). Använd Azure Application Insights för att samla in följande data från en slutpunkt:

  • Utdata
  • Svar
  • Begärandefrekvens, svarstid och felfrekvens
  • Beroendefrekvens, svarstid och felfrekvens
  • Undantag

Notebook-filen enable-app-insights-in-production-service.ipynb visar begrepp i den här artikeln.

Lär dig att köra notebook-filer genom att följa artikeln Använda Jupyter-notebooks till att utforska tjänsten.

Viktigt

Informationen i den här artikeln bygger på Azure Application Insights-instansen som skapades med din arbetsyta. Om du har tagit bort den här Application Insights-instansen finns det inget annat sätt att återskapa den än att ta bort och återskapa arbetsytan.

Tips

Om du använder onlineslutpunkter i stället använder du informationen i artikeln Övervaka onlineslutpunkter i stället.

Förutsättningar

Konfigurera loggning med Python SDK

I det här avsnittet får du lära dig hur du aktiverar Application Insight-loggning med hjälp av Python SDK.

Uppdatera en distribuerad tjänst

Använd följande steg för att uppdatera en befintlig webbtjänst:

  1. Identifiera tjänsten på din arbetsyta. Värdet för ws är namnet på din arbetsyta

    from azureml.core.webservice import Webservice
    aks_service= Webservice(ws, "my-service-name")
    
  2. Uppdatera tjänsten och aktivera Azure Application Insights

    aks_service.update(enable_app_insights=True)
    

Logga anpassade spårningar i tjänsten

Viktigt

Azure Application Insights loggar bara nyttolaster på upp till 64 kB. Om den här gränsen har nåtts kan du se fel, till exempel slut på minne eller så kan ingen information loggas. Om de data du vill logga är större än 64 kB bör du i stället lagra dem till bloblagring med hjälp av informationen i Samla in data för modeller i produktion.

För mer komplexa situationer, till exempel modellspårning i en AKS-distribution, rekommenderar vi att du använder ett bibliotek från tredje part som OpenCensus.

Om du vill logga anpassade spårningar följer du standarddistributionsprocessen för AKS eller ACI i dokumentet Så här distribuerar du och var . Använd sedan följande steg:

  1. Uppdatera bedömningsfilen genom att lägga till utskriftsuttryck för att skicka data till Application Insights under slutsatsdragningen. Mer komplex information, till exempel begärandedata och svar, finns i en JSON-struktur.

    I följande exempel score.py loggar filen när modellen initierades, indata och utdata under slutsatsdragningen och när eventuella fel inträffar.

    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. Uppdatera tjänstkonfigurationen och se till att aktivera Application Insights.

    config = Webservice.deploy_configuration(enable_app_insights=True)
    
  3. Skapa en avbildning och distribuera den på AKS eller ACI. Mer information finns i Distribuera och var.

Inaktivera spårning i Python

Om du vill inaktivera Azure Application Insights använder du följande kod:

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

Konfigurera loggning med Azure Machine Learning-studio

Du kan också aktivera Azure Application Insights från Azure Machine Learning-studio. När du är redo att distribuera din modell som en webbtjänst använder du följande steg för att aktivera Application Insights:

  1. Logga in i studion på https://ml.azure.com.

  2. Gå till Modeller och välj den modell som du vill distribuera.

  3. Välj +Distribuera.

  4. Fyll i formuläret Distribuera modell .

  5. Expandera menyn Avancerat .

    Distribuera formulär

  6. Välj Aktivera Application Insights-diagnostik och datainsamling.

    Aktivera App Insights

Visa mått och loggar

Frågeloggar för distribuerade modeller

Loggar för onlineslutpunkter är kunddata. Du kan använda get_logs() funktionen för att hämta loggar från en tidigare distribuerad webbtjänst. Loggarna kan innehålla detaljerad information om eventuella fel som inträffade under distributionen.

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()

Om du har flera klienter kan du behöva lägga till följande autentiseringskod innan ws = Workspace.from_config()

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

Visa loggar i studion

Azure Application Insights lagrar dina tjänstloggar i samma resursgrupp som Azure Machine Learning-arbetsytan. Använd följande steg för att visa dina data med hjälp av studio:

  1. Gå till din Azure Machine Learning-arbetsyta i studion.

  2. Välj Slutpunkter.

  3. Välj den distribuerade tjänsten.

  4. Välj url-länken för Application Insights .

    Leta upp Application Insights-URL

  5. I Application Insights går du till fliken Översikt eller avsnittet Övervakning och väljer Loggar.

    Översiktsflik för övervakning

  6. Om du vill visa information som loggats från score.py-filen tittar du på spårningstabellen . Följande fråga söker efter loggar där indatavärdet loggades:

    traces
    | where customDimensions contains "input"
    | limit 10
    

    spåra data

Mer information om hur du använder Azure Application Insights finns i Vad är Application Insights?.

Webbtjänstmetadata och svarsdata

Viktigt

Azure Application Insights loggar bara nyttolaster på upp till 64 kB. Om den här gränsen nås kan du se fel som slut på minne, eller så kan ingen information loggas.

Om du vill logga information om webbtjänstbegäran lägger du till print instruktioner i score.py-filen. Varje print instruktion resulterar i en post i Application Insights-spårningstabellen under meddelandet STDOUT. Application Insights lagrar instruktionens print utdata i customDimensions och i spårningstabellen Contents . När du skriver ut JSON-strängar skapas en hierarkisk datastruktur i spårningsutdata under Contents.

Exportera data för kvarhållning och bearbetning

Viktigt

Azure Application Insights stöder endast export till bloblagring. Mer information om gränserna för den här implementeringen finns i Exportera telemetri från App Insights.

Använd Application Insights kontinuerliga export för att exportera data till ett bloblagringskonto där du kan definiera kvarhållningsinställningar. Application Insights exporterar data i JSON-format.

Kontinuerlig export

Nästa steg

I den här artikeln har du lärt dig hur du aktiverar loggning och visar loggar för webbtjänstslutpunkter. Prova följande artiklar för nästa steg: