Le previsioni batch ti consentono di inviare in modo efficiente più prompt di solo testo che non sono sensibili alla latenza a un modello Llama. Rispetto alle previsioni online, in cui invii un prompt di input per ogni richiesta, puoi raggruppare un numero elevato di prompt di input in una singola richiesta.
Non sono previsti costi per le previsioni batch durante il periodo di anteprima.
Modelli di Llama supportati
Vertex AI supporta le previsioni in batch per i seguenti modelli Llama:
- Llama 3.1 405B (
llama-3.1-405b-instruct-maas
) - Llama 3.1 70B (
llama-3.1-70b-instruct-maas
) - Llama 3.1 8B (
llama-3.1-8b-instruct-maas
)
Prepara l'input
Prima di iniziare, prepara gli input in una tabella BigQuery o come file JSONL in Cloud Storage. L'input per entrambe le origini deve seguire il formato JSON dello schema dell'API OpenAI, come mostrato nell'esempio seguente:
{"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}}
La tabella di input BigQuery deve rispettare lo schema seguente:
Nome colonna | Descrizione |
---|---|
custom_id | Un ID per ogni richiesta per abbinare l'input all'output. |
metodo | Il metodo di richiesta. |
url | L'endpoint della richiesta. |
body(JSON) | Il prompt di input. |
- La tabella di input può avere altre colonne, che vengono ignorate dal job batch e passate direttamente alla tabella di output.
- I job di previsione batch riservano due nomi di colonna per l'output della previsione batch: response(JSON) e id. Non utilizzare queste colonne nella tabella di input.
- Le colonne method e url vengono eliminate e non sono incluse nella tabella di output.
Per Cloud Storage, il file di input deve essere un file JSONL situato in un bucket Cloud Storage.
Richiedere una previsione batch
Esegui una previsione batch su un modello Llama utilizzando input provenienti da BigQuery o Cloud Storage. Puoi scegliere in modo indipendente di generare le previsioni in una tabella BigQuery o in un file JSONL in un bucket Cloud Storage.
BigQuery
Specifica la tabella di input, il modello e la posizione di output BigQuery. Il job di previsione batch e la tabella devono trovarsi nella stessa regione.
Dopo aver configurato l'ambiente, puoi utilizzare REST per testare un prompt di testo. Il seguente esempio invia una richiesta all'endpoint del modello del publisher.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
LOCATION : una regione che supporta modelli di Llama.PROJECT_ID : il tuo ID progetto.MODEL : il nome del modello da ottimizzare.INPUT_URI : la tabella BigQuery in cui si trova l'input di previsione batch, ad esempiomyproject.mydataset.input_table
.OUTPUT_FORMAT : per eseguire l'output in una tabella BigQuery, specificabigquery
. Per eseguire l'output in un bucket Cloud Storage, specificajsonl
.DESTINATION : per BigQuery, specificabigqueryDestination
. Per Cloud Storage, specificagcsDestination
.OUTPUT_URI_FIELD_NAME : Per BigQuery, specificaoutputUri
. Per Cloud Storage, specificaoutputUriPrefix
.OUTPUT_URI : per BigQuery, specifica la posizione della tabella, ad esempiomyproject.mydataset.output_result
. Per Cloud Storage, specifica la posizione del bucket e della cartella, ad esempiogs://mybucket/path/to/outputfile
.
Metodo HTTP e URL:
POST https://LOCATION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /batchPredictionJobs
Corpo JSON della richiesta:
'{ "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 " } } }'
Per inviare la richiesta, scegli una delle seguenti opzioni:
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
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"
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$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
Dovresti ricevere una risposta JSON simile alla seguente.
Risposta
{ "name": "projects/PROJECT_ID /locations/LOCATION /batchPredictionJobs/BATCH_JOB_ID ", "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 " } }, "state": "JOB_STATE_PENDING", "createTime": "2024-10-16T19:33:59.153782Z", "updateTime": "2024-10-16T19:33:59.153782Z", "labels": { "purpose": "testing" }, "modelVersionId": "1" }
Cloud Storage
Specifica la posizione di Cloud Storage, il modello e la posizione di output del file JSONL.
Dopo aver configurato l'ambiente, puoi utilizzare REST per testare un prompt di testo. Il seguente esempio invia una richiesta all'endpoint del modello del publisher.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
LOCATION : una regione che supporta modelli di Llama.PROJECT_ID : il tuo ID progetto.MODEL : il nome del modello da ottimizzare.INPUT_URI : la posizione di Cloud Storage dell'input di previsione batch JSONL, ad esempiogs://bucketname/path/to/jsonl
.OUTPUT_FORMAT : per eseguire l'output in una tabella BigQuery, specificabigquery
. Per eseguire l'output in un bucket Cloud Storage, specificajsonl
.DESTINATION : per BigQuery, specificabigqueryDestination
. Per Cloud Storage, specificagcsDestination
.OUTPUT_URI_FIELD_NAME : Per BigQuery, specificaoutputUri
. Per Cloud Storage, specificaoutputUriPrefix
.OUTPUT_URI : per BigQuery, specifica la posizione della tabella, ad esempiomyproject.mydataset.output_result
. Per Cloud Storage, specifica la posizione del bucket e della cartella, ad esempiogs://mybucket/path/to/outputfile
.
Metodo HTTP e URL:
POST https://LOCATION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /batchPredictionJobs
Corpo JSON della richiesta:
'{ "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 " } } }'
Per inviare la richiesta, scegli una delle seguenti opzioni:
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
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"
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$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
Dovresti ricevere una risposta JSON simile alla seguente.
Risposta
{ "name": "projects/PROJECT_ID /locations/LOCATION /batchPredictionJobs/BATCH_JOB_ID ", "displayName": "JOB_NAME ", "model": "publishers/meta/models/MODEL ", "inputConfig": { "instancesFormat": "jsonl", "gcsSource": { "uris": [ "INPUT_URI " ] } }, "outputConfig": { "predictionsFormat":"OUTPUT_FORMAT ", "DESTINATION ":{ "OUTPUT_URI_FIELD_NAME ": "OUTPUT_URI " } }, "state": "JOB_STATE_PENDING", "createTime": "2024-10-16T19:33:59.153782Z", "updateTime": "2024-10-16T19:33:59.153782Z", "labels": { "purpose": "testing" }, "modelVersionId": "1" }
Ottenere lo stato di un job di previsione batch
Ottieni lo stato del job di previsione batch per verificare se è stato completato correttamente. La durata del job dipende dal numero di elementi di input che hai inviato.
Dopo aver configurato l'ambiente, puoi utilizzare REST per testare un prompt di testo. Il seguente esempio invia una richiesta all'endpoint del modello del publisher.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID : il tuo ID progetto.LOCATION : la regione in cui si trova il tuo job batch.JOB_ID : l'ID job batch restituito al momento della creazione del job.
Metodo HTTP e URL:
GET https://LOCATION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /batchPredictionJobs/JOB_ID
Per inviare la richiesta, scegli una delle seguenti opzioni:
Esegui questo 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 "
Esegui questo 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
Dovresti ricevere una risposta JSON simile alla seguente.
Risposta
{ "name": "projects/PROJECT_ID /locations/LOCATION /batchPredictionJobs/BATCH_JOB_ID ", "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 " } }, "state": "JOB_STATE_SUCCEEDED", "createTime": "2024-10-16T19:33:59.153782Z", "updateTime": "2024-10-16T19:33:59.153782Z", "labels": { "purpose": "testing" }, "modelVersionId": "1" }
Recuperare l'output
Al termine di un job di previsione batch, recupera l'output dalla posizione specificata. Per BigQuery, l'output si trova nella colonna response(JSON) della tabella BigQuery di destinazione. Per Cloud Storage, l'output viene salvato come file JSONL nella posizione di Cloud Storage di output.