Sdílet prostřednictvím


Monitorování a shromažďování dat z koncových bodů webové služby ML

PLATÍ PRO: Python SDK azureml v1

V tomto článku se dozvíte, jak shromažďovat data z modelů nasazených do koncových bodů webové služby ve službě Azure Kubernetes Service (AKS) nebo Azure Container Instances (ACI). Pomocí Aplikace Azure lication Insights můžete shromažďovat následující data z koncového bodu:

  • Výstupní data
  • Odpovědi
  • Frekvence požadavků, doba odezvy a frekvence selhání
  • Míra závislostí, doba odezvy a frekvence selhání
  • Výjimky

Poznámkový blok enable-app-insights-in-production-service.ipynb ukazuje koncepty v tomto článku.

Postupujte podle pokynů v článku věnovaném využití poznámkových bloků Jupyter k prozkoumání této služby a zjistěte, jak provozovat poznámkové bloky.

Důležité

Informace v tomto článku závisí na instanci Aplikace Azure lication Insights, která byla vytvořena s vaším pracovním prostorem. Pokud jste tuto instanci Application Insights odstranili, neexistuje žádný způsob, jak ji znovu vytvořit, než odstranit a znovu vytvořit pracovní prostor.

Tip

Pokud místo toho používáte online koncové body, použijte místo toho informace v článku Monitorování online koncových bodů .

Požadavky

Konfigurace protokolování pomocí sady Python SDK

V této části se dozvíte, jak povolit protokolování Application Insight pomocí sady Python SDK.

Aktualizace nasazené služby

Pomocí následujících kroků aktualizujte existující webovou službu:

  1. Identifikujte službu ve vašem pracovním prostoru. Hodnota ws je název vašeho pracovního prostoru.

    from azureml.core.webservice import Webservice
    aks_service= Webservice(ws, "my-service-name")
    
  2. Aktualizace služby a povolení Aplikace Azure lication Insights

    aks_service.update(enable_app_insights=True)
    

Protokolování vlastních trasování ve službě

Důležité

Aplikace Azure lication Insights protokoluje pouze datové části až 64 kB. Pokud dosáhnete tohoto limitu, můžou se zobrazit chyby, jako je nedostatek paměti nebo se nemusí protokolovat žádné informace. Pokud jsou data, která chcete protokolovat, větší 64 kB, měli byste je místo toho uložit do úložiště objektů blob pomocí informací v části Shromažďování dat pro modely v produkčním prostředí.

V případě složitějších situací, jako je sledování modelů v rámci nasazení AKS, doporučujeme použít knihovnu třetích stran, jako je OpenCensus.

Pokud chcete protokolovat vlastní trasování, postupujte podle standardního procesu nasazení pro AKS nebo ACI v tématu Postup nasazení a umístění dokumentu. Pak použijte následující kroky:

  1. Aktualizujte soubor bodování přidáním příkazů print pro odesílání dat do Application Insights během odvozování. Pro složitější informace, jako jsou data požadavku a odpověď, použijte strukturu JSON.

    Následující příklad score.py souboru protokoluje, kdy byl model inicializován, vstup a výstup během odvozování a čas výskytu chyb.

    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. Aktualizujte konfiguraci služby a nezapomeňte povolit Application Insights.

    config = Webservice.deploy_configuration(enable_app_insights=True)
    
  3. Sestavte image a nasaďte ji v AKS nebo ACI. Další informace najdete v tématu Jak nasadit a kde.

Zakázání sledování v Pythonu

Pokud chcete zakázat Aplikace Azure lication Insights, použijte následující kód:

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

Konfigurace protokolování pomocí studio Azure Machine Learning

Z studio Azure Machine Learning můžete také povolit Aplikace Azure lication Insights. Až budete připraveni nasadit model jako webovou službu, pomocí následujících kroků povolte Application Insights:

  1. Přihlaste se do studia na adrese https://ml.azure.com.

  2. Přejděte na Modely a vyberte model, který chcete nasadit.

  3. Vyberte +Nasadit.

  4. Vyplňte formulář Nasazení modelu .

  5. Rozbalte nabídku Upřesnit.

    Formulář pro nasazení

  6. Vyberte Povolit diagnostiku Application Insights a shromažďování dat.

    Povolení App Insights

Zobrazení metrik a protokolů

Dotazování protokolů pro nasazené modely

Protokoly online koncových bodů jsou zákaznická data. Funkci můžete použít get_logs() k načtení protokolů z dříve nasazené webové služby. Protokoly můžou obsahovat podrobné informace o všech chybách, ke kterým došlo během nasazování.

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

Pokud máte více tenantů, možná budete muset před přidáním následujícího ověřovacího kódu přidat následující kód. ws = Workspace.from_config()

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

Zobrazení protokolů v sadě Studio

Aplikace Azure lication Insights ukládá protokoly služeb do stejné skupiny prostředků jako pracovní prostor Azure Machine Learning. K zobrazení dat pomocí studia použijte následující postup:

  1. Přejděte do pracovního prostoru Azure Machine Learning v sadě Studio.

  2. Vyberte Koncové body.

  3. Vyberte nasazenou službu.

  4. Vyberte odkaz url služby Application Insights.

    Vyhledání adresy URL Application Insights

  5. V Application Insights vyberte na kartě Přehled nebo v části Monitorování protokoly.

    Karta Přehled monitorování

  6. Pokud chcete zobrazit informace protokolované ze souboru score.py, podívejte se na tabulku trasování . Následující dotaz vyhledá protokoly, ve kterých byla zaprotokolována vstupní hodnota:

    traces
    | where customDimensions contains "input"
    | limit 10
    

    trasování dat

Další informace o tom, jak používat Aplikace Azure lication Insights, najdete v tématu Co je Application Insights?.

Metadata webové služby a data odpovědí

Důležité

Aplikace Azure lication Insights protokoluje pouze datové části až 64 kB. Pokud dosáhnete tohoto limitu, můžou se zobrazit chyby, jako je nedostatek paměti, nebo se nemusí protokolovat žádné informace.

Pokud chcete protokolovat informace o žádosti o webovou službu, přidejte print do souboru score.py příkazy. Každý print příkaz má za následek jednu položku v tabulce trasování Application Insights pod zprávou STDOUT. Application Insights ukládá print výstupy příkazu do customDimensions tabulky trasování a do Contents tabulky trasování. Tisk řetězců JSON vytvoří hierarchickou datovou strukturu ve výstupu trasování v části Contents.

Export dat pro uchovávání a zpracování

Důležité

Aplikace Azure lication Insights podporuje pouze exporty do úložiště objektů blob. Další informace o omezeních této implementace najdete v tématu Export telemetrie z App Insights.

Průběžný export application Insights slouží k exportu dat do účtu úložiště objektů blob, kde můžete definovat nastavení uchovávání informací. Application Insights exportuje data ve formátu JSON.

Průběžný export

Další kroky

V tomto článku jste zjistili, jak povolit protokolování a zobrazit protokoly pro koncové body webové služby. Další kroky najdete v těchto článcích: