BlazingText Algorithmus - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

BlazingText Algorithmus

Der Amazon- SageMaker BlazingText Algorithmus bietet hoch optimierte Implementierungen der Word2vec- und Textklassifizierungsalgorithmen. Der Word2vec-Algorithmus ist für viele nachgelagerte natürliche Sprachverarbeitungsaufgaben (Natural Language Processing, NLP) wie z. B. Stimmungsanalyse, Erkennung benannter Entitäten und Maschinenübersetzung nützlich. Die Textklassifizierung ist eine wichtige Aufgabe für Anwendungen, die Web-Suchvorgänge, Informationsabrufe, Rangfolgeneinstufungen und Klassifizierung von Dokumenten durchführen.

Der Word2vec-Algorithmus ordnet Wörter hochwertigen verteilten Vektoren zu. Die resultierende Vektordarstellung eines Wortes wird als Worteinbettung bezeichnet. Wörter, die semantisch ähnlich sind, entsprechen Vektoren, die nahe beieinander liegen. Auf diese Weise erfassen Worteinbettungen die semantischen Beziehungen zwischen Wörtern.

Viele Anwendungen mit natürlicher Sprachverarbeitung (NLP, Natural Language Processing) erlernen Worteinbettungen, indem sie mit großen Sammlungen von Dokumenten geschult werden. Diese vorgeschulten Vektordarstellungen liefern Informationen zur Semantik und zu den Wortverteilungen, was in der Regel die Generalisierung anderer Modelle verbessert, die später mit einer eher begrenzten Datenmenge geschult werden. Die meisten Implementierungen des Word2vec-Algorithmus sind nicht für Multi-Core-CPU-Architekturen optimiert. Auf diese Weise lassen sich große Datensätze nur schwer skalieren.

Mit dem BlazingText Algorithmus können Sie problemlos auf große Datensätze skalieren. Ähnlich wie Word2vec stellt es die Trainingsarchitekturen Skip-gram und Continuous bag-of-words (CBOW) bereit. BlazingTextDie Implementierung des überwachten mehrklassenigen Textklassifizierungsalgorithmus mit mehreren Labels erweitert den fastText-Classifier, um GPU-Beschleunigung mit benutzerdefinierten CUDA-Kerneln zu verwenden. Sie können ein Modell mit mehr als eine Milliarde Wörter in wenigen Minuten mithilfe einer Multi-Core-CPU oder GPU schulen. Und Sie erzielen eine Leistung, die den state-of-the-art Deep-Learning-Algorithmen zur Textklassifizierung entspricht.

Der BlazingText Algorithmus ist nicht parallelisierbar. Weitere Informationen zu Parametern im Zusammenhang mit dem Training finden Sie unter Docker SageMaker -Registrierungspfade für integrierte Algorithmen.

Die SageMaker BlazingText Algorithmen bieten die folgenden Funktionen:

  • Beschleunigte Schulung des fastText Text-Classifier auf Multi-Core-CPUs oder einer GPU und Word2Vec auf GPUs mithilfe eines hochgradig optimierten CUDA-Kernels. Weitere Informationen finden Sie unter BlazingText: Skalieren und Beschleunigen von Word2Vec mit mehreren GPUs.

  • Angereicherte Wortvektoren mit Teilwortinformationen durch Erlernen von Vektordarstellungen für N-Gramm-Zeichen. Dieser Ansatz ermöglicht es , aussagekräftige Vektoren für out-of-vocabulary (OOV)-Wörter BlazingText zu generieren, indem ihre Vektoren als Summe der Zeichen-N-gram-Vektoren (Unterwort) dargestellt werden.

  • Ein batch_skipgram mode für den Word2Vec-Algorithmus, mit dem schnellere Schulungen und verteilte Berechnungen auf mehreren CPU-Knoten möglich sind. Das batch_skipgram mode führt eine Mini-Stapelverarbeitung mithilfe der Strategie des Austauschs von Negativbeispielen zum Konvertieren von BLAS-Operationen der ersten Ebene in BLAS-Operationen der dritten Ebene durch. Damit werden die Anweisungen zum Multiplizieren und Hinzufügen moderner Architekturen effizient genutzt. Weitere Informationen finden Sie unter Parallelizing Word2Vec in Shared und Distributed-Memory.

Zusammenfassend lässt sich sagen, dass die folgenden Modi von BlazingText auf verschiedenen Instance-Typen unterstützt werden:

Modi

Word2Vec

(Unüberwachtes Lernen)

