BlazingText algorithme - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

BlazingText algorithme

L' SageMaker BlazingText algorithme Amazon fournit des implémentations hautement optimisées de Word2vec et des algorithmes de classification de texte. L'algorithme Word2vec s'avère utile pour de nombreuses tâches de traitement du langage naturel en aval, telles que l'analyse de sentiment, la reconnaissance d'entités nommées, la traduction automatique, etc. La classification textuelle est une tâche importante pour les applications qui effectuent des recherches sur le web ou pour la récupération des informations, le classement et la classification des documents.

L'algorithme Word2vec mappe les mots à des vecteurs distribués de haute qualité. La représentation vectorielle résultante d'un mot est désignée sous le terme de plongement lexical. Les mots qui sont sémantiquement similaires correspondent aux vecteurs proches les uns des autres. Ainsi, les plongements lexicaux capturent les relations sémantiques entre les mots.

De nombreuses applications de traitement du langage naturel (NLP) apprennent les plongements lexicaux en se formant sur de grands ensembles de documents. Ces représentations vectorielles préentraînées fournissent des informations sur la sémantique et les distributions lexicales qui améliorent habituellement la généralisation des autres modèles qui sont ensuite entraînés à partir d'une quantité plus limitée de données. La plupart des implémentations de l'algorithme Word2vec ne sont pas optimisées pour les architectures à UC multicœurs. Il est donc difficile de procéder à un dimensionnement pour de grands ensembles de données.

Grâce à l' BlazingText algorithme, vous pouvez facilement évoluer vers de grands ensembles de données. Semblable à Word2vec, il fournit les architectures de formation Skip-gram et continue bag-of-words (CBOW). BlazingTextLa mise en œuvre de l'algorithme supervisé de classification de texte multi-classes et multi-étiquettes étend le classificateur de texte FastText pour utiliser l'accélération GPU avec des noyaux CUDA personnalisés. Vous pouvez entraîner un modèle sur plus d'un milliard de mots en quelques minutes à l'aide d'une UC multicœurs ou d'un GPU. De plus, vous obtenez des performances comparables à celles des algorithmes de classification de texte basés sur le state-of-the-art deep learning.

L' BlazingText algorithme n'est pas parallélisable. Pour plus d'informations sur les paramètres liés à l'entraînement, voir Chemins de registre Docker pour les algorithmes SageMaker intégrés.

Les SageMaker BlazingText algorithmes fournissent les fonctionnalités suivantes :

  • Entraînement accéléré du classifieur fastText sur des UC multicœurs ou un GPU et Word2vec sur des GPU utilisant des noyaux CUDA hautement optimisés. Pour plus d'informations, voir BlazingText: Mise à l'échelle et accélération de Word2Vec à l'aide de plusieurs GPU.

  • Vecteurs lexicaux enrichis avec la structure interne des mots en apprenant les représentations vectorielles pour les n-grammes de caractère. Cette approche permet BlazingText de générer des vecteurs significatifs pour les mots out-of-vocabulary (OOV) en représentant leurs vecteurs sous la forme de la somme des vecteurs de caractères n-gram (sous-mots).

  • Un mode batch_skipgram pour l'algorithme Word2vec qui accélère l'entraînement et le calcul distribué sur plusieurs nœuds d'UC. Le mode batch_skipgram procède à un traitement par mini-lots en appliquant la stratégie de partage d'échantillons négatifs afin de convertir les opérations BLAS de niveau 1 en opérations BLAS de niveau 3. Ainsi, les instructions multiply add des architectures modernes sont efficacement mises à profit. Pour plus d'informations, consultez l'article Mise en parallèle Word2vec en mémoire partagée et distribuée.

En résumé, les modes suivants sont pris en charge par BlazingText différents types d'instances :

Modes

Word2vec

(Apprentissage non supervisé)

Classification de texte

(Apprentissage supervisé)

Instance d'UC unique

cbow

