Obtenha dados de preparação

Para obter dados de funcionalidades para a preparação de modelos, use a publicação em lote. Se precisar de exportar valores de funcionalidades para arquivo ou análise ad hoc, exporte os valores das funcionalidades.

Obtenha valores de funcionalidades para a preparação de modelos

Para a preparação do modelo, precisa de um conjunto de dados de preparação que contenha exemplos da sua tarefa de previsão. Estes exemplos consistem em instâncias que incluem as respetivas características e etiquetas. A instância é o elemento sobre o qual quer fazer uma previsão. Por exemplo, uma instância pode ser uma casa e quer determinar o respetivo valor de mercado. As respetivas caraterísticas podem incluir a localização, a idade e o preço médio das casas próximas que foram vendidas recentemente. Uma etiqueta é uma resposta para a tarefa de previsão, como a casa que acabou por ser vendida por 100 mil €.

Uma vez que cada etiqueta é uma observação num ponto específico no tempo, tem de obter os valores das caraterísticas que correspondem a esse ponto no tempo em que a observação foi feita, por exemplo, os preços de casas próximas quando uma casa específica foi vendida. À medida que as etiquetas e os valores das caraterísticas são recolhidos ao longo do tempo, esses valores das caraterísticas mudam. O Vertex AI Feature Store (antigo) pode realizar uma procura num determinado momento para que possa obter os valores das caraterísticas num momento específico.

Exemplo de pesquisa num momento específico

O exemplo seguinte envolve a obtenção de valores de caraterísticas para duas instâncias de preparação com etiquetas L1 e L2. As duas etiquetas são observadas em T1 e T2, respetivamente. Imagine congelar o estado dos valores das funcionalidades nessas datas/horas. Assim, para a pesquisa num determinado momento em T1, o Vertex AI Feature Store (antigo) devolve os valores das funcionalidades mais recentes até ao momento T1 para Feature 1, Feature 2 e Feature 3 e não divulga valores posteriores a T1. À medida que o tempo avança, os valores das funcionalidades mudam e a etiqueta também muda. Assim, às T2, o Feature Store devolve valores de caraterísticas diferentes para esse momento.

Exemplo de pesquisa pontual

Entradas de publicação em lote

Como parte de um pedido de publicação em lote, são necessárias as seguintes informações:

  • Uma lista de funcionalidades existentes para obter valores.
  • Uma lista de instâncias de leitura que contém informações para cada exemplo de preparação. Apresenta uma lista de observações num determinado momento. Pode ser um ficheiro CSV ou uma tabela do BigQuery. A lista tem de incluir as seguintes informações:
    • Indicações de tempo: as horas em que as etiquetas foram observadas ou medidas. As datas/horas são necessárias para que o Vertex AI Feature Store (antigo) possa fazer uma pesquisa num determinado momento.
    • IDs das entidades: um ou mais IDs das entidades que correspondem à etiqueta.
  • O URI e o formato de destino onde a saída é escrita. Na saída, o Vertex AI Feature Store (antigo) junta essencialmente a tabela da lista de instâncias de leitura e os valores das funcionalidades do Feature Store. Especifique um dos seguintes formatos e localizações para a saída:
    • Tabela do BigQuery num conjunto de dados regional ou multirregional.
    • Ficheiro CSV num contentor do Cloud Storage regional ou multirregional. No entanto, se os valores das funcionalidades incluírem matrizes, tem de escolher outro formato.
    • Ficheiro Tfrecord num contentor do Cloud Storage.

Requisitos da região

Tanto para as instâncias de leitura como para o destino, o conjunto de dados ou o contentor de origem tem de estar na mesma região ou na mesma localização multirregional que o Feature Store. Por exemplo, um Feature Store em us-central1 só pode ler dados ou fornecer dados a contentores do Cloud Storage ou conjuntos de dados do BigQuery que estejam em us-central1 ou na localização multirregião dos EUA. Não pode usar dados de, por exemplo, us-east1. Além disso, não é suportada a leitura nem a publicação de dados através de contentores de dupla região.

Lista de instâncias de leitura

A lista de instâncias de leitura especifica as entidades e as datas/horas dos valores das caraterísticas que quer obter. O ficheiro CSV ou a tabela do BigQuery têm de conter as seguintes colunas, em qualquer ordem. Cada coluna requer um cabeçalho de coluna.

  • Tem de incluir uma coluna de data/hora, em que o nome do cabeçalho é timestamp e os valores da coluna são datas/horas no formato RFC 3339.
  • Tem de incluir uma ou mais colunas de tipo de entidade, em que o cabeçalho é o ID do tipo de entidade e os valores das colunas são os IDs das entidades.
  • Opcional: pode incluir valores de transferência (colunas adicionais), que são transferidos tal como estão para a saída. Isto é útil se tiver dados que não estão no Vertex AI Feature Store (antigo), mas quiser incluí-los no resultado.

Exemplo (CSV)

Imagine um Feature Store que contenha os tipos de entidades users e movies, juntamente com as respetivas funcionalidades. Por exemplo, as funcionalidades para users podem incluir age e gender, enquanto as funcionalidades para movies podem incluir ratings e genre.

Para este exemplo, quer recolher dados de preparação sobre as preferências de filmes dos utilizadores. Recupera os valores das funcionalidades para as duas entidades de utilizador alice e bob, juntamente com as funcionalidades dos filmes que viram. A partir de um conjunto de dados separado, sabe que alice viu movie_01 e gostou. bob viu o vídeo movie_02 e não gostou. Assim, a lista de instâncias de leitura pode ter o seguinte aspeto:

users,movies,timestamp,liked
"alice","movie_01",2021-04-15T08:28:14Z,true
"bob","movie_02",2021-04-15T08:28:14Z,false

O Vertex AI Feature Store (antigo) obtém valores de caraterísticas para as entidades indicadas nas datas/horas especificadas ou anteriores. Especifica as funcionalidades específicas a obter como parte do pedido de publicação em lote e não na lista de instâncias de leitura.

Este exemplo também inclui uma coluna denominada liked, que indica se um utilizador gostou de um filme. Esta coluna não está incluída no Feature Store, mas pode continuar a transmitir estes valores para a saída do serviço em lote. Na saída, estes valores de passagem são unidos aos valores do Feature Store.

Valores nulos

Se, numa determinada data/hora, o valor de uma funcionalidade for nulo, o Vertex AI Feature Store (antigo) devolve o valor da funcionalidade anterior que não seja nulo. Se não existirem valores anteriores, o Vertex AI Feature Store (antigo) devolve nulo.

Publicação em lote de valores de funcionalidades

Forneça em lote valores de funcionalidades de um arquivo de funcionalidades para obter dados, conforme determinado pelo ficheiro da lista de instâncias de leitura.

Se quiser reduzir os custos de utilização do armazenamento offline lendo dados de preparação recentes e excluindo dados antigos, especifique uma hora de início. Para saber como reduzir o custo de utilização do armazenamento offline especificando uma hora de início, consulte o artigo Especifique uma hora de início para otimizar os custos de armazenamento offline durante o serviço em lote e a exportação em lote.

IU da Web

Use outro método. Não pode publicar em lote funcionalidades a partir da Google Cloud consola.

REST

Para publicar em lote valores de caraterísticas, envie um pedido POST através do método featurestores.batchReadFeatureValues.

O exemplo seguinte gera uma tabela do BigQuery que contém valores de características para os tipos de entidades users e movies. Tenha em atenção que cada destino de saída pode ter alguns pré-requisitos antes de poder enviar um pedido. Por exemplo, se especificar um nome de tabela para o campo bigqueryDestination, tem de ter um conjunto de dados existente. Estes requisitos estão documentados na referência da API.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION_ID: região onde o Feature Store é criado. Por exemplo, us-central1.
  • PROJECT_ID: o seu ID do projeto.
  • FEATURESTORE_ID: ID da Feature Store.
  • DATASET_NAME: nome do conjunto de dados do BigQuery de destino.
  • TABLE_NAME: nome da tabela de destino do BigQuery.
  • STORAGE_LOCATION: URI do Cloud Storage para o ficheiro CSV de instâncias de leitura.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID:batchReadFeatureValues

Corpo JSON do pedido:

{
  "destination": {
    "bigqueryDestination": {
      "outputUri": "bq://PROJECT_ID.DATASET_NAME.TABLE_NAME"
    }
  },
  "csvReadInstances": {
    "gcsSource": {
      "uris": ["STORAGE_LOCATION"]
    }
  },
  "entityTypeSpecs": [
    {
      "entityTypeId": "users",
      "featureSelector": {
        "idMatcher": {
          "ids": ["age", "liked_genres"]
        }
      }
    },
    {
      "entityTypeId": "movies",
      "featureSelector": {
        "idMatcher": {
          "ids": ["title", "average_rating", "genres"]
        }
      }
    }
  ],
  "passThroughFields": [
    {
      "fieldName": "liked"
    }
  ]
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID:batchReadFeatureValues"

PowerShell

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID:batchReadFeatureValues" | Select-Object -Expand Content

Deverá ver uma saída semelhante à seguinte. Pode usar o elemento OPERATION_ID na resposta para obter o estado da operação.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.BatchReadFeatureValuesOperationMetadata",
    "genericMetadata": {
      "createTime": "2021-03-02T00:03:41.558337Z",
      "updateTime": "2021-03-02T00:03:41.558337Z"
    }
  }
}

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

from google.cloud import aiplatform


def batch_serve_features_to_bq_sample(
    project: str,
    location: str,
    featurestore_name: str,
    bq_destination_output_uri: str,
    read_instances_uri: str,
    sync: bool = True,
):

    aiplatform.init(project=project, location=location)

    fs = aiplatform.featurestore.Featurestore(featurestore_name=featurestore_name)

    SERVING_FEATURE_IDS = {
        "users": ["age", "gender", "liked_genres"],
        "movies": ["title", "average_rating", "genres"],
    }

    fs.batch_serve_to_bq(
        bq_destination_output_uri=bq_destination_output_uri,
        serving_feature_ids=SERVING_FEATURE_IDS,
        read_instances_uri=read_instances_uri,
        sync=sync,
    )

Idiomas adicionais

Pode instalar e usar as seguintes bibliotecas cliente do Vertex AI para chamar a API Vertex AI. As bibliotecas cliente do Google Cloud oferecem uma experiência de programador otimizada através da utilização das convenções e dos estilos naturais de cada idioma suportado.

Veja tarefas de publicação em lote

Use a Google Cloud consola para ver tarefas de publicação em lote numGoogle Cloud projeto.

IU da Web

  1. Na secção Vertex AI da Google Cloud consola, aceda à página Funcionalidades.

    Aceda à página Funcionalidades

  2. Selecione uma região na lista pendente Região.
  3. Na barra de ações, clique em Ver tarefas de publicação em lote para listar as tarefas de publicação em lote de todas as featurestores.
  4. Clique no ID de uma tarefa de publicação em lote para ver os respetivos detalhes, como a origem da instância de leitura usada e o destino de saída.

O que se segue?