Optimalisasi preferensi langsung (DPO) - Amazon SageMaker AI

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Optimalisasi preferensi langsung (DPO)

Optimalisasi preferensi langsung (DPO) adalah metode fine-tuning yang efisien untuk model pondasi yang menggunakan data perbandingan berpasangan untuk menyelaraskan output model dengan preferensi manusia. Pendekatan ini memungkinkan optimalisasi langsung perilaku model berdasarkan umpan balik manusia tentang respons mana yang lebih diinginkan.

Baik DPO peringkat penuh dan adaptor peringkat rendah (LoRa) DPO tersedia.

Persyaratan format data

Untuk DPO peringkat penuh dan LoRa, persyaratan format data pelatihan mirip dengan SFT. Namun, untuk DPO, giliran terakhir harus memiliki pasangan preferensi. Berikut adalah contoh format data DPO:

// N-1 turns same as SFT format { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } // content list can contain multiple 'text' objects ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } // content list can contain multiple 'text' objects ], "preferenceLabel": "non-preferred" } ] }

Berikut adalah contoh teks DPO lengkap lainnya:

{ "system": [ { "text": "..." } ], "messages":[ { "role": "user", "content": [ { "text": "..." } ] }, { "role": "assistant", "content": [ { "text": "..." } ] }, { "role": "user", "content": [ { "text": "..." } ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } ], "preferenceLabel": "non-preferred" } ] } ], }

Berikut adalah contoh gambar DPO lengkap:

{ "system": [ { "text": "..." } ], "messages":[ { "role": "user", "content": [ { "text": "..." }, { "text": "..." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } } // "content" can have multiple "text" and "image" objects. // max image count is 10 ] }, { "role": "assistant", "content": [ { "text": "..." } ] }, { "role": "user", "content": [ { "text": "..." }, { "text": "..." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } } // "content" can have multiple "text" and "image" objects. // max image count is 10 ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } ], "preferenceLabel": "non-preferred" } ] } ], }

Kendala lain pada kumpulan data input berlaku. Untuk informasi selengkapnya, lihat Batasan set data. Kami menyarankan Anda menyertakan minimal 1.000 pasangan preferensi untuk pelatihan yang efektif. Data preferensi berkualitas tinggi menghasilkan hasil yang lebih efisien.

Kami merekomendasikan menggunakan DPO dalam skenario berikut:

  • Mengoptimalkan output subjektif yang membutuhkan penyelarasan dengan preferensi manusia tertentu.

  • Menyesuaikan nada, gaya, atau karakteristik konten model agar sesuai dengan pola respons yang diinginkan.

  • Membuat perbaikan yang ditargetkan untuk model yang ada berdasarkan umpan balik pengguna dan analisis kesalahan.

  • Mempertahankan kualitas output yang konsisten di berbagai kasus penggunaan.

  • Menerapkan pagar pengaman melalui pola respons yang disukai.

  • Pelatihan dengan pembelajaran penguatan bebas hadiah.

  • Hanya menggunakan data preferensi alih-alih data bertingkat atau berlabel.

  • Meningkatkan model dalam tugas penyelarasan bernuansa, seperti membantu, tidak berbahaya, atau kejujuran.

DPO peringkat penuh

Parameter Amazon Nova yang tersedia untuk DPO peringkat penuh adalah sebagai berikut:

  • Jalankan konfigurasi

    • name: Nama deskriptif untuk pekerjaan pelatihan Anda. Ini membantu mengidentifikasi pekerjaan Anda di AWS Management Console.

    • model_type: Varian model Nova untuk digunakan. Pilihan yang tersedia adalahamazon.nova-micro-v1:0:128k,amazon.nova-lite-v1:0:300k, atauamazon.nova-pro-v1:0:300k.

    • model_name_or_path: Jalur ke model dasar. Pilih model yang akan digunakan darinova-micro/prod, nova-lite/prodnova-pro/prod, atau jalur S3 untuk pos pemeriksaan pasca-pelatihan (). s3://<escrow bucket>/<job id>/outputs/checkpoints

    • replicas: Jumlah instans komputasi yang akan digunakan untuk pelatihan terdistribusi. Nilai yang tersedia bervariasi berdasarkan model yang dipilih. Amazon Nova Micro mendukung 2, 4, atau 8 replika. Amazon Nova Lite mendukung replika 4, 8, 16, atau 32. Amazon Nova Pro mendukung 6, 12, atau 24 replika.

    • data_s3_path: Lokasi S3 dari dataset pelatihan, yang merupakan file JSONL. File ini harus berada di akun dan Wilayah yang sama dengan cluster. Semua lokasi S3 yang disediakan harus berada di akun dan Wilayah yang sama.

    • validation_data_s3_path: Lokasi S3 dari dataset validasi, yang merupakan file JSONL. File ini harus berada di tempat yang sama Akun AWS dan Region sebagai cluster. Semua lokasi S3 yang disediakan harus berada di akun dan Wilayah yang sama.

  • Konfigurasi pelatihan

    • max_length: Panjang urutan maksimum dalam token. Ini menentukan ukuran jendela konteks untuk pelatihan. Nilai maksimum yang didukung adalah 32.768 token untuk DPO.

      Urutan yang lebih panjang akan meningkatkan efisiensi pelatihan dengan mengorbankan peningkatan kebutuhan memori. Kami menyarankan Anda mencocokkan max_length parameter dengan distribusi data Anda.

  • Pengaturan pelatih

    • max_epochs: Jumlah lintasan lengkap melalui dataset pelatihan Anda. Nilai maksimumnya adalah 5.

      Secara umum, kumpulan data yang lebih besar membutuhkan lebih sedikit zaman untuk bertemu, sementara kumpulan data yang lebih kecil membutuhkan lebih banyak zaman untuk bertemu. Kami menyarankan Anda menyesuaikan jumlah epoch berdasarkan ukuran data Anda.

  • Pengaturan model

    • hidden_dropout: Probabilitas menjatuhkan output status tersembunyi. Tingkatkan nilai ini sekitar 0,0-0,2 untuk mengurangi overfitting pada kumpulan data yang lebih kecil. Nilai yang valid adalah antara 0-1, inklusif.

    • attention_dropout: Probabilitas menjatuhkan bobot perhatian. Parameter ini dapat membantu generalisasi. Nilai yang valid adalah antara 0-1, inklusif.

    • ffn_dropout: Probabilitas menjatuhkan output jaringan feed-forward. Nilai yang valid adalah antara 0-1, inklusif.

  • Konfigurasi pengoptimal

    • lr: Tingkat pembelajaran, yang mengontrol ukuran langkah selama pengoptimalan. Kami merekomendasikan nilai antara 1e-6-1e-4 untuk kinerja yang baik. Nilai yang valid adalah antara 0-1, inklusif.

    • name: Algoritma pengoptimal. Saat ini, hanya distributed_fused_adam didukung.

    • weight_decay: Kekuatan regularisasi L2. Nilai yang lebih tinggi (antara 0,01-0,1) meningkatkan regularisasi.

    • warmup_steps: Jumlah langkah untuk secara bertahap meningkatkan tingkat pembelajaran. Ini meningkatkan stabilitas pelatihan. Nilai yang valid adalah antara 1-20, inklusif.

    • min_lr: Tingkat pembelajaran minimum pada akhir pembusukan. Nilai yang valid antara 0-1, inklusif, tetapi harus kurang dari tingkat pembelajaran.

  • Konfigurasi DPO

    • beta: Menentukan seberapa dekat model harus sesuai dengan data pelatihan atau model asli. Nilai yang valid adalah antara 0,001-0,5, inklusif.

      Tentukan nilai yang lebih besar (misalnya, 0,5) untuk mempertahankan lebih banyak perilaku model referensi sambil lebih lambat mempelajari preferensi baru. Tentukan nilai yang lebih kecil (misalnya, 0,01-0,05) untuk lebih cepat mempelajari preferensi baru dengan risiko menyimpang dari perilaku model referensi.

Resep DPO peringkat penuh

Berikut ini adalah resep peringkat penuh untuk DPO

## Run config run: name: "my-dpo-micro-job" # A descriptive name for your training job model_type: "amazon.nova-micro-v1:0:128k" # Model variant specification, do not change model_name_or_path: "nova-micro/prod" # Base model path, do not change replicas: 2 # Number of compute instances for training, allowed values are 2, 4, 8 data_s3_path: s3:Replace with your S3 bucket name/input.jsonl validation_data_s3_path: [OPTIONAL] s3:your S3 bucket name/input.jsonl output_s3_path: [S3_PATH_TO_STORE_MANIFEST] ## Training specific configs training_config: max_length: 32768 # Maximum context window size (tokens). global_batch_size: 64 # Global batch size, allowed values are 16, 32, 64. trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states, must be between 0.0 and 1.0 attention_dropout: 0.0 # Dropout for attention weights, must be between 0.0 and 1.0 ffn_dropout: 0.0 # Dropout for feed-forward networks, must be between 0.0 and 1.0 optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm, do not change adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 betas: # Adam optimizer betas, must be between 0.0 and 1.0 - 0.9 - 0.999 sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate, must be lower than lr dpo_cfg: beta: 0.1 # Strength of preference enforcement. Limits: [0.001, 0.5] peft: peft_scheme: null # Disable LoRA, trigger full rank fine tuning

Adaptor peringkat rendah DPO

Parameter Amazon Nova yang tersedia untuk DPO adaptor peringkat rendah adalah sebagai berikut:

  • Jalankan konfigurasi

    • name: Nama deskriptif untuk pekerjaan pelatihan Anda. Ini membantu mengidentifikasi pekerjaan Anda di AWS Management Console.

    • model_type: Varian model Nova untuk digunakan. Pilihan yang tersedia adalahamazon.nova-micro-v1:0:128k,amazon.nova-lite-v1:0:300k, atauamazon.nova-pro-v1:0:300k.

    • model_name_or_path: Jalur ke model dasar. Pilih model yang akan digunakan darinova-micro/prod, nova-lite/prodnova-pro/prod, atau jalur S3 untuk pos pemeriksaan pasca-pelatihan (). s3://<escrow bucket>/<job id>/outputs/checkpoints

    • replicas: Jumlah instans komputasi yang akan digunakan untuk pelatihan terdistribusi. Nilai yang tersedia bervariasi berdasarkan model yang dipilih. Amazon Nova Micro mendukung 2, 4, atau 8 replika. Amazon Nova Lite mendukung replika 4, 8, 16, atau 32. Amazon Nova Pro mendukung 6, 12, atau 24 replika.

  • Konfigurasi pelatihan

    • max_length: Panjang urutan maksimum dalam token. Ini menentukan ukuran jendela konteks untuk pelatihan. Nilai maksimum yang didukung adalah 32.768 token untuk DPO.

      Urutan yang lebih panjang akan meningkatkan efisiensi pelatihan dengan mengorbankan peningkatan kebutuhan memori. Kami menyarankan Anda mencocokkan max_length parameter dengan distribusi data Anda.

  • Pengaturan pelatih

    • max_epochs: Jumlah lintasan lengkap melalui dataset pelatihan Anda. Nilai maksimumnya adalah 5.

      Secara umum, kumpulan data yang lebih besar membutuhkan lebih sedikit zaman untuk bertemu, sementara kumpulan data yang lebih kecil membutuhkan lebih banyak zaman untuk bertemu. Kami menyarankan Anda menyesuaikan jumlah epoch berdasarkan ukuran data Anda.

  • Pengaturan model

    • hidden_dropout: Probabilitas menjatuhkan output status tersembunyi. Tingkatkan nilai ini sekitar 0,0-0,2 untuk mengurangi overfitting pada kumpulan data yang lebih kecil. Nilai yang valid adalah antara 0-1, inklusif.

    • attention_dropout: Probabilitas menjatuhkan bobot perhatian. Parameter ini dapat membantu generalisasi. Nilai yang valid adalah antara 0-1, inklusif.

    • ffn_dropout: Probabilitas menjatuhkan output jaringan feed-forward. Nilai yang valid adalah antara 0-1, inklusif.

  • Konfigurasi pengoptimal

    • lr: Tingkat pembelajaran, yang mengontrol ukuran langkah selama pengoptimalan. Kami merekomendasikan nilai antara 1e-6-1e-4 untuk kinerja yang baik. Nilai yang valid adalah antara 0-1, inklusif.

    • name: Algoritma pengoptimal. Saat ini, hanya distributed_fused_adam didukung.

    • weight_decay: Kekuatan regularisasi L2. Nilai yang lebih tinggi (antara 0,01-0,1) meningkatkan regularisasi.

    • warmup_steps: Jumlah langkah untuk secara bertahap meningkatkan tingkat pembelajaran. Ini meningkatkan stabilitas pelatihan. Nilai yang valid adalah antara 1-20, inklusif.

    • min_lr: Tingkat pembelajaran minimum pada akhir pembusukan. Nilai yang valid antara 0-1, inklusif, tetapi harus kurang dari tingkat pembelajaran.

  • Konfigurasi DPO

    • beta: Menentukan seberapa dekat model harus sesuai dengan data pelatihan atau model asli. Nilai yang valid adalah antara 0,001-0,5, inklusif.

      Tentukan nilai yang lebih besar (misalnya, 0,5) untuk mempertahankan lebih banyak perilaku model referensi sambil lebih lambat mempelajari preferensi baru. Tentukan nilai yang lebih kecil (misalnya, 0,01-0,05) untuk lebih cepat mempelajari preferensi baru dengan risiko menyimpang dari perilaku model referensi.

  • Parameter konfigurasi LoRa

    • peft_scheme: Atur lora untuk mengaktifkan Adaptasi Peringkat Rendah, yang menghasilkan model keluaran yang lebih efisien dan lebih kecil. Properti khusus Lora ini juga tersedia:

      • alpha: Faktor penskalaan untuk bobot LoRa. Ini biasanya diatur ke nilai yang sama denganadapter_dim.

      • adapter_dropout: Parameter regularisasi untuk parameter LoRa.

Resep DPO LoRa

Berikut ini adalah resep untuk LoRa DPO.

## Run config run: name: "my-lora-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification, do not change model_name_or_path: "nova-lite/prod" # Base model path, do not change replicas: 4 # Number of compute instances for training. All supported values: {4, 8, 16} data_s3_path: s3:Replace with your S3 bucket name/input.jsonl validation_data_s3_path: [OPTIONAL] s3:your S3 bucket name/input.jsonl output_s3_path: [S3_PATH_TO_STORE_MANIFEST] ## Training specific configs training_config: max_length: 16384 # Maximum context window size (tokens). Should be between [1024, 32768] and multiple of 1024. # Note: Image dataset for DPO has a limit on 20k samples and 16384 max_length global_batch_size: 64 # Total samples per step. Limits: {16, 32, 64, 128, 256} trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states. Limits: [0.0, 1.0] attention_dropout: 0.0 # Dropout for attention weights. Limits: [0.0, 1.0] ffn_dropout: 0.0 # Dropout for feed-forward networks. Limits: [0.0, 1.0] optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm, do not change adam_w_mode: true # Enable AdamW mode eps: 1e-08 # Epsilon for numerical stability weight_decay: 0.01 # L2 regularization strength betas: # Adam optimizer betas. Limits: [0.0, 1.0] - 0.9 - 0.999 sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate dpo_cfg: beta: 0.01 # Strength of preference enforcement. Limits: [0.001, 0.5] peft: peft_scheme: "lora" # Enable LoRA for parameter-efficient fine-tuning lora_tuning: loraplus_lr_ratio: 20.0 # LoRA+ learning rate scaling factor. Limits: [0.0, 100.0] alpha: 64 # Scaling factor for LoRA weights. [32, 64, 96, 128, 160, 192] adapter_dropout: 0.01 # Regularization for LoRA parameters. Limits: [0.0, 1.0]
Batasan

DPO memiliki batasan sebagai berikut:

  • Pos pemeriksaan menengah tidak disimpan untuk evaluasi dan Anda tidak dapat melanjutkan dari pos pemeriksaan perantara. Hanya pos pemeriksaan terakhir yang disimpan.

  • MLflow logging tidak didukung.

  • Untuk menyesuaikan hyperparameters, ikuti panduan di Memilih hyperparameters.