Trasferisci l'apprendimento per i modelli di classificazione del testo TensorFlow in Amazon SageMaker

Amazon Sage Maker fornisce una suite di algoritmi incorporati, modelli pre-addestratie modelli di soluzioni predefiniti per aiutare i data scientist e i professionisti dell'apprendimento automatico (ML) a iniziare a formare e implementare rapidamente i modelli ML. È possibile utilizzare questi algoritmi e modelli sia per l'apprendimento supervisionato che non supervisionato. Possono elaborare vari tipi di dati di input, inclusi tabulari, immagini e testo.

Questo post è il terzo di una serie sui nuovi algoritmi integrati in SageMaker. Nel primo post, abbiamo mostrato come SageMaker fornisce un algoritmo integrato per la classificazione delle immagini. Nel secondo post, abbiamo mostrato come SageMaker fornisce un algoritmo integrato per il rilevamento degli oggetti. Oggi annunciamo che SageMaker fornisce un nuovo algoritmo integrato per la classificazione del testo utilizzando TensorFlow. Questo algoritmo di apprendimento supervisionato supporta il trasferimento dell'apprendimento per molti modelli pre-addestrati disponibili in Hub TensorFlow. Prende un pezzo di testo come input e restituisce la probabilità per ciascuna delle etichette di classe. È possibile perfezionare questi modelli pre-addestrati utilizzando il transfer learning anche quando non è disponibile un ampio corpus di testo. È disponibile tramite SageMaker algoritmi incorporati, nonché attraverso il Interfaccia utente di SageMaker JumpStart in Amazon Sage Maker Studio. Per ulteriori informazioni, fare riferimento a Classificazione del testo e il quaderno di esempio Introduzione a JumpStart – Classificazione del testo.

La classificazione del testo con TensorFlow in SageMaker fornisce l'apprendimento del trasferimento su molti modelli pre-addestrati disponibili nell'hub TensorFlow. In base al numero di etichette di classe nei dati di addestramento, al modello di hub TensorFlow pre-addestrato viene associato un livello di classificazione. Lo strato di classificazione è costituito da uno strato di dropout e da uno strato denso, strato completamente connesso, con regolarizzatore a 2 norme, che viene inizializzato con pesi casuali. L'addestramento del modello ha iperparametri per il tasso di abbandono dello strato di abbandono e il fattore di regolarizzazione L2 per lo strato denso. Quindi, l'intera rete, incluso il modello pre-addestrato, o solo il livello di classificazione superiore può essere messo a punto sui nuovi dati di addestramento. In questa modalità di apprendimento di trasferimento, l'addestramento può essere ottenuto anche con un set di dati più piccolo.

Come utilizzare il nuovo algoritmo di classificazione del testo TensorFlow

Questa sezione descrive come utilizzare l'algoritmo di classificazione del testo TensorFlow con SDK Python di SageMaker. Per informazioni su come utilizzarlo dall'interfaccia utente di Studio, vedere SageMaker JumpStart.

L'algoritmo supporta l'apprendimento del trasferimento per i modelli pre-addestrati elencati in Modelli Tensorflow. Ogni modello è identificato da un unico model_id. Il codice seguente mostra come mettere a punto il modello base BERT identificato da model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 su un set di dati di addestramento personalizzato. Per ciascuno model_id, per avviare un lavoro di formazione SageMaker tramite il Estimator classe di SageMaker Python SDK, è necessario recuperare l'URI dell'immagine Docker, l'URI dello script di addestramento e l'URI del modello pre-addestrato tramite le funzioni di utilità fornite in SageMaker. L'URI dello script di addestramento contiene tutto il codice necessario per l'elaborazione dei dati, il caricamento del modello pre-addestrato, l'addestramento del modello e il salvataggio del modello addestrato per l'inferenza. L'URI del modello pre-addestrato contiene la definizione dell'architettura del modello pre-addestrato ei parametri del modello. L'URI del modello pre-addestrato è specifico per il modello particolare. I tarball dei modelli pre-addestrati sono stati pre-scaricati da TensorFlow e salvati con la firma del modello appropriata in Servizio di archiviazione semplice Amazon (Amazon S3), in modo che il processo di addestramento venga eseguito in isolamento di rete. Vedere il codice seguente:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-tc-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

Con questi artefatti di addestramento specifici del modello, puoi costruire un oggetto di Estimator classe:

# Create SageMaker Estimator instance
tf_tc_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)

Successivamente, per trasferire l'apprendimento sul set di dati personalizzato, potrebbe essere necessario modificare i valori predefiniti degli iperparametri di addestramento, elencati in iperparametri. Puoi recuperare un dizionario Python di questi iperparametri con i loro valori predefiniti chiamando hyperparameters.retrieve_default, aggiornali secondo necessità, quindi passali alla classe Estimator. Si noti che i valori predefiniti di alcuni degli iperparametri sono diversi per i diversi modelli. Per i modelli di grandi dimensioni, la dimensione del lotto predefinita è più piccola e il train_only_top_layer l'iperparametro è impostato su True. L'iperparametro Train_only_top_layer definisce quali parametri del modello cambiano durante il processo di messa a punto. Se train_only_top_layer is True, quindi i parametri dei livelli di classificazione cambiano e il resto dei parametri rimane costante durante il processo di regolazione fine. D'altra parte, se train_only_top_layer is False, quindi tutti i parametri del modello vengono messi a punto. Vedere il codice seguente:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

Forniamo il SST2 come set di dati predefinito per la messa a punto dei modelli. Il set di dati contiene recensioni di film positive e negative. È stato scaricato da TensorFlow per Licenza Apache 2.0. Il codice seguente fornisce il set di dati di addestramento predefinito ospitato nei bucket S3.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/SST2/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

Infine, per avviare il processo di addestramento SageMaker per la messa a punto del modello, chiama .fit sull'oggetto della classe Estimator, passando la posizione Amazon S3 del set di dati di addestramento:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Per ulteriori informazioni su come utilizzare il nuovo algoritmo di classificazione del testo SageMaker TensorFlow per trasferire l'apprendimento su un set di dati personalizzato, distribuire il modello ottimizzato, eseguire l'inferenza sul modello distribuito e distribuire il modello pre-addestrato così com'è senza prima effettuare la messa a punto su un set di dati personalizzato, vedere il seguente notebook di esempio: Introduzione a JumpStart – Classificazione del testo.

Interfaccia di input/output per l'algoritmo di classificazione del testo TensorFlow

Puoi mettere a punto ciascuno dei modelli pre-addestrati elencati in Modelli TensorFlow a un dato set di dati composto da frasi di testo con un numero qualsiasi di classi. Il modello pre-addestrato collega un livello di classificazione al modello Incorporamento del testo e inizializza i parametri del livello su valori casuali. La dimensione di output del livello di classificazione è determinata in base al numero di classi rilevate nei dati di input. L'obiettivo è ridurre al minimo gli errori di classificazione sui dati di input. Il modello restituito dall'ottimizzazione può essere ulteriormente distribuito per l'inferenza.

Le seguenti istruzioni descrivono come formattare i dati di addestramento per l'immissione nel modello:

  • Input: una directory contenente un file data.csv. Ogni riga della prima colonna dovrebbe avere etichette di classe intere comprese tra 0 e il numero di classi. Ogni riga della seconda colonna dovrebbe avere i dati di testo corrispondenti.
  • Output: un modello ottimizzato che può essere distribuito per l'inferenza o ulteriormente addestrato utilizzando l'addestramento incrementale. Insieme ai modelli viene salvato un file di mappatura degli indici di classe alle etichette di classe.

Quello che segue è un esempio di un file CSV di input. Nota che il file non dovrebbe avere alcuna intestazione. Il file deve essere ospitato in un bucket S3 con un percorso simile al seguente: s3://bucket_name/input_directory/. Si noti che il finale / è richiesto.

|0 |hide new secretions from the parental units|
|0 |contains no wit , only labored gags|
|1 |that loves its characters and communicates something rather beautiful about human nature|
|...|...|

Inferenza con l'algoritmo di classificazione del testo TensorFlow

I modelli generati possono essere ospitati per l'inferenza e il testo di supporto come file application/x-text tipo di contenuto. L'output contiene i valori di probabilità, le etichette di classe per tutte le classi e l'etichetta prevista corrispondente all'indice di classe con la probabilità più alta codificata nel formato JSON. Il modello elabora una singola stringa per richiesta e restituisce solo una riga. Quello che segue è un esempio di una risposta in formato JSON:

accept: application/json;verbose
{"probabilities": [prob_0, prob_1, prob_2, ...],
 "labels": [label_0, label_1, label_2, ...],
 "predicted_label": predicted_label}

If accept è impostato su application/json, quindi il modello emette solo probabilità. Per ulteriori dettagli sull'addestramento e l'inferenza, vedere il quaderno di esempio Introduzione a Introduzione a JumpStart – Classificazione del testo.

Usa gli algoritmi integrati di SageMaker tramite l'interfaccia utente di JumpStart

Puoi anche utilizzare la classificazione del testo SageMaker TensorFlow e qualsiasi altro algoritmo integrato con pochi clic tramite l'interfaccia utente di JumpStart. JumpStart è una funzionalità di SageMaker che ti consente di addestrare e distribuire algoritmi integrati e modelli pre-addestrati da vari framework ML e hub di modelli attraverso un'interfaccia grafica. Inoltre, ti consente di distribuire soluzioni ML complete che mettono insieme modelli ML e vari altri servizi AWS per risolvere un caso d'uso mirato.

Di seguito sono riportati due video che mostrano come è possibile replicare lo stesso processo di messa a punto e distribuzione che abbiamo appena eseguito con pochi clic tramite l'interfaccia utente di JumpStart.

Perfeziona il modello pre-addestrato

Ecco il processo per mettere a punto lo stesso modello di classificazione del testo pre-addestrato.

Distribuire il modello ottimizzato

Al termine dell'addestramento del modello, è possibile distribuire direttamente il modello su un endpoint persistente in tempo reale con un clic.

Conclusione

In questo post, abbiamo annunciato il lancio dell'algoritmo integrato di classificazione del testo SageMaker TensorFlow. Abbiamo fornito un codice di esempio su come trasferire l'apprendimento su un set di dati personalizzato utilizzando un modello pre-addestrato dall'hub TensorFlow utilizzando questo algoritmo.

Per ulteriori informazioni, consultare il documentazione e il quaderno di esempio Introduzione a JumpStart – Classificazione del testo.


Circa gli autori

Trasferisci l'apprendimento per i modelli di classificazione del testo TensorFlow in Amazon SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Dott. Vivek Madan è uno scienziato applicato con il Team di Amazon SageMaker JumpStart. Ha conseguito il dottorato di ricerca presso l'Università dell'Illinois a Urbana-Champaign ed è stato ricercatore post-dottorato presso la Georgia Tech. È un ricercatore attivo nell'apprendimento automatico e nella progettazione di algoritmi e ha pubblicato articoli in conferenze EMNLP, ICLR, COLT, FOCS e SODA.

Trasferisci l'apprendimento per i modelli di classificazione del testo TensorFlow in Amazon SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.João Moura è un architetto specializzato in soluzioni AI/ML presso Amazon Web Services. Si concentra principalmente sui casi d'uso della NLP e aiuta i clienti a ottimizzare la formazione e l'implementazione del modello di deep learning. È anche un attivo sostenitore di soluzioni ML a basso codice e hardware specializzato in ML.

Trasferisci l'apprendimento per i modelli di classificazione del testo TensorFlow in Amazon SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Dottor Ashish Khetan è un Senior Applied Scientist con Algoritmi integrati di Amazon SageMaker e aiuta a sviluppare algoritmi di apprendimento automatico. Ha conseguito il dottorato di ricerca presso l'Università dell'Illinois Urbana Champaign. È un ricercatore attivo nell'apprendimento automatico e nell'inferenza statistica e ha pubblicato molti articoli in conferenze NeurIPS, ICML, ICLR, JMLR, ACL ed EMNLP.

Timestamp:

Di più da Apprendimento automatico di AWS