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

BlazingText algoritmo

L' SageMaker BlazingText algoritmo Amazon fornisce implementazioni altamente ottimizzate degli algoritmi di classificazione del testo e di 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 il training di ampie raccolte di documenti. Queste rappresentazioni vettoriali già sottoposte al training forniscono informazioni sulla semantica e sulle distribuzioni di parole che solitamente migliorano la generalizzabilità di altri modelli successivamente sottoposti al training 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' BlazingText algoritmo, puoi scalare facilmente set di dati di grandi dimensioni. Simile a Word2vec, fornisce le architetture Skip-gram e di formazione continua bag-of-words (CBOW). BlazingTextl'implementazione dell'algoritmo di classificazione del testo multiclasse e multietichetta supervisionato estende il classificatore di testo FastText per utilizzare l'accelerazione GPU con kernel CUDA personalizzati. Puoi sottoporre al training un modello per oltre un miliardo di parole in un paio di minuti usando una CPU multi-core o una GPU. Inoltre, si ottengono prestazioni pari a quelle degli algoritmi di classificazione del testo di deep learning. state-of-the-art

L' BlazingText algoritmo non è parallelizzabile. Per ulteriori informazioni sui parametri relativi alla formazione, consulta Docker Registry Paths for SageMaker Built-in Algorithms.

Gli SageMaker BlazingText algoritmi offrono le seguenti funzionalità:

  • Training 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 BlazingText: Scalabilità e accelerazione di Word2Vec utilizzando più GPU.

  • Vettori di parola potenziati con le informazioni sulle parole secondarie tramite l'apprendimento delle rappresentazioni vettoriali per n-grammi di caratteri. Questo approccio consente di BlazingText generare vettori significativi per le parole out-of-vocabulary (OOV) rappresentando i relativi vettori come la somma dei vettori n-gram (sottoparola) di caratteri.

  • batch_skipgram mode per l'algoritmo Word2Vec che consente un training 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 riassumere, le seguenti modalità sono supportate da istanze di diversi tipi: BlazingText

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 sulla matematica alla base BlazingText, consulta BlazingText: Scalabilità e accelerazione di Word2Vec utilizzando più GPU.

Interfaccia BlazingText di input/output per l'algoritmo

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

Formato dei dati di training e convalida

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

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

Formato dei dati di training 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.

Training con la modalità di file

Per la modalità supervised, il file di training/convalida deve contenere una frase di training per riga insieme alle etichette. Le etichette sono parole precedute dalla stringa __label__. Ecco un esempio di file di training/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 training nel canale di training e, facoltativamente, carica il file di convalida nel canale di convalida.

Training 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}

Il training 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 manifesto aumentati per lavori di formazione.

Artefatti del modello e inferenza

Artefatti del modello per l'algoritmo Word2Vec

Per l'addestramento con Word2Vec, gli artefatti del modello sono costituiti da vectors.txt, che contiene la words-to-vectors mappatura, e vectors.bin, un file binario utilizzato per l'hosting, l'inferenza o entrambi. BlazingText 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 del training.

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 subwords sono impostate su True durante l'addestramento, il modello è in grado di generare vettori per out-of-vocabulary parole (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 BlazingText modello accetta un file JSON contenente un elenco di frasi e restituisce un elenco delle etichette previste e dei punteggi di probabilità 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} }

Perché BlazingText, i accept parametri content-type and 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"]}

Sia per la modalità supervisionata (classificazione del testo) che per quella non supervisionata (Word2Vec), i file binari (*.bin) prodotti da possono essere BlazingText utilizzati in modo incrociato da FastText e viceversa. È possibile utilizzare file binari prodotti BlazingText da FastText. Allo stesso modo, è possibile ospitare i modelli binari creati con BlazingText FastText utilizzando.

Ecco un esempio di come utilizzare un modello generato 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 il training su CPU e GPU singola; il training su multi-GPU non produrrà file binari.

Raccomandazione dell'istanza EC2 per l'algoritmo BlazingText

Per cbow e skipgram modalità, BlazingText supporta istanze con CPU singola e GPU singola. 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 batch_skipgram modalità, BlazingText supporta istanze CPU singole o multiple. Quando ti alleni su più istanze, imposta il valore del S3DataDistributionType campo dell'S3DataSourceoggetto a CreateTrainingJobcui passi. FullyReplicated BlazingTextsi occupa della distribuzione dei dati tra le macchine.

Per la modalità di classificazione del testo supervisionata, consigliamo un'istanza C5 se il set di dati per il training è 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.

BlazingText Notebook di esempio

Per un taccuino di esempio che addestra e implementa l' SageMaker BlazingText algoritmo per generare vettori di parole, consulta Learning Word2Vec Word Representations using. BlazingText Per istruzioni sulla creazione e l'accesso alle istanze di notebook Jupyter che è possibile utilizzare per eseguire l'esempio, vedere. SageMaker Istanze Amazon SageMaker Notebook Dopo aver creato e aperto un'istanza di notebook, scegli la scheda SageMaker Esempi per visualizzare un elenco di tutti gli esempi. SageMaker 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 Utilizza, quindi scegli Crea copia.