Partilhar via


Monitorar o desempenho dos modelos implantados na produção

APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

No Azure Machine Learning, você pode usar o monitoramento de modelos para acompanhar continuamente o desempenho de modelos de aprendizado de máquina em produção. O monitoramento de modelos fornece uma visão ampla dos sinais de monitoramento. Também o alerta para potenciais problemas. Ao monitorar sinais e métricas de desempenho de modelos em produção, você pode avaliar criticamente os riscos inerentes aos seus modelos. Você também pode identificar pontos cegos que podem afetar negativamente o seu negócio.

Neste artigo, você verá como executar as seguintes tarefas:

  • Configurar a monitorização avançada e pré-configurada para modelos implantados em pontos de extremidade online do Azure Machine Learning
  • Monitore métricas de desempenho para modelos em produção
  • Monitorar modelos implantados fora do Azure Machine Learning ou implantados em pontos de extremidade em lote do Azure Machine Learning
  • Configurar sinais e métricas personalizados para usar no monitoramento de modelos
  • Interpretar os resultados da monitorização
  • Integrar o monitoramento de modelo do Azure Machine Learning com a Grade de Eventos do Azure

Pré-requisitos

  • A CLI do Azure e a ml extensão para a CLI do Azure, instaladas e configuradas. Para obter mais informações, consulte Instalar e configurar a CLI (v2).

  • Um shell Bash ou um shell compatível, por exemplo, um shell num sistema Linux ou Subsistema Windows para Linux. Os exemplos da CLI do Azure neste artigo pressupõem que você use esse tipo de shell.

  • Uma área de trabalho do Azure Machine Learning. Para obter instruções sobre como criar um espaço de trabalho, consulte Configurar.

  • Uma conta de usuário que tenha pelo menos uma das seguintes funções de controle de acesso baseado em função do Azure (Azure RBAC):

    • Uma função de Proprietário para o espaço de trabalho do Azure Machine Learning
    • Uma função de Colaborador para o espaço de trabalho do Azure Machine Learning
    • Uma função personalizada que tem Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* permissões

    Para obter mais informações, consulte Gerenciar o acesso aos espaços de trabalho do Azure Machine Learning.

  • Para monitorizar um ponto de extremidade online gerido do Azure Machine Learning ou um ponto de extremidade online do Kubernetes:

  • Para monitorar um modelo implantado em um ponto de extremidade em lote do Azure Machine Learning ou implantado fora do Azure Machine Learning:

    • Um meio de coletar dados de produção e registrá-los como um ativo de dados do Azure Machine Learning
    • Um meio de atualizar o ativo de dados registrado continuamente para monitoramento do modelo
    • (Recomendado) Registro do modelo em um espaço de trabalho do Azure Machine Learning, para rastreamento de linhagem

Configurar um pool de computação do Spark sem servidor

Os trabalhos de monitoramento de modelo estão agendados para serem executados em pools de computação do Spark sem servidor. Os seguintes tipos de instância de Máquinas Virtuais do Azure são suportados:

  • Standard_E4s_v3
  • Standard_E8s_v3
  • Standard_E16s_v3
  • Standard_E32s_v3
  • Standard_E64s_v3

Para especificar um tipo de instância de máquina virtual ao seguir os procedimentos neste artigo, execute as seguintes etapas:

Ao usar a CLI do Azure para criar um monitor, você usa um arquivo de configuração YAML. Nesse arquivo, defina o create_monitor.compute.instance_type valor para o tipo que você deseja usar.

Configurar o monitoramento de modelo pronto para uso

Considere um cenário no qual você implanta seu modelo para produção em um ponto de extremidade online do Azure Machine Learning e habilita a coleta de dados no momento da implantação. Nesse caso, o Azure Machine Learning coleta dados de inferência de produção e os armazena automaticamente no Armazenamento de Blobs do Azure. Você pode usar o monitoramento de modelo do Azure Machine Learning para monitorar continuamente esses dados de inferência de produção.

Você pode usar a CLI do Azure, o SDK do Python ou o estúdio para uma configuração pronta para uso do monitoramento de modelo. A configuração de monitoramento de modelo pronta para uso fornece os seguintes recursos de monitoramento:

  • O Azure Machine Learning deteta automaticamente o ativo de dados de inferência de produção associado a uma implementação online do Azure Machine Learning e utiliza o ativo de dados para monitorização de modelos.
  • O ativo de dados de referência de comparação é definido como o mais recente ativo de dados de inferência de produção passada.
  • A configuração de monitoramento inclui e rastreia automaticamente os seguintes sinais de monitoramento integrados: desvio de dados, desvio de previsão e qualidade de dados. Para cada sinal de monitoramento, o Azure Machine Learning usa:
    • O ativo de dados de inferência de produção recente e passada é utilizado como o ativo de dados de referência para comparação.
    • Valores padrão inteligentes para métricas e limites.
  • Um trabalho de monitoramento é configurado para ser executado em um cronograma regular. Esse trabalho adquire sinais de monitoramento e avalia cada resultado métrico em relação ao limite correspondente. Por padrão, quando qualquer limite é excedido, o Azure Machine Learning envia um email de alerta para o usuário que configurou o monitor.

Para configurar o monitoramento de modelo pronto para uso, execute as etapas a seguir.

Na CLI do Azure, você usa az ml schedule para agendar um trabalho de monitoramento.

  1. Crie uma definição de monitoramento em um arquivo YAML. Para obter um exemplo de definição pronta a usar, consulte o seguinte código YAML, que também está disponível no repositório azureml-examples.

    Antes de usar essa definição, ajuste os valores para se adequarem ao seu ambiente. Para endpoint_deployment_id, use um valor no formato azureml:<endpoint-name>:<deployment-name>.

    # out-of-box-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: credit_default_model_monitoring
    display_name: Credit default model monitoring
    description: Credit default model monitoring setup with minimal configurations
    
    trigger:
      # perform model monitoring activity daily at 3:15am
      type: recurrence
      frequency: day #can be minute, hour, day, week, month
      interval: 1 # #every day
      schedule: 
        hours: 3 # at 3am
        minutes: 15 # at 15 mins after 3am
    
    create_monitor:
    
      compute: # specify a spark compute for monitoring job
        instance_type: standard_e4s_v3
        runtime_version: "3.4"
    
      monitoring_target: 
        ml_task: classification # model task type: [classification, regression, question_answering]
        endpoint_deployment_id: azureml:credit-default:main # azureml endpoint deployment id
    
      alert_notification: # emails to get alerts
        emails:
          - abc@example.com
          - def@example.com
    
  2. Execute o seguinte comando para criar o modelo:

    az ml schedule create -f ./out-of-box-monitoring.yaml
    

Configurar o monitoramento avançado de modelos

O Azure Machine Learning fornece muitos recursos para monitoramento contínuo de modelos. Para obter uma lista abrangente dessa funcionalidade, consulte Recursos de monitoramento de modelo. Em muitos casos, você precisa configurar o monitoramento de modelo que ofereça suporte a tarefas avançadas de monitoramento. A seção a seguir fornece alguns exemplos de monitoramento avançado:

  • O uso de vários sinais de monitoramento para uma visão ampla
  • O uso de dados históricos de treino de modelos ou dados de validação como ativo de dados de referência para comparação.
  • Monitorização das N características mais importantes e características individuais

Configurar a importância do recurso

A importância do recurso representa a importância relativa de cada recurso de entrada para a saída de um modelo. Por exemplo, a temperatura pode ser mais importante para a previsão de um modelo do que a elevação. Ao ativar a importância do recurso, você pode fornecer visibilidade sobre quais recursos você não deseja desviar ou ter problemas de qualidade de dados na produção.

Para ativar a importância das características com qualquer um dos seus sinais, como desvio de dados ou qualidade de dados, é necessário fornecer:

  • Seu ativo de dados de treinamento como o reference_data ativo de dados.
  • A reference_data.data_column_names.target_column propriedade, que é o nome da coluna de saída ou coluna de previsão do modelo.

Depois de ativar a importância das características, poderá ver uma importância das características para cada característica que monitora na Azure Machine Learning Studio.

Você pode ativar ou desativar alertas para cada sinal definindo a alert_enabled propriedade quando usar o SDK do Python ou a CLI do Azure.

