翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
推論の一般的なデータ形式
Amazon SageMaker アルゴリズムは、オンライン予測とミニバッチ予測の取得に使用されるHTTPペイロードに対して、いくつかの異なるMIMEタイプを受け入れて生成します。推論を実行する前に、複数の AWS サービスを使用してレコードを変換または前処理できます。少なくとも、以下のデータを変換する必要があります。
-
推論リクエストのシリアル化 (ユーザーによる処理)
-
推論リクエストの逆シリアル化 (アルゴリズムによる処理)
-
推論レスポンスのシリアル化 (アルゴリズムによる処理)
-
推論レスポンスの逆シリアル化 (ユーザーによる処理)
トピック
推論リクエストのシリアル化のためにデータを変換する
Amazon SageMaker アルゴリズム推論リクエストのコンテンツタイプオプションには、text/csv
、application/json
、および が含まれますapplication/x-recordio-protobuf
。これらのすべてのタイプをサポートしていないアルゴリズムは、他のタイプをサポートできます。XGBoost例えば、 は、text/csv
このリストからのみ をサポートしますが、 もサポートしますtext/libsvm
。
text/csv
の場合、invoke_endpoint
の Body 引数の値は、各機能の値をカンマで区切った文字列である必要があります。例えば、4 つの機能があるモデルのレコードは 1.5,16.0,14,23.0
のようになります。トレーニングデータに対して実行された変換はすべて、推論を取得する前にデータに実行される必要があります。機能の順序は重要であるため、変更せずそのままにしておく必要があります。
application/json
はより柔軟で、デベロッパーがアプリケーションで使用できる形式が複数用意されています。大まかに言うと、 では JavaScript、ペイロードは次のようになります。
let request = { // Instances might contain multiple rows that predictions are sought for. "instances": [ { // Request and algorithm specific inference parameters. "configuration": {}, // Data in the specific format required by the algorithm. "data": { "<field name>": dataElement } } ] }
dataElement
を指定するために、次のオプションがあります。
同等のプロトコルバッファ
// Has the same format as the protocol buffers implementation described for training. let dataElement = { "keys": [], "values": [], "shape": [] }
単純な数値ベクトル
// An array containing numeric values is treated as an instance containing a // single dense vector. let dataElement = [1.5, 16.0, 14.0, 23.0] // It will be converted to the following representation by the SDK. let converted = { "features": { "values": dataElement } }
複数数のレコード:
let request = { "instances": [ // First instance. { "features": [ 1.5, 16.0, 14.0, 23.0 ] }, // Second instance. { "features": [ -2.0, 100.2, 15.2, 9.2 ] } ] }
推論レスポンスの逆シリアル化のためにデータを変換する
Amazon SageMaker アルゴリズムは複数のレイアウトJSONで返されます。高いレベルで、構造は次のようになります。
let response = { "predictions": [{ // Fields in the response object are defined on a per algorithm-basis. }] }
予測に含まれるフィールドはアルゴリズムで異なります。以下は、k-means アルゴリズムの出力例です。
単一レコード推論
let response = { "predictions": [{ "closest_cluster": 5, "distance_to_cluster": 36.5 }] }
複数レコード推論
let response = { "predictions": [ // First instance prediction. { "closest_cluster": 5, "distance_to_cluster": 36.5 }, // Second instance prediction. { "closest_cluster": 2, "distance_to_cluster": 90.3 } ] }
protobuf 入力を使用した複数レコード推論
{ "features": [], "label": { "closest_cluster": { "values": [ 5.0 ] // e.g. the closest centroid/cluster was 1.0 }, "distance_to_cluster": { "values": [ 36.5 ] } }, "uid": "abc123", "metadata": "{ "created_at": '2017-06-03' }" }
SageMaker アルゴリズムは、レコードごとのレスポンスコンテンツが JSONLINES 形式と同じである JSON形式もサポートします。マルチレコード構造は、改行文字で区切られたレコードごとのレスポンスオブジェクトのコレクションです。2 つの入力データポイントの組み込みKMeansアルゴリズムのレスポンスコンテンツは次のとおりです。
{"distance_to_cluster": 23.40593910217285, "closest_cluster": 0.0} {"distance_to_cluster": 27.250282287597656, "closest_cluster": 0.0}
バッチ変換の実行中は、CreateTransformJobRequest
の Accept
フィールドを application/jsonlines
に設定して jsonlines
レスポンスタイプを使用することをお勧めします。
すべてのアルゴリズムの一般的なリクエスト形式
ほとんどのアルゴリズムは、次の推論リクエスト形式の多くを使用します。
JSON リクエスト形式
コンテンツタイプ: application/JSON
高密度形式
let request = { "instances": [ { "features": [1.5, 16.0, 14.0, 23.0] } ] } let request = { "instances": [ { "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } } } ] }
疎形式
{ "instances": [ {"data": {"features": { "keys": [26, 182, 232, 243, 431], "shape": [2000], "values": [1, 1, 1, 4, 1] } } }, {"data": {"features": { "keys": [0, 182, 232, 243, 431], "shape": [2000], "values": [13, 1, 1, 4, 1] } } }, ] }
JSONLINES リクエスト形式
コンテンツタイプ: application/JSONLINES
高密度形式
高密度形式の単一レコードは、次のいずれかで表すことができます。
{ "features": [1.5, 16.0, 14.0, 23.0] }
または
{ "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } }
疎形式
疎形式の単一レコードは、次のように表されます。
{"data": {"features": { "keys": [26, 182, 232, 243, 431], "shape": [2000], "values": [1, 1, 1, 4, 1] } } }
複数のレコードは、改行文字で区切られた単一レコード表現のコレクションとして表されます。
{"data": {"features": { "keys": [0, 1, 3], "shape": [4], "values": [1, 4, 1] } } } { "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } } { "features": [1.5, 16.0, 14.0, 23.0] }
CSV リクエスト形式
コンテンツタイプ: text/CSV; label_size=0
注記
CSV サポートは、因数化マシンでは使用できません。
RECORDIO リクエスト形式
コンテンツタイプ: application/x-recordio-protobuf
組み込みアルゴリズムでバッチ変換を使用する
バッチ変換の実行中にアルゴリズムでサポートされている場合はJSON、 の代わりに JSONLINESレスポンスタイプを使用することをお勧めします。これを行うには、 の Accept
フィールドCreateTransformJobRequest
を に設定しますapplication/jsonlines
。
変換ジョブを作成するときは、入力データの ContentType
に基づいて を設定SplitType
する必要があります。同様に、CreateTransformJobRequest
の Accept
フィールドに応じて AssembleWith
を設定する必要があります。次の表を使用して、これらのフィールドを設定します。
ContentType | 推奨 SplitType |
---|---|
application/x-recordio-protobuf |
RecordIO |
text/csv |
Line |
application/jsonlines |
Line |
application/json |
None |
application/x-image |
None |
image/* |
None |
Accept | 推奨 AssembleWith |
---|---|
application/x-recordio-protobuf |
None |
application/json |
None |
application/jsonlines |
Line |
特定のアルゴリズムのレスポンス形式の詳細については、以下を参照してください。