Obtén predicciones por lotes a partir de un modelo de Model Garden que hayas implementado

Algunos de los modelos disponibles en Model Garden se pueden implementar por tu cuenta en tu propio proyecto de Google Cloud y usarse para proporcionar predicciones por lotes. Las predicciones por lotes te permiten usar un modelo de manera eficiente para procesar varias instrucciones de solo texto que no son sensibles a la latencia.

Prepara la entrada

Antes de comenzar, prepara tus entradas en una tabla de BigQuery o como un archivo JSONL en Cloud Storage. La entrada para ambas fuentes debe seguir el formato JSON del esquema de la API de OpenAI, como se muestra en el siguiente ejemplo:

{"body": {"messages": [{"role": "user", "content": "Give me a recipe for banana bread"}], "max_tokens": 1000}}

BigQuery

Tu tabla de entrada de BigQuery debe cumplir con el siguiente esquema:

Nombre de la columna Descripción
custom_id Es un ID para cada solicitud que permite correlacionar la entrada con la salida.
método Es el método de la solicitud.
url Es el extremo de la solicitud.
cuerpo(JSON) Es la instrucción de entrada.
  • Tu tabla de entrada puede tener otras columnas, que el trabajo por lotes ignora y pasa directamente a la tabla de salida.
  • Los trabajos de predicción por lotes reservan dos nombres de columna para el resultado de la predicción por lotes: response(JSON) y id. No uses estas columnas en la tabla de entrada.
  • Las columnas method y url se descartan y no se incluyen en la tabla de salida.

Cloud Storage

En el caso de Cloud Storage, el archivo de entrada debe ser un archivo JSONL ubicado en un bucket de Cloud Storage.

Obtén los recursos necesarios para un modelo

Elige un modelo y consulta sus requisitos de recursos. Los recursos requeridos aparecen en la respuesta, en el campo dedicatedResources, que especificas en la configuración de tu trabajo de predicción por lotes.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PUBLISHER: Es el publicador del modelo, por ejemplo, meta, google, mistral-ai o deepseek-ai.
  • PUBLISHER_MODEL_ID: Es el ID del modelo del editor para el modelo, por ejemplo, llama3_1.
  • VERSION_ID: Es el ID de la versión del editor para el modelo, por ejemplo, llama-3.1-8b-instruct.

Método HTTP y URL:

GET "https://us-central1-aiplatform.googleapis.com/ui/publishers/PUBLISHER/models/PUBLISHER_MODEL_ID@VERSION_ID" | jq '.supportedActions.multiDeployVertex'

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente comando:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
""https://us-central1-aiplatform.googleapis.com/ui/publishers/PUBLISHER/models/PUBLISHER_MODEL_ID@VERSION_ID" | jq '.supportedActions.multiDeployVertex'"

PowerShell

Ejecuta el siguiente comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri ""https://us-central1-aiplatform.googleapis.com/ui/publishers/PUBLISHER/models/PUBLISHER_MODEL_ID@VERSION_ID" | jq '.supportedActions.multiDeployVertex'" | Select-Object -Expand Content

Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.

Solicitar una predicción por lotes

Realiza una predicción por lotes con un modelo de Model Garden implementado por tu cuenta usando datos de entrada de BigQuery o Cloud Storage. Puedes elegir de forma independiente si deseas generar predicciones en una tabla de BigQuery o en un archivo JSONL en un bucket de Cloud Storage.

BigQuery

Especifica la tabla de entrada, el modelo y la ubicación de salida de BigQuery. El trabajo de predicción por lotes y tu tabla deben estar en la misma región.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION: Es una región que admite modelos autodeployados de Model Garden.
  • PROJECT_ID: El ID del proyecto.
  • MODEL: Es el nombre del modelo que se ajustará, por ejemplo, llama-3.1-8b-instruct.
  • PUBLISHER: Es el publicador del modelo, por ejemplo, meta, google, mistral-ai o deepseek-ai.
  • INPUT_URI: La tabla de BigQuery en la que se encuentra la entrada de predicción por lotes, como myproject.mydataset.input_table.
  • OUTPUT_FORMAT: Para generar datos en una tabla de BigQuery, especifica bigquery. Para generar el resultado en un bucket de Cloud Storage, especifica jsonl.
  • DESTINATION: Para BigQuery, especifica bigqueryDestination. En Cloud Storage, especifica gcsDestination.
  • OUTPUT_URI_FIELD_NAME: Para BigQuery, especifica outputUri. En el caso de Cloud Storage, especifica outputUriPrefix.
  • OUTPUT_URI: En el caso de BigQuery, especifica la ubicación de la tabla, como myproject.mydataset.output_result. En Cloud Storage, especifica la ubicación del bucket y la carpeta, como gs://mybucket/path/to/outputfile.
  • MACHINE_TYPE: Define el conjunto de recursos que se implementarán para tu modelo, por ejemplo, g2-standard-4.
  • ACC_TYPE: Especifica los aceleradores que se agregarán a tu trabajo de predicción por lotes para ayudar a mejorar el rendimiento cuando trabajes con cargas de trabajo intensivas, por ejemplo, NVIDIA_L4.
  • ACC_COUNT: Es la cantidad de aceleradores que se usarán en tu trabajo de predicción por lotes.

Método HTTP y URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs

Cuerpo JSON de la solicitud:

'{
  "displayName": "JOB_NAME",
  "model": "publishers/PUBLISHER/models/MODEL",
  "inputConfig": {
    "instancesFormat":"bigquery",
    "bigquerySource":{
      "inputUri" : "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat":"OUTPUT_FORMAT",
    "DESTINATION":{
      "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
    }
  },
  "dedicated_resources": {
    "machine_spec": {
      "machine_type": "MACHINE_TYPE",
      "accelerator_type": "ACC_TYPE",
      "accelerator_count": ACC_COUNT,
    },
    "starting_replica_count": 1,
  },
}'

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-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs"

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-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Cloud Storage

Especifica la ubicación de Cloud Storage, el modelo y la ubicación de salida de tu archivo JSONL.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION: Es una región que admite modelos autodeployados de Model Garden.
  • PROJECT_ID: El ID del proyecto.
  • MODEL: Es el nombre del modelo que se ajustará, por ejemplo, llama-3.1-8b-instruct.
  • PUBLISHER: Es el publicador del modelo, por ejemplo, meta, google, mistral-ai o deepseek-ai.
  • INPUT_URI: Es la ubicación de Cloud Storage de tu entrada de predicción por lotes en formato JSONL, como gs://bucketname/path/to/jsonl.
  • OUTPUT_FORMAT: Para generar datos en una tabla de BigQuery, especifica bigquery. Para generar el resultado en un bucket de Cloud Storage, especifica jsonl.
  • DESTINATION: Para BigQuery, especifica bigqueryDestination. En Cloud Storage, especifica gcsDestination.
  • OUTPUT_URI_FIELD_NAME: Para BigQuery, especifica outputUri. En el caso de Cloud Storage, especifica outputUriPrefix.
  • OUTPUT_URI: En el caso de BigQuery, especifica la ubicación de la tabla, como myproject.mydataset.output_result. En Cloud Storage, especifica la ubicación del bucket y la carpeta, como gs://mybucket/path/to/outputfile.
  • MACHINE_TYPE: Define el conjunto de recursos que se implementarán para tu modelo, por ejemplo, g2-standard-4.
  • ACC_TYPE: Especifica los aceleradores que se agregarán a tu trabajo de predicción por lotes para ayudar a mejorar el rendimiento cuando trabajes con cargas de trabajo intensivas, por ejemplo, NVIDIA_L4.
  • ACC_COUNT: Es la cantidad de aceleradores que se usarán en tu trabajo de predicción por lotes.

Método HTTP y URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs

Cuerpo JSON de la solicitud:

'{
  "displayName": "JOB_NAME",
  "model": "publishers/PUBLISHER/models/MODEL",
  "inputConfig": {
    "instancesFormat":"jsonl",
    "gcsDestination":{
      "uris" : "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat":"OUTPUT_FORMAT",
    "DESTINATION":{
      "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
    }
  },
  "dedicated_resources": {
    "machine_spec": {
        "machine_type": "MACHINE_TYPE",
        "accelerator_type": "ACC_TYPE",
        "accelerator_count": ACC_COUNT,
    },
    "starting_replica_count": 1,
  },
}'

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-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs"

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-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Obtén el estado de un trabajo de predicción por lotes

Obtén el estado de tu trabajo de predicción por lotes para verificar si se completó correctamente. La duración del trabajo depende de la cantidad de elementos de entrada que enviaste.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • LOCATION: Es la región en la que se encuentra tu trabajo por lotes.
  • JOB_ID: Es el ID del trabajo por lotes que se devolvió cuando creaste el trabajo.

Método HTTP y URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente comando:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID"

PowerShell

Ejecuta el siguiente comando:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Cómo recuperar el resultado

Cuando se complete un trabajo de predicción por lotes, recupera el resultado de la ubicación que especificaste:

  • En BigQuery, el resultado se encuentra en la columna response(JSON) de la tabla de destino de BigQuery.
  • En el caso de Cloud Storage, el resultado se guarda como un archivo JSONL en la ubicación de Cloud Storage de salida.

Modelos compatibles

Vertex AI admite predicciones por lotes para los siguientes modelos implementados por el usuario:

  • Llama
    • publishers/meta/models/llama3_1@llama-3.1-8b-instruct
    • publishers/meta/models/llama3_1@llama-3.1-70b-instruct
    • publishers/meta/models/llama3_1@llama-3.1-405b-instruct-fp8
    • publishers/meta/models/llama3-2@llama-3.2-1b-instruct
    • publishers/meta/models/llama3-2@llama-3.2-3b-instruct
    • publishers/meta/models/llama3-2@llama-3.2-90b-vision-instruct
  • Gemma
    • publishers/google/models/gemma@gemma-1.1-2b-it
    • publishers/google/models/gemma@gemma-7b-it
    • publishers/google/models/gemma@gemma-1.1-7b-it
    • publishers/google/models/gemma@gemma-2b-it
    • publishers/google/models/gemma2@gemma-2-2b-it
    • publishers/google/models/gemma2@gemma-2-9b-it
    • publishers/google/models/gemma2@gemma-2-27b-it
  • Mistral
    • publishers/mistral-ai/models/mistral@mistral-7b-instruct-v0.2
    • publishers/mistral-ai/models/mistral@mistral-7b-instruct-v0.3
    • publishers/mistral-ai/models/mistral@mistral-7b-instruct-v0.1
    • publishers/mistral-ai/models/mistral@mistral-nemo-instruct-2407
  • Deepseek
    • publishers/deepseek-ai/models/deepseek-r1@deepseek-r1-distill-llama-8b