Textklassifizierung

(Überwachtes Lernen)

Einzelne CPU-Instance

cbow

Skip-gram

Batch Skip-gram

supervised

Einzelne GPU-Instance (mit einer oder mehreren GPUs)

cbow

Skip-gram

supervised mit einer GPU

Mehrere CPU-Instances

Batch Skip-gram None

Weitere Informationen zur Mathematik hinter BlazingTextfinden Sie unter BlazingText: Skalieren und Beschleunigen von Word2Vec mit mehreren GPUs.

Eingabe-/Ausgabeschnittstelle für den BlazingText Algorithmus

Der BlazingText Algorithmus erwartet eine einzelne vorverarbeitete Textdatei mit durch Leerzeichen getrennten Token. Jede Zeile in der Datei enthält einen einzelnen Satz. Wenn Sie mehrere Textdateien schulen, verketten Sie sie in einer Datei und laden Sie die Datei in den jeweiligen Kanal hoch.

Schulungs- und Validierungsdatenformat

Schulungs- und Validierungsdatenformat für den Word2Vec-Algorithmus

Für Word2Vec-Schulungen laden Sie die Datei unter dem train-Kanal hoch. Andere Kanäle werden nicht unterstützt. Die Datei enthält einen einzelnen Schulungssatz pro Zeile.

Schulungs- und Validierungsdatenformat für den Textklassifizierungsalgorithmus

Im Rahmen des beaufsichtigten Modus können Sie im Dateimodus oder im erweiterten Manifesttextformat schulen.

Schulen im Dateimodus

Im supervised-Modus sollte die Schulungs-/Validierungsdatei einen Schulungssatz pro Zeile zusammen mit den Bezeichnungen enthalten. Bezeichnungen sind Wörter, denen die Zeichenfolge __label__ vorangestellt ist. Hier finden Sie ein Beispiel für eine Schulungs-/Validierungsdatei:

__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 .
Anmerkung

Die Reihenfolge der Bezeichnungen innerhalb des Satzes ist unerheblich.

Laden Sie die Schulungsdatei unter dem Schulungskanal hoch. Die Validierungsdatei können Sie optional unter dem Validierungskanal hochladen.

Schulen im erweiterten Manifesttextformat

Der überwachte Modus für CPU-Instances unterstützt auch das erweiterte Manifestformat, mit dem Sie im Pipe-Modus trainieren können, ohne RecordIO-Dateien erstellen zu müssen. Bei der Verwendung dieses Formats muss eine S3-Manifestdatei generiert werden, die die Liste der Sätze und ihre entsprechenden Bezeichnungen enthält. Das Manifestdateiformat sollte im JSON Lines-Format vorliegen, bei dem jede Zeile ein Muster darstellt. Die Sätze werden unter Verwendung des source-Tags angegeben und die Bezeichnung kann mithilfe des label-Tags angegeben werden. Die source- und label-Tags sollten beide unter dem AttributeNames-Parameterwert bereitgestellt werden, wie in der Anforderung angegeben.

