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
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. Dasbatch_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 |
|
|
Einzelne GPU-Instance (mit einer oder mehreren GPUs) |
|
|
Mehrere CPU-Instances |
Batch Skip-gram |
None |
Weitere Informationen zur Mathematik hinter BlazingTextfinden Sie unter BlazingText: Skalieren und Beschleunigen von Word2Vec mit mehreren GPUs.
Themen
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 Linessource
-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 Erweiterte Manifestdateien für Schulungsjobs.
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_skipgram
Modus BlazingText unterstützt einzelne oder mehrere CPU-Instances. Legen Sie beim Training auf mehreren Instances den Wert des -S3DataDistributionType
Feldes 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