Sequence-to-Sequence-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.

Sequence-to-Sequence-Algorithmus

Amazon SageMaker Sequence-to-Sequence ist ein überwachter Lernalgorithmus, der als Eingabe eine Reihe von Token (z. B. Text, Audio) verwendet und als Ausgabe eine weitere Token-Sequenz generiert. Beispielanwendungen sind u. a.: Maschinenübersetzung (einen Satz in einer Sprache eingeben und vorhersagen, wie dieser Satz in einer anderen Sprache lautet), Textzusammenfassung (längere Zeichenfolge aus Wörtern eingeben und eine kürzere Zeichenfolge vorhersagen, die als Zusammenfassung dient) und Speech-to-Text (Audioclips werden in Token-Ausgabesätze konvertiert). Kürzlich konnten Probleme in diesem Bereich erfolgreich mit tiefen neuronalen Netzwerken gelöst werden, die eine erhebliche Leistungssteigerung im Vergleich zu früheren Methoden bieten. Amazon SageMaker seq2seq verwendet Modelle mit rekurrenten (rückgekoppelten) neuronalen Netzwerken (RNNs) und Convolutional Neural Networks (CNNs) mit Attention-Mechanismen in Encoder-Decoder-Architekturen.

E/A-Schnittstelle für den Sequence-to-Sequence-Algorithmus

Schulung

SageMaker seq2seq erwartet Daten im RecordIO-Protobuf-Format. Die Token werden jedoch als Ganzzahlen und nicht als Gleitkommazahlen erwartet, wie es normalerweise der Fall ist.

Ein Skript zum Konvertieren von Daten aus Token-Textdateien in das "protobuf"-Format ist im Beispiel-Notebook für seq2seq enthalten. Das Skript packt die Daten in Tensoren (32 Bit, Ganzzahl) und generiert die für Metrikberechnung und Inferenz erforderlichen Vokabeldateien.

Nachdem die Vorverarbeitung abgeschlossen ist, kann der Algorithmus für Schulungen aufgerufen werden. Der Algorithmus erwartet drei Kanäle:

  • train: Dieser Kanal enthält die Schulungsdaten (z. B. die vom Vorverarbeitungsskript generierte train.rec-Datei).

  • validation: Dieser Kanal enthält die Validierungsdaten (z. B. die vom Vorverarbeitungsskript generierte val.rec-Datei).

  • vocab: Dieser Kanal enthält die beiden Vokabeldateien (vocab.src.json und vocab.trg.json).

Falls der Algorithmus in einem dieser drei Kanäle keine Daten findet, verläuft die Schulung fehlerhaft.

Inferenz

Für gehostete Endpunkte werden für die Inferenz zwei Datenformate unterstützt. Für die Inferenzausführung mit durch Leerzeichen getrennte Text-Token verwenden Sie das Format application/json. Andernfalls verwenden Sie das Format recordio-protobuf, um die codierten Ganzzahldaten zu nutzen. Beide Modi unterstützen das Stapeln von Eingabedaten.application/jsonMit dem Format können Sie auch die Attention-Matrix grafisch darstellen.

  • application/json: Für Ein- und Ausgabe wird das JSON-Format verwendet. Sowohl die Inhalts- als auch die Annahmetypen sollten das Format application/json aufweisen. Jede Sequenz muss eine Zeichenfolge mit durch Leerzeichen getrennte Token sein. Dieses Format wird empfohlen, wenn im Stapel nur eine geringe Anzahl an Quellsequenzen vorhanden ist. Außerdem werden folgende zusätzliche Konfigurationsoptionen unterstützt:

    configuration: {attention_matrix: true}: Gibt die Attention-Matrix für eine bestimmte Eingabesequenz zurück.

  • application/x-recordio-protobuf: Die Eingabe muss im recordio-protobuf-Format erfolgen, für die Ausgabe wird ebenfalls das recordio-protobuf format-Format verwendet. Sowohl die Inhalts- als auch die Annahmetypen sollten das Format applications/x-recordio-protobuf aufweisen. Bei diesem Format müssen die Quellsequenzen für die nachfolgende "protobuf"-Codierung in eine Liste mit Ganzzahlen konvertiert werden. Dieses Format wird für die Masseninferenz empfohlen.

Für die Stapeltransformation unterstützt die Inferenz das JSON Lines-Format. Für Stapeltransformationen wird für die Eingabe das JSON Lines-Format verwendet und die Ausgabe wird ebenfalls im JSON Lines-Format zurückgegeben. Sowohl die Inhalts- als auch die Annahmetypen sollten das Format application/jsonlines aufweisen. Das Format für die Eingabe lautet folgendermaßen:

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

Das Format für die Antwort lautet folgendermaßen:

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

Weitere Informationen zur Serialisierung und Deserialisierung der Ein- und Ausgaben in bestimmte Formate für Inferenzzwecke finden Sie unter Sequence-to-Sequence-Beispiel-Notebooks.

EC2-Instance-Empfehlung für den Sequence-to-Sequence-Algorithmus

Derzeit wird Amazon SageMaker seq2seq nur für GPU-Instance-Typen unterstützt und ist nur für die Schulung auf einem einzelnen Computer eingerichtet. Es wird jedoch auch Unterstützung für mehrere GPUs angeboten.

Sequence-to-Sequence-Beispiel-Notebooks

Ein Beispiel-Notebook, das zeigt, wie Sie mit dem SageMaker Sequence-to-Sequence-Algorithmus ein Übersetzungsmodell Englisch-Deutsch schulen, finden Sie unter.Maschinelle Übersetzung Englisch-Deutsch Beispiel mit SageMaker Seq2Seqaus. Anweisungen zum Erstellen von und Zugreifen auf Jupyter-Notebook-Instances, die Sie verwenden können, um das Beispiel in SageMaker auszuführen, finden Sie unter.Verwenden von Amazon SageMaker Notebook-Instancesaus. Sobald Sie eine Notebook-Instance erstellt und geöffnet haben, wählen Sie die RegisterkarteSageMaker Beispielefinden Sie eine Liste aller SageMaker Beispiele. Die Beispiel-Notebooks zur Themenmodellierung unter Verwendung der NTM-Algorithmen finden Sie im Abschnitt Einführung in die Amazon-Algorithmen. Zum Öffnen eines Notebooks klicken Sie auf die Registerkarte Use (Verwenden) und wählen Sie Create copy (Kopie erstellen) aus.