

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

# Pra-pelatihan lanjutan (CPT)
<a name="nova-cpt"></a>

Pre-training lanjutan (CPT) adalah teknik pelatihan yang memperluas fase pra-pelatihan model yayasan dengan mengeksposnya ke teks tambahan yang tidak berlabel dari domain atau korpora tertentu. Tidak seperti fine-tuning yang diawasi, yang membutuhkan pasangan input-output berlabel, CPT melatih dokumen mentah untuk membantu model memperoleh pengetahuan yang lebih dalam tentang domain baru, mempelajari terminologi dan pola penulisan khusus domain, dan beradaptasi dengan jenis konten atau area subjek tertentu.

Pendekatan ini sangat berharga ketika Anda memiliki volume besar (puluhan miliar token) data teks khusus domain, seperti dokumen hukum, literatur medis, dokumentasi teknis, atau konten bisnis berpemilik, dan Anda ingin model tersebut mengembangkan kefasihan asli dalam domain itu. Umumnya, setelah tahap CPT, model perlu menjalani tahap penyetelan instruksi tambahan untuk memungkinkan model menggunakan pengetahuan yang baru diperoleh dan menyelesaikan tugas yang berguna.

**Model yang didukung**  
CPT tersedia untuk model Amazon Nova berikut:
+ Nova 1.0 (Mikro, Lite, Pro)
+ Nova 2.0 (Ringan)

**Kapan menggunakan Nova 1.0 versus Nova 2.0**  
Rangkaian model Amazon Nova menawarkan beberapa titik operasi kinerja harga untuk mengoptimalkan antara akurasi, kecepatan, dan biaya.

Pilih Nova 2.0 saat Anda membutuhkan yang berikut ini:
+ Kemampuan penalaran tingkat lanjut untuk tugas analitis yang kompleks
+ Kinerja unggul dalam pengkodean, matematika, dan pemecahan masalah ilmiah
+ Dukungan panjang konteks yang lebih panjang
+ Performa multibahasa yang lebih baik

**catatan**  
Model yang lebih besar tidak selalu lebih baik. Pertimbangkan tradeoff kinerja biaya dan persyaratan bisnis spesifik Anda saat memilih antara model Nova 1.0 dan Nova 2.0.

# CPT pada Nova 2.0
<a name="nova-cpt-2"></a>

Amazon Nova Lite 2.0 adalah model penalaran yang dilatih pada kumpulan data yang lebih besar dan lebih beragam daripada Nova Lite 1.0. Meskipun merupakan model yang lebih besar, Nova Lite 2.0 memberikan inferensi yang lebih cepat daripada Nova Lite 1.0 sambil menawarkan kemampuan penalaran yang ditingkatkan, panjang konteks yang lebih panjang, dan peningkatan kinerja multibahasa.

CPT di Nova 2.0 memungkinkan Anda untuk memperluas kemampuan canggih ini dengan data spesifik domain Anda, memungkinkan model untuk mengembangkan keahlian mendalam di bidang khusus sambil mempertahankan penalaran dan kemampuan analitisnya yang unggul.

## Contoh resep CPT
<a name="nova-cpt-2-sample-recipe"></a>

Berikut ini adalah contoh resep untuk CPT. Anda dapat menemukan resep ini dan lainnya di repositori [resep](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/training/nova).

