Sequence to Sequence アルゴリズム - Amazon SageMaker

Sequence to Sequence アルゴリズム

アマゾン SageMaker Sequence to Sequence は、入力が一連のトークン (テキスト、オーディオなど) であり、出力が一連のトークン (テキスト、オーディオなど) であり、出力が一連のトークン (テキスト、オーディオなど) であり、出力が一連のトークン 応用例としては、機械翻訳(ある言語から文章を入力し、その文が別の言語でどうなるかを予測する)、テキスト要約(長い単語の文字列を入力し、短い単語の文字列を予測して要約する)などがあります。 speech-to-text (オーディオクリップはトークンで出力センテンスに変換されます)。近年、このドメインの問題はディープニューラルネットワークによってモデル化に成功し、以前の方式を大幅に超えるパフォーマンスを示しています。アマゾン SageMaker seq2seq は再帰型ニューラルネットワーク (RNN) モデルと畳み込みニューラルネットワーク (RNN) モデルにアテンションを組み合わせたエンコーダーアーキテクチャを使用します。

Sequence to Sequence アルゴリズムの入出力インターフェイス

トレーニング

SageMaker seq2seq はRecordIO-Protobuf 形式のデータを想定します。ただし、通常の場合と同様に、トークンは浮動小数点ではなく整数であることが想定されます。

seq2seq サンプルノートブックに、トークン化されたテキストファイルからのデータを protobuf 形式に変換するスクリプトが含まれています。一般的には、データを 32 ビットの整数テンソルにパッキングし、メトリクスの計算や推論に必要な語彙ファイルを生成します。

前処理の完了後、アルゴリズムをトレーニングのために呼び出すことができます。アルゴリズムは以下の 3 つのチャネルを想定します。

  • train: トレーニングデータ (事前処理スクリプトによって生成される train.rec ファイルなど) が含まれている必要があります。

  • validation: 検証データ (事前処理スクリプトによって生成される val.rec ファイルなど) が含まれている必要があります。

  • vocab: 2 つの語彙ファイル (vocab.src.jsonvocab.trg.json) が含まれている必要があります

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

推論

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

バッチ変換の場合、推論は 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 サンプルノートブックを参照してください。

Sequence to Sequence アルゴリズムの EC2 インスタンスに関する推奨事項

アマゾン SageMaker seq2seq アルゴリズムは、GPU インスタンスタイプでのみサポートされており、1 つのマシンでのトレーニングのために設定されます。ただし、複数の GPU を持つインスタンスは使用が可能です。seq2seq アルゴリズムは、P2、P3、G4Dn、および G5 GPU インスタンスファミリーをサポートします。

Sequence to Sequence サンプルノートブック

使用方法を示すサンプルノートブックについては、 SageMaker 英語とドイツ語の翻訳モデルをトレーニングするためのシーケンス間アルゴリズム。英語とドイツ語の機械翻訳の使用例 SageMaker Seq2Seq。でサンプルを実行するために使用できる Jupyter ノートブックインスタンスを作成してアクセスする方法の詳細については、 SageMaker、「」を参照してくださいAmazon SageMaker ノートブックインスタンスを使用する。ノートブックインスタンスを作成して開いたら、SageMaker例タブをクリックして、すべてのリストを表示します SageMaker サンプル。NTM アルゴリズムを使用したトピックモデリングのサンプルノートブックは、[Introduction to Amazon algorithm (Amazon アルゴリズムの概要)] セクションにあります。ノートブックを開くには、その [Use (使用)] タブをクリックして [Create copy (コピーを作成)] を選択します。