Compartilhar via


Monitorar o desempenho dos modelos implantados na produção

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

Aprenda a usar o monitoramento de modelos do Azure Machine Learning para acompanhar continuamente o desempenho de modelos de machine learning em produção. O monitoramento de modelos fornece uma visão ampla dos sinais de monitoramento e alerta você sobre possíveis problemas. Ao monitorar sinais e métricas de desempenho dos modelos em produção, você pode avaliar de forma crítica os riscos associados e identificar pontos cegos que possam impactar negativamente seus negócios.

Neste artigo, você vai aprender a realizar as seguintes tarefas:

  • Configurar o monitoramento pronto para uso e avançado para modelos que estão implantados nos pontos de extremidade online do Azure Machine Learning
  • Monitorar métricas de desempenho para modelos em produção
  • Monitorar modelos implantados fora do Azure Machine Learning ou implantados em pontos de extremidade de lote do Azure Machine Learning
  • Configurar o monitoramento de modelos com sinais e métricas personalizados
  • Interpretar resultados do monitoramento
  • Integrar o monitoramento de modelo do Azure Machine Learning à Grade de Eventos do Azure

Pré-requisitos

Antes de seguir as etapas neste artigo, verifique se você tem os seguintes pré-requisitos:

  • O RBAC do Azure (controle de acesso baseado em função) do Azure é usado para permitir acesso a operações no Azure Machine Learning. Para executar as etapas neste artigo, sua conta de usuário deve receber a função de proprietário ou colaborador para o espaço de trabalho do Azure Machine Learning ou uma função personalizada que permita Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Para obter mais informações, consulte Gerenciar acesso a um workspace do Azure Machine Learning.

  • Para monitorar um modelo implantado em um ponto de extremidade online do Azure Machine Learning (ponto de extremidade online gerenciado ou ponto de extremidade online do Kubernetes) certifique-se de:

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

    • Ter uma forma de coletar dados de produção e registrá-los como um ativo de dados do Azure Machine Learning.
    • Atualizar o ativo de dados registrado continuamente para monitoramento de modelo.
    • (Recomendado) Registrar o modelo em um workspace do Azure Machine Learning para acompanhamento de linhagem.

Importante

Os trabalhos de monitoramento de modelo são agendados para serem executados em pools de computação do Spark sem servidor com suporte para os seguintes tipos de instância de VM: Standard_E4s_v3, Standard_E8s_v3, Standard_E16s_v3, Standard_E32s_v3 e Standard_E64s_v3. Você pode selecionar o tipo de instância de VM com a propriedade create_monitor.compute.instance_type na configuração YAML ou na lista suspensa no Estúdio do Azure Machine Learning.

Configurar o monitoramento de modelo pronto para uso

Digamos que você implante seu modelo para produção em um ponto de extremidade online do Azure Machine Learning e habilite a coleta de dados no momento da implantação. Nesse cenário, o Azure Machine Learning coleta dados de inferência de produção e os armazena automaticamente no Armazenamento de Blobs do Microsoft Azure. Em seguida, 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 obter 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 detecta automaticamente o conjunto de dados de inferência de produção associado a uma implantação online do Azure Machine Learning e usa o conjunto de dados para monitoramento de modelo.
  • O conjunto de dados de referência de comparação é definido como o conjunto de dados de inferência de produção anterior e recente.
  • A configuração de monitoramento inclui e rastreia automaticamente os sinais de monitoramento internos: descompasso de dados, descompasso de previsão e qualidade de dados. Para cada sinal de monitoramento, o Azure Machine Learning usa:
    • o conjunto de dados de inferência de produção anterior e recente é definido como o conjunto de dados de referência de comparação.
    • padrões inteligentes para métricas e limites.
  • Um trabalho de monitoramento é agendado para ser executado diariamente às 3h15 (para este exemplo) para adquirir sinais de monitoramento e avaliar cada resultado de métrica em relação ao limite correspondente. Por padrão, quando um limite é excedido, o Azure Machine Learning envia um email de alerta para o usuário que configurou o monitoramento.

O monitoramento de modelo do Azure Machine Learning usa az ml schedule para agendar um trabalho de monitoramento. É possível criar o monitoramento de modelo pronto para uso com o seguinte comando da CLI e a definição do YAML:

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

O YAML a seguir contém a definição do monitoramento de modelo pronto para uso.

# 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.3"

  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

Configurar monitoramento avançado de modelo

