Ottimizzazione fine supervisionata (SFT) - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Ottimizzazione fine supervisionata (SFT)

Le sezioni seguenti descrivono il processo di regolazione fine supervisionata (SFT), sia SFT completo che SFT efficiente in termini di parametri.

Ottimizzazione di precisione supervisionata (SFT) a livello completo

La messa a punto supervisionata (SFT) è il processo che fornisce una raccolta di coppie di risposte rapide a un modello di base per migliorare le prestazioni di un modello di base già addestrato su un'attività specifica. Gli esempi etichettati sono formattati come coppie di pronta risposta e formulati come istruzioni. Questo processo di ottimizzazione modifica i pesi del modello.

È necessario utilizzare SFT quando si dispone di dati specifici del dominio che richiedono la fornitura di coppie prompt-response specifiche per risultati ottimali.

Tieni presente che i set di dati di input per la formazione e la convalida devono risiedere in bucket di proprietà del cliente, non in bucket escrow o bucket S3 gestiti dal servizio.

Requisiti dei dati

Per SFT full-rank e Low-Rank Adapter (LoRa) SFT, i dati devono seguire il formato operativo di Amazon Bedrock Converse. Per esempi e vincoli di questo formato, consulta Preparing data for fine-tuning Understanding models.

Per convalidare il formato del set di dati prima dell'invio, ti consigliamo di utilizzare lo script di convalida dal repository di esempi di Amazon Bedrock. Questo strumento di convalida aiuta a garantire che i file JSONL rispettino le specifiche di formato richieste e a identificare eventuali problemi potenziali prima di inviare il lavoro di messa a punto.

I parametri di Amazon Nova disponibili per l'ottimizzazione con SFT sono i seguenti:

  • Esegui la configurazione

    • name: Un nome descrittivo per il tuo lavoro di formazione. Questo aiuta a identificare il tuo lavoro in. AWS Management Console

    • model_type: la variante del modello Amazon Nova da utilizzare. Le opzioni disponibili sono amazon.nova-micro-v1:0:128kamazon.nova-lite-v1:0:300k, oamazon.nova-pro-v1:0:300k.

    • model_name_or_path: Il percorso verso il modello base da utilizzare per l'allenamento. Seleziona il modello da utilizzarenova-micro/prod, nova-lite/prodnova-pro/prod, o il percorso S3 per il checkpoint post-allenamento (). s3://<escrow bucket>/<job id>/outputs/checkpoints

    • replicas: Il numero di istanze di calcolo da utilizzare per l'addestramento distribuito. I valori disponibili variano in base al modello scelto. Amazon Nova Micro supporta 2, 4 o 8 repliche. Amazon Nova Lite supporta 4, 8, 16 o 32 repliche. Amazon Nova Pro supporta 6, 12 o 24 repliche.

    • data_s3_path: La posizione S3 del set di dati di addestramento, che è un file JSONL. Questo file deve risiedere nella stessa regione del cluster Account AWS . Tutte le sedi S3 all'interno del percorso S3 fornito devono trovarsi nello stesso account e nella stessa regione.

    • validation_data_s3_path: (Facoltativo) La posizione S3 del set di dati di convalida, che è un file JSONL. Questo file deve risiedere nello stesso account e nella stessa regione del cluster. Tutte le sedi S3 all'interno del percorso S3 fornito devono trovarsi nello stesso account e nella stessa regione.

    • output_s3_path: La posizione S3 in cui sono archiviati il manifesto e i TensorBoard log. Tutte le sedi S3 all'interno del percorso S3 fornito devono trovarsi nello stesso account e nella stessa regione.

  • Configurazione dell'allenamento

    • max_length: La lunghezza massima della sequenza in token. Ciò determina la dimensione della finestra contestuale per l'addestramento. Il valore massimo supportato è di 65.536 token per SFT.

      Sequenze più lunghe miglioreranno l'efficienza dell'allenamento a scapito di maggiori requisiti di memoria. Ti consigliamo di abbinare il max_length parametro alla distribuzione dei dati.

  • Impostazioni del trainer

    • max_epochs: Il numero di passaggi completi attraverso il set di dati di allenamento. Il valore massimo è 5.

      In generale, i set di dati più grandi richiedono meno epoche per convergere, mentre i set di dati più piccoli richiedono più epoche per convergere. Ti consigliamo di regolare il numero di epoche in base alla dimensione dei dati.

  • Impostazioni del modello

    • hidden_dropout: La probabilità di eliminare gli output di stato nascosti. Aumentate questo valore di circa 0,0-0,2 per ridurre l'eccessivo adattamento su set di dati più piccoli. I valori validi sono compresi tra 0 e 1.

    • attention_dropout: La probabilità di far cadere i pesi di attenzione. Questo parametro può facilitare la generalizzazione. I valori validi sono compresi tra 0 e 1.

    • ffn_dropout: La probabilità di interruzione degli output di rete feed-forward. I valori validi sono compresi tra 0 e 1.

  • Configurazione dell'ottimizzatore

    • lr: Il tasso di apprendimento, che controlla la dimensione del passo durante l'ottimizzazione. I valori validi sono compresi tra 1e-6-1e-3, inclusi. Consigliamo valori compresi tra 1e-6-1e-4 per ottenere buone prestazioni.

    • name: L'algoritmo di ottimizzazione. Attualmente è supportato solo distributed_fused_adam.

    • weight_decay: La forza di regolarizzazione L2. Valori più alti (compresi tra 0,01-0,1) aumentano la regolarizzazione.

    • warmup_steps: Il numero di passaggi per aumentare gradualmente il tasso di apprendimento. Ciò migliora la stabilità dell'allenamento. I valori validi sono compresi tra 1 e 20, inclusi.

    • min_lr: Il tasso minimo di apprendimento alla fine del decadimento. I valori validi sono compresi tra 0 e 1, incluso, ma devono essere inferiori al tasso di apprendimento.

