

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Sequence to Sequence アルゴリズム
<a name="seq-2-seq"></a>

Amazon SageMaker AI Sequence to Sequence は、入力が一連のトークン (テキスト、オーディオなど) であり、生成される出力が別の一連のトークンである、教師あり学習アルゴリズムです。アプリケーションの例として、機械学習 (1 つの言語で入力した文が別の言語でどうなるかを予測する)、テキスト要約 (入力した長い文字列のより短い文字列での要約を予測する)、音声認識 (トークンの出力文に変換したオーディオクリップ) が含まれます。近年、このドメインの問題はディープニューラルネットワークによってモデル化に成功し、以前の方式を大幅に超えるパフォーマンスを示しています。Amazon SageMaker AI seq2seq は再帰型ニューラルネットワーク (RNN) モデルと畳み込みニューラルネットワーク (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 ビットの整数テンソルにパッキングし、メトリクスの計算や推論に必要な語彙ファイルを生成します。

前処理の完了後、アルゴリズムをトレーニングのために呼び出すことができます。アルゴリズムは以下の 3 つのチャネルを想定します。
+ `train`: トレーニングデータ (事前処理スクリプトによって生成される `train.rec` ファイルなど) が含まれている必要があります。
+ `validation`: 検証データ (事前処理スクリプトによって生成される `val.rec` ファイルなど) が含まれている必要があります。
+ `vocab`: 2 つの語彙ファイル (`vocab.src.json` と `vocab.trg.json`) が含まれている必要があります 

アルゴリズムによってこれらの 3 つのチャネルでデータが見つからなかった場合、トレーニングの結果はエラーになります。

**推論**

ホストされるエンドポイントの場合、推論は 2 つのデータ形式をサポートします。スペース区切りのテキストトークンを使用して推論を実行するには、`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` である必要があります。この形式では、後続のプロトコルバッファーへのエンコードのために、ソースシーケンスを整数のリストに変換する必要があります。この形式は、一括での推論に推奨されます。

バッチ変換の場合、推論は 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"}
```

推論のために入力と出力を特定の形式にシリアル化および逆シリアル化する方法の詳細については、[Sequence to Sequence サンプルノートブック](#seq-2-seq-sample-notebooks)を参照してください。

## Sequence to Sequence アルゴリズムの EC2 インスタンスに関する推奨事項
<a name="s2s-instances"></a>

Amazon SageMaker AI seq2seq アルゴリズムは、GPU インスタンスタイプでのみサポートし、単一のマシンでのトレーニングできます。ただし、複数の GPU を備えたインスタンスを使用することができます。seq2seq アルゴリズムは P2、P3、G4dn、G5 GPU インスタンスファミリーをサポートします。

## Sequence to Sequence サンプルノートブック
<a name="seq-2-seq-sample-notebooks"></a>

SageMaker AI Sequence to Sequence アルゴリズムを使用して英語 - ドイツ語翻訳モデルをトレーニングする方法を示すサンプルノートブックについては、「[Machine Translation English-German Example Using SageMaker AI 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 アルゴリズムを使用したトピックモデリングのサンプルノートブックは、[**Introduction to Amazon algorithm (Amazon アルゴリズムの概要)**] セクションにあります。ノートブックを開くには、その [**Use (使用)**] タブをクリックして [**Create copy (コピーを作成)**] を選択します。