Mendapatkan respons dalam batch adalah cara untuk mengirim permintaan kode dalam jumlah besar secara efisien jika latensi respons tidak penting. Berbeda dengan mendapatkan respons online, ketika Anda dibatasi pada satu permintaan input dalam satu waktu, prediksi batch akan mengirim sejumlah besar permintaan model pembuatan kode dalam satu permintaan batch. Seperti prediksi batch untuk data berbentuk tabel di Vertex AI, Anda menentukan lokasi output dan menambahkan input, lalu respons akan diisi secara asinkron ke lokasi output Anda.
Setelah mengirimkan permintaan batch dan meninjau hasilnya, Anda dapat menyesuaikan model dasar pembuatan kode untuk meningkatkan performa hasilnya untuk tugas khusus Anda. Setelah penyesuaian, Anda dapat mengirimkan model yang telah disesuaikan untuk pembuatan batch. Untuk mempelajari lebih lanjut cara menyesuaikan model, lihat Menyesuaikan model dasar bahasa.
Model kode yang mendukung prediksi batch
code-bison
Menyiapkan input Anda
Input untuk permintaan batch adalah daftar perintah yang dapat disimpan di tabel BigQuery atau sebagai file Baris JSON (JSONL) di Cloud Storage. Setiap permintaan dapat menyertakan hingga 30.000 prompt.
Contoh JSONL
Bagian ini menunjukkan contoh cara memformat input dan output file JSONL.
Contoh 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:"}
Contoh output JSONL
{"instance":{"prefix":"Write..."},"predictions": [{"content":"def is_leap_year(year):...","safetyAttributes":{...}}],"status":""}
{"instance":{"prefix":"Write..."},"predictions": [{"content":"import unittest...", "safetyAttributes":{...}}],"status":""}
Contoh BigQuery
Bagian ini menunjukkan contoh cara memformat input dan output BigQuery.
Contoh input BigQuery
Contoh ini menunjukkan tabel BigQuery satu kolom.
imbuhan |
---|
"Tulis fungsi Python yang menentukan apakah suatu tahun adalah tahun kabisat:" |
"Tulis pengujian unit untuk kode Python yang membalikkan string:" |
Contoh output BigQuery
imbuhan | prediksi | status |
---|---|---|
"Tulis fungsi Python yang menentukan apakah suatu tahun adalah tahun kabisat:" |
{ "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 } ], } |
|
"Tulis pengujian unit untuk kode Python yang membalikkan string:" |
{ "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```" } ], } |
Meminta respons batch
Anda dapat membuat respons batch pembuatan kode menggunakan Konsol Google Cloud atau Vertex AI SDK untuk Python. Makin banyak item input yang Anda kirimkan, makin lama waktu yang dibutuhkan untuk menyelesaikan proses pembuatan batch.
REST
Untuk menguji prompt kode menggunakan Vertex AI API, kirim permintaan POST ke endpoint model penayang.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Nama project Google Cloud Anda.
- BP_JOB_NAME: Nama pekerjaan.
- MODEL_PARAM: Daftar key-value pair yang menentukan parameter model dan nilainya. Misalnya, Anda dapat menentukan
maxOutputTokens
dantemperature
model. Untuk mengetahui informasi selengkapnya, lihat Parameter pembuatan kode. - INPUT_URI: URI sumber input. Sumber input adalah tabel BigQuery atau file JSONL di bucket 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/text-bison", "model_parameters": "MODEL_PARAM" "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/{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": {} }
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.
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)
Mengambil output batch
Setelah tugas prediksi batch selesai, outputnya akan disimpan di bucket Cloud Storage atau tabel BigQuery yang Anda tentukan dalam permintaan.
Langkah selanjutnya
- Pelajari cara menguji perintah kode.
- Lihat halaman referensi Pembuatan kode.