{"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}

Multi-Label-Training wird auch durch die Angabe eines JSON-Arrays von Labels unterstützt.

{"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]}

Weitere Informationen zu erweiterten Manifestdateien finden Sie unter Bereitstellen von Datensatz-Metadaten für Trainingsaufträge mit einer erweiterten Manifestdatei.

Modellartefakte und Inferenz

Modellartefakte für den Word2Vec-Algorithmus

Beim Word2Vec-Training bestehen die Modellartefakte aus vectors.txt, das words-to-vectors Mapping enthält, und vectors.bin, einer Binärdatei, die von BlazingText zum Hosten, Inferenzen oder beidem verwendet wird. vectors.txt speichert die Vektoren in einem Format, das mit anderen Tools wie Gensim und Spacy kompatibel ist. Beispiel: Ein Gensim-Benutzer kann die folgenden Befehle zum Laden der Datei vectors.txt ausführen:

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())

Wenn der Auswertungsparameter auf True festgelegt ist, wird eine zusätzliche Datei, eval.json, erstellt. Diese Datei enthält die Ergebnisse der Ähnlichkeitsauswertung (unter Verwendung der Rangkorrelationskoeffizienten von Spearman) im WS-353-Dataset. Die Anzahl der Wörter aus dem WS-353-Dataset, die im Schulungsdatensatz nicht vorhanden waren, werden gemeldet.

Für Inferenzanforderungen akzeptiert das Modell eine JSON-Datei mit einer Liste von Zeichenfolgen und gibt eine Liste der Vektoren zurück. Wenn das Wort im Vokabular nicht gefunden wird, gibt die Inferenz einen Vektor mit Nullen zurück. Wenn bei Unterwörtern True während des Trainings auf gesetzt ist, kann das Modell Vektoren für out-of-vocabulary (OOV)-Wörter generieren.

JSON-Beispielanfrage

Mime-Typ: application/json

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

Modellartefakte für den Textklassifizierungsalgorithmus

Beim Training mit überwachten Ausgaben wird eine model.bin-Datei erstellt, die vom BlazingText Hosting verwendet werden kann. Zur Inferenz akzeptiert das BlazingText Modell eine JSON-Datei mit einer Liste von Sätzen und gibt eine Liste der entsprechenden vorhergesagten Beschriftungen und Wahrscheinlichkeitswerte zurück. Jeder Satz muss eine Zeichenfolge mit durch Leerzeichen getrennten Token, Wörtern oder beidem sein.

JSON-Beispielanfrage

Mime-Typ: application/json

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

Standardmäßig gibt der Server nur eine Voraussage zurück, und zwar die mit der höchsten Wahrscheinlichkeit. Zum Abrufen der top k-Voraussagen können Siek in der Konfiguration wie folgt festlegen:

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

Für müssen BlazingTextdie content-type accept Parameter und gleich sein. Für die Stapeltransformation müssen beide application/jsonlines lauten. Wenn sie sich voneinander unterscheiden, wird das Feld Accept ignoriert. Das Format für die Eingabe lautet wie folgt:

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}

Das Format für die Ausgabe lautet wie folgt:

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"]}

Sowohl für überwachte Modi (Textklassifizierung) als auch für unbeaufsichtigte Modi (Word2Vec BlazingText )können die von erzeugten Binärdateien (*.bin ) von fastText querverbraucht werden und umgekehrt. Sie können Binärdateien verwenden, die BlazingText von fastText erstellt wurden. Ebenso können Sie die mit fastText erstellten Modell-Binärdateien mit hosten BlazingText.

Hier ist ein Beispiel für die Verwendung eines Modells, das mit BlazingText fastText generiert wurde:

#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

Die Binärdateien werden jedoch nur beim Training auf CPU und einer einzigen GPU unterstützt; das Training auf mehreren GPUs erzeugt keine Binärdateien.

EC2-Instance-Empfehlung für den BlazingText Algorithmus

Für die skipgram Modi cbow und BlazingText unterstützt einzelne CPU- und einzelne GPU-Instances. Beide Modi unterstützen das Erlernen von subwords-Einbettungen. Um die höchste Geschwindigkeit ohne Genauigkeitseinbußen zu erzielen, empfehlen wir die Verwendung einer ml.p3.2xlarge-Instance.

Für den -batch_skipgramModus BlazingText unterstützt einzelne oder mehrere CPU-Instances. Legen Sie beim Training auf mehreren Instances den Wert des -S3DataDistributionTypeFeldes des S3DataSource Objekts fest, das Sie CreateTrainingJob an übergebenFullyReplicated. BlazingText kümmert sich um die Verteilung von Daten auf mehrere Maschinen.

Im überwachten Textklassifizierungsmodus wird eine C5-Instance empfohlen, wenn das Trainingsdatensatz kleiner ist als 2 GB. Verwenden Sie für größere Datensätze eine Instance mit einer einzelnen GPU. BlazingText unterstützt P2, P3, G4dn und G5-Instances für Training und Inferenz.

BlazingText Beispiel-Notebooks

Ein Beispiel-Notebook, das den SageMaker BlazingText Algorithmus zum Generieren von Wortvektoren trainiert und bereitstellt, finden Sie unter Learning Word2Vec Word Representations using BlazingText. Anweisungen zum Erstellen und Zugreifen auf Jupyter-Notebook-Instances, mit denen Sie das Beispiel in ausführen können SageMaker, finden Sie unter Amazon SageMaker Notebook-Instances. Nachdem Sie eine Notebook-Instance erstellt und geöffnet haben, wählen Sie die Registerkarte SageMaker Beispiele, um eine Liste aller SageMaker Beispiele anzuzeigen. Die Beispiel-Notebooks für die Themenmodellierung, die Blazing Text verwenden, befinden sich im Abschnitt Introduction to Amazon algorithms. Zum Öffnen eines Notebooks wählen Sie die Registerkarte Use (Verwenden) und dann Create copy (Kopie erstellen).