Crea un job AutoML per ottimizzare i modelli di generazione di testo utilizzando l'API - Amazon SageMaker

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à.

Crea un job AutoML per ottimizzare i 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 la messa a punto basata 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 la regolazione fine in Autopilot sono attualmente accessibili esclusivamente nelle regioni supportate da Canvas. SageMaker 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. La messa a punto basata sulle istruzioni implica l'utilizzo di esempi etichettati formattati come coppie di pronta risposta e formulati come istruzioni. Per ulteriori informazioni sulla messa a punto, vedere Ottimizzazione di un modello base.

Le seguenti linee guida descrivono il processo di creazione di un job Amazon SageMaker Autopilot come esperimento pilota per ottimizzare i LLM di generazione di testo utilizzando l'API Reference. SageMaker

Nota

Attività come la classificazione di testo e immagini, la previsione di serie temporali e la messa a punto di modelli linguistici di grandi dimensioni sono disponibili esclusivamente tramite la versione 2 dell'API REST di AutoML. Se il linguaggio che preferisci è Python, puoi fare riferimento AWS SDK for 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 pre-addestrati e modelli di base di intelligenza artificiale generativa o creare modelli personalizzati su misura per testi specifici, classificazione delle immagini, esigenze di previsione o intelligenza artificiale generativa.

Per creare un esperimento Autopilot a livello di codice per la messa a punto di un LLM, puoi chiamare l'API CreateAutoMLJobV2in qualsiasi lingua supportata da Amazon Autopilot o da. SageMaker AWS CLI

Per informazioni su come questa azione dell'API si traduce in una funzione nella lingua che preferisci, consulta la sezione Vedi anche di e scegli un SDK. CreateAutoMLJobV2 Ad esempio, per gli utenti di Python, vedi la sintassi completa della richiesta di create_auto_ml_job_v2 in AWS SDK for 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 perfezionato il tuo LLM, puoi valutarne le prestazioni accedendo a vari ROUGE punteggi tramite quando effettui BestCandidate 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 perfezionamento, assicurati di seguire i seguenti passaggi: SageMaker

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

    Per l'elenco dei modelli preaddestrati disponibili per la messa a punto in SageMaker Amazon 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. Vedi Tipi di file del set di dati e formato dei dati di input per saperne di più sui requisiti di formato per il 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 SageMaker esecuzione utilizzato per eseguire l'esperimento.

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

    • Per informazioni sulla concessione delle autorizzazioni SageMaker del ruolo di esecuzione per accedere a uno o più bucket specifici in Amazon S3, consulta Aggiungere ulteriori autorizzazioni Amazon S3 a un ruolo di esecuzione in. SageMaker Crea ruolo di esecuzione

  • Inoltre, dovresti fornire al tuo ruolo di esecuzione le autorizzazioni necessarie per accedere al bucket di storage predefinito utilizzato da Amazon S3. JumpStart Questo accesso è necessario per archiviare e recuperare gli artefatti del modello pre-addestrati 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 puoi usare nel tuo editor JSON per configurare i job di fine-tuning di AutoML in: us-west-2

    JumpStarti nomi dei bucket seguono uno schema predeterminato che dipende da. 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

Quando chiamate CreateAutoMLJobV2 per creare un esperimento Autopilot per il fine-tuning LLM, dovete 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 tipo per configurare le impostazioni AutoMLProblemTypeConfig del tuo TextGenerationJobConfig lavoro di formazione.

    In particolare, è possibile specificare il nome del modello base da ottimizzare nel campo BaseModelName. Per l'elenco dei modelli preaddestrati disponibili per la messa a punto in SageMaker Amazon 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 per effettuare una chiamata API a per la messa a CreateAutoMLJobV2 punto 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 AutoMLJobChanneloggetto (vedi il parametro richiesto AutoML JobInput DataConfig) ha unChannelType, che può essere impostato su uno training o più validation valori che specificano come devono essere utilizzati i dati durante la creazione di un modello di apprendimento automatico.

È 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.

Con Autopilot, puoi distribuire automaticamente il tuo modello ottimizzato 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 su un endpoint. SageMaker 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 della messa a punto, puoi accettare l'EULA impostando l'AcceptEulaattributo to in durante la configurazione del tuo. ModelAccessConfig True TextGenerationJobConfig AutoMLProblemTypeConfig

È possibile ottimizzare il processo di apprendimento del modello di generazione di testo impostando i valori degli iperparametri nell'TextGenerationHyperParametersattributo di TextGenerationJobConfig durante la configurazione del. 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 di to. 1 10

  • batchSize: Il suo valore deve essere una stringa contenente un valore intero compreso nell'intervallo di 1 to. 64

  • learningRate: Il suo valore deve essere una stringa contenente un valore a virgola mobile compreso nell'intervallo di to. 0 1

  • learningRateWarmupSteps: Il suo valore deve essere una stringa contenente un valore intero compreso nell'intervallo di to. 0 250

Per ulteriori dettagli su ciascun iperparametro, vedere. Ottimizza il processo di apprendimento dei tuoi modelli di generazione di testo con iperparametri

Il seguente esempio JSON mostra un TextGenerationHyperParameters campo passato al TextGenerationJobConfig punto in cui sono configurati tutti e quattro gli iperparametri.

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