

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

# AutoGluon-Tabular
<a name="autogluon-tabular"></a>

[AutoGluon-Tabular](https://auto.gluon.ai/stable/index.html)는 널리 사용되는 오픈 소스 AutoML 프레임워크로, 처리되지 않은 테이블 형식 데이터세트에서 매우 정확한 기계 학습 모델을 훈련시킵니다. 주로 모델 및 하이퍼파라미터 선택에 초점을 맞춘 기존 AutoML 프레임워크와 달리 AutoGluon-Tabular는 여러 모델을 앙상블하고 여러 계층으로 쌓아 성공합니다. 이 페이지에는 AutoGluon-Tabular용 Amazon EC2 인스턴스 권장 사항 및 샘플 노트북에 대한 정보가 포함되어 있습니다.

# SageMaker AI AutoGluon-Tabular 사용 방법
<a name="autogluon-tabular-modes"></a>

AutoGluon-Tabular를 Amazon SageMaker AI 기본 제공 알고리즘으로 사용할 수 있습니다. 다음 섹션에서는 SageMaker Python SDK와 함께 AutoGluon-Tabular를 사용하는 방법을 설명합니다. Amazon SageMaker Studio Classic UI에서 AutoGluon-Tabular를 사용하는 방법에 대한 자세한 내용은 [SageMaker JumpStart 사전 훈련된 모델](studio-jumpstart.md) 섹션을 참조하세요.
+ **AutoGluon-Tabular를 기본 제공 알고리즘으로 사용하기**

  AutoGluon-Tabular 기본 제공 알고리즘을 사용하여 다음 코드 예제와 같이 AutoGluon-Tabular 훈련 컨테이너를 빌드합니다. SageMaker AI `image_uris.retrieve` API(또는 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) 버전 2를 사용하는 경우 `get_image_uri` API)를 사용하여 AutoGluon-Tabular 내장 알고리즘 이미지 URI를 자동으로 찾아낼 수 있습니다.

  AutoGluon-Tabular 이미지 URI를 지정한 후 AutoGluon-Tabular 컨테이너를 사용하여 SageMaker AI Estimator API를 사용하는 예측기를 구문화하고 훈련 작업을 시작할 수 있습니다. AutoGluon-Tabular의 기본 제공 알고리즘은 스크립트 모드에서 실행되지만 훈련 스크립트는 자동으로 제공되므로 교체할 필요가 없습니다. 스크립트 모드를 사용하여 SageMaker 훈련 작업을 생성한 경험이 풍부하다면 사용자의 AutoGluon-Tabular 훈련 스크립트를 직접 통합할 수 있습니다.

  ```
  from sagemaker import image_uris, model_uris, script_uris
  
  train_model_id, train_model_version, train_scope = "autogluon-classification-ensemble", "*", "training"
  training_instance_type = "ml.p3.2xlarge"
  
  # Retrieve the docker image
  train_image_uri = image_uris.retrieve(
      region=None,
      framework=None,
      model_id=train_model_id,
      model_version=train_model_version,
      image_scope=train_scope,
      instance_type=training_instance_type
  )
  
  # Retrieve the training script
  train_source_uri = script_uris.retrieve(
      model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
  )
  
  train_model_uri = model_uris.retrieve(
      model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
  )
  
  # Sample training data is available in this bucket
  training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
  training_data_prefix = "training-datasets/tabular_binary/"
  
  training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/train"
  validation_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/validation"
  
  output_bucket = sess.default_bucket()
  output_prefix = "jumpstart-example-tabular-training"
  
  s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"
  
  from sagemaker import hyperparameters
  
  # Retrieve the default hyperparameters for training the model
  hyperparameters = hyperparameters.retrieve_default(
      model_id=train_model_id, model_version=train_model_version
  )
  
  # [Optional] Override default hyperparameters with custom values
  hyperparameters[
      "auto_stack"
  ] = "True"
  print(hyperparameters)
  
  from sagemaker.estimator import Estimator
  from sagemaker.utils import name_from_base
  
  training_job_name = name_from_base(f"built-in-algo-{train_model_id}-training")
  
  # Create SageMaker Estimator instance
  tabular_estimator = Estimator(
      role=aws_role,
      image_uri=train_image_uri,
      source_dir=train_source_uri,
      model_uri=train_model_uri,
      entry_point="transfer_learning.py",
      instance_count=1,
      instance_type=training_instance_type,
      max_run=360000,
      hyperparameters=hyperparameters,
      output_path=s3_output_location
  )
  
  # Launch a SageMaker Training job by passing the S3 path of the training data
  tabular_estimator.fit(
      {
          "training": training_dataset_s3_path,
          "validation": validation_dataset_s3_path,
      }, logs=True, job_name=training_job_name
  )
  ```

  AutoGluon-Tabular를 기본 제공 알고리즘으로 설정하는 방법에 대한 자세한 내용은 다음 노트북 예제를 참조하세요. 이러한 예제에서 사용되는 모든 S3 버킷은 이를 실행하는 데 사용되는 노트북 인스턴스와 동일한 AWS 리전에 있어야 합니다.
  + [Amazon SageMaker AI AutoGluon-Tabular 알고리즘을 사용한 테이블 형식 분류](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/autogluon_tabular/Amazon_Tabular_Classification_AutoGluon.ipynb)
  + [Amazon SageMaker AI AutoGluon-Tabular 알고리즘을 사용한 테이블 형식 회귀](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/autogluon_tabular/Amazon_Tabular_Regression_AutoGluon.ipynb)

