Fornecer esquemas para o Vertex AI Model Monitoring

Para iniciar um job de monitoramento, o Monitoramento de modelos precisa conhecer o esquema do conjunto de dados tabular para analisar corretamente o payload de entrada.

  • Para modelos do AutoML, o Model Monitoring analisa o esquema automaticamente, porque a Vertex AI já tem acesso aos dados de treinamento.

  • Para modelos treinados de forma personalizada:

    • O monitoramento de modelos pode analisar automaticamente esquemas para modelos que usam um formato de entrada de chave-valor padrão.

    • Para modelos treinados de forma personalizada que não usam um formato de entrada de chave-valor, pode ser necessário fornecer um esquema ao criar seu job de monitoramento.

    A geração de esquema varia dependendo se você está ativando o monitoramento de modelos para um endpoint de previsão on-line ou em lote.

Análise de esquema para endpoints de previsão on-line

Para endpoints de previsão on-line, é possível permitir que o Model Monitoring analise o esquema automaticamente ou faça upload de um esquema ao criar um job de monitoramento.

Análise automática de esquema

Depois de ativar a detecção de desvio ou deslocamento de um endpoint on-line, o monitoramento de modelos geralmente pode analisar automaticamente o esquema de entrada. Para a análise automática de esquemas, o Model Monitoring analisa as primeiras 1.000 solicitações de entrada para determinar o esquema.

A análise automática de esquema funciona melhor quando as solicitações de entrada são formatadas como pares chave-valor, em que "key" é o nome do recurso e "value" é o valor do recurso. Por exemplo:

"key":"value"
{"TenYearCHD":"0", "glucose":"5.4", "heartRate":"1", "age":"30",
"prevalentStroke":"0", "gender":"f", "ethnicity":"latin american"}

Se as entradas não estiverem no formato "key":"value", o Monitoramento de modelos tentará identificar o tipo de dados de cada atributo e atribuirá automaticamente um nome de recurso padrão a cada entrada.

Esquemas de instâncias personalizadas

É possível fornecer seu próprio esquema de entrada ao criar um job de monitoramento de modelo para garantir que o monitoramento analise as entradas do modelo.

Esse esquema é chamado de esquema de instância de análise. O arquivo de esquema especifica o formato do payload de entrada, os nomes de cada recurso e o tipo de cada recurso.

O esquema precisa ser escrito como um arquivo YAML no formato de Open API. O exemplo a seguir é para uma solicitação de previsão com o formato object:

type: object
properties:
  age:
    type: string
  BMI:
    type: number
  TenYearCHD:
    type: string
  cigsPerDay:
    type: array
    items:
      type: string
  BPMeds:
    type: string
required:
- age
- BMI
- TenYearCHD
- cigsPerDay
- BPMeds
  • type indica se a solicitação de previsão é um dos seguintes formatos:

    • object: pares de chave-valor
    • array: semelhante a matriz
    • string: string csv
  • properties indica o tipo de cada recurso individual.

  • Se a solicitação estiver no formato de matriz ou string de CSV, especifique a ordem em que os recursos são listados em cada solicitação no campo required.

Se a solicitação de previsão estiver no formato de matriz ou csv-string, represente todos os recursos ausentes como valores nulos. Por exemplo, considere uma solicitação de previsão com cinco recursos:

[feature_a, feature_b, feature_c, feature_d, feature_e]

Se feature_c permitir valores ausentes, uma solicitação de amostra ausente feature_c será: {[1, 2, , 4, 6]}. O comprimento da lista ainda é cinco, com um valor nulo no meio.

Análise de esquema para previsões em lote

Para previsões em lote, permita que o monitoramento de modelos analise o esquema automaticamente ou faça upload de um esquema ao criar um job de monitoramento.

Análise automática de esquema

Se você não fornecer um esquema durante o monitoramento da criação do job, o monitoramento de modelos deduzirá os tipos de dados dos seus atributos e gerará o esquema com base nos seus dados de treinamento.

O monitoramento de modelos também precisa saber qual recurso é a coluna de destino, que é o recurso que está sendo previsto. A coluna de destino é excluída do esquema e da métrica de desvio do atributo. É possível especificar a coluna de destino ao criar um job de monitoramento.

Especificação da coluna de destino

Se você não especificar a coluna de destino ao criar um job de monitoramento, o monitoramento de modelos rotulará o último nome de recurso nos dados de treinamento como a coluna de destino.

Por exemplo, o monitoramento de modelos rotula column_c nesses dados de treinamento CSV como a coluna de destino porque column_c está no final da primeira linha:

column_a, column_b, column_d, column_c
1,"a", 2, "c"
2,"b", 342, "d"

Da mesma forma, o monitoramento de modelos rotula column_c nesse arquivo JSONL como a coluna de destino porque column_c está no final da primeira linha:

{"column_a": 1, "column_b": "a", "column_d": 2, "column_c": "c" }
{"column_a": 2, "column_b": "b", "column_c": "d",  "column_d": 342}

Em ambos os exemplos, o esquema final contém apenas column_a, column_b e column_d.

Esquemas personalizados

Seu esquema personalizado especifica o formato do payload da entrada, os nomes de cada recurso e o tipo de cada recurso.

O esquema precisa ser escrito como um arquivo YAML com sintaxe de API aberta. O exemplo a seguir é para uma solicitação de previsão com o formato object:

type: object
properties:
  age:
    type: string
  BMI:
    type: number
  TenYearCHD:
    type: string
  cigsPerDay:
    type: array
    items:
      type: string
  BPMeds:
    type: string
required:
- age
- BMI
- TenYearCHD
- cigsPerDay
- BPMeds

O monitoramento de modelos calcula o desvio do recurso com base na saída da previsão em lote das linhas JSON. Se o tipo de dados contiver uma matriz, o comprimento dela nos dados de entrada precisará ser igual ao número de atributos especificados no arquivo yaml. Caso contrário, o monitoramento de modelos exclui a instância de previsão com o comprimento incorreto da matriz do cálculo do desvio do recurso.

Por exemplo, as matrizes nos seguintes tipos de dados contêm dois atributos:

  • Array: {[[1, 2]]}

  • "Chave"/"Valor": {"key": 0, "values": [[1, 2]]}

O esquema correspondente também precisa especificar dois recursos:

type: object
properties:
  name:
    type: string
  age:
    type: number
required:
- name
- age

A seguir