Avvio rapido con una ricetta SFT completa

Di seguito è riportata una ricetta per l'SFT completo destinata ad avviare rapidamente un processo SFT su un cluster. HyperPod Questa ricetta presuppone inoltre che vi siate connessi al HyperPod cluster utilizzando le credenziali corrette. AWS

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
Esempio di ricetta completa

Di seguito è riportato un esempio di ricetta completa per SFT con tutti i componenti configurati correttamente.

## 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
Limitazioni

La pubblicazione di metriche su Weights & Biases non è supportata. MLFlow

I checkpoint intermedi non vengono salvati per la valutazione e non è possibile riprendere da un checkpoint intermedio. Viene salvato solo l'ultimo checkpoint.

Per regolare gli iperparametri, segui le istruzioni riportate in Selezione degli iperparametri.

Regolazione fine efficiente in termini di parametri (PEFT)

Il fine-tuning efficiente in termini di parametri (PEFT) prevede la riqualificazione di un numero limitato di pesi aggiuntivi per adattare un modello di base a nuove attività o domini. In particolare, il Low-Rank Adapter (LoRa) PEFT perfeziona in modo efficiente i modelli di base introducendo matrici di pesi addestrabili di basso livello in strati specifici del modello, riducendo il numero di parametri addestrabili e mantenendo la qualità del modello.

Un adattatore LoRa PEFT amplia il modello base incorporando strati adattatori leggeri che modificano i pesi del modello durante l'inferenza mantenendo intatti i parametri del modello originale. Questo approccio è anche considerato una delle tecniche di messa a punto più convenienti. Per ulteriori informazioni, consulta Ottimizzazione dei modelli con componenti di inferenza dell'adattatore.

È necessario utilizzare LoRa PEFT nei seguenti scenari:

  • Vuoi iniziare con una procedura di allenamento rapida.

  • Le prestazioni del modello base sono già soddisfacenti. In questo caso, l'obiettivo di LoRa PEFT è quello di migliorare le sue capacità in molteplici attività correlate, come il riepilogo del testo o la traduzione linguistica. Le proprietà di regolarizzazione di LoRa PEFT aiutano a prevenire l'overfit e mitigano i rischi che il modello «dimentichi» il dominio di origine. Ciò garantisce che il modello rimanga versatile e adattabile a varie applicazioni.

  • Si desidera eseguire scenari di ottimizzazione delle istruzioni con set di dati relativamente piccoli. LoRa PEFT offre prestazioni migliori con set di dati più piccoli e specifici per attività rispetto a set di dati più ampi e più grandi.

  • Disponi di set di dati di grandi dimensioni ed etichettati che superano i limiti di personalizzazione di Amazon Bedrock. In questo caso, puoi utilizzare LoRa PEFT sull' SageMaker intelligenza artificiale per generare risultati migliori.

  • Se hai già ottenuto risultati promettenti tramite la messa a punto di Amazon Bedrock, LoRa PEFT in SageMaker AI può aiutarti a ottimizzare ulteriormente gli iperparametri del modello.

