Evaluasi RFT - Amazon SageMaker AI

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 dengan system dan peran user

  • 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

  1. Unduh layer Lambda dari rilis. nova-custom-eval-sdk

  2. 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
  3. 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).

  4. 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

  1. 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

  2. Konfigurasikan resep Anda — Perbarui resep sampel dengan konfigurasi Anda:

    • Setel model_name_or_path ke lokasi model Anda

    • Atur lambda_arn ke ARN fungsi reward Anda

    • Setel output_s3_path ke lokasi keluaran yang Anda inginkan

    • Sesuaikan inference parameter sesuai kebutuhan

    Simpan resepnya sebagai rft_eval_recipe.yaml

  3. Jalankan evaluasi - Jalankan pekerjaan evaluasi menggunakan buku catatan yang disediakan: Buku catatan evaluasi

  4. 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