

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Sequence-to-Sequence 算法
<a name="seq-2-seq"></a>

Amazon SageMaker AI Sequence to Sequence 是一种监督学习算法，其输入是一系列标记（例如文本、音频），生成的输出是另一个令牌序列。示例应用程序包括：机器翻译（从一种语言输入句子并预测该句子在另一种语言中的内容）、文本摘要（输入较长的单词字符串并预测较短的单词字符串作为摘要）、 speech-to-text（音频片段转换为以标记形式输出句子）。最近，这个领域中的问题已经通过深度神经网络成功地建模，这些网络显示比以前的方法有了显著的性能提升。Amazon SageMaker AI seq2seq 使用循环神经网络 (RNNs) 和卷积神经网络 (CNN) 模型，注意力作为编码器-解码器架构。

**Topics**
+ [算法的输入/输出接口 Sequence-to-Sequence](#s2s-inputoutput)
+ [该 Sequence-to-Sequence算法的 EC2 实例推荐](#s2s-instances)
+ [Sequence-to-Sequence 示例笔记本](#seq-2-seq-sample-notebooks)
+ [Sequence-to-Sequence 的工作原理](seq-2-seq-howitworks.md)
+ [Sequence-to-Sequence 超参数](seq-2-seq-hyperparameters.md)
+ [调整 Sequence-to-Sequence模型](seq-2-seq-tuning.md)

## 算法的输入/输出接口 Sequence-to-Sequence
<a name="s2s-inputoutput"></a>

**训练**

SageMaker AI seq2seq 期望数据采用 recordio-protobuf 格式。但是，通常情况下，需要整数而不是浮点数的标记。

[seq2seq 示例笔记本](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/seq2seq_translation_en-de/SageMaker-Seq2Seq-Translation-English-German.html)中包括一个将数据从标记化文本文件转换为 protobuf 格式的脚本。通常，它将数据打包成 32 位整数张量，并生成必要的词汇表文件，这些文件是指标计算和推理所需的。

在进行预处理后，可以调用该算法进行训练。该算法需要有三个通道：
+ `train`：它应包含训练数据 (例如，预处理脚本生成的 `train.rec` 文件)。
+ `validation`：它应包含验证数据 (例如，预处理脚本生成的 `val.rec` 文件)。
+ `vocab`：它应包含两个词汇表文件（`vocab.src.json` 和 `vocab.trg.json`） 

如果算法在这三个通道中都找不到数据，则训练会导致错误。

**推理**

对于托管终端节点，推理支持两种数据格式。要使用空格分隔的文本标记执行推理，请使用 `application/json` 格式。否则，使用 `recordio-protobuf` 格式，以便使用整数编码的数据。这两种模型均支持对输入数据进行批处理。`application/json` 格式还允许您可视化关注矩阵。
+ `application/json`：需要 JSON 格式的输入，返回 JSON 格式的输出。内容和接受类型都应该是 `application/json`。每个序列都将是一个带有空格分隔标记的字符串。当批中的源序列数较小时，建议使用此格式。它还支持以下附加配置选项：

  `configuration`: \$1`attention_matrix`: `true`\$1：返回特定输入序列的关注矩阵。
+ `application/x-recordio-protobuf`：需要 `recordio-protobuf` 格式的输入，返回 `recordio-protobuf format` 格式的输出。内容和接受类型都应该是 `applications/x-recordio-protobuf`。对于此格式，源序列必须转换为整数列表以便进行后续的 protobuf 编码。建议使用此格式进行批量推理。

对于批量转换，推理支持 JSON 行格式。批量转换需要 JSON 行格式的输入，返回 JSON 行格式的输出。内容和接受类型都应该是 `application/jsonlines`。输入的格式如下所示：

```
content-type: application/jsonlines

{"source": "source_sequence_0"}
{"source": "source_sequence_1"}
```

响应的格式如下：

```
accept: application/jsonlines

{"target": "predicted_sequence_0"}
{"target": "predicted_sequence_1"}
```

有关如何将输入和输出序列化和反序列化为特定格式以进行推理的其他详细信息，请参阅[Sequence-to-Sequence 示例笔记本](#seq-2-seq-sample-notebooks)。

## 该 Sequence-to-Sequence算法的 EC2 实例推荐
<a name="s2s-instances"></a>

Amazon SageMaker AI seq2seq 算法仅支持 GPU 实例类型，并且只能在一台计算机上训练。但是，您可以将实例与多个实例一起使用 GPUs。seq2seq 算法支持 P2、P3、G4dn 和 G5 GPU 实例系列。

## Sequence-to-Sequence 示例笔记本
<a name="seq-2-seq-sample-notebooks"></a>

有关演示如何使用 SageMaker AI 序列转序列算法训练英语-德语翻译模型的示例笔记本，请参阅[使用 A SageMaker I Seq2Seq 的机器翻译英语-德语示例](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/seq2seq_translation_en-de/SageMaker-Seq2Seq-Translation-English-German.html)。有关如何创建和访问可用于在 SageMaker AI 中运行示例的 Jupyter 笔记本实例的说明，请参阅。[Amazon SageMaker 笔记本实例](nbi.md)创建并打开笔记本实例后，选择 “**SageMaker AI 示例**” 选项卡以查看所有 SageMaker AI 示例的列表。使用 NTM 算法的主题建模示例笔记本位于 **Amazon 算法简介**部分中。要打开笔记本，请单击**使用** 选项卡，然后选择**创建副本**。