Share via


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 op 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

In het notebook enable-app-insights-in-production-service.ipynb worden de concepten in dit artikel beschreven.

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 het alleen opnieuw maken als u de werkruimte verwijdert en opnieuw maakt.

Tip

Als u in plaats daarvan online-eindpunten gebruikt, gebruikt u in plaats daarvan de informatie in het artikel Online-eindpunten bewaken.

Vereisten

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:

  1. Identificeer de service in uw werkruimte. De waarde voor ws is de naam van uw werkruimte

    from azureml.core.webservice import Webservice
    aks_service= Webservice(ws, "my-service-name")
    
  2. 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 wordt er geen informatie geregistreerd. Als de gegevens die u wilt vastleggen 64 kB groter zijn, 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 te gebruiken, zoals OpenCensus.

Als u aangepaste traceringen wilt vastleggen, volgt u het standaardimplementatieproces voor AKS of ACI in het document Implementeren en waar . Voer vervolgens de volgende stappen uit:

  1. Werk het scorebestand bij door afdrukinstructies toe te voegen om gegevens naar Application Insights te verzenden tijdens deductie. 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
    
  2. Werk de serviceconfiguratie bij en zorg ervoor dat u Application Insights inschakelt.

    config = Webservice.deploy_configuration(enable_app_insights=True)
    
  3. Bouw een installatiekopieën en implementeer deze op AKS of ACI. Zie 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 ook Azure-toepassing Insights 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:

  1. Meld u aan bij de studio op https://ml.azure.com.

  2. Ga naar Modellen en selecteer het model dat u wilt implementeren.

  3. Selecteer +Implementeren.

  4. Vul het formulier Model implementeren in .

  5. Vouw het menu Geavanceerd uit .

    Formulier implementeren

  6. Selecteer Diagnostische gegevens en gegevensverzameling van Application Insights inschakelen.

    App Insights inschakelen

Metrische gegevens en logboeken weergeven

Querylogboeken voor geïmplementeerde modellen opvragen

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:

  1. Ga naar uw Azure Machine Learning-werkruimte in de studio.

  2. Selecteer Eindpunten.

  3. Selecteer de geïmplementeerde service.

  4. Selecteer de koppeling Application Insights-URL .

    Application Insights-URL zoeken

  5. Selecteer in Application Insights op het tabblad Overzicht of de sectie Bewaking de optie Logboeken.

    Tabblad Overzicht van bewaking

  6. Als u gegevens uit het score.py-bestand wilt weergeven, bekijkt u de traceringentabel . Met de volgende query wordt gezocht naar logboeken waarin de invoerwaarde is vastgelegd:

    traces
    | where customDimensions contains "input"
    | limit 10
    

    traceringsgegevens

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 wordt er geen informatie geregistreerd.

Als u informatie over webserviceaanvragen wilt registreren, voegt u instructies toe print aan uw score.py-bestand. Elke print instructie resulteert in één vermelding in de Application Insights-traceringstabel 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 de continue export van Application Insights om gegevens te exporteren naar een blob-opslagaccount, waar u bewaarinstellingen kunt definiëren. Application Insights exporteert de gegevens in JSON-indeling.

Continue export

Volgende stappen

In dit artikel hebt u geleerd hoe u logboekregistratie inschakelt en logboeken voor webservice-eindpunten bekijkt. Probeer deze artikelen voor de volgende stappen: