Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Evaluasi RFT
Apa itu evaluasi RFT?
Evaluasi RFT memungkinkan Anda menilai kinerja model Anda menggunakan fungsi hadiah khusus sebelum, selama, atau setelah pelatihan pembelajaran penguatan. Tidak seperti evaluasi standar yang menggunakan metrik yang telah ditentukan sebelumnya, Evaluasi RFT memungkinkan Anda menentukan kriteria keberhasilan Anda sendiri melalui fungsi Lambda yang menilai output model berdasarkan kebutuhan spesifik Anda.
Mengapa mengevaluasi dengan RFT?
Evaluasi sangat penting untuk menentukan apakah proses fine-tuning RL memiliki:
-
Penyelarasan model yang ditingkatkan dengan kasus penggunaan spesifik dan nilai-nilai kemanusiaan Anda
-
Mempertahankan atau meningkatkan kemampuan model pada tugas-tugas utama
-
Menghindari efek samping yang tidak diinginkan seperti berkurangnya faktualitas, peningkatan verbositas, atau penurunan kinerja pada tugas-tugas lain
-
Memenuhi kriteria keberhasilan khusus Anda seperti yang ditentukan oleh fungsi hadiah Anda
Kapan menggunakan evaluasi RFT
Gunakan Evaluasi RFT dalam skenario ini:
-
Sebelum Pelatihan RFT: Tetapkan metrik dasar pada kumpulan data evaluasi Anda
-
Selama Pelatihan RFT: Pantau kemajuan pelatihan dengan pos pemeriksaan menengah
-
Setelah Pelatihan RFT: Validasi bahwa model akhir memenuhi kebutuhan Anda
-
Membandingkan Model: Mengevaluasi beberapa versi model menggunakan kriteria hadiah yang konsisten
catatan
Gunakan Evaluasi RFT saat Anda membutuhkan metrik khusus domain khusus. Untuk evaluasi tujuan umum (akurasi, kebingungan, BLEU), gunakan metode evaluasi standar.
Persyaratan format data
Struktur data masukan
Data input evaluasi RFT harus mengikuti format Fine-Tuning Penguatan OpenAI. Setiap contoh adalah objek JSON yang berisi:
-
messages— Array giliran percakapan dengansystemdan peranuser -
reference_answer— Output yang diharapkan atau data kebenaran dasar yang digunakan oleh fungsi hadiah Anda untuk penilaian
Contoh format data
{ "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Solve for x. Return only JSON like {\"x\": <number>}. Equation: 2x + 5 = 13" } ] } ], "reference_answer": { "x": 4 } }
Keterbatasan saat ini
-
Hanya teks: Tidak ada input multimodal (gambar, audio, video) yang didukung
-
Percakapan satu putaran: Hanya mendukung pesan pengguna tunggal (tidak ada dialog multi-putaran)
-
Format JSON: Data input harus dalam format JSONL (satu objek JSON per baris)
-
Output model: Evaluasi dilakukan pada penyelesaian yang dihasilkan dari model yang ditentukan
Mempersiapkan resep evaluasi Anda
Notebook sampel
Untuk contoh lengkap, lihat Buku catatan evaluasi.
Contoh konfigurasi resep
run: name: nova-lite-rft-eval-job model_type: amazon.nova-lite-v1:0:300k model_name_or_path: s3://escrow_bucket/model_location # [MODIFIABLE] S3 path to your model or model identifier replicas: 1 # [MODIFIABLE] For SageMaker Training jobs only; fixed for HyperPod jobs data_s3_path: "" # [REQUIRED FOR HYPERPOD] Leave empty for SageMaker Training jobs and use TrainingInput in sagemaker python SDK output_s3_path: "" # [REQUIRED] Output artifact S3 path for evaluation results evaluation: task: rft_eval # [FIXED] Do not modify strategy: rft_eval # [FIXED] Do not modify metric: all # [FIXED] Do not modify # Inference Configuration inference: max_new_tokens: 8192 # [MODIFIABLE] Maximum tokens to generate top_k: -1 # [MODIFIABLE] Top-k sampling parameter top_p: 1.0 # [MODIFIABLE] Nucleus sampling parameter temperature: 0 # [MODIFIABLE] Sampling temperature (0 = deterministic) top_logprobs: 0 # [MODIFIABLE] Set between 1-20 to enable logprobs output # ============================================================================= # Bring Your Own Reinforcement Learning Environment # ============================================================================= rl_env: reward_lambda_arn: arn:aws:lambda:<region>:<account_id>:function:<reward-function-name>
Fungsi hadiah preset
Dua fungsi reward preset (prime_codedanprime_math) dari pustaka verl open source tersedia sebagai lapisan Lambda untuk memudahkan integrasi dengan fungsi Lambda RFT Anda.
Ikhtisar
Fungsi preset ini memberikan kemampuan out-of-the-box evaluasi untuk:
-
prime_code— Pembuatan kode dan evaluasi kebenaran -
prime_math— Penalaran matematis dan evaluasi pemecahan masalah
Pengaturan cepat
-
Publikasikan lapisan Lambda menggunakan AWS Command Line Interface ()AWS CLI:
aws lambda publish-layer-version \ --layer-name preset-function-layer \ --description "Preset reward function layer with dependencies" \ --zip-file fileb://universal_reward_layer.zip \ --compatible-runtimes python3.9 python3.10 python3.11 python3.12 \ --compatible-architectures x86_64 arm64 -
Tambahkan layer ke fungsi Lambda Anda di AWS Management Console (Pilih layer preset-function-layer dari kustom dan tambahkan juga AWSSDKPandas-Python 312 untuk dependensi numpy).
-
Impor dan gunakan dalam kode Lambda Anda:
from prime_code import compute_score # For code evaluation from prime_math import compute_score # For math evaluation
fungsi prime_code
Mengevaluasi tugas pembuatan kode Python dengan mengeksekusi kode terhadap kasus uji dan mengukur kebenaran.
Contoh format dataset masukan
{"messages":[{"role":"user","content":"Write a function that returns the sum of two numbers."}],"reference_answer":{"inputs":["3\n5","10\n-2","0\n0"],"outputs":["8","8","0"]}} {"messages":[{"role":"user","content":"Write a function to check if a number is even."}],"reference_answer":{"inputs":["4","7","0","-2"],"outputs":["True","False","True","True"]}}
Fitur utama
-
Ekstraksi kode otomatis dari blok kode penurunan harga
-
Deteksi fungsi dan pengujian berbasis panggilan
-
Eksekusi kasus uji dengan perlindungan batas waktu
-
Validasi sintaks dan pemeriksaan kompilasi
-
Pelaporan kesalahan terperinci dengan traceback
fungsi prime_math
Mengevaluasi penalaran matematika dan kemampuan pemecahan masalah dengan dukungan matematika simbolis.
Format masukan
{"messages":[{"role":"user","content":"What is the derivative of x^2 + 3x?."}],"reference_answer":"2*x + 3"}
Fitur utama
-
Evaluasi matematika simbolis menggunakan SymPy
-
Beberapa format jawaban (LaTeX, teks biasa, simbolis)
-
Pemeriksaan kesetaraan matematika
-
Normalisasi dan penyederhanaan ekspresi
Persyaratan format data
Untuk evaluasi kode
-
Input: Array argumen fungsi (tipe yang tepat: bilangan bulat, string, dll.)
-
Output: Array nilai pengembalian yang diharapkan (tipe yang tepat: boolean, angka, dll.)
-
Kode: Harus menggunakan Python dengan definisi fungsi yang jelas
Untuk evaluasi matematika
-
Jawaban referensi: Ekspresi matematika atau nilai numerik
-
Tanggapan: Bisa LaTe X, teks biasa, atau notasi simbolik
-
Kesetaraan: Diperiksa secara simbolis, bukan hanya pencocokan string
Praktik terbaik
-
Gunakan tipe data yang tepat dalam kasus uji (bilangan bulat vs string, boolean vs “True”)
-
Berikan tanda tangan fungsi yang jelas dalam masalah kode
-
Sertakan kasus tepi dalam input pengujian (nol, angka negatif, input kosong)
-
Format ekspresi matematika secara konsisten dalam jawaban referensi
-
Uji fungsi reward Anda dengan data sampel sebelum penerapan
Penanganan kesalahan
Kedua fungsi tersebut mencakup penanganan kesalahan yang kuat untuk:
-
Kesalahan kompilasi dalam kode yang dihasilkan
-
Pengecualian runtime selama eksekusi
-
Data masukan cacat
-
Skenario batas waktu untuk loop tak terbatas
-
Ekspresi matematika tidak valid
Membuat fungsi hadiah Anda
Persyaratan Lambda ARN
Lambda ARN Anda harus mengikuti format ini:
"arn:aws:lambda:*:*:function:*SageMaker*"
Jika Lambda tidak memiliki skema penamaan ini, pekerjaan akan gagal dengan kesalahan ini:
[ERROR] Unexpected error: lambda_arn must contain one of: ['SageMaker', 'sagemaker', 'Sagemaker'] when running on SMHP platform (Key: lambda_arn)
Format permintaan Lambda
Fungsi Lambda Anda menerima data dalam format ini:
[ { "id": "sample-001", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Do you have a dedicated security team?" } ] }, { "role": "nova_assistant", "content": [ { "type": "text", "text": "As an AI developed by Company, I don't have a dedicated security team..." } ] } ], "reference_answer": { "compliant": "No", "explanation": "As an AI developed by Company, I do not have a traditional security team..." } } ]
catatan
Struktur pesan mencakup content array bersarang, cocok dengan format data input. Pesan terakhir dengan peran nova_assistant berisi respons yang dihasilkan model.
Format respons Lambda
Fungsi Lambda Anda harus mengembalikan data dalam format ini:
[ { "id": "sample-001", "aggregate_reward_score": 0.75, "metrics_list": [ { "name": "accuracy", "value": 0.85, "type": "Metric" }, { "name": "fluency", "value": 0.90, "type": "Reward" } ] } ]
Bidang respons
-
id— Harus cocok dengan ID sampel input -
aggregate_reward_score— Skor keseluruhan (biasanya 0,0 hingga 1,0) -
metrics_list— Array metrik individu dengan:-
name— Pengidentifikasi metrik (misalnya, “akurasi”, “kelancaran”) -
value— Skor metrik (biasanya 0,0 hingga 1,0) -
type— Baik “Metrik” (untuk pelaporan) atau “Hadiah” (digunakan dalam pelatihan)
-
Izin IAM
Izin yang diperlukan
Peran SageMaker eksekusi Anda harus memiliki izin untuk menjalankan fungsi Lambda Anda. Tambahkan kebijakan ini ke peran SageMaker eksekusi Anda:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" } ] }
Peran pelaksanaan Lambda
Peran eksekusi fungsi Lambda Anda memerlukan izin eksekusi Lambda dasar:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }
Jika fungsi Lambda Anda mengakses AWS layanan lain (misalnya, S3 untuk data referensi, DynamoDB untuk logging), tambahkan izin tersebut ke peran eksekusi Lambda.
Melaksanakan pekerjaan evaluasi
-
Siapkan data Anda - Format data evaluasi Anda sesuai dengan persyaratan format data dan unggah file JSONL Anda ke S3:
s3://your-bucket/eval-data/eval_data.jsonl -
Konfigurasikan resep Anda — Perbarui resep sampel dengan konfigurasi Anda:
-
Setel
model_name_or_pathke lokasi model Anda -
Atur
lambda_arnke ARN fungsi reward Anda -
Setel
output_s3_pathke lokasi keluaran yang Anda inginkan -
Sesuaikan
inferenceparameter sesuai kebutuhan
Simpan resepnya sebagai
rft_eval_recipe.yaml -
-
Jalankan evaluasi - Jalankan pekerjaan evaluasi menggunakan buku catatan yang disediakan: Buku catatan evaluasi
-
Pantau kemajuan — Pantau pekerjaan evaluasi Anda melalui:
-
SageMaker Konsol: Periksa status pekerjaan dan log
-
CloudWatch Log: Lihat log eksekusi terperinci
-
Lambda Logs: Masalah fungsi hadiah debug
-
Memahami hasil evaluasi
Format output
Pekerjaan evaluasi menghasilkan hasil ke lokasi S3 yang Anda tentukan dalam format JSONL. Setiap baris berisi hasil evaluasi untuk satu sampel:
{ "id": "sample-001", "aggregate_reward_score": 0.75, "metrics_list": [ { "name": "accuracy", "value": 0.85, "type": "Metric" }, { "name": "fluency", "value": 0.90, "type": "Reward" } ] }
catatan
Output Pekerjaan Evaluasi RFT identik dengan format Respons Lambda. Layanan evaluasi melewati respons fungsi Lambda Anda tanpa modifikasi, memastikan konsistensi antara perhitungan hadiah Anda dan hasil akhir.
Menafsirkan hasil
Skor hadiah agregat
-
Rentang: Biasanya 0,0 (terburuk) hingga 1,0 (terbaik), tetapi tergantung pada implementasi Anda
-
Tujuan: Angka tunggal yang merangkum kinerja keseluruhan
-
Penggunaan: Bandingkan model, lacak peningkatan selama pelatihan
Metrik individu
-
Jenis Metrik: Metrik informasi untuk analisis
-
Jenis Hadiah: Metrik yang digunakan selama pelatihan RFT
-
Interpretasi: Nilai yang lebih tinggi umumnya menunjukkan kinerja yang lebih baik (kecuali jika Anda merancang metrik terbalik)
Tolok ukur kinerja
Apa yang dimaksud dengan kinerja “baik” tergantung pada kasus penggunaan Anda:
| Rentang skor | Interpretasi | Tindakan |
|---|---|---|
| 0,8 - 1,0 | Sangat baik | Model siap untuk penyebaran |
| 0,6 - 0,8 | Baik | Perbaikan kecil mungkin bermanfaat |
| 0,4 - 0,6 | Adil | Diperlukan peningkatan yang signifikan |
| 0,0 - 0,4 | Miskin | Tinjau data pelatihan dan fungsi hadiah |
penting
Ini adalah pedoman umum. Tentukan ambang batas Anda sendiri berdasarkan persyaratan bisnis, kinerja model dasar, kendala khusus domain, dan analisis biaya-manfaat pelatihan lebih lanjut.
Pemecahan masalah
Masalah umum
| Isu | Penyebab | Solusi |
|---|---|---|
| Batas waktu Lambda | Perhitungan hadiah yang kompleks | Tingkatkan batas waktu Lambda atau optimalkan fungsi |
| Izin ditolak | Izin IAM tidak ada | Verifikasi SageMaker peran dapat memanggil Lambda |
| Skor yang tidak konsisten | Fungsi hadiah non-deterministik | Gunakan benih tetap atau logika deterministik |
| Hasil yang hilang | Kesalahan Lambda tidak tertangkap | Tambahkan penanganan kesalahan komprehensif di Lambda |
Daftar periksa debug
-
Verifikasi data input mengikuti format yang benar dengan array konten bersarang
-
Konfirmasikan Lambda ARN benar dan fungsinya diterapkan
-
Periksa izin IAM untuk → Pemanggilan SageMaker Lambda
-
Tinjau CloudWatch log untuk kesalahan Lambda
-
Validasi respons Lambda sesuai dengan format yang diharapkan
Praktik terbaik
-
Mulai Sederhana: Mulailah dengan fungsi hadiah dasar dan ulangi
-
Uji Lambda Secara Terpisah: Gunakan acara uji Lambda sebelum evaluasi penuh
-
Validasi pada Dataset Kecil: Jalankan evaluasi pada subset sebelum dataset lengkap
-
Kontrol Versi: Lacak versi fungsi hadiah bersama versi model
-
Biaya Monitor: Pemanggilan Lambda dan waktu komputasi memengaruhi biaya
-
Log Ekstensif: Gunakan pernyataan cetak di Lambda untuk debugging
-
Atur Timeout dengan Tepat: Seimbangkan antara kesabaran dan biaya
-
Metrik Dokumen: Tentukan dengan jelas apa yang diukur setiap metrik
Langkah selanjutnya
Setelah menyelesaikan evaluasi RFT:
-
Jika hasilnya memuaskan: Terapkan model ke produksi
-
Jika perbaikan diperlukan:
-
Sesuaikan fungsi hadiah
-
Kumpulkan lebih banyak data pelatihan
-
Ubah hiperparameter pelatihan
-
Jalankan iterasi pelatihan RFT tambahan
-
-
Pemantauan berkelanjutan: Evaluasi ulang secara berkala dengan data baru