```
# Note:
# This recipe can run on p5.48xlarge
# Run config
run:
  name: "my-cpt-run"                           # A descriptive name for your training job
  model_type: "amazon.nova-2-lite-v1:0:256k"   # Model variant specification, do not change
  model_name_or_path: "nova-lite-2/prod"        # Base model path, do not change
  replicas: 8                                   # Number of compute instances for training, allowed values are 4, 8, 16, 32
  data_s3_path: ""                              # Customer data paths
  validation_data_s3_path: ""                   # Customer validation data paths
  output_s3_path: ""                            # Output artifact path,  job-specific configuration - not compatible with standard SageMaker Training Jobs
  mlflow_tracking_uri: ""                       # Required for MLFlow
  mlflow_experiment_name: "my-cpt-experiment"   # Optional for MLFlow. Note: leave this field non-empty
  mlflow_run_name: "my-cpt-run"                 # Optional for MLFlow. Note: leave this field non-empty

## Training specific configs
training_config:
  task_type: cpt
  max_length: 8192                              # Maximum context window size (tokens)
  global_batch_size: 256                        # Global batch size, allowed values are 32, 64, 128, 256.

  trainer:
    max_steps: 10                               # The number of training steps to run total
    val_check_interval: 10                      # The number of steps between running validation. Integer count or float percentage
    limit_val_batches: 2                        # Batches of the validation set to use each trigger

  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

  optim:
    optimizer: adam
    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
    adam_beta1: 0.9                             # Beta1 for Adam optimizer
    adam_beta2: 0.95                            # Beta2 for Adam optimizer
    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
```

## Persiapan data untuk CPT pada 2.0
<a name="nova-cpt-2-data-prep"></a>

**Persyaratan format data**  
Kumpulan data pelatihan dan validasi harus berupa file JSONL mengikuti format yang ditunjukkan di bawah ini, di mana setiap baris berisi objek JSON yang mewakili percakapan dengan bidang dan struktur yang diperlukan. Inilah contohnya:

```
{"text": "AWS stands for Amazon Web Services"}
{"text": "Amazon SageMaker is a fully managed machine learning service"}
{"text": "Amazon Bedrock is a fully managed service for foundation models"}
```

Entri teks harus berisi konten berkualitas tinggi yang mengalir secara alami yang mewakili domain target.

