Mendapatkan prediksi kode batch

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