Algorithme seq2seq (Sequence-to-Sequence)
L'algorithme seq2seq d'Amazon SageMaker est un algorithme d'apprentissage supervisé où l'entrée est constituée d'une séquence de jetons (texte ou données audio, par exemple) et la sortie générée une autre séquence de jetons. Voici quelques exemples d'applications : traduction automatique (entrée d'une phrase dans une langue et prédiction de ce que sera la phrase dans une autre langue), résumé de texte (entrée d'une longue chaîne de mots et prédiction d'une chaîne plus courte correspondant au résumé), synthèse vocale (clips audio convertis en phrases de sortie dans les 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 les modèles des réseaux neuronaux récurrents (RNN, Recurrent Neural Networks) et des réseaux neuronaux convolutifs (CNN, Convolutional Neural Network ), avec une attention toute particulière pour les architectures encodeur/décodeur.
Rubriques
Interface d'entrée/sortie pour l'algorithme seq2seq
Entrainement
SageMaker seq2seq attend les données au format Record-IO 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
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 fichiertrain.rec
généré par le script de prétraitement, par exemple). -
validation
: ce canal doit contenir les données de validation (le fichierval.rec
généré par le script de prétraitement, par exemple). -
vocab
: doit contenir deux fichiers de vocabulaire (vocab.src.json
etvocab.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 formatapplication/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 formatrecordio-protobuf
et renvoie la sortie au formatrecordio-protobuf format
. Les types du contenu et de l'acceptation doivent être tous les deux au formatapplications/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 seq2seq d'Amazon SageMaker est uniquement pris en charge sur les types d'instance de GPU et permet uniquement l'entraînement 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
Afin d'obtenir un exemple de bloc-notes qui montre comment utiliser l'algorithme seq2seq de SageMaker pour entraîner un modèle de traduction anglais-allemand, consultez Machine Translation English-German Example Using SageMaker Seq2Seq