

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

# AutoML API를 사용하여 테이블 형식 데이터에 대한 회귀 또는 분류 작업 생성
<a name="autopilot-automate-model-development-create-experiment"></a>

Autopilot 또는 AWS CLI에서 지원하는 모든 언어로 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) API를 호출하여 프로그래밍 방식으로 테이블 형식 데이터용 Autopilot 회귀 또는 분류 작업을 생성할 수 있습니다. 다음은 `CreateAutoMLJobV2` API 작업에 대한 필수 및 선택적 입력 요청 파라미터 모음입니다. 이 작업 `CreateAutoMLJob`의 이전 버전에 대한 대체 정보를 확인할 수 있습니다. 그러나 `CreateAutoMLJobV2` 사용을 권장합니다.

이 API 작업이 선택한 언어의 함수로 변환되는 방식에 대한 자세한 내용은 `CreateAutoMLJobV2`의 [추가 참고 사항](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_SeeAlso) 섹션 및 SDK 선택을 참조하세요. 예를 들어, Python 사용자의 경우 AWS SDK for Python (Boto3)에서 `[create\$1auto\$1ml\$1job\$1v2](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_auto_ml_job_v2)`의 전체 요청 구문을 참조하세요.

**참고**  
[CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html)와 [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html)는 이전 버전과의 호환성을 제공하는 [CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html) 및 [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html)의 새 버전입니다.  
`CreateAutoMLJobV2`를 사용하는 것이 좋습니다. `CreateAutoMLJobV2`는 바이너리 버전인 `CreateAutoMLJob`과 동일한 표 형식 문제 유형은 물론 이미지 또는 텍스트 분류, 시계열 예측과 같은 표 형식이 아닌 문제 유형도 관리할 수 있습니다.

최소한 테이블 형식의 데이터에 대한 모든 실험에는 실험 이름의 사양, 입력 및 출력 데이터의 위치 제공, 예측할 대상 데이터 지정이 필요합니다. 선택 사항으로, 해결하려는 문제의 유형을 지정하고(회귀, 분류, 멀티클래스 분류) 모델링 전략(*누적 앙상블* 또는 *하이퍼파라미터 최적화*)을 선택하고 Autopilot 작업에서 데이터를 훈련하는 데 사용하는 알고리즘 목록을 선택하는 등의 작업을 수행할 수 있습니다.

 실험 실행 후에는 여러 시험을 비교하고 각 모델의 사전 처리 단계, 알고리즘 및 하이퍼파라미터 범위에 대한 세부 정보를 자세히 살펴볼 수 있습니다. [설명가능성](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-explainability.html) 및 [성능](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-insights.html) 보고서를 다운로드할 수 있는 옵션도 있습니다. 제공된 [노트북](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-notebook-output.html )을 사용하여 자동화된 데이터 탐색 결과 또는 후보 모델 정의를 확인합니다.

