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
Předplatné Azure – vyzkoušejte bezplatnou nebo placenou verzi služby Azure Machine Learning.
Pracovní prostor Azure Machine Learning, místní adresář, který obsahuje vaše skripty, a nainstalovanou sadu Azure Machine Learning SDK pro Python. Další informace najdete v tématu Konfigurace vývojového prostředí.
Trénovaný model strojového učení. Další informace najdete v kurzu trénování modelu klasifikace obrázků.
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:
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")
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:
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
Aktualizujte konfiguraci služby a nezapomeňte povolit Application Insights.
config = Webservice.deploy_configuration(enable_app_insights=True)
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:
Přihlaste se do studia na adrese https://ml.azure.com.
Přejděte na Modely a vyberte model, který chcete nasadit.
Vyberte +Nasadit.
Vyplňte formulář Nasazení modelu .
Rozbalte nabídku Upřesnit.
Vyberte Povolit diagnostiku Application Insights a shromažďování dat.
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:
Přejděte do pracovního prostoru Azure Machine Learning v sadě Studio.
Vyberte Koncové body.
Vyberte nasazenou službu.
Vyberte odkaz url služby Application Insights.
V Application Insights vyberte na kartě Přehled nebo v části Monitorování protokoly.
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
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.
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:
MLOps: Správa, nasazení a monitorování modelů pomocí služby Azure Machine Learning vám umožní získat další informace o využití dat shromážděných z modelů v produkčním prostředí. Tato data vám můžou pomoct průběžně vylepšovat proces strojového učení.