O Azure Machine Learning fornece muitos recursos para monitoramento contínuo de modelo. Confira Recursos de monitoramento de modelo para obter uma lista abrangente desses recursos. Em muitos casos, você precisa configurar o monitoramento de modelos com recursos avançados de monitoramento. Nas seções a seguir, você configurará o monitoramento de modelo com estes recursos:

  • Uso de vários sinais de monitoramento para uma exibição ampla.
  • Uso de dados históricos de treinamento de modelo ou dados de validação como o conjunto de dados de referência de comparação.
  • Monitoramento dos principais recursos N e dos recursos individuais mais importantes.

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, temperature pode ser mais importante para a previsão de um modelo em comparação com elevation. Habilitar a importância do recurso pode dar visibilidade sobre em quais recursos você não quer ter descompasso de dados ou ter problemas de qualidade de dados em produção.

Para habilitar a importância do recurso com qualquer um de seus sinais (como descompasso de dados ou qualidade de dados), é necessário fornecer:

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

Depois de habilitar a importância do recurso, você verá uma importância de recurso para cada recurso que está monitorando na interface do usuário do estúdio de monitoramento de modelo do Azure Machine Learning.

Você pode usar a CLI do Azure, o SDK do Python ou o estúdio para fazer a configuração avançada de monitoramento de modelo.

Criar a configuração de monitoramento de modelo avançada com o seguinte comando da CLI e definição do YAML:

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

O YAML a seguir contém a definição de monitoramento avançado de modelo.

# 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.3"

  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
      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
      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
      metric_thresholds:
        normalized_discounted_cumulative_gain: 0.9
  
  alert_notification:
    emails:
      - abc@example.com
      - def@example.com

Configurar o modelo de monitoramento de desempenho

O monitoramento de modelos do Azure Machine Learning permite que você acompanhe o desempenho de seus modelos em produção, calculando suas métricas de desempenho. No momento, há suporte para as seguintes métricas de desempenho do modelo:

Para modelos de classificação:

  • Precision
  • Precisão
  • Chamar de volta

Para modelos de regressão:

  • MAE (Erro Médio Absoluto)
  • EQM (erro quadrático médio)
  • REQM (Raiz do Erro Quadrático Médio)

Mais pré-requisitos para o monitoramento de desempenho do modelo

Você deve atender aos seguintes requisitos para configurar o sinal de desempenho do modelo:

  • Ter dados de saída para o modelo de produção (as previsões do modelo) com uma ID exclusiva para cada linha. Se você coletar dados de produção com o coletor de dados do Azure Machine Learning, uma correlation_id será fornecida para cada solicitação de inferência. Com o coletor de dados, você também tem a opção de registrar sua própria ID exclusiva a partir do seu aplicativo.

    Observação

    Para o monitoramento de desempenho de modelos do Azure Machine Learning, recomendamos que você registre sua ID exclusiva em uma coluna própria usando o coletor de dados do Azure Machine Learning.

  • Ter dados verdade fundamental (reais) com uma ID exclusiva para cada linha. A ID exclusiva de uma linha específica deve corresponder à ID exclusiva das saídas do modelo para essa solicitação de inferência específica. Essa ID exclusiva é usada para associar seu conjunto de dados de verdade fundamental (ground truth) com as saídas do modelo.

    Sem ter os dados de verdade fundamental, você não pode realizar o monitoramento de desempenho do modelo. Como os dados de verdade fundamental são encontrados no nível do aplicativo, cabe a você coletá-los à medida que ficam disponíveis. Você também deve manter um ativo de dados no Azure Machine Learning que contenha esses dados de verdade fundamental.

  • (Opcional) Ter um conjunto de dados tabulares pré-unido com saídas de modelo e dados de verdade fundamental já associados.

Monitorar os requisitos de desempenho do modelo ao usar o coletor de dados

Se você usar o coletor de dados do Azure Machine Learning para coletar dados de inferência de produção e não fornecer sua própria ID exclusiva para cada linha como uma coluna separada, uma correlationid será gerada automaticamente e será incluída no objeto JSON registrado. No entanto, o coletor de dados enviará linhas em lote em intervalos de tempo curtos entre si. As linhas agrupadas em lote estarão no mesmo objeto JSON e, portanto, terão o mesmo correlationid.