Você pode usar a CLI do Azure, o SDK do Python ou o estúdio para configurar o monitoramento avançado de modelos.

  1. Crie uma definição de monitoramento em um arquivo YAML. Para obter um exemplo de definição avançada, consulte o seguinte código YAML, que também está disponível no repositório azureml-examples.

    Antes de usar essa definição, ajuste as seguintes configurações e quaisquer outras para atender às necessidades do seu ambiente:

    • Para endpoint_deployment_id, use um valor no formato azureml:<endpoint-name>:<deployment-name>.
    • Para path nas seções de dados de entrada de referência, use um valor no formato azureml:<reference-data-asset-name>:<version>.
    • Para target_column, use o nome da coluna de saída que contém os valores previstos pelo modelo, como DEFAULT_NEXT_MONTH.
    • Para features, liste os recursos como SEX, EDUCATIONe AGE que você deseja usar em um sinal de qualidade de dados avançado.
    • Em emails, liste os endereços de e-mail que você deseja usar para notificações.
    # advanced-model-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: fraud_detection_model_monitoring
    display_name: Fraud detection model monitoring
    description: Fraud detection model monitoring with advanced configurations
    
    trigger:
      # perform model monitoring activity daily at 3:15am
      type: recurrence
      frequency: day #can be minute, hour, day, week, month
      interval: 1 # #every day
      schedule: 
        hours: 3 # at 3am
        minutes: 15 # at 15 mins after 3am
    
    create_monitor:
    
      compute: 
        instance_type: standard_e4s_v3
        runtime_version: "3.4"
    
      monitoring_target:
        ml_task: classification
        endpoint_deployment_id: azureml:credit-default:main
      
      monitoring_signals:
        advanced_data_drift: # monitoring signal name, any user defined name works
          type: data_drift
          # reference_dataset is optional. By default referece_dataset is the production inference data associated with Azure Machine Learning online endpoint
          reference_data:
            input_data:
              path: azureml:credit-reference:1 # use training data as comparison reference dataset
              type: mltable
            data_context: training
            data_column_names:
              target_column: DEFAULT_NEXT_MONTH
          features: 
            top_n_feature_importance: 10 # monitor drift for top 10 features
          alert_enabled: true
          metric_thresholds:
            numerical:
              jensen_shannon_distance: 0.01
            categorical:
              pearsons_chi_squared_test: 0.02
        advanced_data_quality:
          type: data_quality
          # reference_dataset is optional. By default reference_dataset is the production inference data associated with Azure Machine Learning online endpoint
          reference_data:
            input_data:
              path: azureml:credit-reference:1
              type: mltable
            data_context: training
          features: # monitor data quality for 3 individual features only
            - SEX
            - EDUCATION
          alert_enabled: true
          metric_thresholds:
            numerical:
              null_value_rate: 0.05
            categorical:
              out_of_bounds_rate: 0.03
    
        feature_attribution_drift_signal:
          type: feature_attribution_drift
          # production_data: is not required input here
          # Please ensure Azure Machine Learning online endpoint is enabled to collected both model_inputs and model_outputs data
          # Azure Machine Learning model monitoring will automatically join both model_inputs and model_outputs data and used it for computation
          reference_data:
            input_data:
              path: azureml:credit-reference:1
              type: mltable
            data_context: training
            data_column_names:
              target_column: DEFAULT_NEXT_MONTH
          alert_enabled: true
          metric_thresholds:
            normalized_discounted_cumulative_gain: 0.9
      
      alert_notification:
        emails:
          - abc@example.com
          - def@example.com
    
  2. Execute o seguinte comando para criar o modelo:

    az ml schedule create -f ./advanced-model-monitoring.yaml
    

Configurar o monitoramento de desempenho do modelo

Ao usar o monitoramento de modelo do Azure Machine Learning, você pode acompanhar o desempenho de seus modelos em produção calculando suas métricas de desempenho. Atualmente, há suporte para as seguintes métricas de desempenho do modelo:

  • Para os modelos de classificação:
    • Precisão
    • Precisão
    • Recuperar
  • Para modelos de regressão:
    • Erro absoluto médio (MAE)
    • Erro quadrático médio (MPE)
    • Erro quadrático médio da raiz (RMSE)

Pré-requisitos para monitoramento de desempenho do modelo

  • Dados de saída para o modelo de produção (as previsões do modelo) com um ID exclusivo para cada linha. Se você usar o coletor de dados do Aprendizado de Máquina do Azure para coletar dados de produção, uma ID de correlação será fornecida para cada solicitação de inferência para você. O colecionador de dados também oferece a opção de registar o seu próprio ID único da sua aplicação.

    Nota

    Para o monitoramento de desempenho do modelo do Azure Machine Learning, recomendamos que você use o coletor de dados do Azure Machine Learning para registrar sua ID exclusiva em sua própria coluna.

  • Dados de referência (reais) com um ID exclusivo para cada linha. A ID exclusiva de uma determinada linha deve corresponder à ID exclusiva dos dados de saída do modelo para essa solicitação de inferência específica. Esse ID exclusivo é usado para unir seu ativo de dados de verdade terrestre com os dados de saída do modelo.

    Se você não tiver dados de verdade básica, não poderá executar o monitoramento de desempenho do modelo. Os dados de verdade básica são encontrados no nível do aplicativo, portanto, é sua responsabilidade coletá-los à medida que se tornam disponíveis. Você também deve manter um ativo de dados no Aprendizado de Máquina do Azure que contenha esses dados básicos de verdade.

  • (Opcional) Um ativo de dados tabulares pré-unido com dados de saída do modelo e dados de verdade de base já unidos.

