

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 序列對序列演算法
<a name="seq-2-seq"></a>

Amazon SageMaker AI 序列對序列是一種監督式學習演算法，其中輸入為權杖序列 (例如文字、音訊)，而產生的輸出則為另一種權杖序列。範例應用程式包括：機器轉譯 (從一種語言輸入句子，並預測該句子在另一種語言的表達方式)、文字摘要 (輸入較長的字串並預測較短的摘要文字)、語音轉文字 (在符記中轉換為輸出句子的自動剪輯片段)。最近在此網域中的問題已成功使用深度神經網路來建立模型，展現較過去的方法更顯著的效能提升成果。Amazon SageMaker AI seq2seq 使用遞迴神經網絡 (RNN) 與卷積神經網絡 (CNN) 模型，且專注於編碼器-解碼器結構。

**Topics**
+ [序列對序列演算法的輸入/輸出介面](#s2s-inputoutput)
+ [序列對序列演算法的 EC2 執行個體建議事項](#s2s-instances)
+ [序列對序列範例筆記本](#seq-2-seq-sample-notebooks)
+ [序列對序列的運作方式](seq-2-seq-howitworks.md)
+ [序列對序列超參數](seq-2-seq-hyperparameters.md)
+ [調校序列對序列模型](seq-2-seq-tuning.md)

## 序列對序列演算法的輸入/輸出介面
<a name="s2s-inputoutput"></a>

**訓練**

SageMaker AI seq2seq 接受 RecordIO-Protobuf 格式的資料。但是，權杖則應為整數，不應為平常使用的浮點數。

將權杖化文字檔案中的資料轉換到 protobuf 格式的指令碼已隨附於 [seq2seq 範例筆記本中](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/seq2seq_translation_en-de/SageMaker-Seq2Seq-Translation-English-German.html)。一般而言，它會將資料封裝為 32 位元的整數張量 (tensor) 並產生指標計算與推論所需的必要字彙檔案。

預先處理完成後，便可以調用演算法進行訓練。演算法預期會接受三個通道：
+ `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 Lines 格式。批次轉換預期接收 JSON Lines 格式的輸入，並會傳回 JSON Lines 格式的輸出。內容與接受類型應為 `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"}
```

如需如何序列化和還原序列化輸入及輸出至特定格式，以用於推論的額外詳細資訊，請參閱[序列對序列範例筆記本](#seq-2-seq-sample-notebooks)。

## 序列對序列演算法的 EC2 執行個體建議事項
<a name="s2s-instances"></a>

Amazon SageMaker AI seq2seq 演算法只在 GPU 執行個體類型上進行支援，而且只能在單一機器上進行訓練。不過，您可以將執行個體與多個 GPU 搭配使用。seq2seq 演算法可支援 P2、P3、G4dn 和 G5 GPU 執行個體系列。

## 序列對序列範例筆記本
<a name="seq-2-seq-sample-notebooks"></a>

如需示範如何使用 SageMaker AI 序列對序列演算法來訓練英文/德文翻譯模型的範例筆記本，請參閱[使用 SageMaker AI Seq2Seq 的英文/德文機器翻譯範例](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/seq2seq_translation_en-de/SageMaker-Seq2Seq-Translation-English-German.html)。如需如何建立並存取 Jupyter 筆記本執行個體以用來執行 SageMaker AI 中範例的指示，請參閱[Amazon SageMaker 筆記本執行個體](nbi.md)。在建立並開啟筆記本執行個體後，請選取 **SageMaker AI 範例**索引標籤以查看所有 SageMaker AI 範例的清單。使用 NTM 演算法模組化範例筆記本的主題位於 **Amazon 演算法簡介**一節。若要開啟筆記本，請按一下其**使用**標籤，然後選取**建立複本**。