

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

# Amazon SageMaker AI를 사용한 추론용 배치 변환
<a name="batch-transform"></a>

다음 작업이 필요할 때 배치 변환을 사용합니다.
+ 데이터세트를 사전 처리하여 데이터세트에서 훈련 또는 추론을 방해하는 노이즈 또는 바이어스를 제거합니다.
+ 대규모 데이터세트에서 추론을 가져옵니다.
+ 영구 엔드포인트가 필요하지 않을 경우 추론을 실행합니다.
+ 결과를 쉽게 해석할 수 있도록 입력 레코드를 추론과 연결시킵니다.

추론을 수행하기 전에 입력 데이터를 필터링하거나 입력 레코드를 해당 레코드에 대한 추론과 연결하려면 [예측 결과를 입력 레코드에 연결](batch-transform-data-processing.md)을 참조합니다. 예를 들어, 입력 데이터를 필터링하여 출력 데이터에 대한 보고서를 생성 및 해석하기 위한 컨텍스트를 제공할 수 있습니다.

**Topics**
+ [배치 변환을 사용하여 대규모 데이터세트에서 추론 가져오기](#batch-transform-large-datasets)
+ [배치 변환 작업의 속도 높이기](#batch-transform-reduce-time)
+ [배치 변환을 사용하여 프로덕션 변형 테스트](#batch-transform-test-variants)
+ [배치 변환 샘플 노트북](#batch-transform-notebooks)
+ [예측 결과를 입력 레코드에 연결](batch-transform-data-processing.md)
+ [배치 변환의 스토리지](batch-transform-storage.md)
+ [문제 해결](batch-transform-errors.md)

## 배치 변환을 사용하여 대규모 데이터세트에서 추론 가져오기
<a name="batch-transform-large-datasets"></a>

배치 변환은 대규모 데이터세트의 처리를 지정된 파라미터 제한 내에서 자동으로 관리합니다. 예를 들어 데이터세트 파일 `input1.csv`가 S3 버킷에 저장되어 있다고 가정하겠습니다. 입력 파일의 내용은 모양이 다음 예제와 같을 수 있습니다.

```
Record1-Attribute1, Record1-Attribute2, Record1-Attribute3, ..., Record1-AttributeM
Record2-Attribute1, Record2-Attribute2, Record2-Attribute3, ..., Record2-AttributeM
Record3-Attribute1, Record3-Attribute2, Record3-Attribute3, ..., Record3-AttributeM
...
RecordN-Attribute1, RecordN-Attribute2, RecordN-Attribute3, ..., RecordN-AttributeM
```

배치 변환 작업이 시작되면 SageMaker AI는 컴퓨팅 인스턴스를 시작하고 추론 또는 사전 처리 워크로드를 이 인스턴스 사이에 배포합니다. 배치 변환 파티션은 입력에 있는 Amazon S3 객체를 키로 분할하고 Amazon S3 객체를 인스턴스에 매핑합니다. 파일이 여러 개라면 한 인스턴스는 `input1.csv`를 처리하고, 다른 인스턴스는 이름이 `input2.csv`인 파일을 처리할 수 있습니다. 입력 파일은 하나이지만 여러 컴퓨팅 인스턴스를 초기화하는 경우 한 인스턴스만 입력 파일을 처리합니다. 나머지 인스턴스는 유휴 상태입니다.

입력 파일을 미니 배치로 분할할 수도 있습니다. 예를 들어 레코드 두 개만 포함시켜 `input1.csv`에서 미니 배치를 생성할 수 있습니다.

```
Record3-Attribute1, Record3-Attribute2, Record3-Attribute3, ..., Record3-AttributeM
Record4-Attribute1, Record4-Attribute2, Record4-Attribute3, ..., Record4-AttributeM
```

**참고**  
SageMaker AI는 각 입력 파일을 개별적으로 처리합니다. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB               ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB               ) 제한을 준수하기 위해 다른 입력 파일에서 분할된 미니 배치를 결합하지 않습니다.

배치 변환 작업을 생성할 때 입력 파일을 미니 배치로 분할하려면 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ) 파라미터 값을 `Line`으로 설정합니다. SageMaker AI는 다음과 같은 경우 단일 요청으로 전체 입력 파일을 사용합니다.
+ `SplitType`를 `None`(으)로 설정합니다.
+ 입력 파일은 미니 배치로 분할할 수 없습니다.

. 참고로 배치 변환은 포함된 줄 바꿈 문자가 포함된 CSV 형식 입력을 지원하지 않습니다. `[BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-BatchStrategy)` 및 `[MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxPayloadInMB)` 파라미터를 사용하여 미니 배치의 크기를 제어할 수 있습니다. `MaxPayloadInMB`는 100MB를 초과할 수 없습니다. 선택적 `[MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxConcurrentTransforms)` 파라미터를 지정하는 경우, `(MaxConcurrentTransforms * MaxPayloadInMB)`의 값도 100MB를 초과할 수 없습니다.

배치 변환 작업이 입력 파일의 모든 레코드를 성공적으로 처리하면 출력 파일이 생성됩니다. 출력 파일의 이름과 `.out` 파일 확장자는 동일합니다. `input1.csv` 및 `input2.csv`와 같은 여러 입력 파일의 경우 출력 파일의 이름은 `input1.csv.out` 및 `input2.csv.out`입니다. 배치 변환 작업은 `s3://amzn-s3-demo-bucket/output/`과 같이 Amazon S3에 지정된 위치에 출력 파일을 저장합니다.

출력 파일의 예측은 입력 파일의 해당 레코드와 동일한 순서로 나열됩니다. 앞에 나온 입력 파일을 기반으로 한 출력 파일 `input1.csv.out`은 모양이 다음과 같을 것입니다.

```
Inference1-Attribute1, Inference1-Attribute2, Inference1-Attribute3, ..., Inference1-AttributeM
Inference2-Attribute1, Inference2-Attribute2, Inference2-Attribute3, ..., Inference2-AttributeM
Inference3-Attribute1, Inference3-Attribute2, Inference3-Attribute3, ..., Inference3-AttributeM
...
InferenceN-Attribute1, InferenceN-Attribute2, InferenceN-Attribute3, ..., InferenceN-AttributeM
```

[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             )을 `Line`으로 설정하면 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith             ) 파라미터를 `Line`으로 설정하여 출력 레코드를 줄 구분자와 연결할 수 있습니다. 이렇게 해도 출력 파일 수는 변하지 않습니다. 출력 파일 수는 입력 파일 수와 같으며 `AssembleWith`를 사용해도 파일이 병합되지 않습니다. `AssembleWith` 파라미터를 지정하지 않으면 출력 레코드가 기본적으로 바이너리 형식으로 연결됩니다.

입력 데이터가 매우 크고 HTTP 청크 분할 인코딩을 사용하여 전송되는 경우, 데이터를 알고리즘으로 스트리밍하려면 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB)를 `0`으로 설정합니다. Amazon SageMaker AI 기본 제공 알고리즘은 이 기능을 지원하지 않습니다.

API를 사용하여 배치 변환 작업을 생성하는 방법에 대한 자세한 내용은 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) API를 참조하세요. 배치 변환 입력 및 출력 객체 간의 관계에 대한 자세한 내용은 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html) 섹션을 참조하세요. 배치 변환을 사용하는 방법의 예제는 [(선택 사항) 배치 변환으로 예측하기](ex1-model-deployment.md#ex1-batch-transform) 섹션을 참조하세요.

## 배치 변환 작업의 속도 높이기
<a name="batch-transform-reduce-time"></a>

[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) API를 사용하는 경우 최적의 파라미터 값을 사용하여 배치 변환 작업을 완료하는 데 걸리는 시간을 단축할 수 있습니다. 여기에는 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB), [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxConcurrentTransforms) 또는 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-BatchStrategy) 같은 파라미터가 포함됩니다. `MaxConcurrentTransforms`의 이상적인 값은 배치 변환 작업의 컴퓨팅 작업자 수와 같습니다.

SageMaker AI 콘솔을 사용하는 경우 **배치 변환 작업 구성** 페이지의 **추가 구성** 섹션에서 이러한 최적의 파라미터 값을 지정할 수 있습니다. SageMaker AI는 기본 제공 알고리즘에 대한 최적의 파라미터 설정을 자동으로 찾습니다. 사용자 지정 알고리즘의 경우 [execution-parameters](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-batch-code.html#your-algorithms-batch-code-how-containe-serves-requests) 엔드포인트를 통해 이러한 값을 제공합니다.

## 배치 변환을 사용하여 프로덕션 변형 테스트
<a name="batch-transform-test-variants"></a>

다양한 모델 또는 다양한 하이퍼파라미터 설정을 테스트하려면 새로운 모델 변수에 대해 각각 변환 작업을 생성하고 검증 데이터세트를 사용합니다. 각 변환 작업의 경우, Amazon S3에서 출력 파일에 대한 고유한 모델 이름과 위치를 지정합니다. 결과를 분석하려면 [추론 파이프라인 로그 및 지표](inference-pipeline-logs-metrics.md)을 사용합니다.

## 배치 변환 샘플 노트북
<a name="batch-transform-notebooks"></a>

배치 변환을 사용하는 샘플 노트북은 [PCA 및 DBSCAN 영화 클러스터를 사용한 배치 변환을 참조하세요](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_batch_transform/introduction_to_batch_transform/batch_transform_pca_dbscan_movie_clusters.html). 이 노트북은 주요 구성 요소 분석(PCA) 모델을 사용한 배치 변환을 사용하여 사용자 항목 검토 매트릭스의 데이터를 줄입니다. 그런 다음 노이즈가 있는 애플리케이션의 밀도 기반 공간 클러스터링(DBSCAN) 알고리즘을 적용하여 영화를 클러스터링하는 방법을 보여줍니다.

 SageMaker AI에서 예시를 실행하는 데 사용할 수 있는 Jupyter Notebook 인스턴스를 만들어 해당 인스턴스에 액세스하는 설명은 [Amazon SageMaker 노트북 인스턴스](nbi.md) 섹션을 참조하세요. 노트북 인스턴스를 만들어 연 다음 **SageMaker 예시** 탭을 선택하면 모든 SageMaker AI 예시 목록이 나타납니다. NTM 알고리즘을 사용하는 주제 모델링 예제 노트북은 **고급 기능** 섹션에 있습니다. 노트북을 열려면 노트북의 **사용** 탭을 선택하고 **복사본 생성**을 선택합니다.

# 예측 결과를 입력 레코드에 연결
<a name="batch-transform-data-processing"></a>

대규모 데이터세트에서 예측을 실행할 경우 예측에 필요하지 않은 속성을 제외할 수 있습니다. 예측을 실행한 후 때로는 제외된 속성 일부를 보고서에서 해당 예측 또는 다른 입력 데이터에 연결할 수 있습니다. 배치 변환을 사용하여 이러한 데이터 처리 단계를 수행하면 추가적인 사전 처리나 사후 처리가 필요 없습니다. JSON 및 CVS 형식의 입력 파일만 사용할 수 있습니다.

**Topics**
+ [추론을 입력 레코드에 연결하는 워크플로](#batch-transform-data-processing-workflow)
+ [배치 변환 작업에서 데이터 처리 사용](#batch-transform-data-processing-steps)
+ [지원되는 JSONPath 연산자](#data-processing-operators)
+ [배치 변환 예제](#batch-transform-data-processing-examples)

## 추론을 입력 레코드에 연결하는 워크플로
<a name="batch-transform-data-processing-workflow"></a>

다음 다이어그램은 추론을 입력 레코드에 연결하는 워크플로를 보여줍니다.

![\[추론을 입력 레코드에 연결하는 워크플로.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/batch-transform-data-processing.png)


추론을 입력 데이터에 연결할 때 다음 세 가지 단계가 있습니다.

1. 입력 데이터를 배치 변환 작업에 전달하기 전에 추론에 필요하지 않은 입력 데이터를 필터링합니다. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-InputFilter                             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-InputFilter                             ) 파라미터를 사용하여 어느 속성을 모델에 대한 입력으로 사용할지 결정합니다.

1. 입력 데이터를 추론 결과에 연결합니다. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-JoinSource                         ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-JoinSource                         ) 파라미터를 사용하여 입력 데이터를 추론과 결합합니다.

1. 조인된 데이터를 필터링하여 보고서에서 예측을 해석하기 위한 컨텍스트를 제공하는 데 필요한 입력을 유지합니다. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-OutputFilter                             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-OutputFilter                             )를 사용하여 조인된 데이터세트의 지정된 부분을 출력 파일에 저장합니다.

## 배치 변환 작업에서 데이터 처리 사용
<a name="batch-transform-data-processing-steps"></a>

[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)을 사용하여 데이터를 처리할 배치 변환 작업을 생성하는 경우 다음을 수행합니다.

1. `DataProcessing` 데이터 구조에서 `InputFilter` 파라미터를 사용하여 모델로 전달할 입력 부분을 지정합니다.

1. `JoinSource` 파라미터를 사용하여 원시 데이터를 변환된 데이터와 조인합니다.

1. `OutputFilter` 파라미터를 사용하여 조인된 입력과 배치 변환 작업에서 변환된 데이터의 어떤 부분을 출력 파일에 포함할지 지정합니다.

1.  JSON 또는 CSV 형식 파일을 입력으로 선택합니다.
   + JSON 또는 JSON 라인 형식 입력 파일의 경우, SageMaker AI가 입력 파일에 `SageMakerOutput` 속성을 추가하거나 `SageMakerInput` 및 `SageMakerOutput` 속성을 사용하여 새로운 JSON 출력 파일을 만듭니다. 자세한 내용은 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataProcessing.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataProcessing.html) 단원을 참조하십시오.
   + CSV 형식 입력 파일의 경우, 조인된 입력 데이터 다음에 변환된 데이터가 오며, 출력은 CSV 파일입니다.

`DataProcessing` 구조를 포함하는 알고리즘을 사용하는 경우, 해당 알고리즘이 입력 및 출력 파일 모두에 대해 선택한 형식을 지원해야 합니다.** 예를 들어 `CreateTransformJob` API의 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html) 필드에서, [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html#SageMaker-Type-Channel-ContentType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html#SageMaker-Type-Channel-ContentType) 및 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-Accept](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-Accept) 파라미터 모두를 다음 값 `text/csv`, `application/json` 또는 `application/jsonlines` 중 하나로 설정해야 합니다. CSV 파일에서 열을 지정하는 구문과 JSON 파일에서 속성을 지정하는 구문은 다릅니다. 잘못된 구문을 사용하면 오류가 발생합니다. 자세한 내용은 [배치 변환 예제](#batch-transform-data-processing-examples) 단원을 참조하십시오. 기본 제공 알고리즘을 위한 입력 및 출력 형식에 대한 자세한 내용은 [Amazon SageMaker 기본 제공 알고리즘 또는 사전 훈련된 모델 사용](algos.md) 섹션을 참조하세요.

입력 및 출력용 레코드 구분 기호 역시 선택한 파일 입력과 일치해야 합니다. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType) 파라미터는 입력 데이터세트에서 레코드를 분할하는 방법을 나타냅니다. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith                     ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith                     ) 파라미터는 출력의 레코드를 리어셈블하는 방법을 나타냅니다. 입력 및 출력 형식을 `text/csv`로 설정한 경우, `SplitType` 및 `AssembleWith` 파라미터를 `line`으로 설정해야 합니다. 입력 및 출력 형식을 `application/jsonlines`로 설정한 경우, `SplitType` 및 `AssembleWith` 모두 `line`으로 설정할 수 있습니다.

CSV 파일의 경우 포함된 줄 바꿈 문자를 사용할 수 없습니다. JSON 파일의 경우, 속성 이름 `SageMakerOutput`은 출력용으로 예약됩니다. JSON 입력 파일은 이 이름의 속성을 가질 수 없습니다. 그럴 경우 입력 파일의 해당 데이터가 덮여 쓰일 수 있습니다.

## 지원되는 JSONPath 연산자
<a name="data-processing-operators"></a>

입력 데이터 및 추론을 필터링하고 조인하려면 JSONPath 하위 표현식을 사용합니다. SageMaker AI는 정의된 JSONPath 연산자의 하위 세트만 지원합니다. 다음 표는 지원되는 JSONPath 연산자입니다. CSV 데이터의 경우 각 행은 JSON 배열로 간주되므로 인덱스 기반 JSONPath만 적용할 수 있습니다(예: `$[0]`, `$[1:]`). CSV 데이터도 [RFC 형식](https://tools.ietf.org/html/rfc4180)을 따라야 합니다.


| JSONPath 연산자 | 설명 | 예제 | 
| --- | --- | --- | 
| \$1 |  쿼리의 루트 요소. 이 연산자는 모든 경로 표현식의 시작 부분에 필요합니다.  | \$1 | 
| .<name> |  점으로 표기된 하위 요소.  |  `$.id`  | 
| \$1 |  와일드카드. 속성 이름 또는 숫자 값 대신 사용합니다.  |  `$.id.*`  | 
| ['<name>' (,'<name>')] |  괄호로 표기된 요소 또는 다중 하위 요소.  |  `$['id','SageMakerOutput']`  | 
| [<number> (,<number>)] |  인덱스 또는 인덱스 배열. 음의 인덱스 값도 지원됩니다. `-1` 인덱스는 특정 배열의 마지막 요소를 말합니다.  |  `$[1]` , `$[1,3,5]`  | 
| [<start>:<end>] |  배열 조각 연산자. 배열 조각() 메서드는 배열의 한 부분을 추출하고 새 배열을 반환합니다. *<start>*를 생략할 경우, SageMaker AI는 배열의 첫 번째 요소를 사용합니다. *<end>*를 생략할 경우, SageMaker AI는 배열의 마지막 요소를 사용합니다.  |  `$[2:5]`, `$[:5]`, `$[2:]`  | 

대괄호 표기법을 사용하여 주어진 필드의 여러 하위 요소를 지정하는 경우 대괄호 안에 하위 요소를 추가 중첩할 수 없습니다. 예를 들어 `$.field1.['child1','child2']`는 지원되는 반면 `$.field1.['child1','child2.grandchild']`는 지원되지 않습니다.

JSONPath 연산자에 대한 자세한 내용은 GitHub의 [JsonPath](https://github.com/json-path/JsonPath)를 참조하세요.

## 배치 변환 예제
<a name="batch-transform-data-processing-examples"></a>

다음 예제에서는 입력 데이터를 예측 결과와 조인하는 몇 가지 일반적인 방법을 보여줍니다.

**Topics**
+ [예제: 추론만 출력](#batch-transform-data-processing-example-default)
+ [예제: 입력 데이터와 조인된 추론 출력](#batch-transform-data-processing-example-all)
+ [예제: 입력 데이터와 조인된 추론 출력 및 입력에서 ID 열 제외(CSV)](#batch-transform-data-processing-example-select-csv)
+ [예제: ID 열과 조인된 추론 출력 및 입력에서 ID 열 제외(CSV)](#batch-transform-data-processing-example-select-json)

### 예제: 추론만 출력
<a name="batch-transform-data-processing-example-default"></a>

기본적으로 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-DataProcessing](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-DataProcessing) 파라미터는 추론 결과를 입력과 조인하지 않습니다. 추론 결과만 출력합니다.

결과를 입력과 조인하지 않도록 명시적으로 지정하려면 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)를 사용하고 변환기 호출에서 다음 설정을 지정합니다.

```
sm_transformer = sagemaker.transformer.Transformer(…)
sm_transformer.transform(…, input_filter="$", join_source= "None", output_filter="$")
```

 AWS SDK for Python을 사용하여 추론을 출력하려면 CreateTransformJob 요청에 다음 코드를 추가합니다. 다음 코드는 기본 동작을 모방합니다.

```
{
    "DataProcessing": {
        "InputFilter": "$",
        "JoinSource": "None",
        "OutputFilter": "$"
    }
}
```

### 예제: 입력 데이터와 조인된 추론 출력
<a name="batch-transform-data-processing-example-all"></a>

[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)를 사용하여 입력 데이터를 출력 파일의 추론과 결합하는 경우 변환기 객체를 초기화할 때 `assemble_with` 및 `accept` 파라미터를 지정하세요. 변환 호출을 사용할 때는 `join_source` 파라미터에 대해 `Input`을 지정하고 `split_type` 및 `content_type` 파라미터도 지정하세요. `split_type` 파라미터는 `assemble_with`와 같은 값을 가져야 하고 `content_type` 파라미터는 `accept`와 같은 값을 가져야 합니다. 파라미터 및 허용되는 값에 대한 자세한 내용은 *Amazon SageMaker AI Python SDK*의 [변환기](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer) 페이지를 참조하세요.

```
sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv")
sm_transformer.transform(…, join_source="Input", split_type="Line", content_type="text/csv")
```

 AWS SDK for Python(Boto 3)을 사용하는 경우 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) 요청에 다음 코드를 추가하여 모든 입력 데이터를 추론과 조인합니다. `Accept` 및 `ContentType`의 값이 일치해야 하고, `AssembleWith` 및 `SplitType`의 값도 일치해야 합니다.

```
{
    "DataProcessing": {
        "JoinSource": "Input"
    },
    "TransformOutput": {
        "Accept": "text/csv",
        "AssembleWith": "Line"
    },
    "TransformInput": {
        "ContentType": "text/csv",
        "SplitType": "Line"
    }
}
```

JSON 또는 JSON 라인 입력 파일의 경우, 결과가 JSON 파일의 `SageMakerOutput` 키에 있습니다. 예를 들어 입력이 키-값 페어 `{"key":1}`을 포함하는 JSON 파일인 경우 데이터 변환 결과는 `{"label":1}`일 수 있습니다.

SageMaker AI는 2가지 모두 입력 파일의 `SageMakerInput` 키에 저장합니다.

```
{
    "key":1,
    "SageMakerOutput":{"label":1}
}
```

**참고**  
JSON에 대한 조인된 결과는 키-값 페어 객체여야 합니다. 입력이 키-값 페어 객체가 아닌 경우, SageMaker AI는 새로운 JSON 파일을 만듭니다. 새 JSON 파일에서 입력 데이터는 `SageMakerInput` 키에 저장되고, 결과는 `SageMakerOutput` 값으로 저장됩니다.

CSV 파일의 경우, 예를 들어 레코드가 `[1,2,3]`이고, 레이블 결과가 `[1]`인 경우, 출력 파일은 `[1,2,3,1]`을 포함하게 됩니다.

### 예제: 입력 데이터와 조인된 추론 출력 및 입력에서 ID 열 제외(CSV)
<a name="batch-transform-data-processing-example-select-csv"></a>

[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)를 사용하여 입력 데이터를 추론 출력과 결합하고 변환기 입력에서 ID 열을 제외하는 경우, 이전 예제의 동일한 파라미터뿐만 아니라 변환기 호출에서 `input_filter`에 대한 JSONPath 하위 표현식을 지정하세요. 예를 들어 입력 데이터가 5개 열을 포함하고 첫 번째 열이 ID 열인 경우, 다음과 같은 변환기 요청을 사용하여 기능으로 ID 열을 제외한 모든 열을 선택하세요. 변환기는 여전히 추론과 조인된 모든 입력 열을 출력합니다. 파라미터 및 허용되는 값에 대한 자세한 내용은 *Amazon SageMaker AI Python SDK*의 [변환기](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer) 페이지를 참조하세요.

```
sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv")
sm_transformer.transform(…, split_type="Line", content_type="text/csv", input_filter="$[1:]", join_source="Input")
```

 AWS SDK for Python(Boto 3)을 사용하는 경우 `[ CreateTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)` 요청에 다음 코드를 추가합니다.

```
{
    "DataProcessing": {
        "InputFilter": "$[1:]",
        "JoinSource": "Input"
    },
    "TransformOutput": {
        "Accept": "text/csv",
        "AssembleWith": "Line"
    },
    "TransformInput": {
        "ContentType": "text/csv",
        "SplitType": "Line"
    }
}
```

SageMaker AI에서 열을 지정하려면 배열 요소의 인덱스를 사용합니다. 첫 번째 열은 인덱스 0, 두 번째 열은 인덱스 1, 여섯 번째 열은 인덱스 5입니다.

입력에서 첫 번째 열을 제외하려면 `[InputFilter](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-InputFilter )`를 `"$[1:]"`로 설정합니다. 콜론(`:`)은 SageMaker AI에게 두 값 사이의 모든 요소를 포함(두 값도 포함)하도록 지시합니다. 예를 들어, `$[1:4]`는 두 번째 열부터 다섯 번째 열까지 지정합니다.

예를 들어, `[5:]` 같이 콜론 뒤의 숫자를 생략할 경우 하위 집합에 여섯 번째 열부터 마지막 열까지 모든 열이 포함됩니다. 예를 들어, `[:5]` 같이 콜론 앞의 숫자를 생략할 경우 하위 집합에 첫 번째 열(인덱스 0)부터 여섯 번째 열까지 모든 열이 포함됩니다.

### 예제: ID 열과 조인된 추론 출력 및 입력에서 ID 열 제외(CSV)
<a name="batch-transform-data-processing-example-select-json"></a>

[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)를 사용하는 경우 변환기 호출에서 `output_filter`를 지정하여 특정 입력 열(예: ID 열)만 추론과 결합하도록 출력을 지정할 수 있습니다. `output_filter`는 JSONPath 하위 표현식을 사용하여 입력 데이터를 추론 결과와 조인한 후 출력으로 반환할 열을 지정합니다. 다음 요청은 ID 열을 제외한 상태에서 예측한 다음 ID 열을 추론과 결합하는 방법을 보여줍니다. 다음 예제에서는 출력의 마지막 열(`-1`)에 추론이 포함되어 있다는 점에 유의하세요. JSON 파일을 사용하는 경우 SageMaker AI는 추론 결과를 속성 `SageMakerOutput`에 저장합니다. 파라미터 및 허용되는 값에 대한 자세한 내용은 *Amazon SageMaker AI Python SDK*의 [변환기](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer) 페이지를 참조하세요.

```
sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv")
sm_transformer.transform(…, split_type="Line", content_type="text/csv", input_filter="$[1:]", join_source="Input", output_filter="$[0,-1]")
```

 AWS SDK for Python(Boto 3)을 사용하는 경우 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) 요청에 다음 코드를 추가하여 ID 열만 추론과 조인합니다.

```
{
    "DataProcessing": {
        "InputFilter": "$[1:]",
        "JoinSource": "Input",
        "OutputFilter": "$[0,-1]"
    },
    "TransformOutput": {
        "Accept": "text/csv",
        "AssembleWith": "Line"
    },
    "TransformInput": {
        "ContentType": "text/csv",
        "SplitType": "Line"
    }
}
```

**주의**  
JSON 형식의 입력 파일을 사용하는 경우에는 파일에 속성 이름 `SageMakerOutput`이 포함되지 못합니다. 이 속성 이름은 출력 파일에서 추론용으로 예약됩니다. JSON 형식의 입력 파일에 이 이름의 속성이 있는 경우에는 입력 파일의 값을 추론이 덮어쓰게 될 수 있습니다.

# 배치 변환의 스토리지
<a name="batch-transform-storage"></a>

배치 변환 작업을 실행하면 Amazon SageMaker AI는 작업을 처리하는 Amazon EC2 인스턴스에 Amazon Elastic Block Store 스토리지 볼륨을 연결합니다. 이 볼륨은 모델을 저장하며 스토리지 볼륨의 크기는 30GB로 고정됩니다. 이 스토리지 볼륨에 저장된 모델을 암호화할 수 있는 옵션이 있습니다.

**참고**  
모델이 크면 `InternalServerError`가 발생할 수 있습니다.

Amazon EBS 스토리지 및 기능에 대한 자세한 내용은 다음 페이지를 참조하세요.
+ Amazon EC2 사용 설명서의 EventBridge for Amazon EBS
+ [Amazon EBS 볼륨](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes.html) - Linux 인스턴스용 Amazon EC2 사용 설명서에서

**참고**  
G4dn 인스턴스는 자체 로컬 SSD 스토리지와 함께 제공됩니다. G4dn 인스턴스에 대한 자세한 내용은 [Amazon EC2 G4 인스턴스](https://aws.amazon.com/ec2/instance-types/g4/) 페이지를 참조하세요.

# 문제 해결
<a name="batch-transform-errors"></a>

Amazon SageMaker AI 배치 변환에서 오류가 발생하는 경우 다음 문제 해결 팁을 참조하세요.

## 최대 제한 시간 오류
<a name="batch-transform-errors-max-timeout"></a>

배치 변환 작업을 실행할 때 최대 제한 시간 오류가 발생하는 경우 다음을 시도해 보세요.
+ 먼저 단일 레코드 `[BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-BatchStrategy)`, `[MaxPayloadInMB](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxPayloadInMB)` 파라미터에서 지정한 기본(6MB) 이하의 배치 크기, 그리고 작은 샘플 데이터세트로 시작하세요. 성공적인 간접 호출 응답을 받을 때까지 최대 제한 시간 파라미터 `[InvocationsTimeoutInSeconds](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelClientConfig.html#sagemaker-Type-ModelClientConfig-InvocationsTimeoutInSeconds)`(최대 1시간)를 조정하세요.
+ 간접 호출 응답을 성공적으로 받으면 `MaxPayloadInMB`(최대 100MB) 및 `InvocationsTimeoutInSeconds` 파라미터를 함께 늘려 원하는 모델 제한 시간을 지원할 수 있는 최대 배치 크기를 찾으세요. 이 단계에서는 단일 레코드 또는 다중 레코드 `BatchStrategy`을 사용할 수 있습니다.
**참고**  
`MaxPayloadInMB` 제한을 초과하면 오류가 발생합니다. 이는 분할할 수 없는 대규모 데이터세트에 대해 `SplitType` 파라미터가 없음으로 설정된 경우 또는 데이터세트 내 개별 레코드가 제한을 초과하는 경우에 발생할 수 있습니다.
+ (선택 사항) 배치 변환 작업의 각 인스턴스에 보낼 수 있는 최대 병렬 요청 수를 지정하는 `[MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxConcurrentTransforms)` 파라미터를 조정합니다. 단, `MaxConcurrentTransforms * MaxPayloadInMB`의 값은 100MB를 초과할 수 없습니다.

## 불완전 출력
<a name="batch-transform-errors-incomplete"></a>

SageMaker AI는 Amazon S3 [멀티파트 업로드 API](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html)를 사용하여 배치 변환 작업의 결과를 Amazon S3에 업로드합니다. 오류가 발생하는 경우 업로드된 결과가 Amazon S3에서 제거됩니다. 네트워크 중단 발생 등 일부의 경우에는 불완전 멀티파트 업로드가 Amazon S3에 남아 있을 수 있습니다. 입력 파일이 여러 개 있지만 일부 파일을 SageMaker AI 배치 변환으로 처리할 수 없는 경우에도 불완전 업로드가 발생할 수 있습니다. 처리할 수 없는 입력 파일은 Amazon S3에 해당하는 출력 파일이 없습니다.

스토리지 요금이 발생하지 않도록 하려면 [S3 버킷 정책](https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)을 S3 버킷 수명 주기 규칙에 추가하는 것이 좋습니다. 이 정책은 S3 버킷에 저장할 수 있는 불완전 멀티파트 업로드를 삭제합니다. 자세한 내용은 [객체 수명 주기 관리](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)를 참조하세요.

## 작업은 `failed`로 표시됩니다.
<a name="batch-transform-errors-failed"></a>

데이터세트에 문제가 발생하여 배치 변환 작업이 입력 파일을 처리하지 못하는 경우 SageMaker AI는 해당 작업을 `failed`로 표시합니다. 입력 파일에 잘못된 레코드가 있는 경우 변환된 데이터에서 입력 파일과 동일한 순서를 유지할 수 없으므로 변환 작업이 해당 입력 파일의 출력 파일을 생성하지 않습니다. 데이터세트에 입력 파일이 여러 개 있는 경우 변환 작업이 입력 파일을 처리하지 못하더라도 계속 처리합니다. 처리된 파일은 사용 가능한 결과를 생성합니다.

기존 보유 알고리즘을 사용하는 경우 알고리즘이 입력 파일에서 잘못된 레코드를 찾으면 `ERROR`와 같은 자리 표시자 텍스트를 사용할 수 있습니다. 예를 들어, 데이터세트의 마지막 레코드가 잘못된 경우에는 알고리즘이 자리 표시자 텍스트를 출력 파일의 해당 레코드에 배치합니다.