Penyetelan halus yang diawasi (SFT) - Amazon SageMaker AI

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

Penyetelan halus yang diawasi (SFT)

Bagian berikut menguraikan proses fine-tuning yang diawasi (SFT), baik SFT peringkat penuh dan SFT hemat parameter.

Penyetelan halus (SFT) yang diawasi peringkat penuh

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

Untuk SFT peringkat penuh dan SFT adaptor peringkat rendah (LoRa), data harus mengikuti format operasi Amazon Bedrock Converse. Untuk contoh dan kendala format ini, lihat Mempersiapkan data untuk fine-tuning Memahami model.

Untuk memvalidasi format kumpulan data Anda sebelum pengiriman, sebaiknya gunakan skrip validasi dari repositori sampel Amazon Bedrock. 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 AWS Management Console.

    • model_type: Varian model Amazon Nova untuk digunakan. Pilihan yang tersedia adalahamazon.nova-micro-v1:0:128k,amazon.nova-lite-v1:0:300k, atauamazon.nova-pro-v1:0:300k.

    • model_name_or_path: Jalur ke model dasar yang akan digunakan untuk pelatihan Anda. Pilih model yang akan digunakan darinova-micro/prod, nova-lite/prodnova-pro/prod, atau jalur S3 untuk pos pemeriksaan pasca-pelatihan (). s3://<escrow bucket>/<job id>/outputs/checkpoints

    • replicas: Jumlah instans komputasi yang akan 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. 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 epoch 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

Berikut ini adalah resep untuk SFT peringkat penuh yang dimaksudkan agar Anda dapat memulai pekerjaan SFT dengan cepat di sebuah cluster. HyperPod Resep ini juga mengasumsikan bahwa Anda telah terhubung ke HyperPod cluster Anda menggunakan AWS kredensi 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 val_check_interval: 100 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

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

Menerbitkan metrik ke Bobot & Bias dan tidak MLFlow didukung.

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.

Penyetelan halus yang efisien parameter (PEFT)

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 lebih lanjut, lihat Menyesuaikan model dengan komponen inferensi adaptor.

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 hiperparameter 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 AWS Management Console.

    • model_type: Varian model Nova untuk digunakan. Pilihan yang tersedia adalahamazon.nova-micro-v1:0:128k,amazon.nova-lite-v1:0:300k, atauamazon.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 adalahnova-micro/prod,, nova-lite/prodnova-pro/prod, atau jalur S3 untuk pos pemeriksaan pasca-pelatihan (). s3://<escrow bucket>/<job id>/outputs/checkpoints

    • replicas: Jumlah instans komputasi yang akan 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 ataumax_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 epoch 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 denganadapter_dim.

    • adaptor_dropout: Parameter regularisasi untuk LoRa.

Resep PEFT

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
Batasan

PEFT memiliki batasan sebagai berikut:

  • Konfigurasi pelatihan yang diberikan sebelumnya memiliki nilai yang direkomendasikan untuk setiap parameter.

  • Pos pemeriksaan menengah tidak disimpan untuk evaluasi dan Anda tidak dapat melanjutkan dari pos pemeriksaan perantara. Hanya pos pemeriksaan terakhir yang disimpan.

  • MLflow logging tidak didukung.

Pemecahan Masalah

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, kirimkan kembali pekerjaan dengan wilayah yang telah ditampung ke perintah start-job. Sebagai contoh: AWS_REGION=us-east-1 hyperpod start-job ...Job Parameters.

  • Untuk menyesuaikan hyperparameters, ikuti panduan di Memilih hyperparameters.