Para diferenciar as linhas dentro do mesmo objeto JSON, o monitoramento de desempenho de modelos do Azure Machine Learning usa a indexação para determinar a ordem das linhas no objeto JSON. Por exemplo, se três linhas forem agrupadas em lote, e a correlationid for test, a primeira linha terá uma ID de test_0, a segunda linha terá uma ID de test_1 e a terceira linha terá uma ID de test_2. Para garantir que seu conjunto de dados de verdade fundamental contenha IDs exclusivas que correspondam às saídas coletadas do modelo de inferência de produção, verifique se você indexa cada correlationid de forma adequada. Se o seu objeto JSON registrado tiver apenas uma linha, então a correlationid seria correlationid_0.

Para evitar o uso dessa indexação, recomendamos registre sua ID exclusiva em uma coluna própria no DataFrame do pandas que você está registrando com o coletor de dados do Azure Machine Learning. Depois, na configuração de monitoramento do seu modelo, especifique o nome dessa coluna para associar os dados de saída do modelo com seus dados de verdade fundamental. Contanto que as IDs de cada linha nos dois conjuntos de dados sejam iguais, o monitoramento de desempenho do modelo do Azure Machine Learning pode ser realizado.

Exemplo de fluxo de trabalho para monitorar o desempenho do modelo

Para entender os conceitos relacionados ao monitoramento de desempenho do modelo, veja esse exemplo de fluxo de trabalho. Imagine que você está implantando um modelo para prever se as transações de cartão de crédito são fraudulentas ou não,siga estas etapas para monitorar o desempenho do modelo:

  1. Configure sua implantação para coletar os dados de inferência de produção do modelo (dados de entrada e saída). Digamos que os dados de saída estão armazenados em uma coluna is_fraud.
  2. Para cada linha dos dados de inferência coletados, registre uma ID exclusiva. A ID exclusiva pode vir do seu aplicativo ou você pode usar a correlationid gerada exclusivamente pelo Azure Machine Learning para cada objeto JSON registrado.
  3. Mais tarde, quando os dados de verdade fundamental (ou reais) is_fraud estiverem disponíveis, eles também serão registrados e mapeados para a mesma ID exclusiva que foi registrada com as saídas do modelo.
  4. Esses dados de verdade fundamental is_fraud também são coletados, mantidos e registrados no Azure Machine Learning como um ativo de dados.
  5. Crie um sinal de monitoramento de desempenho de modelo que une os ativos de dados de verdade fundamental e de inferência de produção do modelo, usando as colunas de ID únicas.
  6. Por fim, calcule as métricas de desempenho do modelo.

Depois de atender aos pré-requisitos do monitoramento de desempenho de modelo, você pode configurar o monitoramento de modelo com o seguinte comando da CLI e a definição do YAML:

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

O YAML a seguir contém a definição de monitoramento de modelo com os dados de inferência de produção que você coletou.

$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:
        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: actuals
      alert_enabled: true
      metric_thresholds: 
        tabular_classification:
          accuracy: 0.95
          precision: 0.8
  alert_notification: 
      emails: 
        - abc@example.com

Configurar o monitoramento de modelo trazendo seus dados de produção para o Azure Machine Learning

Você também pode configurar o monitoramento de modelo para os modelos implantados em pontos de extremidade em lote do Azure Machine Learning ou implantados fora do Azure Machine Learning. Se você não tem uma implantação, mas tem dados de produção, é possível usar os dados para executar o monitoramento contínuo de modelos. Para monitorar esses modelos, é necessário:

  • Coletar dados de inferência de produção de modelos implantados em produção.
  • Registrar os dados de inferência de produção como um ativo de dados do Azure Machine Learning e garantir atualizações contínuas dos dados.
  • Fornecer um componente personalizado de pré-processamento de dados e registrá-lo como um componente do Azure Machine Learning.

Você deve fornecer um componente personalizado de pré-processamento de dados se os dados não forem coletados com o coletor de dados. Sem esse componente personalizado de pré-processamento de dados, o sistema de monitoramento de modelo do Azure Machine Learning não saberá como processar seus dados em formato de tabela com suporte para janelas de tempo.

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

Entrada/Saída Nome da assinatura Tipo Descrição Valor de exemplo
input data_window_start literal, cadeia de caracteres hora de início da janela de dados no formato ISO8601. 2023-05-01T04:31:57.012Z
input data_window_end literal, cadeia de caracteres hora de término da janela de dados no formato ISO8601. 2023-05-01T04:31:57.012Z
input 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
output preprocessed_data mltable Um conjunto de dados tabular, que corresponde a um subconjunto do esquema de dados de referência.

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

Depois de atender aos requisitos anteriores, configure o monitoramento de modelo com o seguinte comando da CLI e a definição do YAML:

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

