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

PLATÍ PRO:Sada Python SDK azureml v1

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

  • 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 Insights vytvořené s vaším pracovním prostorem. Pokud jste tuto instanci Application Insights odstranili, neexistuje jiný způsob, jak ji vytvořit znovu, 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 v pracovním prostoru. Hodnota pro 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 Insights

    aks_service.update(enable_app_insights=True)
    

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

Důležité

Aplikace Azure Insights protokoluje pouze datové části do 64 kB. Při dosažení tohoto limitu se můžou 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 složitějších situacích, jako je sledování modelů v rámci nasazení AKS, doporučujeme použít knihovnu třetí strany, jako je OpenCensus.

Pokud chcete protokolovat vlastní trasování, postupujte podle standardního procesu nasazení pro AKS nebo ACI v dokumentu Jak nasadit a kde . Pak postupujte následovně:

  1. Aktualizujte bodovací soubor 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í ukázkový score.py soubor zaznamenává, 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 Postup nasazení a kde.

Zákaz 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 následujícím postupem:

  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ář Nasadit model .

  5. Rozbalte nabídku Upřesnit .

    Formulář 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. 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 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ů ve studiu

Aplikace Azure Insights ukládá protokoly služby ve stejné skupině prostředků jako pracovní prostor Služby Azure Machine Learning. K zobrazení dat pomocí studia použijte následující postup:

  1. Ve studiu přejděte do pracovního prostoru Služby Azure Machine Learning.

  2. Vyberte Koncové body.

  3. Vyberte nasazenou službu.

  4. Vyberte odkaz Adresa URL Application Insights .

    Vyhledání adresy URL Application Insights

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

    Karta Přehled monitorování

  6. Pokud chcete zobrazit informace protokolované ze souboru score.py, podívejte se do tabulky trasování . Následující dotaz vyhledá protokoly, ve kterých byla zaznamená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 pouze datové části do 64 kB. Pokud dosáhnete tohoto limitu, může dojít k chybám, jako je nedostatek paměti, nebo se nemusí zaprotokolovat žádné informace.

Pokud chcete protokolovat informace o požadavcích webové služby, přidejte print do souboru score.py příkazy. Výsledkem každého print příkazu je jedna položka 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 účely uchovávání a zpracování

Důležité

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

Pomocí průběžného exportu Application Insights můžete exportovat data 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: