Creare un processo AutoML per eseguire il fine-tuning di modelli di generazione di testo utilizzando l’API - 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à.

Creare un processo AutoML per eseguire il fine-tuning di modelli di generazione di testo utilizzando l’API

I Large Language Model (LLM) eccellono in molteplici attività generative, tra cui generazione di testo, riepilogo, completamento, risposta a domande e altro ancora. Le loro prestazioni possono essere attribuite alle loro dimensioni significative e al vasto addestramento su diversi set di dati e varie attività. Tuttavia, domini specifici, come l'assistenza sanitaria e i servizi finanziari, possono richiedere un'ottimizzazione personalizzata per adattarsi a dati e casi d'uso univoci. Adattando il loro addestramento al loro particolare dominio, gli LLM possono migliorare le loro prestazioni e fornire risultati più accurati per applicazioni mirate.

Autopilot offre la capacità di mettere a punto una selezione di modelli di testo generativi preaddestrati. In particolare, Autopilot supporta il fine-tuning basato su istruzioni di una selezione di modelli linguistici di grandi dimensioni (LLM) generici basati su JumpStart.

Nota

I modelli di generazione di testo che supportano il fine-tuning in Autopilot sono attualmente accessibili esclusivamente nelle Regioni supportate da SageMaker Canvas. Consulta la documentazione di SageMaker Canvas per l’elenco completo delle Regioni supportate.

L'ottimizzazione di un modello già addestrato richiede un set di dati specifico di istruzioni chiare che guidino il modello su come generare risultati o comportarsi per quell'attività. Il modello impara dal set di dati, regolandone i parametri in base alle istruzioni fornite. Il fine-tuning basato su istruzioni implica l’utilizzo di esempi etichettati formattati come prompt, coppie di risposta e formulati come istruzioni. Per ulteriori informazioni sul fine-tuning, consulta la pagina relativa al fine-tuning di un modello di fondazione.

Le seguenti linee guida descrivono il processo di creazione di un processo con pilota automatico Amazon SageMaker come esperimento pilota per ottimizzare gli LLM di generazione di testo utilizzando SageMaker API Reference.

Nota

Attività come la classificazione di testo e immagini, la previsione di serie temporali e il fine-tuning di modelli linguistici di grandi dimensioni sono disponibili esclusivamente tramite la versione 2 della REST API AutoML. Se il linguaggio preferito è Python, è possibile fare riferimento ad AWS SDK per Python (Boto3) o direttamente all’oggetto AutoMLV2 di Amazon SageMaker Python SDK.

Gli utenti che preferiscono la comodità di un’interfaccia utente possono utilizzare Amazon SageMaker Canvas per accedere a modelli preaddestrati e modelli di fondazione di IA generativa o creare modelli personalizzati su misura per esigenze specifiche di testo, classificazione delle immagini, previsioni o IA generativa.

Per creare un esperimento Autopilot a livello di codice per il fine-tuning di un LLM, è possibile chiamare l’API CreateAutoMLJobV2 in qualsiasi lingua supportata da Amazon SageMaker Autopilot o dall’AWS CLI.

Per informazioni su come questa azione API si traduce in una funzione nella lingua preferita, consulta la sezione Vedi anche di CreateAutoMLJobV2 e seleziona un SDK. Ad esempio, per gli utenti di Python, vedi la sintassi completa della richiesta di create_auto_ml_job_v2 in AWS SDK per Python (Boto3).

Nota

Autopilot perfeziona modelli linguistici di grandi dimensioni senza richiedere l'addestramento e la valutazione di più candidati. Invece, utilizzando i tuoi set di dati, Autopilot perfeziona direttamente il modello di destinazione per migliorare un parametro oggettivo predefinito, la perdita di entropia incrociata. L'ottimizzazione dei modelli linguistici in Autopilot non richiede l'impostazione del campo AutoMLJobObjective.

Una volta eseguito in fine-tuning dell’LLM, è possibile valutarne le prestazioni accedendo a vari punteggi ROUGE tramite BestCandidate durante una chiamata API DescribeAutoMLJobV2. Il modello fornisce anche informazioni sul suo addestramento e la sua convalida, sulla perdita e perplessità. Per un elenco completo dei parametri di valutazione della qualità del testo generato dai modelli messi a punto, consulta Parametri per l'ottimizzazione di modelli linguistici di grandi dimensioni in Autopilot.

Prerequisiti

Prima di utilizzare Autopilot per creare un esperimento di fine-tuning in SageMaker AI, assicurati di effettuare le seguenti operazioni:

  • (Facoltativo) Scegli il modello preaddestrato che desideri perfezionare.

    Per l’elenco dei modelli preaddestrati disponibili per l’ottimizzazione in Amazon SageMaker Autopilot, consulta Modelli linguistici di grandi dimensioni supportati per l'ottimizzazione. La selezione di un modello non è obbligatoria; se non viene specificato alcun modello, Autopilot passa automaticamente al modello Falcon7BInstruct.

  • Creazione di un set di istruzioni. Consulta Tipi di file del set di dati e formato dei dati di input per sapere di più sui requisiti di formato del tuo set di dati basato sulle istruzioni.

  • Inserisci il tuo set di dati in un bucket Amazon S3.

  • Concedi l’accesso completo al bucket Amazon S3 contenente i dati di input per il ruolo di esecuzione di SageMaker AI utilizzato per eseguire l’esperimento.

    • Per informazioni sul recupero del ruolo di esecuzione di SageMaker AI, consulta Acquisizione del ruolo di esecuzione.

    • Per informazioni sulla concessione delle autorizzazioni del ruolo di esecuzione di SageMaker AI per accedere a uno o più bucket specifici in Amazon S3, consulta Add Additional Amazon S3 Permissions to a SageMaker AI Execution Role in Crea ruolo di esecuzione.

  • Inoltre, è necessario fornire al ruolo di esecuzione le autorizzazioni necessarie per accedere al bucket di archiviazione predefinito Amazon S3 utilizzato da JumpStart. Questo accesso è necessario per archiviare e recuperare gli artefatti del modello preaddestrato in JumpStart. Per concedere l'accesso a questo bucket Amazon S3, devi creare una nuova policy personalizzata in linea sul tuo ruolo di esecuzione.

    Ecco un esempio di policy che è possibile utilizzare nell’editor JSON durante la configurazione di processi di fine-tuning di AutoML in us-west-2:

    I nomi dei bucket di JumpStart seguono un modello predeterminato che dipende dalle Regioni AWS. Di conseguenza è necessario modificare il nome del bucket.

    { "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::jumpstart-cache-prod-us-west-2", "arn:aws:s3:::jumpstart-cache-prod-us-west-2/*" ] }

Fatto ciò, è possibile utilizzare l'ARN di questo ruolo di esecuzione nelle richieste API Autopilot.

Parametri obbligatori

Durante una chiamata a CreateAutoMLJobV2 per creare un esperimento Autopilot per il fine-tuning degli LLM, è necessario fornire i seguenti valori:

  • Un AutoMLJobName per specificare il nome del processo. Il nome deve essere di tipo string con una lunghezza minima di 1 carattere e una lunghezza massima di 32.

  • Almeno un AutoMLJobChannel del tipo training incluso in AutoMLJobInputDataConfig. Questo canale specifica il nome del bucket Amazon S3 in cui è archiviato il set di dati per l'ottimizzazione dei processi. Hai la possibilità di definire un canale validation. Se non viene fornito alcun canale di convalida e un ValidationFraction è configurato in AutoMLDataSplitConfig, questa frazione viene utilizzata per dividere casualmente il set di dati di addestramento in set di addestramento e convalida. Inoltre, per il set di dati è possibile specificare il tipo di contenuto (file CSV o Parquet).

  • Un AutoMLProblemTypeConfig del tipo TextGenerationJobConfig per configurare le impostazioni del job di addestramento.

    In particolare, è possibile specificare il nome del modello base da ottimizzare nel campo BaseModelName. Per l'elenco dei modelli pre-addestrati disponibili per l'ottimizzazione in Amazon SageMaker Autopilot, consulta Modelli linguistici di grandi dimensioni supportati per l'ottimizzazione.

  • Un OutputDataConfig per specificare il percorso di output di Amazon S3 per archiviare gli artefatti del processo AutoML.

  • Un RoleArn per specificare l'ARN del ruolo utilizzato per accedere ai dati.

Di seguito è riportato un esempio del formato di richiesta completo utilizzato quando si effettua una chiamata API a CreateAutoMLJobV2 per il fine-tuning di un modello (Falcon7BInstruct).

{ "AutoMLJobName": "<job_name>", "AutoMLJobInputDataConfig": [ { "ChannelType": "training", "CompressionType": "None", "ContentType": "text/csv", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://<bucket_name>/<input_data>.csv" } } } ], "OutputDataConfig": { "S3OutputPath": "s3://<bucket_name>/output", "KmsKeyId": "arn:aws:kms:<region>:<account_id>:key/<key_value>" }, "RoleArn":"arn:aws:iam::<account_id>:role/<sagemaker_execution_role_name>", "AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7BInstruct" } } }

Tutti gli altri parametri sono facoltativi.

Parametri facoltativi

Le sezioni seguenti forniscono dettagli su alcuni parametri facoltativi che è possibile passare al processo AutoML di ottimizzazione.

È possibile fornire il proprio set di dati di convalida e un rapporto di suddivisione dei dati personalizzato oppure lasciare che Autopilot suddivida automaticamente il set di dati.

Ogni oggetto AutoMLJobChannel (vedi il parametro richiesto AutoMLJobInputDataConfig) ha un ChannelType, che può essere impostato su training o validation valori che specificano come utilizzare i dati durante la creazione di un modello di machine learning.

È necessario fornire almeno un'origine dati ed è consentito un massimo di due origine dati: una per i dati di addestramento e una per i dati di convalida. Il modo in cui suddividere i dati in set di dati di addestramento e convalida dipende dalla presenza di una o due origine dati.

  • Se disponi di una origine dati, ChannelType è impostato su training come impostazione predefinita e deve avere questo valore.

    • Se il valore ValidationFraction in AutoMLDataSplitConfig non è impostato, per impostazione predefinita viene utilizzato per la convalida lo 0,2 (20%) dei dati di questa origine.

    • Se ValidationFraction è impostato su un valore compreso tra 0 e 1, il set di dati viene suddiviso in base al valore specificato, dove il valore specifica la frazione del set di dati utilizzata per la convalida.

  • Se si dispone di due origini dati, per impostazione predefinita il ChannelType di uno degli oggetti AutoMLJobChannel deve essere impostato su training. Il ChannelType dell'altra origine dati deve essere impostato su validation. Le due origine dati devono avere lo stesso formato, CSV o Parquet, e lo stesso schema. In questo caso non è necessario impostare ValidationFraction perché tutti i dati di ciascuna origine vengono utilizzati per l'addestramento o la convalida. L'impostazione di questo valore causa un errore.

Autopilot consente di implementare automaticamente un modello ottimizzato con fine-tuning su un endpoint. Per abilitare l'implementazione automatica sul tuo modello ottimizzato, includi un ModelDeployConfig nella richiesta di processo di AutoML. Ciò consente l’implementazione del modello ottimizzato con fine-tuning su un endpoint SageMaker AI. Di seguito sono riportate le configurazioni disponibili per la personalizzazione.

Per i modelli che richiedono l’accettazione di un contratto di licenza con l’utente finale prima del fine-tuning, è possibile accettare l’EULA impostando l’attributo AcceptEula di ModelAccessConfig su True in TextGenerationJobConfig durante la configurazione di AutoMLProblemTypeConfig.

È possibile ottimizzare il processo di apprendimento del modello di generazione del testo impostando i valori degli iperparametri nell’attributo TextGenerationHyperParameters di TextGenerationJobConfig durante la configurazione di AutoMLProblemTypeConfig.

Autopilot consente l’impostazione di quattro iperparametri comuni per tutti i modelli.

  • epochCount: il suo valore deve essere una stringa contenente un valore intero compreso nell’intervallo tra 1 e 10.

  • batchSize: il suo valore deve essere una stringa contenente un valore intero compreso nell’intervallo tra 1 e 64.

  • learningRate: il suo valore deve essere una stringa contenente un valore in virgola mobile compreso nell’intervallo tra 0 e 1.

  • learningRateWarmupSteps: il suo valore deve essere una stringa contenente un valore intero compreso nell’intervallo tra 0 e 250.

Per ulteriori dettagli su ciascun iperparametro, consulta Iperparametri per ottimizzare il processo di apprendimento dei modelli di generazione di testo.

Il seguente esempio JSON mostra un campo TextGenerationHyperParameters passato a TextGenerationJobConfig in cui sono configurati tutti i quattro iperparametri.

"AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7B", "TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"} } }