Monitorar desvios e atribuições de atribuição de recursos

O Vertex Model Monitoring é compatível com atribuição de atributo (pontuações de importância de atributos) e detecta desvio e deslocamento para recursos de entrada categóricos e numéricos com base na Vertex Explainable AI.

Nesta página, descrevemos os seguintes recursos do Monitoramento de modelos:

  • Detecção de desvio de atribuição de recursos ou detecção de deslocamento para modelos implantados em endpoints de previsão on-line da Vertex AI
  • Alertas sobre alterações nas atribuições de recurso
  • Visualização e análise de desvio ou atribuição de atribuição de recursos

Introdução ao monitoramento com base na atribuição de recursos

As atribuições de recursos explicam a previsão de um modelo em uma determinada entrada atribuindo a previsão aos recursos da entrada individual. As pontuações de atribuição são proporcionais à contribuição do recurso para a predição de um modelo. Normalmente, eles são assinados, indicando se um recurso ajuda a enviar a previsão para cima ou para baixo. As atribuições de todos os atributos precisam totalizar a pontuação de previsão do modelo.

O monitoramento de atribuições de recursos envolve o rastreamento das atribuições de recursos associadas às previsões de um modelo em produção ao longo do tempo. A ideia principal é rastrear as alterações na contribuição de um recurso para previsões, em vez dos próprios valores de recurso. Uma alteração na pontuação de atribuição de um recurso importante é, muitas vezes, um forte sinal de que o recurso mudou de alguma forma que pode afetar a precisão das previsões do modelo.

O monitoramento de atribuições de recursos oferece várias vantagens, incluindo a capacidade de:

  • Monitore os recursos mais importantes. Uma grande alteração na atribuição a um recurso significa que a contribuição do recurso para a previsão mudou. Como a previsão é igual à soma das contribuições dos recursos, um grande deslocamento de atribuição (dos recursos mais importantes) geralmente indica um desvio grande nas previsões do modelo.
  • Monitore todas as representações de recursos. As atribuições de recursos são sempre numéricas, independentemente do tipo de recurso subjacente. Além disso, devido à natureza aditiva delas, as atribuições para um recurso multidimensional (por exemplo, incorporações) podem ser reduzidas para um único valor numérico somando as atribuições em todas as dimensões. Isso permite usar métodos univariados de detecção de desvios padrão para todos os tipos de recursos.
  • Considere as interações com recursos. A atribuição a um recurso considera a contribuição do recurso para a previsão, tanto individualmente quanto por suas interações com outros recursos. Se as interações de um recurso com outros atributos mudarem, a distribuição de atribuições para um recurso mudar, mesmo que a distribuição marginal do recurso permaneça a mesma.
  • Monitore os grupos de recursos. Como as atribuições são somadas, podemos adicionar atribuições para recursos relacionados para conseguir a atribuição de um grupo de recursos. Por exemplo, em um modelo de empréstimo, podemos combinar a atribuição a todos os recursos relacionados ao tipo de empréstimo (por exemplo, "grade", "sub_grade", "finalidade") para conseguir uma única atribuição de empréstimo. Essa atribuição no nível do grupo pode ser rastreada para monitorar alterações no grupo de recursos.

Ativar detecção de atribuição de desvio ou deslocamento

Para ativar o monitoramento de deslocamento de atribuição de recursos para seu modelo, faça o seguinte:

  1. Para ativar a Explainable AI para seu modelo, configure explicações para ele. Especificamente, o modelo precisa ser implantado usando ExplanationParameters.

  2. Depois que seu modelo estiver configurado para explicações, ative o Monitoramento de pontuação de atribuição fazendo o seguinte:

    • Defina o campo enableFeatureAttributes como verdadeiro em ExplanationConfig.
    • Opcional. Especifique uma das seguintes opções para especificar uma explanationBaseline:

  3. Defina o tipo de monitoramento: Skew ou Drift.

    Para ativar a detecção de distorção de atribuição de recurso para um modelo, é necessário fornecer o TrainingDataset usado para treinar o modelo ou o explanationBaseline em ExplanationConfig.

    Para ativar a detecção de deslocamento, os dados de treinamento ou um valor de referência de explicação não são obrigatórios.

  4. Especifique um endereço de e-mail de usuário no qual você quer receber notificações. Esse é um parâmetro obrigatório.

  5. Definir a taxa de amostragem da solicitação de previsão.

    Para manter a eficiência de custos, geralmente é suficiente monitorar um subconjunto das entradas de produção para um modelo. Esse parâmetro controla a fração das solicitações de previsão recebidas que são registradas e analisadas para fins de monitoramento.

    Este é um parâmetro opcional. Se o usuário não configurar esse parâmetro, o serviço de monitoramento de modelos registrará todas as solicitações de previsão.

  6. Defina a frequência de monitoramento.

    A frequência de monitoramento determina a frequência com que as entradas de um modelo implantado são monitoradas para desvio ou deslocamento. Na frequência especificada, um job de monitoramento é executado e realiza o monitoramento nas entradas registradas recentemente. Cada job de monitoramento monitora as entradas registradas entre os carimbos de data/hora (horário limite, janela de monitoramento, horário limite). A frequência de monitoramento determina o período ou o tamanho da janela de monitoramento dos dados registrados que são analisados em cada execução do monitoramento. No Console do Google Cloud, é possível ver o tempo em que cada job de monitoramento é executado e visualizar os dados analisados em cada job.

    A granularidade mínima é de uma hora. Se você usar o SDK do Cloud para configurar um job de monitoramento de modelo, o valor padrão será definido como 24 horas.

  7. Especifique uma lista de recursos para monitorar, juntamente com os limites de alerta.

    É possível especificar quais recursos de entrada monitorar, além do limite de alerta para cada recurso. O limite de alerta determina quando lançar um alerta. Esses limites indicam a métrica estatística de distância calculada entre a distribuição do recurso de entrada e o valor de referência correspondente. É possível configurar um valor limite separado para cada recurso monitorado.

    Se essa lista não for fornecida, por padrão, todos os recursos categóricos e numéricos serão monitorados com os seguintes valores de limite padrão:

    • Recurso categórico: 0,3
    • Recurso numérico: 0,3

