

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

# Distilasi Amazon Nova
<a name="nova-distillation"></a>

Panduan memulai cepat ini membantu Anda memulai distilasi model Amazon Nova menggunakan fine-tuning (SFT) yang diawasi pada AI. SageMaker 

Model distilasi adalah metode SageMaker AI yang mentransfer pengetahuan dari model besar dan canggih ke model yang lebih kecil dan efisien. Dengan model Amazon Nova, model “guru” yang lebih besar (seperti Amazon Nova Pro atau) meneruskan kemampuannya ke model “siswa” yang lebih kecil (seperti Amazon Nova Lite atau Amazon Nova Micro). Ini menciptakan model khusus yang mempertahankan kinerja tinggi sambil menggunakan lebih sedikit sumber daya.

## Komponen utama
<a name="nova-distillation-training-job-components"></a>

Proses distilasi terutama melibatkan dua jenis model:

**Model guru** berfungsi sebagai sumber pengetahuan dan meliputi:
+ Amazon Nova Pro (amazon. nova-pro-v1:0)
+  (amazon. nova-premier-v1:0)

**Model siswa** menerima dan menerapkan pengetahuan:
+ Amazon Nova Lite (amazon. nova-lite-v1:0:300 k)
+ Amazon Nova Micro (amazon. nova-micro-v1:0:128 k)
+ Amazon Nova Pro (amazon. nova-pro-v1:0:300 k) - Hanya tersedia saat digunakan sebagai guru

## Kasus penggunaan
<a name="nova-distillation-training-job-use-case"></a>

Mode distilasi sangat bermanfaat ketika:
+ Aplikasi Anda memiliki persyaratan latensi, biaya, dan akurasi yang ketat.
+ Anda memerlukan model khusus untuk tugas-tugas tertentu tetapi tidak memiliki data pelatihan berlabel berkualitas tinggi yang memadai.
+ Anda ingin mencocokkan kinerja model canggih sambil mempertahankan efisiensi model yang lebih kecil.

## Prasyarat
<a name="nova-distillation-training-job-prerequisites"></a>
+ Akun AWS dengan akses ke model Amazon Nova dan kuota layanan yang sesuai (min. 6 instans P5 dan 1 R5).
+ Peran IAM dengan izin untuk Pekerjaan SageMaker Pelatihan.
+ Bucket Amazon S3 untuk menyimpan data dan output pelatihan.

## Menyiapkan augmentasi data
<a name="nova-distillation-training-job-data-augment"></a>

Fase augmentasi data menggunakan SageMaker Training Jobs untuk menghasilkan data pelatihan berkualitas tinggi menggunakan model guru. Bagian ini merinci proses penyiapan dan persyaratan.

### IAM Role
<a name="nova-distillation-training-job-data-augment-iam"></a>

