Obtener datos de entrenamiento

Para obtener datos de características para entrenar modelos, usa el servicio por lotes. Si necesita exportar valores de funciones para archivarlos o hacer análisis puntuales, exporte valores de funciones.

Obtener valores de características para entrenar un modelo

Para entrenar un modelo, necesitas un conjunto de datos de entrenamiento que contenga ejemplos de tu tarea de predicción. Estos ejemplos constan de instancias que incluyen sus características y etiquetas. La instancia es el elemento sobre el que quieres hacer una predicción. Por ejemplo, una instancia puede ser una casa y quieres determinar su valor de mercado. Entre sus características se pueden incluir la ubicación, la antigüedad y el precio medio de las casas cercanas que se han vendido recientemente. Una etiqueta es una respuesta a la tarea de predicción, como el precio final de venta de la casa, que fue de 100.000 USD.

Como cada etiqueta es una observación en un momento concreto, debe obtener los valores de las características que corresponden a ese momento en el que se hizo la observación. Por ejemplo, los precios de las casas cercanas cuando se vendió una casa en concreto. A medida que se recogen etiquetas y valores de características a lo largo del tiempo, esos valores de características cambian. Vertex AI Feature Store (antigua) puede realizar una búsqueda en un momento concreto para que puedas obtener los valores de las características en un momento determinado.

Ejemplo de consulta a un momento dado

En el siguiente ejemplo se obtienen los valores de las características de dos instancias de entrenamiento con las etiquetas L1 y L2. Las dos etiquetas se observan en T1 y T2, respectivamente. Imagina que congelas el estado de los valores de las funciones en esas marcas de tiempo. Por lo tanto, para la consulta en un momento dado en T1, Vertex AI Feature Store (antigua) devuelve los valores de características más recientes hasta la hora T1 de Feature 1, Feature 2 y Feature 3, y no revela ningún valor posterior a T1. A medida que pasa el tiempo, los valores de las características cambian y la etiqueta también. Por lo tanto, en T2, Feature Store devuelve valores de características diferentes para ese momento.

Ejemplo de consulta a un momento dado

Entradas de servicio por lotes

Como parte de una solicitud de servicio en lote, se requiere la siguiente información:

  • Lista de funciones para las que se van a obtener valores.
  • Una lista de instancias de lectura que contiene información de cada ejemplo de entrenamiento. Enumera las observaciones en un momento concreto. Puede ser un archivo CSV o una tabla de BigQuery. La lista debe incluir la siguiente información:
    • Marcas de tiempo: las horas a las que se observaron o midieron las etiquetas. Las marcas de tiempo son necesarias para que Vertex AI Feature Store (antigua) pueda realizar una búsqueda en un momento concreto.
    • IDs de entidad: uno o varios IDs de las entidades que corresponden a la etiqueta.
  • El URI de destino y el formato en los que se escribe el resultado. En la salida, Vertex AI Feature Store (antigua) combina la tabla de la lista de instancias de lectura y los valores de las características del almacén de características. Especifique uno de los siguientes formatos y ubicaciones para la salida:
    • Tabla de BigQuery en un conjunto de datos regional o multirregional.
    • Archivo CSV en un segmento de Cloud Storage regional o multirregional. Sin embargo, si los valores de las características incluyen matrices, debe elegir otro formato.
    • Archivo TFRecord en un segmento de Cloud Storage.

Requisitos de la región

Tanto para las instancias de lectura como para el destino, el conjunto de datos o el segmento de origen deben estar en la misma región o en la misma ubicación multirregional que tu almacén de características. Por ejemplo, un almacén de características de us-central1 solo puede leer datos de o proporcionar datos a los conjuntos de datos de BigQuery o los cubos de Cloud Storage que se encuentren en us-central1 o en la ubicación multirregional de EE. UU. No puedes usar datos de us-east1, por ejemplo. Además, no se admite la lectura ni el servicio de datos mediante contenedores de doble región.

Lista de lectura de instancias

La lista de instancias de lectura especifica las entidades y las marcas de tiempo de los valores de las características que quiere recuperar. El archivo CSV o la tabla de BigQuery deben contener las siguientes columnas, en cualquier orden. Cada columna debe tener un encabezado.

  • Debe incluir una columna de marca de tiempo, donde el nombre del encabezado sea timestamp y los valores de la columna sean marcas de tiempo en formato RFC 3339.
  • Debe incluir una o varias columnas de tipo de entidad, donde el encabezado sea el ID del tipo de entidad y los valores de la columna sean los IDs de la entidad.
  • Opcional: Puede incluir valores de transferencia (columnas adicionales) que se transfieren tal cual a la salida. Esto resulta útil si tienes datos que no están en Vertex AI Feature Store (antigua), pero quieres incluirlos en la salida.