Parâmetros de configuração no escopo do endpoint

Um endpoint de previsão on-line pode hospedar vários modelos. Quando você ativa a detecção de desvios ou desvios em um endpoint, os seguintes parâmetros de configuração são compartilhados em todos os modelos hospedados nesse endpoint:

  • Tipo de detecção
  • Frequência de monitoramento
  • Fração de solicitações de entrada monitoradas

Para os outros parâmetros de configuração, valores diferentes podem ser definidos para cada modelo.

É possível ver os parâmetros de configuração no Console do Google Cloud.

Criar um job de monitoramento de modelo

Para configurar a detecção de distorção ou detecção de deslocamento, é possível criar um job de monitoramento de implantação de modelo usando o SDK do Cloud.

Detecção de desvio

Se o conjunto de dados de treinamento estiver disponível, crie um job de monitoramento de modelo com detecção de distorção para todos os modelos implantados no endpoint ENDPOINT_ID executando gcloud beta ai model-monitoring-jobs create:

gcloud beta 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 \
    --feature-attribution-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

O comando anterior usa o conjunto de dados de treinamento do BigQuery e está no seguinte formato:

"bq://\.\.\"

Também é possível especificar o conjunto de dados de treinamento do Cloud Storage nos formatos CSV ou TFRecord.

Para usar CSV, substitua a sinalização bigquery-uri por --data-format=csv --gcs-uris=gs://some_bucket/some_file.

Para usar TFRecord, substitua a sinalização bigquery-uri por --data-format=tf-record --gcs-uris=gs://some_bucket/some_file.

Também é possível usar um conjunto de dados gerenciado para o AutoML tabular substituindo a sinalização bigquery-uri por --dataset=dataset-id.

Detecção de furtos

Se o conjunto de dados de treinamento não estiver disponível, será possível criar um job de monitoramento de modelo com detecção de deslocamento para todos os modelos implantados no endpoint ENDPOINT_ID. Para isso, execute gcloud beta ai model-monitoring-jobs create:

gcloud beta 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 \
    --feature-attribution-thresholds=FEATURE_1=THRESHOLD_1,FEATURE_2=THRESHOLD_2 \
    --prediction-sampling-rate=SAMPLING_RATE \
    --monitoring-frequency=MONITORING_FREQUENCY

Comandos do SDK de monitoramento do modelo

É possível atualizar, pausar e excluir um job de monitoramento de modelo usando o SDK do Cloud.

Por exemplo, para atualizar a frequência de monitoramento do job de monitoramento de modelo 123 no projeto example na região us-central1:

gcloud beta ai model-monitoring-jobs update 123 \
    --monitoring-frequency=1 --project=example --region=us-central1

Para pausar o job:

gcloud beta ai model-monitoring-jobs pause 123 --project=example \
    --region=us-central1

Para retomar o job, execute:

gcloud beta ai model-monitoring-jobs resume 123 --project=example \
    --region=us-central1

Para excluir o job, execute:

gcloud beta ai model-monitoring-jobs pause 123 --project=example \
    --region=us-central1

Para mais informações, consulte model-monitoring-jobs no SDK do Cloud.

API de jobs de monitoramento do modelo

Para mais informações sobre detecção de desvio ou desvio, consulte os documentos da API Monitoramento de modelos.

Alertas por e-mail

Para os eventos a seguir, o monitoramento de modelos envia um alerta por e-mail para cada endereço de e-mail especificado quando o job de monitoramento do modelo foi criado:

  • Exibido sempre que um limite de alerta é ultrapassado.
  • Cada vez que a detecção de desvio ou deslocamento é configurada
  • Sempre que uma configuração de job de monitoramento de modelo atual é atualizada

Os alertas por e-mail contêm informações pertinentes, incluindo:

  • O horário em que o job de monitoramento foi executado
  • Nome do recurso com distorção ou deslocamento
  • O limite de alerta, bem como a distância da pontuação de atribuição

Analisar dados de distorção e desvio

É possível usar o Console do Cloud para visualizar as atribuições de recursos de cada recurso monitorado e saber quais alterações levaram à distorção ou desvio. Você pode ver as distribuições dos valores de recursos como uma série temporal ou Histograma.

Visão geral mostrando um exemplo de atribuição de recursos de dados de previsão e atribuição de recursos de dados de treinamento para detecção de desvio.

Em um sistema de machine learning estável, a importância relativa dos recursos permanece relativamente estável ao longo do tempo. Se um recurso importante cair na importância, isso poderá indicar que algo sobre ele mudou. Veja algumas causas comuns de desvio ou desvio de recursos:

  • Alterações na fonte de dados
  • Alterações no esquema e nos registros de dados
  • Alterações no mix ou comportamento do usuário final (por exemplo, devido a alterações sazonais ou eventos outliers)
  • Alterações upstream dos recursos gerados por outro modelo de machine learning. Alguns exemplos são:
    • Atualizações de modelo que causam um aumento ou uma diminuição na cobertura (em geral ou para um valor de classificação individual)
    • uma mudança no desempenho do modelo (que altera o significado do atributo);
    • Atualizações do pipeline de dados, que podem causar uma redução na cobertura geral

A seguir