Gegevens van ML-webservice-eindpunten bewaken en verzamelen
VAN TOEPASSING OP: Python SDK azureml v1
In dit artikel leert u hoe u gegevens verzamelt van modellen die zijn geïmplementeerd in webservice-eindpunten in Azure Kubernetes Service (AKS) of Azure Container Instances (ACI). Gebruik Azure-toepassing Insights om de volgende gegevens van een eindpunt te verzamelen:
- Uitvoergegevens
- Antwoorden
- Aanvraagsnelheden, reactietijden en foutpercentages
- Afhankelijkheidssnelheden, reactietijden en foutpercentages
- Uitzonderingen
Het notebook enable-app-insights-in-production-service.ipynb demonstreert concepten in dit artikel.
Informatie over het uitvoeren van notebooks vindt u in het artikel Use Jupyter notebooks to explore this service (Jupyter Notebooks gebruiken om deze service te verkennen).
Belangrijk
De informatie in dit artikel is afhankelijk van het Azure-toepassing Insights-exemplaar dat is gemaakt met uw werkruimte. Als u dit Application Insights-exemplaar hebt verwijderd, kunt u deze niet opnieuw maken dan de werkruimte verwijderen en opnieuw maken.
Tip
Als u in plaats daarvan online-eindpunten gebruikt, gebruikt u in plaats daarvan de informatie in het artikel Online-eindpunten bewaken.
Vereisten
Een Azure-abonnement: probeer de gratis of betaalde versie van Azure Machine Learning.
Een Azure Machine Learning-werkruimte, een lokale map met uw scripts en de Azure Machine Learning SDK voor Python geïnstalleerd. Zie Een ontwikkelomgeving configureren voor meer informatie.
Een getraind machine learning-model. Zie de zelfstudie Afbeeldingsclassificatiemodel trainen voor meer informatie.
Logboekregistratie configureren met de Python SDK
In deze sectie leert u hoe u Application Insight-logboekregistratie inschakelt met behulp van de Python SDK.
Een geïmplementeerde service bijwerken
Gebruik de volgende stappen om een bestaande webservice bij te werken:
Identificeer de service in uw werkruimte. De waarde voor
ws
is de naam van uw werkruimtefrom azureml.core.webservice import Webservice aks_service= Webservice(ws, "my-service-name")
Uw service bijwerken en Azure-toepassing Insights inschakelen
aks_service.update(enable_app_insights=True)
Aangepaste traceringen registreren in uw service
Belangrijk
Azure-toepassing Insights registreert alleen nettoladingen van maximaal 64 kB. Als deze limiet is bereikt, ziet u mogelijk fouten zoals onvoldoende geheugen of worden er geen gegevens vastgelegd. Als de gegevens die u wilt vastleggen groter zijn dan 64 kB, moet u deze in plaats daarvan opslaan in blobopslag met behulp van de informatie in Gegevens verzamelen voor modellen in productie.
Voor complexere situaties, zoals modeltracking binnen een AKS-implementatie, raden we u aan een bibliotheek van derden, zoals OpenCensus, te gebruiken.
Als u aangepaste traceringen wilt registreren, volgt u het standaardimplementatieproces voor AKS of ACI in het document Implementeren en waar . Gebruik vervolgens de volgende stappen:
Werk het scorebestand bij door afdrukinstructies toe te voegen om gegevens tijdens deductie naar Application Insights te verzenden. Gebruik een JSON-structuur voor complexere informatie, zoals de aanvraaggegevens en het antwoord.
Het volgende voorbeeldbestand
score.py
registreert wanneer het model is geïnitialiseerd, invoer en uitvoer tijdens deductie en het tijdstip waarop fouten optreden.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
Werk de serviceconfiguratie bij en zorg ervoor dat u Application Insights inschakelt.
config = Webservice.deploy_configuration(enable_app_insights=True)
Bouw een installatiekopieën en implementeer deze op AKS of ACI. Zie het document Hoe implementeren en waar voor meer informatie.
Tracering uitschakelen in Python
Gebruik de volgende code om Azure-toepassing Insights uit te schakelen:
## replace <service_name> with the name of the web service
<service_name>.update(enable_app_insights=False)
Logboekregistratie configureren met Azure Machine Learning-studio
U kunt Azure-toepassing Inzichten ook inschakelen vanuit Azure Machine Learning-studio. Wanneer u klaar bent om uw model als webservice te implementeren, gebruikt u de volgende stappen om Application Insights in te schakelen:
Meld u aan bij de studio op https://ml.azure.com.
Ga naar Modellen en selecteer het model dat u wilt implementeren.
Selecteer +Implementeren.
Vul het formulier Deploy model in.
Vouw het menu Geavanceerd uit.
Selecteer Diagnostische gegevens en gegevensverzameling van Application Insights inschakelen.
Metrische gegevens en logboeken weergeven
Query's uitvoeren op logboeken voor geïmplementeerde modellen
Logboeken van online-eindpunten zijn klantgegevens. U kunt de get_logs()
functie gebruiken om logboeken op te halen uit een eerder geïmplementeerde webservice. De logboeken kunnen gedetailleerde informatie bevatten over eventuele fouten die zijn opgetreden tijdens de implementatie.
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()
Als u meerdere tenants hebt, moet u mogelijk de volgende verificatiecode toevoegen voordat u ws = Workspace.from_config()
from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="the tenant_id in which your workspace resides")
Logboeken weergeven in de studio
Azure-toepassing Insights slaat uw servicelogboeken op in dezelfde resourcegroep als de Azure Machine Learning-werkruimte. Gebruik de volgende stappen om uw gegevens weer te geven met behulp van de studio:
Ga naar uw Azure Machine Learning-werkruimte in de studio.
Selecteer Eindpunten.
Selecteer de geïmplementeerde service.
Selecteer de Koppeling naar de Application Insights-URL .
Selecteer Logboeken in Application Insights op het tabblad Overzicht of in de sectie Bewaking.
Als u gegevens wilt weergeven die zijn vastgelegd uit het score.py-bestand, bekijkt u de tabel traceringen . Met de volgende query wordt gezocht naar logboeken waarin de invoerwaarde is vastgelegd:
traces | where customDimensions contains "input" | limit 10
Zie Wat is Application Insights? voor meer informatie over het gebruik van Azure-toepassing Insights.
Metagegevens en antwoordgegevens van webservice
Belangrijk
Azure-toepassing Insights registreert alleen nettoladingen van maximaal 64 kB. Als deze limiet is bereikt, ziet u mogelijk fouten zoals onvoldoende geheugen of worden er geen gegevens vastgelegd.
Als u informatie over webserviceaanvragen wilt vastleggen, voegt u instructies toe print
aan uw score.py-bestand. Elke print
instructie resulteert in één vermelding in de traceringstabel van Application Insights onder het bericht STDOUT
. Application Insights slaat de uitvoer van de print
instructie op in customDimensions
en in de Contents
traceringstabel. Het afdrukken van JSON-tekenreeksen produceert een hiërarchische gegevensstructuur in de traceringsuitvoer onder Contents
.
Gegevens exporteren voor retentie en verwerking
Belangrijk
Azure-toepassing Insights ondersteunt alleen exports naar blob-opslag. Zie Telemetrie exporteren vanuit App Insights voor meer informatie over de limieten van deze implementatie.
Gebruik continue export van Application Insights om gegevens te exporteren naar een blobopslagaccount waar u bewaarinstellingen kunt definiëren. Application Insights exporteert de gegevens in JSON-indeling.
Volgende stappen
In dit artikel hebt u geleerd hoe u logboekregistratie kunt inschakelen en logboeken kunt weergeven voor webservice-eindpunten. Probeer deze artikelen voor de volgende stappen:
MLOps: Modellen beheren, implementeren en bewaken met Azure Machine Learning voor meer informatie over het gebruik van gegevens die zijn verzameld uit modellen in productie. Dergelijke gegevens kunnen helpen om uw machine learning-proces voortdurend te verbeteren.