Requisitos para monitoramento de desempenho do modelo quando você usa o coletor de dados

O Aprendizado de Máquina do Azure gera uma ID de correlação para você quando você atende aos seguintes critérios:

A ID de correlação gerada é incluída no objeto JSON registrado. No entanto, o coletor de dados agrupa linhas que são enviadas em curtos intervalos de tempo umas das outras. As linhas em lote estão dentro do mesmo objeto JSON. Dentro de cada objeto, todas as linhas têm a mesma ID de correlação.

Para diferenciar entre as linhas em um objeto JSON, o monitoramento de desempenho do modelo do Aprendizado de Máquina do Azure usa indexação para determinar a ordem das linhas dentro do objeto. Por exemplo, se um lote contiver três linhas e a ID de correlação for test, a primeira linha tem uma ID de test_0, a segunda linha tem uma ID de test_1, e a terceira linha tem uma ID de test_2. Para fazer corresponder os IDs exclusivos do ativo de dados de verdade de base com os IDs dos dados de saída do modelo de inferência de produção coletados, aplique um índice a cada ID de correlação adequadamente. Se o objeto JSON registado tiver apenas uma linha, use correlationid_0 como valor de correlationid.

Para evitar o uso dessa indexação, recomendamos que você registre seu ID exclusivo em sua própria coluna. Coloque essa coluna dentro do quadro de dados pandas que o coletor de dados do Azure Machine Learning registra. Em sua configuração de monitoramento de modelo, você pode especificar o nome desta coluna para unir os dados de saída do modelo com os dados de verdade básica. Desde que as IDs de cada linha em ambos os ativos de dados sejam as mesmas, o monitoramento de modelo do Azure Machine Learning pode executar o monitoramento de desempenho do modelo.

Exemplo de fluxo de trabalho para monitorar o desempenho do modelo

Para entender os conceitos associados ao monitoramento de desempenho do modelo, considere o fluxo de trabalho de exemplo a seguir. Ele se aplica a um cenário no qual você implanta um modelo para prever se as transações de cartão de crédito são fraudulentas:

  1. Configure sua implantação para usar o coletor de dados para coletar os dados de inferência de produção do modelo (dados de entrada e saída). Armazene os dados de saída em uma coluna chamada is_fraud.
  2. Para cada linha dos dados de inferência coletados, registre um ID exclusivo. A ID exclusiva pode vir do seu aplicativo ou você pode usar o valor que o correlationid Aprendizado de Máquina do Azure gera exclusivamente para cada objeto JSON conectado.
  3. Quando os dados reais (ou efetivos) is_fraud estiverem disponíveis, registe e mapeie cada linha para a mesma ID única registada para a linha correspondente nos dados de saída do modelo.
  4. Registre um ativo de dados no Azure Machine Learning e use-o para coletar e manter os dados de verdade is_fraud básicos.
  5. Crie um sinal de monitoramento de desempenho do modelo que use as colunas de ID exclusivas para unir os ativos de dados de inferência de produção e dados reais do modelo.
  6. Calcule as métricas de desempenho do modelo.