I parametri Amazon Nova disponibili per LoRa PEFT includono:

  • Esegui la configurazione

    • name: Un nome descrittivo per il tuo lavoro di formazione. Questo aiuta a identificare il tuo lavoro in. AWS Management Console

    • model_type: La variante del modello Nova da utilizzare. Le opzioni disponibili sono amazon.nova-micro-v1:0:128kamazon.nova-lite-v1:0:300k, oamazon.nova-pro-v1:0:300k.

    • model_name_or_path: Il percorso verso il modello base da utilizzare per l'allenamento. Seleziona il modello da utilizzare. Le opzioni disponibili sononova-micro/prod, nova-lite/prodnova-pro/prod, o il percorso S3 per il checkpoint post-allenamento (). s3://<escrow bucket>/<job id>/outputs/checkpoints

    • replicas: Il numero di istanze di calcolo da utilizzare per l'addestramento distribuito. I valori disponibili variano in base al modello utilizzato. Amazon Nova Micro supporta 2, 4 o 8 repliche. Amazon Nova Lite supporta 4, 8, 16 o 32 repliche. Amazon Nova Pro supporta 6, 12 o 24 repliche.

    • output_s3_path: la posizione S3 in cui sono archiviati il manifesto e TensorBoard i log. Tutte le sedi S3 all'interno del percorso S3 fornito devono trovarsi nello stesso account e nella stessa regione.

  • Configurazione dell'allenamento

    • max_length: La lunghezza massima della sequenza in token. Ciò determina la dimensione della finestra contestuale per l'addestramento. Il valore massimo supportato è 65.536 token per LoRa PEFT.

      Sequenze più lunghe miglioreranno l'efficienza dell'allenamento a scapito di maggiori requisiti di memoria. Ti consigliamo di abbinare il max_length parametro alla distribuzione dei dati.

  • Impostazioni del trainer

    • max_epochs: Il numero di passaggi completi attraverso il set di dati di allenamento. È possibile impostare una delle due max_steps opzioni oppuremax_epochs, ma non è consigliabile impostarle entrambe. Il valore massimo è 5.

      In generale, i set di dati più grandi richiedono meno epoche per convergere, mentre i set di dati più piccoli richiedono più epoche per convergere. Ti consigliamo di regolare il numero di epoche in base alla dimensione dei dati.

  • Impostazioni del modello

    • hidden_dropout: La probabilità di eliminare gli output di stato nascosti. Aumentate questo valore di circa 0,0-0,2 per ridurre l'overfitting su set di dati più piccoli. I valori validi sono compresi tra 0 e 1.

    • attention_dropout: La probabilità di far cadere i pesi di attenzione. Questo parametro può facilitare la generalizzazione. I valori validi sono compresi tra 0 e 1.

    • ffn_dropout: La probabilità di interruzione degli output di rete feed-forward. I valori validi sono compresi tra 0 e 1.

  • Configurazione dell'ottimizzatore

    • lr: Il tasso di apprendimento, che controlla la dimensione del passo durante l'ottimizzazione. Consigliamo valori compresi tra 1e-6-1e-4 per buone prestazioni. I valori validi sono compresi tra 0 e 1.

    • name: L'algoritmo di ottimizzazione. Attualmente è supportato solo distributed_fused_adam.

    • weight_decay: La forza di regolarizzazione L2. Valori più alti (compresi tra 0,01-0,1) aumentano la regolarizzazione.

    • warmup_steps: Il numero di passaggi per aumentare gradualmente il tasso di apprendimento. Ciò migliora la stabilità dell'allenamento. I valori validi sono compresi tra 1 e 20, inclusi.

    • min_lr: Il tasso minimo di apprendimento alla fine del decadimento. I valori validi sono compresi tra 0 e 1, incluso, ma devono essere inferiori al tasso di apprendimento.

  • Parametri di configurazione LoRa

    • peft_scheme: impostato per abilitare l'loraadattamento di basso rango.

    • alpha: Il fattore di scala per i pesi LoRa. In genere è impostato sullo stesso valore di. adapter_dim

    • adaptor_dropout: Il parametro di regolarizzazione per LoRa.

Ricetta PEFT

Quella che segue è una ricetta per 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
Limitazioni

PEFT presenta le seguenti limitazioni:

  • La configurazione di addestramento fornita in precedenza presenta i valori consigliati per ciascun parametro.

  • I checkpoint intermedi non vengono salvati per la valutazione e non è possibile riprendere da un checkpoint intermedio. Viene salvato solo l'ultimo checkpoint.

  • MLflow la registrazione non è supportata.

Risoluzione dei problemi

Utilizza le seguenti informazioni per risolvere i problemi che potresti riscontrare: