Fungsi reward memberi skor numerik pada setiap respons model selama penyesuaian dengan pembelajaran penguatan. Sinyal reward adalah hal yang dioptimalkan oleh pembelajaran
berperkuatan, sehingga kualitasnya secara langsung menentukan kualitas
penyesuaian. Semua reward dipangkas ke rentang [-1, 1]; nilai apa pun di luar
rentang tersebut akan dipangkas.
Halaman ini menjelaskan setiap jenis reward yang didukung, praktik yang direkomendasikan untuk mendesain reward, dan cara memvalidasi konfigurasi reward sebelum Anda meluncurkan tugas penyesuaian. Fine-tuning reinforcement learning mendukung jenis reward berikut:
- Hadiah pencocokan string
- Hadiah pemberi rating otomatis berbasis Gemini
- Hadiah eksekusi kode
- Hadiah yang dapat disesuaikan sepenuhnya melalui Cloud Run
Anda juga dapat menggabungkan salah satu dari keempat opsi ini dengan bobot per-pemberi skor menggunakan reward gabungan.
Batasan yang diketahui
Waktu tunggu berikut berlaku per jenis reward:
| Jenis reward | Waktu habis |
|---|---|
| Pencocokan string | Tidak ada waktu tunggu yang ketat |
| Eksekusi kode | 100 detik untuk setiap panggilan metode evaluate |
| Autorater berbasis Gemini | Batas waktu 1 menit saat menunggu respons penilaian LLM |
| Cloud Run | Waktu tunggu 5 menit untuk setiap pemicu |
Mengonfigurasi reward di konsol Cloud de Confiance
Saat Anda membuat tugas penyesuaian reinforcement learning di konsol Cloud de Confiance di bagian Models > Tuning, langkah Reward configuration memungkinkan Anda mengonfigurasi reward tunggal atau gabungan:
Masukkan Nama reward dan pilih Jenis reward dari menu drop-down:
- Penghargaan pencocokan string: Konfigurasi Jenis penguraian (seperti ekstraksi ekspresi reguler), Operasi pencocokan (seperti Pencocokan persis), dan Ekspresi target, beserta penghargaan untuk jawaban yang benar dan salah.
- Penghargaan berbasis LLM: Berikan perintah autorater dan konfigurasikan cara output autorater diuraikan dan diberi skor.
- Penghargaan berbasis fungsi Python: Masukkan kode evaluasi Python kustom langsung di editor inline atau upload file Python.
- Hadiah yang dapat disesuaikan sepenuhnya melalui Cloud Run: Berikan URI layanan Cloud Run Anda.
Tentukan Bobot reward untuk kartu reward.
Klik Done.
Untuk mengonfigurasi reward komposit, klik + Tambahkan reward lain (hingga 16 reward). Setiap kartu reward yang diciutkan menampilkan bobot yang dikonfigurasi, dan formulir menampilkan ringkasan total bobot.
Reward pencocokan string
Spesifikasi API: ReinforcementTuningStringMatchRewardScorer
Penghargaan pencocokan string adalah konfigurasi yang mudah untuk mengevaluasi respons yang dihasilkan model terhadap kebenaran dasar yang diketahui. Fitur ini sangat berguna untuk tugas seperti pertanyaan matematika, di mana setiap pertanyaan memiliki jawaban sebenarnya yang diketahui.
Karena model dapat menghasilkan penalaran chain-of-thought atau kata-kata lain sebelum mencapai jawaban akhir yang ingin Anda bandingkan dengan kebenaran nyata, pemberi skor pencocokan string mendukung fungsi parser yang memproses output yang dihasilkan model menggunakan ekstraksi ekspresi reguler.
Kemudian, Anda menentukan cara membandingkan respons model yang diekstrak regex dengan
kebenaran nyata Anda. Kebenaran nyata disediakan melalui kolom di
references, yang Anda isi di setiap contoh saat membuat
file pelatihan dan validasi.
Untuk skema konfigurasi, lihat spesifikasi API ReinforcementTuningStringMatchRewardScorer. Untuk mengetahui detail tentang kolom references, lihat halaman Set data penyesuaian.
Hadiah pemberi rating otomatis berbasis Gemini
Spesifikasi API: ReinforcementTuningAutoraterScorer
Penghargaan autorater berbasis Gemini adalah konfigurasi yang mudah untuk mengevaluasi respons yang dihasilkan model berdasarkan masukan LLM sebagai juri. Misalnya, Anda mungkin ingin model menghasilkan respons dengan nada tertentu yang ditentukan oleh pemberi rating otomatis (LLM sebagai pemberi rating).
Hadiah ini mendukung dua pola:
- Penilai otomatis dapat langsung menghasilkan skor numerik yang digunakan sebagai masukan reinforcement learning.
- Autorater dapat menghasilkan penilaian yang diuraikan dan dibandingkan dengan pola yang telah ditentukan sebelumnya.
Autorater juga diizinkan untuk menghasilkan penalaran chain-of-thought-nya, sehingga Anda dapat mengurai bagian respons dengan cara yang sama seperti reward pencocokan string. Misalnya, pemberi rating otomatis dapat menghasilkan
blahblahblah <answer>Yes</answer> atau blahblahblah <answer>No</answer>, dan
Anda dapat membuat fungsi penguraian untuk mengekstrak respons pemberi rating otomatis di antara
<answer> dan </answer>. Kemudian, Anda dapat membandingkan output pemberi skor otomatis dengan ekspresi yang telah ditentukan sebelumnya yang memetakan Yes ke skor +1 dan nilai yang tidak cocok (seperti No) ke skor -1.
Contoh konfigurasi pemberi rating otomatis berikut memfilter untuk mendapatkan teks
di antara tag <answer> dan memetakan Yes ke +1 dan nilai lainnya ke -1:
{
"autoraterResponseParseConfig": {
"parseType": "REGEX_EXTRACT",
"regexExtractExpression": "<answer>(.*?)</answer>"
},
"exactMatchScorer": {
"expression": "Yes",
"correctAnswerReward": 1.0,
"wrongAnswerReward": -1.0
}
}
Reward eksekusi kode
Spesifikasi API: ReinforcementTuningCodeExecutionRewardScorer
Konfigurasi hadiah eksekusi kode memungkinkan Anda memberikan kode Python yang ditentukan pengguna untuk mengevaluasi respons model tanpa menyiapkan layanan Cloud Run. Terapkan fungsi evaluate dengan tanda tangan berikut:
def evaluate(example: dict[str, Any], response: dict[str, Any]) -> float:
...
Fungsi ini menerima:
example:ReinforcementTuningExampledalam format ProtoJSON (yaitu, format yang sama dengan satu baris dalam set data pelatihan atau validasi, kecuali kunci harus dalam huruf camel). Petunjuk sistem (example.get("systemInstruction")) dan referensi (example.get("references")) juga disertakan dalamexample, asalkan ditetapkan dalam set data pelatihan atau validasi.response:Contentdalam format ProtoJSON (yaitu, kunci harus dalam camel case), yang sama dengan respons prediksi online untuk model Gemini.
Fungsi harus menampilkan float, yang kemudian dipangkas ke rentang
[-1, 1].
Contoh penerapan:
def evaluate(example, response) -> float:
response_str = response.get("parts", [])[0]["text"]
references = example.get("references", {})
if response_str == references.get("concise_answer"):
return 1.0
return -1.0
Library yang didukung
Selain Python Standard Library, library Python berikut tersedia di dalam sandbox eksekusi kode:
cv2matplotlibmpmathnumpypandasseabornsklearnstatsmodelssympy
Waktu tunggu dan batas resource
Setiap panggilan evaluate memiliki waktu tunggu 100 detik. Panggilan yang waktunya habis akan dicoba lagi beberapa kali. Jika panggilan terus mengalami waktu tunggu habis setelah beberapa kali percobaan ulang, sampel akan dikeluarkan dari perhitungan reward.
Sebaiknya uji kode Anda dengan API
ValidateReinforcementTuningReward (lihat
Memvalidasi konfigurasi reward) dan
usahakan agar eksekusi kode selesai dalam waktu kurang dari 100 detik untuk mendapatkan performa terbaik.
Lingkungan eksekusi kode menyediakan 1 CPU dan memori 1 GB per pemanggilan.
Hadiah yang dapat disesuaikan sepenuhnya melalui Cloud Run
Spesifikasi API: ReinforcementTuningCloudRunRewardScorer
Konfigurasi reward Cloud Run memungkinkan Anda menerapkan logika pemberian skor yang dapat disesuaikan sepenuhnya. Layanan Cloud Run Anda harus menerapkan kontrak HTTP berikut.
Metode HTTP: POST
Isi permintaan (application/json):
{
"example": { "object(RLFTExample)" },
"response": { "object(Content)" },
"metadata": {
"step": int,
"tuningJobId": int64
}
}
example adalah ReinforcementTuningExample dalam format ProtoJSON, dan
response adalah Content dalam format ProtoJSON.
Isi respons (application/json):
{
"reward": float,
"...": {}
}
Contoh permintaan
{
"example": {
"contents": [
{
"role": "user",
"parts": [
{ "text": "What is the capital of France?" }
]
}
],
"references": {
"answer": "Paris"
}
},
"response": {
"parts": [
{ "text": "London" }
]
},
"metadata": {
"step": 1,
"tuningJobId": 123456789
}
}
Contoh respons
{
"reward": -1.0
}
Menyiapkan izin IAM
- Anda memerlukan izin
roles/run.adminpada layanan Cloud Run untuk memberikan izin IAM tambahan ke layanan tersebut. - Agen Layanan Penyesuaian Halus yang Aman untuk Platform Agen Gemini Enterprise
(
service-PROJECT_NUMBER@gcp-sa-vertex-tune.s3ns-system.iam.gserviceaccount.com) harus diberi izin (misalnya, dengan memberikanroles/run.invokerdi IAM) untuk memanggil layanan Cloud Run Anda.
Waktu tunggu dan percobaan ulang
Maksimum 300 detik diizinkan untuk layanan Cloud Run dalam
memproses setiap permintaan penghitungan reward. Jika terjadi error permintaan, layanan akan mencoba lagi dengan backoff eksponensial (misalnya, setelah 2, 4, 8, 16, dan 32 detik) sebelum menyerah. Jika tidak ada respons valid yang ditampilkan setelah
mencoba ulang semua upaya, reward akan ditandai sebagai NaN.
Rekomendasi desain reward
Bagian berikut menjelaskan praktik terbaik untuk mendesain fungsi reward yang menghasilkan sinyal terkalibrasi dengan baik untuk penyesuaian reinforcement learning.
Skala reward
Setiap reward harus berada dalam skala [-1, 1]. Nilai reward di luar rentang ini akan dipangkas.
Apa yang membuat reward menjadi bagus
- Selaras dengan hasil yang diinginkan dan dikalibrasi dengan baik dengan preferensi manusia.
- Jelas dan konsisten. Misalnya, model sulit belajar secara efektif dari reward pemberi rating otomatis dengan varians tinggi.
- Tangguh terhadap output yang tidak valid. Misalnya, reward harus dapat menampilkan nilai rendah, bukan error dan menampilkan
NaNsaat output tidak valid dihasilkan oleh model, sehingga tugas penyesuaian mengetahui bahwa itu adalah generasi yang buruk untuk dioptimalkan. Jika lebih dari 80% pemanggilan reward Anda mengalami error (error RPC, menampilkanNaN), tugas penyesuaian akan dihentikan secara otomatis. - Dirancang untuk mencegah peretasan reward. Hindari konfigurasi yang memungkinkan model mengeksploitasi celah untuk mendapatkan reward tinggi tanpa performa yang benar-benar baik.
Memvalidasi konfigurasi reward
Spesifikasi API: ValidateReinforcementTuningReward
Tugas penyesuaian bisa mahal, dan reward sangat penting untuk membuat tugas penyesuaian Anda efektif. Sebaiknya validasi konfigurasi reward Anda sebelum meluncurkan tugas penyesuaian:
- Uji validitas dan keandalan reward Anda di
Cloud de Confiance konsol atau dengan memanggil
ValidateReinforcementTuningRewardAPI. Error kecil — seperti error parsing, kasus ekstrem yang tidak tertangani, atau cuplikan kode yang tidak valid — dapat membatalkan validasi reward dan penyesuaian Anda. - Lakukan evaluasi dengan reward yang disesuaikan pada sampel set data Anda. Reinforcement learning tidak dapat belajar dengan baik jika reward terlalu sulit (reward hampir selalu
0) atau terlalu mudah (reward hampir selalu1) untuk set data.
Validasi di konsol Cloud de Confiance
Di langkah Test reward (Optional) pada wizard Create a tuned model:
- Di editor Contoh Pelatihan, masukkan baris set data JSON contoh
yang berisi
systemInstruction,contents, danreferences. - Di kolom Contoh respons model, masukkan contoh respons atau klik Buat dari Contoh Pelatihan agar model dasar membuat contoh respons.
- Klik Uji untuk mengevaluasi konfigurasi reward Anda terhadap sampel.
- Tinjau banner status dan skor keseluruhan yang dihasilkan. Klik Lihat informasi reward individual (atau Lihat skor individual dan info debug untuk reward gabungan) untuk membuka panel samping dan memeriksa skor per reward, pesan error, dan log debug.
Memvalidasi menggunakan REST API
ValidateReinforcementTuningReward API mengharapkan sampleResponse (berjenis
Content, biasanya diperoleh dari output model Gemini), RLFTExample, dan salah satu dari singleRewardConfig atau compositeRewardConfig.
Jika hasil yang ditampilkan berisi error atau NaN, berarti ada masalah pada penyiapan reward yang harus Anda atasi sebelum menjalankan tugas penyesuaian yang sebenarnya.
curl -i -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/tuningJobs:validateReinforcementTuningReward" \
-d @validate_reward_request.json
Ganti PROJECT_ID dengan project ID Cloud de Confiance by S3NS Anda.
Langkah berikutnya
- Siapkan set data penyesuaian
dan isi kolom
referencesuntuk fungsi reward Anda. - Konfigurasi hyperparameter.
- Memantau status dan metrik tugas, termasuk metrik per reward untuk reward gabungan.
- Ikuti Cloud de Confiance panduan memulai konsol atau panduan memulai API untuk membuat tugas penyesuaian pembelajaran reinforcement pertama Anda.