Depois de satisfazer os pré-requisitos para o monitoramento de desempenho do modelo, execute as seguintes etapas para configurar o monitoramento do modelo:

  1. Crie uma definição de monitoramento em um arquivo YAML. A especificação de exemplo a seguir define o monitoramento do modelo com dados de inferência de produção. Antes de usar essa definição, ajuste as seguintes configurações e quaisquer outras para atender às necessidades do seu ambiente:

    • Para endpoint_deployment_id, use um valor no formato azureml:<endpoint-name>:<deployment-name>.
    • Para cada path valor em uma seção de dados de entrada, use um valor no formato azureml:<data-asset-name>:<version>.
    • Para o prediction valor, use o nome da coluna de saída que contém os valores previstos pelo modelo.
    • Para o valor actual, use o nome da coluna verdade de base que contém os valores reais que o modelo tenta prever.
    • Para os correlation_id valores, use os nomes das colunas que são usadas para unir os dados de saída e os dados de verdade básica.
    • Em emails, liste os endereços de e-mail que você deseja usar para notificações.
    # model-performance-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: model_performance_monitoring
    display_name: Credit card fraud model performance
    description: Credit card fraud model performance
    
    trigger:
      type: recurrence
      frequency: day
      interval: 7 
      schedule: 
        hours: 10
        minutes: 15
    
    create_monitor:
      compute: 
        instance_type: standard_e8s_v3
        runtime_version: "3.3"
      monitoring_target:
        ml_task: classification
        endpoint_deployment_id: azureml:loan-approval-endpoint:loan-approval-deployment
    
      monitoring_signals:
        fraud_detection_model_performance: 
          type: model_performance 
          production_data:
            input_data:
              path: azureml:credit-default-main-model_outputs:1
              type: mltable
            data_column_names:
              prediction: is_fraud
              correlation_id: correlation_id
          reference_data:
            input_data:
              path: azureml:my_model_ground_truth_data:1
              type: mltable
            data_column_names:
              actual: is_fraud
              correlation_id: correlation_id
            data_context: ground_truth
          alert_enabled: true
          metric_thresholds: 
            tabular_classification:
              accuracy: 0.95
              precision: 0.8
      alert_notification: 
          emails: 
            - abc@example.com
    
  2. Execute o seguinte comando para criar o modelo:

    az ml schedule create -f ./model-performance-monitoring.yaml
    

Configurar a monitorização de modelos de dados de produção

Você também pode monitorar modelos implantados em endpoints de processamento em lotes do Azure Machine Learning ou implantados fora do Azure Machine Learning. Se você não tiver uma implantação, mas tiver dados de produção, poderá usá-los para executar o monitoramento contínuo do modelo. Para monitorar esses modelos, você deve ser capaz de:

  • Colete dados de inferência de produção de modelos implantados na produção.
  • Registre os dados de inferência de produção como um ativo de dados do Azure Machine Learning e garanta atualizações contínuas dos dados.
  • Forneça um componente de pré-processamento de dados personalizado e registre-o como um componente do Azure Machine Learning se você não usar o coletor de dados para coletar dados. Sem esse componente de pré-processamento de dados personalizado, o sistema de monitoramento de modelo do Azure Machine Learning não pode processar seus dados em um formulário tabular que ofereça suporte à janela de tempo.

Seu componente de pré-processamento personalizado deve ter as seguintes assinaturas de entrada e saída:

Entrada ou saída Nome da assinatura Tipo Descrição Valor de exemplo
entrada data_window_start literal, cadeia de caracteres A hora de início da janela de dados em formato ISO8601 2023-05-01T04:31:57.012Z
entrada data_window_end literal, string A hora de término da janela de dados em formato ISO8601 2023-05-01T04:31:57.012Z
entrada input_data uri_folder Os dados de inferência de produção coletados, que são registrados como um ativo de dados do Azure Machine Learning azureml:myproduction_inference_data:1
saída preprocessed_data MLTable Um ativo de dados tabulares que corresponde a um subconjunto do esquema de dados de referência

Para obter um exemplo de um componente de pré-processamento de dados personalizado, consulte custom_preprocessing no repositório do GitHub azuremml-examples.

Para obter instruções sobre como registrar um componente do Azure Machine Learning, consulte Registrar componente em seu espaço de trabalho.

