View a markdown version of this page

Optimalisasi Preferensi Langsung (DPO) - Amazon Nova

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 preferred dan non-preferred label

  • Batas gambar: Maksimum 10 gambar per blok konten

  • Modalitas campuran: Tidak dapat menggabungkan teks, gambar, dan video dalam pekerjaan pelatihan yang sama