Esecuzione del fine-tuning di un modello linguistico di grandi dimensioni (LLM) utilizzando istruzioni del prompt - Amazon SageMaker AI

Esecuzione del fine-tuning di un modello linguistico di grandi dimensioni (LLM) utilizzando istruzioni del prompt

La messa a punto basata sulle istruzioni utilizza esempi etichettati per migliorare le prestazioni di un modello di fondazione già addestrato su un'attività specifica. Gli esempi etichettati sono formattati come coppie di prompt, di risposta e formulati come istruzioni. Questo processo di ottimizzazione modifica i pesi del modello. Per ulteriori informazioni sull’ottimizzazione basata sulle istruzioni, consulta i documenti Introducing FLAN: More generalizable Language Models with Instruction Fine-Tuning e Scaling Instruction-Finetuned Language Models.

I modelli Fine-tuned Language Net (FLAN) utilizzano l'ottimizzazione delle istruzioni per rendere i modelli più adatti alla risoluzione di attività generali di PNL a valle. Amazon SageMaker JumpStart fornisce una serie di modelli di fondazione nella famiglia di modelli FLAN. Ad esempio, i modelli FLAN-T5 sono istruzioni ottimizzate per un'ampia gamma di attività per aumentare le prestazioni zero-shot per tutta una serie di casi d'uso comuni. Grazie ai dati aggiuntivi e all’ottimizzazione, i modelli basati sulle istruzioni possono essere ulteriormente adattati ad attività più specifiche che non sono state prese in considerazione durante l’addestramento preliminare.

Per eseguire il fine-tuning di un LLM su un’attività specifica utilizzando le istruzioni relative all’attività con coppie prompt-risposta:

  1. Preparare le istruzioni in file JSON. Per ulteriori informazioni sul formato richiesto per i file delle coppie prompt-risposta e la struttura della cartella dei dati, consultare Preparazione e caricamento dei dati di addestramento per il fine-tuning basato su istruzioni.

  2. Creare il job di addestramento per il fine-tuning. Per istruzioni, consultare Creazione di un job di addestramento per il fine-tuning basato su istruzioni.

Puoi trovare esempi end-to-end in Notebook di esempio.

Solo un sottoinsieme dei modelli di fondazione di JumpStart è compatibile con il fine-tuning basato su istruzioni. L’ottimizzazione basata sulle istruzioni è disponibile con i seguenti modelli di fondazione:

Nota

Alcuni modelli di fondazione di JumpStart, come Llama 2 7B, richiedono l’accettazione di un contratto di licenza con l’utente finale prima del fine-tuning e dell’esecuzione dell’inferenza. Per ulteriori informazioni, consulta Contratti di licenza con l'utente finale.

  • Flan-T5 Base

  • Flan-T5 Large

  • Flan-T5 Small

  • Flan-T5 XL

  • Flan-T5 XXL

  • 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

  • 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

Preparazione e caricamento dei dati di addestramento per il fine-tuning basato su istruzioni

I dati di addestramento per il fine-tuning basato su istruzioni devono essere forniti nel formato di file di testo JSON Lines, in cui ogni riga è un dizionario. Tutti i dati di addestramento devono trovarsi in un’unica cartella. La cartella può includere più file .jsonl.

La cartella di addestramento può includere anche un file JSON del modello (template.json) che descrive i formati di input e output dei dati. Se non viene fornito alcun file di modello, viene utilizzato il seguente:

{ "prompt": "Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.\n\n### Instruction:\n{instruction}\n\n### Input:\n{context}", "completion": "{response}" }

In base al file template.json, ogni elemento .jsonl dei dati di addestramento deve includere i campi {instruction}, {context} e {response}.

Se fornisci un file JSON di un modello personalizzato, utilizza i tasti "prompt" e "completion" per definire i campi obbligatori. In base al seguente file JSON di modello personalizzato, ogni elemento .jsonl dei dati di addestramento deve includere i campi {question}, {context} e {answer}.

{ "prompt": "question: {question} context: {context}", "completion": "{answer}" }

Suddivisione dei dati per l’addestramento e i test

Facoltativamente, puoi fornire un’altra cartella contenente i dati di convalida. Questa cartella deve includere anche uno o più file .jsonl. Se non viene fornito alcun set di dati di convalida, una determinata quantità di dati di addestramento viene riservata per la convalida. È possibile modificare la percentuale di dati di addestramento utilizzati per la convalida quando si scelgono gli iperparametri per il fine-tuning del modello.

Caricamento dei dati di fine-tuning su Amazon S3

Carica i dati preparati su Amazon Simple Storage Service (Amazon S3) per utilizzarli durante il fine-tuning di un modello di fondazione di JumpStart. Per caricare i dati, è possibile utilizzare i seguenti comandi:

from sagemaker.s3 import S3Uploader import sagemaker import random output_bucket = sagemaker.Session().default_bucket() local_data_file = "train.jsonl" train_data_location = f"s3://{output_bucket}/dolly_dataset" S3Uploader.upload(local_data_file, train_data_location) S3Uploader.upload("template.json", train_data_location) print(f"Training data: {train_data_location}")

Creazione di un job di addestramento per il fine-tuning basato su istruzioni

Dopo aver caricato i dati su Amazon S3, puoi eseguire il fine-tuning e implementare il tuo modello di fondazione di JumpStart. Per eseguire il fine-tuning dei modelli in Studio, consulta Fine-tuning di un modello in Studio. Per eseguire il fine-tuning dei modelli utilizzando SageMaker Python SDK, consulta Fine-tuning dei modelli di fondazione disponibili al pubblico con la classe JumpStartEstimator.

Notebook di esempio

Per ulteriori informazioni sul fine-tuning basato su istruzioni, consulta i seguenti notebook di esempio: