

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

# DeepAR 推論の形式
<a name="deepar-in-formats"></a>

このページでは、Amazon SageMaker AI DeepAR モデルによる推論のリクエストとレスポンスの形式について説明します。

## DeepAR JSON リクエストの形式
<a name="deepar-json-request"></a>

モデルのエンドポイントを使用して、トレーニング済みモデルのクエリを実行します。エンドポイントは次の 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 のレスポンス形式
<a name="deepar-json-response"></a>

以下はレスポンスの形式です。ここで、`[...]` は数字の配列です。

```
{
    "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 でモデルを実行するのに十分なメモリがない場合は、ワーカーの数が削減されます。推論に使用されるワーカーの数は、環境変数 `MODEL_SERVER_WORKERS` を使用して上書きできます。例えば、SageMaker AI の [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) API を呼び出すときに `MODEL_SERVER_WORKERS=1` を設定することで上書きできます。

## DeepAR アルゴリズムを使用したバッチ変換
<a name="deepar-batch"></a>

DeepAR の予測は、JSON Lines 形式を使用したデータのバッチ変換による推論の取得をサポートします。この形式では、各レコードは JSON オブジェクトとして 1 行で表され、各行は改行文字で区切られます。形式は、モデルのトレーニングに使用される JSON Lines 形式と同じです。詳細については、「[DeepAR アルゴリズムの入出力インターフェイス](deepar.md#deepar-inputoutput)」を参照してください。例:

```
{"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]]}
```

**注記**  
変換ジョブを [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) で作成する場合は、`BatchStrategy` の値を `SingleRecord` に設定し、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html) 設定の `SplitType` の値を `Line` に設定してください。そうしないと、現在のデフォルト値ではランタイムエラーが発生します。

ホストエンドポイント推論リクエスト形式と同様に、以下の両方に該当する場合は、各インスタンスに `cat` フィールドと `dynamic_feat` フィールドが必要です。
+ モデルは、`cat` フィールドと `dynamic_feat` フィールドの両方を含むデータセットに関してトレーニングされている。
+ トレーニングジョブで使用される対応する `cardinality` 値と `num_dynamic_feat` 値が、`"".` に設定されていない。

ホストエンドポイントの推論とは異なり、設定フィールドは、`DEEPAR_INFERENCE_CONFIG` という名前の環境変数を使用して、バッチ推論ジョブ全体に対して 1 回設定されます。[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) 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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) リクエストの [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html) 設定では、デフォルト値の `None` によって同じ行の JSON オブジェクトがすべて連結されるため、クライアントは `AssembleWith` 値を明示的に `Line` に設定する必要があります。

例えば、以下はカスタムの `DEEPAR_INFERENCE_CONFIG` を持つ DeepAR ジョブに対する SageMaker AI [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) リクエストです。

```
{
   "BatchStrategy": "SingleRecord",
   "Environment": { 
      "DEEPAR_INFERENCE_CONFIG" : "{ \"num_samples\": 200, \"output_types\": [\"mean\"] }",
      ...
   },
   "TransformInput": {
      "SplitType": "Line",
      ...
   },
   "TransformOutput": { 
      "AssembleWith": "Line",
      ...
   },
   ...
}
```