Batchvorhersagen abrufen

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 und temperature 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