Depois de registrar os dados de produção e o componente de pré-processamento, você pode configurar o monitoramento do modelo.

  1. Crie um arquivo YAML de definição de monitoramento semelhante ao seguinte. Antes de usar essa definição, ajuste as seguintes configurações e quaisquer outras para atender às necessidades do seu ambiente:

    • Para endpoint_deployment_id, use um valor no formato azureml:<endpoint-name>:<deployment-name>.
    • Para pre_processing_component, use um valor no formato azureml:<component-name>:<component-version>. Especifique a versão exata, como 1.0.0, não 1.
    • Para cada path, use um valor no formato azureml:<data-asset-name>:<version>.
    • Para o target_column valor, use o nome da coluna de saída que contém os valores previstos pelo modelo.
    • Em emails, liste os endereços de e-mail que você deseja usar para notificações.
    # model-monitoring-with-collected-data.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: fraud_detection_model_monitoring
    display_name: Fraud detection model monitoring
    description: Fraud detection model monitoring with your own production data
    
    trigger:
      # perform model monitoring activity daily at 3:15am
      type: recurrence
      frequency: day #can be minute, hour, day, week, month
      interval: 1 # #every day
      schedule: 
        hours: 3 # at 3am
        minutes: 15 # at 15 mins after 3am
    
    create_monitor:
      compute: 
        instance_type: standard_e4s_v3
        runtime_version: "3.4"
      monitoring_target:
        ml_task: classification
        endpoint_deployment_id: azureml:fraud-detection-endpoint:fraud-detection-deployment
      
      monitoring_signals:
    
        advanced_data_drift: # monitoring signal name, any user defined name works
          type: data_drift
          # define production dataset with your collected data
          production_data:
            input_data:
              path: azureml:my_production_inference_data_model_inputs:1  # your collected data is registered as Azure Machine Learning asset
              type: uri_folder
            data_context: model_inputs
            pre_processing_component: azureml:production_data_preprocessing:1.0.0
          reference_data:
            input_data:
              path: azureml:my_model_training_data:1 # use training data as comparison baseline
              type: mltable
            data_context: training
            data_column_names:
              target_column: is_fraud
          features: 
            top_n_feature_importance: 20 # monitor drift for top 20 features
          alert_enabled: true
          metric_thresholds:
            numerical:
              jensen_shannon_distance: 0.01
            categorical:
              pearsons_chi_squared_test: 0.02
    
        advanced_prediction_drift: # monitoring signal name, any user defined name works
          type: prediction_drift
          # define production dataset with your collected data
          production_data:
            input_data:
              path: azureml:my_production_inference_data_model_outputs:1  # your collected data is registered as Azure Machine Learning asset
              type: uri_folder
            data_context: model_outputs
            pre_processing_component: azureml:production_data_preprocessing:1.0.0
          reference_data:
            input_data:
              path: azureml:my_model_validation_data:1 # use training data as comparison reference dataset
              type: mltable
            data_context: validation
          alert_enabled: true
          metric_thresholds:
            categorical:
              pearsons_chi_squared_test: 0.02
      
      alert_notification:
        emails:
          - abc@example.com
          - def@example.com
    
  2. Execute o seguinte comando para criar o modelo.

    az ml schedule create -f ./model-monitoring-with-collected-data.yaml
    

Configure o monitoramento de modelos com sinais e métricas personalizados

Ao usar o monitoramento de modelo do Azure Machine Learning, você pode definir um sinal personalizado e implementar qualquer métrica de sua escolha para monitorar seu modelo. Você pode registrar seu sinal personalizado como um componente do Azure Machine Learning. Quando o trabalho de monitorização do modelo é executado na sua programação especificada, calcula as métricas definidas no seu sinal personalizado, da mesma forma que faz para o desvio de dados, o desvio de previsão e os sinais predefinidos de qualidade de dados.

Para configurar um sinal personalizado a ser usado para monitoramento de modelo, você deve primeiro definir o sinal personalizado e registrá-lo como um componente do Azure Machine Learning. O componente Azure Machine Learning deve ter as seguintes assinaturas de entrada e saída.

Assinatura de entrada do componente

O quadro de dados de entrada do componente deve conter os seguintes itens:

  • Uma mltable estrutura que contém os dados processados do componente de pré-processamento.
  • Qualquer número de literais, cada um representando uma métrica implementada como parte do componente de sinal personalizado. Por exemplo, se você implementar a std_deviation métrica, precisará de uma entrada para std_deviation_threshold. Geralmente, deve haver uma entrada com o nome <metric-name>_threshold por métrica.
Nome da assinatura Tipo Descrição Valor de exemplo
production_data MLTable Um ativo de dados tabulares que corresponde a um subconjunto do esquema de dados de referência
std_deviation_threshold literal, string O respetivo limiar para a métrica implementada 2

Assinatura de saída do componente

A porta de saída do componente deve ter a seguinte assinatura:

Nome da assinatura Tipo Descrição
signal_metrics MLTable A estrutura "mltable" que contém as métricas computadas. Para o esquema desta assinatura, consulte a próxima seção, esquema signal_metrics.

signal_metrics esquema

O quadro de dados de saída do componente deve conter quatro colunas: group, metric_name, metric_valuee threshold_value.

Nome da assinatura Tipo Descrição Valor de exemplo
group literal, string O agrupamento lógico de nível superior a ser aplicado à métrica personalizada MONTANTE DA TRANSAÇÃO
metric_name literal, cadeia de caracteres O nome da métrica personalizada desvio_padrão
metric_value numérico O valor da métrica personalizada 44,896.082
threshold_value numérico O limite para a métrica personalizada 2

