Modelli di fondazione e iperparametri per il fine-tuning - Amazon SageMaker AI

Modelli di fondazione e iperparametri per il fine-tuning

I modelli di fondazione sono costosi dal punto di vista computazionale e vengono addestrati su un ampio corpus senza etichetta. L’ottimizzazione di un modello di fondazione addestrato è un modo conveniente per sfruttare le ampie funzionalità di tali modelli personalizzando al contempo un modello su un piccolo corpus. L’ottimizzazione è un metodo di personalizzazione che prevede un ulteriore addestramento e modifica il peso del modello.

L’ottimizzazione potrebbe esserti utile se hai bisogno di:

  • personalizzare il modello in base a esigenze aziendali specifiche

  • il tuo modello per lavorare con successo con un linguaggio specifico del dominio, come gergo di settore, termini tecnici o altri vocaboli specializzati

  • prestazioni migliorate per attività specifiche

  • risposte accurate, relative e sensibili al contesto nelle applicazioni

  • risposte più concrete, meno controverse e meglio allineate ai requisiti specifici

Esistono due approcci principali che è possibile adottare per l’ottimizzazione, a seconda del caso d'uso e del modello di fondazione scelto.

  1. Se sei interessato a ottimizzare il tuo modello sulla base di dati specifici del dominio, consulta Fine-tuning di un modello linguistico di grandi dimensioni (LLM) utilizzando l’adattamento del dominio.

  2. Se sei interessato alla messa a punto basata su istruzioni utilizzando esempi di prompt e risposta, consulta Esecuzione del fine-tuning di un modello linguistico di grandi dimensioni (LLM) utilizzando istruzioni del prompt.

Modelli di fondazione disponibili per il fine-tuning

È possibile eseguire il fine-tuning di uno qualsiasi dei seguenti modelli di fondazione di JumpStart:

  • Bloom 3B

  • Bloom 7B1

  • BloomZ 3B FP16

  • BloomZ 7B1 FP16

  • Code Llama 13B

  • Code Llama 13BPython

  • Code Llama 34B

  • Code Llama 34BPython

  • Code Llama 70B

  • Code Llama 70BPython

  • Code Llama 7B

  • Code Llama 7BPython

  • CyberAgentLM2-7B-Chat (CALM2-7B-Chat)

  • Falcon 40B BF16

  • Falcon 40B Instruct BF16

  • Falcon 7B BF16

  • Falcon 7B Instruct BF16

  • Flan-T5 Base

  • Flan-T5 Large

  • Flan-T5 Small

  • Flan-T5 XL

  • Flan-T5 XXL

  • Gemma 2B

  • Gemma 2B Instruct

  • Gemma 7B

  • Gemma 7B Instruct

  • GPT-2 XL

  • GPT-J 6B

  • GPT-Neo 1.3B

  • GPT-Neo 125M

  • GPT-NEO 2.7B

  • LightGPT Instruct 6B

  • Llama 2 13B

  • Llama 2 13B Chat

  • Llama 2 13B Neuron

  • Llama 2 70B

  • Llama 2 70B Chat

  • Llama 2 7B

  • Llama 2 7B Chat

  • Llama 2 7B Neuron

  • Mistral 7B

  • Mixtral 8x7B

  • Mixtral 8x7B Instruct

  • RedPajama INCITE Base 3B V1

  • RedPajama INCITE Base 7B V1

  • RedPajama INCITE Chat 3B V1

  • RedPajama INCITE Chat 7B V1

  • RedPajama INCITE Instruct 3B V1

  • RedPajama INCITE Instruct 7B V1

  • Stable Diffusion 2.1

iperparametri comunemente supportati per il fine-tuning

Diversi modelli di fondazione supportano vari iperparametri durante il fine-tuning. Di seguito sono riportati gli iperparametri comunemente supportati che possono personalizzare ulteriormente il modello durante l’addestramento:

Parametro di inferenza Descrizione

epoch

Il numero di passaggi che il modello esegue nel set di dati di fine-tuning durante l’addestramento. Deve essere un numero intero superiore a 1.

learning_rate

La velocità con cui i pesi del modello vengono aggiornati dopo l’elaborazione di ciascun batch di esempi di addestramento per il fine-tuning. Deve essere un valore a virgola mobile positivo maggiore di 0.

instruction_tuned

Indica se addestrare o meno il modello mediante istruzioni. Deve essere 'True' o 'False'.

per_device_train_batch_size

La dimensione del batch per core della GPU o CPU per l’addestramento. Deve essere un numero intero positivo.

per_device_eval_batch_size

La dimensione del batch per core della GPU o CPU per la valutazione. Deve essere un numero intero positivo.

max_train_samples

Per scopi di debug o per un addestramento più rapido, riduci il numero di esempi di addestramento a questo valore. Il valore -1 indica che il modello utilizza tutti gli esempi di addestramento. Deve essere un numero intero positivo o -1.

max_val_samples

Per scopi di debug o per un addestramento più rapido, riduci il numero di esempi di convalida a questo valore. Il valore -1 indica che il modello utilizza tutti gli esempi di convalida. Deve essere un numero intero positivo o -1.

max_input_length

Lunghezza massima totale della sequenza di input dopo la tokenizzazione. Le sequenze più lunghe verranno troncate. Se -1, max_input_length è impostato su un minimo di 1024 e model_max_length è definito dal tokenizzatore. Se impostato su un valore positivo, max_input_length viene impostato sul minimo del valore fornito e model_max_length è definito dal tokenizzatore. Deve essere un numero intero positivo o -1.

validation_split_ratio

Se non esiste un canale di convalida, indica il rapporto di suddivisione tra convalida-addestramento e dati di addestramento. Deve essere un valore compreso tra 0 e 1.

train_data_split_seed

Se non sono presenti dati di convalida, viene corretta la suddivisione casuale dei dati di addestramento di input rispetto ai dati di addestramento e convalida utilizzati dal modello. Deve essere un numero intero.

preprocessing_num_workers

Il numero di processi da utilizzare per la pre-elaborazione. Se None, il processo principale viene utilizzato per la pre-elaborazione.

lora_r

Valore r dell’adattamento di basso rango (LoRA), che funge da fattore di dimensionamento per gli aggiornamenti del peso. Deve essere un numero intero positivo.

lora_alpha

Valore alfa dell’adattamento di basso rango (LoRA), che funge da fattore di dimensionamento per gli aggiornamenti del peso. Generalmente da 2 a 4 volte la dimensione di lora_r. Deve essere un numero intero positivo.

lora_dropout

Valore di abbandono per i livelli dell’adattamento di basso rango (LoRA). Deve essere un numero a virgola mobile positivo compreso tra 0 e 1.

int8_quantization

Se True, il modello viene caricato con una precisione a 8 bit per l’addestramento.

enable_fsdp

Se True, l’addestramento utilizza la tecnica Fully Sharded Data Parallelism.

Quando esegui il fine-tuning del modello in Studio, puoi specificare i valori degli iperparametri. Per ulteriori informazioni, consulta Fine-tuning di un modello in Studio.

È inoltre possibile sovrascrivere i valori predefiniti degli iperparametri durante il fine-tuning del modello utilizzando SageMaker Python SDK. Per ulteriori informazioni, consulta Fine-tuning dei modelli di fondazione disponibili al pubblico con la classe JumpStartEstimator.