# AutoGluon-Tabular 알고리즘의 입력 및 출력 인터페이스
<a name="InputOutput-AutoGluon-Tabular"></a>

그라디언트 부스팅은 테이블형 데이터에서 작동합니다. 행은 관측치를 나타내고 1개 열은 대상 변수 또는 레이블을 나타내며, 나머지 열은 특징을 나타냅니다.

AutoGluon-Tabular의 SageMaker AI 구현은 훈련 및 추론을 위한 CSV를 지원합니다.
+ **훈련 ContentType**의 경우 유효한 입력은 *text/csv*여야 합니다.
+ **추론 ContentType**의 경우 유효한 입력은 *text/csv*여야 합니다.

**참고**  
CSV 훈련의 경우 알고리즘은 대상 변수가 첫 번째 열에 있고 CSV에는 헤더 레코드가 없다고 추정합니다.  
CSV 추론의 경우 알고리즘은 CSV 입력에 레이블 열이 없다고 추정합니다.

**훈련 데이터, 검증 데이터 및 범주형 기능의 입력 형식**

AutoGluon-Tabular 모델에 입력하기 위해 훈련 데이터의 형식을 지정하는 방법을 염두에 두세요. 훈련 및 검증 데이터를 포함하는 Amazon S3 버킷의 경로를 제공해야 합니다. 범주형 기능 목록을 포함시킬 수도 있습니다. `training` 및 `validation` 채널을 모두 사용하여 입력 데이터를 제공하세요 또는 `training` 채널만 사용해도 됩니다.

**`training` 및 `validation` 채널을 모두 사용**

`training` 채널용과 `validation` 채널용 두 개의 S3 경로를 통해 입력 데이터를 제공할 수 있습니다. 각 S3 경로는 S3 접두사이거나 특정 CSV 파일 하나를 가리키는 전체 S3 경로일 수 있습니다. 대상 변수는 CSV 파일의 첫 번째 열에 있어야 합니다. 나머지 열에는 예측 변수(특징)가 표시되어야 합니다. 검증 데이터는 각 부스팅 반복 종료 시 검증 점수를 계산하는 데 사용됩니다. 유효성 검증 점수가 더 이상 향상되지 않으면 조기 중지가 적용됩니다.

예측 변수에 범주형 기능이 포함된 경우 훈련 데이터 파일이 있는 위치에 이름이 `categorical_index.json`인 JSON 파일을 제공할 수 있습니다. 범주형 기능을 위한 JSON 파일을 제공하는 경우 `training` 채널은 특정 CSV 파일이 아닌 S3 접두사를 가리켜야 합니다. 이 파일은 키가 문자열 `"cat_index_list"`이고 값이 고유 정수 목록인 Python 사전을 포함해야 합니다. 값 목록의 각 정수는 훈련 데이터 CSV 파일에 있는 해당 범주형 기능의 열 인덱스를 나타내야 합니다. 각 값은 양의 정수(0은 목표 값을 나타내므로 0보다 커야 함), `Int32.MaxValue`(2147483647) 미만, 총 열 수보다 작아야 합니다. 범주형 인덱스 JSON 파일은 하나만 있어야 합니다.

**`training` 채널만 사용**:

`training` 채널의 단일 S3 경로를 통해 입력 데이터를 제공할 수도 있습니다. 이 S3 경로는 CSV 파일이 들어 있는 `training/`이라는 이름의 하위 디렉터리가 있는 디렉터리를 가리켜야 합니다. 선택적으로 `validation/`이라는 동일한 위치에 CSV 파일이 있는 다른 하위 디렉토리를 포함할 수 있습니다. 검증 데이터가 제공되지 않는 경우 훈련 데이터의 20%가 무작위로 샘플링되어 검증 데이터로 사용됩니다. 예측 변수에 범주형 기능이 포함되어 있다면 데이터 하위 디렉터리와 같은 위치에 `categorical_index.json`이라는 이름의 JSON 파일을 제공할 수 있습니다.

**참고**  
CSV 훈련 입력 모드의 경우, 알고리즘에 대해 사용 가능한 전체 메모리(인스턴스 수 \$1 `InstanceType`의 가용 메모리)가 훈련 데이터세트를 담을 수 있어야 합니다.

SageMaker AI AutoGluon-Tabular는 `autogluon.tabular.TabularPredictor` 모듈을 사용하여 모델을 직렬화/역직렬화하고, 이는 모델 저장 또는 로딩에 사용될 수 있습니다.

**SageMaker AI AutoGluon-Tabular로 훈련된 모델을 AutoGluon 프레임워크와 함께 사용하려면 다음과 같이 합니다.**
+ 다음 Python 코드를 사용합니다.

  ```
  import tarfile
  from autogluon.tabular import TabularPredictor
  
  t = tarfile.open('model.tar.gz', 'r:gz')
  t.extractall()
  
  model = TabularPredictor.load(model_file_path)
  
  # prediction with test data
  # dtest should be a pandas DataFrame with column names feature_0, feature_1, ..., feature_d
  pred = model.predict(dtest)
  ```

## AutoGluon-Tabular 알고리즘에 대한 Amazon EC2 인스턴스 권장 사항
<a name="Instance-AutoGluon-Tabular"></a>

SageMaker AI AutoGluon-Tabular는 단일 인스턴스 CPU 및 단일 인스턴스 GPU 훈련을 지원합니다. 높은 인스턴스당 비용에도 불구하고 GPU는 더욱 빠르게 교육하여 더욱 효율적입니다. GPU 훈련을 활용하려면 인스턴스 유형을 GPU 인스턴스 중 하나로 지정하세요. (예: P3) SageMaker AI AutoGluon-Tabular는 현재 멀티 GPU 훈련을 지원하지 않습니다.

## AutoGluon-Tabular 샘플 노트북
<a name="autogluon-tabular-sample-notebooks"></a>

 다음 테이블에는 Amazon SageMaker AI AutoGluon-Tabular 알고리즘의 다양한 사용 사례를 다루는 여러 샘플 노트북이 나와 있습니다.


****  