O YAML a seguir contém a definição de monitoramento de modelo com os dados de inferência de produção que você coletou.

# 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.3"
  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
      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
      metric_thresholds:
        numberical:
          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
      reference_data:
        input_data:
          path: azureml:my_model_validation_data:1 # use training data as comparison reference dataset
          type: mltable
        data_context: validation
      metric_thresholds:
        categorical:
          pearsons_chi_squared_test: 0.02
  
  alert_notification:
    emails:
      - abc@example.com
      - def@example.com

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

Com o monitoramento de modelo do Azure Machine Learning, você pode definir um sinal personalizado e implementar uma métrica de sua escolha para monitorar seu modelo. Você pode registrar esse sinal personalizado como um componente do Azure Machine Learning. Quando o trabalho de monitoramento de modelo do Azure Machine Learning é executado de acordo com a programação especificada, ele calcula as métricas definidas do seu sinal personalizado, da mesma forma que faz para os sinais predefinidos (descompasso de dados, descompasso de previsão e qualidade dos dados).

Para configurar um sinal personalizado a ser usado para monitoramento de modelo, primeiro defina o sinal personalizado e registre-o como um componente do Azure Machine Learning. O componente do Azure Machine Learning deve ter estas assinaturas de entrada e saída:

Assinatura de entrada do componente

O DataFrame de entrada do componente deve conter os seguintes itens:

  • Um mltable com os dados processados do componente de pré-processamento
  • Todo número de literais, cada um representando uma métrica implementada como parte do componente do sinal personalizado. Por exemplo, se você implementou a métrica, std_deviation, precisará de uma entrada para std_deviation_threshold. Em geral, deve haver uma entrada por métrica com o nome <metric_name>_threshold.
Nome da assinatura Tipo Descrição Valor de exemplo
production_data MLTable Um conjunto de dados tabular correspondente a um subconjunto do esquema de dados de referência.
std_deviation_threshold literal, cadeia de caracteres Respectivo limite para a métrica implementada. 2

Assinatura de saída do componente

A porta de saída do componente deve ter a assinatura a seguir.

Nome da assinatura Tipo Descrição
signal_metrics mltable A tabela ml que contém as métricas computadas. O esquema é definido na próxima seção signal_metrics esquema.

signal_metrics schema

O DataFrame de saída do componente deve conter quatro colunas: group, metric_name, metric_value e threshold_value.

Nome da assinatura Tipo Descrição Valor de exemplo
grupo literal, cadeia de caracteres Agrupamento lógico de nível superior a ser aplicado a essa métrica personalizada. TRANSACTIONAMOUNT
metric_name literal, cadeia de caracteres O nome da métrica personalizada. std_deviation
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 um exemplo de saída de um componente de sinal personalizado que computa a métrica std_deviation:

grupo metric_value metric_name threshold_value
TRANSACTIONAMOUNT 44,896.082 std_deviation 2
LOCALHOUR 3.983 std_deviation 2
TRANSACTIONAMOUNTUSD 54,004.902 std_deviation 2
DIGITALITEMCOUNT 7.238 std_deviation 2
PHYSICALITEMCOUNT 5.509 std_deviation 2

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

Depois de atender aos requisitos de uso de sinais e métricas personalizados, você pode configurar o monitoramento de modelo com o seguinte comando da CLI e definição de YAML:

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

O YAML a seguir contém a definição de monitoramento de modelo com um sinal personalizado. Alguns itens a serem notados sobre o código:

  • Ele considera que você já criou e registrou seu componente com a definição de sinal personalizado no Azure Machine Learning.
  • A component_id do componente de sinal personalizado registrado é azureml:my_custom_signal:1.0.0.
  • Se você tiver coletado seus dados com o coletor de dados, poderá omitir a propriedade pre_processing_component. Se quiser usar um componente de pré-processamento para pré-processar dados de produção não coletados pelo coletor de dados, será possível especificá-los.
# custom-monitoring.yaml
$schema:  http://azureml/sdk-2-0/Schedule.json
name: my-custom-signal
trigger:
  type: recurrence
  frequency: day # can be minute, hour, day, week, month
  interval: 7 # #every day
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

Interpretar resultados do monitoramento

