Ci sono stati molti progressi recenti nel dominio della PNL. I modelli pre-addestrati ei servizi NLP completamente gestiti hanno democratizzato l'accesso e l'adozione della PNL. Amazon Comprehend è un servizio completamente gestito in grado di eseguire attività NLP come riconoscimento di entità personalizzate, modellazione di argomenti, analisi del sentiment e altro per estrarre informazioni dettagliate dai dati senza la necessità di alcuna precedente esperienza di machine learning.
L'anno scorso, AWS ha annunciato a associazione con Abbracciare il viso per aiutare a portare più rapidamente in produzione i modelli di elaborazione del linguaggio naturale (NLP). Hugging Face è una comunità di intelligenza artificiale open source, incentrata sulla PNL. La loro libreria basata su Python (Trasformatori) fornisce strumenti per utilizzare facilmente le popolari architetture Transformer all'avanguardia come BERT, RoBERTa e GPT. È possibile applicare questi modelli a una varietà di attività NLP, come la classificazione del testo, l'estrazione di informazioni e la risposta a domande, tra cui altri.
Amazon Sage Maker è un servizio completamente gestito che offre a sviluppatori e data scientist la possibilità di creare, addestrare e distribuire rapidamente modelli di machine learning (ML). SageMaker elimina il lavoro pesante da ogni fase del processo ML, facilitando lo sviluppo di modelli di alta qualità. SageMaker Python SDK fornisce API e contenitori open source per addestrare e distribuire modelli su SageMaker, utilizzando diversi framework ML e deep learning.
L'integrazione di Hugging Face con SageMaker ti consente di creare modelli di Hugging Face su larga scala in base ai casi d'uso specifici del tuo dominio.
In questo post, ti guideremo attraverso un esempio di come creare e distribuire un riassunto del testo personalizzato Hugging Face su SageMaker. Usiamo Pegasus [1] per questo scopo, il primo modello basato su Transformer specificamente pre-addestrato su un obiettivo su misura per la sintesi astratta del testo. BERT è pre-addestrato a mascherare parole casuali in una frase; al contrario, durante il pre-allenamento di Pegasus, le frasi sono mascherate da un documento di input. Il modello genera quindi le frasi mancanti come un'unica sequenza di output utilizzando tutte le frasi non mascherate come contesto, creando di conseguenza un riepilogo esecutivo del documento.
Grazie alla flessibilità della libreria HuggingFace, puoi facilmente adattare il codice mostrato in questo post per altri tipi di modelli di trasformatori, come t5, BART e altri.
Carica il tuo set di dati per mettere a punto un modello Hugging Face
Per caricare un set di dati personalizzato da un file CSV, utilizziamo il file load_dataset
metodo dal pacchetto Transformers. Possiamo applicare la tokenizzazione al set di dati caricato utilizzando il file datasets.Dataset.map
funzione. Il map
la funzione esegue un'iterazione sul set di dati caricato e applica la funzione tokenize a ciascun esempio. Il set di dati tokenizzato può quindi essere passato al trainer per la messa a punto del modello. Vedere il codice seguente:
Crea il tuo script di allenamento per lo stimatore Hugging Face SageMaker
Come spiegato nel post AWS e Hugging Face collaborano per semplificare e accelerare l'adozione dei modelli di elaborazione del linguaggio naturale, addestrare un modello Hugging Face su SageMaker non è mai stato così facile. Possiamo farlo usando lo stimatore Hugging Face del SDK di SageMaker.
Il seguente frammento di codice perfeziona Pegasus sul nostro set di dati. Puoi anche trovarne molti quaderni di esempio che ti guidano attraverso la messa a punto di diversi tipi di modelli, disponibili direttamente nel repository GitHub di Transformers. Per abilitare la formazione distribuita, possiamo utilizzare il Libreria di parallelismo dei dati in SageMaker, che è stato integrato nell'API di HuggingFace Trainer. Per abilitare il parallelismo dei dati, dobbiamo definire il distribution
parametro nel nostro stimatore Hugging Face.
La dimensione massima del batch di addestramento che puoi configurare dipende dalle dimensioni del modello e dalla memoria GPU dell'istanza utilizzata. Se la formazione distribuita SageMaker è abilitata, la dimensione totale del batch è la somma di ogni batch distribuito su ciascun dispositivo/GPU. Se utilizziamo un ml.g4dn.16xlarge con training distribuito invece di un'istanza ml.g4dn.xlarge, abbiamo una memoria otto volte superiore (8 GPU) rispetto a un'istanza ml.g4dn.xlarge (1 GPU). La dimensione del batch per dispositivo rimane la stessa, ma otto dispositivi vengono addestrati in parallelo.
Come al solito con SageMaker, creiamo a train.py
script da utilizzare con la modalità script e passare gli iperparametri per l'addestramento. Il frammento di codice seguente per Pegasus carica il modello e lo addestra utilizzando Transformers Trainer
classe:
Il codice completo è disponibile su GitHub.
Distribuisci il modello Hugging Face addestrato su SageMaker
I nostri amici di Hugging Face hanno reso l'inferenza sui modelli SageMaker per Transformers più semplice che mai grazie al SageMaker Kit di strumenti per l'inferenza del viso che abbraccia. È possibile distribuire direttamente il modello addestrato in precedenza semplicemente impostando la variabile di ambiente "HF_TASK":"summarization"
(per istruzioni, cfr Modelli Pegasus), scegliendo Schierare, e quindi scegliere Amazon Sage Maker, senza dover scrivere uno script di inferenza.
Tuttavia, se hai bisogno di un modo specifico per generare o postelaborare previsioni, ad esempio generando diversi suggerimenti di riepilogo basati su un elenco di diversi parametri di generazione del testo, scrivere il tuo script di inferenza può essere utile e relativamente semplice:
Come mostrato nel codice precedente, uno script di inferenza di questo tipo per HuggingFace su SageMaker richiede solo le seguenti funzioni modello:
- modello_fn() – Legge all'interno il contenuto di ciò che è stato salvato al termine del lavoro di formazione
SM_MODEL_DIR
o da una directory dei pesi del modello esistente salvata come file tar.gz in Servizio di archiviazione semplice Amazon (Amazon S3). Viene utilizzato per caricare il modello addestrato e il tokenizer associato. - input_fn () – Formatta i dati ricevuti da una richiesta effettuata all'endpoint.
- predict_fn () – Richiama l'uscita di
model_fn()
(il modello e il tokenizer) per eseguire l'inferenza sull'output diinput_fn()
(i dati formattati).
Facoltativamente, puoi creare un output_fn()
funzione per la formattazione dell'inferenza, utilizzando l'output di predict_fn()
, che non abbiamo dimostrato in questo post.
Possiamo quindi distribuire il modello Hugging Face addestrato con il suo script di inferenza associato a SageMaker utilizzando il file Modello SageMaker con il viso che abbraccia classe:
Testare il modello distribuito
Per questa demo, abbiamo addestrato il modello su Set di dati di recensioni di abbigliamento e-commerce da donna, che contiene recensioni di articoli di abbigliamento (che consideriamo come testo di input) e i relativi titoli (che consideriamo riepiloghi). Dopo aver rimosso gli articoli con i titoli mancanti, il set di dati contiene 19,675 recensioni. La messa a punto del modello Pegasus su un training set contenente il 70% di quegli articoli per cinque epoche ha richiesto circa 3.5 ore su un'istanza ml.p3.16xlarge.
Possiamo quindi distribuire il modello e testarlo con alcuni dati di esempio dal set di test. Quello che segue è un esempio di recensione che descrive un maglione:
Grazie al nostro script di inferenza personalizzato ospitato in un endpoint SageMaker, possiamo generare diversi riepiloghi per questa recensione con diversi parametri di generazione del testo. Ad esempio, possiamo chiedere all'endpoint di generare un intervallo di riepiloghi da molto brevi a moderatamente lunghi specificando penalità di lunghezza diverse (minore è la penalità di lunghezza, minore è il riepilogo generato). Di seguito sono riportati alcuni esempi di input di parametri e i successivi riepiloghi generati dalla macchina:
Quale riassunto preferisci? Il primo titolo generato cattura tutti i fatti importanti sulla recensione, con un quarto del numero di parole. Al contrario, l'ultimo usa solo tre parole (meno di 1/10 della lunghezza della recensione originale) per concentrarsi sulla caratteristica più importante del maglione.
Conclusione
Puoi mettere a punto un riepilogo di testo sul tuo set di dati personalizzato e distribuirlo alla produzione su SageMaker con questo semplice esempio disponibile su GitHub. addizionale quaderni di esempio per addestrare e distribuire modelli Hugging Face su SageMaker sono disponibili anche.
Come sempre, AWS è lieto di ricevere feedback. Si prega di inviare commenti o domande.
Riferimenti
[1] PEGASUS: Pre-formazione con frasi di gap estratte per la sintesi astratta
Circa gli autori
Viktor Malesevic è un ingegnere di machine learning con AWS Professional Services, appassionato di elaborazione del linguaggio naturale e MLOps. Collabora con i clienti per sviluppare e mettere in produzione modelli di deep learning impegnativi su AWS. Nel tempo libero si diverte a condividere un bicchiere di vino rosso e del formaggio con gli amici.
Amna Najmi è un Data Scientist con AWS Professional Services. È appassionata di aiutare i clienti a innovare con le tecnologie Big Data e Intelligenza Artificiale per sfruttare il valore aziendale e le informazioni dettagliate dai dati. Nel tempo libero le piace fare giardinaggio e viaggiare in posti nuovi.
- AI
- oh arte
- generatore d'arte
- un robot
- Amazon Sage Maker
- intelligenza artificiale
- certificazione di intelligenza artificiale
- intelligenza artificiale nel settore bancario
- robot di intelligenza artificiale
- robot di intelligenza artificiale
- software di intelligenza artificiale
- Apprendimento automatico di AWS
- blockchain
- conferenza blockchain ai
- geniale
- intelligenza artificiale conversazionale
- criptoconferenza ai
- dall's
- apprendimento profondo
- google ai
- machine learning
- Platone
- platone ai
- Platone Data Intelligence
- Gioco di Platone
- PlatoneDati
- gioco di plato
- scala ai
- sintassi
- zefiro