Esta página descreve como usar o Vertex AI Model Monitoring com a Vertex AI explicável para detetar a assimetria e a deriva das atribuições de funcionalidades das funcionalidades de entrada categóricas e numéricas.
Vista geral da monitorização baseada na atribuição de funcionalidades
As atribuições de funcionalidades indicam a contribuição de cada funcionalidade no seu modelo para as previsões de cada instância específica. Quando pede previsões, recebe valores previstos conforme adequado para o seu modelo. Quando pede explicações, recebe as previsões juntamente com informações de atribuição de funcionalidades.
As pontuações de atribuição são proporcionais à contribuição da funcionalidade para a previsão de um modelo. Normalmente, são assinados, indicando se uma funcionalidade ajuda a aumentar ou diminuir a previsão. As atribuições em todas as funcionalidades têm de corresponder à pontuação de previsão do modelo.
Ao monitorizar as atribuições de funcionalidades, a monitorização de modelos acompanha as alterações nas contribuições de uma funcionalidade para as previsões de um modelo ao longo do tempo. Uma alteração na pontuação de atribuição de uma funcionalidade principal indica frequentemente que a funcionalidade foi alterada de uma forma que pode afetar a precisão das previsões do modelo.
Para ver informações sobre como é calculada uma pontuação de atribuição de funcionalidades, consulte o artigo Métodos de atribuição de funcionalidades.
Feature attribution training-serving skew and prediction drift
Quando cria uma tarefa de monitorização para um modelo com a Vertex AI explicável ativada, a Model Monitoring monitoriza a distorção ou a deriva para as distribuições de funcionalidades e as atribuições de funcionalidades. Para ver informações sobre a distorção e a variação da distribuição de caraterísticas, consulte o artigo Introdução ao Vertex AI Model Monitoring.
Para atribuições de funcionalidades:
A divergência entre a preparação e a publicação ocorre quando a pontuação de atribuição de uma funcionalidade na produção se desvia da pontuação de atribuição da funcionalidade nos dados de preparação originais.
A deriva da previsão ocorre quando a pontuação de atribuição de uma funcionalidade na produção muda significativamente ao longo do tempo.
Pode ativar a deteção de desequilíbrios se fornecer o conjunto de dados de preparação original para o seu modelo. Caso contrário, deve ativar a deteção de desvio. Também pode ativar a deteção de desvio e deriva.
Pré-requisitos
Para usar o Model Monitoring com o Vertex Explainable AI, conclua o seguinte:
Se estiver a ativar a deteção de desequilíbrios, carregue os dados de preparação ou o resultado de uma tarefa de explicação em lote para o seu conjunto de dados de preparação para o Cloud Storage ou o BigQuery. Obtenha o link URI para os dados. Para a deteção de desvio, não são necessários dados de preparação nem uma base de referência de explicação.
Ter um modelo disponível no Vertex AI que seja do tipo AutoML tabular ou preparação personalizada tabular importada:
Um modelo tabular do AutoML tem a Vertex Explainable AI configurada automaticamente, pelo que pode avançar para ativar a deteção de desvio ou deriva. Tenha em atenção que apenas são suportados modelos de classificação e regressão.
Um modelo preparado de forma personalizada importado tem de ser configurado para a Vertex AI explicável quando cria, importa ou implementa o modelo.
Configure o seu modelo para usar a Vertex AI explicável quando criar, importar ou implementar o modelo. O campo
ExplanationSpec.ExplanationParameters
tem de ser preenchido para o seu modelo.Opcional: para modelos personalizados, carregue o esquema da instância de análise do seu modelo para o Cloud Storage. A monitorização de modelos requer o esquema para iniciar o processo de monitorização e calcular a distribuição de base para a deteção de desvios. Se não fornecer o esquema durante a criação da tarefa, a tarefa permanece num estado pendente até que a monitorização de modelos possa analisar automaticamente o esquema dos primeiros 1000 pedidos de previsão que o modelo recebe.
Ative a deteção de desvio ou deriva
Para configurar a deteção de distorção ou a deteção de desvio, crie uma tarefa de monitorização da implementação do modelo:
Consola
Para criar uma tarefa de monitorização da implementação de modelos através da Google Cloud consola, crie um ponto final:
Na Google Cloud consola, aceda à página Vertex AI Endpoints.
Clique em Criar ponto final.
No painel Novo ponto final, atribua um nome ao ponto final e defina uma região.
Clique em Continuar.
No campo Nome do modelo, selecione um modelo de AutoML tabular ou de preparação personalizado importado.
No campo Versão, selecione uma versão para o seu modelo.
Clique em Continuar.
No painel Monitorização de modelos, certifique-se de que a opção Ativar monitorização de modelos para este ponto final está ativada. Todas as definições de monitorização que configurar aplicam-se a todos os modelos implementados no ponto final.
Introduza um nome a apresentar da tarefa de monitorização.
Introduza um Período de monitorização.
Para Emails de notificação, introduza um ou mais endereços de email separados por vírgulas para receber alertas quando um modelo exceder um limite de alerta.
(Opcional) Para Canais de notificação, selecione os canais do Cloud Monitoring para receber alertas quando um modelo exceder um limite de alerta. Pode selecionar canais do Cloud Monitoring existentes ou criar um novo clicando em Gerir canais de notificação. A consola suporta canais de notificação do PagerDuty, Slack e Pub/Sub.
Introduza uma Taxa de amostragem.
Opcional: introduza o Esquema de entrada de previsão e o Esquema de entrada de análise.
Clique em Continuar. O painel Objetivo de monitorização é aberto com opções para a deteção de desvio ou deriva:
Deteção de desvio
- Selecione Deteção de desvio entre preparação e publicação.
- Em Origem de dados de preparação, indique uma origem de dados de preparação.
- Em Coluna de destino, introduza o nome da coluna dos dados de preparação que o modelo é preparado para prever. Este campo está excluído da análise de monitorização.
- Opcional: em Limites de alerta, especifique os limites nos quais os alertas são acionados. Para ver informações sobre como formatar os limites, mantenha o ponteiro sobre o ícone de ajuda.
- Clique em Criar.
Deteção de desvio
- Selecione Deteção de desvio de previsão.
- Opcional: em Limites de alerta, especifique os limites nos quais os alertas são acionados. Para ver informações sobre como formatar os limites, mantenha o ponteiro sobre o ícone de ajuda.
- Clique em Criar.
gcloud
Para criar uma tarefa de monitorização da implementação de modelos através da CLI gcloud, primeiro implemente o seu modelo num ponto final.
Uma configuração de trabalho de monitorização aplica-se a todos os modelos implementados num ponto final.
Execute o comando gcloud ai model-monitoring-jobs create
:
gcloud ai model-monitoring-jobs create \ --project=PROJECT_ID \ --region=REGION \ --display-name=MONITORING_JOB_NAME \ --emails=EMAIL_ADDRESS_1,EMAIL_ADDRESS_2 \ --endpoint=ENDPOINT_ID \ --feature-thresholds=FEATURE_1=THRESHOLD_1,FEATURE_2=THRESHOLD_2 \ --prediction-sampling-rate=SAMPLING_RATE \ --monitoring-frequency=MONITORING_FREQUENCY \ --target-field=TARGET_FIELD \ --bigquery-uri=BIGQUERY_URI
where:
PROJECT_ID é o ID do seu Google Cloud projeto. Por exemplo,
my-project
.REGION é a localização da sua tarefa de monitorização. Por exemplo,
us-central1
.MONITORING_JOB_NAME é o nome da sua tarefa de monitorização. Por exemplo,
my-job
.EMAIL_ADDRESS é o endereço de email onde quer receber alertas da monitorização de modelos. Por exemplo,
example@example.com
.ENDPOINT_ID é o ID do ponto final no qual o seu modelo está implementado. Por exemplo,
1234567890987654321
.Opcional: FEATURE_1=THRESHOLD_1 é o limite de alerta para cada funcionalidade que quer monitorizar. Por exemplo, se especificar
Age=0.4
, o Model Monitoring regista um alerta quando a [distância estatística][stat-distance] entre as distribuições de entrada e de referência para a funcionalidadeAge
exceder 0,4.Opcional: SAMPLING_RATE é a fração dos pedidos de previsão recebidos que quer registar. Por exemplo,
0.5
. Se não for especificado, a monitorização de modelos regista todos os pedidos de previsão.Opcional: MONITORING_FREQUENCY é a frequência com que quer que a tarefa de monitorização seja executada em entradas registadas recentemente. A granularidade mínima é de 1 hora. A predefinição é 24 horas. Por exemplo,
2
.(obrigatório apenas para a deteção de desvios) TARGET_FIELD é o campo que está a ser previsto pelo modelo. Este campo é excluído da análise de monitorização. Por exemplo,
housing-price
.(obrigatório apenas para a deteção de desequilíbrios) BIGQUERY_URI é o link para o conjunto de dados de preparação armazenado no BigQuery, usando o seguinte formato:
bq://\PROJECT.\DATASET.\TABLE
Por exemplo,
bq://\my-project.\housing-data.\san-francisco
.Pode substituir a flag
bigquery-uri
por links alternativos para o seu conjunto de dados de treino:Para um ficheiro CSV armazenado num contentor do Cloud Storage, use
--data-format=csv --gcs-uris=gs://BUCKET_NAME/OBJECT_NAME
.Para um ficheiro TFRecord armazenado num contentor do Cloud Storage, use
--data-format=tf-record --gcs-uris=gs://BUCKET_NAME/OBJECT_NAME
.Para um [conjunto de dados gerido do AutoML tabular][dataset-id], use
--dataset=DATASET_ID
.
SDK Python
Para obter informações sobre o fluxo de trabalho completo da API Model Monitoring, consulte o bloco de notas de exemplo.
API REST
Se ainda não o fez, implemente o seu modelo num ponto final.
Obtenha o ID do modelo implementado para o seu modelo obtendo as informações do ponto final. Tenha em atenção o DEPLOYED_MODEL_ID, que é o valor
deployedModels.id
na resposta.Crie um pedido de tarefa de monitorização de modelos. As instruções abaixo mostram como criar uma tarefa de monitorização básica para a deteção de desvio com atribuições. Para a deteção de distorção, adicione o objeto
explanationBaseline
ao campoexplanationConfig
no corpo JSON do pedido e forneça uma das seguintes opções:O resultado de uma tarefa de explicação em lote para o seu conjunto de dados de preparação.
Um
TrainingDataset
no qual o serviço executa uma tarefaBatchExplain
para gerar uma base de referência.
Para mais detalhes, consulte a referência do trabalho de monitorização.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: é o ID do seu projeto Google Cloud . Por
exemplo,
my-project
. - LOCATION: é a localização da sua tarefa de monitorização. Por exemplo,
us-central1
. - MONITORING_JOB_NAME: é o nome da sua tarefa de monitorização. Por
exemplo,
my-job
. - PROJECT_NUMBER: é o número do seu projeto Google Cloud . Por
exemplo,
1234567890
. - ENDPOINT_ID é o ID do ponto final no qual o seu modelo está implementado. Por
exemplo,
1234567890
. - DEPLOYED_MODEL_ID: é o ID do modelo implementado.
- FEATURE:VALUE é o limite de alerta
para cada funcionalidade que quer monitorizar. Por exemplo,
"housing-latitude": {"value": 0.4}
. É registado um alerta quando a distância estatística entre a distribuição de caraterísticas de entrada e a respetiva referência excede o limite especificado. Por predefinição, todas as funcionalidades categóricas e numéricas são monitorizadas com valores de limite de 0, 3. - EMAIL_ADDRESS: é o endereço de email onde quer receber
alertas da monitorização de modelos. Por exemplo,
example@example.com
. - NOTIFICATION_CHANNELS:
uma lista de
canais de notificação do Cloud Monitoring
onde quer receber alertas da monitorização de modelos. Use os nomes dos recursos
para os canais de notificação, que pode obter
listando os canais de notificação
no seu projeto. Por exemplo,
"projects/my-project/notificationChannels/1355376463305411567", "projects/my-project/notificationChannels/1355376463305411568"
.
Corpo JSON do pedido:
{ "displayName":"MONITORING_JOB_NAME", "endpoint":"projects/PROJECT_NUMBER/locations/LOCATION/endpoints/ENDPOINT_ID", "modelDeploymentMonitoringObjectiveConfigs": { "deployedModelId": "DEPLOYED_MODEL_ID", "objectiveConfig": { "predictionDriftDetectionConfig": { "driftThresholds": { "FEATURE_1": { "value": VALUE_1 }, "FEATURE_2": { "value": VALUE_2 } } }, "explanationConfig": { "enableFeatureAttributes": true } } }, "loggingSamplingStrategy": { "randomSampleConfig": { "sampleRate": 0.5, }, }, "modelDeploymentMonitoringScheduleConfig": { "monitorInterval": { "seconds": 3600, }, }, "modelMonitoringAlertConfig": { "emailAlertConfig": { "userEmails": ["EMAIL_ADDRESS"], }, "notificationChannels": [NOTIFICATION_CHANNELS] } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/modelDeploymentMonitoringJobs/MONITORING_JOB_NUMBER", ... "state": "JOB_STATE_PENDING", "scheduleState": "OFFLINE", ... "bigqueryTables": [ { "logSource": "SERVING", "logType": "PREDICT", "bigqueryTablePath": "bq://PROJECT_ID.model_deployment_monitoring_8451189418714202112.serving_predict" } ], ... }
Assim que a tarefa de monitorização for criada, a Model Monitoring regista os pedidos de previsão recebidos numa tabela do BigQuery gerada denominada PROJECT_ID.model_deployment_monitoring_ENDPOINT_ID.serving_predict
.
Se o registo de pedidos-respostas estiver ativado, o Model Monitoring regista os pedidos recebidos na mesma tabela do BigQuery que é usada para o registo de pedidos-respostas.
Consulte o artigo Usar a monitorização de modelos para ver instruções sobre como realizar as seguintes tarefas opcionais:
Atualize uma tarefa de monitorização de modelos.
Configure alertas para a tarefa de monitorização de modelos
Configure alertas para anomalias.
Analise os dados de desvio e variação da atribuição de funcionalidades
Pode usar a Google Cloud consola para visualizar as atribuições de funcionalidades de cada funcionalidade monitorizada e saber que alterações originaram a distorção ou a deriva. Para obter informações sobre a análise de dados de distribuição de funcionalidades, consulte o artigo Analise dados de desvio e deriva.
Num sistema de aprendizagem automática estável, a importância relativa das funcionalidades geralmente permanece relativamente estável ao longo do tempo. Se uma funcionalidade importante perder importância, pode indicar que algo nessa funcionalidade mudou. As causas comuns da variação ou da distorção da importância das funcionalidades incluem o seguinte:
- Alterações à origem de dados.
- Alterações ao esquema de dados e ao registo.
- Alterações na combinação ou no comportamento do utilizador final (por exemplo, devido a alterações sazonais ou eventos atípicos).
- Alterações a montante nas funcionalidades geradas por outro modelo de aprendizagem automática.
Seguem-se alguns exemplos:
- Atualizações do modelo que causam um aumento ou uma diminuição na cobertura (geral ou para um valor de classificação individual).
- Uma alteração no desempenho do modelo (que altera o significado da funcionalidade).
- Atualizações ao pipeline de dados, que podem causar uma diminuição na cobertura geral.
Além disso, considere o seguinte ao analisar a distorção da atribuição de funcionalidades e os dados de desvio:
Acompanhe as funcionalidades mais importantes. Uma alteração significativa na atribuição a uma funcionalidade significa que a contribuição da funcionalidade para a previsão foi alterada. Uma vez que a pontuação de previsão é igual à soma das contribuições das funcionalidades, a variação de atribuição das funcionalidades mais importantes indica normalmente uma variação nas previsões do modelo.
Monitorize todas as representações de funcionalidades. As atribuições de funcionalidades são sempre numéricas, independentemente do tipo de funcionalidade subjacente. Devido à sua natureza aditiva, as atribuições a uma funcionalidade multidimensional, como as incorporações, podem ser reduzidas a um único valor numérico somando as atribuições entre dimensões. Isto permite-lhe usar métodos de deteção de desvio univariados padrão para todos os tipos de funcionalidades.
Tenha em conta as interações com funcionalidades. A atribuição a uma funcionalidade tem em conta a contribuição da funcionalidade para a previsão, tanto individualmente como pelas respetivas interações com outras funcionalidades. Se as interações de uma funcionalidade com outras funcionalidades mudarem, as distribuições de atribuições a uma funcionalidade mudam, mesmo que a distribuição marginal da funcionalidade permaneça a mesma.
Monitorize grupos de funcionalidades. Uma vez que as atribuições são cumulativas, pode adicionar atribuições a funcionalidades relacionadas para obter a atribuição de um grupo de funcionalidades. Por exemplo, num modelo de empréstimo de crédito, combine a atribuição a todas as funcionalidades relacionadas com o tipo de empréstimo (por exemplo, "grau", "sub_grau", "finalidade") para obter uma única atribuição de empréstimo. Em seguida, é possível acompanhar esta atribuição ao nível do grupo para monitorizar as alterações no grupo de funcionalidades.
O que se segue?
- Trabalhe com a monitorização de modelos seguindo a documentação da API.
- Trabalhe com a monitorização de modelos seguindo a documentação da CLI gcloud.
- Experimente o bloco de notas de exemplo no Colab ou veja-o no GitHub.
- Saiba como a monitorização de modelos calcula a discrepância entre a preparação e a publicação, e a variação das previsões.