[CreateAutomlJob을 CreateAutoMLJobV2로 마이그레이션하기](#autopilot-create-experiment-api-migrate-v1-v2)에서 `CreateAutoMLJob`을 `CreateAutoMLJobV2`로 마이그레이션하는 방법에 대한 지침을 확인하세요.

## 필수 파라미터
<a name="autopilot-create-experiment-api-required-params"></a>

------
#### [ CreateAutoMLJobV2 ]

테이블 형식 데이터용 Autopilot 실험을 생성하기 위해 `[CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html)`을 호출할 때는 다음 값을 제공해야 합니다.
+ 작업 이름을 지정하기 위한 `[AutoMLJobName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_RequestSyntax)`.
+ 데이터 소스를 지정하려면 `[AutoMLJobInputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobInputDataConfig)`에서 하나 이상의 `[AutoMLJobChannel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html)`.
+ `[AutoMLJobObjective](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobObjective)` 지표 및 `AutoMLProblemTypeConfig`으로 선택한 지도 학습 문제 유형(바이너리 분류, 멀티클래스 분류, 회귀)을 모두 포함하거나 아예 포함하지 않을 수도 있습니다. 테이블 형식 데이터의 경우 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 유형으로 `[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)`을 선택해야 합니다. `TabularJobConfig`의 `ProblemType` 속성에 지도 학습 문제를 설정합니다.
+ AutoML 작업의 아티팩트를 저장할 Amazon S3 출력 경로를 지정하기 위한 `[OutputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html)`.
+ 데이터 액세스에 사용되는 역할의 ARN을 지정하기 위한 `[RoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-RoleArn)`.

------
#### [ CreateAutoMLJob ]

AutoML 실험을 생성하기 위한 `[CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html)`을 호출할 때는 다음과 같은 네 가지 값을 제공해야 합니다.
+ 작업 이름을 지정하기 위한 `[AutoMLJobName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-AutoMLJobName)`.
+ 데이터 소스를 지정하려면 `[InputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-InputDataConfig)`에서 하나 이상의 `[AutoMLChannel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLChannel.html)`.
+ AutoML 작업의 아티팩트를 저장할 Amazon S3 출력 경로를 지정하기 위한 `[OutputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html)`.
+ 데이터 액세스에 사용되는 역할의 ARN을 지정하기 위한 `[RoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-RoleArn)`.

------

다른 모든 파라미터는 선택 사항입니다.

## 선택적 파라미터
<a name="autopilot-create-experiment-api-optional-params"></a>

다음 섹션에서는 테이블 형식 데이터를 사용할 때 `CreateAutoMLJobV2` API 작업에 전달할 수 있는 몇 가지 선택적 파라미터에 대한 세부 정보를 제공합니다. 이 작업 `CreateAutoMLJob`의 이전 버전에 대한 대체 정보를 확인할 수 있습니다. 그러나 `CreateAutoMLJobV2` 사용을 권장합니다.

### AutoML 작업의 훈련 모드를 설정하는 방법
<a name="autopilot-set-training-mode"></a>

테이블 형식 데이터의 경우 모델 후보를 훈련시키기 위해 데이터에서 실행되는 알고리즘 세트는 모델링 전략(`ENSEMBLING` 또는 `HYPERPARAMETER_TUNING`)에 따라 달라집니다. 다음에서는 이 훈련 모드를 설정하는 방법을 자세히 설명합니다.

공백(또는`null`)으로 유지하면 데이터세트의 크기를 기반으로 `Mode`를 추론합니다.

Autopilot의 누적 앙상블 및 하이퍼파라미터 최적화 훈련 방법에 대한 자세한 내용은 [훈련 모드 및 알고리즘 지원](autopilot-model-support-validation.md)을 참조하세요.****

------
#### [ CreateAutoMLJobV2 ]

테이블 형식 데이터의 경우 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 유형으로 `[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)`을 선택해야 합니다.

`[TabularJobConfig.Mode](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)` 파라미터를 사용하여 AutoML 작업 V2의 [훈련 방법](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html)을 설정할 수 있습니다.

------
#### [ CreateAutoMLJob ]

`[AutoMLJobConfig.Mode](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobConfig.html#sagemaker-Type-AutoMLJobConfig-Mode)` 파라미터를 사용하여 AutoML 작업의 [훈련 방법](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html)을 설정할 수 있습니다.

------

### AutoML 작업 훈련을 위한 기능 및 알고리즘 선택 방법
<a name="autopilot-feature-selection"></a>

#### 기능 선택
<a name="autopilot-automl-job-feature-selection-api"></a>

Autopilot은 기능 선택 및 기능 추출을 포함한 자동 데이터 사전 처리 단계를 제공합니다. 하지만 `FeatureSpecificatioS3Uri` 속성과 함께 훈련에 사용할 기능을 수동으로 제공할 수도 있습니다.

선택한 기능은 JSON 파일에 다음 형식으로 포함되어야 합니다.

```
{ "FeatureAttributeNames":["col1", "col2", ...] }
```

`["col1", "col2", ...]`에 나열된 값은 대소문자를 구분합니다. 입력 데이터에 있는 열 이름의 서브셋인 고유한 값을 포함하는 문자열 목록이어야 합니다.

**참고**  
기능으로 제공된 열 목록에는 대상 열을 포함할 수 없습니다.

------
#### [ CreateAutoMLJobV2 ]

테이블 형식 데이터의 경우 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 유형으로 `[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)`을 선택해야 합니다.

`[TabularJobConfig.FeatureSpecificationS3Uri](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)` 파라미터를 사용하여 선택한 기능의 URL을 설정할 수 있습니다.

------
#### [ CreateAutoMLJob ]

[CreateAutomlJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html) API 내에서 다음과 같은 형식으로 [AutoMLCandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidateGenerationConfig.html)의 `FeatureSpecificatioS3Uri` 속성을 설정할 수 있습니다.

```
{
    "[AutoMLJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-AutoMLJobConfig)": {
        "[CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobConfig.html#sagemaker-Type-AutoMLJobConfig-CandidateGenerationConfig)": {
            "[FeatureSpecificationS3Uri](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidateGenerationConfig.html#sagemaker-Type-AutoMLCandidateGenerationConfig-FeatureSpecificationS3Uri)":"string"
            },
       }
  }
```

------

#### 알고리즘 선택
<a name="autopilot-automl-job-algorithms-selection-api"></a>

기본적으로 Autopilot 작업은 데이터세트에서 사전 정의된 알고리즘 목록을 실행하여 모델 후보를 학습시킵니다. 알고리즘 목록은 작업에 사용되는 훈련 모드(`ENSEMBLING`또는`HYPERPARAMETER_TUNING`)에 따라 달라집니다.

알고리즘 기본 선택 사항의 서브셋을 제공할 수 있습니다.

------
#### [ CreateAutoMLJobV2 ]

테이블 형식 데이터의 경우 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 유형으로 `[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)`을 선택해야 합니다.

[CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html)의 `AlgorithmsConfig` 속성에서 선택한 `AutoMLAlgorithms`의 배열을 지정할 수 있습니다.

다음은 앙상블 훈련 모드에서 `AutoMLAlgorithms` 필드의 세 가지 알고리즘(“xgboost”, “fastai”, “catboost”)을 정확히 나열하는 `AlgorithmsConfig` 속성의 예입니다.

```
{
   "[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)": {
        "[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)": {
          "[Mode](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)": "ENSEMBLING",
          "[CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html)": {
            "[AlgorithmsConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html#sagemaker-Type-CandidateGenerationConfig-AlgorithmsConfig)":[
               {"[AutoMLAlgorithms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html)":["xgboost", "fastai", "catboost"]}
            ]
         },
       },
     },
  }
```

------
#### [ CreateAutoMLJob ]

[AutoMLCandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidateGenerationConfig.html)의 `AlgorithmsConfig` 속성에서 선택한 `AutoMLAlgorithms`의 배열을 지정할 수 있습니다.

다음은 앙상블 훈련 모드에서 `AutoMLAlgorithms` 필드의 세 가지 알고리즘(“xgboost”, “fastai”, “catboost”)을 정확히 나열하는 `AlgorithmsConfig` 속성의 예입니다.

```
{
   "[AutoMLJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-AutoMLJobConfig)": {
        "[CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobConfig.html#sagemaker-Type-AutoMLJobConfig-CandidateGenerationConfig)": {
            "[AlgorithmsConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidateGenerationConfig.html#sagemaker-Type-AutoMLCandidateGenerationConfig-AlgorithmsConfig)":[
               {"[AutoMLAlgorithms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html#sagemaker-Type-AutoMLAlgorithmConfig-AutoMLAlgorithms)":["xgboost", "fastai", "catboost"]}
            ]
         },
     "Mode": "ENSEMBLING" 
  }
```

------

훈련 `Mode`에 따라 사용 가능한 알고리즘 목록은 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html#sagemaker-Type-AutoMLAlgorithmConfig-AutoMLAlgorithms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html#sagemaker-Type-AutoMLAlgorithmConfig-AutoMLAlgorithms)을 참조하세요. 각 알고리즘에 대한 자세한 내용은 [훈련 모드 및 알고리즘 지원](autopilot-model-support-validation.md)을 참조하세요.

### AutoML 작업의 훈련 및 검증 데이터세트를 지정하는 방법
<a name="autopilot-data-sources-training-or-validation"></a>

자체 검증 데이터세트와 사용자 지정 데이터 분할 비율을 제공하거나 Autopilot이 데이터세트를 자동으로 분할하도록 할 수 있습니다.

------
#### [ CreateAutoMLJobV2 ]

각 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html) 개체(필수 파라미터 [AutoMLJobinputDataConfig](https://docs.aws.amazon.com/sagemaker-api/src/AWSSageMakerAPIDoc/build/server-root/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobInputDataConfig) 참조)에는 기계 학습 모델을 구축할 때 데이터를 사용하는 방법을 지정하는 값 중 `training` 또는 `validation`으로 설정할 수 있는 `ChannelType`이 있습니다. 데이터 소스를 하나 이상 제공해야 하며 훈련 데이터용 및 검증 데이터용으로 최대 두 개의 데이터 소스가 허용됩니다.

데이터를 훈련 및 검증 데이터세트로 분할하는 방법은 데이터 원본이 한 개 또는 두 개인지에 따라 달라집니다.
+ **데이터 소스가 하나**뿐인 경우 `ChannelType`은 기본적으로 `training`으로 설정되며 이 값을 가져야 합니다.
  + [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html)의 `ValidationFraction` 값이 설정되지 않은 경우, 기본적으로 이 소스의 데이터 중 0.2(20%)가 검증에 사용됩니다.
  + `ValidationFraction`을 0과 1 사이의 값으로 설정하면 데이터세트가 지정된 값을 기준으로 분할됩니다. 여기서 값은 검증에 사용되는 데이터세트의 비율을 지정합니다.
+ **데이터 소스가 두 개** 있는 경우, `AutoMLJobChannel` 개체 중 하나의 `ChannelType`을 기본값인 `training`으로 설정해야 합니다. 다른 데이터 소스의 `ChannelType`은 `validation`으로 설정해야 합니다. 두 데이터 소스는 CSV 또는 Parquet으로 형식이 같고 스키마가 같아야 합니다. 각 소스의 모든 데이터가 훈련 또는 검증에 사용되므로 이 경우에 `ValidationFraction`에 대한 값을 설정하지 않아야 합니다. 이 값을 설정하면 오류가 발생합니다.

------
#### [ CreateAutoMLJob ]

각 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLChannel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLChannel.html) 개체(필수 파라미터 [InputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-InputDataConfig) 참조)에는 기계 학습 모델을 구축할 때 데이터를 사용하는 방법을 지정하는 값 중 `training` 또는 `validation`으로 설정할 수 있는 `ChannelType`이 있습니다. 데이터 소스를 하나 이상 제공해야 하며 훈련 데이터용 및 검증 데이터용으로 최대 두 개의 데이터 소스가 허용됩니다.

데이터를 훈련 및 검증 데이터세트로 분할하는 방법은 데이터 원본이 한 개 또는 두 개인지에 따라 달라집니다.
+ **데이터 소스가 하나**뿐인 경우 `ChannelType`은 기본적으로 `training`으로 설정되며 이 값을 가져야 합니다.
  + [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html)의 `ValidationFraction` 값이 설정되지 않은 경우, 기본적으로 이 소스의 데이터 중 0.2(20%)가 검증에 사용됩니다.
  + `ValidationFraction`을 0과 1 사이의 값으로 설정하면 데이터세트가 지정된 값을 기준으로 분할됩니다. 여기서 값은 검증에 사용되는 데이터세트의 비율을 지정합니다.
+ **데이터 소스가 두 개** 있는 경우, `AutoMLChannel` 개체 중 하나의 `ChannelType`을 기본값인 `training`으로 설정해야 합니다. 다른 데이터 소스의 `ChannelType`은 `validation`으로 설정해야 합니다. 두 데이터 소스는 CSV 또는 Parquet으로 형식이 같고 스키마가 같아야 합니다. 각 소스의 모든 데이터가 훈련 또는 검증에 사용되므로 이 경우에 `ValidationFraction`에 대한 값을 설정하지 않아야 합니다. 이 값을 설정하면 오류가 발생합니다.

------

Autopilot의 분할 및 교차 검증에 대한 자세한 내용은 [Autopilot에서의 교차 검증](autopilot-metrics-validation.md#autopilot-cross-validation)을 참조하세요.

### AutoML 작업의 문제 유형을 설정하는 방법
<a name="autopilot-set-problem-type-api"></a>

------
#### [ CreateAutoMLJobV2 ]

테이블 형식 데이터의 경우 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 유형으로 `[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)`을 선택해야 합니다.

`[TabularJobConfig.ProblemType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)` 파라미터를 사용하여 AutoML 작업 V2의 모델 후보에 사용할 수 있는 지도 학습 문제의 유형(바이너리 분류, 멀티클래스 분류, 회귀)을 추가로 지정할 수 있습니다.

------
#### [ CreateAutoMLJob ]

`[CreateAutoPilot.ProblemType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-ProblemType)` 파라미터를 사용하여 AutoML 작업에서 [문제 유형](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-datasets-problem-types.html#autopilot-problem-types)을 설정할 수 있습니다. 이것은 Autopilot에서 시도하는 사전 처리 및 알고리즘의 종류를 제한합니다. 작업이 완료되고 `[CreateAutoPilot.ProblemType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-ProblemType)`을 설정하면 `[ResolvedAttribute.ProblemType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResolvedAttributes.html)`은 사용자가 설정한 `ProblemType`과 일치하게 됩니다. 이를 공백(또는`null`)으로 유지하면 사용자를 대신하여 `ProblemType`를 추론합니다.

------

**참고**  
경우에 따라 Autopilot이 `ProblemType`을 충분한 신뢰도로 추론할 수 없으며, 이 경우에는 사용자가 값을 제공해야 작업을 성공적으로 수행할 수 있습니다.

### AutoML 작업에 샘플 가중치를 추가하는 방법
<a name="autopilot-add-sample-weights-api"></a>

테이블 형식 데이터세트에 샘플 가중치 열을 추가한 다음 이를 AutoML 작업에 전달하여 훈련 및 평가 중에 데이터세트 행에 가중치를 적용하도록 요청할 수 있습니다.

샘플 가중치에 대한 지원은 [앙상블 모드](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-training-mode)에서만 사용할 수 있습니다. 가중치는 음수가 아닌 숫자여야 합니다. 가중치 값이 유효하지 않거나 없는 데이터 포인트는 제외됩니다. 사용 가능한 객체 지표에 대한 자세한 내용은 [Autopilot 가중치 지표](autopilot-metrics-validation.md#autopilot-weighted-metrics)을 참조하세요.

------
#### [ CreateAutoMLJobV2 ]

테이블 형식 데이터의 경우 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 유형으로 `[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)`을 선택해야 합니다.

실험을 생성할 때 샘플 가중치를 설정하려면([CreateAutoMLJobv2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) 참조) `TabularJobConfig` 개체의 `SampleWeightAttributeName` 속성에 샘플 가중치 열의 이름을 전달할 수 있습니다. 이렇게 하면 목표 지표에서 모델 후보 훈련, 평가 및 선택의 가중치를 사용할 수 있습니다.

------
#### [ CreateAutoMLJob ]

실험을 생성할 때 샘플 가중치를 설정하려면([CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html) 참조) [AutoMLChannel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLChannel.html) 개체의 `SampleWeightAttributeName` 속성에 샘플 가중치 열의 이름을 전달할 수 있습니다. 이렇게 하면 목표 지표에서 모델 후보 훈련, 평가 및 선택의 가중치를 사용할 수 있습니다.

------

### 대규모 데이터세트에 대해 EMR Serverless에서 원격 작업을 시작하도록 AutoML을 구성하는 방법
<a name="autopilot-set-emr-serverless-api-tabular"></a>

대용량 데이터세트를 처리하는 데 추가 컴퓨팅 리소스가 필요할 때 Amazon EMR Serverless에서 원격 작업을 자동으로 시작하도록 AutoML 작업 V2를 구성할 수 있습니다. 필요한 경우 EMR Serverless로 원활하게 전환하면 AutoML 작업은 사용자의 수동 개입 없이 처음에 프로비저닝된 리소스를 초과하는 데이터세트를 처리할 수 있습니다. EMR Serverless는 테이블 형식 및 시계열 문제 유형에 사용할 수 있습니다. 5GB보다 큰 테이블 형식 데이터세트의 경우 이 옵션을 설정하는 것이 좋습니다.

AutoML 작업 V2가 대규모 데이터세트의 경우 EMR Serverless로 자동으로 전환되도록 하려면 AutoML 작업 V2 입력 요청의 `AutoMLComputeConfig`에 `ExecutionRoleARN` 필드가 포함된 `EmrServerlessComputeConfig` 객체를 제공해야 합니다.

`ExecutionRoleARN` 는 EMR Serverless 작업을 실행하는 데 필요한 권한을 AutoML 작업 V2에 부여하는 IAM 역할의 ARN입니다.

이 역할은 다음과 같은 신뢰 관계를 맺고 있어야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "emr-serverless.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

그리고 다음에 대한 권한을 부여합니다.
+ EMR Serverless 애플리케이션을 생성, 나열 및 업데이트합니다.
+ EMR Serverless 애플리케이션에서 작업 실행을 시작, 나열, 가져오기 또는 취소합니다.
+ EMR Serverless 리소스에 태그를 지정합니다.
+ 실행을 위해 IAM 역할을 EMR Serverless 서비스에 전달합니다.

  `iam:PassRole` 권한을 부여하면 AutoML 작업 V2가 일시적으로 `EMRServerlessRuntimeRole-*` 역할을 수임하여 EMR Serverless 서비스에 전달할 수 있습니다. 이는 EMR Serverless 작업 실행 환경에서 데이터 액세스를 위한 Amazon S3, 로깅을 위한 CloudWatch, AWS Glue 데이터 카탈로그에 대한 액세스 또는 워크로드 요구 사항에 따른 기타 AWS 서비스와 같이 런타임 중에 필요한 다른 서비스 및 리소스에 액세스하는 데 사용하는 IAM 역할입니다.

  이 [역할 권한에 대한 자세한 내용은 Amazon EMR Serverless의 작업 런타임](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html) 역할을 참조하세요.

제공된 JSON 문서에 정의된 IAM 정책은 다음과 같은 권한을 부여합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "EMRServerlessCreateApplicationOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:CreateApplication",
            "Resource": "arn:aws:emr-serverless:*:*:/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessListApplicationOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:ListApplications",
            "Resource": "arn:aws:emr-serverless:*:*:/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessApplicationOperations",
            "Effect": "Allow",
            "Action": [
                "emr-serverless:UpdateApplication",
                "emr-serverless:GetApplication"
            ],
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessStartJobRunOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:StartJobRun",
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessListJobRunOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:ListJobRuns",
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessJobRunOperations",
            "Effect": "Allow",
            "Action": [
                "emr-serverless:GetJobRun",
                "emr-serverless:CancelJobRun"
            ],
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*/jobruns/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessTagResourceOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:TagResource",
            "Resource": "arn:aws:emr-serverless:*:*:/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "IAMPassOperationForEMRServerless",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::*:role/EMRServerlessRuntimeRole-*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
         }
    ]
}
```

------

## CreateAutomlJob을 CreateAutoMLJobV2로 마이그레이션하기
<a name="autopilot-create-experiment-api-migrate-v1-v2"></a>

`CreateAutoMLJob` 사용자는 `CreateAutoMLJobV2`로 마이그레이션하는 것이 좋습니다.

이 섹션에서는 [CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker-api/src/AWSSageMakerAPIDoc/build/server-root/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#API_CreateAutoMLJob_RequestSyntax)과 [CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_RequestSyntax) 간 입력 파라미터 차이점을 설명하며 입력 요청 객체 및 속성의 위치, 이름, 구조의 두 버전 간 변경 사항을 강조합니다.
+ **버전 간 변경 사항이 없는 속성을 요청합니다.**

  ```
  {
     "AutoMLJobName": "string",
     "AutoMLJobObjective": { 
        "MetricName": "string"
     },
     "ModelDeployConfig": { 
        "AutoGenerateEndpointName": boolean,
        "EndpointName": "string"
     },
     "OutputDataConfig": { 
        "KmsKeyId": "string",
        "S3OutputPath": "string"
     },
     "RoleArn": "string",
     "Tags": [ 
        { 
           "Key": "string",
           "Value": "string"
        }
     ]
  }
  ```
+ **버전 간 위치 및 구조를 변경한 속성을 요청합니다.**

  `DataSplitConfig`, `Security Config`, `CompletionCriteria`, `Mode`, `FeatureSpecificationS3Uri`, `SampleWeightAttributeName`, `TargetAttributeName` 속성은 위치를 변경했습니다.

------
#### [ CreateAutoMLJob ]

  ```
  { 
      "AutoMLJobConfig": { 
          "Mode": "string",
          "CompletionCriteria": { 
              "MaxAutoMLJobRuntimeInSeconds": number,
              "MaxCandidates": number,
              "MaxRuntimePerTrainingJobInSeconds": number
          },
          "DataSplitConfig": { 
              "ValidationFraction": number
          },
          "SecurityConfig": { 
              "EnableInterContainerTrafficEncryption": boolean,
              "VolumeKmsKeyId": "string",
              "VpcConfig": { 
              "SecurityGroupIds": [ "string" ],
              "Subnets": [ "string" ]
              }
          },
          "CandidateGenerationConfig": { 
              "FeatureSpecificationS3Uri": "string"
          }
      },
      "GenerateCandidateDefinitionsOnly": boolean,
      "ProblemType": "string"
  }
  ```

------
#### [ CreateAutoMLJobV2 ]

  ```
  {       
      "AutoMLProblemTypeConfig": {
          "TabularJobConfig": {
              "Mode": "string",
              "ProblemType": "string",
              "GenerateCandidateDefinitionsOnly": boolean,
              "CompletionCriteria": { 
                  "MaxAutoMLJobRuntimeInSeconds": number,
                  "MaxCandidates": number,
                  "MaxRuntimePerTrainingJobInSeconds": number
              },
              "FeatureSpecificationS3Uri": "string",
              "SampleWeightAttributeName": "string",
              "TargetAttributeName": "string"
          }
      },
      "DataSplitConfig": { 
          "ValidationFraction": number
      },
      "SecurityConfig": { 
          "EnableInterContainerTrafficEncryption": boolean,
          "VolumeKmsKeyId": "string",
          "VpcConfig": { 
              "SecurityGroupIds": [ "string" ],
              "Subnets": [ "string" ]
          }
      }
  }
  ```

------
+ **다음 속성은 버전 간 위치 및 구조를 변경했습니다.**

  다음 JSON은 어떻게 유형 [AutoMLCandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidateGenerationConfig.html)의 [AutoMLJobConfig.CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobConfig.html#sagemaker-Type-AutoMLJobConfig-CandidateGenerationConfig)가 V2에서 유형 [CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html)의 [AutoMLProblemTypeConfig.TabularJobConfig.CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_RequestSyntax)로 이동했는지 보여줍니다.

------
#### [ CreateAutoMLJob ]

  ```
  {
     "AutoMLJobConfig": { 
        "CandidateGenerationConfig": { 
           "AlgorithmsConfig": [ 
              { 
                 "AutoMLAlgorithms": [ "string" ]
              }
           ],
           "FeatureSpecificationS3Uri": "string"
        }
  }
  ```

------
#### [ CreateAutoMLJobV2 ]

  ```
  {
      "AutoMLProblemTypeConfig": {
          "TabularJobConfig": {
              "CandidateGenerationConfig": { 
                  "AlgorithmsConfig": [ 
                      { 
                      "AutoMLAlgorithms": [ "string" ]
                      }
                  ],
              },
          }
      },
  }
  ```

------
+ **이름 및 구조를 변경한 속성을 요청합니다.**

  다음 JSON은 어떻게 [InputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-InputDataConfig)[AutoMLChannel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLChannel.html) 배열)가 V2에서 [AutoMLJobInputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobInputDataConfig)([AutoMLJobChannel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html) 배열)로 변경되었는지 보여줍니다. 속성 `SampleWeightAttributeName` 및 `TargetAttributeName`은 `InputDataConfig`에서 나와 `AutoMLProblemTypeConfig`로 이동합니다.

------
#### [ CreateAutoMLJob ]

  ```
  {    
      "InputDataConfig": [ 
          { 
              "ChannelType": "string",
              "CompressionType": "string",
              "ContentType": "string",
              "DataSource": { 
                  "S3DataSource": { 
                      "S3DataType": "string",
                      "S3Uri": "string"
                  }
              },
              "SampleWeightAttributeName": "string",
              "TargetAttributeName": "string"
          }
      ]
  }
  ```

------
#### [ CreateAutoMLJobV2 ]

  ```
  {    
      "AutoMLJobInputDataConfig": [ 
          { 
              "ChannelType": "string",
              "CompressionType": "string",
              "ContentType": "string",
              "DataSource": { 
                  "S3DataSource": { 
                      "S3DataType": "string",
                      "S3Uri": "string"
                  }
              }
          }
      ]
  }
  ```

------

# Autopilot 데이터세트 및 문제 유형
<a name="autopilot-datasets-problem-types"></a>

테이블 형식 데이터 (즉, 각 열에 특정 데이터 유형의 특징이 포함되고 각 행에는 관측치가 포함된 데이터) 의 경우, Autopilot은 AutoML 작업의 모델 후보에 사용할 수 있는 지도 학습 문제 유형 (예: 바이너리 분류 또는 회귀) 을 지정하거나 사용자가 제공한 데이터를 기반으로 사용자를 대신하여 탐지할 수 있는 옵션을 제공합니다. Autopilot은 여러 데이터 형식과 데이터 유형도 지원합니다.

**Topics**
+ [Autopilot 데이터세트, 데이터 유형 및 형식](#autopilot-datasets)
+ [Autopilot 문제 유형](#autopilot-problem-types)

## Autopilot 데이터세트, 데이터 유형 및 형식
<a name="autopilot-datasets"></a>

Autopilot은 CSV 파일 또는 Parquet 파일 형식의 테이블 형식 데이터를 지원합니다. 각 열에는 특정 데이터 유형의 기능이 포함되고 각 행에는 관측값이 포함됩니다. 이 두 파일 형식의 속성은 상당히 다릅니다.
+ **CSV**(쉼표로 구분된 값)는 사람이 읽을 수 있는 일반 텍스트로 데이터를 저장하는 행 기반 파일 형식으로, 다양한 범위의 애플리케이션에서 지원되므로 데이터 교환에 널리 사용됩니다.
+ **Parquet**는 행 기반 파일 형식보다 데이터를 더 효율적으로 저장하고 처리하는 열 기반 파일 형식입니다. 따라서 빅 데이터 문제에 더 나은 옵션입니다.

열에 허용되는 **데이터 유형**에는 쉼표로 구분된 숫자 문자열로 구성된 숫자, 범주, 텍스트 및 시계열이 포함됩니다. [Autopilot이 **시계열** 시퀀스를 처리하는 것을 감지하면 tsfresh 라이브러리에서 제공하는 특수 기능 변환기를 통해 데이터를 처리합니다.](https://tsfresh.readthedocs.io/en/latest/text/list_of_features.html) 이 라이브러리는 시계열을 입력으로 받아 시계열의 최대 절대값 또는 자기상관에 대한 설명 통계와 같은 특징을 출력합니다. 이렇게 출력된 기능은 세 가지 문제 유형 중 하나에 대한 입력으로 사용됩니다.

Autopilot은 최대 수백 GB의 대규모 데이터세트를 기반으로 기계 학습 모델을 구축할 수 있도록 지원합니다. 입력 데이터세트의 기본 리소스 한도 및 이를 늘리는 방법에 대한 자세한 내용은 [Autopilot 할당량](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-quotas.html)을 참조하세요.

## Autopilot 문제 유형
<a name="autopilot-problem-types"></a>

테이블 형식 데이터의 경우 다음과 같이 모델 후보에 사용할 수 있는 지도 학습 문제의 유형을 추가로 지정합니다.

### 회귀
<a name="autopilot-automate-model-development-problem-types-regression"></a>

회귀는 상관 관계가 있는 하나 이상의 다른 변수 또는 속성을 기반으로 종속 대상 변수의 값을 추정합니다. 예를 들어 욕실 및 침실 수, 주택 및 정원의 평방 피트와 같은 특징을 사용하여 주택 가격을 예측합니다. 회귀 분석을 통해 이들 특징 중 하나 이상을 입력으로 사용하는 모델을 만들고 주택 가격을 예측할 수 있습니다.

### 바이너리 분류
<a name="autopilot-automate-model-development-problem-types-binary-classification"></a>

바이너리 분류는 속성에 따라 미리 정의되고 상호 배타적인 두 클래스 중 하나에 개인을 할당하는 감독 학습의 한 유형입니다. 올바르게 레이블이 지정된 객체가 있는 속성을 제공하는 예제를 사용하여 모델이 훈련되므로 지도가 가능합니다. 진단 테스트의 결과에 기반하여 개인이 질병을 갖고 있는지 여부에 대한 의학적 진단은 바이너리 분류의 예입니다.

### 멀티클래스 분류
<a name="autopilot-automate-model-development-problem-types-multiclass-classification"></a>

멀티클래스 분류는 속성에 따라 여러 클래스 중 하나에 개인을 할당하는 감독 학습의 한 유형입니다. 올바르게 레이블이 지정된 객체가 있는 속성을 제공하는 예제를 사용하여 모델이 훈련되므로 지도가 가능합니다. 예를 들어 텍스트 문서와 가장 관련성이 높은 주제를 예측합니다. 문서는 종교, 정치, 금융 또는 다양한 사전 정의된 주제 클래스 중 하나에 대한 것으로 분류될 수 있습니다.

# 훈련 모드 및 알고리즘 지원
<a name="autopilot-model-support-validation"></a>

Autopilot은 머신 러닝 문제를 해결하고, 품질 및 객관적 지표에 대해 보고하고, 필요할 때 교차 검증을 자동으로 사용할 수 있도록 다양한 훈련 모드와 알고리즘을 지원합니다.

## 훈련 모드
<a name="autopilot-training-mode"></a>

SageMaker Autopilot은 데이터세트 크기를 기반으로 훈련 방법을 자동으로 선택하거나 수동으로 선택할 수 있습니다. 다음과 같은 옵션이 있습니다.
+ **앙상블** - Autopilot은 [AutoGluon](https://auto.gluon.ai/scoredebugweight/tutorials/tabular_prediction/index.html) 라이브러리를 사용하여 여러 기본 모델을 훈련합니다. 데이터세트에 가장 적합한 조합을 찾기 위해 앙상블 모드에서는 다양한 모델 및 메타 파라미터 설정을 사용하여 10회의 시험을 실행합니다. 그런 다음 Autopilot은 적층 앙상블 방법을 사용하여 이러한 모델을 결합하여 최적의 예측 모델을 생성합니다. 테이블 형식 데이터에 대한 앙상블 모드에서 Autopilot이 지원하는 알고리즘 목록은 다음 **알고리즘 지원** 섹션을 참조하세요.
+ **하이퍼파라미터 최적화 (HPO)** - Autopilot은 데이터세트에서 훈련 작업을 실행하는 동안 베이지안 최적화 또는 다중 충실도 최적화를 사용하여 하이퍼파라미터를 조정하여 모델의 최적 버전을 찾습니다. HPO 모드는 데이터세트와 가장 관련이 있는 알고리즘을 선택하고 모델을 조정하는 데 가장 적합한 하이퍼파라미터 범위를 선택합니다. 모델을 조정하기 위해 HPO 모드에서는 최대 100회의 시도(기본값)를 실행하여 선택한 범위 내에서 최적의 하이퍼파라미터 설정을 찾습니다. 데이터세트 크기가 100MB 미만인 경우 Autopilot은 베이지안 최적화를 사용합니다. Autopilot은 데이터세트가 100MB를 초과하는 경우 다중 충실도 최적화를 선택합니다.

  다중 충실도 최적화에서는 훈련 컨테이너에서 지표를 지속적으로 내보냅니다. 선택한 목표 지표에 대해 성능이 좋지 않은 시험은 조기에 중단됩니다. 성과가 좋은 시험에는 더 많은 리소스가 할당됩니다.

  HPO 모드에서 Autopilot이 지원하는 알고리즘 목록은 다음 **알고리즘 지원** 섹션을 참조하세요.
+ **자동** - Autopilot은 데이터세트 크기에 따라 앙상블링 모드 또는 HPO 모드를 자동으로 선택합니다. 데이터세트가 100MB를 초과하는 경우 Autopilot은 HPO를 선택합니다. 그렇지 않으면 앙상블 모드를 선택합니다. 다음과 같은 경우 Autopilot이 데이터세트 크기를 읽지 못할 수 있습니다.
  + AutoML 작업에 대해 VPC(Virtual Private Cloud) 모드를 활성화한 경우 데이터세트를 포함하는 S3 버킷은 VPC에서의 액세스만 허용합니다.
  + 데이터세트의 입력 [S3DataType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLS3DataSource.html#sagemaker-Type-AutoMLS3DataSource-S3DataType)은 `ManifestFile`입니다.
  + 입력 [S3Uri](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLS3DataSource.html#sagemaker-Type-AutoMLS3DataSource-S3Uri)에는 1000개 이상의 항목이 포함되어 있습니다.

  Autopilot이 데이터세트 크기를 읽을 수 없는 경우 기본적으로 HPO 모드를 선택합니다.

**참고**  
최적의 런타임과 성능을 위해 100MB 미만의 데이터세트에는 앙상블 훈련 모드를 사용합니다.

## 알고리즘 지원
<a name="autopilot-algorithm-support"></a>

**HPO 모드**에서 Autopilot은 다음과 같은 유형의 기계 학습 알고리즘을 지원합니다.
+  [선형 학습기](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) - 분류 또는 회귀 문제를 해결할 수 있는 지도 학습 알고리즘입니다.
+ [XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) – 그라디언트 부스팅은 더욱 단순하고 약한 모델 세트의 추정치의 앙상블을 결합하여 대상 변수를 정확하게 예측하려 시도하는 지도 학습 알고리즘입니다.
+ 딥 러닝 알고리즘 - 다중 계층 퍼셉트론(MLP) 및 피드포워드 인공 신경망입니다. 이 알고리즘은 선형적으로 분리할 수 없는 데이터를 처리할 수 있습니다.

**참고**  
기계 학습 문제에 사용할 알고리즘을 지정할 필요가 없습니다. Autopilot은 학습에 적합한 알고리즘을 자동으로 선택합니다.

**앙상블링 모드**에서 Autopilot은 다음과 같은 유형의 기계 학습 알고리즘을 지원합니다.
+ [LightGBM](https://docs.aws.amazon.com/sagemaker/latest/dg/lightgbm.html) - 그라디언트 부스팅과 함께 트리 기반 알고리즘을 사용하는 최적의 프레임워크입니다. 이 알고리즘은 깊이가 아닌 폭이 커지고 속도에 고도로 최적화된 트리를 사용합니다.
+ [CatBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/catboost.html) - 그라디언트 부스팅과 함께 트리 기반 알고리즘을 사용하는 프레임워크입니다. 범주형 변수를 처리하도록 최적화되었습니다.
+ [XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) - 폭이 아닌 깊이가 증가하는 그라디언트 부스팅과 함께 트리 기반 알고리즘을 사용하는 프레임워크입니다.
+ [랜덤 포레스트](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html) - 대체물이 있는 데이터의 무작위 하위 샘플에 여러 가지 결정 트리를 사용하는 트리 기반 알고리즘입니다. 트리는 각 수준에서 최적의 노드로 분할됩니다. 각 트리의 결정을 함께 평균화하여 과적합을 방지하고 예측을 개선합니다.
+ [추가 트리](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.ExtraTreesClassifier.html#sklearn.ensemble.ExtraTreesClassifier) - 전체 데이터세트에서 여러 가지 결정 트리를 사용하는 트리 기반 알고리즘입니다. 트리는 각 수준에서 무작위로 분할됩니다. 각 트리의 결정을 평균화하여 과적합을 방지하고 예측을 개선합니다. 랜덤 포레스트 알고리즘에 비해 추가 트리는 어느 정도의 무작위성을 높입니다.
+ [선형 모델](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.linear_model) - 선형 방정식을 사용하여 관측 데이터의 두 변수 간 관계를 모델링하는 프레임워크입니다.
+ 신경망 torch - [Pytorch](https://pytorch.org/)를 사용하여 구현된 신경망 모델입니다.
+ 신경망 fast.ai - [fast.ai](https://www.fast.ai/)를 사용하여 구현된 신경망 모델입니다.

# 지표 및 검증
<a name="autopilot-metrics-validation"></a>

이 가이드에서는 기계 학습 모델 성능을 측정하는 데 사용할 수 있는 지표와 검증 기법을 보여줍니다. Amazon SageMaker Autopilot은 기계 학습 모델 후보의 예측 품질을 측정하는 지표를 생성합니다. 후보에 대해 계산된 지표는 [MetricDatum](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_MetricDatum.html) 유형의 배열을 사용하여 지정됩니다.

## Autopilot 지표
<a name="autopilot-metrics"></a>

다음 목록에는 Autopilot 내에서 현재 모델 성능을 측정하는 데 사용할 수 있는 지표 이름이 포함되어 있습니다.

**참고**  
Autopilot은 샘플 가중치를 지원합니다. 샘플 가중치 및 사용 가능한 객관적 지표에 대한 자세한 내용은 [Autopilot 가중치 지표](#autopilot-weighted-metrics)를 참조하세요.

사용할 수 있는 지표는 아래와 같습니다.

**`Accuracy`**  
 전체 (올바르게 및 잘못) 분류된 항목 수 대비 올바르게 분류된 항목 수의 비율입니다. 바이너리 분류와 멀티클래스 분류 모두에 사용됩니다. 정확도는 예측된 클래스 값이 실제 값에 얼마나 가까운지를 측정합니다. 정확도 지표의 값은 0에서 1 사이입니다. 값 1은 완벽한 정확도를 나타내고, 0은 완벽한 부정확도를 나타냅니다.

**`AUC`**  
 곡선 아래 면적(AUC) 지표는 로지스틱 회귀와 같이 확률을 반환하는 알고리즘에 따른 바이너리 분류를 비교하고 평가하는 데 사용됩니다. 확률을 분류에 매핑하기 위해 이들을 임계값과 비교합니다.  
관련 곡선은 수신기 작동 특성 곡선입니다. 이 곡선은 예측(또는 재현율)의 진양성 비율(TPR)과 위양성 비율(FPR)을 임계값의 함수로 나타내며, 임계값을 초과하면 양성 예측으로 간주됩니다. 임계값을 높이면 위양성은 줄어들지만 위음성은 더 많아집니다.  
AUC는 이 수신기 작동 특성 곡선 아래의 면적입니다. 따라서 AUC는 가능한 모든 분류 임계값에 걸쳐 모델 성능을 집계하여 측정합니다. AUC 점수는 0과 1 사이입니다. 1점은 완벽한 정확도를 나타내고, 0.5점은 예측이 무작위 분류기보다 우수하지 않음을 나타냅니다.

**`BalancedAccuracy`**  
`BalancedAccuracy`는 모든 예측에 대비한 정확한 예측의 비율을 측정하는 지표입니다. 이 비율은 양성(P) 값와 음성(N) 값의 갯수의 합계로 진양성(TP) 및 진음성(TN)을 정규화한 후 계산됩니다. 이 값은 바이너리 및 멀티클래스 분류에 모두 사용되며 0.5\$1 ((TP/P) \$1 (TN/N))로 정의되며 값은 0에서 1까지의 범위를 갖습니다. 예를 들어 이메일의 1% 만이 스팸인 경우처럼 `BalancedAccuracy`는 불균형한 데이터세트에서 양성 또는 음성의 갯수가 서로 크게 다를 때 정확도를 더 잘 측정할 수 있습니다.

**`F1`**  
`F1` 점수는 정밀도와 재현율의 조화 평균으로, F1 = 2 \$1 (정밀도 \$1 재현율)/(정밀도\$1재현율)로 정의됩니다. 이는 전통적으로 양성과 음성이라고 하는 클래스로 바이너리 분류를 하는 데 사용됩니다. 예측은 실제 (올바른) 클래스와 일치하면 참이고 그렇지 않으면 거짓이라고 합니다.  
정밀도는 모든 긍정적 예측에 대한 진양성 예측의 비율이며, 여기에는 데이터세트의 위양성도 포함됩니다. 정밀도는 양성 클래스를 예측할 때 예측의 품질을 측정합니다.  
재현율(또는 민감도)은 모든 실제 양성 인스턴스에 대한 진양성 예측의 비율입니다. 재현율은 모델이 데이터세트의 실제 클래스 구성원을 얼마나 완벽하게 예측하는지 측정합니다.  
F1 점수는 0과 1 사이입니다. 1점은 가능한 최고의 성과를 나타내고, 0점은 최악을 나타냅니다.

**`F1macro`**  
이 `F1macro` 점수는 F1 점수를 멀티클래스 분류 문제에 적용합니다. 정밀도와 재현율을 계산한 다음 조화 평균을 취해 각 클래스의 F1 점수를 계산합니다. 마지막으로 `F1macro` 점수를 구하기 위해 개별 점수의 `F1macro` 평균을 구합니다. `F1macro` 점수는 0과 1 사이입니다. 1점은 가능한 최고의 성과를 나타내고, 0점은 최악을 나타냅니다.

**`InferenceLatency`**  
추론 지연 시간은 모델 예측을 요청한 후 모델이 배포되는 실시간 엔드포인트에서 수신하기까지 걸리는 대략적인 시간입니다. 이 지표는 초 단위로 측정되며 앙상블 모드에서만 사용할 수 있습니다.

**`LogLoss`**  
교차 엔트로피 손실이라고도 하는 로그 손실은 출력 자체가 아닌 확률 출력의 품질을 평가하는 데 사용되는 지표입니다. 바이너리 분류와 멀티클래스 분류 그리고 신경망 네트 모두에서 사용됩니다. 로지스틱 회귀에 대한 비용 함수이기도 합니다. 로그 손실은 모델이 높은 확률로 잘못된 예측을 하는 경우를 나타내는 중요한 지표입니다. 일반적 값은 0\$1무한대입니다. 값이 0이면 데이터를 완벽하게 예측하는 모델을 나타냅니다.

**`MAE`**  
평균 절대 오차(MAE)는 모든 값에 대해 평균을 구했을 때 예측값과 실제 값의 차이를 측정한 것입니다. MAE는 일반적으로 회귀 분석에서 모델 예측 오류를 이해하는 데 사용됩니다. 선형 회귀의 경우 MAE는 예측선에서 실제 값까지의 평균 거리를 나타냅니다. MAE는 절대 오차의 합계를 관측 숫자로 나눈 값으로 정의됩니다. 값 범위는 0에서 무한대까지이며, 숫자가 작을수록 모델이 데이터에 피팅이 더 좋다는 것을 나타냅니다.

**`MSE`**  
평균 제곱 오차(MSE)는 예측값과 실제 값 간의 차이 제곱의 평균입니다. 이는 회귀 분석에 사용됩니다. MSE 값은 항상 양수입니다. 모델이 실제 값을 더 잘 예측할수록 MSE 값은 작아집니다.

**`Precision`**  
정밀도는 알고리즘이 식별한 모든 양성 중에서 진양성(TP)을 얼마나 잘 예측하는지를 측정합니다. 정밀도는 다음과 같이 정의됩니다. 정밀도 = TP/ (TP\$1FP), 이 값의 범위는 0에서 1 사이이며 바이너리 분류에 사용됩니다. 정확도는 위양성의 비용이 높을 때 중요한 지표입니다. 예를 들어, 비행기 안전 시스템이 비행하기에 안전하다고 잘못 간주되는 경우 위음성으로 인한 비용은 매우 높습니다. 위양성(FP)은 데이터에서 실제로는 음성인데 양성으로 예측하는 것을 반영합니다.

**`PrecisionMacro`**  
정밀도 매크로는 멀티클래스 분류 문제의 정밀도를 계산합니다. 이를 위해 각 클래스의 정밀도를 계산하고 점수를 평균하여 여러 클래스의 정밀도를 구합니다. `PrecisionMacro` 점수의 범위는 0에서 1까지입니다. 점수가 높을수록 모델이 식별한 모든 양성 중에서 True positive(TP)를 예측하는 능력을 나타내며, 여러 클래스에 걸쳐 평균을 냅니다.

**`R2`**  
결정 계수라고도 하는 R2는 회귀 분석에서 모델이 종속 변수의 분산을 얼마나 설명할 수 있는지를 정량화하는 데 사용됩니다. 값의 범위는 1에서 -1까지입니다. 숫자가 높을수록 설명되는 변동성의 비율이 높습니다. `R2` 값이 0에 가까우면 모형으로 설명할 수 있는 종속 변수가 거의 없음을 나타냅니다. 음수 값은 피팅이 안 좋으며 상수 함수가 모델 성능을 능가한다는 것을 나타냅니다. 선형 회귀의 경우 이는 수평선입니다.

**`Recall`**  
재현율은 알고리즘이 데이터세트의 모든 진양성(TP)을 얼마나 정확하게 예측하는지 측정합니다. 진양성은 양성 예측이며 데이터에서 실제 양수이기도 합니다. 재현율은 다음과 같이 정의됩니다. 재현율 = TP/ (TP\$1FN)이고 그 값의 범위는 0에서 1까지입니다. 점수가 높을수록 모델이 데이터의 진양성(TP)을 더 잘 예측할 수 있음을 나타냅니다. 이는 바이너리 분류에 사용됩니다.  
암 검사를 할 때는 재현율이 중요합니다. 이는 진양성을 모두 찾아내는 데 사용되기 때문입니다. 거짓 음성(FP)은 데이터에서 실제로는 참인데 거짓으로 예측하는 것을 반영합니다. 모든 출력값을 진양성으로 예측하면 완벽한 재현율 점수를 얻을 수 있기 때문에 재현율만 측정하는 것으로는 충분하지 않습니다.

**`RecallMacro`**  
`RecallMacro`은 각 클래스의 재현율을 계산하고 점수를 평균하여 여러 클래스에 대한 재현율을 구함으로써 멀티클래스 분류 문제에 대한 재현율을 계산합니다. `RecallMacro` 점수의 범위는 0에서 1까지입니다. 점수가 높을수록 데이터세트의 진양성(TP)을 예측하는 모델의 능력을 나타내며, 진양성은 데이터가 실제 양성이기도 한 양성 예측을 반영합니다. 모든 출력값을 진양성으로 예측하면 완벽한 재현율 점수를 얻을 수 있기 때문에 재현율만 측정하는 것으로는 충분하지 않습니다.

**`RMSE`**  
평균 제곱근 오차(RMSE)는 예측값과 실제 값 간의 차이의 제곱의 제곱근을 측정하며 모든 값에 대해 평균을 구합니다. 이는 회귀 분석에서 모델 예측 오류를 이해하는 데 사용됩니다. 이는 큰 모델 오차와 이상치가 있음을 나타내는 중요한 지표입니다. 값 범위는 0에서 무한대까지이며 숫자가 작을수록 모델이 데이터에 더 적합함을 나타냅니다. RMSE는 규모에 따라 달라지므로 크기가 다른 데이터세트를 비교하는 데 사용해서는 안 됩니다.

모델 후보에 대해 자동으로 계산되는 지표는 해결되는 문제 유형에 따라 결정됩니다.

Autopilot에서 지원하는 사용 가능한 지표 목록은 [ Amazon SageMaker API 참조 설명서](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobObjective.html)를 참조하세요.

## Autopilot 가중치 지표
<a name="autopilot-weighted-metrics"></a>

**참고**  
Autopilot은 `Balanced Accuracy` 및 `InferenceLatency`를 제외하고 [사용 가능한 모든 지표](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-metrics-validation.html#autopilot-metrics)에 대해서만 앙상블 모드에서 샘플 가중치를 지원합니다. `BalanceAccuracy`는 샘플 가중치가 필요하지 않은 불균형 데이터세트에 대한 자체 가중치 체계를 지원합니다. `InferenceLatency`는 샘플 가중치를 지원하지 않습니다. 모델을 훈련시키고 평가할 때는 목표 `Balanced Accuracy` 및 `InferenceLatency` 지표 모두 기존 샘플 가중치를 무시합니다.

사용자는 데이터에 샘플 가중치 열을 추가하여 기계 학습 모델을 학습시키는 데 사용되는 각 관측치에 모델에서 인지된 중요도에 해당하는 가중치를 부여할 수 있습니다. 이는 데이터세트 내 관측치의 중요도가 다양하거나 데이터세트에서 한 클래스의 샘플 수가 다른 클래스에 비해 불균형하게 많은 경우에 특히 유용합니다. 각 관측치의 중요도에 따라 또는 소수 클래스에 더 큰 중요도를 줌으로써 각 관측치에 가중치를 할당하면 모델의 전반적인 성능을 향상시키거나 모델이 다수 클래스에 치우치지 않도록 할 수 있습니다.

Studio Classic UI에서 실험을 생성할 때 샘플 가중치를 전달하는 방법에 대한 자세한 내용은 [Studio Classic을 사용하여 Autopilot 실험 생성](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment.html)의 *7단계*를 참조하세요.

API를 사용하여 Autopilot 실험을 생성할 때 샘플 가중치를 프로그래밍 방식으로 전달하는 방법에 대한 자세한 내용은 [프로그래밍 방식으로 Autopilot 실험 생성하기](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment.html)에서 *AutoML 작업에 샘플 가중치를 추가하는 방법*을 참조하세요.

## Autopilot에서의 교차 검증
<a name="autopilot-cross-validation"></a>

교차 검증은 모델 선택 시 오버피팅(overfitting)과 편향을 줄이는 데 사용됩니다. 또한 검증 데이터세트를 동일한 모집단에서 추출한 경우 보이지 않는 검증 데이터세트의 값을 모델이 얼마나 잘 예측할 수 있는지 평가하는 데에도 사용됩니다. 이 방법은 훈련 인스턴스 수가 제한된 데이터세트를 대상으로 훈련시킬 때 특히 중요합니다.

Autopilot은 교차 검증을 사용하여 하이퍼파라미터 최적화(HPO) 및 앙상블 훈련 모드에서 모델을 구축합니다. Autopilot 교차 검증 프로세스의 첫 번째 단계는 데이터를 k- 폴드로 분할하는 것입니다.

### K-폴드 분할
<a name="autopilot-cross-validation-kfold"></a>

K-폴드(K-fold) 분할은 입력 훈련 데이터세트를 여러 훈련 및 검증 데이터세트로 분할하는 방법입니다. 데이터세트는 폴드라고 하는 `k`개의 동일한 크기의 하위 샘플로 분할됩니다. 그런 다음 `k-1` 폴드에 대해 모델을 훈련시키고 검증 데이터세트인 나머지 k번째 폴드에 대해 테스트합니다. 검증을 위해 다른 데이터세트를 사용하여 프로세스를 `k`번 반복합니다.

다음 이미지는 k = 4 폴드를 이용한 k-폴드 분할을 보여줍니다. 각 폴드는 행으로 표시됩니다. 어두운 톤의 상자는 훈련에 사용된 데이터 부분을 나타냅니다. 나머지 밝은 색조 상자는 검증 데이터세트를 나타냅니다.

![\[상자로 표시된 4-폴드를 이용한 K-폴드 분할: 사용된 데이터는 어둡게, 검증 데이터세트는 밝게 표시됨.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-metrics-kfold-splits.png)


Autopilot은 하이퍼파라미터 최적화(HPO) 모드와 앙상블 모드 모두에 k-폴드 교차 검증을 사용합니다.

다른 Autopilot 또는 SageMaker AI 모델과 마찬가지로 교차 검증을 사용하여 구축된 Autopilot 모델을 배포할 수 있습니다.

### HPO 모드
<a name="autopilot-cross-validation-hpo"></a>

K-폴드 교차 검증은 교차 검증에 k-폴드 분할 방법을 사용합니다. HPO 모드에서 Autopilot은 훈련 인스턴스가 50,000개 이하인 작은 데이터세트에 대해 k-폴드 교차 검증을 자동으로 구현합니다. 교차 검증은 오버피팅과 선택 편향을 방지하기 때문에 작은 데이터세트로 훈련시킬 때는 특히 중요합니다.

HPO 모드에서는 데이터세트를 모델링하는 데 사용되는 각 후보 알고리즘에서 *k*=5 값을 사용합니다. 여러 모델을 서로 다른 분할을 이용해 훈련시키고 모델을 별도로 저장합니다. 훈련이 완료되면 각 모델의 검증 지표를 평균하여 단일 예측 지표를 생성합니다. 마지막으로 Autopilot은 시험에서 얻은 모델을 최상의 검증 지표와 결합하여 앙상블 모델로 만듭니다. Autopilot은 이 앙상블 모델을 사용하여 예측합니다.

Autopilot으로 훈련한 모델의 검증 지표는 모델 순위표에 목표 지표로 표시됩니다. 별도로 지정하지 않는 한 Autopilot은 처리하는 각 문제 유형에 대해 기본 검증 지표를 사용합니다. Autopilot가 사용하는 모든 지표 목록은 [Autopilot 지표](#autopilot-metrics) 섹션을 참조하세요.

예를 들어 [보스턴 하우징 데이터세트](http://lib.stat.cmu.edu/datasets/boston)에는 861개의 샘플만 포함되어 있습니다. 교차 검증 없이 이 데이터세트를 사용하여 주택 판매 가격을 예측하는 모델을 구축하면 보스턴 주택 재고를 대표하지 않는 데이터세트로 훈련시킬 위험이 있습니다. 데이터를 훈련 하위 집합과 검증 하위 집합으로 한 번만 분할하면 훈련 폴드에는 주로 교외 지역의 데이터만 포함될 수 있습니다. 따라서 도시의 다른 지역을 대표하지 않는 데이터로 훈련하게 됩니다. 이 예시에서는 이렇게 편향된 선택에 모델이 오버피팅할 가능성이 높습니다. K-폴드 교차 검증은 사용 가능한 데이터를 훈련과 검증에 모두 무작위로 사용하여 이러한 종류의 오류가 발생할 위험을 줄일 수 있습니다.

교차 검증은 훈련 시간을 평균 20% 늘릴 수 있습니다. 복잡한 데이터세트의 경우 훈련 시간은 크게 늘어날 수 있습니다.

**참고**  
HPO 모드에서는 `/aws/sagemaker/TrainingJobs` CloudWatch Logs에서 각 폴드의 훈련 및 검증 지표를 볼 수 있습니다. CloudWatch Logs에 대한 자세한 내용은 [Amazon SageMaker AI용 CloudWatch Logs](logging-cloudwatch.md) 섹션을 참조하세요.

### 앙상블 모드
<a name="autopilot-cross-validation-ensemble"></a>

**참고**  
Autopilot은 앙상블 모드에서 샘플 가중치를 지원합니다. 샘플 가중치를 지원하는 이용 가능한 지표 목록을 알아보려면 [Autopilot 지표](#autopilot-metrics)를 참조하세요.

앙상블 모드에서는 데이터세트 크기에 관계없이 교차 검증이 수행됩니다. 고객은 자체 검증 데이터세트와 사용자 지정 데이터 분할 비율을 제공하거나 Autopilot에서 자동으로 데이터세트를 80-20% 분할 비율로 분할하도록 할 수 있습니다. 그런 다음 훈련 데이터는 교차 검증을 위해 `k`-폴드로 분할됩니다. 여기서 `k` 값은 AutoGluon 엔진에 의해 결정됩니다. 앙상블은 여러 기계 학습 모델로 구성되며, 각 모델을 기본 모델이라고 합니다. 단일 기본 모델은 (`k`-1) 폴드에 대해 훈련되고 나머지 폴드에 대해서는 OOF(out-of-fold) 예측을 수행합니다. 이 과정은 모든 `k` 폴드에 대해 반복되며, OOF 예측들을 결합하여 단일 예측 세트를 형성합니다. 앙상블의 모든 기본 모델은 이와 동일한 OOF 예측 생성 프로세스를 따릅니다.

다음 이미지는 `k` = 4 폴드를 이용한 k-폴드 검증을 보여줍니다. 각 폴드는 행으로 표시됩니다. 어두운 톤의 상자는 훈련에 사용된 데이터 부분을 나타냅니다. 나머지 밝은 색조 상자는 검증 데이터세트를 나타냅니다.

이미지의 상단의 각 폴드에 대해 첫 번째 기본 모델은 훈련 데이터세트에 대해 훈련시킨 후 검증 데이터세트를 예측합니다. 각 후속 폴드에 대해 데이터세트의 역할이 바뀝니다. 이전에 훈련에 사용되었던 데이터세트를 이제는 검증에 사용하며, 이는 역으로도 적용됩니다. `k` 폴드가 끝나면 모든 예측이 결합되어 OOF 예측이라고 하는 단일 예측 세트를 형성합니다. 이 프로세스는 `n`개의 각 기본 모델에 대해 반복됩니다.

![\[k-폴드 검증: 상자에 있는 4행은 4폴드를 나타냅니다. 각 폴드는 OOF 예측 행을 생성합니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-metrics-kfold.PNG)


그런 다음 각 기본 모델에 대한 OOF 예측을 특징으로 사용하여 적층 모델(stacking model)을 훈련시킵니다. 적층 모델은 각 기본 모델의 중요도 가중치를 학습합니다. 이러한 가중치는 OOF 예측을 결합하여 최종 예측을 구성하는 데 사용됩니다. 검증 데이터세트의 성능에 따라 가장 적합한 기본 모델 또는 적층 모델이 결정되며 이 모델이 최종 모델로 반환됩니다.

앙상블 모드에서는 자체 검증 데이터세트를 제공하거나 Autopilot이 입력 데이터세트를 자동으로 80% 학습 데이터세트와 20% 검증 데이터세트로 분할하도록 할 수 있습니다. 그런 다음 훈련 데이터를 교차 검증을 위해 `k`-폴드로 분할하고 각 폴드에 대한 OOF 예측과 기본 모델을 생성합니다.

이러한 OOF 예측은 각 기본 모델의 가중치를 동시에 학습하는 적층 모델을 훈련하기 위한 특징으로 사용됩니다. 이러한 가중치는 OOF 예측을 결합하여 최종 예측을 구성하는 데 사용됩니다. 각 폴드의 검증 데이터세트는 모든 기본 모델 및 적층 모델의 하이퍼파라미터 튜닝에 사용됩니다. 검증 데이터세트의 성능에 따라 가장 적합한 기본 모델 또는 적층 모델이 결정되며 이 모델이 최종 모델로 반환됩니다.

# Autopilot 모델 배포 및 예측
<a name="autopilot-deploy-models"></a>

이 Amazon SageMaker Autopilot 안내서는 모델을 배포하고, 실시간 추론을 설정하고, 배치 작업으로 추론을 실행하는 단계를 포함하고 있습니다.

Autopilot 모델을 훈련한 후, 다음 두 가지 방법 중 하나로 모델을 배포하여 예측을 가져올 수 있습니다.

1. [실시간 추론을 위한 모델 배포](autopilot-deploy-models-realtime.md)을 이용해 엔드포인트를 설정하고 대화형 방식으로 예측을 획득합니다. 실시간 추론은 실시간, 대화형, 짧은 지연 시간이 요구되는 추론 워크로드에 적합합니다.

1. [배치 추론 작업 실행](autopilot-deploy-models-batch.md)을 이용해 전체 데이터세트의 배치 관찰에서 병렬로 예측합니다. 대규모 데이터세트나 모델 예측 요청에 대한 즉각적인 응답이 필요하지 않은 경우 배치 추론을 사용하는 것이 좋습니다.

**참고**  
불필요한 비용 발생을 방지하려면: 모델 배포를 통해 생성된 엔드포인트와 리소스가 더 이상 필요하지 않은 후에는 해당 엔드포인트와 리소스를 삭제할 수 있습니다. 리전별 인스턴스 요금에 대한 자세한 내용은 [Amazon SageMaker 요금](https://aws.amazon.com/sagemaker/pricing/)을 참고하세요.

# 실시간 추론을 위한 모델 배포
<a name="autopilot-deploy-models-realtime"></a>

실시간 추론은 실시간, 대화형, 짧은 지연 시간이 요구되는 추론 워크로드에 적합합니다. 이 섹션에서는 실시간 추론을 사용하여 모델에서 대화형 방식으로 예측을 얻는 방법을 보여줍니다.

Autopilot 실험에서 최상의 검증 지표를 생성한 모델을 배포하기 위한 몇 가지 옵션이 있습니다. 예를 들어 SageMaker Studio Classic에서 Autopilot을 사용하는 경우 모델을 자동 또는 수동으로 배포할 수 있습니다. SageMaker API를 사용하여 Autopilot 모델을 수동으로 배포할 수도 있습니다.

다음 탭은 모델 배포를 위한 세 가지 옵션을 보여줍니다. 이 지침에서는 Autopilot으로 모델을 이미 생성했다고 가정합니다. 모델이 없는 경우 [AutoML API를 사용하여 테이블 형식 데이터에 대한 회귀 또는 분류 작업 생성](autopilot-automate-model-development-create-experiment.md) 섹션을 참조하세요. 각 옵션의 예를 보려면 각 탭을 여세요.

## Autopilot 사용자 인터페이스 (UI)를 사용하여 배포
<a name="autopilot-deploy-models-realtime-ui"></a>

Autopilot UI에는 모델 배포를 탐색하는 데 도움이 되는 유용한 드롭다운 메뉴, 토글, 툴팁 등이 포함되어 있습니다. 자동 또는 수동 절차 중 하나를 이용하여 배포할 수 있습니다.
+ **자동 배포**: Autopilot 실험에서 나온 최적의 모델을 엔드포인트에 자동으로 배포

  1. SageMaker Studio Classic에서 [실험을 생성합니다](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment.html).

  1. **자동 배포** 값을 **예**로 전환합니다.
**참고**  
**리전 내 엔드포인트 인스턴스에 대한 기본 리소스 할당량이나 고객 할당량이 너무 제한적일 경우 자동 배포가 실패합니다.** 하이퍼파라미터 최적화(HPO) 모드에서는 ml.m5.2xlarge 인스턴스가 2개 이상 있어야 합니다. 앙상블링 모드에서는 ml.m5.12xlarge 인스턴스가 하나 이상 있어야 합니다. 할당량과 관련된 오류가 발생하는 경우 SageMaker AI 엔드포인트 인스턴스에 대한 [서비스 한도 증가를 요청](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)할 수 있습니다.
+ **자동 배포**: Autopilot 실험에서 나온 최적의 모델을 엔드포인트에 수동으로 배포

  1. SageMaker Studio Classic에서 [실험을 생성합니다](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment.html).

  1. **자동 배포** 값을 **아니요**로 전환합니다.

  1. **모델** 이름에서 배포하려는 모델을 선택합니다.

  1. 리더보드 오른쪽에 있는 주황색 **배포 및 고급 설정** 버튼을 선택합니다. 그러면 새 탭이 열립니다.

  1. 엔드포인트 이름, 인스턴스 유형 및 기타 선택적 정보를 구성합니다.

  1.  엔드포인트에 배포할 주황색 **배포 모델**을 선택합니다.

  1. 엔드포인트 섹션으로 이동하여 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 엔드포인트 생성 프로세스의 진행 상황을 확인하세요. 해당 섹션은 탐색 패널의 **추론** 드롭다운 메뉴에 있습니다.

  1. 아래와 같이 엔드포인트 상태가 **생성 중**에서 **서비스 중**으로 변경되면 Studio Classic으로 돌아가 엔드포인트를 간접적으로 호출합니다.  
![\[SageMaker AI 콘솔: 엔드포인트를 만들거나 엔드포인트 상태를 확인할 수 있는 엔드포인트 페이지.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-check-progress.PNG)

## SageMaker API를 사용하여 배포하기
<a name="autopilot-deploy-models-api"></a>

**API 직접 호출**을 사용하여 모델을 배포하여 실시간 추론을 얻을 수도 있습니다. 이 섹션에서는 AWS Command Line Interface (AWS CLI) 코드 조각을 사용하는이 프로세스의 5단계를 보여줍니다.

 AWS CLI 명령과 AWS SDK for Python(boto3) 모두에 대한 전체 코드 예제를 보려면 다음 단계에 따라 탭을 직접 엽니다.

1. **후보 정의 가져오기**

   [추론 컨테이너](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidate.html#sagemaker-Type-AutoMLCandidate-InferenceContainers)에서 후보 컨테이너 정의를 가져옵니다. 이러한 후보 정의는 SageMaker AI 모델을 만드는 데 사용됩니다.

   다음 예제에서는 [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html) API를 사용하여 최적의 모델 후보에 대한 후보 정의를 얻습니다. 다음 AWS CLI 명령을 예제로 참조하세요.

   ```
   aws sagemaker describe-auto-ml-job --auto-ml-job-name <job-name> --region <region>
   ```

1. **후보 나열**

   다음 예제에서는 [ListCandidatesForAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidatesForAutoMLJob.html) API를 사용하여 모든 후보를 나열합니다. 예제로서 다음 AWS CLI 명령을 참조하세요.

   ```
   aws sagemaker list-candidates-for-auto-ml-job --auto-ml-job-name <job-name> --region <region>
   ```

1. **SageMaker AI 모델 만들기**

   이전 단계의 컨테이너 정의를 사용하여 [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) API로 SageMaker AI 모델을 만듭니다. 다음 AWS CLI 명령을 예제로 참조하세요.

   ```
   aws sagemaker create-model --model-name '<your-custom-model-name>' \
                       --containers ['<container-definition1>, <container-definition2>, <container-definition3>]' \
                       --execution-role-arn '<execution-role-arn>' --region '<region>
   ```

1. **엔드포인트 구성 생성** 

   다음 예제에서는 [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) API를 사용하여 엔드포인트 구성을 생성합니다. 다음 AWS CLI 명령을 예제로 참조하세요.

   ```
   aws sagemaker create-endpoint-config --endpoint-config-name '<your-custom-endpoint-config-name>' \
                       --production-variants '<list-of-production-variants>' \
                       --region '<region>'
   ```

1. **엔드포인트 생성** 

   다음 AWS CLI 예제에서는 [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) API를 사용하여 엔드포인트를 생성합니다.

   ```
   aws sagemaker create-endpoint --endpoint-name '<your-custom-endpoint-name>' \
                       --endpoint-config-name '<endpoint-config-name-you-just-created>' \
                       --region '<region>'
   ```

   [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html) API를 사용하여 엔드포인트 배포 진행 상황을 확인합니다. 다음 AWS CLI 명령을 예제로 참조하세요.

   ```
   aws sagemaker describe-endpoint —endpoint-name '<endpoint-name>' —region <region>
   ```

   `EndpointStatus`가 `InService`로 변경되면 엔드포인트를 실시간 추론에 사용할 수 있습니다.

1. **API 엔드포인트 호출** 

   다음 명령 구조는 실시간 추론을 위해 엔드포인트를 간접적으로 호출합니다.

   ```
   aws sagemaker invoke-endpoint --endpoint-name '<endpoint-name>' \ 
                     --region '<region>' --body '<your-data>' [--content-type] '<content-type>' <outfile>
   ```

다음 탭에는 Python용 AWS SDK(boto3) 또는 AWS CLI를 사용하여 모델을 배포하기 위한 전체 코드 예제가 포함되어 있습니다.

------
#### [ AWS SDK for Python (boto3) ]

1. 다음 코드 예제를 사용하여 **후보 정의를 확보하세요**.

   ```
   import sagemaker 
   import boto3
   
   session = sagemaker.session.Session()
   
   sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')
   job_name = 'test-auto-ml-job'
   
   describe_response = sm_client.describe_auto_ml_job(AutoMLJobName=job_name)
   # extract the best candidate definition from DescribeAutoMLJob response
   best_candidate = describe_response['BestCandidate']
   # extract the InferenceContainers definition from the caandidate definition
   inference_containers = best_candidate['InferenceContainers']
   ```

1. 다음 코드 예제를 사용하여 **모델을 생성합니다**.

   ```
   # Create Model
   model_name = 'test-model' 
   sagemaker_role = 'arn:aws:iam:444455556666:role/sagemaker-execution-role'
   create_model_response = sagemaker_client.create_model(
      ModelName = model_name,
      ExecutionRoleArn = sagemaker_role,
      Containers = inference_containers 
   )
   ```

1. 다음 코드 예제를 사용하여 **엔드포인트 구성을 생성합니다**.

   ```
   endpoint_config_name = 'test-endpoint-config'
                                                           
   instance_type = 'ml.m5.2xlarge' 
   # for all supported instance types, see 
   # https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html#sagemaker-Type-ProductionVariant-InstanceType    # Create endpoint config
   
   endpoint_config_response = sagemaker_client.create_endpoint_config(
      EndpointConfigName=endpoint_config_name, 
      ProductionVariants=[
          {
              "VariantName": "variant1",
              "ModelName": model_name, 
              "InstanceType": instance_type,
              "InitialInstanceCount": 1
          }
      ]
   )
   
   print(f"Created EndpointConfig: {endpoint_config_response['EndpointConfigArn']}")
   ```

1. **엔드포인트를 생성하고** 다음 코드 예제를 사용하여 모델을 배포합니다.

   ```
   # create endpoint and deploy the model
   endpoint_name = 'test-endpoint'
   create_endpoint_response = sagemaker_client.create_endpoint(
                                               EndpointName=endpoint_name, 
                                               EndpointConfigName=endpoint_config_name)
   print(create_endpoint_response)
   ```

   다음 코드 예제를 사용하여 **엔드포인트 생성 상태를 확인합니다**.

   ```
   # describe endpoint creation status
   status = sagemaker_client.describe_endpoint(EndpointName=endpoint_name)["EndpointStatus"]
   ```

1. 다음 명령 구조를 사용하여 실시간 추론을 위해 **엔드포인트를 호출합니다**.

   ```
   # once endpoint status is InService, you can invoke the endpoint for inferencing
   if status == "InService":
     sm_runtime = boto3.Session().client('sagemaker-runtime')
     inference_result = sm_runtime.invoke_endpoint(EndpointName='test-endpoint', ContentType='text/csv', Body='1,2,3,4,class')
   ```

------
#### [ AWS Command Line Interface (AWS CLI) ]

1. 다음 코드 예제를 사용하여 **후보 정의를 확보하세요**.

   ```
   aws sagemaker describe-auto-ml-job --auto-ml-job-name 'test-automl-job' --region us-west-2
   ```

1. 다음 코드 예제를 사용하여 **모델을 생성합니다**.

   ```
   aws sagemaker create-model --model-name 'test-sagemaker-model'
   --containers '[{
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", amzn-s3-demo-bucket1
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/output/model.tar.gz",
       "Environment": {
           "AUTOML_SPARSE_ENCODE_RECORDIO_PROTOBUF": "1",
           "AUTOML_TRANSFORM_MODE": "feature-transform",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "application/x-recordio-protobuf",
           "SAGEMAKER_PROGRAM": "sagemaker_serve",
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/output/model.tar.gz",
       "Environment": {
           "MAX_CONTENT_LENGTH": "20971520",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv",
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,probabilities" 
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", aws-region
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/output/model.tar.gz", 
       "Environment": { 
           "AUTOML_TRANSFORM_MODE": "inverse-label-transform", 
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv", 
           "SAGEMAKER_INFERENCE_INPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,labels,probabilities", 
           "SAGEMAKER_PROGRAM": "sagemaker_serve", 
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
       } 
   }]' \
   --execution-role-arn 'arn:aws:iam::1234567890:role/sagemaker-execution-role' \ 
   --region 'us-west-2'
   ```

   자세한 내용은 [모델 생성](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/create-model.html)을 참조하세요.

   `create model` 명령은 다음과 같은 형식의 응답을 반환합니다.

   ```
   {
       "ModelArn": "arn:aws:sagemaker:us-west-2:1234567890:model/test-sagemaker-model"
   }
   ```

1. 다음 코드 예제를 사용하여 **엔드포인트 구성을 생성합니다**.

   ```
   aws sagemaker create-endpoint-config --endpoint-config-name 'test-endpoint-config' \
   --production-variants '[{"VariantName": "variant1", 
                           "ModelName": "test-sagemaker-model",
                           "InitialInstanceCount": 1,
                           "InstanceType": "ml.m5.2xlarge"
                          }]' \
   --region us-west-2
   ```

   `create endpoint` 구성 명령은 다음과 같은 형식의 응답을 반환합니다.

   ```
   {
       "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:1234567890:endpoint-config/test-endpoint-config"
   }
   ```

1. 다음 코드 예제를 사용하여 **엔드포인트를 생성합니다**.

   ```
   aws sagemaker create-endpoint --endpoint-name 'test-endpoint' \    
   --endpoint-config-name 'test-endpoint-config' \                 
   --region us-west-2
   ```

   `create endpoint` 명령은 다음과 같은 형식의 응답을 반환합니다.

   ```
   {
       "EndpointArn": "arn:aws:sagemaker:us-west-2:1234567890:endpoint/test-endpoint"
   }
   ```

   다음 [describe-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-endpoint.html) CLI 코드 예제를 사용하여 엔드포인트 배포의 진행 상황을 확인합니다.

   ```
   aws sagemaker describe-endpoint --endpoint-name 'test-endpoint' --region us-west-2
   ```

   이전 진행 상황 확인에서는 다음 형식으로 응답을 반환합니다.

   ```
   {
       "EndpointName": "test-endpoint",
       "EndpointArn": "arn:aws:sagemaker:us-west-2:1234567890:endpoint/test-endpoint",
       "EndpointConfigName": "test-endpoint-config",
       "EndpointStatus": "Creating",
       "CreationTime": 1660251167.595,
       "LastModifiedTime": 1660251167.595
   }
   ```

   `EndpointStatus`가 `InService`로 변경되면 엔드포인트를 실시간 추론에 사용할 수 있습니다.

1. 다음 명령 구조를 사용하여 실시간 추론을 위해 **엔드포인트를 호출합니다**.

   ```
   aws sagemaker-runtime invoke-endpoint --endpoint-name 'test-endpoint' \
   --region 'us-west-2' \
   --body '1,51,3.5,1.4,0.2' \
   --content-type 'text/csv' \
   '/tmp/inference_output'
   ```

   자세한 옵션은 [엔드포인트 호출](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker-runtime/invoke-endpoint.html)을 참조하세요.

------

## 다양한 계정의 모델 배포
<a name="autopilot-deploy-models-realtime-across-accounts"></a>

모델을 생성한 원래 계정이 아닌 다른 계정에서 Autopilot 모델을 배포할 수 있습니다. 교차 계정 모델 배포를 구현하기 위해 이 섹션에서는 다음을 수행하는 방법을 보여줍니다.   (생성 계정)에서 배포하려는 계정에 역할을 맡을 권한을 부여하세요.   배포 계정에서 `DescribeAutoMLJob`을 호출하여 모델 정보를 얻으세요.   생성 계정의 모델 아티팩트에 대한 액세스 권한을 부여합니다.   

1. **배포 계정에 권한 부여** 

   생성 계정에서 역할을 맡으려면 배포 계정에 권한을 부여해야 합니다. 이렇게 하면 배포 계정이 생성 계정의 Autopilot 작업을 설명할 수 있습니다.

   다음 예시에서는 신뢰할 수 있는 `sagemaker-role` 엔터티를 가진 생성 계정을 사용합니다. 이 예제는 ID가 111122223333인 배포 계정에 생성 계정 역할을 맡을 수 있는 권한을 부여하는 방법을 보여줍니다.

   ```
   "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "sagemaker.amazonaws.com"
                   ],
                   "AWS": [ "111122223333"]
               },
               "Action": "sts:AssumeRole"
           }
   ```

   ID가 111122223333인 새 계정이 이제 생성 계정 역할을 맡을 수 있습니다.

   그런 다음, 배포 계정에서 `DescribeAutoMLJob` API를 호출하여 생성 계정으로 생성된 작업에 대한 설명을 가져옵니다.

   다음 코드 예제는 배포 계정의 모델을 설명합니다.

   ```
   import sagemaker 
   import boto3
   session = sagemaker.session.Session()
   
   sts_client = boto3.client('sts')
   sts_client.assume_role
   
   role = 'arn:aws:iam::111122223333:role/sagemaker-role'
   role_session_name = "role-session-name"
   _assumed_role = sts_client.assume_role(RoleArn=role, RoleSessionName=role_session_name)
   
   credentials = _assumed_role["Credentials"]
   access_key = credentials["AccessKeyId"]
   secret_key = credentials["SecretAccessKey"]
   session_token = credentials["SessionToken"]
   
   session = boto3.session.Session()
           
   sm_client = session.client('sagemaker', region_name='us-west-2', 
                              aws_access_key_id=access_key,
                               aws_secret_access_key=secret_key,
                               aws_session_token=session_token)
   
   # now you can call describe automl job created in account A 
   
   job_name = "test-job"
   response= sm_client.describe_auto_ml_job(AutoMLJobName=job_name)
   ```

1. 생성 계정의 모델 아티팩트에 **배포 계정에 대한 액세스 권한을 부여합니다**.

   배포 계정에는 생성 계정의 모델 아티팩트에 대한 액세스 권한만 있으면 배포할 수 있습니다. 이러한 정보는 모델 생성 중에 원래 `CreateAutoMLJob` API 직접 호출에 지정된 [S3OutputPath](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html#sagemaker-Type-AutoMLOutputDataConfig-S3OutputPath)에 있습니다.

   배포 계정에 모델 아티팩트에 대한 액세스 권한을 부여하려면 다음 옵션 중 하나를 선택합니다.

   1. 생성 계정에서 배포 계정에 `ModelDataUrl`에 대한 [액세스 권한을 부여하세요](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/).

      다음으로 배포 계정에 역할을 맡을 권한을 부여해야 합니다. [실시간 추론 단계](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-deploy-models.html#autopilot-deploy-models-realtime)에 따라 배포하세요.

   1. 생성 계정의 원래 [S3OutputPath](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html#sagemaker-Type-AutoMLOutputDataConfig-S3OutputPath)에서 생성 계정으로 [모델 아티팩트를 복사합니다](https://aws.amazon.com/premiumsupport/knowledge-center/copy-s3-objects-account/).

      모델 아티팩트에 대한 액세스 권한을 부여하려면 `best_candidate` 모델을 정의하고 모델 컨테이너를 새 계정에 재할당해야 합니다.

      다음 예제에서는 `best_candidate` 모델을 정의하고 `ModelDataUrl`을 재할당하는 방법을 보여줍니다.

      ```
      best_candidate = automl.describe_auto_ml_job()['BestCandidate']
      
      # reassigning ModelDataUrl for best_candidate containers below
      new_model_locations = ['new-container-1-ModelDataUrl', 'new-container-2-ModelDataUrl', 'new-container-3-ModelDataUrl']
      new_model_locations_index = 0
      for container in best_candidate['InferenceContainers']:
          container['ModelDataUrl'] = new_model_locations[new_model_locations_index++]
      ```

      컨테이너를 할당한 후에는 [SageMaker API를 사용하여 배포하기](#autopilot-deploy-models-api)의 단계를 따라 배포합니다.

실시간 추론으로 페이로드를 구축하려면 노트북 예제를 참조하여 [테스트 페이로드를 정의하세요](https://aws.amazon.com/getting-started/hands-on/machine-learning-tutorial-automatically-create-models). CSV 파일에서 페이로드를 생성하고 엔드포인트를 간접적으로 호출하려면 [기계 학습 모델 자동 생성](https://aws.amazon.com/getting-started/hands-on/create-machine-learning-model-automatically-sagemaker-autopilot/#autopilot-cr-room)의 **모델로 예측** 섹션을 참조하세요.

# 배치 추론 작업 실행
<a name="autopilot-deploy-models-batch"></a>

오프라인 추론이라고도 하는 배치 추론은 배치 관찰에서 모델 예측을 생성합니다. 대규모 데이터세트나 모델 예측 요청에 대한 즉각적인 응답이 필요하지 않은 경우 배치 추론을 사용하는 것이 좋습니다. 반면, 온라인 추론([실시간 추론](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-deploy-models.html#autopilot-deploy-models-realtime))은 실시간으로 예측을 생성합니다. [SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/), Autopilot 사용자 인터페이스(UI), [AWS Python용 SDK(boto3)](https://aws.amazon.com/sdk-for-python/) 또는 AWS Command Line Interface ()를 사용하여 Autopilot 모델에서 배치 추론을 수행할 수 있습니다[AWS CLI](https://docs.aws.amazon.com/cli/).

다음 탭에는 모델을 배포하기 위한 세 가지 옵션, 즉 API 사용, Autopilot UI 또는 API를 사용하여 다른 계정에서 배포하는 옵션이 표시됩니다. 이 지침에서는 Autopilot으로 모델을 이미 생성했다고 가정합니다. 모델이 없는 경우 [AutoML API를 사용하여 테이블 형식 데이터에 대한 회귀 또는 분류 작업 생성](autopilot-automate-model-development-create-experiment.md) 섹션을 참조하세요. 각 옵션의 예를 보려면 각 탭을 여세요.

## Autopilot UI를 사용하여 모델 배포하기
<a name="autopilot-deploy-models-batch-ui"></a>

Autopilot UI에는 모델 배포를 탐색하는 데 도움이 되는 유용한 드롭다운 메뉴, 토글, 툴팁 등이 포함되어 있습니다.

다음 단계에서는 배치 예측을 위해 Autopilot 실험에서 모델을 배포하는 방법을 보여줍니다.

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 로그인하고 탐색 창에서 **Studio**를 선택합니다.

1. 왼쪽 탐색 창에서 **Studio**를 선택합니다.

1. **시작하기**에서 Studio 애플리케이션을 시작하려는 도메인을 선택합니다. 사용자 프로파일이 한 도메인에만 속하는 경우 도메인 선택 옵션이 표시되지 않습니다.

1. Studio Classic 애플리케이션을 시작하려는 사용자 프로필을 선택합니다. 도메인에 사용자 프로필이 없는 경우 **사용자 프로필 생성**을 선택합니다. 자세한 내용은 [사용자 프로필 추가](https://docs.aws.amazon.com/sagemaker/latest/dg/domain-user-profile-add.html) 섹션을 참조하세요.

1. **Studio 실행**을 선택합니다. 사용자 프로필이 공유 공간에 속하는 경우 **오픈 스페이스**를 선택합니다.

1. SageMaker Studio Classic 콘솔이 열리면 **SageMaker Studio 실행** 버튼을 선택합니다.

1. 왼쪽 탐색 창에서 **AutoML**을 선택합니다.

1. **이름**에서 배포하려는 모델에 해당하는 Autopilot 실험을 선택합니다. 그러면 새 **AUTOPILOT 작업** 탭이 열립니다.

1. **모델 이름**에서 배포하려는 모델을 선택합니다.

1. **Deploy model(모델 배포)**을 선택합니다. 그러면 새 탭이 열립니다.

1. 페이지 상단의 **배치 예측 만들기**를 선택합니다.

1. **배치 변환 작업 구성**의 경우, **인스턴스 유형**, **인스턴스 수** 및 기타 선택적 정보를 입력합니다.

1. **입력 데이터 구성** 섹션에서 드롭다운 메뉴를 엽니다.

   1. **S3 데이터 유형**의 경우 **ManifestFile** 또는 **S3Profix**를 선택합니다.

   1. **분할 유형**의 경우 **라인**, **RecordIO**, **TFRecord** 또는 **없음**을 선택합니다.

   1. **압축**의 경우 **Gzip** 또는 **없음**을 선택합니다.

1. **S3 위치**의 경우 입력 데이터의 Amazon S3 버킷 위치와 기타 선택적 정보를 입력합니다.

1. **출력 데이터 구성**에서 출력 데이터용 S3 버킷을 입력하고 작업의 [출력을 어셈블](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#sagemaker-Type-TransformOutput-AssembleWith)하는 방법을 선택합니다.

   1. **추가 구성(선택 사항)**의 경우 MIME 유형과 **S3 암호화 키**를 입력할 수 있습니다.

1. **입력/출력 필터링 및 데이터 조인(선택 사항)**의 경우 JSONPath 식을 입력하여 입력 데이터를 필터링하고, 입력 소스 데이터를 출력 데이터와 조인하고, JSONPath 식을 입력하여 출력 데이터를 필터링합니다.

   1. 각 필터 유형에 대한 예는 [DataProcessing API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataProcessing.html#sagemaker-Type-DataProcessing-InputFilter)를 참조하세요.

1. 입력 데이터세트에 대한 배치 예측을 수행하려면 **배치 변환 작업 만들기** 선택합니다. 새 **배치 변환 작업** 탭이 나타납니다.

1. **배치 변환 작업** 탭의 **상태** 섹션에서 작업 이름을 찾습니다. 그런 다음 작업 진행 상황을 확인합니다.

## SageMaker API를 사용하여 배포하기
<a name="autopilot-deploy-models-batch-steps"></a>

SageMaker API를 배치 추론에 사용하려면 다음 세 단계를 거쳐야 합니다.

1. **후보 정의 가져오기** 

   [InferenceContainers](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidate.html#sagemaker-Type-AutoMLCandidate-InferenceContainers)의 후보 정의는 SageMaker AI 모델을 만드는 데 사용됩니다.

   다음 예제는 [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html) API를 사용하여 최적의 모델 후보에 대한 후보 정의를 얻는 방법을 보여줍니다. 다음 AWS CLI 명령을 예제로 참조하세요.

   ```
   aws sagemaker describe-auto-ml-job --auto-ml-job-name <job-name> --region <region>
   ```

   [ListCandidatesForAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidatesForAutoMLJob.html) API를 사용하여 모든 후보를 나열할 수 있습니다. 예제로서 다음 AWS CLI 명령을 참조하세요.

   ```
   aws sagemaker list-candidates-for-auto-ml-job --auto-ml-job-name <job-name> --region <region>
   ```

1. **SageMaker AI 모델 만들기**

   [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) API를 사용하여 SageMaker AI 모델을 만들려면 이전 단계의 컨테이너 정의를 사용합니다. 예제로서 다음 AWS CLI 명령을 참조하세요.

   ```
   aws sagemaker create-model --model-name '<your-custom-model-name>' \
                       --containers ['<container-definition1>, <container-definition2>, <container-definition3>]' \
                       --execution-role-arn '<execution-role-arn>' --region '<region>
   ```

1. **SageMaker AI 변환 작업 만들기** 

   다음 예시에서는 [CreateTransformJob](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-transform-job.html) API를 사용하여 SageMaker AI 변환 작업을 만듭니다. 다음 AWS CLI 명령을 예제로 참조하세요.

   ```
   aws sagemaker create-transform-job --transform-job-name '<your-custom-transform-job-name>' --model-name '<your-custom-model-name-from-last-step>'\
   --transform-input '{
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix", 
                   "S3Uri": "<your-input-data>" 
               }
           },
           "ContentType": "text/csv",
           "SplitType": "Line"
       }'\
   --transform-output '{
           "S3OutputPath": "<your-output-path>",
           "AssembleWith": "Line" 
       }'\
   --transform-resources '{
           "InstanceType": "<instance-type>", 
           "InstanceCount": 1
       }' --region '<region>'
   ```

[DescribeTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTransformJob.html) API를 사용하여 변환 작업의 진행 상황을 확인합니다. 다음 AWS CLI 명령을 예제로 참조하세요.

```
aws sagemaker describe-transform-job --transform-job-name '<your-custom-transform-job-name>' --region <region>
```

작업이 완료되면 예측된 결과를 `<your-output-path>`에서 확인할 수 있습니다.

출력 파일 이름의 형식: `<input_data_file_name>.out`. 예를 들어, 입력 파일이 `text_x.csv`인 경우 출력 이름은 `text_x.csv.out`입니다.

다음 탭은 SageMaker Python SDK, Python용 AWS SDK(boto3) 및에 대한 코드 예제를 보여줍니다 AWS CLI.

------
#### [ SageMaker Python SDK ]

다음 예제에서는 **[SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/overview.html)**를 사용하여 배치 예측을 만듭니다.

```
from sagemaker import AutoML

sagemaker_session= sagemaker.session.Session()

job_name = 'test-auto-ml-job' # your autopilot job name
automl = AutoML.attach(auto_ml_job_name=job_name)
output_path = 's3://test-auto-ml-job/output'
input_data = 's3://test-auto-ml-job/test_X.csv'

# call DescribeAutoMLJob API to get the best candidate definition
best_candidate = automl.describe_auto_ml_job()['BestCandidate']
best_candidate_name = best_candidate['CandidateName']

# create model
model = automl.create_model(name=best_candidate_name, 
               candidate=best_candidate)

# create transformer
transformer = model.transformer(instance_count=1, 
    instance_type='ml.m5.2xlarge',
    assemble_with='Line',
    output_path=output_path)

# do batch transform
transformer.transform(data=input_data,
                      split_type='Line',
                       content_type='text/csv',
                       wait=True)
```

------
#### [ AWS SDK for Python (boto3) ]

 다음 예제에서는 **Python용AWS SDK**를 사용하여 배치 예측을 만듭니다.

```
import sagemaker 
import boto3

session = sagemaker.session.Session()

sm_client = boto3.client('sagemaker', region_name='us-west-2')
role = 'arn:aws:iam::1234567890:role/sagemaker-execution-role'
output_path = 's3://test-auto-ml-job/output'
input_data = 's3://test-auto-ml-job/test_X.csv'

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName=job_name)['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['CandidateName']

# create model
reponse = sm_client.create_model(
    ModelName = best_candidate_name,
    ExecutionRoleArn = role,
    Containers = best_candidate_containers 
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName=f'{best_candidate_name}-transform-job',
    ModelName=model_name,
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': 'S3Prefix',
                'S3Uri': input_data
            }
        },
        'ContentType': "text/csv",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': output_path,
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': 'ml.m5.2xlarge',
        'InstanceCount': 1,
    },
)
```

배치 추론 작업에서는 다음 형식으로 응답을 반환합니다.

```
{'TransformJobArn': 'arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-transform-job',
 'ResponseMetadata': {'RequestId': '659f97fc-28c4-440b-b957-a49733f7c2f2',
  'HTTPStatusCode': 200,
  'HTTPHeaders': {'x-amzn-requestid': '659f97fc-28c4-440b-b957-a49733f7c2f2',
   'content-type': 'application/x-amz-json-1.1',
   'content-length': '96',
   'date': 'Thu, 11 Aug 2022 22:23:49 GMT'},
  'RetryAttempts': 0}}
```

------
#### [ AWS Command Line Interface (AWS CLI) ]

1. 다음 코드 예제를 사용하여 **후보 정의를 확보하세요**.

   ```
   aws sagemaker describe-auto-ml-job --auto-ml-job-name 'test-automl-job' --region us-west-2
   ```

1. 다음 코드 예제를 사용하여 **모델을 생성합니다**.

   ```
   aws sagemaker create-model --model-name 'test-sagemaker-model'
   --containers '[{
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz",
       "Environment": {
           "AUTOML_SPARSE_ENCODE_RECORDIO_PROTOBUF": "1",
           "AUTOML_TRANSFORM_MODE": "feature-transform",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "application/x-recordio-protobuf",
           "SAGEMAKER_PROGRAM": "sagemaker_serve",
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/tuning/flicdf10v2-dpp0-xgb/test-job1E9-244-7490a1c0/output/model.tar.gz",
       "Environment": {
           "MAX_CONTENT_LENGTH": "20971520",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv",
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,probabilities" 
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", 
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz", 
       "Environment": { 
           "AUTOML_TRANSFORM_MODE": "inverse-label-transform", 
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv", 
           "SAGEMAKER_INFERENCE_INPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,labels,probabilities", 
           "SAGEMAKER_PROGRAM": "sagemaker_serve", 
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code" 
       } 
   }]' \
   --execution-role-arn 'arn:aws:iam::1234567890:role/sagemaker-execution-role' \
   --region 'us-west-2'
   ```

1. 다음 코드 예제를 사용하여 **변환 작업을 생성합니다**.

   ```
   aws sagemaker create-transform-job --transform-job-name 'test-tranform-job'\
    --model-name 'test-sagemaker-model'\
   --transform-input '{
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix",
                   "S3Uri": "s3://amzn-s3-demo-bucket/data.csv"
               }
           },
           "ContentType": "text/csv",
           "SplitType": "Line"
       }'\
   --transform-output '{
           "S3OutputPath": "s3://amzn-s3-demo-bucket/output/",
           "AssembleWith": "Line"
       }'\
   --transform-resources '{
           "InstanceType": "ml.m5.2xlarge",
           "InstanceCount": 1
       }'\
   --region 'us-west-2'
   ```

1. 다음 코드 예제를 사용하여 **변환 작업의 진행 상황을 확인합니다**.

   ```
   aws sagemaker describe-transform-job --transform-job-name  'test-tranform-job' --region us-west-2
   ```

   다음은 변환 작업의 응답입니다.

   ```
   {
       "TransformJobName": "test-tranform-job",
       "TransformJobArn": "arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-tranform-job",
       "TransformJobStatus": "InProgress",
       "ModelName": "test-model",
       "TransformInput": {
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix",
                   "S3Uri": "s3://amzn-s3-demo-bucket/data.csv"
               }
           },
           "ContentType": "text/csv",
           "CompressionType": "None",
           "SplitType": "Line"
       },
       "TransformOutput": {
           "S3OutputPath": "s3://amzn-s3-demo-bucket/output/",
           "AssembleWith": "Line",
           "KmsKeyId": ""
       },
       "TransformResources": {
           "InstanceType": "ml.m5.2xlarge",
           "InstanceCount": 1
       },
       "CreationTime": 1662495635.679,
       "TransformStartTime": 1662495847.496,
       "DataProcessing": {
           "InputFilter": "$",
           "OutputFilter": "$",
           "JoinSource": "None"
       }
   }
   ```

   `TransformJobStatus` 상태를 `Completed`으로 변경한 후에는 `S3OutputPath`에서 추론 결과를 확인할 수 있습니다.

------

## 다양한 계정의 모델 배포
<a name="autopilot-deploy-models-batch-across-accounts"></a>

모델이 생성된 계정과 다른 계정에서 배치 추론 작업을 만들려면 [다양한 계정의 모델 배포](autopilot-deploy-models-realtime.md#autopilot-deploy-models-realtime-across-accounts)의 지침을 따르세요. 그런 다음 [SageMaker API를 사용하여 배포하기](#autopilot-deploy-models-batch-steps)에 따라 모델을 생성하고 작업을 변환할 수 있습니다.

# 모델 세부 정보 보기
<a name="autopilot-models-details"></a>

Autopilot은 확보할 수 있는 후보 모델에 대한 세부 정보를 생성합니다. 이러한 세부 정보에는 다음이 포함되어 있습니다.
+ 각 기능의 중요도를 나타내는 집계된 SHAP 값의 도표. 이는 모델 예측을 설명하는 데 도움이 됩니다.
+ 목표 지표를 포함한 다양한 훈련 및 검증 지표에 대한 요약 통계.
+ 모델을 훈련하고 튜닝하는 데 사용되는 하이퍼파라미터 목록.

Autopilot 작업을 실행한 후 모델 세부 정보를 보려면 다음 단계를 따르세요.

1. 최상위 **Amazon SageMaker Studio Classic** 탐색 메뉴를 보려면 왼쪽 탐색 창에서 **홈** 아이콘 ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/icons/house.png)을 선택합니다.

1. 기본 작업 영역에서 **AutoML** 카드를 선택합니다. 그러면 새 **Autopilot** 탭이 열립니다.

1. **이름** 섹션에서 검사하려는 세부 정보가 있는 Autopilot 작업을 선택합니다. 그러면 새 **Autopilot 작업** 탭이 열립니다.

1. **Autopilot 작업** 패널에는 **모델 이름** 아래에 각 모델의 **목표** 지표를 포함한 지표 값이 나열됩니다. **최적 모델**은 **모델 이름** 아래 목록 상단에 나열되며 **모델** 탭에서도 강조 표시됩니다.

   1. 모델 세부 정보를 검토하려면 관심 있는 모델을 선택하고 **모델 세부 정보 보기**를 선택합니다. 그러면 새 **모델 세부 정보** 탭이 열립니다.

1. **모델 세부 정보** 탭은 네 개의 하위 섹션으로 구분됩니다.

   1. **설명 가능성** 탭의 상단에는 각 기능의 중요성을 나타내는 집계된 SHAP 값의 도표가 있습니다. 다음은 이 모델의 지표와 하이퍼파라미터 값입니다.

   1. **성능** 탭에는 지표 통계, 혼동 행렬이 포함되어 있습니다.

   1. **아티팩트** 탭에는 모델 입력, 출력 및 중간 결과에 대한 정보가 포함되어 있습니다.

   1. **네트워크** 탭에는 네트워크 격리 및 암호화 선택 사항이 요약되어 있습니다.
**참고**  
**성능** 탭의 기능 중요도 및 정보는 **최적 모델**을 위해서만 생성됩니다.

   SHAP 값이 특징 중요도에 따른 예측을 설명하는 데 어떻게 도움이 되는지에 대한 자세한 내용은 백서 [모델 설명 가능성의 이해](https://pages.awscloud.com/rs/112-TZM-766/images/Amazon.AI.Fairness.and.Explainability.Whitepaper.pdf)를 참조하세요. 추가 정보는 SageMaker AI 개발자 안내서의 [모델 설명 가능성](clarify-model-explainability.md) 주제에서도 확인할 수 있습니다.

# Autopilot 모델 성능 보고서 보기
<a name="autopilot-model-insights"></a>

Amazon SageMaker AI 모델 품질 보고서(다른 명칭: 성과 보고서)는 AutoML 작업에서 생성된 최적의 모델 후보에 대한 인사이트와 품질 정보를 제공합니다. 여기에는 작업 세부 정보, 모델 문제 유형, 목표 함수 및 문제 유형과 관련된 정보 및 기타 정보가 포함됩니다. 이 안내서는 Amazon SageMaker Autopilot 성능 지표를 그래픽으로 보는 방법 또는 지표를 JSON 파일의 원시 데이터로 보는 방법을 보여줍니다.

예를 들어, 분류 문제의 모델 품질 보고서에는 다음이 포함됩니다.
+ 혼동 행렬
+ 수신기 작동 특성 곡선(AUC) 아래 영역
+ 위양성과 위음성을 이해하기 위한 정보
+ True Positive와 위양성의 절충
+ 정밀도와 재현율의 절충

또한 Autopilot은 모든 후보 모델에 대한 성능 지표를 제공합니다. 이러한 지표는 모든 훈련 데이터를 사용하여 계산되며 모델 성능을 추정하는 데 사용됩니다. 주요 작업 영역에는 기본적으로 이러한 지표가 포함됩니다. 지표 유형은 해결해야 하는 문제 유형에 따라 결정됩니다.

Autopilot에서 지원하는 사용 가능한 지표 목록은 [ Amazon SageMaker API 참조 설명서](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobObjective.html)를 참조하세요.

관련 지표를 기준으로 모델 후보를 정렬하면 비즈니스 요구 사항에 맞는 모델을 선택하고 배포하는 데 도움이 됩니다. 이러한 지표에 대한 정의는 [Autopilot 후보 지표](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-metrics-validation.html#autopilot-metrics) 주제를 참조하세요.

Autopilot 작업의 성능 보고서를 보려면 다음 단계를 따르세요.

1. 최상위 **Amazon SageMaker Studio Classic** 탐색 메뉴를 보려면 왼쪽 탐색 창에서 **홈** 아이콘 ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/icons/house.png)을 선택합니다.

1. 기본 작업 영역에서 **AutoML** 카드를 선택합니다. 그러면 새 **Autopilot** 탭이 열립니다.

1. **이름** 섹션에서 검사하려는 세부 정보가 있는 Autopilot 작업을 선택합니다. 그러면 새 **Autopilot 작업** 탭이 열립니다.

1. **Autopilot 작업** 패널에는 **모델 이름** 아래에 각 모델의 **목표** 지표를 포함한 지표 값이 나열됩니다. **최적 모델**은 **모델 이름** 아래 목록 상단에 나열되며 **모델** 탭에 강조 표시됩니다.

   1. 모델 세부 정보를 검토하려면 관심 있는 모델을 선택하고 **모델 세부 정보 보기**를 선택합니다. 그러면 새 **모델 세부 정보** 탭이 열립니다.

1. **설명 가능성**과 **아티팩트** 탭 사이에 있는 **성능** 탭을 선택합니다.

   1. 탭의 상단 오른쪽에 있는 **성능 보고서 다운로드** 버튼의 아래쪽 화살표를 선택합니다.

   1. 아래쪽 화살표는 Autopilot 성능 지표를 볼 수 있는 두 가지 옵션을 제공합니다.

      1. 성능 보고서의 PDF를 다운로드하여 지표를 그래픽으로 볼 수 있습니다.

      1. 지표를 원시 데이터로 보고 JSON 파일로 다운로드할 수 있습니다.

SageMaker Studio Classic에서 AutoML 작업을 생성 및 실행하는 방법에 대한 자세한 내용은 [AutoML API를 사용하여 테이블 형식 데이터에 대한 회귀 또는 분류 작업 생성](autopilot-automate-model-development-create-experiment.md)를 참조하세요.

성능 보고서에는 다음 두 섹션이 있습니다. 첫 번째에는 모델을 생성한 Autopilot 작업에 대한 세부 정보가 포함되어 있습니다. 두 번째 섹션에는 모델 품질 보고서가 포함되어 있습니다.

## Autopilot 작업 세부 정보
<a name="autopilot-model-insights-details-and-metrics-table"></a>

보고서의 첫 번째 섹션에서는 모델을 생성한 Autopilot 작업에 대한 몇 가지 일반적인 정보를 제공합니다. 이러한 작업 세부 정보에는 다음 정보가 포함되어 있습니다.
+ Autopilot 후보 이름
+ Autopilot 작업 이름
+ 문제 유형
+ 목표 지표
+ 최적화 방향

## 모델 품질 보고서
<a name="autopilot-model-quality-report"></a>

모델 품질 정보는 Autopilot 모델 인사이트를 통해 생성됩니다. 생성되는 보고서 내용은 보고서에서 다루는 문제 유형(회귀, 바이너리 분류 또는 멀티클래스 분류)에 따라 달라집니다. 보고서는 평가 데이터세트에 포함된 행 수와 평가가 발생한 시간을 지정합니다.

### 지표 테이블
<a name="autopilot-model-quality-report-metrics"></a>

모델 품질 보고서의 첫 번째 부분에는 지표 테이블이 포함되어 있습니다. 이는 모델이 해결한 문제 유형에 적합합니다.

다음 이미지는 회귀 문제에 대해 Autopilot으로 생성한 지표 테이블의 예제입니다. 지표 이름, 값 및 표준 편차를 보여줍니다.

![\[Amazon SageMaker Autopilot 모델 인사이트 회귀 지표 보고서 예제.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-regression-metrics.png)


다음 이미지는 멀티클래스 분류 문제에 대해 Autopilot으로 생성한 지표 테이블의 예제입니다. 지표 이름, 값 및 표준 편차를 보여줍니다.

![\[Amazon SageMaker Autopilot 모델 인사이트 멀티클래스 분류 지표 보고서 예제.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-multiclass-metrics-report.png)


### 그래픽 모델 성능 정보
<a name="autopilot-model-quality-report-graphs"></a>

 모델 품질 보고서의 두 번째 부분에는 모델 성능을 평가하는 데 도움이 되는 그래픽 정보가 포함되어 있습니다. 이 섹션의 내용은 모델링에 사용된 문제 유형에 따라 달라집니다.

#### 수신기 작동 특성 곡선 아래 영역
<a name="autopilot-model-insights-auc-roc"></a>

수신기 작동 특성 곡선 아래 영역은 True Positive와 위양성 비율 간의 균형을 나타냅니다. 이는 바이너리 분류 모델에 사용되는 업계 표준 정확도 지표입니다. AUC(곡선 아래 영역)에서는 부정적인 예보다 긍정적인 예에 대해 더 높은 점수를 예측하는 모델의 기능을 측정합니다. 따라서 AUC 지표는 가능한 모든 분류 임곗값에서 모델 성능을 집계하여 측정 값을 제공합니다.

AUC 지표에서는 0 \$1 1의 십진수 값을 반환합니다. 1에 가까운 AUC 값은 정확성이 높은 기계 학습 모델을 가리킵니다. 값이 0.5에 가까우면 모델 성능이 무작위로 추측하는 것보다 낫지 않다는 것을 나타냅니다. AUC 값이 0에 가까우면 모델이 올바른 패턴을 학습했지만 예측이 최대한 부정확하다는 것을 나타냅니다. 값이 0에 가까우면 데이터에 문제가 있음을 알 수 있습니다. AUC 지표에 대한 자세한 내용은 Wikipedia의 [수신기 작동 특성](https://en.wikipedia.org/wiki/Receiver_operating_characteristic) 문서를 참조하세요.

다음은 바이너리 분류 모델로 예측한 결과를 평가하기 위한 수신기 작동 특성 곡선 그래프 아래 영역의 예제입니다. 가는 점선은 무작위 수준의 추측을 분류하는 모델이 점수를 매기는 수신기 작동 특성 곡선 아래 영역을 나타내며 AUC 점수는 0.5입니다. 더 정확한 분류 모델의 곡선은 True Positive 비율이 위양성 비율을 초과하는 이 무작위 기준 위에 위치합니다. 바이너리 분류 모델의 성능을 나타내는 수신기 작동 특성 곡선 아래 영역은 두꺼운 실선으로 표시됩니다.

![\[Amazon SageMaker Autopilot 수신기 작동 특성 곡선 아래 영역 예제.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-receiver-operating-characteristic-curve.png)


그래프의 구성 요소 중 **위양성 비율**(FPR)과 **진양성 비율**(TPR)의 요약은 다음과 같이 정의됩니다.
+ 올바른 예측
  + **진양성**(TP): 예측값이 1이고 실제 값도 1입니다.
  + **진음성**(TN): 예측 값이 0이고 실제 값도 0입니다.
+ 잘못된 예측
  + **위양성**(FP): 예측 값은 1이지만 실제 값은 0입니다.
  + **위음성**(FN): 예측값은 0이고, 실제값은 1입니다.

**위양성 비율**(FPR)은 FP와 TN의 합에 대해 양성으로 잘못 예측된(FP) 진음성(TN)의 비율을 측정합니다. 범위는 0\$11입니다. 값이 작을수록 예측 정확도가 더 높습니다.
+ FPR = FP/(FP\$1TN)

**진양성 비율**(TPR)은 진양성과 위음성(FN)의 합에 대해 양성으로 정확하게 예측된(TP) 진양성의 비율(TP)을 측정합니다. 범위는 0\$11입니다. 값이 클수록 예측 정확도가 더 높습니다.
+ TPR = TP/(TP\$1FN)

#### 혼동 행렬
<a name="autopilot-model-insights-confusion-matrix"></a>

혼동 행렬은 다양한 문제에 대한 바이너리 및 멀티클래스 분류에 대한 모델의 예측 정확도를 시각화하는 방법을 제공합니다. 모델 품질 보고서의 혼동 행렬에는 다음이 포함됩니다.
+ 실제 레이블에 대한 정확한 예측과 잘못된 예측의 수와 백분율
+ 왼쪽 상단에서 오른쪽 아래 모서리까지의 대각선 상의 정확한 예측 수 및 백분율
+ 상단 오른쪽에서 왼쪽 아래 모서리까지의 대각선 상의 부정확한 예측의 수와 백분율

혼동 행렬의 부정확한 예측은 혼동 값입니다.

다음 다이어그램은 바이너리 분류 문제에 대한 혼동 행렬의 예를 보여줍니다. 여기에는 다음 정보가 포함됩니다.
+ 세로축은 참 및 거짓 실제 레이블을 포함하는 두 행으로 구분됩니다.
+ 가로 축은 모델에서 예측한 참 및 거짓 레이블을 포함하는 두 개의 열로 나뉩니다.
+ 색상 막대는 많은 수의 샘플에 어두운 색조를 할당하여 각 범주에서 분류된 값의 수를 시각적으로 나타냅니다.

이 예제에서 모델은 실제 2817개의 잘못된 값을 정확하게 예측하고 353개의 실제 참값을 정확하게 예측했습니다. 이 모델은 130개의 실제 참값을 거짓으로, 33개의 실제 거짓값을 참으로 잘못 예측했습니다. 색조 차이는 데이터세트가 균형을 이루지 못했다는 것을 나타냅니다. 불균형은 실제 참 레이블보다 실제 거짓 레이블이 더 많기 때문입니다.

![\[Amazon SageMaker Autopilot 바이너리 혼동 행렬 예제.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-confusion-matrix-binary.png)


다음 다이어그램은 멀티클래스 분류 문제에 대한 혼동 행렬의 예를 보여줍니다. 모델 품질 보고서의 혼동 행렬에는 다음이 포함됩니다.
+ 세로축은 서로 다른 세 개의 실제 레이블을 포함하는 세 개의 행으로 나뉩니다.
+ 가로 축은 모델에서 예측한 레이블을 포함하는 세 개의 열로 나뉩니다.
+ 색상 막대는 많은 수의 샘플에 어두운 색조를 할당하여 각 범주에서 분류된 값의 수를 시각적으로 나타냅니다.

아래 예제에서 모델은 레이블 **f**의 실제값 354, 레이블 **i**의 실제값 1094, 레이블 **m**의 실제값 852를 정확하게 예측했습니다. 색조의 차이는 **f** 또는 **m** 값에 대한 것보다 **i** 값에 대한 레이블이 많기 때문에 데이터세트의 균형이 맞지 않는다는 것을 나타냅니다.

![\[Amazon SageMaker Autopilot 멀티클래스 혼동 행렬 예제.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-confusion-matrix-multiclass.png)


제공된 모델 품질 보고서의 혼동 행렬은 멀티클래스 분류 문제 유형에 대해 최대 15개의 레이블을 수용할 수 있습니다. 레이블에 해당하는 행에 `Nan` 값이 표시되면, 모델 예측을 확인하는 데 사용되는 검증 데이터세트에 해당 레이블의 데이터가 포함되어 있지 않다는 의미입니다.

#### 이득 곡선
<a name="autopilot-model-insights-precision-gain-curve"></a>

바이너리 분류에서 이득 곡선은 데이터세트의 백분율을 사용하여 양수 레이블을 찾을 때의 누적 이익을 예측합니다. 이 이득 값은 훈련 중에 각 십분위수에서 양수 관측치의 누적 수를 데이터에 있는 양수 관측치의 총 수로 나누어 계산합니다. 훈련 중에 만든 분류 모델이 보이지 않는 데이터를 대표하는 경우 이득 곡선을 사용하여 양수 레이블의 백분율을 얻기 위해 목표로 삼아야 하는 데이터의 백분율을 예측할 수 있습니다. 사용된 데이터세트의 비율이 높을수록 양수 레이블이 발견된 비율도 높아집니다.

다음 예제 그래프에서 이득 곡선은 기울기가 변하는 선입니다. 직선은 데이터세트에서 무작위로 일정 비율의 데이터를 선택하여 찾은 양수 레이블의 백분율입니다. 데이터세트의 20%를 대상으로 지정하면 40% 이상의 양수 레이블이 발견될 것으로 예상됩니다. 예를 들어, 이득 곡선을 사용하여 마케팅 캠페인 성과를 결정하는 것을 고려해 볼 수 있습니다. 이득 곡선 예제를 사용하면 동네 주민 중 83%가 쿠키를 구매한다고 가정했을 때 해당 지역의 약 60%에게 광고를 보내는 셈이 됩니다.

![\[Amazon SageMaker Autopilot 이득 곡선 예제(백분율 및 이득 값 포함)\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-gain-curve.png)


#### 리프트 곡선
<a name="autopilot-model-insights-lift-curve"></a>

바이너리 분류에서 리프트 곡선은 훈련된 모델을 사용하여 양수 레이블을 찾을 확률을 무작위 추측과 비교해서 예측하는 향상을 보여줍니다. 리프트 값은 훈련 중에 각 십분위수의 양수 레이블 비율에 대한 백분율 이득 비율을 사용하여 계산됩니다. 훈련 중에 만든 모델이 보이지 않는 데이터를 나타내는 경우 리프트 곡선을 사용하여 무작위 추측보다 모델 사용에 이점이 있다는 것을 예측하세요.

다음 예제 그래프에서 리프트 곡선은 기울기가 변하는 선입니다. 직선은 데이터세트에서 해당 백분율을 임의로 선택하는 것과 관련된 리프트 곡선입니다. 모델의 분류 레이블로 데이터세트의 40%를 대상으로 지정하면 보이지 않는 데이터의 40%를 랜덤하게 선택하여 찾은 양수 레이블 수보다 약 1.7배를 찾을 수 있을 것으로 예상됩니다.

![\[Amazon SageMaker Autopilot 리프트 곡선 예제(백분율 및 리프트 값 포함)\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-lift-curve.png)


#### 정밀도-재현율 곡선
<a name="autopilot-model-insights-precision-recall-curve"></a>

정밀도-재현율 곡선은 바이너리 분류 문제에 대한 정밀도와 재현율 간의 절충을 나타냅니다.

**정밀도**는 모든 긍정적 예측(TP 및 위양성) 중에서 양수로 예측되는 실제 양수(TP)의 비율을 측정합니다. 범위는 0\$11입니다. 값이 클수록 예측된 값의 정확도가 더 높습니다.
+ 정밀도 = TP/(TP\$1FP)

**재현율**은 모든 실제 긍정적 예측(TP 및 위양성) 중에서 양수로 예측되는 실제 양수(TP)의 비율을 측정합니다. 이것을 민감도 또는 진양성 비율로도 알려져 있습니다. 범위는 0\$11입니다. 값이 클수록 표본에서 양수 값을 더 잘 감지할 수 있습니다.
+ 재현율 = TP/(TP\$1FN)

분류 문제의 목적은 가능한 한 많은 요소에 올바르게 레이블을 지정하는 것입니다. 재현율은 높지만 정밀도가 낮은 시스템은 높은 비율의 위양성을 반환합니다.

다음 그림은 모든 이메일을 스팸으로 표시하는 스팸 필터를 보여줍니다. 재현율은 위음성을 측정하지 않기 때문에 이 경우 재현율이 높지만 정밀도는 낮습니다.

문제의 위양성 값에 대한 페널티는 낮지만, 진양성 결과를 놓쳤을 때 페널티가 높은 경우 정밀도보다 재현율에 더 많은 가중치를 부여하세요. 자율 주행 차량에서 임박한 충돌을 감지하는 경우를 예로 들 수 있습니다.

![\[모든 샘플을 양성으로 모델링하는 고재현율 저정밀도 시스템의 Autopilot 예시\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-high-recall-low-precision.PNG)


고정밀도 저재현율 시스템은 높은 비율의 위음성 결과를 반환합니다. 모든 이메일을 권장(스팸 아님)으로 표시하는 스팸 필터는 정밀도가 높지만 재현율은 낮습니다. 정확도가 위음성을 측정하지 않기 때문입니다.

위음성 값에 대한 페널티는 낮지만, 진음성 결과를 놓쳤을 때 페널티가 높은 문제의 경우 재현율보다 정밀도에 더 많은 비중을 두세요. 세무 감사를 위해 의심스러운 필터에 플래그를 지정하는 경우를 예로 들 수 있습니다.

다음 그림은 정밀도가 위음성을 측정하지 않기 때문에 정밀도가 높지만 재현율은 낮은 스팸 필터를 보여줍니다.

![\[모든 샘플을 음성으로 모델링하는 고정밀도 및 저재현율 시스템의 Autopilot 예제.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-high-precision-low-recall.PNG)


높은 정밀도와 높은 재현율을 모두 갖춘 예측을 수행하는 모델은 올바르게 레이블이 지정된 결과를 많이 생성합니다. 자세한 내용은 Wikipedia의 [정밀도 및 재현율](https://en.wikipedia.org/wiki/Precision_and_recall) 문서를 참조하세요.

#### 정밀도-재현율 곡선 아래 영역(AUPRC)
<a name="autopilot-model-insights-area-under-precision-recall-curve"></a>

바이너리 분류 문제의 경우 Amazon SageMaker Autopilot에 정밀도-재현율 곡선 아래 영역(AUPRC)의 그래프가 포함되어 있습니다. AUPRC 지표는 가능한 모든 분류 임곗값에서 모델 성능을 집계하여 측정하며 정밀도와 재현율을 모두 사용합니다. AUPRC는 진음성의 수를 고려하지 않습니다. 따라서 데이터에 진음성 수가 많은 경우 모델 성능을 평가할 때 유용할 수 있습니다. 희귀 돌연변이를 포함하는 유전자를 모델링하는 경우를 예로 들 수 있습니다.

다음 그림은 AUPRC 그래프의 예제입니다. 최고값에서의 정밀도는 1이고 재현율은 0입니다. 그래프의 오른쪽 하단에서 재현율은 가장 높은 값 1이고 정밀도는 0입니다. 이 두 점 사이의 AUPRC 곡선은 서로 다른 임곗값에서 정밀도와 재현율 간의 절충을 보여줍니다.

![\[정밀도-재현율 곡선은 서로 다른 임곗값에서의 정밀도와 재현율 간의 절충을 나타냅니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-binary-precision-recall.png)


#### 실제 도표와 예측 도표 비교
<a name="autopilot-model-insights-actual-vs-predicted-plot"></a>

실제 대 예측 도표는 실제 모델 값과 예측 모델 값 간의 차이를 보여줍니다. 다음 예제 그래프에서 실선은 선형 최적 적합선입니다. 모델의 정확도가 100%인 경우 각 예측점은 해당하는 실제 지점과 같고 이 최적 적합선 위에 놓이게 됩니다. 최적 적합선으로부터의 거리는 모델 오류를 시각적으로 나타냅니다. 최적 적합선에서 멀어질수록 모델 오차가 커집니다.

![\[선형 최적 적합선, 실제 도표와 예측 도표의 차이, 모델 오차의 예제.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-actual-vs-predicted-plot.png)


#### 표준화 잔차 도표
<a name="autopilot-model-insights-standardized-residual"></a>

표준화 잔차 도표에는 다음과 같은 통계 용어가 포함됩니다.

**`residual`**  
(원시) 잔차는 모델에서 예측한 실제값과 예측값 간의 차이를 보여줍니다. 차이가 클수록 잔차 값도 커집니다.

**`standard deviation`**  
표준 편차는 값이 평균 값과 어떻게 다른지를 측정한 것입니다. 표준 편차가 높으면 많은 값이 평균 값과 크게 다르다는 것을 나타냅니다. 표준 편차가 낮으면 많은 값이 평균 값에 가깝다는 것을 나타냅니다.

**`standardized residual`**  
표준화 잔차는 원시 잔차를 표준 편차로 나눕니다. 표준화 잔차는 표준 편차 단위를 가지며 원시 잔차의 규모 차이에 관계없이 데이터의 이상치를 식별하는 데 유용합니다. 표준화 잔차가 다른 표준화 잔차보다 훨씬 작거나 크면 모델이 이러한 관측치에 잘 맞지 않는다는 뜻입니다.

표준화 잔차 도표는 관측값과 예상 값 간의 차이 강도를 측정합니다. 실제 예측값은 x축에 표시됩니다. 일반적으로 값이 절대값 3보다 큰 점을 이상치로 간주합니다.

다음 예제 그래프는 수평 축에서 0을 중심으로 많은 수의 표준화 잔차가 모여 있음을 보여줍니다. 값이 0에 가까울수록 모델이 이러한 점에 잘 맞음을 나타냅니다. 도표의 위쪽과 아래쪽으로 향하는 점은 모델이 잘 예측하지 못합니다.

![\[Amazon SageMaker Autopilot 표준화 잔차 도표 예제.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-standardized-residual.png)


#### 잔차 히스토그램
<a name="autopilot-model-insights-residual-histogram"></a>

잔차 히스토그램에는 다음과 같은 통계 용어가 포함됩니다.

**`residual`**  
(원시) 잔차는 모델에서 예측한 실제값과 예측값 간의 차이를 보여줍니다. 차이가 클수록 잔차 값도 커집니다.

**`standard deviation`**  
표준 편차는 값이 평균 값과 얼마나 다른지를 측정한 것입니다. 표준 편차가 높으면 많은 값이 평균 값과 크게 다르다는 것을 나타냅니다. 표준 편차가 낮으면 많은 값이 평균 값에 가깝다는 것을 나타냅니다.

**`standardized residual`**  
표준화 잔차는 원시 잔차를 표준 편차로 나눕니다. 표준화 잔차의 단위는 표준 편차 단위입니다. 원시 잔차의 규모 차이에 관계없이 데이터의 이상치를 식별하는 데 유용합니다. 표준화 잔차가 다른 표준화 잔차보다 훨씬 작거나 크면 모델이 이러한 관측치에 잘 맞지 않는다는 뜻일 수 있습니다.

**`histogram`**  
히스토그램은 값이 얼마나 자주 발생했는지를 보여주는 그래프입니다.

잔차 히스토그램은 표준화 잔차 값의 분포를 보여줍니다. 종 모양으로 분포되고 0에 중심을 둔 히스토그램은 모델이 대상 값의 특정 범위를 체계적으로 과대 예측하거나 과소 예측하지 않음을 나타냅니다.

다음 그림에서 표준화 잔차 값은 모델이 데이터를 잘 적합시키고 있음을 나타냅니다. 그래프에 중심값에서 멀리 떨어진 값이 표시되면 해당 값이 모델에 잘 맞지 않는다는 의미입니다.

![\[표준화 잔차 값이 0에 가까우면 이는 모델이 데이터를 잘 적합시킨다는 것을 나타냅니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-residual-histogram.png)


# AutoML 작업을 관리하기 위해 생성된 Autopilot 노트북
<a name="autopilot-automate-model-development-notebook-output"></a>

Amazon SageMaker Autopilot은 AutoML 작업을 사용하여 자동 기계 학습(AutoML) 프로세스의 주요 작업을 관리합니다. AutoML 작업은 후보 모델을 생성하기 위해 Autopilot이 따르는 계획을 설명하는 세 개의 노트북 기반 보고서를 생성합니다.

후보 모델은 쌍(파이프라인, 알고리즘)으로 구성됩니다. 먼저, 사용자가 제공한 데이터에 대해 Autopilot이 배운 내용을 설명하는 **데이터 탐색** 노트북이 있습니다. 둘째, 후보를 생성하기 위해 데이터에 대한 정보를 사용하는 **후보 정의** 노트북이 있습니다. 셋째, Autopilot 실험의 순위표에서 최적의 모델의 성능 특성을 자세히 설명하는 데 도움이 되는 **모델 인사이트** 보고서입니다.

**Topics**
+ [Autopilot 데이터 탐색 보고서](autopilot-data-exploration-report.md)
+ [후보 정의 노트북 찾기 및 실행](autopilot-candidate-generation-notebook.md)

이러한 노트북은 Amazon SageMaker AI나 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)를 설치한 경우 로컬에서 실행할 수 있습니다. 다른 SageMaker Studio Classic 노트북과 마찬가지로 이 노트북을 공유할 수 있습니다. 노트북은 실험을 수행할 수 있도록 만들어졌습니다. 예를 들어 노트북에서 다음 항목을 편집할 수 있습니다.
+ 데이터에 사용된 프리프로세서 
+ HPO(하이퍼파라미터 최적화) 실행 및 병렬화 횟수
+ 시도할 알고리즘
+ HPO 작업에 사용되는 인스턴스 유형
+ 하이퍼파라미터 범위

후보 정의 노트북을 수정하여 학습 도구로 사용할 것을 권장합니다. 이 기능을 사용하면 기계 학습 프로세스 중에 내린 결정이 결과에 어떤 영향을 미치는지 알 수 있습니다.

**참고**  
기본 인스턴스에서 노트북을 실행하면 기준 비용이 발생합니다. 하지만 후보 노트북에서 HPO 작업을 실행하는 경우 이러한 작업에는 추가 컴퓨팅 리소스가 사용되므로 추가 비용이 발생합니다.

# Autopilot 데이터 탐색 보고서
<a name="autopilot-data-exploration-report"></a>

Amazon SageMaker Autopilot은 데이터세트를 자동으로 정리하고 사전 처리합니다. 고품질 데이터는 기계 학습 효율성을 개선하고 더 정확한 예측을 가능하게 하는 모델을 생성합니다.

고객이 제공한 데이터세트에는 일부 도메인 지식이 없으면 자동으로 수정할 수 없는 문제가 있습니다. 예를 들어, 회귀 문제의 대상 열에 특이치 값이 크면 특이치가 아닌 값에 대한 예측이 최적이 아닐 수 있습니다. 모델링 목표에 따라 특이치를 제거해야 할 수도 있습니다. 실수로 대상 열이 입력 특징 중 하나로 포함된 경우 최종 모델은 잘 검증되지만 향후 예측에는 거의 가치가 없습니다.

Autopilot은 고객이 이러한 종류의 문제를 발견할 수 있도록 데이터의 잠재적 문제에 대한 인사이트가 포함된 데이터 탐색 보고서를 제공합니다. 보고서는 또한 문제 해결 방법을 제안합니다.

모든 Autopilot 작업에 대해 보고서가 포함된 데이터 탐색 노트북이 생성됩니다. 보고서는 Amazon S3 버킷에 저장되며 출력 경로에서 액세스할 수 있습니다. 데이터 탐색 보고서의 경로는 일반적으로 다음 패턴을 따릅니다.

```
[s3 output path]/[name of the automl job]/sagemaker-automl-candidates/[name of processing job used for data analysis]/notebooks/SageMaker AIAutopilotDataExplorationNotebook.ipynb
```

데이터 탐색 노트북의 위치는 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html) 작업 응답을 사용하여 Autopilot API에서 가져올 수 있는데 이는 [DataExplorationNotebookLocation](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobArtifacts.html#sagemaker-Type-AutoMLJobArtifacts-DataExplorationNotebookLocation)에 저장됩니다.

SageMaker Studio Classic에서 Autopilot을 실행할 때 다음 단계를 사용하여 데이터 탐색 보고서를 열 수 있습니다.

1. 최상위 **Amazon SageMak Classicer Studio** 탐색 메뉴를 보려면 *왼쪽 탐색 창*에서**홈** 아이콘 ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/icons/house.png)을 선택합니다.

1. 기본 작업 영역에서 **AutoML** 카드를 선택합니다. 그러면 새 **Autopilot** 탭이 열립니다.

1. **이름** 섹션에서 검사하려는 데이터 탐색 노트북이 있는 Autopilot 작업을 선택합니다. 그러면 새 **Autopilot 작업** 탭이 열립니다.

1. **Autopilot 작업** 탭의 오른쪽 상단에서 **데이터 탐색 노트북 열기**를 선택합니다.

데이터 탐색 보고서는 훈련 프로세스가 시작되기 전에 데이터에서 생성됩니다. 이렇게 하면 의미 없는 결과를 초래할 수 있는 Autopilot 작업을 중지할 수 있습니다. 마찬가지로, Autopilot을 다시 실행하기 전에 데이터세트와 관련된 문제나 개선 사항을 해결할 수 있습니다. 이렇게 하면 더 잘 선별된 데이터세트를 기반으로 모델을 학습시키기 전에 해당 분야의 전문 지식을 활용하여 수동으로 데이터 품질을 개선할 수 있습니다.

데이터 보고서에는 정적 마크다운만 포함되며 모든 Jupyter 환경에서 열 수 있습니다. 보고서가 들어 있는 노트북은 PDF 또는 HTML과 같은 다른 형식으로 변환할 수 있습니다. 변환에 대한 자세한 내용은 [nbconvert 스크립트를 사용하여 Jupyter notebook을 다른 형식으로 변환](https://nbconvert.readthedocs.io/en/latest/usage.html )을 참조하세요.

**Topics**
+ [데이터세트 요약](#autopilot-data-exploration-report-dataset-summary)
+ [대상 분석](#autopilot-data-exploration-report-target-analysis)
+ [데이터 샘플](#autopilot-data-exploration-report-data-sample)
+ [중복된 행](#autopilot-data-exploration-report-duplicate-rows)
+ [열 간 상관 관계](#autopilot-data-exploration-report-cross-column-correlations)
+ [변칙적 행](#autopilot-data-exploration-report-cross-anomolous-rows)
+ [누락된 값, 카디널리티, 설명 통계](#autopilot-data-exploration-report-description-statistics-and-values)

## 데이터세트 요약
<a name="autopilot-data-exploration-report-dataset-summary"></a>

이 **데이터세트 요약**은 행, 열 수, 중복된 행 비율, 누락된 목표 값 등 데이터세트를 특징짓는 주요 통계를 제공합니다. 이는 Amazon SageMaker Autopilot에서 감지하여 사용자 개입이 필요할 수 있는 데이터세트에 문제가 있는 경우 빠른 알림을 제공하기 위한 것입니다. 인사이트는 심각도가 '높음' 또는 '낮음'으로 분류된 경고로 표시됩니다. 분류는 문제가 모델 성능에 부정적인 영향을 미칠 것이라는 신뢰 수준에 따라 달라집니다.

심각도가 높거나 낮은 인사이트는 요약에 팝업으로 표시됩니다. 대부분의 인사이트에는 주의가 필요한 데이터세트에 문제가 있는지 확인하는 방법에 대한 권장 사항이 제공됩니다. 문제 해결 방법에 대한 제안도 있습니다.

Autopilot은 데이터세트에서 누락되거나 유효하지 않은 목표값에 대한 추가 통계를 제공하여 심각도가 높은 인사이트로는 포착할 수 없는 다른 문제를 찾아내는 데 도움이 됩니다. 특정 유형의 열이 예기치 않은 숫자이면 사용하려는 일부 열이 데이터세트에서 누락되었을 수 있습니다. 또한 데이터를 준비하거나 저장하는 방식에 문제가 있었음을 의미할 수도 있습니다. Autopilot이 관심을 불러일으킨 이러한 데이터 문제를 해결하면 데이터를 기반으로 훈련된 기계 학습 모델의 성능을 개선할 수 있습니다.

심각도가 높은 인사이트는 요약 섹션 및 보고서의 기타 관련 섹션에 표시됩니다. 일반적으로 데이터 보고서의 섹션에 따라 심각도가 높은 인사이트와 낮은 심각도 인사이트의 예가 제공됩니다.

## 대상 분석
<a name="autopilot-data-exploration-report-target-analysis"></a>

이 섹션에는 대상 열의 값 분포와 관련하여 심각도가 높거나 낮은 다양한 인사이트를 보여줍니다. 대상 열에 올바른 값이 포함되어 있는지 확인하세요. 대상 열의 값이 올바르지 않으면 기계 학습 모델이 의도한 비즈니스 목적에 부합하지 않을 수 있습니다. 이 섹션에는 심각도가 높고 낮은 여러 데이터 인사이트가 나와 있습니다. 다음은 몇 가지 예제입니다.
+ **특이치 대상 값 **- 편향되거나 비정상적 회귀 대상 분포 (예: 꼬리 부분에 집중된 대상 값).
+ **대상 카디널리티가 높거나 낮음** - 클래스 레이블 수가 드물거나 분류를 위한 고유한 클래스 수가 많습니다.

회귀 및 분류 문제 유형 모두에서 무한대 숫자, `NaN` 또는 빈 대상 열 등 유효하지 않은 값이 표시됩니다. 문제 유형에 따라 다양한 데이터세트 통계가 제공됩니다. 회귀 문제의 대상 열 값 분포를 통해 분포가 예상과 일치하는지 확인할 수 있습니다.

다음 스크린샷은 데이터세트의 평균, 중앙값, 최소값, 최대값, 이상치 백분율 등의 통계가 포함된 Autopilot 데이터 보고서를 보여줍니다. 스크린샷에는 대상 열의 레이블 분포를 보여주는 히스토그램도 포함되어 있습니다. 히스토그램에서는 가로축에 **대상 열 값**을 세로축에 **개수**를 보여줍니다. 상자는 스크린샷의 **이상치 백분율** 섹션을 강조 표시하여 이 통계가 나타나는 위치를 보여줍니다.

![\[대상 열 값 분포에 대한 Autopilot 데이터 보고서.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-data-report-target-analysis.png)


대상 값 및 분포와 관련된 여러 통계가 표시됩니다. 이상치, 유효하지 않은 값 또는 누락된 백분율이 0보다 크면 해당 값이 표시되므로 데이터에 사용할 수 없는 대상 값이 포함된 이유를 조사할 수 있습니다. 사용할 수 없는 일부 대상 값은 심각도가 낮은 인사이트 경고로 강조 표시됩니다.

다음 스크린샷에서는 대상 열에 실수로 ` 기호가 추가되어 대상 숫자 값이 파싱되지 않았습니다. **심각도가 낮은 인사이트: “잘못된 대상 값”** 경고가 나타납니다. 이 예제의 경고 메시지는 “대상 열의 레이블 중 0.14%를 숫자 값으로 변환할 수 없습니다”라고 표시합니다. 숫자가 아닌 가장 일반적인 값은 ["-3.8e-05","-9-05","-4.7e-05","-1.4999999999999999e-05","-4.3e-05"]입니다. 이는 일반적으로 데이터 수집 또는 처리에 문제가 있음을 나타냅니다. Amazon SageMaker Autopilot은 대상 레이블이 잘못된 모든 데이터를 무시합니다.”

