Mendapatkan prediksi embedding teks batch

Mendapatkan respons dalam batch merupakan cara untuk mengirim sejumlah besar permintaan embedding yang sensitif non-latensi secara efisien. Berbeda dari mendapatkan respons online, yang hanya dapat dilakukan pada satu permintaan input pada satu waktu, Anda dapat mengirim sejumlah besar permintaan LLM dalam satu permintaan batch. Serupa dengan cara prediksi batch dilakukan untuk data tabel di Vertex AI, Anda menentukan lokasi output, menambahkan input, dan respons Anda terisi secara asinkron ke lokasi output.

Model embedding teks yang mendukung prediksi batch

Semua versi stabil model textembedding-gecko mendukung prediksi batch, kecuali textembedding-gecko-multilingual@001. Versi stabil adalah versi yang tidak lagi dalam pratinjau dan didukung sepenuhnya untuk lingkungan produksi. Untuk melihat daftar lengkap model penyematan yang didukung, lihat Model dan versi penyematan.

Menyiapkan input Anda

Input untuk permintaan batch adalah daftar prompt yang dapat disimpan dalam tabel BigQuery atau sebagai file JSON Lines (JSONL) di Cloud Storage. Setiap permintaan dapat menyertakan hingga 30.000 prompt.

Contoh JSONL

Bagian ini menunjukkan contoh cara memformat input dan output JSONL.

Contoh input JSONL

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

Contoh output JSONL

{"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":""}

Contoh BigQuery

Bagian ini menunjukkan contoh cara memformat input dan output BigQuery.

Contoh input BigQuery

Contoh ini menunjukkan tabel BigQuery satu kolom.

konten
"Berikan deskripsi singkat tentang model machine learning:"
"Resep roti pisang terenak:"

Contoh output BigQuery

konten prediksi status
"Berikan deskripsi singkat tentang model machine learning:"
'[{"embeddings":
    { "statistics":{"token_count":8,"truncated":false},
      "Values":[0.1,....]
    }
  }
]'
 
"Resep roti pisang terenak:"
'[{"embeddings":
    { "statistics":{"token_count":3,"truncated":false},
      "Values":[0.2,....]
    }
  }
]'

Meminta respons batch

Bergantung pada jumlah item input yang Anda kirimkan, tugas pembuatan batch dapat memerlukan waktu beberapa saat untuk diselesaikan.

REST

Untuk menguji prompt teks menggunakan Vertex AI API, kirim permintaan POST ke endpoint model penayang.

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • PROJECT_ID: ID project Google Cloud Anda.
  • BP_JOB_NAME: Nama pekerjaan.
  • INPUT_URI: URI sumber input. Dapat berupa URI tabel BigQuery atau URI file JSONL di Cloud Storage.
  • OUTPUT_URI: URI target output.

Metode HTTP dan URL:

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs

Isi JSON permintaan:

{
    "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"
    }
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

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

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$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

Anda akan menerima respons JSON yang mirip seperti berikut:

{
  "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": {}
}

Responsnya menyertakan ID unik untuk tugas batch. Anda dapat melakukan polling untuk status tugas batch menggunakan BATCH_JOB_ID hingga state tugas menjadi JOB_STATE_SUCCEEDED. Contoh:

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

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.

import vertexai

from vertexai.preview import language_models

# TODO(developer): Update & uncomment line below
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")
input_uri = (
    "gs://cloud-samples-data/generative-ai/embeddings/embeddings_input.jsonl"
)
# Format: `"gs://your-bucket-unique-name/directory/` or `bq://project_name.llm_dataset`
output_uri = OUTPUT_URI

textembedding_model = language_models.TextEmbeddingModel.from_pretrained(
    "textembedding-gecko@003"
)

batch_prediction_job = textembedding_model.batch_predict(
    dataset=[input_uri],
    destination_uri_prefix=output_uri,
)
print(batch_prediction_job.display_name)
print(batch_prediction_job.resource_name)
print(batch_prediction_job.state)
# Example response:
# BatchPredictionJob 2024-09-10 15:47:51.336391
# projects/1234567890/locations/us-central1/batchPredictionJobs/123456789012345
# JobState.JOB_STATE_SUCCEEDED

Mengambil output batch

Setelah tugas prediksi batch selesai, outputnya akan disimpan di bucket Cloud Storage atau tabel BigQuery yang Anda tentukan dalam permintaan Anda.

Langkah berikutnya