Untuk membuat peran IAM dan melampirkan kebijakan, lihat [Membuat peran dan melampirkan kebijakan (konsol)](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_job-functions_create-policies.html). Jika Anda menggunakan AWS CLI, ikuti instruksi dalam [create-role](https://docs.aws.amazon.com//cli/latest/reference/iam/create-role.html) dan. [attach-role-policy](https://docs.aws.amazon.com//cli/latest/reference/iam/attach-role-policy.html) Untuk informasi selengkapnya, lihat [Cara menggunakan peran eksekusi SageMaker AI](https://docs.aws.amazon.com//sagemaker/latest/dg/sagemaker-roles.html) dari *Panduan Pengembang SageMaker AI*.

Berikut ini adalah contoh perintah untuk referensi Anda.

**Buat peran eksekusi SageMaker AI**

Peran ini dibuat dengan hubungan kepercayaan yang memungkinkan SageMaker AI, Amazon Bedrock, untuk mengambil peran ini. Ini memungkinkan layanan ini bertindak atas nama Anda saat menjalankan pekerjaan inferensi batch.

```
aws iam create-role \
 --role-name NovaCustomizationRole \
 --assume-role-policy-document '{
 "Version": "2012-10-17",		 	 	 
 "Statement": [
 {
 "Effect": "Allow",
 "Principal": {
 "Service": ["sagemaker.amazonaws.com",
            "bedrock.amazonaws.com"]
 },
 "Action": "sts:AssumeRole"
 }
 ]
}'
```

**Lampirkan kebijakan yang diperlukan**

```
# Attach AmazonSageMakerFullAccess
 aws iam attach-role-policy \
 --role-name NovaCustomizationRole \
 --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess

# Attach AmazonBedrockFullAccess
 aws iam attach-role-policy \
 --role-name NovaCustomizationRole \
 --policy-arn arn:aws:iam::aws:policy/AmazonBedrockFullAccess

 # Attach S3 access policy
 aws iam attach-role-policy \
 --role-name NovaCustomizationRole \
 --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
 
# Attach AmazonEC2FullAccess
 aws iam attach-role-policy \
 --role-name NovaCustomizationRole \
 --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess
 
# Attach AmazonEC2ContainerRegistryFullAccess
 aws iam attach-role-policy \
 --role-name NovaCustomizationRole \
 --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess
 
# Attach AmazonEC2ContainerRegistryFullAccess
 aws iam attach-role-policy \
 --role-name NovaCustomizationRole \
 --policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess
```

Lampirkan kebijakan inline berikut ke peran eksekusi pelanggan yang diperlukan untuk Distillation Container.
+ AWS KMS izin: Memungkinkan peran untuk berinteraksi dengan Layanan Manajemen AWS Kunci, yang diperlukan untuk mengakses sumber daya terenkripsi atau mengelola kunci enkripsi.
+ `IAM:PassRole`: Izin ini sering diperlukan ketika satu layanan perlu meneruskan peran ini ke layanan lain, pola umum dalam integrasi AWS layanan.

```
aws iam put-role-policy \
 --role-name NovaCustomizationRole \
 --policy-name Distillation-Additional-Permissions\
 --policy-document '{
 "Version": "2012-10-17",		 	 	 
 "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "*"
        }
    ]
}
```

### Konfigurasi Amazon VPC
<a name="nova-distillation-training-job-data-augment-vpc"></a>

Untuk membuat konfigurasi VPC Amazon untuk Pekerjaan SageMaker Pelatihan menggunakan Konsol Manajemen AWS, ikuti petunjuk di [Konfigurasikan VPC pribadi Anda untuk pelatihan SageMaker AI](https://docs.aws.amazon.com//sagemaker/latest/dg/train-vpc.html) (konsol).

**Buat VPC Amazon baru**

```
Name: Distillation-VPC
IPv4 CIDR: 10.0.0.0/16 (or your preferred range)
Availability Zones: 2
Public Subnets: 2
Private Subnets: 2
NAT Gateways: 1 (in one AZ)
```

**Buat grup keamanan**

```
Name: Distillation-SG
Description: Security group for data distillation jobs
Inbound Rules: Allow all traffic from self
Outbound Rules: Allow all traffic (0.0.0.0/0)
```

**Buat titik akhir VPC untuk layanan berikut**

```
com.amazonaws.[region].s3
com.amazonaws.[region].sagemaker.api
com.amazonaws.[region].sagemaker.runtime
com.amazonaws.[region].bedrock.api
com.amazonaws.[region].bedrock.runtime
com.amazonaws.[region].sts
com.amazonaws.[region].logs
com.amazonaws.[region].ecr.api
com.amazonaws.[region].ecr.dkr
```

Untuk setiap titik akhir:
+ Pilih Distilasi-VPC Anda
+ Pilih subnet pribadi
+ Pilih grup keamanan Distilasi-SG

### AWS KMS kunci
<a name="nova-distillation-training-job-data-augment-kms"></a>

Saat bekerja dengan inferensi batch Amazon Bedrock, AWS KMS kunci diperlukan untuk keamanan dan kepatuhan data. Pekerjaan inferensi batch Amazon Bedrock memerlukan bucket Amazon S3 input dan output untuk dienkripsi AWS KMS dengan kunci untuk memastikan perlindungan data saat istirahat.

Buat kunci KMS menggunakan AWS CLI perintah ini:

```
# Create KMS key
aws kms create-key \
  --description "KMS key for Nova distillation"
```

Perintah akan menampilkan informasi kunci termasuk ARN. Contoh output:

```
{
    "KeyMetadata": {
        "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
        "Arn": "arn:aws:kms:{{us-east-1}}:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }
}
```

**catatan**  
Simpan ARN kunci KMS dari output karena Anda akan membutuhkannya untuk pembuatan bucket Amazon S3 di bagian berikutnya.

### Buket Amazon S3
<a name="nova-distillation-training-job-data-augment-s3"></a>

Anda memerlukan dua jenis penyimpanan Amazon S3. Bucket Amazon S3 yang dikelola pelanggan menyimpan data input dan file output Anda. `manifest.json` Anda membuat dan mengelola bucket ini dan dapat menggunakan satu bucket untuk input dan output. Bucket ini harus dikonfigurasi dengan enkripsi KMS karena akan menyimpan data keluaran sensitif dan akan digunakan oleh pekerjaan inferensi batch Amazon Bedrock - Amazon Bedrock memerlukan bucket terenkripsi KMS untuk memproses tugas inferensi batch. 

Bucket Amazon S3 yang dikelola layanan menyimpan bobot model. Bucket Amazon S3 yang dikelola layanan dibuat secara otomatis selama pekerjaan pelatihan pertama Anda. Ini memiliki kontrol akses terbatas dengan jalur tertentu yang dapat diakses melalui file manifes saja.

Untuk membuat bucket secara spesifik Wilayah AWS, gunakan perintah CLI [create-bucket](https://docs.aws.amazon.com//cli/latest/reference/s3api/create-bucket.html). 

Contoh perintah untuk membuat bucket Amazon S3 dengan AWS KMS enkripsi. Ganti `{kms_key_arn}` dengan AWS KMS ARN kunci Anda. Anda harus membuat AWS KMS kunci terlebih dahulu jika Anda belum melakukannya.

```
aws s3api create-bucket \
    "Rules": [
        {
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "aws:kms",
                "KMSMasterKeyID": "{kms_key_arn}"
            },
            "BucketKeyEnabled": true
        }
    ]
}'
```

## Memulai pekerjaan SageMaker pelatihan
<a name="nova-distillation-training-job-start"></a>

Sebelum Anda memulai pekerjaan pelatihan, siapkan data Anda.

**Persyaratan format data -** Kumpulan data input Anda harus dalam format JSONL dengan setiap baris berisi sampel dalam format sebaliknya untuk informasi lebih lanjut ikuti [Mempersiapkan data untuk](https://docs.aws.amazon.com//nova/latest/userguide/custom-distill-prepare.html) menyuling model pemahaman.

**Kendala set data**
+ Permintaan minimum: 100
+ Ukuran file maksimal: 2GB
+ Panjang garis maksimum: 180KB
+ Format file: Hanya JSONL

Untuk mengunggah data input, jalankan perintah berikut.

```
aws s3 cp /path/to/input-data/ s3://customer-input-data-bucket/ —recursive
```

**Resep augmentasi data**

Anda bisa mendapatkan resep distilasi dari repositori [resep](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes). Resep distilasi ada di bawah direktori:`recipes-collection/recipes/fine-tuning/nova`. Proses augmentasi data dikendalikan oleh file konfigurasi YAMM. Di bawah ini adalah penjelasan rinci dari setiap parameter. Semua adalah bidang wajib.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| nama | Nama deskriptif untuk pekerjaan pelatihan Anda. Ini membantu mengidentifikasi pekerjaan Anda di Konsol Manajemen AWS. | 
| destilasi\_data | Mengaktifkan pekerjaan distilasi data, jangan memodifikasi bidang ini. | 
| maxNumberOfPermintaan | Jumlah maksimum permintaan dalam kumpulan data. | 
| maxResponseLength | Panjang respons maksimum per prompt (token). | 
| maxInputFileSizeInGB | Ukuran maksimum file input (dalam GB). | 
| maxLineLengthINKB | Ukuran maksimum satu baris dalam file input (dalam KB). | 
| maxStudentModelFineTuningContextLengthInTokens | Ukuran jendela konteks maksimum (token) untuk model siswa. Nilai adalah tidak boleh melebihi kapasitas model siswa. Anda dapat mengatur nilai ini ke 32k atau 64k berdasarkan kapasitas model siswa. | 
| teacherModelId | Saat Anda menyetel Id Model Guru, pilih dari dua: [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/nova/latest/userguide/nova-distillation.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/nova/latest/userguide/nova-distillation.html) | 
| suhu | Mengontrol keacakan respons (0,7 direkomendasikan untuk keseimbangan). | 
| atas\_p | Ambang probabilitas kumulatif untuk pengambilan sampel token (disarankan 0,9). | 
| customer\_bucket | Bucket Amazon S3 untuk input/output data. | 
| kms\_key | AWS KMS kunci untuk mengenkripsi output di S3, Ini diperlukan oleh inferensi batch Bedrock untuk menyimpan output yang dikembalikan oleh pekerjaan inferensi. | 

**Batasan**

Untuk Model Guru sebagai Nova Premier - Hanya didukung di wilayah IAD (`us-east-1`) karena inferensi batch Amazon Bedrock tidak tersedia di wilayah ARN (). `eu-north-1`

**Praktik Terbaik**

Persiapan data
+ Sertakan 100 contoh berlabel berkualitas tinggi untuk memandu model guru
+ Hapus label berkualitas buruk sebelum pengiriman
+ Ikuti pemahaman teks yang mendorong praktik terbaik
+ Permintaan tes dengan model guru sebelum memulai distilasi

Pemilihan model
+ Gunakan Nova Pro sebagai guru untuk kasus penggunaan umum
+ Pertimbangkan Nova Premier untuk pengetahuan domain khusus
+ Pilih model siswa berdasarkan latensi dan persyaratan biaya

Optimalisasi kinerja
+ Mulailah dengan suhu yang disarankan (0,7) dan top\_p (0,9)
+ Validasi kualitas data yang ditambah sebelum fine-tuning
+ Ikuti pedoman dalam [Memilih hyperparameters](https://docs.aws.amazon.com//nova/latest/userguide/customize-fine-tune-hyperparameters.html) untuk menyesuaikan hyperparameters

**Memulai pekerjaan dengan PySDK**

Contoh notebook berikut menunjukkan bagaimana menjalankan pekerjaan SageMaker pelatihan untuk distilasi. 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).

```
import os
import sagemaker,boto3
from sagemaker.pytorch import PyTorch
from sagemaker.inputs import TrainingInput

sagemaker_session = sagemaker.Session()
role = sagemaker.get_execution_role()

# SETUP
job_name = <Your_job_name> # Must be unique for every run

input_s3_uri = <S3 URI to your input dataset> # Must end in .jsonl file
output_s3_uri = <S3 URI to your output bucket> + job_name

image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-distillation-repo:SM-TJ-DISTILL-LATEST" # Do not change
instance_type = "ml.r5.4xlarge" # Recommedation is to use cpu instances 
instance_count = 1 # Must be 1, do not change 
role_arn = <IAM role to execute the job with>
recipe_path = <Local path to your recipe>

# Execution

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,
    max_run=432000,
    sagemaker_session=sagemaker_session,
    image_uri=image_uri,
    subnets= ['subnet-xxxxxxxxxxxxxxxxx','subnet-xxxxxxxxxxxxxxxxx'], # Add subnet groups created in previous steps
    security_group_ids= ['sg-xxxxxxxxxxxxxxxxx'], # Add security group created in previous steps
    disable_profiler=True,
    debugger_hook_config=False
)

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

# The keys must be "train".
estimator.fit(inputs={"train": trainingInput})
```

## CloudWatch log
<a name="nova-distillation-logs"></a>

Log tersedia di Amazon CloudWatch di bawah grup `/aws/sagemaker/TrainingJobs` log di Anda Akun AWS. Anda akan melihat satu file log per host yang digunakan untuk pekerjaan pelatihan Anda.

## Pelatihan yang sukses
<a name="nova-distillation-successful-training"></a>

Untuk pekerjaan pelatihan yang sukses, Anda akan melihat pesan log “Pelatihan selesai” di akhir log.

Bucket keluaran berisi file-file berikut:
+ `distillation_data/manifest.json`: Berisi lokasi data yang diperbesar. Anda dapat menggunakan kumpulan data ini untuk memulai pekerjaan fine-tuning Amazon Nova. Hanya pelatihan SFT yang didukung dengan kumpulan data ini.

  ```
  {
    "distillation_data": "s3://{{customer_escrow_bucket}}/{{job_id}}/distillation_data/"
  }
  ```
+ `distillation_data/sample_training_data.jsonl`: File JSONL ini berisi 50 sampel data tambahan untuk pratinjau guna membantu Anda menentukan kualitas data.
+ `distillation_data/training_config.json`: File ini berisi hyperparameters yang direkomendasikan untuk pekerjaan fine-tuning Amazon Nova. Berikut ini adalah file contoh:

  ```
  {
      "epochCount": 5, 
      "learningRate": 1e-05, 
      "batchSize": 1, 
      "learningRateWarmupSteps": 1
  }
  ```

## Memvalidasi kualitas data yang diperbesar
<a name="nova-distillation-training-job-validate"></a>

Sebelum melanjutkan ke fine-tuning, sangat penting untuk memvalidasi kualitas data yang ditambah:

1. Tinjau `sample_training_data.jsonl` file di bucket keluaran Anda. File ini berisi 50 sampel acak dari kumpulan data yang ditambah.

1. Periksa secara manual sampel ini untuk relevansi, koherensi, dan keselarasan dengan kasus penggunaan Anda.

1. Jika kualitasnya tidak memenuhi harapan Anda, Anda mungkin perlu menyesuaikan data input atau parameter distilasi dan menjalankan kembali proses augmentasi data.

Setelah augmentasi data selesai, fase kedua melibatkan fine-tuning model siswa menggunakan. Untuk informasi selengkapnya, lihat [Penyetelan halus yang diawasi (SFT)](nova-fine-tune.md).

Dalam resep pelatihan SFT Anda dapat melewati jalur dataset yang dikembalikan dari pekerjaan sebelumnya.

```
data_s3_path: "s3://[escrow-bucket]/[job-name]/distillation_data/training_data.jsonl"
```

Ganti juga konfigurasi pelatihan yang direkomendasikan yang dihasilkan dari langkah sebelumnya.

**Batasan**
+ Hanya mendukung teknik fine-tuning SFT Nova pada data tambahan ini.
+ Tidak ada dukungan untuk distilasi multi-modal.
+ Tidak ada dukungan untuk model guru khusus.