Skip-gram

Batch Skip-gram

supervised

Instance GPU unique (avec un ou plusieurs GPU)

cbow

Skip-gram

supervised avec un GPU

Plusieurs instances d'UC

Batch Skip-gram Aucun

Pour plus d'informations sur les mathématiques sous-jacentes BlazingText, voir BlazingText: Mise à l'échelle et accélération de Word2Vec à l'aide de plusieurs GPU.

Interface d'entrée/sortie pour l'algorithme BlazingText

L' BlazingText algorithme attend un seul fichier texte prétraité avec des jetons séparés par des espaces. Chaque ligne du fichier doit contenir une seule phrase. Si l'entraînement doit porter sur plusieurs fichiers texte, concaténez-les en un seul fichier que vous chargerez dans le canal respectif.

Format des données d'entraînement et de validation

Format des données d'entraînement et de validation pour l'algorithme Word2vec

Pour l'entraînement Word2vec, chargez le fichier sous le canal d' entraînement. Aucun autre canal n'est pris en charge. Le fichier doit contenir une phrase d'entraînement par ligne.

Format des données d'entraînement et de validation pour l'algorithme de classification textuelle

En mode supervisé, vous pouvez procéder à l'entraînement en mode File (Fichier) ou à l'aide du format de texte manifeste augmenté.

Entraînement en mode File (Fichier)

En mode supervised, le fichier d'entraînement/validation doit contenir une phrase d'entraînement par ligne, ainsi que les étiquettes. Les étiquettes sont des mots préfixés de la chaîne __label__. Voici un exemple de fichier d'entraînement/validation :

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

L'ordre des étiquettes dans la phrase n'importe pas.

Chargez le fichier d'entraînement sous le canal d'entraînement et, le cas échéant, chargez le fichier de validation sous le canal de validation.

Entraînement à l'aide du format de texte manifeste augmenté

Le mode supervisé pour les instances de CPU prend également en charge le format de manifeste augmenté, qui vous permet d'effectuer l'entraînement en mode Pipe sans avoir à créer de fichiers RecordIO. Si vous utilisez ce format, un fichier manifeste S3 contenant la liste des phrases et de leurs étiquettes associées doit être généré. Le fichier manifeste doit être au format JSON Lines, où chaque ligne représente un exemple. Les phrases sont spécifiées à l'aide de la balise source ; l'étiquette peut être spécifiée à l'aide de la balise label. Les deux balises source et label doivent être fournies sous la valeur de paramètre AttributeNames, comme indiqué dans la demande.

