Reinforcement fine-tuning (RFT) untuk model Amazon Nova - Amazon Bedrock

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

  • reference_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 melacak

  • difficulty_level— Indikator kompleksitas masalah

  • domain— Bidang subjek atau kategori

  • expected_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

Chemistry problem
{ "id": "chem-001", "messages": [ { "role": "system", "content": "You are a helpful chemistry assistant" }, { "role": "user", "content": "Predict hydrogen bond donors and acceptors for this SMILES: CCN(CC)CCC(=O)c1sc(N)nc1C" } ], "reference_answer": { "donor_bond_counts": 2, "acceptor_bond_counts": 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.

Math problem with metadata
{ "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"] }, "task_id": "algebra_001", "difficulty_level": "easy", "domain": "algebra", "expected_reasoning_steps": 3 }

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_effort

  • low— Overhead penalaran minimal

  • high— Kemampuan penalaran maksimum (default saat reasoning_effort ditentukan)

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 hadiahcritic/rewards/mean,critic/rewards/max, critic/rewards/min (distribusi hadiah), dan val-score/rewards/mean@1 (hadiah validasi)

  • Perilaku modelactor/entropy (variasi kebijakan; lebih tinggi sama dengan lebih eksplorasi)

  • Kesehatan pelatihanactor/pg_loss (kehilangan gradien kebijakan), actor/pg_clipfrac (frekuensi pembaruan terpotong), dan actor/grad_norm (besarnya gradien)

  • Karakteristik responsprompt_length/meanprompt_length/max,, prompt_length/min (statistik token masukan)response_length/mean,,response_length/max, response_length/min (statistik token keluaran), dan response/aborted_ratio (tingkat pembangkitan tidak lengkap; 0 sama dengan semua selesai)

  • Kinerjaperf/throughput (throughput pelatihan), perf/time_per_step (waktu per langkah pelatihan), dan timing_per_token_ms/* (waktu pemrosesan per token)

  • Penggunaan sumber dayaperf/max_memory_allocated_gb, perf/max_memory_reserved_gb (memori GPU), dan perf/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