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.
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 |
|
|
Istanza GPU singola (con 1 o più GPU) |
|
|
Istanze CPU multiple |
Batch Skip-gram |
Nessuno |
Per ulteriori informazioni sulla matematica alla base BlazingText, consulta BlazingText: Scalabilità e accelerazione
Argomenti
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 Linessource
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 Fornitura dei metadati dei set di dati ai processi di addestramento con un file manifest aumentato.
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'S3DataSource
oggetto a CreateTrainingJob
cui 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