Uji apakah data tersebut mampu diubah menjadi [format Arrow](https://huggingface.co/docs/datasets/en/about_arrow). Gunakan skrip python di bawah ini untuk membantunya. Pastikan `datasets==2.18.0` versi minimal digunakan:

```
from datasets import load_dataset, load_from_disk
from pathlib import Path

input_path = Path("<Your jsonl file>")
output_path = Path("<Your output directory>")

dataset = load_dataset("json", data_files=str(input_path), split="train")
dataset.save_to_disk(str(output_path), max_shard_size="1GB")

try:
  test_dataset = datasets.load_from_disk(output_dir)
  print(f"Dataset loaded successfully ✅! Contains {len(test_dataset)} samples")
except Exception as e:
  print(e)
```

Ini harus mencetak jumlah baris yang sama yang ada di file JSONL.

Saat menggunakan datamixing, jalankan pekerjaan pertama dengan. `max_steps=2` Ini akan membantu membuat pengoptimalan di cluster untuk akses data dan memvalidasi bahwa semua datamix tersedia.

**Cara menyiapkan data untuk CPT**  
Data pelatihan adalah faktor penentu yang paling penting untuk keberhasilan pra-pelatihan berkelanjutan. Sementara data CPT sering digambarkan sebagai “tidak berlabel,” kenyataannya jauh lebih bernuansa. Bagaimana data disusun, diformat, dan disajikan menentukan apakah model akan memperoleh pengetahuan dan keterampilan yang diperlukan untuk kasus penggunaan bisnis.

### Mempersiapkan kumpulan data bisnis terstruktur untuk CPT
<a name="nova-cpt-2-structured-data"></a>

Ini adalah tantangan umum bagi perusahaan dan organisasi yang membangun model pondasi khusus dalam domain mereka. Sebagian besar bisnis memiliki repositori data terstruktur yang kaya: katalog produk, profil pengguna, log transaksi, pengiriman formulir, panggilan API, dan metadata operasional. Pada pandangan pertama, ini terlihat sangat berbeda dari teks web tidak terstruktur yang biasanya digunakan dalam pra-pelatihan standar.

Untuk belajar secara efektif dari data bisnis terstruktur, pikirkan baik-baik tentang tugas-tugas hilir dan rancang presentasi data untuk memaksa model mempelajari hubungan prediktif yang tepat.

Untuk membuka potensi penuh dari pra-pelatihan berkelanjutan, pertimbangkan:
+ Tugas apa yang harus dilakukan model pada waktu inferensi
+ Informasi apa yang ada dalam data mentah
+ Bagaimana menyusun data itu sehingga model belajar mengekstrak dan memanipulasi informasi dengan benar

Cukup membuang data terstruktur ke dalam pelatihan tidak akan mengajarkan model untuk bernalar tentang hal itu. Secara aktif membentuk presentasi data untuk memandu apa yang dipelajari model.

Pada bagian berikut, ada tinjauan literatur yang menunjukkan pentingnya augmentasi data dan memberikan contoh strategi augmentasi untuk data bisnis terstruktur yang akan memberikan ide-ide berguna tentang bagaimana memperlakukan dan mengatur dataset bisnis untuk CPT.

**Data terstruktur untuk CPT dalam literatur**  
CPT dapat mengemas fakta domain ke dalam model tetapi sering gagal membuat fakta tersebut dapat diambil dan dimanipulasi ketika input atau tugas bergeser. Eksperimen terkontrol menunjukkan bahwa tanpa augmentasi yang beragam selama pra-pelatihan, model menghafal fakta dengan cara rapuh yang tetap sulit untuk diekstraksi bahkan setelah penyetelan instruksi selanjutnya, dan mereka merekomendasikan penyuntikan instruksi seperti sinyal di awal pelatihan. Untuk data semi terstruktur, serialisasi acak dan augmentasi lainnya mengurangi overfitting skema, itulah sebabnya CPT harus disisipkan dengan tugas gaya instruksi daripada dijalankan terlebih dahulu dan IFT nanti. Pekerjaan yang berfokus pada keuangan lebih lanjut menemukan bahwa bersama-sama mencampur CPT dan data instruksi pada waktu batch meningkatkan generalisasi dan mengurangi lupa versus resep berurutan. Laporan teknis Qwen menyatu pada pola yang sama dengan mengintegrasikan data instruksi berkualitas tinggi ke dalam pra-pelatihan itu sendiri, yang meningkatkan pembelajaran konteks dan mempertahankan instruksi berikut sambil memperoleh pengetahuan domain baru.

Augmentasi data untuk korpora semi terstruktur adalah tuas kunci. CPT sadar grafik sintetis memperluas kumpulan domain kecil menjadi korpora terkait entitas yang secara eksplisit mengajarkan hubungan dan senyawa dengan pengambilan pada waktu inferensi. Gabungan CPT plus pencampuran instruksi mengungguli jaringan pipa berurutan di bidang keuangan dan menyeimbangkan domain dengan data umum menurunkan degradasi keterampilan umum. CPT domain skala sangat besar juga dapat mempertahankan kemampuan yang luas dan bahkan memungkinkan trade off melalui penggabungan model, namun masih menunjuk ke penyetelan instruksi sebagai langkah penting berikutnya, memperkuat nilai pengenalan sinyal instruksi selama CPT.

**Menyuntikkan keragaman melalui pengacakan dan pengocokan**  
Strategi umum yang membantu mengajarkan model secara efektif dari kumpulan data terstruktur dan semi terstruktur adalah dengan mengacak urutan bidang dalam kumpulan data, dan bahkan secara acak mengeluarkan beberapa kunci.

Mengacak bidang memaksa model untuk membaca apa arti setiap nilai alih-alih di mana ia muncul dan mempelajari hubungan antara semua bidang. Misalnya, dalam kasus permainan video yang diposting di toko amazon, ketika “Judul,” “Platform,” “Harga,” “Kondisi,” dan “Edisi” tiba dalam permutasi yang berbeda, model tidak dapat mengandalkan “slot ketiga adalah platform”; itu harus mengikat label ke nilai dan mempelajari hubungan bilateral antara atribut: judul platform, harga platform, kondisi harga. Jadi dapat, misalnya, menyimpulkan kemungkinan platform dari nama game dan harga yang diamati, atau memperkirakan kisaran harga yang masuk akal yang diberikan judul dan platform.

Menjatuhkan kunci secara acak selama serialisasi bertindak seperti putus fitur: ini mencegah adaptasi bersama pada satu bidang dan memaksa model untuk memulihkan informasi yang hilang dari bukti yang tersisa. Jika “Platform” tidak ada, model harus mengambilnya dari string judul atau teks kompatibilitas; jika “Harga” disembunyikan, ia harus melakukan triangulasi dari platform, edisi, dan kondisi. Ini membangun simetri (A→B dan B→A), ketahanan terhadap daftar dunia nyata yang berantakan, dan invarian skema saat bidang hilang, diganti namanya, atau disusun ulang.

Contoh gaya belanja membuatnya konkret. Serialisasi item yang sama dengan beberapa cara—"Judul: 'Elden Ring' \$1 Platform: PlayStation 5 \$1 Kondisi: Digunakan—Seperti Baru \$1 Harga: \$134,99" dan permutasi seperti “Harga: \$134,99 \$1 Judul: 'Elden Ring' \$1 Kondisi: Digunakan — Seperti Baru \$1 Platform: 5"—dan pada beberapa lintasan, jatuhkan “Platform” sambil meninggalkan “Kompatibel dengan" dalam deskripsi. PlayStation PS5 Latih tujuan pelengkap seperti memprediksi platform dari \$1title, price\$1 dan memprediksi ember harga dari \$1title, platform\$1. Karena urutan dan bahkan kehadiran kunci bervariasi, satu-satunya strategi yang stabil adalah mempelajari hubungan sejati antara atribut daripada menghafal templat.

### Cara data disajikan penting
<a name="nova-cpt-2-data-presentation"></a>

LLMs belajar dengan memprediksi token berikutnya dari apa yang telah mereka lihat. Jadi urutan bidang dan acara yang ditampilkan selama pelatihan memutuskan apa yang dapat dipelajari model. Jika format pelatihan cocok dengan tugas sebenarnya, kerugian mendarat pada token keputusan yang tepat. Jika bidang dilemparkan bersama tanpa struktur, model mempelajari pintasan atau menghafal popularitas dan kemudian gagal ketika diminta untuk memilih di antara opsi.

Tunjukkan situasinya terlebih dahulu, lalu pilihannya, lalu keputusannya. Jika model juga harus belajar tentang hasil atau penjelasan, letakkan setelah keputusan.

### Sampel pengepakan untuk CPT
<a name="nova-cpt-2-packing"></a>

**Apa itu pengepakan?**  
Ini hanya berarti mengisi setiap jendela urutan dalam data pelatihan dengan beberapa contoh utuh sehingga jendela padat dengan token nyata, bukan padding.

**Mengapa itu penting**  
Selama pelatihan panjang konteks maksimum ditetapkan, misalnya 8.192 token. Batch dibentuk menjadi [ukuran batch × panjang konteks]. Jika contoh pelatihan lebih pendek dari panjang konteks, posisi yang tersisa akan empuk. Padding masih berjalan melalui perhatian dan kernel MLP bahkan jika kerugian ditutupi, jadi komputasi dibayar untuk token yang tidak membawa sinyal pembelajaran.

**Bagaimana cara melakukan pengepakan?**  
Untuk mengemas beberapa sampel, gabungkan beberapa sampel pelatihan dengan ` [DOC] ` pemisah di antaranya (perhatikan ruang sebelum dan sesudah [DOC]) sehingga panjang penuh sampel berada di bawah panjang konteks yang diinginkan.

Contoh dokumen yang dikemas akan terlihat seperti ini:

```
{"text": "training sample 1 [DOC] training sample 2 [DOC] training sample 3"}
```

### Parameter Penyetelan CPT
<a name="nova-cpt-2-tuning-parameters"></a>

Parameter yang tersedia untuk fine-tuning dengan CPT meliputi:

**Jalankan Konfigurasi**  

+ **nama: Nama** deskriptif untuk pekerjaan pelatihan Anda. Ini membantu mengidentifikasi pekerjaan Anda di Konsol AWS Manajemen.
+ **model\$1type**: Varian model Amazon Nova untuk digunakan. Opsi yang tersedia adalah`amazon.nova-2-lite-v1:0:256k`.
+ **model\$1name\$1or\$1path: Jalur** ke model dasar yang akan digunakan untuk pelatihan Anda. Opsi yang tersedia adalah`nova-lite-2/prod`, atau jalur S3 untuk pos pemeriksaan pasca-pelatihan (). `s3://customer-escrow-bucket-unique_id/training_run_name`
+ **replika**: Jumlah instance komputasi yang digunakan untuk pelatihan terdistribusi. Nilai yang tersedia bervariasi berdasarkan model yang Anda pilih. Amazon Nova Lite 2.0 mendukung replika 4, 8, 16, atau 32.
+ **data\$1s3\$1path**: Lokasi S3 dari dataset pelatihan, yang merupakan file JSONL. File ini harus berada di AWS akun dan Wilayah yang sama dengan cluster. Semua lokasi S3 yang disediakan harus berada di akun dan Wilayah yang sama.
+ **validation\$1data\$1s3\$1path**: (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 yang disediakan harus berada di akun dan Wilayah yang sama.
+ **output\$1s3\$1path**: Lokasi S3 tempat manifes dan log disimpan. TensorBoard Semua lokasi S3 yang disediakan harus berada di AWS akun dan AWS Wilayah yang sama.
+ **mlflow\$1tracking\$1uri**: ARN Aplikasi yang akan digunakan untuk logging MLFlow MLFlow 
+ **mlflow\$1experiment\$1name: nama percobaan** MLFlow 
+ **mlflow\$1run\$1name**: jalankan nama MLFlow 

**Konfigurasi Pelatihan**  

+ **max\$1length: Panjang** urutan maksimum dalam token. Ini menentukan ukuran jendela konteks untuk pelatihan. Nilai maksimum yang didukung adalah 8192 token untuk CPT.

  Urutan yang lebih panjang akan meningkatkan efisiensi pelatihan dengan mengorbankan peningkatan kebutuhan memori. Kami menyarankan Anda mencocokkan parameter max\$1length dengan distribusi data Anda.
+ **global\$1batch\$1size**: Jumlah total sampel pelatihan yang diproses bersama dalam satu pass maju atau mundur di semua perangkat dan pekerja.

  Nilai ini mengalikan ukuran batch per perangkat dan jumlah perangkat. Ini mempengaruhi stabilitas pelatihan dan throughput. Kami menyarankan Anda memulai dengan ukuran batch yang pas dengan nyaman di dalam memori Anda dan meningkatkan skala dari sana. Untuk data spesifik domain, batch yang lebih besar mungkin gradien yang terlalu halus.

**Pengaturan Pelatih**  

+ **max\$1steps**: Jumlah langkah pelatihan yang harus dijalankan. Setiap langkah akan melatih model dengan `global_batch_size` tidak. elemen

**Pengaturan Model**  

+ **hidden\$1dropout**: 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\$1dropout**: Probabilitas penurunan bobot perhatian. Parameter ini dapat membantu generalisasi. 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.
+ **nama**: Algoritma pengoptimal. Saat ini, hanya `distributed_fused_adam` didukung.
+ **weight\$1decay: Kekuatan regularisasi** L2. Nilai yang lebih tinggi (antara 0,01-0,1) meningkatkan regularisasi.
+ **warmup\$1steps**: Jumlah langkah untuk meningkatkan tingkat pembelajaran secara bertahap. Ini meningkatkan stabilitas pelatihan. Nilai yang valid adalah antara 1-20, inklusif.
+ **min\$1lr**: Tingkat pembelajaran minimum pada akhir pembusukan. Nilai yang valid antara 0-1, inklusif, tetapi harus kurang dari tingkat pembelajaran.