

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

# Optimalisasi preferensi langsung (DPO)
<a name="nova-dpo"></a>

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.](https://docs.aws.amazon.com/nova/latest/userguide/fine-tune-prepare-data-understanding.html#custom-fine-tune-constraints) 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
<a name="customize-fine-tune-hyperpod-dpo-fr"></a>

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 Konsol Manajemen AWS.
  + `model_type`: Varian model Nova untuk digunakan. Pilihan yang tersedia adalah`amazon.nova-micro-v1:0:128k`,`amazon.nova-lite-v1:0:300k`, atau`amazon.nova-pro-v1:0:300k`.
  + `model_name_or_path`: Jalur ke model dasar. Pilih model yang akan digunakan dari`nova-micro/prod`, `nova-lite/prod``nova-pro/prod`, atau jalur S3 untuk pos pemeriksaan pasca-pelatihan (). `s3://<escrow bucket>/<job id>/outputs/checkpoints`
  + `replicas`: Jumlah instance komputasi yang 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.

    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 zaman 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
<a name="customize-fine-tune-hyperpod-dpo-lora"></a>

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 Konsol Manajemen AWS.
  + `model_type`: Varian model Nova untuk digunakan. Pilihan yang tersedia adalah`amazon.nova-micro-v1:0:128k`,`amazon.nova-lite-v1:0:300k`, atau`amazon.nova-pro-v1:0:300k`.
  + `model_name_or_path`: Jalur ke model dasar. Pilih model yang akan digunakan dari`nova-micro/prod`, `nova-lite/prod``nova-pro/prod`, atau jalur S3 untuk pos pemeriksaan pasca-pelatihan (). `s3://<escrow bucket>/<job id>/outputs/checkpoints`
  + `replicas`: Jumlah instance komputasi yang 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.

    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 zaman 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 dengan`adapter_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.
+ Untuk menyesuaikan hyperparameters, ikuti panduan di [Memilih hyperparameters](https://docs.aws.amazon.com/nova/latest/userguide/customize-fine-tune-hyperparameters.html).