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à.
SFT su Nova 1.0
Il fine-tuning supervisionato (SFT, Supervised Fine-Tuning) è il processo in base al quale viene fornita una raccolta di coppie prompt-risposta a un modello di fondazione per migliorare le prestazioni di un modello preaddestrato su un’attività specifica. Gli esempi etichettati sono formattati come coppie prompt-risposta e formulati come istruzioni. Questo processo di fine-tuning modifica i pesi del modello.
È consigliabile utilizzare SFT in presenza di dati specifici del dominio che richiedono di fornire coppie prompt-risposta specifiche per risultati ottimali.
I set di dati di input per l’addestramento 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 a dimensionalità completa e Low-Rank Adapter (LoRA), 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, è consigliabile utilizzare lo script di convalida dal repository di esempi di Amazon Bedrock
I parametri di Amazon Nova disponibili per l’ottimizzazione con SFT sono i seguenti:
-
Configurazione run
-
name: un nome descrittivo per il job di addestramento. Questo aiuta a identificare il tuo lavoro in. Console di gestione AWS -
model_type: la variante del modello Amazon Nova da utilizzare. Le opzioni disponibili sonoamazon.nova-micro-v1:0:128k,amazon.nova-lite-v1:0:300koppureamazon.nova-pro-v1:0:300k. -
model_name_or_path: il percorso del modello di base da utilizzare per l’addestramento. Seleziona il modello da utilizzare tranova-micro/prod,nova-lite/prod,nova-pro/prodo il percorso S3 per il checkpoint post-addestramento (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 oppure 8 repliche. Amazon Nova Lite supporta 4, 8, 16 oppure 32 repliche. Amazon Nova Pro supporta 6, 12 oppure 24 repliche. -
data_s3_path: la posizione S3 del set di dati di addestramento, ovvero un file JSONL. Questo file deve risiedere nella stessa Account AWS regione del cluster. Tutte le posizioni S3 nel 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, ovvero un file JSONL. Questo file deve trovarsi nello stesso account e nella stessa Regione del cluster. Tutte le posizioni S3 nel 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 TensorBoard i log. Tutte le posizioni S3 nel percorso S3 fornito devono trovarsi nello stesso account e nella stessa Regione.
-
-
Configurazione di addestramento
-
max_length: la lunghezza massima della sequenza in token. Determina la dimensione della finestra di contesto per l’addestramento. Il valore massimo supportato è di 65.536 token per SFT.Sequenze più lunghe migliorano l’efficienza di addestramento a scapito di maggiori requisiti di memoria. È consigliabile che il parametro
max_lengthcorrisponda alla distribuzione dei dati.
-
-
Impostazioni di addestramento
-
max_epochs: il numero di passaggi completi nel set di dati di addestramento.In generale, set di dati di dimensioni maggiori richiedono meno epoch per la convergenza, mentre set di dati di dimensioni minori prevedono più epoch. È consigliabile regolare il numero di epoch in base alla dimensione dei dati.
-
-
Impostazioni del modello
-
hidden_dropout: la probabilità di eliminare output di stato nascosti. Aumenta 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, entrambi inclusi. -
attention_dropout: la probabilità di eliminare pesi di attenzione. Questo parametro può agevolare la generalizzazione. I valori validi sono compresi tra 0 e 1, entrambi inclusi. -
ffn_dropout: la probabilità di eliminare output di rete feed-forward. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
-
-
Configurazione optimizer
-
lr: il tasso di apprendimento, che controlla la dimensione del passaggio durante l’ottimizzazione. I valori validi sono compresi tra 1e-6 e 1e-3, entrambi inclusi. Sono consigliabili valori compresi tra 1e-6 e 1e-4 per ottenere buone prestazioni. -
name: l’algoritmo dell’ottimizzatore. Attualmente è supportato solodistributed_fused_adam. -
weight_decay: la potenza di regolarizzazione L2. Valori maggiori (compresi tra 0,01 e 0,1) aumentano la regolarizzazione. -
warmup_steps: il numero di passaggi per aumentare gradualmente il tasso di apprendimento. Migliora la stabilità dell’addestramento. I valori validi sono compresi tra 1 e 20, entrambi inclusi. -
min_lr: il tasso minimo di apprendimento alla fine del decadimento. I valori validi sono compresi tra 0 e 1, entrambi inclusi, ma devono essere inferiori al tasso di apprendimento.
-
Di seguito è riportata una ricetta per l'SFT completo destinata all'avvio rapido di un job 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
Di seguito è riportato un esempio di ricetta per il processo SFT a dimensionalità completa 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.
Per regolare gli iperparametri, segui le istruzioni riportate in Selecting hyperparameters.
Fine-tuning efficiente in termini di parametri (PEFT)
Il fine-tuning efficiente in termini di parametri (PEFT, Parameter-Efficient Fine-Tuning) prevede il riaddestramento di un numero limitato di pesi aggiuntivi per adattare un modello di fondazione a nuovi domini o attività. In particolare, il processo PEFT Low-Rank Adapter (LoRA) esegue in modo efficiente il fine-tuning dei modelli di fondazione introducendo matrici di pesi addestrabili a bassa dimensionalità in livelli specifici del modello, riducendo il numero di parametri addestrabili e mantenendo la qualità del modello.
Un adattatore PEFT LoRA amplia il modello di fondazione incorporando livelli di 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 fine-tuning più convenienti. Per ulteriori informazioni, consulta Fine-tune models with adapter inference components.
È consigliabile utilizzare il processo PEFT di tipo LoRA nei seguenti scenari:
-
Per iniziare con una procedura di addestramento rapida.
-
Le prestazioni del modello base sono già soddisfacenti. In questo caso, l’obiettivo di PEFT LoRA è quello di migliorare le sue capacità in molteplici attività correlate, come la sintesi testuale o la traduzione linguistica. Le proprietà di regolarizzazione di PEFT LoRA contribuiscono a prevenire l’overfitting e riducono il rischio che il modello “dimentichi” il dominio di origine. Ciò garantisce che il modello rimanga versatile e adattabile a varie applicazioni.
-
Per eseguire scenari di fine-tuning delle istruzioni con set di dati relativamente piccoli. PEFT LoRA offre prestazioni migliori con set di dati di dimensioni ridotte e specifici per attività rispetto a set di dati più ampi e più grandi.
-
In presenza 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 PEFT LoRA includono:
-
Configurazione run
-
name: un nome descrittivo per il job di addestramento. Questo aiuta a identificare il tuo lavoro in. Console di gestione AWS -
model_type: la variante del modello Nova da utilizzare. Le opzioni disponibili sonoamazon.nova-micro-v1:0:128k,amazon.nova-lite-v1:0:300koppureamazon.nova-pro-v1:0:300k. -
model_name_or_path: il percorso del modello di base da utilizzare per l’addestramento. Seleziona il modello da utilizzare. Le opzioni disponibili sononova-micro/prod,nova-lite/prod,nova-pro/prodo il percorso S3 per il checkpoint post-addestramento (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 oppure 8 repliche. Amazon Nova Lite supporta 4, 8, 16 oppure 32 repliche. Amazon Nova Pro supporta 6, 12 oppure 24 repliche. -
output_s3_path: La posizione S3 in cui sono archiviati il manifesto e TensorBoard i log. Tutte le posizioni S3 nel percorso S3 fornito devono trovarsi nello stesso account e nella stessa Regione.
-
-
Configurazione di addestramento
-
max_length: la lunghezza massima della sequenza in token. Determina la dimensione della finestra di contesto per l’addestramento. Il valore massimo supportato è di 65.536 token per PEFT LoRA.Sequenze più lunghe migliorano l’efficienza di addestramento a scapito di maggiori requisiti di memoria. È consigliabile che il parametro
max_lengthcorrisponda alla distribuzione dei dati.
-
-
Impostazioni di addestramento
-
max_epochs: il numero di passaggi completi nel set di dati di addestramento. È possibile impostaremax_stepsoppuremax_epochs, ma non è consigliabile impostare entrambi i parametri. Il valore massimo è 5.In generale, set di dati di dimensioni maggiori richiedono meno epoch per la convergenza, mentre set di dati di dimensioni minori prevedono più epoch. È consigliabile regolare il numero di epoch in base alla dimensione dei dati.
-
-
Impostazioni del modello
-
hidden_dropout: la probabilità di eliminare output di stato nascosti. Aumenta 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, entrambi inclusi. -
attention_dropout: la probabilità di eliminare pesi di attenzione. Questo parametro può agevolare la generalizzazione. I valori validi sono compresi tra 0 e 1, entrambi inclusi. -
ffn_dropout: la probabilità di eliminare output di rete feed-forward. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
-
-
Configurazione optimizer
-
lr: il tasso di apprendimento, che controlla la dimensione del passaggio durante l’ottimizzazione. Sono consigliabili valori compresi tra 1e-6 e 1e-4 per ottenere buone prestazioni. I valori validi sono compresi tra 0 e 1, entrambi inclusi. -
name: l’algoritmo dell’ottimizzatore. Attualmente è supportato solodistributed_fused_adam. -
weight_decay: la potenza di regolarizzazione L2. Valori maggiori (compresi tra 0,01 e 0,1) aumentano la regolarizzazione. -
warmup_steps: il numero di passaggi per aumentare gradualmente il tasso di apprendimento. Migliora la stabilità dell’addestramento. I valori validi sono compresi tra 1 e 20, entrambi inclusi. -
min_lr: il tasso minimo di apprendimento alla fine del decadimento. I valori validi sono compresi tra 0 e 1, entrambi inclusi, ma devono essere inferiori al tasso di apprendimento.
-
-
Parametri di configurazione LoRA
-
peft_scheme: impostato suloraper abilitare l’adattamento a bassa dimensionalità. -
alpha: il fattore di dimensionamento per i pesi LoRA. In genere è impostato sullo stesso valore diadapter_dim. -
adaptor_dropout: il parametro di regolarizzazione per LoRA.
-
Di seguito è riportata una ricetta per PEFT LoRA.
## 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
Utilizza le informazioni seguenti per risolvere i problemi che possono verificarsi:
-
Il set di dati di input per l’addestramento e la convalida deve risiedere in bucket di proprietà del cliente, non in bucket escrow o bucket S3 gestiti dal servizio.
-
Se ricevete un errore Region not found in AWS CLI, inviate nuovamente il lavoro con la regione anteposta al comando start-job. Ad esempio:
AWS_REGION=us-east-1 hyperpod start-job ....Job Parameters -
Per regolare gli iperparametri, segui le istruzioni riportate in Selecting hyperparameters.