Informações gerais sobre o monitoramento de modelos

Neste documento, descrevemos como o BigQuery ML oferece suporte ao monitoramento de modelos de machine learning (ML) por meio da avaliação e comparação dos dados usados por um modelo. Isso inclui comparar os dados de exibição de um modelo com os de treinamento, além de comparar novos dados de exibição com os usados anteriormente.

Entender os dados usados pelos modelos é um aspecto crítico do ML, porque esses dados afetam o desempenho do modelo. Entender qualquer variância entre seus dados de treinamento e disponibilização é especialmente importante para garantir que seus modelos permaneçam precisos ao longo do tempo. Um modelo funciona melhor em dados de disponibilização semelhantes aos dados de treinamento. Quando os dados de serviço se desviam dos dados usados para treinar o modelo, o desempenho do modelo pode se deteriorar, mesmo que o próprio modelo não tenha mudado.

O BigQuery ML oferece funções para ajudar você a analisar os dados de treinamento e disponibilização quanto a distorções de dados e desvio de dados:

  • O desvio de dados ocorre quando a distribuição dos valores de atributos para dados de treinamento é significativamente diferente da distribuição de dados na produção. As estatísticas de treinamento do modelo são salvas durante o treinamento de modelo. Portanto, os dados de treinamento originais não são necessários para usar a detecção de distorção.
  • O desvio dos dados ocorre quando a distribuição de dados do recurso na produção muda significativamente ao longo do tempo. A detecção de desvio é compatível com períodos consecutivos de dados, por exemplo, entre diferentes dias de disponibilização de dados. Isso permite que você seja notificado se os dados de exibição mudarem ao longo do tempo, antes que os conjuntos de dados se desviem demais para treinar o modelo novamente.

Use as seguintes funções para monitorar modelos no BigQuery ML:

  • ML.DESCRIBE_DATA: calcula estatísticas descritivas para um conjunto de dados de treinamento ou disponibilização.
  • ML.VALIDATE_DATA_SKEW: calcula as estatísticas de um conjunto de dados de exibição e, em seguida, as compara às estatísticas de dados de treinamento que foram calculadas quando um modelo do BigQuery ML foi treinado para identificar diferenças anômalas entre os dois conjuntos de dados. As estatísticas são calculadas somente para colunas de atributos nos dados de exibição que correspondem às colunas de atributos nos dados de treinamento, para conseguir melhor desempenho e menor custo.
  • ML.VALIDATE_DATA_DRIFT: calcula e compara as estatísticas de dois conjuntos de dados de exibição para identificar diferenças anômalas entre os dois conjuntos de dados.
  • ML.TFDV_DESCRIBE: calcula estatísticas descritivas para um conjunto de dados de treinamento ou disponibilização. Essa função fornece o mesmo comportamento que a API tfdv.generate_statistics_from_csv do TensorFlow.
  • ML.TFDV_VALIDATE: compara as estatísticas de dados de treinamento e disponibilização, ou dois conjuntos de estatísticas de dados de exibição, para identificar diferenças anômalas entre os dois conjuntos de dados. Essa função fornece o mesmo comportamento que a API validate_statistics do TensorFlow.

Como monitorar casos de uso

Nesta seção, descrevemos como usar as funções de monitoramento de modelos do BigQuery ML em casos de uso comuns.

Monitoramento básico de desvio de dados

Esse caso de uso é apropriado quando você quer desenvolver e monitorar rapidamente um modelo de desvio de dados e não precisa de estatísticas de desvio refinadas para se integrar a uma solução de monitoramento atual.

As etapas típicas para esse caso de uso são as seguintes:

  1. Execute a função ML.DESCRIBE_DATA nos dados de treinamento e disponibilização para garantir que os dois conjuntos de dados se comparem adequadamente e estejam dentro dos parâmetros esperados.
  2. Crie um modelo do BigQuery ML e treine-o nos dados de treinamento.
  3. Execute a função ML.VALIDATE_DATA_SKEW para comparar as estatísticas dos dados de serviço com as estatísticas de dados de treinamento que foram calculadas durante a criação do modelo para ver se há algum desvio nos dados.
  4. Se houver desvio de dados, investigue a causa raiz, ajuste os dados de treinamento corretamente e treine o modelo novamente.

Monitoramento básico de deslocamento de dados

Esse caso de uso é apropriado quando você quer desenvolver e monitorar rapidamente um modelo de deslocamento de dados e não precisa de estatísticas de desvio detalhadas para fazer a integração com uma solução de monitoramento atual.

As etapas típicas para esse caso de uso são as seguintes:

  1. Execute a função ML.DESCRIBE_DATA nos dados de treinamento e disponibilização para garantir que os dois conjuntos de dados se comparem adequadamente e estejam dentro dos parâmetros esperados.
  2. Crie um modelo do BigQuery ML e treine-o nos dados de treinamento.
  3. Execute a função ML.VALIDATE_DATA_DRIFT para comparar as estatísticas de dois conjuntos de dados de exibição diferentes e verificar se há deslocamento de dados. Por exemplo, é possível comparar os dados de exibição atuais aos dados históricos de um snapshot da tabela ou aos recursos disponibilizados em um determinado momento. pode ser obtido usando a função ML.FEATURES_AT_TIME.
  4. Se houver deslocamento de dados, investigue a causa raiz, ajuste os dados de treinamento corretamente e treine o modelo novamente.

Monitoramento avançado de desvio ou desvio de dados

Esse caso de uso é apropriado quando você quer que estatísticas detalhadas de desvios ou desvios sejam integradas a uma solução de monitoramento atual ou para outros fins.

As etapas típicas para esse caso de uso são as seguintes:

  1. Execute a função ML.TFDV_DESCRIBE nos dados de treinamento e disponibilização em intervalos apropriados à solução de monitoramento e salve os resultados da consulta. Essa etapa permite comparar dados de exibição futuros com dados de treinamento e disponibilização de pontos passados no tempo.
  2. Execute a função ML.TFDV_VALIDATE nas suas estatísticas de dados de treinamento e disponibilização ou em dois conjuntos de estatísticas de dados de exibição para avaliar o desvio de dados ou desvio de atributo, respectivamente. Os dados de treinamento e disponibilização precisam ser fornecidos como um buffer de protocolo DatasetFeatureStatisticsList do TensorFlow no formato JSON. É possível gerar um buffer de protocolo no formato correto executando a função ML.TFDV_DESCRIBE ou carregá-lo de fora do BigQuery. O exemplo a seguir mostra como avaliar o desvio de atributos:

    DECLARE stats1 JSON;
    DECLARE stats2 JSON;
    
    SET stats1 = (
      SELECT * FROM ML.TFDV_DESCRIBE(TABLE `myproject.mydataset.training`)
    );
    SET stats2 = (
      SELECT * ML.TFDV_DESCRIBE(TABLE `myproject.mydataset.serving`);
    );
    
    SELECT ML.TFDV_VALIDATE(stats1, stats2, 'SKEW');
    
    INSERT `myproject.mydataset.serve_stats`
      (t, dataset_feature_statistics_list)
    SELECT CURRENT_TIMESTAMP() AS t, stats1;
    
    
  3. Se houver desvio ou desvio de dados, investigue a causa raiz, ajuste os dados de treinamento adequadamente e treine novamente o modelo.

Automação de monitoramento

É possível automatizar o monitoramento usando uma consulta programada para executar a função de monitoramento, avaliar a saída e treinar novamente o modelo se forem detectadas anomalias. É preciso ativar as notificações por e-mail como parte da configuração da consulta programada.

Para um exemplo que mostra como automatizar a função ML.VALIDATE_DATA_SKEW, consulte Automatizar a detecção de desvio.