Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Optimalisasi Preferensi Langsung (DPO)
Ikhtisar
Direct Preference Optimization (DPO) adalah teknik penyelarasan yang menyempurnakan model fondasi menggunakan data perbandingan berpasangan untuk menyelaraskan output model dengan preferensi manusia. Tidak seperti metode pembelajaran penguatan, DPO secara langsung mengoptimalkan perilaku model berdasarkan umpan balik manusia tentang respons mana yang lebih diinginkan, menawarkan pendekatan yang lebih stabil dan terukur.
Mengapa menggunakan DPO
Model foundation dapat menghasilkan output yang benar secara faktual tetapi gagal untuk menyelaraskan dengan kebutuhan pengguna tertentu, nilai-nilai organisasi, atau persyaratan keselamatan. DPO mengatasi ini dengan memungkinkan Anda untuk:
Sempurnakan model ke arah pola perilaku yang diinginkan
Mengurangi output yang tidak diinginkan atau berbahaya
Sejajarkan respons model dengan suara merek dan pedoman komunikasi
Meningkatkan kualitas respons berdasarkan umpan balik pakar domain
Menerapkan pagar pengaman melalui pola respons yang disukai
Bagaimana DPO bekerja
DPO menggunakan contoh berpasangan di mana evaluator manusia menunjukkan mana dari dua kemungkinan tanggapan yang lebih disukai. Model belajar untuk memaksimalkan kemungkinan menghasilkan respons yang disukai sambil meminimalkan yang tidak diinginkan.
Kapan menggunakan DPO
Gunakan DPO dalam skenario berikut:
Mengoptimalkan output subjektif yang memerlukan penyelarasan dengan preferensi manusia tertentu
Menyesuaikan nada model, gaya, atau karakteristik konten
Membuat perbaikan yang ditargetkan berdasarkan umpan balik pengguna dan analisis kesalahan
Mempertahankan kualitas output yang konsisten di berbagai kasus penggunaan
Pelatihan dengan pembelajaran penguatan bebas hadiah hanya menggunakan data preferensi
Model dan teknik yang didukung
DPO mendukung fine-tuning parameter penuh dan LoRa (Adaptasi Peringkat Rendah):
| Model | Input yang didukung | Tipe instans | Jumlah instans yang disarankan | Jumlah instans yang diizinkan |
|---|---|---|---|---|
| Amazon Nova Mikro | Teks | ml.p5.48xbesar | 2 | 2, 4, 8 |
| Amazon Nova Lite | Teks, gambar | ml.p5.48xbesar | 4 | 2, 4, 8, 16 |
| Amazon Nova Pro | Teks, gambar | ml.p5.48xbesar | 6 | 6, 12, 24 |
Pendekatan pelatihan
DPO peringkat penuh: Memperbarui semua parameter model. Berpotensi memberikan kualitas penyelarasan yang lebih baik tetapi membutuhkan lebih banyak sumber daya komputasi dan menghasilkan model yang lebih besar.
LoRa DPO: Menggunakan adaptor ringan untuk penyetelan parameter yang efisien. Menawarkan pelatihan dan penerapan yang lebih efisien dengan model keluaran yang lebih kecil sambil mempertahankan kualitas penyelarasan yang baik.
Untuk sebagian besar kasus penggunaan, pendekatan LoRa memberikan kemampuan adaptasi yang memadai dengan efisiensi yang ditingkatkan secara signifikan.
Format data
Data pelatihan DPO mengikuti format yang sama dengan SFT, kecuali giliran asisten terakhir harus berisi pasangan preferensi dengan preferred dan non-preferred label.
Struktur dasar
Giliran asisten terakhir menggunakan candidates array alih-alihcontent:
{ "role": "assistant", "candidates": [ { "content": [ { "text": "This is the preferred response." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "This is the non-preferred response." } ], "preferenceLabel": "non-preferred" } ] }
Contoh teks lengkap
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "text": "What is the capital of France?" } ] }, { "role": "assistant", "content": [ { "text": "The capital of France is Paris." } ] }, { "role": "user", "content": [ { "text": "Tell me more about it." } ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "Paris is the capital and largest city of France, known for the Eiffel Tower, world-class museums like the Louvre, and its rich cultural heritage." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "Paris is a city in France." } ], "preferenceLabel": "non-preferred" } ] } ] }
Contoh dengan gambar
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "text": "Describe this image." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/image.jpg", "bucketOwner": "your-aws-account-id" } } } } ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "The image shows a detailed description with relevant context and observations." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "This is a picture." } ], "preferenceLabel": "non-preferred" } ] } ] }
Persyaratan dataset
Format: File JSONL tunggal untuk pelatihan, file JSONL tunggal untuk validasi (opsional)
Ukuran minimum: 1.000 pasangan preferensi direkomendasikan untuk pelatihan yang efektif
Kualitas: Data preferensi berkualitas tinggi menghasilkan hasil yang lebih efektif
Kendala lainnya: Sama seperti SFT. Untuk informasi selengkapnya, lihat Batasan set data.
Mengunggah data
aws s3 cp /path/to/training-data/ s3://your-bucket/train/ --recursive aws s3 cp /path/to/validation-data/ s3://your-bucket/val/ --recursive
Konfigurasi resep
Konfigurasi run umum
run: name: "my-dpo-run" model_type: "amazon.nova-lite-v1:0:300k" model_name_or_path: "nova-lite/prod" replicas: 4
| Parameter | Deskripsi |
|---|---|
name |
Nama deskriptif untuk pekerjaan pelatihan Anda |
model_type |
Varian model Nova (jangan modifikasi) |
model_name_or_path |
Jalur model dasar (jangan dimodifikasi) |
replicas |
Jumlah instans komputasi untuk pelatihan terdistribusi |
Konfigurasi pelatihan
training_config: max_length: 16384 global_batch_size: 32 trainer: max_epochs: 3 model: hidden_dropout: 0.0 attention_dropout: 0.0 ffn_dropout: 0.0
| Parameter | Deskripsi | Kisaran |
|---|---|---|
max_length |
Panjang urutan maksimum dalam token | 1024—32768 |
global_batch_size |
Sampel per langkah pengoptimal | Micro/Lite/Pro: 16, 32, 64, 128. Micro/Lite: 256 |
max_epochs |
Pelatihan melewati dataset | Min: 1 |
hidden_dropout |
Putus sekolah untuk status tersembunyi | 0,0—1,0 |
attention_dropout |
Putus sekolah untuk bobot perhatian | 0,0—1,0 |
ffn_dropout |
Putus sekolah untuk lapisan feed-forward | 0,0—1,0 |
Konfigurasi pengoptimal
model: optim: lr: 1e-5 name: distributed_fused_adam adam_w_mode: true eps: 1e-08 weight_decay: 0.0 betas: - 0.9 - 0.999 sched: warmup_steps: 10 constant_steps: 0 min_lr: 1e-6
| Parameter | Deskripsi | Kisaran |
|---|---|---|
lr |
Tingkat pembelajaran | 0—1 (biasanya 1e-6 hingga 1e-4) |
weight_decay |
Kekuatan regularisasi L2 | 0,0—1,0 |
warmup_steps |
Langkah-langkah untuk meningkatkan tingkat pembelajaran secara bertahap | 0—20 |
min_lr |
Tingkat pembelajaran minimum pada akhir pembusukan | 0—1 (harus < lr) |
Konfigurasi khusus DPO
model: dpo_cfg: beta: 0.1
| Parameter | Deskripsi | Kisaran |
|---|---|---|
beta |
Keseimbangan antara pemasangan data pelatihan dan tetap dekat dengan model asli | 0,001—0,5 |
Beta yang lebih tinggi (0.1): Mempertahankan lebih banyak perilaku model referensi tetapi dapat mempelajari preferensi lebih lambat
Beta yang lebih rendah (0,01-0,05): Pembelajaran preferensi yang lebih agresif tetapi berisiko berbeda dari referensi
Rekomendasi: Mulailah dengan beta: 0.1 dan sesuaikan ke bawah jika pembelajaran preferensi tampaknya tidak mencukupi.
Konfigurasi LoRa PEFT
model: peft: peft_scheme: "lora" lora_tuning: loraplus_lr_ratio: 64.0 alpha: 32 adapter_dropout: 0.01
| Parameter | Deskripsi | Nilai yang diizinkan |
|---|---|---|
peft_scheme |
Metode fine-tuning | "lora"atau null (peringkat penuh) |
alpha |
Faktor penskalaan untuk bobot LoRa | 32, 64, 96, 128, 160, 192 |
loraplus_lr_ratio |
Faktor penskalaan tingkat pembelajaran LoRa+ | 0,0—100,0 |
adapter_dropout |
Regularisasi untuk parameter LoRa | 0,0—1,0 |
Memulai pekerjaan pelatihan
Gambar kontainer
708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest
Contoh kode
from sagemaker.pytorch import PyTorch from sagemaker.inputs import TrainingInput instance_type = "ml.p5.48xlarge" instance_count = 4 image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest" recipe_overrides = { "training_config": { "trainer": {"max_epochs": 2}, "model": { "dpo_cfg": {"beta": 0.1}, "peft": { "peft_scheme": "lora", "lora_tuning": { "loraplus_lr_ratio": 64.0, "alpha": 32, "adapter_dropout": 0.01, }, }, }, }, } estimator = PyTorch( output_path=f"s3://{bucket_name}/{job_name}", base_job_name=job_name, role=role, instance_count=instance_count, instance_type=instance_type, training_recipe="fine-tuning/nova/nova_lite_p5_gpu_lora_dpo", recipe_overrides=recipe_overrides, max_run=18000, sagemaker_session=sagemaker_session, image_uri=image_uri, disable_profiler=True, debugger_hook_config=False, ) train_input = TrainingInput( s3_data=train_dataset_s3_path, distribution="FullyReplicated", s3_data_type="Converse", ) val_input = TrainingInput( s3_data=val_dataset_s3_path, distribution="FullyReplicated", s3_data_type="Converse", ) estimator.fit(inputs={"train": train_input, "validation": val_input}, wait=True)
Menerapkan model
Setelah pelatihan selesai, terapkan model yang disesuaikan ke Amazon Bedrock menggunakan fungsionalitas Impor Model Kustom. Model ini mendukung throughput yang disediakan dan inferensi sesuai permintaan. Model terlatih Lora mendukung inferensi sesuai permintaan.
Untuk petunjuk penerapan, lihat Menerapkan model yang disesuaikan.
Batasan
Modalitas input: DPO hanya menerima teks dan gambar. Input video tidak didukung.
Modalitas keluaran: Hanya teks
Pasangan preferensi: Giliran asisten terakhir harus berisi tepat dua kandidat dengan
preferreddannon-preferredlabelBatas gambar: Maksimum 10 gambar per blok konten
Modalitas campuran: Tidak dapat menggabungkan teks, gambar, dan video dalam pekerjaan pelatihan yang sama