![\[Autopilot 데이터는 잘못된 대상 값에 대해 낮은 심각도의 경고를 보고합니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-data-report-target-analysis-invalid-target-values.png)


또한 Autopilot은 분류를 위한 레이블 분포를 보여주는 히스토그램을 제공합니다.

다음 스크린샷은 클래스 수, 누락된 값 또는 유효하지 않은 값을 포함하는 대상 열에 대해 제공된 통계의 예를 보여줍니다. 가로 축에 **대상 레이블**이 있고 세로 축에 **빈도**가 표시된 히스토그램은 각 레이블 범주의 분포를 보여줍니다.

![\[Autopilot 데이터에 따르면 분류 카디널리티가 높습니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-data-report-target-analysis-invalid-classification.png)


**참고**  
이 섹션과 다른 섹션에 제시된 모든 용어의 정의는 보고서 노트 하단의 **정의** 섹션에서 찾을 수 있습니다.

## 데이터 샘플
<a name="autopilot-data-exploration-report-data-sample"></a>

Autopilot은 데이터의 실제 샘플을 제시하여 데이터세트와 관련된 문제를 찾아내는 데 도움을 줍니다. 샘플 테이블은 가로로 스크롤됩니다. 샘플 데이터를 검사하여 데이터세트에 필요한 모든 열이 있는지 확인합니다.

또한 Autopilot은 예측력 측정값을 계산하여 특징과 대상 변수 간의 선형 또는 비선형 관계를 식별하는 데 사용할 수 있습니다. `0`의 값은 대상 변수를 예측할 때 특징에 대한 예측 값이 없음을 나타냅니다. `1`의 값은 대상 변수에 대한 예측력이 가장 높음을 나타냅니다. 예측력에 대한 자세한 내용은 **정의** 섹션을 참조하세요.

**참고**  
특징 중요도 대신 예측력을 사용하는 것은 권장되지 않습니다. 예측력이 사용 사례에 적합한 측정값이라고 확신하는 경우에만 사용하세요.

다음 스크린샷은 데이터 샘플의 예를 보여줍니다. 맨 위 행에는 데이터세트에 있는 각 열의 예측력이 포함됩니다. 두 번째 행에는 열 데이터 유형이 포함됩니다. 다음 행에는 레이블이 포함됩니다. 열에는 대상 열과 각 특징 열이 차례로 포함됩니다. 각 특징 열에는 이 스크린샷에서 강조 표시된 관련 예측력이 상자와 함께 표시됩니다. 이 예제에서는 특징 `x51`을 포함하는 열이 대상 변수 `y`에 대해 `0.68`의 예측력을 가지고 있습니다. 특징 `x55`은 예측력이 `0.59`로서 예측 가능성이 약간 떨어집니다.

![\[Autopilot 데이터 보고서 데이터 샘플 예측력.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-data-report-data-sample-prediction.png)


## 중복된 행
<a name="autopilot-data-exploration-report-duplicate-rows"></a>

데이터세트에 중복된 행이 있는 경우 Amazon SageMaker Autopilot은 해당 행의 샘플을 표시합니다.

**참고**  
Autopilot에 제공하기 전에 업샘플링을 통해 데이터세트를 밸런싱하는 것은 권장되지 않습니다. 이로 인해 Autopilot으로 훈련한 모델의 검증 점수가 부정확해질 수 있으며 생산된 모델을 사용할 수 없게 될 수 있습니다.

## 열 간 상관 관계
<a name="autopilot-data-exploration-report-cross-column-correlations"></a>

Autopilot은 두 특징 간의 선형 상관 관계를 측정한 Pearson 상관 계수를 사용하여 상관 행렬을 채웁니다. 상관 행렬에서는 가로축과 세로축 모두에 숫자형 특징이 그려지고, 교차점에 피어슨 상관 계수가 그려집니다. 두 특징 간의 상관 관계가 높을수록 계수가 높아지며 최대값은 `|1|`입니다.
+ 값이 `-1`이면 특징들이 완전히 음의 상관관계가 있음을 나타냅니다.
+ 특징이 그 자체와 상관관계가 있을 때 나타나는 값인 `1`은 완전한 양의 상관관계를 나타냅니다.

상관 행렬의 정보를 사용하여 상관 관계가 높은 특징을 제거할 수 있습니다. 특징의 수가 적을수록 모델이 과적합될 가능성이 줄어들고 두 가지 측면에서 생산 비용을 줄일 수 있습니다. 필요한 Autopilot 런타임이 줄어들고, 일부 애플리케이션의 경우 데이터 수집 절차가 더 저렴해질 수 있습니다.

다음 스크린샷은 `7` 특징 간 상관 행렬의 예를 보여줍니다. 각 특징은 가로축과 세로축 모두에 매트릭스로 표시됩니다. Pearson의 상관 계수는 두 특징 사이의 교차점에 표시됩니다. 각 특징 교차점에는 관련된 색조가 있습니다. 상관 관계가 높을수록 색조가 어두워집니다. 가장 어두운 색조는 행렬의 대각선을 차지하며, 여기서 각 특징은 그 자체와 상관 관계가 있어 완벽한 상관 관계를 나타냅니다.

![\[Autopilot 데이터는 데이터 상호 상관 행렬을 보고합니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-data-report-data-cross-column-statistics.png)


## 변칙적 행
<a name="autopilot-data-exploration-report-cross-anomolous-rows"></a>

Amazon SageMaker Autopilot은 데이터세트에서 비정상적일 수 있는 행을 감지합니다. 그런 다음 각 행에 예외 항목 점수를 지정합니다. 변칙 점수가 음수인 행은 변칙 행으로 간주됩니다.

다음 스크린샷은 예외가 포함된 행에 대한 Autopilot 분석 결과를 보여줍니다. 각 행의 데이터세트 열 옆에 예외 점수가 포함된 열이 나타납니다.

![\[변칙 점수가 음수임을 보여주는 변칙 행이 있는 Autopilot 데이터세트.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-data-report-data-anomalous-rows.png)


## 누락된 값, 카디널리티, 설명 통계
<a name="autopilot-data-exploration-report-description-statistics-and-values"></a>

Amazon SageMaker Autopilot은 데이터세트에 있는 개별 열의 속성을 검사하고 보고합니다. 이 분석을 제공하는 데이터 보고서의 각 섹션에는 내용이 순서대로 정렬되어 있습니다. 이렇게 하면 가장 “의심스러운” 값을 먼저 확인할 수 있습니다. 이 통계를 사용하면 개별 열의 내용을 개선하고 Autopilot으로 생성된 모델의 품질을 개선할 수 있습니다.

Autopilot은 범주형 값이 포함된 열의 범주형 값에 대한 여러 통계를 계산합니다. 여기에는 고유한 항목 수와 텍스트의 경우 고유한 단어 수가 포함됩니다.

Autopilot은 열에 포함된 수치 값에 대한 몇 가지 표준 통계를 계산합니다. 다음 이미지는 평균, 중앙값, 최소값 및 최대값, 수치 유형 및 이상값의 백분율을 포함한 이러한 통계를 보여줍니다.

![\[Autopilot 데이터는 숫자 값이 있는 열에 대한 통계를 보고합니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autopilot/autopilot-data-report-data-descriptive-statistics.png)


# 후보 정의 노트북 찾기 및 실행
<a name="autopilot-candidate-generation-notebook"></a>

후보 정의 노트북에는 제안된 각각의 사전 처리 단계, 알고리즘 및 하이퍼파라미터 범위가 포함되어 있습니다.

두 가지 방법으로 훈련하고 튜닝할 후보를 선택할 수 있습니다. 첫 번째는 노트북의 여러 섹션을 실행하는 것입니다. 두 번째는 전체 노트북을 실행하여 모든 후보를 최적화하여 최적의 후보를 식별하는 것입니다. 전체 노트북을 실행하는 경우 작업 완료 후 가장 적합한 후보만 표시됩니다.

SageMaker Studio Classic에서 Autopilot을 실행하려면 다음 단계에 따라 후보 정의 노트북을 여세요.

1. 최상위 **Amazon SageMaker Studio** 탐색 메뉴를 보려면 왼쪽 탐색 창에서 **홈** 아이콘 ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/icons/house.png)을 선택합니다.

1. 기본 작업 영역에서 **AutoML** 카드를 선택합니다. 그러면 새 **Autopilot** 탭이 열립니다.

1. **이름** 섹션에서 검사하려는 후보 정의 노트북이 있는 Autopilot 작업을 선택합니다. 그러면 새 **Autopilot 작업** 탭이 열립니다.

1. **Autopilot 작업** 탭의 오른쪽 상단에서 **후보 생성 노트북 열기**를 선택합니다. 그러면 **Amazon SageMaker Autopilot 후보 정의 노트북**의 새로운 읽기 전용 미리 보기가 열립니다.

후보 정의 노트북을 실행하려면 다음 단계를 따르세요.

1. **Amazon SageMaker Autopilot 후보 정의 노트북** 탭의 오른쪽 상단에서 **노트북 가져오기** 선택합니다. 그러면 노트북을 실행하기 위한 새 노트북 환경을 설정하는 탭이 열립니다.

1. 기존 SageMaker **이미지**를 선택하거나 **사용자 지정 이미지**를 사용합니다.

1. **커널**, **인스턴스 유형** 및 선택적 **시작 스크립트**를 선택합니다.

이제 이 새 환경에서 노트북을 실행할 수 있습니다.

# 생성된 컨테이너에 추론 출력을 구성하기
<a name="autopilot-automate-model-development-container-output"></a>

Autopilot은 순서가 지정된 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html) 목록을 생성합니다. 이를 사용하여 기계 학습 파이프라인에 배포할 모델을 구축할 수 있습니다. 이 모델은 온라인 호스팅 및 추론에 사용할 수 있습니다.

고객은 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidateForAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidateForAutoMLJob.html) API를 사용하여 추론 컨테이너 정의를 나열할 수 있습니다. 최적의 후보를 나타내는 추론 컨테이너 정의 목록은 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html) 응답에서도 확인할 수 있습니다.

## 회귀 및 분류 문제 유형의 추론 컨테이너 정의
<a name="autopilot-problem-type-container-output"></a>

Autopilot은 [훈련 모드](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-training-mode) 및 작업의 [문제 유형](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-datasets-problem-types.html#autopilot-problem-types)에 맞는 추론 컨테이너를 생성합니다.

### 하이퍼파라미터 최적화(HPO) 모드의 컨테이너 정의
<a name="autopilot-problem-type-container-output-hpo"></a>
+ **회귀**: HPO는 다음과 같은 두 개의 컨테이너를 생성합니다.

  1. 원래의 기능을 회귀 알고리즘이 학습할 수 있는 기능으로 변환하는 기능 엔지니어링 컨테이너입니다.

  1. 기능을 변환하고 데이터세트의 회귀 점수를 생성하는 알고리즘 컨테이너입니다.
+ **분류**: HPO는 다음과 같은 세 개의 컨테이너를 생성합니다.

  1. 원래의 기능을 분류 알고리즘이 학습할 수 있는 기능으로 변환하는 기능 엔지니어링 컨테이너입니다.

  1. 가장 높은 확률의 `predicted_label`을 생성하는 알고리즘 컨테이너입니다. 또한 이 컨테이너는 추론 응답의 분류 결과와 관련된 다양한 확률을 산출할 수 있습니다.

  1. 알고리즘 예측의 사후 처리를 수행하는 기능 엔지니어링 컨테이너입니다. 예를 들어 예측된 레이블에 역변환을 수행하여 원래 레이블로 변경할 수 있습니다.

### 앙상블 모드의 컨테이너 정의
<a name="autopilot-problem-type-container-output-ensemble"></a>

앙상블 모드에서는 회귀 및 분류 문제 유형 모두 추론 컨테이너가 단 하나입니다. 이 추론 컨테이너는 기능을 변환하고 문제 유형에 따라 예측을 생성합니다.

## 문제 유형별 추론 응답
<a name="autopilot-problem-type-inference-response"></a>

### 분류 모델의 추론 응답
<a name="autopilot-problem-type-inference-response-classification"></a>

분류 추론 컨테이너의 경우 다음과 같이 사전 정의된 네 개의 키를 사용하여 추론 응답의 내용을 선택할 수 있습니다.
+ `predicted_label`: Autopilot에 의해 결정된, 정확한 라벨을 예측할 확률이 가장 높은 라벨.
+ `probability`: 
  + **HPO 모델:** 바이너리 분류의 `True` 확률. 멀티클래스 분류의 `predicted_label` 확률.
  + **앙상블 모델:** 바이너리 및 멀티클래스 분류의 `predicted_label` 확률.
+ `probabilities`: 해당하는 모든 클래스의 확률 목록.
+ `labels`: 모든 레이블 목록.

예를 들어 바이너리 분류 문제의 경우 추론 응답 키 `['predicted_label', 'probability', 'probabilities', 'labels']`를 전달하고 출력 응답이 `[1, 0.1, "[0.9, 0.1]", "['1', '0']"]`으로 나타나면 다음과 같이 해석해야 합니다.

1. `predicted_label`은 `1`와 같습니다. 레이블 “1"의 확률이 더 높기 때문입니다(이 경우 `0.9`).

1. HPO 모델의 경우 `probability`는 Autopilot이 선택한 `positive_class`(이 `0` 경우)의 확률인 `0.1`과 같습니다.

   앙상블 모델의 경우 `probability`는 `predicted_label`의 확률인 `0.9`와 같습니다.

1. `probabilities`은 `labels`에 있는 각 레이블의 `probability` 목록을 표시합니다.

1. `labels`는 데이터세트의 고유한 레이블로, 두 번째 레이블(이 경우 “0")이 Autopilot이 선택한 `positive_class`입니다.

기본적으로 추론 컨테이너는 `predicted_label`만 생성하도록 구성됩니다. 추가 추론 콘텐츠를 선택하려면 다음 세 가지 환경 변수를 포함하도록 `inference_response_keys` 파라미터를 업데이트하면 됩니다.
+ `SAGEMAKER_INFERENCE_SUPPORTED`: 각 컨테이너가 지원하는 콘텐츠에 대한 힌트를 제공하도록 설정됩니다.
+ `SAGEMAKER_INFERENCE_INPUT`: 컨테이너가 입력 페이로드에서 예상하는 키로 설정해야 합니다.
+ `SAGEMAKER_INFERENCE_OUTPUT`: 컨테이너가 출력하는 키 세트로 채워져야 합니다.

### HPO 모드에서 분류 모델의 추론 응답
<a name="autopilot-problem-type-inference-response-classification-hpo"></a>

이 섹션에서는 하이퍼파라미터 최적화(HPO) 모드를 사용하여 분류 모델의 추론 응답을 구성하는 방법을 보여줍니다.

HPO 모드에서 추론 응답 콘텐츠를 선택하려면: 분류 문제를 위해 HPO 모드에서 생성되는 두 번째 및 세 번째 컨테이너에 `SAGEMAKER_INFERENCE_INPUT` 및 `SAGEMAKER_INFERENCE_OUTPUT` 변수를 추가합니다.

두 번째 컨테이너(알고리즘)에서 지원하는 키는 predicted\$1label, probability 및 probabilities입니다. `labels`은 의도적으로 `SAGEMAKER_INFERENCE_SUPPORTED`에 추가하지 않았습니다.

세 번째 분류 모델 컨테이너에서 지원하는 키는`predicted_label`, `labels`, `probability` 및 `probabilities`입니다. 따라서 `SAGEMAKER_INFERENCE_SUPPORTED` 환경에는 이러한 키의 이름이 포함됩니다.

`predicted_label` 및 `probability`을 받을 추론 컨테이너 정의를 업데이트하려면 다음 코드 예제를 사용합니다.

```
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
```

다음 코드 예제는 `predicted_label`, `probabilities` 및 `labels`을 받을 추론 컨테이너 정의를 업데이트합니다. 두 번째 컨테이너(알고리즘 컨테이너)에 `labels`을 전달하지 마세요. 이는 세 번째 컨테이너에서 독립적으로 생성됩니다.

```
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label,probabilities'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label,probabilities'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probabilities,labels'})
```

다음 축소 가능한 섹션에서는 및 SageMaker SDK for Python AWS SDK for Python (Boto3) 에 대한 코드 예제를 제공합니다. 각 섹션에서는 각 코드 예제에 대해 HPO 모드에서 추론 응답의 콘텐츠를 선택하는 방법을 보여줍니다.

#### AWS SDK for Python (Boto3)
<a name="autopilot-problem-type-inference-response-classification-hpo-boto3"></a>

```
import boto3

sm_client = boto3.client('sagemaker', region_name='<Region>')

role = '<IAM role>'
input_data = '<S3 input uri>'
output_path = '<S3 output uri>'

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName='<AutoML Job Name>')['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['CandidateName']

best_candidate_containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
best_candidate_containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'})
best_candidate_containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})

# create model
reponse = sm_client.create_model(
    ModelName = '<Model Name>',
    ExecutionRoleArn = role,
    Containers = best_candidate_containers
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName='<Transform Job Name>',
    ModelName='<Model Name>',
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': 'S3Prefix',
                'S3Uri': input_data
            }
        },
        'ContentType': "text/CSV",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': output_path,
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': 'ml.m4.xlarge',
        'InstanceCount': 1,
    },
)
```

#### Python용 SageMaker SDK
<a name="autopilot-problem-type-inference-response-classification-hpo-sdk"></a>

```
from sagemaker import AutoML

aml = AutoML.attach(auto_ml_job_name='<AutoML Job Name>')
aml_best_model = aml.create_model(name='<Model Name>',
                                  candidate=None,
                                  inference_response_keys**=['probabilities', 'labels'])

aml_transformer = aml_best_model.transformer(accept='text/csv',
                                            assemble_with='Line',
                                            instance_type='ml.m5.xlarge',
                                            instance_count=1,)

aml_transformer.transform('<S3 input uri>',
                          content_type='text/csv',
                          split_type='Line',
                          job_name='<Transform Job Name>',
                          wait=True)
```

### 앙상블 모드에서 분류 모델의 추론 응답
<a name="autopilot-problem-type-inference-response-classification-ensemble"></a>

이 섹션에서는 앙상블 모드를 사용하여 분류 모델의 추론 응답을 구성하는 방법을 보여줍니다.

**앙상블 모드**에서 추론 응답의 내용을 선택하려면 `SAGEMAKER_INFERENCE_OUTPUT` 환경 변수를 업데이트합니다.

분류 모델 컨테이너에서 지원하는 키는`predicted_label`, `labels`, `probability` 및 `probabilities`입니다. 이러한 키는 `SAGEMAKER_INFERENCE_SUPPORTED` 환경에 포함됩니다.

`predicted_label`및 `probability`를 받을 추론 컨테이너 정의를 업데이트하려면 다음 코드 예제를 참조하세요.

```
containers[0]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
```

다음 접이식 섹션에서는 앙상블 모드에서 추론 응답의 내용을 선택하기 위한 코드 예제를 제공합니다. 이 예제에서는를 사용합니다 AWS SDK for Python (Boto3).

#### AWS SDK for Python (Boto3)
<a name="autopilot-problem-type-inference-response-classification-ensembling-boto3"></a>

```
import boto3
sm_client = boto3.client('sagemaker', region_name='<Region>')

role = '<IAM role>'
input_data = '<S3 input uri>'
output_path = '<S3 output uri>' 

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName='<AutoML Job Name>')['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['CandidateName']

*best_candidate_containers[0]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
*
# create model
reponse = sm_client.create_model(
    ModelName = '<Model Name>',
    ExecutionRoleArn = role,
    Containers = best_candidate_containers
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName='<Transform Job Name>',
    ModelName='<Model Name>',
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': 'S3Prefix',
                'S3Uri': input_data
            }
        },
        'ContentType': "text/CSV",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': output_path,
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': 'ml.m4.xlarge',
        'InstanceCount': 1,
    },
)
```

다음 접이식 섹션에서는 HPO를 위해 Python용 SageMaker SDK 예제와 동일한 코드 예제를 제공합니다. 편의를 위해 포함되어 있습니다.

#### Python용 SageMaker SDK
<a name="autopilot-problem-type-inference-response-classification-ensembling-sdk"></a>

다음 HPO 코드 예제는 Python용 SageMaker SDK를 사용합니다.

```
from sagemaker import AutoML

aml = AutoML.attach(auto_ml_job_name='<AutoML Job Name>')
aml_best_model = aml.create_model(name='<Model Name>',
                                  candidate=None,
                                  *inference_response_keys**=['probabilities', 'labels'])*

aml_transformer = aml_best_model.transformer(accept='text/csv',
                                            assemble_with='Line',
                                            instance_type='ml.m5.xlarge',
                                            instance_count=1,)

aml_transformer.transform('<S3 input uri>',
                          content_type='text/csv',
                          split_type='Line',
                          job_name='<Transform Job Name>',
                          wait=True)
```