Ottenere risposte in batch è un modo per inviare in modo efficiente grandi quantità di richieste di codice quando la latenza della risposta non è importante. Diversamente dall'invio di risposte online, dove hai un limite di una richiesta di input alla volta, le previsioni batch inviano un numero elevato di richieste di modelli di generazione del codice in una singola richiesta batch. Come per le previsioni batch per i dati tabulari in Vertex AI, determina la posizione di output e aggiungi l'input, quindi le risposte vengono compilate in modo asincrono nella posizione di output.
Dopo aver inviato una richiesta batch e aver esaminato i relativi risultati, puoi ottimizzare il modello di base per la generazione di codice per migliorare il funzionamento dei risultati per la tua attività specifica. Dopo l'ottimizzazione, puoi inviare il modello ottimizzato per le generazioni in batch. Per scoprire di più sull'ottimizzazione dei modelli, consulta Modelli di base del linguaggio Tune.
Modelli di codice che supportano le previsioni batch
code-bison
Prepara gli input
L'input per le richieste batch è un elenco di prompt che possono essere archiviati in una tabella BigQuery o come file JSON Lines (JSONL) in Cloud Storage. Ogni richiesta può includere fino a 30.000 prompt.
Esempi JSONL
Questa sezione mostra esempi di come formattare i file JSONL di input e di output.
Esempio di input JSONL
{"prefix":"Write a Python function that determines if a year is a leap year:"}
{"prefix":"Write a unit test for Python code that reverses a string:"}
Esempio di output JSONL
{"instance":{"prefix":"Write..."},"predictions": [{"content":"def is_leap_year(year):...","safetyAttributes":{...}}],"status":""}
{"instance":{"prefix":"Write..."},"predictions": [{"content":"import unittest...", "safetyAttributes":{...}}],"status":""}
Esempio di BigQuery
Questa sezione mostra esempi di come formattare l'input e l'output di BigQuery.
Esempio di input BigQuery
Questo esempio mostra una tabella BigQuery a colonna singola.
prefisso |
---|
"Scrivi una funzione Python che stabilisca se un anno è bisestile" |
"Scrivi un test delle unità per il codice Python che inverte una stringa:" |
Esempio di output BigQuery
prefisso | previsioni. | stato |
---|---|---|
"Scrivi una funzione Python che stabilisca se un anno è bisestile" |
{ "predictions": [ { "safetyAttributes": { "scores": [], "blocked": false, "categories": [] }, "content": "```python\ndef is_leap_year(year):\n \"\"\"\n Determine if a year is a leap year.\n\n Args:\n year: The year to check.\n\n Returns:\n True if the year is a leap year, False otherwise.\n \"\"\"\n\n if year % 4 != 0:\n return False\n\n if year % 100 == 0 and year % 400 != 0:\n return False\n\n return True\n```", "citationMetadata": { "citations": [] }, "score": -1.5572503805160522 } ], } |
|
"Scrivi un test delle unità per il codice Python che inverte una stringa:" |
{ "predictions": [ { "safetyAttributes": { "scores": [], "blocked": false, "categories": [] }, "score": -1.7523338794708252, "citationMetadata": { "citations": [] }, "content": "```python\nimport unittest\n\nclass TestReverseString(unittest.TestCase):\n\n def test_reverse_string(self):\n input_string = \"Hello World\"\n expected_output = \"dlroW olleH\"\n output = reverse_string(input_string)\n self.assertEqual(output, expected_output)\n\nif __name__ == '__main__':\n unittest.main()\n```" } ], } |
Richiedere una risposta batch
Puoi creare una risposta batch di generazione di codice utilizzando la console Google Cloud o l'SDK Vertex AI per Python. Più elementi di input invii, più lungo sarà il processo di generazione batch.
REST
Per testare un prompt di codice utilizzando l'API Vertex AI, invia una richiesta POST all'endpoint del modello del publisher.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il nome del tuo progetto Google Cloud.
- BP_JOB_NAME: il nome del job.
- MODEL_PARAM: un elenco di coppie chiave-valore che specificano i parametri del modello e i relativi valori. Ad esempio, puoi specificare
maxOutputTokens
etemperature
del modello. Per maggiori informazioni, consulta Parametri di generazione del codice. - INPUT_URI: l'URI di origine di input. L'origine di input è una tabella BigQuery o un file JSONL in un bucket Cloud Storage.
- OUTPUT_URI: URI di destinazione di output.
Metodo HTTP e URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs
Corpo JSON della richiesta:
{ "name": "BP_JOB_NAME", "displayName": "BP_JOB_NAME", "model": "publishers/google/models/text-bison", "model_parameters": "MODEL_PARAM" "inputConfig": { "instancesFormat":"bigquery", "bigquerySource":{ "inputUri" : "INPUT_URI" } }, "outputConfig": { "predictionsFormat":"bigquery", "bigqueryDestination":{ "outputUri": "OUTPUT_URI" } } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
arricciatura
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo 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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/{PROJECT_ID}/locations/us-central1/batchPredictionJobs/{BATCH_JOB_ID}", "displayName": "BP_sample_publisher_BQ_20230712_134650", "model": "projects/{PROJECT_ID}/locations/us-central1/models/text-bison", "inputConfig": { "instancesFormat": "bigquery", "bigquerySource": { "inputUri": "bq://sample.text_input" } }, "modelParameters": {}, "outputConfig": { "predictionsFormat": "bigquery", "bigqueryDestination": { "outputUri": "bq://sample.llm_dataset.embedding_out_BP_sample_publisher_BQ_20230712_134650" } }, "state": "JOB_STATE_PENDING", "createTime": "2023-07-12T20:46:52.148717Z", "updateTime": "2023-07-12T20:46:52.148717Z", "labels": { "owner": "sample_owner", "product": "llm" }, "modelVersionId": "1", "modelMonitoringStatus": {} }
La risposta include un identificatore univoco per il job batch.
Puoi eseguire il polling dello stato del job batch utilizzando BATCH_JOB_ID fino a quando il job state
non è JOB_STATE_SUCCEEDED
. Ad esempio:
curl \ -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs/BATCH_JOB_ID
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
from vertexai.preview.language_models import CodeGenerationModel code_model = CodeGenerationModel.from_pretrained("code-bison") batch_prediction_job = code_model.batch_predict( dataset=["gs://BUCKET_NAME/test_table.jsonl"], destination_uri_prefix="gs://BUCKET_NAME/tmp/2023-05-25-vertex-LLM-Batch-Prediction/result3", # Optional: model_parameters={ "maxOutputTokens": "200", "temperature": "0.2", }, ) print(batch_prediction_job.display_name) print(batch_prediction_job.resource_name) print(batch_prediction_job.state)
Recupera output batch
Al termine di un'attività di previsione batch, l'output viene archiviato nel bucket Cloud Storage o nella tabella BigQuery specificato nella richiesta.
Passaggi successivi
- Scopri come testare le richieste di codice.
- Consulta la pagina di riferimento Generazione del codice.