Monitorizar e recolher dados de pontos finais de serviço Web de ML

APLICA-SE A:Python SDK azureml v1

Neste artigo, aprende-se a recolher dados de modelos implantados para pontos finais de serviço web em Azure Kubernetes Service (AKS) ou Azure Container Instances (ACI). Utilize Aplicação Azure Insights para recolher os seguintes dados de um ponto final:

  • Dados de saída
  • Respostas
  • Taxas de pedido, tempos de resposta e taxas de insucesso
  • Taxas de dependência, tempos de resposta e taxas de insucesso
  • Exceções

O notebook enable-app-insights-in-production-service.ipynb demonstra conceitos neste artigo.

Saiba como executar blocos de notas ao seguir o artigo Utilizar blocos de notas Jupyter para explorar este serviço.

Importante

A informação neste artigo baseia-se no Aplicação Azure instância insights que foi criada com o seu espaço de trabalho. Se apagou esta instância de Insights de Aplicação, não há outra forma de o recriar a não ser a eliminação e recriação do espaço de trabalho.

Dica

Se estiver a utilizar pontos finais online, utilize as informações no artigo de pontos finais online do Monitor .

Pré-requisitos

Configurar a exploração madeireira com o Python SDK

Nesta secção, aprende-se a ativar o registo de Insight de Aplicação utilizando o Python SDK.

Atualizar um serviço implantado

Utilize os seguintes passos para atualizar um serviço web existente:

  1. Identifique o serviço no seu espaço de trabalho. O valor para ws é o nome do seu espaço de trabalho

    from azureml.core.webservice import Webservice
    aks_service= Webservice(ws, "my-service-name")
    
  2. Atualize o seu serviço e ative Aplicação Azure Insights

    aks_service.update(enable_app_insights=True)
    

Registar vestígios personalizados no seu serviço

Importante

Aplicação Azure Insights apenas regista cargas de até 64kb. Se este limite for atingido, poderá ver erros como fora da memória, ou nenhuma informação poderá ser registada. Se os dados que pretende registar forem maiores de 64kb, deverá armazená-los para armazenar usando a informação em Recolha de Dados para modelos em produção.

Para situações mais complexas, como o rastreio de modelos dentro de uma implementação AKS, recomendamos a utilização de uma biblioteca de terceiros como o OpenCensus.

Para registar vestígios personalizados, siga o processo de implementação padrão para AKS ou ACI no Como implementar e onde documento. Em seguida, utilize os seguintes passos:

  1. Atualize o ficheiro de pontuação adicionando declarações de impressão para enviar dados para o Application Insights durante a inferência. Para informações mais complexas, como os dados do pedido e a resposta, utilize uma estrutura JSON.

    Os registos de ficheiros de exemplo score.py a seguir quando o modelo foi inicializado, a entrada e a saída durante a inferência, e o tempo em que ocorrerem erros.

    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. Atualize a configuração do serviço e certifique-se de ativar o Application Insights.

    config = Webservice.deploy_configuration(enable_app_insights=True)
    
  3. Construa uma imagem e implemente-a em AKS ou ACI. Para mais informações, consulte Como implementar e onde.

Desativar o rastreio em Python

Para desativar Aplicação Azure Insights, utilize o seguinte código:

## replace <service_name> with the name of the web service
<service_name>.update(enable_app_insights=False)

Configurar a exploração madeireira com estúdio do Azure Machine Learning

Também pode ativar Aplicação Azure Insights a partir de estúdio do Azure Machine Learning. Quando estiver pronto para implementar o seu modelo como um serviço web, utilize os seguintes passos para ativar o Application Insights:

  1. Inscreva-se no estúdio da https://ml.azure.com.

  2. Vá a Modelos e selecione o modelo que pretende implementar.

  3. Selecione +Implementar.

  4. Povoar o modelo implementar .

  5. Expandir o menu Advanced .

    Formulário de implantação

  6. Selecione Enable Application Insights diagnósticos e recolha de dados.

    Ativar insights de aplicativos

Ver métricas e registos

Registos de consulta para modelos implantados

Os registos dos pontos finais online são dados do cliente. Pode utilizar a get_logs() função para recuperar registos de um serviço web previamente implantado. Os registos podem conter informações detalhadas sobre quaisquer erros ocorridos durante a implantação.

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()

Se tiver vários Inquilinos, poderá ter de adicionar o seguinte código autenticado antes ws = Workspace.from_config()

from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="the tenant_id in which your workspace resides")

Ver registos no estúdio

Aplicação Azure Insights armazena os seus registos de serviço no mesmo grupo de recursos que o espaço de trabalho Azure Machine Learning. Utilize os seguintes passos para visualizar os seus dados utilizando o estúdio:

  1. Vá ao seu espaço de trabalho Azure Machine Learning no estúdio.

  2. Selecione Pontos de final.

  3. Selecione o serviço implantado.

  4. Selecione a ligação url Insights Application Insights .

    Localizar insights de aplicação url

  5. No 'Insights de Aplicação', a partir do separador Visão Geral ou na secção de Monitorização , selecione Registos.

    Separador geral da monitorização

  6. Para ver as informações registadas no ficheiro score.py, consulte a tabela de vestígios . As seguintes pesquisas de consulta para registos onde o valor de entrada foi registado:

    traces
    | where customDimensions contains "input"
    | limit 10
    

    vestígios de dados

Para obter mais informações sobre como usar Aplicação Azure Insights, consulte o que é Insights de Aplicação?.

Metadados de serviço web e dados de resposta

Importante

Aplicação Azure Insights apenas regista cargas de até 64kb. Se este limite for atingido, poderá ver erros como fora da memória, ou nenhuma informação poderá ser registada.

Para registar informações de pedido de serviço web, adicione print declarações ao seu ficheiro score.py. Cada print declaração resulta numa única entrada na tabela de rastreios de Insights de Aplicação sob a mensagem STDOUT. A Application Insights armazena as saídas de print declaração dentro customDimensions e na tabela de Contents rastreios. A impressão de cordas JSON produz uma estrutura de dados hierárquica na saída de vestígios sob Contents.

Dados de exportação para retenção e tratamento

Importante

Aplicação Azure Insights só suporta exportações para armazenamento de bolhas. Para obter mais informações sobre os limites desta implementação, consulte a telemetria exporte da App Insights.

Utilize a exportação contínua da Application Insights para exportar dados para uma conta de armazenamento de bolhas onde pode definir as definições de retenção. A Application Insights exporta os dados em formato JSON.

Exportação contínua

Passos seguintes

Neste artigo, aprendeu a ativar a gravação e visualizar registos para os pontos finais do serviço web. Experimente estes artigos para os próximos passos: