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

BlazingText algoritmo

L' BlazingText algoritmo Amazon SageMaker AI fornisce implementazioni altamente ottimizzate di Word2vec e algoritmi di classificazione del testo. 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' 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 addestrare 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.

BlazingText Gli algoritmi di SageMaker intelligenza artificiale offrono le seguenti funzionalità:

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ù) GPUs

cbow

Skip-gram

supervised con una GPU

Istanze CPU multiple

Batch Skip-gram Nessuno

Per ulteriori informazioni sulla matematica alla base BlazingText, vedi BlazingText: Scaling and Accelerating Word2Vec using Multiple. GPUs

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 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 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 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 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 l’addestramento su CPU e GPU singola; l’addestramento su multi-GPU non produrrà file binari.

EC2 Raccomandazione di istanza 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 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.

BlazingText Notebook di esempio

Per un notebook di esempio che addestra e implementa l' BlazingText algoritmo di SageMaker intelligenza artificiale 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 puoi utilizzare per eseguire l'esempio in AI, vedi. SageMaker Istanze Amazon SageMaker Notebook Dopo aver creato e aperto un'istanza di notebook, scegli la scheda Esempi SageMaker AI per visualizzare un elenco di tutti gli esempi di IA. 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 Usa, quindi scegli Crea copia.