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:
A CLI do Azure e a
ml
extensão na CLI do Azure. Para obter mais informações, confira Instalar, configurar e usar a CLI (v2).Importante
Os exemplos de CLI neste artigo pressupõem que você esteja usando o shell Bash (ou compatível). Por exemplo, de um sistema Linux ou Subsistema do Windows para Linux.
Um Workspace do Azure Machine Learning. Se você não tiver um, use as etapas em Instalar, configurar e usar a CLI (v2) para criar.
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:
Ter um modelo já implantado em um ponto de extremidade online do Azure Machine Learning. Ter suporte para ponto de extremidade online gerenciado e ponto de extremidade online do Kubernetes. Se você não tiver um modelo implantado em um ponto de extremidade online do Azure Machine Learning, confira Implantar e pontuar um modelo de machine learning usando um ponto de extremidade online.
Habilitar a coleta de dados para a implantação do modelo. Você pode habilitar a coleta de dados durante a etapa de implantação de pontos de extremidade online do Azure Machine Learning. Para obter mais informações, confira Coletar dados de produção de modelos implantados em um ponto de extremidade em tempo real.
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:
- 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
. - 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. - 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. - Esses dados de verdade fundamental
is_fraud
também são coletados, mantidos e registrados no Azure Machine Learning como um ativo de dados. - 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.
- 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 parastd_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.
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.
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.
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.
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:
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.
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).
- Chave:
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.- Chave:
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.
Depois que os eventos forem capturados, você poderá exibi-los na página do ponto de extremidade:
Você também pode exibir eventos na guia Métricas do Azure Monitor: