

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# DeepAR 추론 형식
<a name="deepar-in-formats"></a>

다음 페이지에서는 Amazon SageMaker AI DeepAR 모델을 사용한 추론에 대한 요청 및 응답 형식을 설명합니다.

## DeepAR JSON 요청 형식
<a name="deepar-json-request"></a>

모델의 엔드포인트를 사용하여 교육된 모델을 쿼리합니다. 엔드포인트는 다음 JSON 요청 형식을 취합니다.

요청에서 `instances` 필드는 모델이 예측해야 하는 시계열과 일치합니다.

범주를 사용하여 모델을 훈련한 경우 각 인스턴스에 `cat`을 제공해야 합니다. `cat` 필드 없이 모델을 훈련한 경우에는 해당 필드가 누락된 것입니다.

모델이 사용자 지정 요인(feature) 시계열(`dynamic_feat`)을 사용하여 훈련된 경우 각 인스턴스에 대해 동일한 수의 `dynamic_feat` 값을 제공해야 합니다. 각 값의 길이는 `length(target) + prediction_length`로 지정된 길이여야 하는데, 여기서 마지막 `prediction_length` 값은 예측할 미래의 시점에 해당합니다. 사용자 지정 요인(feature) 시계열을 사용하지 않고 모델을 훈련한 경우에는 요청에 이 필드를 포함하면 안 됩니다.

```
{
    "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밀리초 이상이 걸리기 때문에 단일 요청에서 너무 많은 시계열을 전달하면 시간 초과가 발생할 수 있습니다. 따라서 요청당 가급적 적은 수의 시계열을 보내고 대신 요청 횟수를 늘리는 것이 더 낫습니다. DeepAR 알고리즘은 인스턴스당 여러 작업자를 사용하기 때문에 동시에 여러 요청을 보내면 처리량을 훨씬 더 높일 수 있습니다.

CPU당 충분한 메모리가 있는 경우 기본적으로 DeepAR에서는 추론을 위해 CPU당 작업자 하나를 사용합니다. 모델이 큰데 각 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 객체로 표현되며 행은 줄 바꿈 문자로 구분됩니다. 이 형식은 모델 훈련에 사용되는 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`를 사용하여 전체 배치 추론 작업에 대해 한 번만 설정됩니다. [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 형식이고, 각 행은 예측 하나에 해당하고, 순서는 해당하는 입력 파일 내 인스턴스 순서와 동일합니다. 예측은 온라인 추론 모드에서 응답으로 반환되는 객체와 동일한 객체로 인코딩됩니다. 예제:

```
{ "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) 구성에서는 `AssembleWith` 값을 `Line`으로 명시적으로 설정해야 합니다. 기본값 `None`은 모든 JSON 객체를 같은 줄에 연결합니다.

예를 들어 다음은 사용자 지정 `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",
      ...
   },
   ...
}
```