本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Sequence-to-Sequence 算法
Amazon SageMaker Sequence to Sequence 是一种监督学习算法,其输入是一系列标记(例如文本、音频),生成的输出是另一个令牌序列。示例应用程序包括:机器翻译(从一种语言输入句子并预测该句子在另一种语言中的内容)、文本摘要(输入较长的单词字符串并预测较短的单词字符串作为摘要)、 speech-to-text(音频片段转换为以标记形式输出句子)。最近,这个领域中的问题已经通过深度神经网络成功地建模,这些网络显示比以前的方法有了显著的性能提升。Amazon SageMaker seq2seq 使用循环神经网络 (RNNs) 和卷积神经网络 (CNN) 模型,注意力作为编码器-解码器架构。
主题
算法的输入/输出接口 Sequence-to-Sequence
训练
SageMaker seq2seq 期望数据采用 recordio-protobuf 格式。但是,通常情况下,需要整数而不是浮点数的标记。
seq2seq 示例笔记本
在进行预处理后,可以调用该算法进行训练。该算法需要有三个通道:
-
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
: {attention_matrix
:true
}:返回特定输入序列的关注矩阵。 -
application/x-recordio-protobuf
:需要recordio-protobuf
格式的输入,返回recordio-protobuf format
格式的输出。内容和接受类型都应该是applications/x-recordio-protobuf
。对于此格式,源序列必须转换为整数列表以便进行后续的 protobuf 编码。建议使用此格式进行批量推理。
对于批量转换,推理支持JSON线条格式。Batch transform 需要以JSON行格式输入并以 Lin JSON es 格式返回输出。内容和接受类型都应该是 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 示例笔记本。
EC2 Sequence-to-Sequence算法的实例推荐
Amazon SageMaker seq2seq 算法仅支持GPU实例类型,并且只能在一台计算机上训练。但是,您可以将实例与多个实例一起使用GPUs。seq2seq 算法支持 P2、P3、g4dN 和 G5 实例系列。GPU
Sequence-to-Sequence 示例笔记本
有关演示如何使用 SageMaker 序列到序列算法训练英语-德语翻译模型的示例笔记本,请参阅使用 SageMaker Seq2Seq 的机器翻译英语-德语示例