A tabela a seguir mostra a saída de exemplo de um componente de sinal personalizado que calcula a std_deviation métrica:

grupo valor_métrico metric_name valor_limite
MONTANTE DA TRANSAÇÃO 44,896.082 desvio_padrão 2
LOCALHOUR 3.983 desvio_padrão 2
VALORTRANSAÇÃOUSD 54.004,902 desvio_padrão 2
DIGITALITEMCOUNT 7,238 desvio padrão 2
CONTAGEM DE ITENS FÍSICOS 5.509 desvio padrão 2

Para ver um exemplo de uma definição de componente de sinal personalizado e código de computação métrica, consulte custom_signal no repositório azureml-examples.

Para obter instruções sobre como registrar um componente do Azure Machine Learning, consulte Registrar componente em seu espaço de trabalho.

Depois de criar e registrar seu componente de sinal personalizado no Aprendizado de Máquina do Azure, execute as seguintes etapas para configurar o monitoramento de modelo:

  1. Crie uma definição de monitoramento em um arquivo YAML semelhante ao seguinte. Antes de usar essa definição, ajuste as seguintes configurações e quaisquer outras para atender às necessidades do seu ambiente:

    • Para component_id, use um valor no formato azureml:<custom-signal-name>:1.0.0.
    • Para path na seção de dados de entrada, use um valor no formato azureml:<production-data-asset-name>:<version>.
    • Para pre_processing_component:
      • Se você usar o coletor de dados para coletar seus dados, poderá omitir a pre_processing_component propriedade.
      • Se você não usar o coletor de dados e quiser usar um componente para pré-processar dados de produção, use um valor no formato azureml:<custom-preprocessor-name>:<custom-preprocessor-version>.
    • Em emails, liste os endereços de e-mail que você deseja usar para notificações.
    # custom-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: my-custom-signal
    trigger:
      type: recurrence
      frequency: day # Possible frequency values include "minute," "hour," "day," "week," and "month."
      interval: 7 # Monitoring runs every day when you use the value 1.
    create_monitor:
      compute:
        instance_type: "standard_e4s_v3"
        runtime_version: "3.3"
      monitoring_signals:
        customSignal:
          type: custom
          component_id: azureml:my_custom_signal:1.0.0
          input_data:
            production_data:
              input_data:
                type: uri_folder
                path: azureml:my_production_data:1
              data_context: test
              data_window:
                lookback_window_size: P30D
                lookback_window_offset: P7D
              pre_processing_component: azureml:custom_preprocessor:1.0.0
          metric_thresholds:
            - metric_name: std_deviation
              threshold: 2
      alert_notification:
        emails:
          - abc@example.com
    
  2. Execute o seguinte comando para criar o modelo:

    az ml schedule create -f ./custom-monitoring.yaml
    

Interpretar os resultados da monitorização

Depois de configurar o monitor de modelo e a primeira execução ser concluída, você poderá exibir os resultados no estúdio do Azure Machine Learning.

  1. No estúdio, em Gerenciar, selecione Monitoramento. Na página Monitoramento, selecione o nome do monitor modelo para ver a página de visão geral. Esta página mostra o modelo de monitoramento, o ponto de extremidade e a implantação. Ele também fornece informações detalhadas sobre sinais configurados. A imagem a seguir mostra uma página de visão geral de monitoramento que inclui desvio de dados e sinais de qualidade de dados.

    Captura de ecrã da página de monitorização de um modelo, com Monitorização realçada. As informações sobre as taxas de falha e sucesso são visíveis para dois sinais.

  2. Procure na seção Notificações da página de visão geral. Nesta seção, você pode ver o recurso para cada sinal que viola o limite configurado para sua respetiva métrica.

  3. Na seção Sinais , selecione data_drift para ver informações detalhadas sobre o sinal de desvio de dados. Na página de detalhes, você pode ver o valor da métrica de desvio de dados para cada recurso numérico e categórico que sua configuração de monitoramento inclui. Se o monitor tiver mais de uma execução, você verá uma linha de tendência para cada recurso.

    Captura de tela que mostra informações detalhadas sobre o sinal de desvio de dados, incluindo um gráfico de desvio das características dos dados e um detalhamento das características.

  4. Na página de detalhes, selecione o nome de um recurso individual. Abre-se uma vista detalhada que mostra a distribuição de produção em comparação com a distribuição de referência. Você também pode usar esta vista para rastrear desvios ao longo do tempo da funcionalidade.

    Captura de tela que mostra informações detalhadas sobre um recurso, incluindo um histograma e um gráfico que mostra desvio ao longo do tempo.

  5. Volte para a página de visão geral do monitoramento. Na seção Sinais , selecione data_quality para exibir informações detalhadas sobre esse sinal. Nesta página, você pode ver as taxas de valor nulo, taxas fora dos limites e taxas de erro de tipo de dados para cada recurso monitorado.

    Captura de tela que mostra informações detalhadas sobre o sinal de qualidade de dados, incluindo taxas de falha e aprovação e uma quebra de recurso.

