

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

# Menyetel model Amazon Nova yang disempurnakan SageMaker HyperPod
<a name="nova-hp-fine-tune"></a>

Teknik-teknik berikut menunjukkan kepada Anda cara menyempurnakan model Amazon Nova 2. SageMaker HyperPod

**Topics**
+ [Penyetelan halus yang diawasi (SFT)](nova-fine-tune.md)
+ [Optimalisasi preferensi langsung (DPO)](nova-dpo.md)
+ [Optimalisasi kebijakan proksimal (PPO)](nova-ppo.md)

# Penyetelan halus yang diawasi (SFT)
<a name="nova-fine-tune"></a>

Proses pelatihan SFT terdiri dari dua tahap utama:
+ **Persiapan Data**: Ikuti pedoman yang ditetapkan untuk membuat, membersihkan, atau memformat ulang kumpulan data ke dalam struktur yang diperlukan. Pastikan bahwa input, output, dan informasi tambahan (seperti jejak penalaran atau metadata) diselaraskan dan diformat dengan benar.
+ **Konfigurasi Pelatihan**: Tentukan bagaimana model akan dilatih. Saat menggunakan, konfigurasi ini ditulis dalam file resep YAMM yang mencakup:
  + Jalur sumber data (kumpulan data pelatihan dan validasi)
  + Hiperparameter kunci (zaman, tingkat pembelajaran, ukuran batch)
  + Komponen opsional (parameter pelatihan terdistribusi, dll)

## Perbandingan dan Seleksi Model Nova
<a name="nova-model-comparison"></a>

Amazon Nova 2.0 adalah model yang dilatih pada dataset yang lebih besar dan lebih beragam daripada Amazon Nova 1.0. Perbaikan utama meliputi:
+ **Kemampuan penalaran yang ditingkatkan** dengan dukungan mode penalaran eksplisit
+ **Kinerja multibahasa yang lebih luas di seluruh bahasa tambahan**
+ **Peningkatan kinerja pada tugas-tugas kompleks** termasuk pengkodean dan penggunaan alat
+ **Penanganan konteks yang diperluas** dengan akurasi dan stabilitas yang lebih baik pada panjang konteks yang lebih panjang

## Kapan Menggunakan Nova 1.0 vs Nova 2.0
<a name="nova-model-selection"></a>

Pilih Amazon Nova 1.0 saat:
+ Kasus penggunaan membutuhkan pemahaman bahasa standar tanpa alasan lanjutan
+ Kinerja telah divalidasi di Amazon Nova 1.0 dan kemampuan tambahan tidak diperlukan

# SFT pada Nova 1.0
<a name="nova-sft-1"></a>

Supervised fine-tuning (SFT) adalah proses menyediakan kumpulan pasangan respon cepat ke model pondasi untuk meningkatkan kinerja model pondasi yang telah dilatih sebelumnya pada tugas tertentu. Contoh berlabel diformat sebagai pasangan prompt respons dan diungkapkan sebagai instruksi. Proses fine-tuning ini memodifikasi bobot model.

Anda harus menggunakan SFT ketika Anda memiliki data spesifik domain yang memerlukan penyediaan pasangan prompt respons khusus untuk hasil yang optimal.

Perhatikan bahwa kumpulan data input pelatihan dan validasi Anda harus berada di bucket milik pelanggan, bukan di escrow, atau bucket S3 yang dikelola layanan.

## Persyaratan data
<a name="nova-sft-1-data-requirements"></a>

Untuk SFT peringkat penuh dan SFT adaptor peringkat rendah (LoRa), data harus mengikuti format operasi [Amazon](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) Bedrock Converse. Untuk contoh dan kendala format ini, lihat [Mempersiapkan data untuk fine-tuning](https://docs.aws.amazon.com/nova/latest/userguide/fine-tune-prepare-data-understanding.html) Memahami model.

Untuk memvalidasi format kumpulan data Anda sebelum pengiriman, sebaiknya gunakan skrip [validasi dari repositori sampel Amazon Bedrock](https://github.com/aws-samples/amazon-nova-samples/blob/main/customization/bedrock-finetuning/understanding/dataset_validation/nova_ft_dataset_validator.py). Alat validasi ini membantu memastikan bahwa file JSONL Anda mematuhi spesifikasi format yang diperlukan dan mengidentifikasi potensi masalah sebelum Anda mengirimkan pekerjaan fine-tuning Anda.

Parameter Amazon Nova yang tersedia untuk penyetelan dengan SFT 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 Amazon 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 yang akan digunakan untuk pelatihan Anda. 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 tempat yang sama Akun AWS dan Region sebagai cluster. Semua lokasi S3 dalam jalur S3 yang disediakan harus berada di akun dan Wilayah yang sama.
  + `validation_data_s3_path`: (Opsional) Lokasi S3 dari dataset validasi, yang merupakan file JSONL. File ini harus berada di akun dan Wilayah yang sama dengan cluster. Semua lokasi S3 dalam jalur S3 yang disediakan harus berada di akun dan Wilayah yang sama.
  + `output_s3_path`: Lokasi S3 tempat manifes dan TensorBoard log disimpan. Semua lokasi S3 dalam jalur 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 65.536 token untuk SFT.

    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 pemasangan berlebih 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. Nilai yang valid adalah antara 1e-6-1e-3, inklusif. Kami merekomendasikan nilai antara 1e-6-1e-4 untuk kinerja yang baik.
  + `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.

## Mulai cepat dengan resep SFT peringkat penuh
<a name="nova-sft-1-quick-start"></a>

Berikut ini adalah resep untuk SFT peringkat penuh yang dimaksudkan agar Anda dapat memulai pekerjaan SFT dengan cepat di sebuah cluster. SageMaker HyperPod Resep ini juga mengasumsikan bahwa Anda telah terhubung ke SageMaker HyperPod cluster Anda menggunakan AWS kredensil yang benar.

```
run:
  name: "my-sft-micro-job" # gets appended with a unique ID for HP jobs
  model_type: "amazon.nova-micro-v1:0:128k"
  model_name_or_path: "nova-micro/prod"
  replicas: 2
  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
  save_steps: 100000
  replicas: ${recipes.run.replicas}
  micro_batch_size: 1
  task_type: sft
  global_batch_size: 64
  weights_only: True
  allow_percentage_invalid_samples: 10

  exp_manager:
    exp_dir: null
    create_wandb_logger: False
    create_tensorboard_logger: True
      project: null
      name: null
    checkpoint_callback_params:
      monitor: step
      save_top_k: 10
      mode: max
      every_n_train_steps: ${recipes.training_config.save_steps}
      save_last: True
    create_early_stopping_callback: True
    early_stopping_callback_params:
      min_delta: 0.001
      mode: min
      monitor: "val_loss"
      patience: 2

  trainer:
    log_every_n_steps: 1
    max_epochs: -1
    max_steps: 16
    limit_test_batches: 0
    gradient_clip_val: 1.0
    num_nodes: ${recipes.training_config.replicas}

  model:
    hidden_dropout: 0.0 # Dropout probability for hidden state transformer.
    attention_dropout: 0.0 # Dropout probability in the attention layer.
    ffn_dropout: 0.0 # Dropout probability in the feed-forward layer.
    sequence_parallel: True
    optim:
      lr: 1e-5
      name: distributed_fused_adam
      bucket_cap_mb: 10
      contiguous_grad_buffer: False
      overlap_param_sync: False
      contiguous_param_buffer: False
      overlap_grad_sync: False
      adam_w_mode: true
      eps: 1e-06
      weight_decay: 0.0
      betas:
        - 0.9
        - 0.999
      sched:
        name: CosineAnnealing
        warmup_steps: 10
        constant_steps: 0
        min_lr: 1e-6

    mm_cfg:
      llm:
        freeze: false
      image_projector:
        freeze: true
        require_newline: true
      video_projector:
        freeze: true
        require_newline: false

    peft:
      peft_scheme: null

    training_validation:
      loader:
        args:
          data_loader_workers: 1
          prefetch_factor: 2
      collator:
        args:
          force_image_at_turn_beginning: false
```

## Contoh resep peringkat penuh
<a name="nova-sft-1-sample-recipe"></a>

Berikut ini adalah contoh resep peringkat penuh untuk SFT dengan semua komponen dikonfigurasi dengan benar.

```
## Run config
run:
    name: "my-sft-run"              # A descriptive name for your training job
    model_type: "amazon.nova-lite-v1:0:300k"  # Model variant specification
    model_name_or_path: "nova-lite/prod"      # Base model path
    replicas: 4                     # Number of compute instances for training
    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)

    trainer:
        max_epochs: 2               # Number of training epochs

    model:
        hidden_dropout: 0.0          # Dropout for hidden states
        attention_dropout: 0.0       # Dropout for attention weights
        ffn_dropout: 0.0             # Dropout for feed-forward networks

        optim:
            lr: 1e-5                 # Learning rate
            name: distributed_fused_adam  # Optimizer algorithm
            adam_w_mode: true        # Enable AdamW mode
            eps: 1e-06               # Epsilon for numerical stability
            weight_decay: 0.0        # L2 regularization strength
            betas:                   # Adam optimizer betas
                - 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

        peft:
            peft_scheme: null        # Set to null for full-parameter fine-tuning
```

## Batasan
<a name="nova-sft-1-limitations"></a>

Metrik penerbitan ke Bobot & Bias tidak didukung.

Untuk menyesuaikan hyperparameters, ikuti panduan di [Memilih hyperparameters](https://docs.aws.amazon.com/nova/latest/userguide/customize-fine-tune-hyperparameters.html).

## Penyetelan halus yang efisien parameter (PEFT)
<a name="nova-fine-tune-peft"></a>

Penyetelan halus yang efisien parameter (PEFT) melibatkan pelatihan ulang sejumlah kecil bobot tambahan untuk menyesuaikan model pondasi dengan tugas atau domain baru. Secara khusus, PEFT adaptor peringkat rendah (LoRa) secara efisien menyempurnakan model fondasi dengan memperkenalkan matriks bobot yang dapat dilatih peringkat rendah ke dalam lapisan model tertentu, mengurangi jumlah parameter yang dapat dilatih sambil mempertahankan kualitas model.

Adaptor LoRa PEFT menambah model pondasi dasar dengan menggabungkan lapisan adaptor ringan yang memodifikasi bobot model selama inferensi sambil menjaga parameter model asli tetap utuh. Pendekatan ini juga dianggap sebagai salah satu teknik fine-tuning yang paling hemat biaya. Untuk informasi selengkapnya, lihat [Menyesuaikan model dengan komponen inferensi adaptor](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-adapt.html).

Anda harus menggunakan LoRa PEFT dalam skenario berikut:
+ Anda ingin memulai dengan prosedur pelatihan cepat.
+ Kinerja model dasar sudah memuaskan. Dalam hal ini, tujuan LoRa PEFT adalah untuk meningkatkan kemampuannya di berbagai tugas terkait, seperti ringkasan teks atau terjemahan bahasa. Sifat regularisasi LoRa PEFT membantu mencegah overfitting dan mengurangi risiko model “melupakan” domain sumber. Ini memastikan model tetap serbaguna dan mudah beradaptasi dengan berbagai aplikasi.
+ Anda ingin melakukan skenario penyetelan instruksi dengan kumpulan data yang relatif kecil. LoRa PEFT berkinerja lebih baik dengan kumpulan data khusus tugas yang lebih kecil daripada kumpulan data yang lebih luas dan lebih besar.
+ Anda memiliki kumpulan data besar berlabel yang melebihi batas data kustomisasi Amazon Bedrock. Dalam hal ini, Anda dapat menggunakan LoRa PEFT pada SageMaker AI untuk menghasilkan hasil yang lebih baik.
+ Jika Anda telah mencapai hasil yang menjanjikan melalui fine-tuning Amazon Bedrock, LoRa PEFT dalam SageMaker AI dapat membantu mengoptimalkan hyperparameter model lebih lanjut.

Parameter Amazon Nova yang tersedia dengan LoRa PEFT meliputi:
+ **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 yang akan digunakan untuk pelatihan Anda. Pilih model yang akan digunakan. Opsi yang tersedia adalah`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 Anda gunakan. 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.
  + `output_s3_path`: Lokasi S3 tempat manifes dan TensorBoard log disimpan. Semua lokasi S3 dalam jalur 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 65.536 token untuk LoRa PEFT.

    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. Anda dapat mengatur salah satu `max_steps` atau`max_epochs`, tetapi kami tidak menyarankan pengaturan keduanya. 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 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.
+ **Parameter konfigurasi LoRa**
  + `peft_scheme`: Setel `lora` untuk mengaktifkan adaptasi peringkat rendah. 
  + `alpha`: Faktor penskalaan untuk bobot LoRa. Ini biasanya diatur ke nilai yang sama dengan`adapter_dim`.
  + `adaptor_dropout`: Parameter regularisasi untuk LoRa.

### Resep PEFT
<a name="nova-sft-1-peft-recipe"></a>

Berikut ini adalah resep untuk LoRa PEFT.

```
## 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
    model_name_or_path: "nova-lite/prod"      # Base model path
    replicas: 4                     # Number of compute instances for training
    output_s3_path: [S3_PATH_TO_STORE_MANIFEST]

## Training specific configs
training_config:
    max_length: 32768               # Maximum context window size (tokens)

    trainer:
        max_epochs: 2               # Number of training epochs

    model:
        hidden_dropout: 0.0          # Dropout for hidden states
        attention_dropout: 0.0       # Dropout for attention weights
        ffn_dropout: 0.0             # Dropout for feed-forward networks

        optim:
            lr: 1e-5                 # Learning rate
            name: distributed_fused_adam  # Optimizer algorithm
            adam_w_mode: true        # Enable AdamW mode
            eps: 1e-06               # Epsilon for numerical stability
            weight_decay: 0.0        # L2 regularization strength
            betas:                   # Adam optimizer betas
                - 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

        peft:
            peft_scheme: "lora"      # Enable LoRA for parameter-efficient fine-tuning
            lora_tuning:
                loraplus_lr_ratio: 8.0  # LoRA+ learning rate scaling factor
                alpha: 32            # Scaling factor for LoRA weights
                adapter_dropout: 0.01  # Regularization for LoRA parameters
```

### Pemecahan masalah
<a name="nova-sft-1-troubleshooting"></a>

Gunakan informasi berikut untuk membantu menyelesaikan masalah yang mungkin Anda temui:
+ Dataset input untuk pelatihan dan validasi harus berada di bucket milik pelanggan, bukan di escrow, atau bucket S3 yang dikelola layanan.
+ Jika Anda menerima kesalahan Wilayah tidak ditemukan di AWS CLI, kirim ulang pekerjaan dengan wilayah yang ditambahkan ke perintah start-job. Sebagai contoh: `AWS_REGION=us-east-1 hyperpod start-job ...Job Parameters`.
+ Untuk menyesuaikan hyperparameters, ikuti panduan di [Memilih hyperparameters](https://docs.aws.amazon.com/nova/latest/userguide/customize-fine-tune-hyperparameters.html).

# 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).

# Optimalisasi kebijakan proksimal (PPO)
<a name="nova-ppo"></a>

Optimalisasi kebijakan proksimal (PPO) adalah proses menggunakan beberapa model pembelajaran mesin untuk melatih dan menilai model. Model-model berikut adalah bagian dari proses PPO:
+ Model **kereta atau kebijakan aktor: Model** fine-tuning (SFT) yang diawasi yang disetel dengan baik dan diperbarui setiap zaman. Pembaruan dilakukan dengan petunjuk pengambilan sampel, menghasilkan penyelesaian, dan memperbarui bobot menggunakan tujuan pengganti yang terpotong. Ini membatasi perubahan log-profitabilitas per token sehingga setiap langkah kebijakan *proksimal* dengan yang sebelumnya, menjaga stabilitas pelatihan.
+ **Model generasi aktor**: Model yang menghasilkan penyelesaian atau respons yang cepat untuk dinilai oleh model penghargaan dan model kritikus. Bobot model ini diperbarui dari kereta aktor atau model kebijakan setiap zaman.
+ **Model hadiah**: Model dengan bobot beku yang digunakan untuk mencetak model generasi aktor.
+ **Model kritikus**: Model dengan bobot yang tidak dibekukan yang digunakan untuk mencetak model generasi aktor. Skor ini sering dipandang sebagai perkiraan total hadiah yang diterima aktor saat menghasilkan token yang tersisa.
+ **Model jangkar: Model** SFT dengan bobot beku yang digunakan untuk menghitung divergensi KL antara model kereta aktor dan model dasar. Model jangkar memastikan bahwa pembaruan model aktor tidak terlalu drastis dibandingkan dengan model dasar. Perubahan drastis dapat menyebabkan ketidakstabilan atau penurunan kinerja.

Data pelatihan harus dalam format JSONL di mana setiap baris berisi objek JSON tunggal yang mewakili contoh pelatihan. Inilah contohnya:

```
{
    "turns": ["string", "string", ...], // Required
    "turns_to_mask": [integer, integer, ...], // Required
    "reward_category": "string", // Required
    "meta_data": {} // Optional
}
```
+ `turns`adalah array array string percakapan yang mewakili urutan dialog. Baris ini berisi prompt sistem, pesan pengguna, dan respons bot. Pesan pengguna biasanya diakhiri dengan “Bot:" untuk menunjukkan di mana output model dimulai. Misalnya, `[["System prompt"], ["User: Question Bot:"], ["Bot response"]]`.
+ `turns_to_mask`adalah larik indeks berbasis 0 yang mengidentifikasi belokan mana yang seharusnya tidak menerima pembaruan gradien. Belokan bertopeng biasanya merupakan perintah sistem dan putaran pengguna. Misalnya, `[0, 1, 3]` menutupi prompt sistem dan pesan pengguna (pesan pertama dan ketiga).
+ `reward_category`adalah string yang mengidentifikasi aspek kinerja model apa yang akan dievaluasi. Ini digunakan untuk memilih kategori model hadiah yang sesuai selama pelatihan. Kategori hadiah tersedia untuk kategori hadiah berikut:`default`,,`math`, `coding``if`,`rag`, dan`rai`.
+ `meta_data`adalah objek opsional yang berisi informasi kontekstual atau kebenaran dasar tambahan. Ini dapat mencakup pengidentifikasi, informasi sumber, atau konteks percakapan. Strukturnya fleksibel berdasarkan kebutuhan dataset Anda.

Berikut adalah contoh catatan:

```
{
    "turns": ["You are a helpful AI assistant.",
        "User: What is ML? Bot:",
        "Machine learning is...", "User: Examples? Bot:",
        "Email spam filtering is..."
    ],
    "turns_to_mask": [0, 1, 3],
    "reward_category": "default",
    "meta_data": {
        "messages": [{
                "role": "system",
                "content": "You are a helpful AI assistant."
            },
            {
                "role": "user",
                "content": "What is ML?"
            },
            {
                "role": "assistant",
                "content": "Machine learning is..."
            },
            {
                "role": "user",
                "content": "Examples?"
            },
            {
                "role": "assistant",
                "content": "Email spam filtering is..."
            }
        ]
    }
}
```

Kerangka pemodelan hadiah mengimplementasikan optimasi multi-dimensi di seluruh tujuan kategoris yang berbeda untuk memfasilitasi konvergensi model yang kuat. Kategori hadiah harus dipilih berdasarkan tugas yang harus dioptimalkan untuk model. 

Kami merekomendasikan panduan berikut untuk memilih kerangka kerja yang tepat untuk tugas Anda:
+ `default`: Pengoptimal tujuan umum untuk tugas percakapan standar dan interaksi dasar. Digunakan untuk percakapan umum dan diskusi, tugas menulis dasar, menjawab pertanyaan sederhana, dan pertanyaan pengetahuan non-khusus. 

  Inilah contohnya:

  ```
  {
      "turns": ["Write a summary of climate change"],
      "turns_to_mask": [0],
      "reward_category": "default"
  }
  ```
+ `math`: Pengoptimal khusus untuk perhitungan matematika dan tugas penalaran numerik. Digunakan untuk pemecahan masalah matematika, perhitungan aritmatika, persamaan aljabar, masalah geometris, dan analisis statistik.

  Inilah contohnya:

  ```
  {
      "turns": ["Calculate the derivative of x²"],
      "turns_to_mask": [0],
      "reward_category": "math"
  }
  ```
+ `coding`: Kategori khusus untuk pemrograman dan kueri terkait pengembangan perangkat lunak. Digunakan untuk implementasi kode, bantuan debugging, desain algoritma, dokumentasi teknis, dan pertanyaan arsitektur sistem.

  Inilah contohnya:

  ```
  {
      "turns": ["Write a function to check if a string is palindrome"],
      "turns_to_mask": [0],
      "reward_category": "coding"
  }
  ```
+ `if`Kategori untuk tugas-tugas yang membutuhkan eksekusi dan step-by-step bimbingan prosedural yang tepat. Digunakan untuk prosedur multi-langkah, instruksi berurutan, dekomposisi tugas yang kompleks, dan dokumentasi proses.

  Inilah contohnya:

  ```
  {
      "turns": ["Provide steps to deploy a web application"],
      "turns_to_mask": [0],
      "reward_category": "if"
  }
  ```
+ `rag`: Kategori hadiah untuk tugas-tugas yang memerlukan menjawab pertanyaan berdasarkan informasi kontekstual yang diambil secara khusus. Digunakan ketika tanggapan harus diturunkan langsung dari bahan referensi yang disediakan, mensintesis konten faktual tanpa melampaui ruang lingkup informasi yang diambil, memastikan jawaban didasarkan pada konteks yang disediakan daripada pengetahuan umum.

  Inilah contohnya:

  ```
  {
              "turns": ["The Synthesis Report integrates findings from all six IPCC assessment cycles, revealing that global surface temperature has increased 1.1°C from 1850-1900 to 2011-2020, with human activities unequivocally identified as the cause of this warming. Alarmingly, current policies put the world on track for 3.2°C warming by 2100. The document identifies 5 key climate system "tipping points" approaching and emphasizes that greenhouse gas emissions must decline 43% by 2030 (compared to 2019 levels) to limit warming to 1.5°C. Climate-related risks will escalate with every increment of warming, with loss and damage disproportionately affecting vulnerable populations. Despite some progress, climate adaptation remains uneven with significant gaps, and financial flows continue to fall below levels needed for mitigation goals.",
              "What were the key findings of the latest IPCC climate report?"],
              "turns_to_mask": [0, 0],
              "reward_category": "rag"
              }
  ```
+ `rai`Kategori hadiah untuk tugas-tugas yang membutuhkan penerapan prinsip-prinsip AI yang bertanggung jawab seperti keadilan, transparansi, dan etika. Digunakan untuk mengevaluasi potensi bias dalam sistem AI, memastikan pertimbangan privasi, mengatasi dilema etika, dan mempromosikan prinsip-prinsip desain inklusif.

  Inilah contohnya:

  ```
  {
              "turns": ["Identify potential bias concerns when developing a loan approval algorithm and suggest mitigation strategies"],
              "turns_to_mask": [0],
              "reward_category": "rai"
              }
  ```

**Masking berbelok**  
Dalam kumpulan data pelatihan, `turns_to_mask` parameter sangat penting untuk mengontrol putaran percakapan mana yang menerima pembaruan gradien selama pelatihan. Susunan indeks ini menentukan bagian dialog mana yang harus dipelajari model versus bagian mana yang harus diperlakukan sebagai konteks saja. Masking yang tepat memastikan model mempelajari pola respons yang tepat sambil menghindari pelatihan tentang prompt sistem atau input pengguna yang dapat menurunkan kinerja.

Kami merekomendasikan panduan berikut untuk masking:
+ **Selalu topeng indeks 0** - Permintaan sistem tidak boleh menerima pembaruan gradien.
+ **Selalu tutupi giliran pengguna** - Cegah model dari pembelajaran untuk menghasilkan input pengguna.
+ **Konsistensi pola** - Gunakan pola masking yang identik untuk struktur percakapan serupa, seperti (0, 1, 3, 5) untuk dialog multi-putaran.
+ **Pelatihan selektif** - Tutupi respons bot awal untuk memfokuskan pelatihan pada respons akhir yang lebih baik.
+ **Chain-of-thought pelestarian** - Hanya sistem topeng dan pengguna yang berubah saat melatih urutan penalaran.
+ **Penyaringan kualitas** - Masker respons asisten berkualitas rendah untuk mencegah penurunan kinerja.
+ **Pengoptimalan konteks** - Pastikan belokan bertopeng tidak menghapus konteks penting yang diperlukan untuk tanggapan selanjutnya.

Kunci untuk masking yang efektif adalah memantau metrik pelatihan dan kinerja validasi untuk mengidentifikasi apakah strategi masking Anda mempertahankan konteks yang diperlukan sambil memfokuskan pembaruan gradien pada output model yang diinginkan.

**Aktifkan kerugian KL-divergensi**  
Untuk mengaktifkan kerugian KL-divergence, server jangkar perlu diaktifkan untuk menghitung divergensi kebijakan saat ini dari distribusi asli. Jenis kerugian KL perlu ditentukan, dan koefisien harus menjadi nilai selain nol. Nilai koefisien yang lebih tinggi membantu model tidak menyimpang banyak dari kebijakan asli yang menghasilkan perubahan yang lebih rendah pada kinerja umum. Nilai koefisien yang lebih rendah memungkinkan penyimpangan yang lebih besar dari kebijakan sebelumnya, yang mengarah pada kinerja metrik target yang lebih baik tetapi berdampak pada kinerja umum.

```
ppo_anchor:
  max_length: 8192
  trainer:
    num_nodes: ${recipes.run.cm_replicas}
  model:
    global_batch_size: 32

ppo_actor_train:
  model:
    ######## Use KL in actor loss ########
    kl_loss_type: low_var_kl
    kl_loss_coeff: 0.1

    ######## Use KL in reward model ######
    kl_reward_penalty_coeff: 0.1
```

**Tingkat pembelajaran**  
Tingkat pembelajaran untuk kritikus dan model kebijakan dapat disesuaikan, dengan 3e-6 menjadi pilihan seimbang default. Tingkat pembelajaran yang lebih tinggi biasanya menyebabkan ketidakstabilan pelatihan, yang dapat diidentifikasi melalui lonjakan divergensi KL dan perilaku kebijakan yang tidak menentu. Tingkat pembelajaran yang lebih rendah dapat menyebabkan masalah konvergensi dan pembelajaran yang lambat, ditunjukkan oleh imbalan yang stagnan dan pembaruan kebijakan yang minimal. Pemantauan berkala terhadap divergensi KL, skor hadiah, dan kehilangan nilai membantu dalam menentukan apakah akan menyesuaikan tingkat pembelajaran selama pelatihan.

```
ppo_critic:
  model:
    optim:
      lr: 3e-6

ppo_actor_train:
  model:
    optim:
      lr: 3e-06
```

**Ukuran batch global**  
Ukuran batch global berdampak signifikan pada kinerja PPO di Amazon Nova, dengan batch yang lebih besar umumnya meningkatkan stabilitas pelatihan dan estimasi gradien sekaligus memungkinkan pemrosesan paralel yang lebih efisien. Namun, ukuran batch yang sangat besar dapat menyebabkan pengembalian yang berkurang dan mungkin dibatasi oleh memori yang tersedia, membutuhkan keseimbangan yang cermat dengan tingkat pembelajaran dan hiperparameter lainnya.

```
ppo_actor_train:
  model:
    global_batch_size: 160
```

Parameter Amazon Nova yang tersedia untuk penyetelan dengan PPO meliputi:
+ **Jalankan konfigurasi**
  + `actor_train_replicas`: Jumlah instans komputasi yang akan digunakan untuk model kereta aktor. Nilai yang tersedia bervariasi berdasarkan model yang dipilih. Amazon Nova Micro mendukung 1 atau 2 replika. Amazon Nova Lite mendukung 1, 2, atau 4 replika. Amazon Nova Pro mendukung 3, 6, atau 12 replika.
  + `rm_replicas`: Jumlah instance komputasi yang digunakan untuk model hadiah. Kami menyarankan Anda menggunakan satu replika untuk ukuran model apa pun.
  + `cm_replicas`: Jumlah instance komputasi yang digunakan untuk model kritikus. Kami menyarankan Anda menggunakan satu replika untuk ukuran model apa pun.
  + `actor_generation_replicas`: Jumlah instance komputasi yang digunakan untuk generasi aktor. Nilai yang tersedia bervariasi berdasarkan model yang dipilih. Amazon Nova Micro mendukung 1 replika. Amazon Nova Lite mendukung 1 atau 2 replika. Amazon Nova Pro mendukung 1 atau 2 replika.
  + `am_replicas`: Jumlah instance komputasi yang digunakan untuk model jangkar. Kami menyarankan Anda menggunakan satu replika untuk ukuran model apa pun.
+ **Konfigurasi kereta aktor (konfigurasi kebijakan)**
  + `max_steps`: Jumlah maksimum langkah untuk menyempurnakan atau melatih model kereta aktor. Di sini, satu langkah didefinisikan sebagai peluncuran, diikuti dengan melatih model kereta aktor dengan `global_batch_size` jumlah sampel. Satu zaman didefinisikan sebagai`global_batch_size * trajectory_buffer_scale`.

    Nilai yang dipilih di sini akan bervariasi berdasarkan kasus penggunaan dan kompleksitas kumpulan data Anda. Sebaiknya mulai dengan 65 zaman atau 520 langkah, yang merupakan jumlah zaman dikalikan dengan nilai. `trajectory_buffer_scale` Namun, beberapa tugas membutuhkan waktu pelatihan PPO yang lebih lama untuk mencapai kinerja yang sama.

    Untuk PPO, metrik pelatihan, seperti skor model hadiah jenuh dan panjang tindakan rata-rata dari konsol [ml-flow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server.html), dapat membantu mengidentifikasi poin optimal untuk evaluasi.
  + `actor_model_max_length`: Panjang maksimum data input yang dikirim ke komponen pembangkit aktor untuk menghasilkan penyelesaian.
  + `reward_model_max_length`: Panjang maksimum data input yang dikirim ke server hadiah untuk menyelesaikan skor.
  + `trajectory_buffer_scale`: Buffer ini mewakili jumlah peluncuran yang dihasilkan menggunakan model kereta aktor lama (kebijakan) sebelum memperbarui bobot dan menghasilkan peluncuran baru. Nilai yang didukung adalah 1, 2, 4, 8, dan 16.

    Jika `trajectory_buffer_scale` 1, maka pelatihan adalah pada kebijakan. Itu berarti peluncuran dihasilkan dengan bobot model terbaru, tetapi throughput menderita. Jika 16, maka modelnya sedikit di luar kebijakan tetapi throughputnya lebih tinggi. Kami merekomendasikan memulai dengan 8 untuk setiap model.
  + `kl_reward_penalty_coeff`: Ini adalah istilah divergensi KL yang memastikan pembaruan tidak terlalu drastis dan kebijakan tidak disusun dari model dasar atau SFT.
  + `kl_loss_coeff`: Nilai ini mengontrol seberapa besar penalti divergensi KL mempengaruhi keseluruhan tujuan pelatihan di PPO.
  + `kl_loss_type`: Nilai ini menentukan cara menghitung divergensi antara distribusi kebijakan saat ini dan referensi. Yang `kl_loss_types` tersedia adalah `kl` (Divergensi KL Standar), `mse` (Kesalahan kuadrat rata-rata), `abs` (Perbedaan absolut antara probabilitas log), dan `low_var_kl` (perkiraan KL varians rendah).
  + `model.clip_ratio`: Rasio klip aktor (ε) di PPO adalah hiperparameter yang membatasi seberapa banyak kebijakan dapat berubah selama setiap pembaruan.
  + `model.optim.lr`: Tingkat pembelajaran yang digunakan untuk pelatihan kehilangan model pengganti dalam model aktor. 
  + `model.lam`: Bagian dari proses estimasi keuntungan. Lebih tinggi λ memberi bobot lebih pada imbalan jangka panjang tetapi dengan varians yang lebih tinggi, sedangkan λ yang lebih rendah lebih berfokus pada imbalan langsung dengan varians yang lebih rendah tetapi lebih bias.
  + `model.ent_coeff`: Kehilangan entropi dalam PPO mendorong eksplorasi dengan menghukum kebijakan ketika menjadi terlalu deterministik (yaitu, selalu memilih tindakan yang sama dengan keyakinan tinggi).
+ **Konfigurasi model hadiah**
  + `global_batch_size`: Ukuran batch untuk menilai penyelesaian menggunakan model hadiah. Jika `ppo_actor_train.model.global_batch_size` lebih besar dari`ppo_reward.model.global_batch_size`, mereka diproses dalam beberapa batch. Perhatikan bahwa `ppo_actor_train.model.global_batch_size % ppo_reward.model.global_batch_size` harus sama dengan 0.
  + `max_length`: Panjang konteks maksimum dari model hadiah. Ini harus sama dengan`ppo_actor_train.model.max_length`.
+ **Konfigurasi model kritikus**
  + `global_batch_size`: Ukuran batch dari nilai model kritikus. Model kritikus akan memberikan perkiraan nilai untuk setiap token dalam tanggapan yang diberikan oleh model aktor. Ukuran batch digunakan untuk inferensi dan pelatihan.

    Perhatikan bahwa `ppo_actor_train.model.global_batch_size % ppo_critic.model.global_batch_size` harus sama dengan 0 dan`ppo_actor_train.model.global_batch_size * ppo_actor_train.model.trajectory_buffer_size % ppo_critic.model.global_batch_size == 0`.
  + `max_length`: Panjang konteks maksimum model kritikus. Ini harus sama dengan`ppo_actor_train.model.max_length`.
  + `model.optim.lr`: Tingkat pembelajaran yang digunakan untuk pelatihan kehilangan model pengganti dalam model aktor.
+ **Konfigurasi model jangkar**
  + `global_batch_size`: Ukuran batch untuk menghasilkan logp dari SFT beku atau model jangkar. Perhatikan bahwa `ppo_actor_train.model.global_batch_size % ppo_anchor.model.global_batch_size` harus sama dengan 0.
  + `max_length`: Panjang konteks maksimum dari model hadiah. Ini harus sama dengan`ppo_actor_train.model.max_length`.
+ **Konfigurasi model generasi aktor**
  + `actor_model_max_length`: Panjang konteks maksimum komponen generasi model aktor. Ini harus sama dengan`ppo_actor_train.model.max_length`.

**Resep PPO**  
Berikut ini adalah resep untuk PPO.

```
## Run config
run:
  name: ndry-ppo-pro
  model_type: amazon.nova-pro-v1:0:300k
  model_name_or_path: nova-pro/prod
  data_s3_path: s3://testing/train.jsonl # Your training data S3 path

  actor_train_replicas: 6 # Actor train model replicas
  rm_replicas: 1 # Reward model replicas
  cm_replicas: 1 # Critic model replicas
  actor_generation_replicas: 2 # Actor generation model replicas
  am_replicas: 1 # Anchor model replicas

## Training config for each PPO component
ppo_reward:
  max_length: 8192 # model architecture max length
  trainer:
    num_nodes: ${recipes.run.rm_replicas}
  model:
    global_batch_size: 16

ppo_critic:
  max_length: 8192
  trainer:
    num_nodes: ${recipes.run.cm_replicas}
  model:
    global_batch_size: 16
    optim:
      lr: 3e-6
      name: distributed_fused_adam
      adam_w_mode: true
      eps: 1e-06
      weight_decay: 0.0
      betas:
        - 0.9
        - 0.999

ppo_anchor:
  max_length: 8192
  trainer:
    num_nodes: ${recipes.run.am_replicas}
  model:
    global_batch_size: 16

ppo_actor_generation:
  actor_model_max_length: 8192
  trainer:
    num_nodes: ${recipes.run.actor_generation_replicas}

ppo_actor_train:
  max_length: 8192
  max_steps: 520 # Stopping criteria Desired epoch num * trajectory_buffer_scale
  actor_model_max_length: 8192 # truncate input data to max length
  reward_model_max_length: 8192 # truncate input data to max length
  trajectory_buffer_scale: 8
  trainer:
    num_nodes: ${recipes.run.actor_train_replicas}
  model:
    global_batch_size: 160
    ent_coeff: 0
    clip_ratio: 0.2
    lam: 1
    kl_loss_coeff: 0.0
    kl_loss_type: low_var_kl
    kl_reward_penalty_coeff: 0.0
    hidden_dropout: 0.0 # Dropout probability for hidden state transformer.
    attention_dropout: 0.0 # Dropout probability in the attention layer.
    ffn_dropout: 0.0 # Dropout probability in the feed-forward layer.
    optim:
      lr: 3e-06
      name: distributed_fused_adam # only this one is available for p0.
      adam_w_mode: true
      eps: 1e-08
      weight_decay: 0.0
      betas:
        - 0.9
        - 0.999
```

**Batasan**  
PPO 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.
+ Kumpulan data multimodal tidak didukung.
+ Pekerjaan pelatihan tidak dihentikan secara otomatis. Anda harus menghentikan pekerjaan menggunakan SageMaker HyperPod CLI.
+ Metrik pelatihan kritikus tidak didukung pada. TensorBoard
+ Untuk menyesuaikan hyperparameters, ikuti panduan di [Memilih hyperparameters](https://docs.aws.amazon.com/nova/latest/userguide/customize-fine-tune-hyperparameters.html).