Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Reinforcement fine-tuning (RFT) untuk model Amazon Nova
Gambaran umum
Apa itu RFT?
Reinforcement fine-tuning (RFT) meningkatkan kinerja model dengan melatih sinyal umpan balik — skor atau penghargaan yang dapat diukur yang menunjukkan seberapa baik kinerja model — daripada jawaban yang benar dan tepat. Tidak seperti fine-tuning yang diawasi yang belajar dari pasangan input-output, RFT menggunakan fungsi hadiah untuk mengevaluasi respons model dan secara iteratif mengoptimalkan model untuk memaksimalkan penghargaan ini. Pendekatan ini unggul ketika mendefinisikan output yang benar secara tepat merupakan tantangan, tetapi Anda dapat mengukur kualitas respons dengan andal.
Kapan menggunakan RFT
Gunakan RFT ketika Anda dapat menentukan kriteria keberhasilan yang jelas dan terukur tetapi berjuang untuk memberikan output yang tepat untuk pelatihan. Ini ideal untuk:
Tugas di mana kualitas bersifat subjektif atau beragam (penulisan kreatif, pengoptimalan kode, penalaran kompleks)
Skenario dengan beberapa solusi valid di mana beberapa jelas lebih baik daripada yang lain
Aplikasi yang membutuhkan perbaikan berulang, personalisasi, atau kepatuhan terhadap aturan bisnis yang kompleks
Kasus di mana mengumpulkan contoh berlabel berkualitas tinggi mahal atau tidak praktis
Kasus penggunaan terbaik
RFT unggul dalam domain di mana kualitas output dapat diukur secara objektif tetapi respons optimal sulit untuk didefinisikan di muka:
Pemecahan masalah matematika dan pembuatan kode
Penalaran ilmiah dan analisis data terstruktur
Tugas yang membutuhkan step-by-step penalaran atau pemecahan masalah multi-putaran
Aplikasi menyeimbangkan berbagai tujuan (akurasi, efisiensi, gaya)
Skenario di mana keberhasilan dapat diverifikasi secara terprogram melalui hasil eksekusi atau metrik kinerja
Model yang didukung
Amazon NovaLite 2.0
Format data
Data pelatihan RFT harus mengikuti format Fine-Tuning Penguatan OpenAI. Setiap contoh pelatihan adalah objek JSON yang berisi:
messagesArray dengan giliran percakapan menggunakansystemdan peranuserreference_answerBidang yang berisi output yang diharapkan atau kriteria evaluasi untuk perhitungan hadiah
catatan
Batasan saat ini: Hanya teks. Masukan multimodal tidak didukung untuk RFT.
Contoh: Masalah matematika
{ "id": "sample-001", "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] } }
reference_answerBidang berisi output yang diharapkan atau kriteria evaluasi yang digunakan fungsi hadiah Anda untuk menilai respons model. Ini tidak terbatas pada output terstruktur—dapat berisi format apa pun yang membantu fungsi hadiah Anda mengevaluasi kualitas.
Rekomendasi ukuran set data
Titik awal
Minimal 100 contoh pelatihan
Minimal 100 contoh evaluasi
Pendekatan evaluasi-pertama
Sebelum berinvestasi dalam pelatihan RFT skala besar, evaluasi kinerja dasar model Anda:
Kinerja tinggi (hadiah lebih dari 95 persen) - RFT mungkin tidak diperlukan karena model Anda sudah berkinerja baik
Kinerja yang sangat buruk (hadiah 0 persen) - Beralih ke SFT terlebih dahulu untuk membangun kemampuan dasar
Performa moderat — RFT kemungkinan tepat
Dimulai dengan kumpulan data kecil memungkinkan Anda untuk memvalidasi fungsi reward Anda bebas bug, konfirmasi RFT adalah pendekatan yang tepat untuk kasus penggunaan Anda, mengidentifikasi dan memperbaiki masalah lebih awal, dan menguji alur kerja sebelum meningkatkan skala.
Karakteristik data pelatihan yang efektif
Kejelasan dan konsistensi
Contoh RFT yang baik membutuhkan data input yang jelas dan tidak ambigu yang memungkinkan perhitungan hadiah yang akurat di berbagai output model. Hindari kebisingan dalam data Anda, termasuk pemformatan yang tidak konsisten, label atau instruksi yang kontradiktif, petunjuk ambigu, dan jawaban referensi yang bertentangan. Ambiguitas apa pun akan menyesatkan proses pelatihan dan menyebabkan model mempelajari perilaku yang tidak diinginkan.
Keanekaragaman
Dataset Anda harus menangkap keragaman penuh kasus penggunaan produksi untuk memastikan kinerja dunia nyata yang kuat. Sertakan format input dan kasus tepi yang berbeda, petakan pola penggunaan produksi aktual dari log dan analitik pengguna, sampel di seluruh jenis pengguna, wilayah geografis, dan variasi musiman, dan sertakan tingkat kesulitan dari masalah sederhana hingga yang kompleks.
Pertimbangan fungsi penghargaan
Rancang fungsi hadiah Anda untuk pelatihan yang efisien. Ini harus dijalankan dalam hitungan detik (bukan menit), paralel secara efektif denganAWS Lambda, mengembalikan skor yang konsisten, andal, dan menangani berbagai jenis output model dengan anggun. Fungsi hadiah yang cepat dan dapat diskalakan memungkinkan iterasi cepat dan eksperimen hemat biaya.
Properti tambahan
Format data RFT mendukung bidang khusus di luar persyaratan skema inti (messagesdanreference_answer). Fleksibilitas ini memungkinkan Anda untuk menambahkan data tambahan apa pun yang dibutuhkan fungsi hadiah Anda untuk evaluasi yang tepat.
catatan
Anda tidak perlu mengonfigurasi ini dalam resep Anda. Format data secara inheren mendukung bidang tambahan. Cukup sertakan mereka dalam data pelatihan Anda JSON, dan mereka akan diteruskan ke fungsi hadiah Anda di metadata lapangan.
Properti tambahan umum
task_id— Pengidentifikasi unik untuk melacakdifficulty_level— Indikator kompleksitas masalahdomain— Bidang subjek atau kategoriexpected_reasoning_steps— Jumlah langkah dalam solusi
Bidang tambahan ini diteruskan ke fungsi hadiah Anda selama evaluasi, memungkinkan logika penilaian canggih yang disesuaikan dengan kasus penggunaan spesifik Anda.
Contoh dengan properti tambahan
Menerapkan fungsi hadiah
Fungsi hadiah diimplementasikan sebagai fungsi Lambda yang mengevaluasi respons model dan mengembalikan skor numerik. Fungsi Lambda menerima pesan dan kebenaran dasar dalam format OpenAI dan harus mengembalikan skor sebagai kamus.
Izin IAM
Pastikan peran eksekusi SageMaker AI Anda memiliki InvokeFunction izin untuk fungsi Lambda.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-reward-function-lambda" } ] }
Pedoman desain
Saat menulis fungsi hadiah, lakukan hal berikut:
Tanggapan peringkat — Berikan jawaban terbaik dengan skor yang jelas lebih tinggi
Gunakan pemeriksaan yang konsisten — Evaluasi penyelesaian tugas, kepatuhan format, keamanan, dan panjang yang wajar
Pertahankan penskalaan yang stabil - Jaga skor tetap normal dan tidak dapat dieksploitasi
Format antarmuka
Fungsi reward Anda harus menerima dan mengembalikan data dalam format berikut.
Struktur masukan
[{ "id": "123", "messages": [ { "role": "user", "content": "Do you have a dedicated security team?" }, { "role": "assistant", "content": "As an AI developed by Amazon, I don not have a dedicated security team..." } ], "metadata": { "reference_answer": { "compliant": "No", "explanation": "As an AI developed by Company, I do not have a traditional security team..." }, "my_key": "sample-001" } }]
Struktur keluaran
[{ "id": "123", "aggregate_reward_score": 0.85, "metrics_list": [ { "name": "accuracy", "value": 0.9, "type": "Reward" }, { "name": "policy_compliance", "value": 0.8, "type": "Metric" } ] }]
Contoh fungsi Lambda
from typing import List import json from dataclasses import asdict, dataclass @dataclass class RewardOutput: """Reward service output.""" id: str aggregate_reward_score: float def lambda_handler(event, context): """Main lambda handler""" return lambda_grader(event) def lambda_grader(samples: list[dict]) -> list[dict]: """Core grader function""" scores: List[RewardOutput] = [] for sample in samples: idx = sample["id"] ground_truth = sample.get("metadata", {}).get("reference_answer") if "messages" not in sample: print(f"Messages is None/empty for id: {idx}") ro = RewardOutput(id=idx, aggregate_reward_score=0.0) scores.append(ro) continue if ground_truth is None: print(f"No answer found in ground truth for id: {idx}") ro = RewardOutput(id=idx, aggregate_reward_score=0.0) scores.append(ro) continue # Get model's response (last turn is assistant turn) last_message = sample["messages"][-1] assert last_message["role"] == "assistant", "Last message must be from assistant" model_text = last_message["content"] ground_truth_text = _extract_ground_truth_text(ground_truth) if model_text.lower() == ground_truth_text.lower(): score = 1.0 else: score = 0.0 ro = RewardOutput(id=idx, aggregate_reward_score=score) scores.append(ro) return [asdict(score) for score in scores] def _extract_ground_truth_text(ground_truth) -> str: """Turn the ground_truth field into a plain string.""" if isinstance(ground_truth, str): return ground_truth if isinstance(ground_truth, dict): if "explanation" in ground_truth and isinstance(ground_truth["explanation"], str): return ground_truth["explanation"] if "answer" in ground_truth and isinstance(ground_truth["answer"], str): return ground_truth["answer"] return json.dumps(ground_truth, ensure_ascii=False) return str(ground_truth)
Konfigurasi pelatihan
Gunakan template notebook SageMaker AI Training Job untuk memulai pekerjaan pelatihan. Untuk informasi selengkapnya, lihat Membuat pekerjaan pelatihan.
Wadah pelatihan
708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-RFT-latest
Persyaratan instans
Wadah mendukung pelatihan Peringkat Penuh dan LoRa:
Pelatihan LoRa - 2/4/6/8 × p5.48xlarge atau instans p5en.48xlarge
Pelatihan Peringkat Penuh - 2/4/6/8 × vv48xlarge instance (wajib)
Pemilihan mode penalaran
Mode yang tersedia
none— Tidak ada alasan (hilangkan bidang)reasoning_effortlow— Overhead penalaran minimalhigh— Kemampuan penalaran maksimum (default saatreasoning_effortditentukan)
catatan
Tidak ada opsi media untuk RFT. Jika reasoning_effort bidang tidak ada dalam konfigurasi Anda, penalaran dinonaktifkan. Saat penalaran diaktifkan, Anda harus menyetel max_new_tokens ke 32768 untuk mengakomodasi output penalaran yang diperpanjang.
Kapan menggunakan setiap mode
Gunakan high penalaran untuk tugas analitis yang kompleks, pemecahan masalah matematika, deduksi logis multi-langkah, dan tugas di mana pemikiran menambah nilai. step-by-step
Gunakan none (menghilangkanreasoning_effort) atau low penalaran untuk pertanyaan faktual sederhana, klasifikasi langsung, pengoptimalan kecepatan dan biaya, dan menjawab pertanyaan langsung.
Pengorbanan biaya dan kinerja
Mode penalaran yang lebih tinggi meningkatkan waktu dan biaya pelatihan, latensi dan biaya inferensi, dan kemampuan model untuk tugas penalaran yang kompleks.
Pelatihan pemantauan
Log pelatihan mencakup metrik komprehensif di setiap langkah. Kategori metrik utama meliputi:
Metrik hadiah —
critic/rewards/mean,critic/rewards/max,critic/rewards/min(distribusi hadiah), danval-score/rewards/mean@1(hadiah validasi)Perilaku model —
actor/entropy(variasi kebijakan; lebih tinggi sama dengan lebih eksplorasi)Kesehatan pelatihan —
actor/pg_loss(kehilangan gradien kebijakan),actor/pg_clipfrac(frekuensi pembaruan terpotong), danactor/grad_norm(besarnya gradien)Karakteristik respons —
prompt_length/meanprompt_length/max,,prompt_length/min(statistik token masukan)response_length/mean,,response_length/max,response_length/min(statistik token keluaran), danresponse/aborted_ratio(tingkat pembangkitan tidak lengkap; 0 sama dengan semua selesai)Kinerja —
perf/throughput(throughput pelatihan),perf/time_per_step(waktu per langkah pelatihan), dantiming_per_token_ms/*(waktu pemrosesan per token)Penggunaan sumber daya —
perf/max_memory_allocated_gb,perf/max_memory_reserved_gb(memori GPU), danperf/cpu_memory_used_gb(memori CPU)
Menggunakan model yang disetel dengan baik
Setelah pelatihan selesai, pos pemeriksaan model akhir disimpan ke lokasi keluaran yang Anda tentukan. Jalur pos pemeriksaan tersedia di log pelatihan dan manifest.json file di lokasi keluaran Amazon S3 (ditentukan output_s3_uri oleh di buku catatan Anda).
Keterbatasan dan praktik terbaik
Batasan
Batas waktu Lambda - Fungsi hadiah harus selesai dalam waktu 15 menit (mencegah proses pelarian dan mengelola biaya)
Hanya satu putaran - Percakapan multi-putaran tidak didukung
Persyaratan data - Membutuhkan keragaman yang cukup; berjuang dengan imbalan yang jarang (kurang dari 5 persen contoh positif)
Biaya komputasi — Lebih mahal daripada fine-tuning yang diawasi
Praktik terbaik
Mulai dari yang kecil - Mulailah dengan 100-200 contoh, validasi kebenaran fungsi hadiah, dan skala secara bertahap berdasarkan hasil
Evaluasi pra-pelatihan - Uji kinerja model dasar sebelum RFT. Jika hadiah secara konsisten 0 persen, gunakan SFT terlebih dahulu untuk membangun kemampuan dasar. Jika hadiah lebih besar dari 95 persen, RFT mungkin tidak diperlukan.
Monitor pelatihan — Lacak skor dan distribusi hadiah rata-rata. Perhatikan overfitting (hadiah pelatihan meningkat sementara imbalan validasi berkurang). Cari pola terkait seperti imbalan yang berada di bawah 0,15, meningkatkan varians hadiah dari waktu ke waktu, dan penurunan kinerja validasi.
Optimalkan fungsi reward — Jalankan dalam hitungan detik (bukan menit), minimalkan panggilan API eksternal, gunakan algoritme yang efisien, terapkan penanganan kesalahan yang tepat, dan manfaatkan penskalaan paralel Lambda
Strategi iterasi - Jika hadiah tidak membaik, sesuaikan desain fungsi hadiah, tingkatkan keragaman kumpulan data, tambahkan lebih banyak contoh yang representatif, dan verifikasi sinyal hadiah jelas dan konsisten