Vorhersagen für Batch-Texteinbettungen abrufen

Durch das Abrufen von Antworten in einem Batch können Sie eine große Anzahl an nicht-latenzempfindlichen Einbettungsanfragen effizient senden. Im Gegensatz zur Onlineantworten, bei der jeweils nur eine Eingabeanfrage gleichzeitig möglich ist, können Sie eine große Anzahl von LLM-Anfragen in einer einzelnen Batchanfrage senden. Ähnlich wie die Batchvorhersage für tabellarische Daten in Vertex AI legen Sie den Ausgabespeicherort fest, fügen Ihre Eingabe hinzu und die Antworten werden asynchron in Ihren Ausgabespeicherort übernommen.

Nachdem Sie eine Batchanfrage gesendet und deren Ergebnisse überprüft haben, können Sie das Modell über die Modellabstimmung optimieren. Nach der Abstimmung können Sie das aktualisierte Modell wie gewohnt für Batchgenerierungen senden. Weitere Informationen zum Abstimmen von Modellen finden Sie unter Spracherkennungsmodelle abstimmen.

Texteinbettungsmodelle, die Batchvorhersagen unterstützen

  • textembedding-gecko@

Eingaben vorbereiten

Die Eingabe für Batchanfragen ist eine Liste von Eingabeaufforderungen, die entweder in einer BigQuery-Tabelle oder als JSONL-Datei (JSONL) in Cloud Storage gespeichert werden können. Jede Anfrage kann bis zu 30.000 Anfragen enthalten.

JSONL-Beispiel

In diesem Abschnitt wird anhand von Beispielen gezeigt, wie Sie die JSONL-Eingabe und -Ausgabe formatieren.

JSONL-Eingabebeispiel

{"content":"Give a short description of a machine learning model:"}
{"content":"Best recipe for banana bread:"}

JSONL-Ausgabebeispiel

{"instance":{"content":"Give..."},"predictions": [{"embeddings":{"statistics":{"token_count":8,"truncated":false},"values":[0.2,....]}}],"status":""}
{"instance":{"content":"Best..."},"predictions": [{"embeddings":{"statistics":{"token_count":3,"truncated":false},"values":[0.1,....]}}],"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.

Inhalte
„Kurze Beschreibung eines ML-Modells angeben:”
„Das beste Rezept für Bananenbrot:“

BigQuery-Ausgabebeispiel

Inhalte Vorhersagen Status
„Kurze Beschreibung eines ML-Modells angeben:”
'[{"embeddings":
    { "statistics":{"token_count":8,"truncated":false},
      "Values":[0.1,....]
    }
  }
]'
 
„Das beste Rezept für Bananenbrot:“
'[{"embeddings":
    { "statistics":{"token_count":3,"truncated":false},
      "Values":[0.2,....]
    }
  }
]'

Batchantwort anfordern

Abhängig von der Anzahl der Eingabeelemente, die Sie eingereicht haben, kann die Batchvgenerierung eine Weile dauern.

REST

Senden Sie zum Testen eines Text-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: ID Ihres Google Cloud-Projekts.
  • BP_JOB_NAME: Name des Jobs.
  • INPUT_URI: Der URI der Eingabequelle. Dies ist entweder ein BigQuery-Tabellen-URI oder ein JSONL-Datei-URI in Cloud Storage.
  • 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/textembedding-gecko",
    "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/123456789012/locations/us-central1/batchPredictionJobs/1234567890123456789",
  "displayName": "BP_sample_publisher_BQ_20230712_134650",
  "model": "projects/{PROJECT_ID}/locations/us-central1/models/textembedding-gecko",
  "inputConfig": {
    "instancesFormat": "bigquery",
    "bigquerySource": {
      "inputUri": "bq://project_name.dataset_name.text_input"
    }
  },
  "modelParameters": {},
  "outputConfig": {
    "predictionsFormat": "bigquery",
    "bigqueryDestination": {
      "outputUri": "bq://project_name.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 TextEmbeddingModel
textembedding_model = TextEmbeddingModel.from_pretrained("textembedding-gecko")
batch_prediction_job = textembedding_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",
)
print(batch_prediction_job.display_name)
print(batch_prediction_job.resource_name)
print(batch_prediction_job.state)

Batchausgabe abrufen

Wenn 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