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 v Azure Kubernetes Service (AKS) nebo Azure Container Instances (ACI). Pomocí Aplikace Azure Insights můžete shromažďovat následující data z koncového bodu:

  • Výstupní data
  • Odpovědi
  • Frekvence požadavků, doby odezvy a míra selhání
  • Míra závislostí, doba odezvy a míra 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 se spoléhají na instanci Aplikace Azure Insights, kterou jste vytvořili ve vašem pracovním prostoru. Pokud jste tuto instanci Application Insights odstranili, neexistuje 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 pracovního prostoru.

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

    aks_service.update(enable_app_insights=True)
    

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

Důležité

Aplikace Azure Insights protokoluje jenom datové části až 64 kB. Pokud dojde k dosažení tohoto limitu, může se zobrazit chyby, jako je nedostatek paměti, nebo se nemusí protokolovat žádné informace. Pokud jsou data, která chcete protokolovat, větší 64kb, 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í 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ů tisku 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 soubor protokoluje, kdy byl model inicializován, vstup a výstup během odvozování a čas, kdy dojde k chybám.

    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. Vytvořte image a nasaďte ji v AKS nebo ACI. Další informace najdete v tématu Postup nasazení a umístění.

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

Pokud chcete zakázat Aplikace Azure 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

Můžete také povolit Aplikace Azure Insights z studio Azure Machine Learning. Až budete připraveni nasadit model jako webovou službu, povolte Application Insights pomocí následujícího postupu:

  1. Přihlaste se ke studiu 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ář Modelu nasazení .

  5. Rozbalte nabídku Upřesnit .

    Formulář pro nasazení

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

    Povolení App Insights

Zobrazení metrik a protokolů

Dotazování protokolů pro nasazené modely

Protokoly online koncových bodů jsou zákaznická data. Pomocí funkce můžete get_logs() načíst protokoly 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í ověřovací 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 Insights ukládá protokoly služeb do stejné skupiny prostředků jako pracovní prostor Azure Machine Learning. Pomocí následujících kroků můžete zobrazit data pomocí studia:

  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 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 Insights, najdete v tématu Co je Application Insights?.

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

Důležité

Aplikace Azure Insights protokoluje jenom datové části až 64 kB. Pokud dosáhnete tohoto limitu, může 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říkazů do customDimensions 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 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 následujících článcích: