

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

# Sempurnakan Nova 1.0
<a name="nova-fine-tune-1"></a>

**catatan**  
Anda dapat menyempurnakan seri model Amazon Nova 1.0 menggunakan Supervised Fine-Tuning (SFT) dan Direct Preference Optimization. Untuk menyempurnakan model Nova 2.0, lihat [Fine-tune](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-fine-tune-2.html) Nova 2.0.

## Prasyarat
<a name="nova-model-training-jobs-prerequisites"></a>

Sebelum Anda memulai pekerjaan pelatihan, perhatikan hal berikut.
+ Bucket Amazon S3 untuk menyimpan data input dan output pekerjaan pelatihan Anda. Anda dapat menggunakan satu bucket untuk keduanya atau ember terpisah untuk setiap jenis data. Pastikan ember Anda berada di tempat yang sama di Wilayah AWS mana Anda membuat semua sumber daya lain untuk pelatihan. Untuk informasi selengkapnya, lihat [Membuat bucket tujuan umum](https://docs.aws.amazon.com//AmazonS3/latest/userguide/create-bucket-overview.html).
+ Peran IAM dengan izin untuk menjalankan pekerjaan pelatihan. Pastikan Anda melampirkan kebijakan IAM dengan`AmazonSageMakerFullAccess`. Untuk informasi selengkapnya, lihat [Cara menggunakan peran eksekusi SageMaker AI](https://docs.aws.amazon.com//sagemaker/latest/dg/sagemaker-roles.html).
+ Resep dasar Amazon Nova, lihat[Mendapatkan resep Amazon Nova](nova-model-recipes.md#nova-model-get-recipes).

## Persiapan data
<a name="nova-model-training-prepare-data"></a>

Mempersiapkan data berkualitas tinggi dan diformat dengan benar adalah langkah pertama yang penting dalam proses fine-tuning untuk model bahasa besar. Baik Anda menggunakan fine-tuning (SFT) yang diawasi atau Pengoptimalan Preferensi Langsung (DPO), dengan pendekatan adaptasi peringkat penuh atau peringkat rendah (LoRa), data Anda harus mematuhi persyaratan format tertentu untuk memastikan pelatihan model yang berhasil. Bagian ini menguraikan format data yang diperlukan, metode validasi, dan praktik terbaik untuk membantu Anda mempersiapkan kumpulan data secara efektif untuk menyempurnakan model Amazon Nova.

### Persyaratan format data
<a name="nova-model-training-prepare-data-format"></a>

**SFT**

Persyaratan format data SFT - Untuk SFT peringkat penuh dan LoRa SFT, data harus mengikuti format yang ditunjukkan di bawah ini. 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.

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

**DPO**

Persyaratan format data DPO - Untuk DPO dalam peringkat penuh dan DPO dengan LoRa, data harus mengikuti format yang ditunjukkan di bawah ini. Dataset juga harus dalam format yang sama dengan SFT kecuali giliran terakhir harus memiliki pasangan preferensi.

DPO dataset kendala lainnya - Kendala lain pada dataset adalah sama untuk SFT. Untuk informasi selengkapnya, lihat [Batasan set data.](https://docs.aws.amazon.com//nova/latest/userguide/fine-tune-prepare-data-understanding.html) Diharapkan file JSONL tunggal untuk pelatihan dan satu file JSONL untuk validasi. Set validasi adalah opsional.

Rekomendasi dataset DPO - Minimal 1.000 pasangan preferensi untuk pelatihan yang efektif. Data preferensi berkualitas tinggi akan menghasilkan hasil yang lebih efisien.

### Contoh
<a name="nova-model-training-prepare-data-example"></a>

**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"
        }
    ]
}
```

**Contoh format data DPO (multi-putaran)**

```
{
    "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"
                }
            ]
        }
    ],
}
```

**Contoh format data DPO (dengan gambar)**

```
{
    "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"
                }
            ]
        }
    ],
}
```

### Batas set data
<a name="nova-model-training-prepare-data-limits"></a>

Pekerjaan pelatihan default ke batas waktu 1 hari, meskipun perkiraan dalam tabel di bawah ini mengasumsikan durasi pelatihan 5 hari untuk tujuan ilustrasi. Sebagai praktik terbaik, kami sarankan untuk meningkatkan batas waktu pelatihan Anda hingga maksimum 28 hari untuk mengakomodasi beban kerja pelatihan yang lebih lama. Untuk meminta kenaikan batas, lihat [Meminta kenaikan kuota](https://docs.aws.amazon.com//servicequotas/latest/userguide/request-quota-increase.html).

**Batas set data SFT**

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/nova/latest/userguide/nova-fine-tune-1.html)

Batas set data DPO

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/nova/latest/userguide/nova-fine-tune-1.html)

Dengan mengurangi jumlah epoch atau panjang konteks catatan Anda, Anda dapat memberikan lebih banyak catatan.

## Konfigurasi SFT dan LoRa PEFT peringkat penuh
<a name="nova-model-training-jobs-recipe-config"></a>

Bagian ini mencakup panduan tentang konfigurasi resep untuk pendekatan fine-tuning (SFT) yang diawasi peringkat penuh dan fine-tuning hemat parameter adaptasi peringkat rendah (LoRa PEFT). File resep ini berfungsi sebagai cetak biru untuk pekerjaan penyesuaian model Anda, memungkinkan Anda menentukan parameter pelatihan, hiperparameter, dan pengaturan penting lainnya yang menentukan bagaimana model Anda belajar dari data Anda. Untuk menyesuaikan hyperparameters, ikuti panduan dalam [Memilih hyperparameters](https://docs.aws.amazon.com//nova/latest/userguide/customize-fine-tune-hyperparameters.html).

### Konfigurasi fine-tuning (SFT peringkat penuh dan LoRa PEFT)
<a name="nova-model-training-jobs-recipe-config-1"></a>

Satu-satunya perbedaan antara SFT peringkat penuh dan LoRa PEFT dalam hal resep adalah konfigurasi LoRa PEFT, yang diatur ke 'null' untuk peringkat penuh dan disetel ke nilai yang sesuai jika menggunakan fine-tuning berbasis LoRa PEFT. Contoh resep tersedia di GitHub repositori [resep](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes). Tabel berikut menunjukkan konfigurasi terperinci yang mungkin berguna bagi Anda.

Tentang **konfigurasi “jalankan”**.


|  | Key | Definisi | Mikro | sedikit | Pro | 
| --- | --- | --- | --- | --- | --- | 
| Jalankan konfigurasi | model\$1type |  Menentukan varian model Nova untuk digunakan. Jangan memodifikasi bidang ini.   |  “Amazon. nova-micro-v1:0:128 k”  |  “Amazon. nova-lite-v1:0:300 k”  |  “Amazon. nova-pro-v1:0:300 k”  | 
|  | model\$1name\$1or\$1path |  Jalan menuju model dasar.  |  “nova-mikro/prod”  |  “nova-lite/prod”  |  “nova-pro/prod”  | 
|  | replika |  Jumlah instans komputasi yang digunakan untuk pelatihan terdistribusi.  |  2, 4 atau 8  |  4, 8 atau 16  |  6, 12 atau 24  | 

Tentang konfigurasi **“training\$1config**”.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/nova/latest/userguide/nova-fine-tune-1.html)

### Menyetel konfigurasi khusus (DPO)
<a name="nova-model-training-jobs-recipe-config-2"></a>

Satu-satunya perbedaan antara Direct Preference Optimization (DPO) dibandingkan dengan LoRa PEFT dan FullRank SFT adalah dalam hal konfigurasi dpo\$1cfg dan nilai yang diizinkan. Lihat tabel di bawah contoh untuk diizinkan khusus untuk DPO. Contoh resep tersedia di GitHub repositori [resep](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes). Tabel berikut menunjukkan konfigurasi terperinci yang mungkin berguna bagi Anda.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/nova/latest/userguide/nova-fine-tune-1.html)

## Menjalankan model Nova yang disesuaikan pada Pekerjaan SageMaker Pelatihan
<a name="nova-model-training-jobs-notebook"></a>

Bagian ini menunjukkan cara menjalankan model Nova yang disesuaikan pada SageMaker Training Jobs melalui lingkungan notebook Jupyter. Anda akan menemukan contoh lengkap yang berjalan melalui proses mengkonfigurasi dan meluncurkan pekerjaan pelatihan, bersama dengan tabel referensi untuk memilih gambar kontainer URIs dan konfigurasi instance yang sesuai. Pendekatan ini memberi Anda kontrol terprogram atas alur kerja fine-tuning Anda sambil memanfaatkan infrastruktur terkelola SageMaker AI untuk penyesuaian model. Untuk informasi selengkapnya, lihat [Menggunakan estimator SageMaker AI untuk menjalankan pekerjaan pelatihan](https://docs.aws.amazon.com//sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html).

### Tabel referensi
<a name="nova-model-training-jobs-reference-table"></a>

Sebelum menjalankan contoh buku catatan, lihat tabel berikut untuk memilih gambar kontainer URIs dan konfigurasi instance yang sesuai.

**Memilih URI gambar**


| Resep | URI citra | 
| --- | --- | 
|  URI gambar SFT  | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-SFT-latest | 
|  URI gambar DPO  | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest | 

**Memilih jenis dan hitungan instans**


| Model | Fine-tuning Jenis Job | Jenis teknik | Tipe instans | Jumlah instans yang disarankan | Jumlah instans yang diizinkan | 
| --- | --- | --- | --- | --- | --- | 
| Amazon Nova Mikro | SFT | LoRa | g5.12xlarge, g6.12xlarge, g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  | Lora\$1peringkat penuh | g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  |  | p4d.24xlarge | 2 | 2, 4, 8 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 1 | 1, 2, 4, 8 | 
|  | DPO | LoRa | g5.12xlarge, g6.12xlarge, g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  | Lora\$1peringkat penuh | p4d.24xlarge, p5.48xlarge, p5en.48xlarge | 2 | 2, 4, 8 | 
| Amazon Nova Lite | SFT | LoRa | g5.12xlarge, g6.12xlarge, g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 1 | 1, 4, 8, 16 | 
|  |  | Lora\$1peringkat penuh | p4d.24xlarge | 4 | 4, 8, 16 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 2 | 2, 4, 8, 16 | 
|  | DPO | LoRa | g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  | Lora\$1peringkat penuh | p4d.24xlarge, p5.48xlarge, p5en.48xlarge | 4 | 4, 8, 16 | 
| Amazon Nova Pro | SFT | LoRa | p4d.24xlarge | 6 | 6, 12, 24 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 3 | 3, 6, 12, 24 | 
|  |  | Lora\$1peringkat penuh | p5.48xlarge, p5en.48xlarge | 6 | 6, 12, 24 | 
|  | DPO | LoRa | p4d.24xlarge | 6 | 6, 12, 24 | 
|  |  | Lora\$1peringkat penuh | p4d.24xlarge | 12 | 12, 24 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 4 | 4, 8, 16 | 

### Notebook sampel
<a name="nova-model-training-jobs-notebook"></a>

Contoh notebook berikut menunjukkan cara menjalankan pekerjaan pelatihan. Untuk buku catatan awal tambahan tentang cara menyesuaikan model Nova menggunakan SageMaker Training Jobs, lihat [Menggunakan estimator SageMaker AI untuk menjalankan pekerjaan pelatihan](https://docs.aws.amazon.com//sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html).

```
# 1. Install dependencies

!pip install sagemaker==2.254.1

# 2. Import dependencies and initialize sagemaker session

import sagemaker,boto3

sm = boto3.client('sagemaker', region_name='us-east-1')
sagemaker_session = sagemaker.session.Session(boto_session=boto3.session.Session(), sagemaker_client=sm)

# 3. Configure your job
# Define the core configuration for launching a SageMaker Training Job. This includes input/output S3 URIs, container image, hardware setup, and other runtime parameters. Update the placeholders below before submitting the job.

job_name = "<Your Job Name>"

input_s3_uri = "<S3 path to input data>"
validation_s3_uri = "<S3 path to validation data>" # optional, leave blank if no validation data

output_s3_uri = "<S3 path to output location>"

image_uri = "<Image URI from documentation>" # you can choose the image for SFT/DPO
instance_type = "ml.p5.48xlarge" # do not change
instance_count = <Integer number of hosts> # change hosts as needed. Refer to documentation for allowed values based on model type.
role_arn = "<IAM Role you want to use to run the job>"
recipe_path = "<Local path to the recipe file>"
output_kms_key = "<KMS key arn to encrypt trained model in Amazon-owned S3 bucket>" # optional, leave blank for Amazon managed encryption

# 4. Launch SageMaker Training Job
# This block sets up and runs the SageMaker training job using the PyTorch estimator. It configures the training image, hardware, input channels, and TensorBoard integration. Validation data is included if provided.

