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)

No Azure Machine Learning, você pode usar o monitoramento de modelos 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. Ele também alerta você para possíveis 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 sua empresa.

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

  • Configurar o monitoramento avançado e pronto para uso 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 sinais e métricas personalizados para usar no monitoramento de modelos
  • Interpretar resultados do monitoramento
  • Integrar o monitoramento de modelo do Azure Machine Learning à Grade de Eventos do Azure

Pré-requisitos

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

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

  • Um Workspace do Azure Machine Learning. Para obter instruções para criar um workspace, consulte Configurar.

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

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

    Para obter mais informações, consulte Gerenciar acesso a workspaces do Azure Machine Learning.

  • Para monitorar um ponto de extremidade online gerenciado pelo 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
    • Significa atualizar o ativo de dados registrado continuamente para monitoramento de modelo
    • (Recomendado) Registro do modelo em um workspace do Azure Machine Learning para acompanhamento de linhagem

Configurar um pool de computação spark sem servidor

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

  • 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 como o tipo que você deseja usar.

Configurar o monitoramento de modelo pronto para uso

Considere um cenário no qual você implanta seu modelo em produção em um endpoint 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 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 ativo de dados de inferência de produção associado a uma implantação online do Azure Machine Learning e usa o ativo de dados para monitoramento de modelos.
  • O ativo de dados de referência de comparação é definido como o ativo de dados de inferência de produção recente e anterior.
  • A configuração de monitoramento inclui e rastreia automaticamente os seguintes sinais de monitoramento internos: desvio de dados, desvio de previsão e qualidade de dados. Para cada sinal de monitoramento, o Azure Machine Learning usa:
    • Os ativos de dados de inferência de produção recentes e passados são usados como ativos 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 uma programação regular. Esse trabalho adquire sinais de monitoramento e avalia cada resultado de métrica 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 modelos pronto para uso, siga as etapas abaixo.

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 uma definição pronta para uso, consulte o código YAML a seguir, que também está disponível no repositório azureml-examples.

    Antes de usar essa definição, ajuste os valores para se ajustarem 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 monitoramento avançado de modelo

O Azure Machine Learning fornece muitos recursos para monitoramento contínuo de modelo. Para obter uma lista abrangente dessa funcionalidade, consulte Recursos de monitoramento de modelo. Em muitos casos, você precisa configurar o monitoramento de modelo que dá suporte a tarefas de monitoramento avançadas. 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 de treinamento de modelo histórico ou dados de validação como referência de dados para comparação
  • Monitoramento das N funcionalidades mais importantes e funcionalidades individuais

Configurar 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 das características, você pode fornecer visibilidade sobre quais características você não deseja que desviem ou tenham problemas de qualidade de dados na produção.

Para habilitar a importância do recurso com qualquer um de seus sinais, como descompasso de dados ou qualidade de dados, você precisa fornecer:

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

Depois de ativar a importância do recurso, você verá uma importância de recurso para cada recurso que você monitora no Azure Machine Learning Studio.

Você pode ativar ou desativar alertas para cada sinal definindo a alert_enabled propriedade ao 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 uma definição avançada de exemplo, 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 todas as 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 valores que o modelo prevê, 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 email 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 modelo de monitoramento de desempenho

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. No momento, há suporte para as seguintes métricas de desempenho do modelo:

  • Para modelos de classificação:
    • Precisão
    • Precisão
    • Recuperação
  • Para modelos de regressão:
    • Erro médio absoluto (MAE)
    • Erro quadrado médio (MSE)
    • Raiz do erro quadrático médio (REQM)

Pré-requisitos para monitoramento de desempenho do modelo

  • Dados de saída para o modelo de produção (previsões do modelo) com uma ID exclusiva para cada linha. Se você usar o coletor de dados do Azure Machine Learning para coletar dados de produção, uma ID de correlação será fornecida para cada solicitação de inferência para você. O coletor de dados também oferece a opção de registrar sua própria ID exclusiva no aplicativo.

    Observação

    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 verdade básica (reais) com uma ID exclusiva 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. Essa ID exclusiva é usada para unir seu ativo de dados de verdade fundamental (ground truth) com os dados de saída do modelo.

    Se você não tiver dados de verdade fundamental, não poderá realizar o monitoramento de desempenho do modelo. Dados de verdade básica são encontrados no nível do aplicativo, portanto, é sua responsabilidade recolhê-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) Um ativo de dados tabular pré-unidos com os dados de saída do modelo e os dados de verdade fundamental já unidos.

