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

Algoritmo BlazingText

L’algoritmo Amazon SageMaker AI BlazingText fornisce le implementazioni altamente ottimizzate degli algoritmi di classificazione testo e Word2vec. L'algoritmo Word2vec è utile per molte attività di elaborazione del linguaggio naturale (NLP) downstream, come l'analisi di valutazione, il riconoscimento di entità con nome, la traduzione automatica e così via. La classificazione del testo è un compito rilevante per le applicazioni che eseguono ricerche sul Web, recupero di informazioni, classifiche e classificazione dei documenti.

L'algoritmo Word2vec mappa le parole ai vettori distribuiti di alta qualità. La rappresentazione vettoriale risultante di una parola viene chiamata incorporamento di parola. Le parole semanticamente simili corrispondono a vettori vicini. In questo modo, gli incorporamenti di parola acquisiscono le relazioni semantiche tra le parole.

Molte applicazioni di elaborazione del linguaggio naturale (NLP) apprendono gli incorporamenti di parola tramite l’addestramento di ampie raccolte di documenti. Queste rappresentazioni vettoriali già addestrate forniscono informazioni sulla semantica e sulle distribuzioni di parole che solitamente migliorano la generalizzabilità di altri modelli successivamente addestrati su una quantità di dati più limitata. La maggior parte degli algoritmi Word2vec non sono ottimizzati per architetture di CPU multi-core. Ciò rende difficile il ridimensionamento di set di dati di grandi dimensioni.

Con l'algoritmo BlazingText, puoi ridimensionare facilmente i set di dati di grandi dimensioni. Analogamente a Word2vec, fornisce le architetture di addestramento continuous bag-of-words (CBOW) e Skip-gram. L'implementazione di BlazingText dell'algoritmo di classificazione del testo multiclasse, multietichetta supervisionato estende il classificatore di testo fastText per utilizzare l'accelerazione GPU con i kernel CUDA personalizzati. Puoi addestrare un modello per oltre un miliardo di parole in un paio di minuti usando una CPU multi-core o una GPU. In tal modo puoi raggiungere prestazioni al pari degli algoritmi di classificazione del testo di deep learning più all'avanguardia.

L'algoritmo BlazingText non è parallelizzabile. Per ulteriori informazioni sui parametri relativi all’addestramento, consulta percorsi di registro Docker per algoritmi integrati di SageMaker.

Gli algoritmi SageMaker AI BlazingText forniscono le seguenti funzionalità:

  • Addestramento accelerato del classificatore di testo fastText su CPU multi-core o su GPU e Word2Vec su GPU utilizzando i kernel CUDA altamente ottimizzati. Per ulteriori informazioni, consulta la pagina relativa al dimensionamento e all'accelerazione di Word2Vec utilizzando più GPU in BlazingText.

  • Vettori di parola potenziati con le informazioni sulle parole secondarie tramite l'apprendimento delle rappresentazioni vettoriali per n-grammi di caratteri. Questo approccio consente a BlazingText di generare vettori significativi per le parole fuori dal vocabolario (OOV, Out-Of-Vocabulary) rappresentando i vettori come la somma dei vettori n-grammi di caratteri (parola secondaria).

  • batch_skipgram mode per l'algoritmo Word2Vec che consente un addestramento più veloce e il calcolo distribuito su più nodi della CPU. batch_skipgram mode esegue il mini-batch utilizzando la strategia Negative Sample Sharing per convertire le operazioni BLAS di livello 1 in operazioni BLAS di livello 3. In tal modo si utilizzano efficacemente le istruzioni di aggiunta multipla delle architetture moderne. Per ulteriori informazioni, consulta Parallelizzazione di Word2Vec in memoria condivisa e distribuita.

Per riepilogare, le seguenti modalità sono supportate da BlazingText su diversi tipi di istanze:

Modalità

Word2Vec

(apprendimento non supervisionato)

Classificazione del testo

(apprendimento supervisionato)

Istanza CPU singola

cbow

Skip-gram

Batch Skip-gram

supervised

Istanza GPU singola (con 1 o più GPU)

cbow

Skip-gram

supervised con una GPU

Istanze CPU multiple

Batch Skip-gram Nessuno

Per ulteriori informazioni sui calcoli matematici alla base di BlazingText, consulta BlazingText: Dimensionamento e accelerazione di Word2Vec utilizzando più GPU.

Interfaccia di input/output per l'algoritmo BlazingText

L'algoritmo BlazingText prevede un singolo file di testo preelaborato con token separati da spazio. Ogni riga del file deve contenere una sola frase. Se devi usare più file di testo per l’addestramento, concatenali in un unico file e carica il file nel rispettivo canale.

Formato dei dati di addestramento e convalida

Formato dei dati di addestramento e convalida per l'algoritmo Word2Vec

Per l’addestramento di Word2Vec, carica il file nel canale train. Non sono supportati altri canali. Il file deve contenere una frase di addestramento per riga.

Formato dei dati di addestramento e convalida per l'algoritmo di classificazione del testo

Per la modalità supervisionata, puoi addestrare con la modalità file o con il formato di testo manifest aumentato.

Addestramento con la modalità di file

Per la modalità supervised, il file di addestramento/convalida deve contenere una frase di addestramento per riga insieme alle etichette. Le etichette sono parole precedute dalla stringa __label__. Ecco un esempio di file di addestramento/convalida:

__label__4 linux ready for prime time , intel says , despite all the linux hype , the open-source movement has yet to make a huge splash in the desktop market . that may be about to change , thanks to chipmaking giant intel corp . __label__2 bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly as the indian skippers return to international cricket was short lived .
Nota

L'ordine delle etichette all'interno della frase non è rilevante.

Carica il file di addestramento nel canale di addestramento e, facoltativamente, carica il file di convalida nel canale di convalida.

Addestramento con il formato di testo manifest aumentato

La modalità supervisionata per le istanze CPU supporta anche il formato di manifest aumentato che ti consente di addestrare in modalità pipe senza dover creare file RecordIO. Quando si usa questo formato, è necessario generare un file manifest S3 che contenga l'elenco delle frasi e delle etichette corrispondenti. Il formato del file manifest deve essere in JSON Lines dove ogni riga rappresenta un esempio. Le frasi sono specificate utilizzando il tag source e l'etichetta può essere specificata utilizzando il tag label. È necessario specificare i tag source e label nel valore del parametro AttributeNames come specificato nella richiesta.

{"source":"linux ready for prime time , intel says , despite all the linux hype", "label":1} {"source":"bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly", "label":2}

L’addestramento multi-etichetta è supportato anche specificando un array di etichette JSON.

{"source":"linux ready for prime time , intel says , despite all the linux hype", "label": [1, 3]} {"source":"bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly", "label": [2, 4, 5]}

Per ulteriori informazioni sui file manifest aumentati, consulta File di manifesto aumentati nei job di addestramento.

Artefatti del modello e inferenza

Artefatti del modello per l'algoritmo Word2Vec

Per l’addestramento Word2Vec, gli artefatti del modello consistono in vectors.txt che contiene la mappatura parole-vettori e vectors.bin, un binario usato da BlazingText per l'hosting, l'inferenza o entrambi. vectors.txt memorizza i vettori in un formato compatibile con altri strumenti come Gensim e Spacy. Ad esempio, un utente Gensim può eseguire i seguenti comandi per caricare il file vectors.txt:

from gensim.models import KeyedVectors word_vectors = KeyedVectors.load_word2vec_format('vectors.txt', binary=False) word_vectors.most_similar(positive=['woman', 'king'], negative=['man']) word_vectors.doesnt_match("breakfast cereal dinner lunch".split())

Se il parametro di valutazione è impostato su True, viene creato un ulteriore file, eval.json. Questo file contiene i risultati di valutazione di somiglianza (usando i coefficienti di correlazione per la classifica di Spearman) nel set di dati WS-353. Viene restituito il numero di parole del set di dati WS-353 che non sono presenti nel corpus dell’addestramento.

Per le richieste di inferenza, il modello accetta un file JSON contenente un elenco di stringhe e restituisce un elenco di vettori. Se la parola non è disponibile nel vocabolario, l'inferenza restituisce un vettore di zeri. Se le parole secondarie sono impostate su True durante l’addestramento, il modello è in grado di generare vettori per le parole fuori dal vocabolario (OOV).

Richiesta JSON di esempio

Mime-type: application/json

{ "instances": ["word1", "word2", "word3"] }

Artefatti del modello per l'algoritmo di classificazione del testo

L’addestramento con output supervisionati crea un file model.bin che può essere utilizzato dall'hosting BlazingText. Per l'inferenza, il modello BlazingText accetta un file JSON contenente un elenco di frasi e restituisce un elenco di etichette e punteggi di probabilità previsti corrispondenti. Ogni frase deve essere una stringa con token, parole o entrambi separati da spazio.

Richiesta JSON di esempio

Mime-type: application/json

{ "instances": ["the movie was excellent", "i did not like the plot ."] }

Per impostazione predefinita, il server restituisce un solo previsione, quella con la massima probabilità. Per recuperare le prime k previsioni, è possibile impostare k nella configurazione, come segue:

{ "instances": ["the movie was excellent", "i did not like the plot ."], "configuration": {"k": 2} }

Per BlazingText, i parametri content-type e accept devono essere uguali. Per la trasformazione in batch, entrambi devono essere application/jsonlines. Se differiscono, il campo Accept viene ignorato. Il formato dell'input è il seguente:

content-type: application/jsonlines {"source": "source_0"} {"source": "source_1"} if you need to pass the value of k for top-k, then you can do it in the following way: {"source": "source_0", "k": 2} {"source": "source_1", "k": 3}

Il formato dell'output è il seguente:

accept: application/jsonlines {"prob": [prob_1], "label": ["__label__1"]} {"prob": [prob_1], "label": ["__label__1"]} If you have passed the value of k to be more than 1, then response will be in this format: {"prob": [prob_1, prob_2], "label": ["__label__1", "__label__2"]} {"prob": [prob_1, prob_2], "label": ["__label__1", "__label__2"]}

Per entrambe le modalità supervisionate (classificazione del testo) e non supervisionate (Word2Vec), i file binari (*.bin) prodotti da BlazingText possono essere utilizzati da fastText e viceversa. Puoi usare i file binari creati da fastText tramite BlazingText. Analogamente, puoi ospitare i file binari del modello creati con fastText utilizzando BlazingText.

Ecco un esempio di come utilizzare un modello generato con BlazingText con fastText:

#Download the model artifact from S3 aws s3 cp s3://<YOUR_S3_BUCKET>/<PREFIX>/model.tar.gz model.tar.gz #Unzip the model archive tar -xzf model.tar.gz #Use the model archive with fastText fasttext predict ./model.bin test.txt

Tuttavia, i file binari sono supportati solo quando si esegue l’addestramento su CPU e GPU singola; l’addestramento su multi-GPU non produrrà file binari.

Raccomandazione istanza EC2 per l'algoritmo BlazingText

Per le modalità cbow e skipgram, BlazingText supporta istanze singole CPU e GPU. Entrambe le modalità supportano l'apprendimento degli incorporamenti di subwords. Per ottenere la massima velocità senza compromettere l'accuratezza, ti consigliamo di utilizzare un'istanza ml.p3.2xlarge.

Per la modalità batch_skipgram, BlazingText supporta istanze CPU singole o multiple. Quando prepari più istanze, imposta su FullyReplicated il valore del campo S3DataDistributionType dell'oggetto S3DataSource che passi a CreateTrainingJob. BlazingText si occupa di distribuire i dati tra le macchine.

Per la modalità di classificazione del testo supervisionata, consigliamo un'istanza C5 se il set di dati per l’addestramento è inferiore a 2 GB. Per set di dati più grandi, usa un'istanza con una singola GPU. BlazingText supporta istanze P2, P3, G4dn e G5 per l'addestramento e l'inferenza.

Notebook di esempio di BlazingText

Per un notebook di esempio che addestra e implementa l’algoritmo SageMaker AI BlazingText per generare vettori di parole, consulta Apprendimento di rappresentazioni di parole Word2Vec con BlazingText. Per istruzioni su come creare e accedere alle istanze del notebook Jupyter che puoi utilizzare per eseguire l’esempio in SageMaker AI, consulta Istanze SageMaker per notebook Amazon. Dopo aver creato e aperto un’istanza del notebook, scegli la scheda Esempi di SageMaker AI per visualizzare un elenco di tutti gli esempi di SageMaker AI. I notebook di esempio di modellazione dell'argomento che utilizzano gli algoritmi BlazingText sono disponibili nella sezione con l'introduzione agli algoritmi Amazon. Per aprire un notebook, seleziona la relativa scheda Usa, quindi scegli Crea copia.