| **노트북 제목** | **설명** | 
| --- | --- | 
|  [Amazon SageMaker AI AutoGluon-Tabular 알고리즘을 사용한 테이블 형식 분류](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/autogluon_tabular/Amazon_Tabular_Classification_AutoGluon.ipynb)  |  이 노트북은 Amazon SageMaker AI AutoGluon-Tabular 알고리즘을 사용하여 테이블 형식 분류 모델을 훈련하고 호스팅하는 방법을 보여줍니다.  | 
|  [Amazon SageMaker AI AutoGluon-Tabular 알고리즘을 사용한 테이블 형식 회귀](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/autogluon_tabular/Amazon_Tabular_Regression_AutoGluon.ipynb)  |  이 노트북은 Amazon SageMaker AI AutoGluon-Tabular 알고리즘을 사용하여 테이블 형식 회귀 모델을 훈련하고 호스팅하는 방법을 보여줍니다.  | 

SageMaker AI에서 예시 실행에 사용할 수 있는 Jupyter Notebook 인스턴스를 만들고 액세스하는 방법은 [Amazon SageMaker 노트북 인스턴스](nbi.md) 섹션을 참조하세요. 노트북 인스턴스를 만든 후 열고 **SageMaker AI 예시** 탭을 선택하여 모든 SageMaker AI 샘플 목록을 확인하세요. 노트북을 열려면 **사용** 탭을 선택한 후 **사본 생성**을 선택합니다.

# AutoGluon-Tabular의 작동 방식
<a name="autogluon-tabular-HowItWorks"></a>

AutoGluon-Tabular는 고급 데이터 처리, 딥 러닝 및 다층 모델 앙상블 메서드를 수행합니다. 텍스트 필드의 특수 처리를 포함하여 각 열의 데이터 유형을 자동으로 인식하여 강력한 데이터 전처리가 가능합니다.

AutoGluon은 상용 부스트 트리부터 맞춤형 신경망에 이르기까지 다양한 모델에 적합합니다. 이러한 모델은 참신한 방식으로 결합됩니다. 모델을 여러 계층으로 쌓아 계층별로 훈련함으로써 주어진 시간 제약 내에서 원시 데이터를 고품질 예측으로 변환할 수 있습니다. 이 프로세스는 틀린 예제를 주의 깊게 추적하여 데이터를 다양한 방식으로 분할하여 과적합을 완화합니다.

AutoGluon-Tabular 알고리즘은 다양한 데이터 형식, 관계, 분포를 강력하게 처리하기 때문에 기계 학습 경쟁에서 잘 작동합니다. 회귀, 분류(바이너리 및 멀티클래스) 및 순위 결정 관련 문제에 AutoGluon-Tabular를 사용할 수 있습니다.

다층 적층 전략의 작동 방식을 보여주는 다음 다이어그램을 참조하세요.

![\[AutoGluon의 다층 적층 전략은 두 개의 적층 계층으로 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/autogluon_tabular_illustration.png)


자세한 내용은 [AutoGluon-Tabular: 구조화된 데이터를 위한 강력하고 정확한 AutoML](https://arxiv.org/pdf/2003.06505.pdf)을 참조하세요.**

# AutoGluon-Tabular 하이퍼파라미터
<a name="autogluon-tabular-hyperparameters"></a>

다음 테이블에는 Amazon SageMaker AI AutoGluon-Tabular 알고리즘에 필요하거나 가장 일반적으로 사용되는 하이퍼파라미터 하위 세트가 포함되어 있습니다. 이들은 사용자가 데이터를 통해 모델 파라미터를 쉽게 예측하기 위해 설정하는 파라미터입니다. SageMaker AI AutoGluon-Tabular 알고리즘은 오픈 소스 [AutoGluon-Tabular](https://github.com/awslabs/autogluon) 패키지를 구현한 것입니다.

**참고**  
기본 하이퍼파라미터는 [AutoGluon-Tabular 샘플 노트북](autogluon-tabular.md#autogluon-tabular-sample-notebooks)의 예제 데이터세트를 기준으로 정해집니다.

기본적으로 SageMaker AI AutoGluon-Tabular 알고리즘은 분류 문제 유형에 따라 평가 지표를 자동으로 선택합니다. 이 알고리즘은 데이터의 레이블 수를 기반으로 분류 문제 유형을 탐지합니다. 회귀 문제의 경우 평가 지표는 평균 제곱근 오차입니다. 바이너리 분류 문제의 경우 평가 지표는 수신기 작동 특성 곡선(AUC) 아래 영역입니다. 멀티클래스 분류 문제의 경우 평가 지표는 정확도입니다. `eval_metric` 하이퍼파라미터를 사용하여 기본 평가 지표를 변경할 수 있습니다. 설명, 유효한 값, 기본값을 포함하여 AutoGluon-Tabular 하이퍼파라미터에 대한 자세한 내용은 다음 테이블을 참조하세요.


| 파라미터 이름 | 설명 | 
| --- | --- | 
| eval\$1metric |  검증 데이터에 대한 평가 지표. `eval_metric`을 디폴트 `"auto"` 값으로 설정하면 알고리즘이 분류 문제의 유형에 따라 평가 지표를 자동으로 선택합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/autogluon-tabular-hyperparameters.html) 유효한 값: 문자열, 유효한 값은 [AutoGluon 설명서](https://auto.gluon.ai/stable/api/autogluon.tabular.TabularPredictor.html)를 참조하세요. 기본값: `"auto"`.  | 
| presets |  다양한 인수에 대한 사전 설정 구성 목록은 `fit()`에서 확인할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/autogluon-tabular-hyperparameters.html) 자세한 내용은 [AutoGluon Predictors](https://auto.gluon.ai/stable/api/autogluon.tabular.TabularPredictor.html)를 참조하세요. 유효한 값: 문자열, 다음 중 하나: (`"best_quality"`, `"high_quality"`, `good_quality"`, `"medium_quality"`, `"optimize_for_deployment"` 또는 ` or "interpretable"`). 기본값: `"medium_quality"`.  | 
| auto\$1stack |  AutoGluon의 예측 정확도를 높이기 위한 배깅 및 다중 계층 스택 앙상블 자동 활용 여부. 예측 정확도를 극대화하기 위해 더 긴 훈련 시간을 감수할 의향이 있으면 `auto_stack`을 `"True"`로 설정하세요. 이렇게 하면 데이터세트 속성에 따라 `num_bag_folds` 및 `num_stack_levels` 인수가 자동으로 설정됩니다. 유효한 값: 문자열: `"True"` 또는 `"False"` 기본값: `"False"`.  | 
| num\$1bag\$1folds |  모델 배깅에 사용되는 폴드 수. `num_bag_folds`가 `k`와 같으면 훈련 시간이 대략 `k`배 증가합니다. 배깅을 비활성화하려면 `num_bag_folds`를 0으로 설정합니다. 이 기능은 기본적으로 비활성화되어 있지만 예측 성능을 극대화하려면 5에서 10 사이의 값을 사용하는 것이 좋습니다. `num_bag_folds`를 증가시키면 치우침은 낮은 모델이 생성되지만 과적합이 발생하기 쉽습니다. 이 파라미터의 값이 1이면 유효하지 않으므로 `ValueError`가 발생합니다. 값이 10보다 크면 수익이 감소할 수 있으며 과적합으로 인해 전체 결과에 해를 끼칠 수도 있습니다. 예측치를 더 높이려면 `num_bag_folds` 값을 늘리지 말고 `num_bag_sets` 값을 높이세요. 유효한 값: 문자열, `"0"` 및 `"10"`과 그 사이의 모든 정수. 기본값: `"0"`.  | 
| num\$1bag\$1sets |  수행할 kfold 배깅 반복 횟수(값은 1 이상이어야 함) 배깅 중에 훈련된 총 모델 수는 `num_bag_folds` \$1 `num_bag_sets`와 같습니다. `time_limit`이 지정되지 않은 경우 이 파라미터의 기본값은 1입니다. `num_bag_folds`를 지정하지 않으면 이 파라미터를 사용할 수 없습니다. 값이 1보다 크면 예측 성능이 뛰어나며, 특히 작은 문제에서 스택이 활성화된 경우 더욱 그렇습니다. 유효한 값: 정수, 범위: [`1`, `20`]. 기본값: `1`.  | 
| num\$1stack\$1levels |  스택 앙상블에서 사용할 스태킹 레벨 수. 모델 훈련 시간을 대략 `num_stack_levels`\$11배 늘립니다. 스택 앙상블을 비활성화하려면 이 파라미터를 0으로 설정합니다. 이 파라미터는 기본적으로 비활성화되지만 예측 성능을 극대화하려면 1에서 3 사이의 값을 사용하는 것이 좋습니다. 과적합과 `ValueError`를 방지하려면 `num_bag_folds`는 2보다 크거나 같아야 합니다. 유효한 값: 부동 소수점, 범위: [`0`, `3`]. 기본값: `0`.  | 
| refit\$1full |  정상적인 훈련 절차 후에 모든 데이터(훈련 및 검증)에 대해 모든 모델을 재훈련할지 여부. 자세한 내용은 [AutoGluon Predictors](https://auto.gluon.ai/stable/api/autogluon.tabular.TabularPredictor.html)를 참조하세요. 유효한 값: 문자열: `"True"` 또는 `"False"` 기본값: `"False"`.  | 
| set\$1best\$1to\$1refit\$1full |  예측자가 예측에 사용하는 기본 모델을 변경할지 여부. `set_best_to_refit_full`을 `"True"`로 설정하면 기본 모델이 재구성(`refit_full`에 의해 활성화) 결과 가장 높은 검증 점수를 보인 모델로 변경됩니다. `refit_full`이 설정된 경우에만 유효합니다. 유효한 값: 문자열: `"True"` 또는 `"False"` 기본값: `"False"`.  | 
| save\$1space |  새 데이터 예측에 필요하지 않은 보조 모델 파일을 삭제하여 예측자의 메모리 및 디스크 크기를 줄일지 여부. 이는 추론 정확도에는 영향을 미치지 않습니다. 훈련된 모델을 예측에 사용하는 것이 유일한 목표라면 `save_space`를 `"True"`로 설정하는 것이 좋습니다. `save_space`를 `"True"`로 설정하면 특정 고급 기능을 더 이상 사용하지 못할 수 있습니다. 자세한 내용은 `[predictor.save\$1space()](https://auto.gluon.ai/stable/api/autogluon.tabular.TabularPredictor.save_space.html)` 설명서를 참조하세요. 유효한 값: 문자열: `"True"` 또는 `"False"` 기본값: `"False"`.  | 
| verbosity |  인쇄 메시지의 상세 내용. `verbosity` 레벨의 범위는 `0`\$1`4`까지입니다. 레벨이 높을수록 인쇄 명세서가 더 상세해집니다. `0`의 `verbosity`는 경고를 표시하지 않습니다. 유효한 값: 정수, 다음 중 하나: (`0`, `1`, `2`, `3` 또는 `4`). 기본값: `2`.  | 

# AutoGluon-Tabular 모델 튜닝
<a name="autogluon-tabular-tuning"></a>

AutoGluon-Tabular를 모델 튜닝과 함께 사용할 수 있지만, AutoGluon-Tabular의 설계는 스태킹 및 앙상블 방법을 사용하여 우수한 성능을 제공할 수 있으므로 하이퍼파라미터 최적화가 필요하지 않습니다. AutoGluon-Tabular는 모델 튜닝에 초점을 맞추는 대신 모델을 여러 계층으로 쌓고 계층별로 훈련함으로써 성공을 거둡니다.

AutoGluon-Tabular 하이퍼파라미터에 대한 자세한 내용은 [AutoGluon-Tabular 하이퍼파라미터](autogluon-tabular-hyperparameters.md)을 참조하세요.