DeepAR 추론 형식 - Amazon SageMaker

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

DeepAR 추론 형식

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

DeepAR JSON 요청 형식

모델의 엔드포인트를 사용하여 교육된 모델을 쿼리합니다. 엔드포인트는 다음과 같은 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 응답 형식

다음은 응답 형식으로, [...]는 어레이의 수입니다.

{ "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 알고리즘은 인스턴스당 여러 작업자를 사용하기 때문에 동시에 여러 요청을 보내면 처리량을 훨씬 더 높일 수 있습니다.

기본적으로 DeepAR은 에 충분한 메모리가 있는 경우 추론CPU에 대해 마다 작업자 하나를 사용합니다CPU. 모델이 크고 각 에서 모델을 실행할 메모리가 충분하지 않은 경우 작업자 CPU수가 줄어듭니다. 추론에 사용되는 작업자 수는 환경 변수를 사용하여 덮어쓸 수 있습니다MODEL_SERVER_WORKERS. 예를 들어 를 호출할 때 MODEL_SERVER_WORKERS=1)를 SageMaker CreateModel 설정하여 덮어쓸 수 있습니다API.

DeepAR 알고리즘과 배치 변환

DeepAR 예측은 JSON 행 형식을 사용하여 데이터에서 배치 변환을 사용하여 추론을 가져올 수 있도록 지원합니다. 이 형식에서는 각 레코드가 한 줄에 JSON 객체로 표시되고 줄은 새 줄 문자로 구분됩니다. 형식은 모델 훈련에 사용되는 JSON 라인 형식과 동일합니다. 자세한 내용은 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으로 설정합니다.

호스팅 엔드포인트 추론 형식과 유사하게 다음과 같은 두 가지 경우에 해당하면 각 인스턴스의 catdynamic_feat 필드가 필요합니다.

  • 모델이 catdynamic_feat 필드가 모두 포함된 데이터 세트에 대해 훈련된 경우

  • 훈련 작업에 사용된 해당하는 cardinalitynum_dynamic_feat 값이 "".으로 설정되지 않은 경우

호스팅 엔드포인트 추론과 달리 구성 필드는 환경 변수 DEEPAR_INFERENCE_CONFIG를 사용하여 전체 배치 추론 작업에 대해 한 번만 설정됩니다. 를 호출하여 모델을 생성할 때 의 값을 전달할 DEEPAR_INFERENCE_CONFIG 수 있습니다CreateTransformJobAPI. 컨테이너 환경에 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 예측당 한 줄씩 행 형식입니다. 예측은 온라인 추론 모드에서 응답으로 반환되는 객체와 동일한 객체로 인코딩됩니다. 예:

{ "quantiles": { "0.1": [...], "0.2": [...] }, "samples": [...], "mean": [...] }

요청 클라이언트의 TransformInput 구성에서 기본AssembleWith값은 동일한 줄의 모든 JSON 객체를 SageMaker CreateTransformJob None 연결Line하므로 값을 로 명시적으로 설정해야 합니다.

예를 들어, 다음은 사용자 지정 을 SageMaker CreateTransformJob 사용하는 DeepAR 작업에 대한 요청입니다DEEPAR_INFERENCE_CONFIG.

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