{"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'entraînement avec plusieurs étiquettes est également prise en charge en spécifiant un tableau d'étiquettes 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]}

Pour plus d'informations sur les fichiers manifeste augmenté, consultez Fournir des métadonnées d'ensembles de données à des tâches d'entraînement avec un fichier manifeste augmenté.

Artefacts de modèles et inférence

Artefacts de modèles pour l'algorithme Word2vec

Pour la formation Word2Vec, les artefacts du modèle se composent de vectors.txt, qui contient le words-to-vectors mappage, et de vectors.bin, un binaire utilisé BlazingText pour l'hébergement, l'inférence ou les deux. vectors.txt stocke les vecteurs dans un format compatible avec d'autres outils tels que Gensim et Spacy. Par exemple, un utilisateur de Gensim peut exécuter les commandes suivantes pour charger le fichier 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())

Si le paramètre d'évaluation est défini sur True, un autre fichier, eval.json, est créé. Ce fichier contient les résultats d'évaluation de similarité (d'après les coefficients de corrélation de Spearman) pour l'ensemble de données WS-353. Le nombre de mots de l'ensemble de données WS-353 absents du corps d'entraînement est signalé.

Pour les demandes d'inférence, le modèle accepte un fichier JSON contenant une liste de chaînes et renvoie une liste de vecteurs. Si le mot ne figure pas dans le vocabulaire, l'inférence renvoie un vecteur de zéros. Si les sous-mots sont définis sur True pendant l'entraînement, le modèle est capable de générer des vecteurs pour les mots out-of-vocabulary (OOV).

Exemple de demande JSON

Type Mime : application/json

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

Artefacts de modèles pour l'algorithme de classification textuelle

L'entraînement avec des sorties supervisées crée un fichier model.bin qui peut être utilisé par l' BlazingText hébergeur. À des fins d'inférence, le BlazingText modèle accepte un fichier JSON contenant une liste de phrases et renvoie une liste d'étiquettes prédites et de scores de probabilité correspondants. Chaque phrase doit se présenter sous la forme d'une chaîne avec des jetons et/ou des mots séparés par un espace.

Exemple de demande JSON

Type Mime : application/json

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

Par défaut, le serveur renvoie une seule prédiction, celle qui a la plus haute probabilité. Pour récupérer les k premières prédictions, vous pouvez définir k dans la configuration, comme suit :

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

Car BlazingText les accept paramètres content-type et doivent être égaux. Dans le cadre de la transformation par lots, ils doivent tous deux être application/jsonlines. S'ils diffèrent, le champ Accept est ignoré. Le format d'entrée se présente comme suit :

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}

Le format de sortie se présente comme suit :

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

Pour les modes supervisé (classification de texte) et non supervisé (Word2Vec), les fichiers binaires (*.bin) produits par peuvent BlazingText être consommés de manière croisée par FastText et vice versa. Vous pouvez utiliser des fichiers binaires produits BlazingText par FastText. De même, vous pouvez héberger les modèles binaires créés avec BlazingText FastText à l'aide de.

Voici un exemple d'utilisation d'un modèle généré BlazingText avec 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

Cependant, les binaires ne sont pris en charge que lors de l'entraînement sur CPU et GPU unique ; l'entraînement sur plusieurs GPU ne produira pas de binaires.

Recommandation d'instance EC2 pour l'algorithme BlazingText

skipgramModes For cbow et, BlazingText prend en charge les instances à processeur unique et à GPU unique. Ces deux modes prennent en charge l'apprentissage des plongements de sous-mots subwords. Afin d'optimiser la vitesse sans compromettre la précision, il est recommandé d'utiliser une instance ml.p3.2xlarge.

Pour batch_skipgram le mode, BlazingText prend en charge une ou plusieurs instances de processeur. Lorsque vous vous entraînez sur plusieurs instances, définissez la valeur du S3DataDistributionType champ de l'S3DataSourceobjet auquel vous passezFullyReplicated. CreateTrainingJob BlazingTextse charge de distribuer les données entre les machines.

En mode de classification textuelle supervisé, il est recommandé d'utiliser une instance C5 si l'ensemble de données d'entraînement a une taille inférieure à 2 Go. Pour les ensembles de données plus volumineux, utilisez une instance avec un seul GPU. BlazingText prend en charge les instances P2, P3, G4dn et G5 pour l'entraînement et l'inférence.

BlazingText Exemples de carnets

Pour un exemple de bloc-notes qui entraîne et déploie l' SageMaker BlazingText algorithme pour générer des vecteurs de mots, voir Apprendre à utiliser des représentations de mots Word2Vec. BlazingText Pour obtenir des instructions sur la création et l'accès aux instances de bloc-notes Jupyter dans lesquelles vous pouvez exécuter l'exemple SageMaker, consultez. Instances Amazon SageMaker Notebook Après avoir créé et ouvert une instance de bloc-notes, cliquez sur l'onglet SageMaker Exemples pour afficher la liste de tous les SageMaker exemples. Vous trouverez des exemples de blocs-notes de modélisation des rubriques qui utilisent les le Blazing Text à la section Présentation des algorithmes Amazon. Pour ouvrir un bloc-notes, choisissez l'onglet Use (Utiliser) correspondant, puis Create copy (Créer une copie).