Mendapatkan respons dalam batch merupakan cara untuk mengirim sejumlah besar permintaan kode secara efisien, dengan latensi respons yang tidak penting. Berbeda dengan mendapatkan respons online, yang hanya dapat dilakukan pada satu permintaan input pada satu waktu, prediksi batch mengirim sejumlah besar permintaan model pembuatan kode dalam satu permintaan batch. Seperti prediksi batch untuk data tabel di Vertex AI, Anda menentukan lokasi output dan menambahkan input, lalu respons akan terisi secara asinkron ke lokasi output.
Setelah mengirimkan permintaan batch dan meninjau hasilnya, Anda dapat menyesuaikan model dasar pembuatan kode untuk meningkatkan kualitas hasil untuk tugas tertentu. Setelah melakukan 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 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 file JSONL input dan output.
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.
awalan |
---|
"Tulis fungsi Python yang menentukan apakah suatu tahun adalah tahun kabisat:" |
"Tulis pengujian unit untuk kode Python yang membalik string:" |
Contoh output BigQuery
awalan | 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 membalik 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 proses pembuatan batch akan selesai.
REST
Untuk menguji perintah 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
Vertex AI SDK untuk 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 API Vertex AI SDK untuk Python.
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 Anda.
Langkah berikutnya
- Pelajari cara menguji perintah kode.
- Lihat halaman referensi Pembuatan kode.