Requisitos para monitoramento de desempenho de modelo ao usar o coletor de dados

O Azure Machine Learning gera uma ID de correlação para você quando você atende aos seguintes critérios:

A ID de correlação gerada está incluída no objeto JSON registrado. No entanto, o coletor de dados agrupa linhas que são enviadas em intervalos de tempo curtos entre si. As linhas em lote se enquadram no mesmo objeto JSON. Em 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 Azure Machine Learning usa a indexação para determinar a ordem das linhas dentro do objeto. Por exemplo, se um lote contém três linhas e a ID de correlação é 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 corresponder as IDs exclusivas do ativo de dados de verdade fundamental com as IDs dos dados de saída do modelo de inferência de produção coletados, aplique um índice adequado a cada ID de correlação. Se o objeto JSON registrado tiver apenas uma linha, use correlationid_0 como o valor correlationid.

Para evitar o uso dessa indexação, recomendamos que você registre sua ID exclusiva em sua própria coluna. Coloque essa coluna dentro do quadro de dados pandas que o coletor de dados do Azure Machine Learning registra. Na configuração de monitoramento do seu modelo, especifique o nome dessa coluna para unir os dados de saída do modelo com seus dados de verdade fundamental. Desde que as IDs de cada linha em ambos os ativos de dados sejam iguais, o monitoramento do 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 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 uma ID exclusiva. A ID exclusiva pode vir do aplicativo ou você pode usar o correlationid valor gerado exclusivamente pelo Azure Machine Learning para cada objeto JSON registrado.
  3. Quando os dados de verdade fundamental (ou reais) is_fraud estiverem disponíveis, registre e mapeie cada linha à mesma ID exclusiva registrada 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 fundamental is_fraud.
  5. Crie um sinal de monitoramento de desempenho do modelo que use as colunas de ID exclusiva para unir os dados de inferência de produção com os ativos de dados de verdade fundamental.
  6. Compute as métricas de desempenho do modelo.

Depois de atender aos pré-requisitos para o monitoramento de desempenho do modelo, execute as seguintes etapas para configurar o monitoramento de modelos:

  1. Crie uma definição de monitoramento em um arquivo YAML. A especificação de exemplo a seguir define o monitoramento de modelo com dados de inferência de produção. Antes de usar essa definição, ajuste as seguintes configurações e todas as 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 valores que o modelo prevê.
    • Para o actual valor, use o nome da coluna ground truth que contém os valores reais que o modelo tenta prever.
    • Para os valores de correlation_id, use os nomes das colunas que são usadas para unir os dados de saída e os dados de verdade fundamental.
    • Em emails, liste os endereços de email 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 o monitoramento de modelos de dados de produção

Você também pode monitorar modelos implantados em pontos de extremidade em lote 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á usar os dados para executar o monitoramento contínuo do modelo. 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.
  • 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 modelos do Azure Machine Learning não pode processar seus dados em um formulário tabular que dê suporte a janelas de tempo.

O 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 no formato ISO8601 2023-05-01T04:31:57.012Z
entrada data_window_end literal, cadeia de caracteres O hora de término da janela de dados no 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 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.

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

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

  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 todas as 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 valores que o modelo prevê.
    • Em emails, liste os endereços de email 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 comando a seguir para criar o modelo.

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

Configurar o monitoramento de modelo com sinais e métricas personalizadas

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 você executa o trabalho de monitoramento de modelo conforme a programação definida, ele calcula as métricas do seu sinal personalizado da mesma forma que calcula para os sinais predefinidos, como 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 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.
  • Todo número de literais, cada um representando uma métrica implementada como parte do componente do sinal personalizado. Por exemplo, se você implementar a std_deviation métrica, precisará de uma entrada para std_deviation_threshold. Em geral, 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 tabular que corresponde a um subconjunto do esquema de dados de referência
std_deviation_threshold literal, cadeia de caracteres O respectivo limite 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 obter o esquema dessa assinatura, consulte a próxima seção, signal_metrics esquema.