A monitorização do modelo é um processo contínuo. Ao usar o monitoramento de modelo do Azure Machine Learning, você pode configurar vários sinais de monitoramento para obter uma visão ampla do desempenho de seus modelos em produção.

Integrar o monitoramento de modelo do Azure Machine Learning com a Grade de Eventos

Ao usar a Grade de Eventos, você pode configurar eventos gerados pelo monitoramento do modelo do Aprendizado de Máquina do Azure para acionar aplicativos, processos e fluxos de trabalho de CI/CD. Você pode consumir eventos por meio de vários manipuladores de eventos, como Hubs de Eventos do Azure, Azure Functions e Aplicativos Lógicos do Azure. Quando os monitores detetam desvios, você pode agir programaticamente, como executar um pipeline de aprendizado de máquina para treinar novamente um modelo e reimplantá-lo.

Para integrar o monitoramento de modelo do Azure Machine Learning com a Grade de Eventos, siga as etapas nas seções a seguir.

Criar um tópico do sistema

Se você não tiver um tópico do sistema de Grade de Eventos para usar para monitoramento, crie um. Para obter instruções, consulte Criar, exibir e gerenciar tópicos do sistema de Grade de Eventos no portal do Azure.

Criar uma subscrição de evento

  1. No portal do Azure, vá para seu espaço de trabalho do Azure Machine Learning.

  2. Selecione Eventos e, em seguida, selecione Subscrição de Eventos.

    Captura de tela que mostra a página Evento de um espaço de trabalho do Azure Machine Learning. Eventos e Subscrição de Eventos estão em destaque.

  3. Ao lado de Nome, insira um nome para sua assinatura de evento, como MonitoringEvent.

  4. Em Tipos de Evento, selecione apenas Executar status alterado.

    Aviso

    Selecione apenas status de execução alterado para tipo de evento. Não selecione Desvio de conjunto de dados detetado, que se aplica ao desvio de dados v1, não à monitorização de modelo do Azure Machine Learning.

  5. Selecione a guia Filtros . Em Filtros Avançados, selecione Adicionar novo filtro e insira os seguintes valores:

    • Em Chave, insira dados.RunTags.azureml_modelmonitor_threshold_breached.
    • Em Operador, selecione Texto contém.
    • Em Valor, enter falhou devido a um ou mais recursos violando limites métricos.

    Captura de ecrã da página Criar Descrição do Evento no portal do Azure. A guia Filtros e os valores em Chave, Operador e Valor são realçados.

    Quando você usa esse filtro, os eventos são gerados quando o status de execução de qualquer monitor em seu espaço de trabalho do Azure Machine Learning é alterado. O estado da execução pode mudar de concluído para falha ou de falha para concluído.

    Para filtrar no nível de monitoramento, selecione Adicionar novo filtro novamente e insira os seguintes valores:

    • Em Chave, insira dados.RunTags.azureml_modelmonitor_threshold_breached.
    • Em Operador, selecione String contém.
    • Em Valor, insira o nome de um sinal de monitor para o qual você deseja filtrar eventos, como credit_card_fraud_monitor_data_drift. O nome que introduzir tem de corresponder ao nome do seu sinal de monitorização. Qualquer sinal que você usar na filtragem deve ter um nome no formato <monitor-name>_<signal-description> que inclua o nome do monitor e uma descrição do sinal.
  6. Selecione o separador Noções básicas. Configure o ponto de extremidade que pretende que sirva como manipulador de eventos, tal como o Event Hubs.

  7. Selecione Criar para criar a assinatura do evento.

Ver eventos

Depois de capturar eventos, você pode visualizá-los na página de ponto de extremidade do manipulador de eventos:

Captura de ecrã de uma página de subscrição de eventos que utiliza um ponto de extremidade do Event Hubs e um tópico do workspace do Azure Machine Learning. Um gráfico é visível.

Você também pode exibir eventos na guia Métricas do Azure Monitor:

Captura de ecrã da página de métricas do Monitor. Um gráfico de linhas mostra um total de três eventos na hora passada.