from sagemaker.debugger import TensorBoardOutputConfig
from sagemaker.pytorch import PyTorch
from sagemaker.inputs import TrainingInput

tensorboard_output_config = TensorBoardOutputConfig(
    s3_output_path=output_s3_uri,
)

estimator = PyTorch(
    output_path=output_s3_uri,
    base_job_name=job_name,
    role=role_arn,
    instance_count=instance_count,
    instance_type=instance_type,
    training_recipe=recipe_path,
    sagemaker_session=sagemaker_session,
    image_uri=image_uri,
    tensorboard_output_config=tensorboard_output_config, # Add the setting for using TensorBoard.
    disable_profiler=True,
    debugger_hook_config=False,
    output_kms_key=output_kms_key
)

trainingInput = TrainingInput(
    s3_data=input_s3_uri,
    distribution='FullyReplicated',
    s3_data_type='Converse'
)

if (validation_s3_uri):
    validationInput = TrainingInput(
        s3_data=validation_s3_uri,
        distribution='FullyReplicated',
        s3_data_type='Converse'
    )

    estimator.fit(inputs={"train": trainingInput, "validation": validationInput}) # inputs must be called "train" and "validation", do not change
else:
    estimator.fit(inputs={"train": trainingInput})
```

## Panduan pengoptimalan hyperparameter
<a name="nova-model-hyperparameter"></a>

Menyetel model Nova LLM Anda secara efektif membutuhkan pemilihan hiperparameter yang cermat. Meskipun bagian ini menjelaskan struktur dan komponen resep dasar, mengoptimalkan hiperparameter untuk kasus penggunaan spesifik Anda seringkali memerlukan panduan tambahan. Untuk rekomendasi komprehensif tentang pemilihan hiperparameter, praktik terbaik, dan strategi pengoptimalan, lihat [Memilih hiperparameter](https://docs.aws.amazon.com//nova/latest/userguide/customize-fine-tune-hyperparameters.html). Sumber daya ini memberikan panduan terperinci tentang memilih tingkat pembelajaran yang sesuai, ukuran batch, zaman pelatihan, dan parameter penting lainnya berdasarkan karakteristik kumpulan data dan tujuan pelatihan Anda. Sebaiknya konsultasikan panduan ini saat menyempurnakan konfigurasi resep Anda untuk mencapai kinerja model yang optimal.

Untuk detail tentang nilai minimum, maksimum, dan default untuk epoch, tingkat pembelajaran, dan langkah pemanasan pembelajaran, lihat [Hyperparameters](https://docs.aws.amazon.com//nova/latest/userguide/fine-tune-hyperparameters-understanding-models.html) for Understanding models.

**Modifikasi resep umum**

Berikut adalah beberapa penyesuaian resep umum berdasarkan kasus penggunaan tertentu:
+ **Untuk kumpulan data yang lebih kecil (<1.000 contoh)**

  ```
  training_config:
      max_epochs: 2  # More passes through a smaller dataset
  model:
      hidden_dropout: 0.1  # Increase regularization
      weight_decay: 0.01   # Increase regularization
  ```
+ **Untuk efisiensi dengan komputasi terbatas**

  ```
  peft:
      peft_scheme: "lora"
      lora_tuning:
  ```
+ **Untuk penyetelan instruksi yang kompleks**

  ```
  optim:
      lr: 5e-6  # Lower learning rate for more stable learning
      sched:
          warmup_steps: 100  # Longer warmup for stability
  ```