La predicción por lotes te permite enviar de forma eficiente varias peticiones de texto que no sean sensibles a la latencia a un modelo de Llama. En comparación con las predicciones online, en las que se envía una petición por cada solicitud, puedes agrupar un gran número de peticiones en una sola solicitud.
No se aplican cargos por las predicciones por lotes durante el periodo de vista previa.
Modelos Llama admitidos
Vertex AI admite predicciones por lotes para los siguientes modelos Llama:
Preparar la entrada
Antes de empezar, prepara las entradas en una tabla de BigQuery o como un archivo JSONL en Cloud Storage. La entrada de ambas fuentes debe seguir el formato JSON del esquema de la API de OpenAI, como se muestra en el siguiente ejemplo:
{"custom_id": "test-request-0", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "meta/llama-3.1-405b-instruct-maas", "messages": [{"role": "system", "content": "You are a chef."}, {"role": "user", "content": "Give me a recipe for banana bread"}], "max_tokens": 1000}}
BigQuery
La tabla de entrada de BigQuery debe cumplir el siguiente esquema:
Nombre de la columna | Descripción |
---|---|
custom_id | Un ID para cada solicitud que asocie la entrada con la salida. |
método | Método de solicitud. |
url | El endpoint de la solicitud. |
body(JSON) | Tu petición. |
- Tu tabla de entrada puede tener otras columnas, que el trabajo por lotes ignora y que se transfieren directamente a la tabla de salida.
- Las tareas de predicción por lotes reservan dos nombres de columna para la salida de la predicción por lotes: response(JSON) e id. No use estas columnas en la tabla de entrada.
- Las columnas method y url se quitan 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 que se encuentre en un segmento de Cloud Storage.
Solicitar una predicción por lotes
Haz una predicción por lotes con un modelo Llama usando datos de BigQuery o Cloud Storage. Puedes elegir de forma independiente si quieres generar las predicciones en una tabla de BigQuery o en un archivo JSONL de un segmento de Cloud Storage.
BigQuery
Especifica la tabla de entrada, el modelo y la ubicación de salida de BigQuery. La tarea de predicción por lotes y la tabla deben estar en la misma región.
REST
Después de configurar tu entorno, puedes usar REST para probar una petición de texto. En el siguiente ejemplo se envía una solicitud al endpoint del modelo del editor.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: una región que admita modelos Llama.
- PROJECT_ID: tu ID de proyecto.
- MODEL: el nombre del modelo que se va a ajustar.
- INPUT_URI: la tabla de BigQuery en la que se encuentra la entrada de la predicción por lotes, como
myproject.mydataset.input_table
. - OUTPUT_FORMAT: para enviar los datos a una tabla de BigQuery, especifica
bigquery
. Para enviar los datos a un segmento de Cloud Storage, especificajsonl
. - DESTINATION: en BigQuery, especifica
bigqueryDestination
. En el caso de Cloud Storage, especificagcsDestination
. - OUTPUT_URI_FIELD_NAME:
En BigQuery, especifica
outputUri
. En el caso de Cloud Storage, especificaoutputUriPrefix
. - OUTPUT_URI: en BigQuery, especifica la ubicación de la tabla, como
myproject.mydataset.output_result
. En Cloud Storage, especifica la ubicación del segmento y la carpeta, comogs://mybucket/path/to/outputfile
.
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/meta/models/MODEL", "inputConfig": { "instancesFormat":"bigquery", "bigquerySource":{ "inputUri" : "INPUT_URI" } }, "outputConfig": { "predictionsFormat":"OUTPUT_FORMAT", "DESTINATION":{ "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI" } } }'
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 siguiente.
Cloud Storage
Especifica la ubicación de Cloud Storage del archivo JSONL, el modelo y la ubicación de salida.
REST
Después de configurar tu entorno, puedes usar REST para probar una petición de texto. En el siguiente ejemplo se envía una solicitud al endpoint del modelo del editor.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: una región que admita modelos Llama.
- PROJECT_ID: tu ID de proyecto.
- MODEL: el nombre del modelo que se va a ajustar.
- INPUT_URI: la ubicación de Cloud Storage de la entrada de predicción por lotes JSONL, como
gs://bucketname/path/to/jsonl
. - OUTPUT_FORMAT: para enviar los datos a una tabla de BigQuery, especifica
bigquery
. Para enviar los datos a un segmento de Cloud Storage, especificajsonl
. - DESTINATION: en BigQuery, especifica
bigqueryDestination
. En el caso de Cloud Storage, especificagcsDestination
. - OUTPUT_URI_FIELD_NAME:
En BigQuery, especifica
outputUri
. En el caso de Cloud Storage, especificaoutputUriPrefix
. - OUTPUT_URI: en BigQuery, especifica la ubicación de la tabla, como
myproject.mydataset.output_result
. En Cloud Storage, especifica la ubicación del segmento y la carpeta, comogs://mybucket/path/to/outputfile
.
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/meta/models/MODEL", "inputConfig": { "instancesFormat":"jsonl", "gcsDestination":{ "uris" : "INPUT_URI" } }, "outputConfig": { "predictionsFormat":"OUTPUT_FORMAT", "DESTINATION":{ "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI" } } }'
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 siguiente.
Obtener el estado de una tarea de predicción por lotes
Obtén el estado de tu tarea de predicción por lotes para comprobar si se ha completado correctamente. La duración del trabajo depende del número de elementos de entrada que hayas enviado.
REST
Después de configurar tu entorno, puedes usar REST para probar una petición de texto. En el siguiente ejemplo se envía una solicitud al endpoint del modelo del editor.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto.
- LOCATION: la región en la que se encuentra tu trabajo por lotes.
- JOB_ID: 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 comando siguiente:
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 comando siguiente:
$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 siguiente.
Obtener el resultado
Cuando se complete una tarea de predicción por lotes, obtén la salida de la ubicación que hayas especificado. En BigQuery, la salida se encuentra en la columna response(JSON) de la tabla de destino de BigQuery. En el caso de Cloud Storage, la salida se guarda como un archivo JSONL en la ubicación de salida de Cloud Storage.