Antworten als Stapel zu erhalten ist eine effiziente Art, eine große Anzahl von Codeanfragen zu senden, wobei die Latenz der Antwort nicht wichtig sein darf. Im Gegensatz zu Online-Antworten, bei der jeweils nur eine Eingabeanfrage gleichzeitig möglich ist, senden Batchvorhersagen eine große Anzahl von Codegenerierungs-Modellanfragen in einer einzelnen Batchanfrage. Wie bei Batchvorhersagen für Tabellendaten in Vertex AI bestimmen Sie den Ausgabespeicherort und fügen Ihre Eingabe hinzu. Die Antworten werden dann asynchron in Ihren Ausgabespeicherort übernommen.
Nachdem Sie eine Batchanfrage gesendet und deren Ergebnisse überprüft haben, können Sie das Foundation Model für die Codegenerierung abstimmen, um zu verbessern, wie gut die Ergebnisse mit Ihrer jeweiligen Aufgabe funktionieren. Nach der Abstimmung können Sie das abgestimmte Modell für Batchgenerierungen senden. Weitere Informationen zum Abstimmen von Modellen finden Sie unter Spracherkennungsmodelle abstimmen.
Codemodelle, die Batchvorhersagen unterstützen
code-bison
Eingaben vorbereiten
Die Eingabe für Batchanfragen ist eine Liste an Eingabeaufforderungen, die in einer BigQuery-Tabelle oder als JSON-Lieniendatei (JSONL) in Cloud Storage gespeichert werden können. Jede Anfrage kann bis zu 30.000 Anfragen enthalten.
JSONL-Beispiele
In diesem Abschnitt wird anhand von Beispielen gezeigt, wie Sie JSONL-Eingabe- und Ausgabedateien formatieren.
JSONL-Eingabebeispiel
{"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:"}
JSONL-Ausgabebeispiel
{"instance":{"prefix":"Write..."},"predictions": [{"content":"def is_leap_year(year):...","safetyAttributes":{...}}],"status":""}
{"instance":{"prefix":"Write..."},"predictions": [{"content":"import unittest...", "safetyAttributes":{...}}],"status":""}
BigQuery-Beispiel
In diesem Abschnitt wird anhand von Beispielen gezeigt, wie Sie BigQuery-Eingaben und -Ausgaben formatieren.
BigQuery-Eingabebeispiel
Dieses Beispiel zeigt eine BigQuery-Tabelle mit einer einzigen Spalte.
Präfix |
---|
„Schreiben Sie eine Python-Funktion, die bestimmt, ob ein Jahr ein Schaltjahr ist:“ |
"Schreiben Sie einen Unittest für Python-Code, der einen String umkehrt:" |
BigQuery-Ausgabebeispiel
Präfix | Vorhersagen | Status |
---|---|---|
„Schreiben Sie eine Python-Funktion, die bestimmt, ob ein Jahr ein Schaltjahr ist:“ |
{ "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 } ], } |
|
"Schreiben Sie einen Unittest für Python-Code, der einen String umkehrt:" |
{ "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```" } ], } |
Batchantwort anfordern
Sie können eine Batchantwort für die Codegenerierungs mit der Google Cloud Console oder dem Vertex AI SDK für Python erstellen. Je mehr Eingabeelemente Sie einreichen, desto länger dauert der Prozess der Batchgenerierung.
REST
Senden Sie zum Testen eines Code-Prompts mit der Vertex AI API eine POST-Anfrage an den Endpunkt des Publisher-Modells.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID ist der Name Ihres Google Cloud-Projekts.
- BP_JOB_NAME: Name des Jobs.
- MODEL_PARAM: Eine Liste von Schlüssel/Wert-Paaren, die Modellparameter und ihre Werte angeben. Sie können beispielsweise die
maxOutputTokens
undtemperature
des Modells angeben. Weitere Informationen finden Sie unter Parameter für die Codegenerierung. - INPUT_URI: Der URI der Eingabequelle. Die Eingabequelle ist eine BigQuery-Tabelle oder eine JSONL-Datei in einem Cloud Storage-Bucket.
- OUTPUT_URI: Ausgabeziel-URI.
HTTP-Methode und URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs
JSON-Text der Anfrage:
{ "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" } } }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
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
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$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
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "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": {} }
Die Antwort enthält eine eindeutige Kennung für den Batchjob.
Sie können den Status des Batch-Jobs mit BATCH_JOB_ID abfragen, bis der Job state
den Wert JOB_STATE_SUCCEEDED
hat. Beispiel:
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
Informationen zum Installieren oder Aktualisieren von Python finden Sie unter Vertex AI SDK für Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.
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)
Batchausgabe abrufen
Nachdem eine Batchvorhersage abgeschlossen ist wird die Ausgabe im Cloud Storage-Bucket oder in der BigQuery-Tabelle gespeichert, die Sie in der Anfrage angegeben haben.
Nächste Schritte
- Erfahren Sie, wie Sie Code-Prompts testen.
- Weitere Informationen finden Sie auf der Referenzseite zur Codegenerierung.