Depois de configurar o monitoramento de modelo e após a conclusão da primeira execução, você poderá retornar para a guia Monitoramento no Estúdio do Azure Machine Learning para exibir os resultados.

  • Na exibição de Monitoramento principal, selecione o nome do monitoramento de modelo para ver a página visão geral do Monitoramento. Esta página mostra o modelo, o ponto de extremidade e a implantação correspondentes, assim como os detalhes dos sinais configurados. A imagem a seguir mostra um painel de monitoramento que inclui sinais de descompasso de dados e de qualidade de dados. Dependendo dos sinais de monitoramento configurados, o painel pode parecer diferente.

    Captura de tela que mostra um painel de monitoramento.

  • Examine a seção Notificações do painel para ver em cada sinal quais recursos violaram o limite configurado para suas respectivas métricas:

  • Selecione o data_drift e acesse a página de detalhes de descompasso de dados. Na página de detalhes, é possível exibir o valor da métrica de descompasso de dados para cada recurso numérico e categórico incluído na configuração de monitoramento. Quando o monitoramento tiver mais de uma execução, você verá uma linha de tendência para cada recurso.

    Captura de tela que mostra a página de detalhes do sinal de descompasso de dados.

  • Para exibir um recurso individual em detalhes, selecione o nome do recurso para exibir a distribuição de produção em comparação com a distribuição de referência. Essa exibição também permite acompanhar o descompasso ao longo do tempo desse recurso específico.

    Captura de tela que mostra os detalhes do descompasso de dados para um recurso individual.

  • Retorne ao painel de monitoramento e selecione data_quality para exibir a página do sinal de qualidade de dados. Nesta página, é possível exibir as taxas de valor nulo, as taxas fora dos limites e as taxas de erro de tipo de dados de cada recurso que você está monitorando.

    Captura de tela que mostra a página de detalhes do sinal de qualidade dos dados.

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

Integrar o monitoramento de modelo do Azure Machine Learning à Grade de Eventos do Azure

Você pode usar eventos gerados pelo monitoramento de modelo do Azure Machine Learning para configurar aplicativos, processos ou fluxos de trabalho de CI/CD controlados por eventos com a Grade de Eventos do Azure. Você pode consumir eventos por meio de vários manipuladores de eventos, como Hubs de Eventos do Azure, funções e aplicativos lógicos do Azure. Com base no descompasso detectado por seus monitores, você pode executar ações programaticamente, como configurando um pipeline de aprendizado de máquina para treinar novamente um modelo e reimplantá-lo.

Para começar a integrar o monitoramento de modelo do Azure Machine Learning à Grade de Eventos:

  1. Siga as etapas em Configurar no portal do Azure. Dê um nome à sua Assinatura de evento, como MonitoringEvent, e selecione apenas a caixa Executar status alterado em Tipos de evento.

    Aviso

    Certifique-se de selecionar Executar status alterado para o tipo de evento. Não selecione Descompasso do conjunto de dados detectado, pois ele se aplica ao descompasso de dados v1, em vez do monitoramento de modelo do Azure Machine Learning.

  2. Siga as etapas em Filtrar e assinar eventos para configurar a filtragem de eventos para seu cenário. Navegue até a guia Filtros e adicione a seguinte chave, operador e valor em Filtros avançados:

    • Chave: data.RunTags.azureml_modelmonitor_threshold_breached
    • Valor: falhou devido a um ou mais recursos que violam os limites de métrica
    • Operador: a cadeia de caracteres contém

    Com esse filtro, os eventos são gerados quando o status da execução de um monitoramento em seu workspace do Azure Machine Learning é alterado (de Concluído para Com falha ou o contrário).

  3. Para filtrar no nível do monitoramento, use a seguinte chave, operador e valor em Filtros avançados:

    • Chave: data.RunTags.azureml_modelmonitor_threshold_breached
    • Valor: your_monitor_name_signal_name
    • Operador: a cadeia de caracteres contém

    Verifique se esse your_monitor_name_signal_name é o nome de um sinal no monitoramento específico para o qual você quer filtrar eventos. Por exemplo, credit_card_fraud_monitor_data_drift. Para que esse filtro funcione, essa cadeia de caracteres deve corresponder ao nome do sinal de monitoramento. Você deve nomear o sinal com o nome do monitoramento e o nome do sinal nesse caso.

  4. Quando concluir a configuração da Assinatura do evento, selecione o ponto de extremidade desejado para servir como manipulador de eventos, como o Hubs de Eventos do Azure.

  5. Depois que os eventos forem capturados, você poderá exibi-los na página do ponto de extremidade:

    Captura de tela que mostra os eventos exibidos na página do ponto de extremidade.

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

Captura de tela que mostra eventos exibidos na guia Métricas do Azure Monitor.