Algorithme seq2seq (Sequence-to-Sequence) - 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.

Algorithme seq2seq (Sequence-to-Sequence)

Amazon SageMaker Sequence to Sequence est un algorithme d'apprentissage supervisé dans lequel l'entrée est une séquence de jetons (par exemple, du texte, du son) et la sortie générée est une autre séquence de jetons. Parmi les applications, citons : la traduction automatique (saisissez une phrase d'une langue et prédisez ce que sera cette phrase dans une autre langue), la synthèse de texte (entrez une chaîne de mots plus longue et prédisez une chaîne de mots plus courte qui constitue un résumé), speech-to-text (clips audio convertis en phrases de sortie sous forme de jetons). Récemment, les problèmes dans ce domaine ont été modélisés avec succès grâce aux réseaux neuronaux profonds qui offrent une amélioration significative des performances par rapport aux méthodologies précédentes. Amazon SageMaker seq2seq utilise des modèles de réseaux neuronaux récurrents (RNN) et de réseaux neuronaux convolutifs (CNN) en accordant une attention particulière aux architectures d'encodeurs-décodeurs.

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

Entrainement

SageMaker seq2seq attend des données au format Recordio-ProtoBuf. Cependant, les jetons doivent être des nombres entiers, et non des nombres flottants, comme c'est habituellement le cas.

L'exemple de bloc-notes seq2seq contient un script permettant de convertir les fichiers texte tokenisés au format protobuf. En règle générale, l'algorithme empaquette les données au sein de tenseurs (entiers 32 bits) et génère les fichiers de vocabulaire nécessaires, requis pour le calcul des métriques et pour les inférences.

Une fois le prétraitement terminé, l'algorithme peut être appelée pour la formation. L'algorithme attend trois canaux :

  • train : ce canal doit contenir les données de formation (le fichier train.rec généré par le script de prétraitement, par exemple).

  • validation : ce canal doit contenir les données de validation (le fichier val.rec généré par le script de prétraitement, par exemple).

  • vocab : doit contenir deux fichiers de vocabulaire (vocab.src.json et vocab.trg.json)

Si l'algorithme ne trouve pas les données dans l'un de ces trois canaux, la formation se traduit par une erreur.

Inférence

Pour les points de terminaison hébergés, l'inférence prend en charge deux formats de données. Pour effectuer l'inférence en utilisant les jetons de texte séparés par un espace, utilisez le format application/json. Sinon, choisissez le format recordio-protobuf pour utiliser les données codées en nombres entiers. Les deux modes prennent en charge le traitement par lots des données d'entrée. Le format application/json vous permet également de visualiser la matrice d'attention.

  • application/json : attend l'entrée au format JSON et renvoie la sortie au format JSON. Les types du contenu et de l'acceptation doivent être tous les deux au format application/json. Chaque séquence doit se présenter sous forme d'une chaîne avec des jetons séparés par un espace. Ce format est recommandé lorsque le nombre de séquences source du lot est réduit. Il prend également en charge les options de configuration supplémentaires suivantes :

    configuration : {attention_matrix : true} : renvoie la matrice d'attention de la séquence d'entrée.

  • application/x-recordio-protobuf : attend l'entrée au format recordio-protobuf et renvoie la sortie au format recordio-protobuf format. Les types du contenu et de l'acceptation doivent être tous les deux au format applications/x-recordio-protobuf. En ce qui concerne ce format, les séquences source doivent être converties en une liste d'entiers pour les codages protobuf ultérieurs. Ce format est recommandé pour les inférences en bloc.

Pour les transformations par lots, l'inférence prend en charge le format JSON Lines. La transformation par lots attend l'entrée au format JSON Lines et renvoie la sortie au format JSON Lines. Les types du contenu et de l'acceptation doivent être tous les deux au format application/jsonlines. Le format d'entrée est le suivant :

content-type: application/jsonlines {"source": "source_sequence_0"} {"source": "source_sequence_1"}

Le format de la réponse est le suivant :

accept: application/jsonlines {"target": "predicted_sequence_0"} {"target": "predicted_sequence_1"}

Pour plus d'informations sur la sérialisation et la désérialisation des entrées et des sorties en formats spécifiques pour l'inférence, consultez Exemples de blocs-notes seq2seq.

Recommandation relative aux instances EC2 pour l'algorithme seq2seq

L'algorithme Amazon SageMaker seq2seq ne prend en charge que les types d'instances GPU et ne peut s'entraîner que sur une seule machine. Vous pouvez toutefois utiliser des instances avec plusieurs GPU. L'algorithme seq2seq prend en charge les familles d'instances de GPU P2, P3, G4dn et G5.

Exemples de blocs-notes seq2seq

Pour un exemple de bloc-notes expliquant comment utiliser l'algorithme SageMaker Sequence to Sequence pour entraîner un modèle de traduction anglais-allemand, voir Exemple de traduction automatique anglais-allemand à l'aide SageMaker de Seq2Seq. Pour savoir comment créer et accéder à des instances de bloc-notes Jupyter dans lesquelles vous pouvez exécuter l'exemple SageMaker, consultez. Instances Amazon SageMaker Notebook Une fois que vous avez créé une instance de bloc-notes et que vous l'avez ouverte, sélectionnez l'onglet SageMakerExemples pour afficher la liste de tous les SageMaker exemples. Les exemples de blocs-notes de modélisation de rubrique utilisant les algorithmes NTM se trouvent dans la section Introduction to Amazon algorithms (Présentation des algorithmes Amazon). Pour ouvrir un bloc-notes, cliquez sur son onglet Use (Utiliser) et sélectionnez Create copy (Créer une copie).