翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
DeepAR 推論の形式
次のページでは、Amazon SageMaker AI DeepAR モデルを使用した推論のリクエストとレスポンスの形式について説明します。
DeepAR JSON リクエストの形式
モデルのエンドポイントを使用して、トレーニング済みモデルのクエリを実行します。エンドポイントは次の JSON リクエストの形式になっています。
このリクエストでは、instances
フィールドはモデルによって予測されるべき時系列に対応しています。
モデルがカテゴリを使用してトレーニングされた場合は、インスタンスごとに cat
を指定する必要があります。モデルが cat
フィールドなしでトレーニングされた場合は、省略する必要があります。
モデルがカスタム特徴時系列 (dynamic_feat
) を使用してトレーニングされた場合は、各インスタンスに同数の dynamic_feat
値を指定する必要があります。各インスタンスは、length(target) + prediction_length
で算出される長さである必要があります。ここで、最後の prediction_length
値は、予測される未来の時間ポイントに対応します。モデルがカスタム特徴時系列なしでトレーニングされた場合は、フィールドをリクエストに含めないでください。
{ "instances": [ { "start": "2009-11-01 00:00:00", "target": [4.0, 10.0, "NaN", 100.0, 113.0], "cat": [0, 1], "dynamic_feat": [[1.0, 1.1, 2.1, 0.5, 3.1, 4.1, 1.2, 5.0, ...]] }, { "start": "2012-01-30", "target": [1.0], "cat": [2, 1], "dynamic_feat": [[2.0, 3.1, 4.5, 1.5, 1.8, 3.2, 0.1, 3.0, ...]] }, { "start": "1999-01-30", "target": [2.0, 1.0], "cat": [1, 3], "dynamic_feat": [[1.0, 0.1, -2.5, 0.3, 2.0, -1.2, -0.1, -3.0, ...]] } ], "configuration": { "num_samples": 50, "output_types": ["mean", "quantiles", "samples"], "quantiles": ["0.5", "0.9"] } }
configuration
フィールドはオプションです。configuration.num_samples
は、平均と分位数を推定するためにモデルが生成するサンプルパスの数を設定します。configuration.output_types
は、リクエストで返される情報を記述します。有効な値は、"mean"
、"quantiles"
、"samples"
です。"quantiles"
を指定すると、configuration.quantiles
のそれぞれの変位値は時系列として返されます。"samples"
を指定した場合、モデルは、他の出力を計算するために使用した未加工サンプルも返します。
DeepAR JSON のレスポンス形式
以下はレスポンスの形式です。ここで、[...]
は数字の配列です。
{ "predictions": [ { "quantiles": { "0.9": [...], "0.5": [...] }, "samples": [...], "mean": [...] }, { "quantiles": { "0.9": [...], "0.5": [...] }, "samples": [...], "mean": [...] }, { "quantiles": { "0.9": [...], "0.5": [...] }, "samples": [...], "mean": [...] } ] }
DeepAR のレスポンスのタイムアウトは 60 秒です。単一のリクエストで複数の時系列を渡すと、予測は順次生成されます。各時系列の予測には通常、モデルのサイズに応じて約 300 ~ 1000 ミリ秒以上かかるため、1 回の要求であまりにも多くの時系列を渡すと、タイムアウトが生じる可能性があります。リクエストごとに送信する時系列を少なくして、送信するリクエストの数を増やすことをお勧めします。DeepAR アルゴリズムはインスタンスごとに複数のワーカーを使用するため、複数のリクエストを並行して送信することで、はるかに高いスループットを達成できます。
デフォルトでは、CPU ごとに十分なメモリがある場合、DeepAR は推論のために CPU ごとに 1 つのワーカーを使用します。モデルが大きく、各 CPU でモデルを実行するのに十分なメモリがない場合は、ワーカーの数が削減されます。推論に使用されるワーカーの数は、SageMaker AI CreateModel
API MODEL_SERVER_WORKERS
を呼び出すときに 環境変数を使用して上書きできます。例えば、 MODEL_SERVER_WORKERS=1
を設定) します。
DeepAR アルゴリズムを使用したバッチ変換
DeepAR の予測は、JSON Lines 形式を使用したデータのバッチ変換による推論の取得をサポートします。この形式では、各レコードは JSON オブジェクトとして 1 行で表され、各行は改行文字で区切られます。形式は、モデルのトレーニングに使用される JSON Lines 形式と同じです。詳細については、DeepAR アルゴリズムの入出力インターフェイス を参照してください。例:
{"start": "2009-11-01 00:00:00", "target": [4.3, "NaN", 5.1, ...], "cat": [0, 1], "dynamic_feat": [[1.1, 1.2, 0.5, ..]]} {"start": "2012-01-30 00:00:00", "target": [1.0, -5.0, ...], "cat": [2, 3], "dynamic_feat": [[1.1, 2.05, ...]]} {"start": "1999-01-30 00:00:00", "target": [2.0, 1.0], "cat": [1, 4], "dynamic_feat": [[1.3, 0.4]]}
注記
変換ジョブを CreateTransformJob
で作成する場合は、BatchStrategy
の値を SingleRecord
に設定し、TransformInput
設定の SplitType
の値を Line
に設定してください。そうしないと、現在のデフォルト値ではランタイムエラーが発生します。
ホストエンドポイント推論リクエスト形式と同様に、以下の両方に該当する場合は、各インスタンスに cat
フィールドと dynamic_feat
フィールドが必要です。
-
モデルは、
cat
フィールドとdynamic_feat
フィールドの両方を含むデータセットに関してトレーニングされている。 -
トレーニングジョブで使用される対応する
cardinality
値とnum_dynamic_feat
値が、"".
に設定されていない。
ホストエンドポイントの推論とは異なり、設定フィールドは、DEEPAR_INFERENCE_CONFIG
という名前の環境変数を使用して、バッチ推論ジョブ全体に対して 1 回設定されます。CreateTransformJob
API を呼び出してモデルを作成するときに、DEEPAR_INFERENCE_CONFIG
の値を渡すことができます。DEEPAR_INFERENCE_CONFIG
がコンテナ環境で欠落している場合、推論コンテナは次のデフォルトを使用します。
{ "num_samples": 100, "output_types": ["mean", "quantiles"], "quantiles": ["0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9"] }
出力も JSON Lines 形式であり、各予測が 1 行で表され、対応する入力ファイルのインスタンスの順序と同じ順序で配置されます。予測は、オンライン推論モードのレスポンスによって返されるオブジェクトと同じオブジェクトとしてエンコードされます。以下に例を示します。
{ "quantiles": { "0.1": [...], "0.2": [...] }, "samples": [...], "mean": [...] }
SageMaker AI CreateTransformJob
リクエストTransformInput
の設定では、デフォルト値は同じ行のすべての JSON オブジェクトをNone
連結するためLine
、クライアントはAssembleWith
明示的に値を に設定する必要があります。
例えば、カスタム を持つ DeepAR ジョブに対する SageMaker AI CreateTransformJob
リクエストを次に示しますDEEPAR_INFERENCE_CONFIG
。
{ "BatchStrategy": "SingleRecord", "Environment": { "DEEPAR_INFERENCE_CONFIG" : "{ \"num_samples\": 200, \"output_types\": [\"mean\"] }", ... }, "TransformInput": { "SplitType": "Line", ... }, "TransformOutput": { "AssembleWith": "Line", ... }, ... }