本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
序列對序列演算法
Amazon SageMaker AI Sequence to Sequence 是監督式學習演算法,其中輸入是一系列字符 (例如文字、音訊),而產生的輸出是另一個序列字符。範例應用程式包括:機器轉譯 (從一種語言輸入句子,並預測該句子在另一種語言的表達方式)、文字摘要 (輸入較長的字串並預測較短的摘要文字)、語音轉文字 (在符記中轉換為輸出句子的自動剪輯片段)。最近在此網域中的問題已成功使用深度神經網路來建立模型,展現較過去的方法更顯著的效能提升成果。Amazon SageMaker AI seq2seq 使用遞歸神經網路 (RNNs) 和卷積神經網路 (CNN) 模型,並將注意力視為編碼器解碼器架構。
序列對序列演算法的輸入/輸出介面
訓練
SageMaker AI seq2seq 預期資料為 RecordIO-Protobuf 格式。但是,權杖則應為整數,不應為平常使用的浮點數。
將權杖化文字檔案中的資料轉換到 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 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"}
如需如何序列化和還原序列化輸入及輸出至特定格式,以用於推論的額外詳細資訊,請參閱序列對序列範例筆記本。
序列對序列演算法的 EC2 執行個體建議事項
Amazon SageMaker AI seq2seq 演算法僅支援 GPU 執行個體類型,且只能在單一機器上進行訓練。不過,您可以將執行個體與多個 GPU 搭配使用。seq2seq 演算法可支援 P2、P3、G4dn 和 G5 GPU 執行個體系列。
序列對序列範例筆記本
如需示範如何使用 SageMaker AI Sequence to Sequence 演算法訓練英文與德文翻譯模型的範例筆記本,請參閱使用 SageMaker AI Seq2Seq 的機器翻譯英文與德文範例