Ejemplo (CSV)

Imagina una feature store que contenga los tipos de entidad users y movies, así como sus características. Por ejemplo, las funciones de users podrían incluir age y gender, mientras que las de movies podrían incluir ratings y genre.

En este ejemplo, quieres recoger datos de entrenamiento sobre las preferencias de los usuarios en cuanto a películas. Obtienes los valores de las funciones de las dos entidades de usuario alice y bob, así como las funciones de las películas que han visto. En otro conjunto de datos, sabes que alice ha visto movie_01 y le ha gustado. bob ha visto movie_02 y no le ha gustado. Por lo tanto, la lista de instancias de lectura podría tener el siguiente aspecto:

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

Vertex AI Feature Store (antigua) obtiene los valores de las características de las entidades indicadas en el momento o antes de las marcas de tiempo proporcionadas. Las funciones específicas que quieres obtener se especifican como parte de la solicitud de publicación por lotes, no en la lista de instancias de lectura.

Este ejemplo también incluye una columna llamada liked, que indica si a un usuario le ha gustado una película. Esta columna no se incluye en el almacén de características, pero puede seguir transfiriendo estos valores a la salida de su servicio por lotes. En la salida, estos valores de transferencia se combinan con los valores del almacén de características.

valores nulos

Si, en una marca de tiempo determinada, el valor de una característica es nulo, Vertex AI Feature Store (antigua) devuelve el valor de la característica anterior que no sea nulo. Si no hay valores anteriores, Vertex AI Feature Store (antigua) devuelve null.

Servir valores de funciones por lotes

Sirve por lotes los valores de las funciones de un almacén de funciones para obtener datos, tal como se determina en el archivo de lista de instancias de lectura.

Si quieres reducir los costes de uso del almacenamiento sin conexión leyendo los datos de entrenamiento recientes y excluyendo los antiguos, especifica una hora de inicio. Para saber cómo reducir el coste del uso del almacenamiento sin conexión especificando una hora de inicio, consulta Especificar una hora de inicio para optimizar los costes del almacenamiento sin conexión durante el servicio y la exportación por lotes.

UI web

Utiliza otro método. No puedes servir funciones por lotes desde la consolaGoogle Cloud .

REST

Para servir valores de características por lotes, envíe una solicitud POST mediante el método featurestores.batchReadFeatureValues.

En el siguiente ejemplo se muestra una tabla de BigQuery que contiene valores de características de los tipos de entidad users y movies. Ten en cuenta que cada destino de salida puede tener algunos requisitos previos antes de que puedas enviar una solicitud. Por ejemplo, si especificas un nombre de tabla en el campo bigqueryDestination, debes tener un conjunto de datos. Estos requisitos se documentan en la referencia de la API.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: región en la que se crea el almacén de características. Por ejemplo, us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATURESTORE_ID: ID del almacén de características.
  • DATASET_NAME: nombre del conjunto de datos de BigQuery de destino.
  • TABLE_NAME: nombre de la tabla de BigQuery de destino.
  • STORAGE_LOCATION: URI de Cloud Storage del archivo CSV de instancias de lectura.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "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 tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Debería ver un resultado similar al siguiente. Puedes usar el OPERATION_ID de la respuesta para obtener el estado de la operación.

{
  "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 cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.

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 adicionales

Puedes instalar y usar las siguientes bibliotecas de cliente de Vertex AI para llamar a la API Vertex AI. Las bibliotecas de cliente de Cloud ofrecen una experiencia de desarrollo optimizada mediante el uso de las convenciones y los estilos naturales de cada lenguaje admitido.

Ver tareas de servicio por lotes

Usa la Google Cloud consola para ver las tareas de servicio por lotes de unGoogle Cloud proyecto.

UI web

  1. En la sección Vertex AI de la Google Cloud consola, ve a la página Funciones.

    Ir a la página Funciones

  2. Selecciona una región en la lista desplegable Región.
  3. En la barra de acciones, haz clic en Ver trabajos de servicio por lotes para ver una lista de los trabajos de servicio por lotes de todos los almacenes de características.
  4. Haga clic en el ID de un trabajo de publicación por lotes para ver sus detalles, como la fuente de la instancia de lectura que se ha usado y el destino de salida.

Siguientes pasos