esquema de métricas de sinal

O quadro de dados de saída do componente deve conter quatro colunas: group, , metric_namee metric_valuethreshold_value.

Nome da assinatura Tipo Descrição Valor de exemplo
group literal, cadeia de caracteres O agrupamento lógico de nível superior a ser aplicado à 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 o exemplo de saída de um componente de sinal personalizado que calcula a std_deviation métrica:

agrupar valor_métrico metric_name valor_limiar
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 ver um exemplo de uma definição de componente de sinal personalizado e um código de computação de métrica, consulte custom_signal no repositório azureml-examples.

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

Depois de criar e registrar seu componente de sinal personalizado no Azure Machine Learning, 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 todas as outras para atender às necessidades do seu ambiente:

    • Para component_id, use um valor no formato azureml:<custom-signal-name>:1.0.0.
    • Na path 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 email 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 resultados do monitoramento

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

  1. No estúdio, em Gerenciar, selecione Monitoramento. Na página Monitoramento, selecione o nome do monitor de 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 do monitoramento que inclui desvio de dados e sinais de qualidade de dados.

    Captura de tela da página de monitoramento de um modelo, com Monitoramento destacado. Informações sobre taxas de falha e sucesso são visíveis para dois sinais.

  2. Examine a 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 respectiva métrica.

  3. Na seção Sinais , selecione data_drift para ver informações detalhadas sobre o sinal de descompasso de dados. Na página de detalhes, você pode ver o valor da métrica de descompasso 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 de dados das características e uma análise detalhada das características.

  4. Na página de detalhes, selecione o nome de um recurso individual. Uma exibição detalhada é aberta que mostra a distribuição de produção em comparação com a distribuição de referência. Você também pode usar esse modo de exibição para acompanhar o descompasso ao longo do tempo do recurso.

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

  5. Retorne à 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, as taxas fora dos limites e as taxas de erro de tipo de dados para cada recurso que você monitora.

    Captura de tela que mostra informações detalhadas sobre o sinal de qualidade dos dados, incluindo taxas de falha e sucesso, além do detalhamento por recurso.

O monitoramento de modelo é um processo contínuo. Ao usar o monitoramento de modelos 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 modelos 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 Azure Machine Learning para disparar 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 detectam descompasso, você pode agir programaticamente, como executando um pipeline de machine learning para treinar novamente um modelo e reimplantá-lo.

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

Criar um tópico do sistema

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

Criar uma assinatura de evento

  1. No portal do Azure, acesse o workspace do Azure Machine Learning.

  2. Selecione Eventos e, em seguida, selecione Assinatura de evento.

    Captura de tela que mostra a página de Eventos de um workspace do Azure Machine Learning. Eventos e Assinatura de Eventos são realçados.

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

  4. Em Tipos de Evento, selecione apenas Status de execução modificado.

    Aviso

    Selecione apenas Status da execução alterado como tipo de evento. Não selecione Descompasso de conjunto de dados detectado, pois isso se aplica ao descompasso de dados v1, e não ao monitoramento de modelos 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 data.RunTags.azureml_modelmonitor_threshold_breached.
    • Em Operador, selecione A cadeia de caracteres contém.
    • Em Valor, o enter falhou devido a um ou mais recursos que violam os limites de métrica.

    Captura de tela 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 no workspace do Azure Machine Learning é alterado. O status da execução pode mudar de "Concluído" "Falhou" ou de "Falhou" para "Concluído".

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

    • Em Chave, insira data.RunTags.azureml_modelmonitor_threshold_breached.
    • Em Operador, selecione A cadeia de caracteres 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 inserido deve corresponder ao nome do sinal de monitoramento. Qualquer sinal usado 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 a guia Noções Básicas. Configure o ponto de extremidade que você usará como manipulador de eventos, como Hubs de Eventos.

  7. Selecione Criar para criar a assinatura de evento.

Exibir eventos

Depois de capturar os eventos, você poderá exibi-los na página do ponto de extremidade do manipulador de eventos:

Captura de tela de uma página de assinatura de evento que usa um ponto de extremidade dos Hubs de Eventos e um tópico de workspace do Azure Machine Learning. Um gráfico está visível.

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

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