기본 제공 분산 XGBoost 알고리즘을 사용한 학습

AI Platform Training의 기본 제공 알고리즘을 사용하여 학습하면 학습 코드를 작성하지 않고도 데이터세트를 제출하고 모델을 학습시킬 수 있습니다. 이 페이지에서는 기본 제공 분산 XGBoost 알고리즘 작동 방식과 사용법을 설명합니다.

개요

기본 제공 분산 XGBoost 알고리즘은 AI Platform Training에서 실행되도록 호환되는 XGBoost 알고리즘용 래퍼입니다.

단일 복제본 기본 제공 XGBoost 알고리즘과 달리 이 알고리즘을 사용하면 여러 가상 머신을 동시에 사용하여 대규모 데이터세트에서 학습할 수 있습니다. 또한 이 알고리즘을 사용하면 GPU를 학습에 사용할 수 있으므로 학습 프로세스 속도를 높일 수 있습니다.

AI Platform Training은 데이터세트와 제공된 모델 매개변수를 기반으로 분산 XGBoost 알고리즘을 사용하여 학습을 실행합니다. 현재 XGBoost 0.81 버전을 기반으로 구현됩니다.

제한사항

다음 특성은 기본 제공 분산 XGBoost 알고리즘을 사용한 학습에 지원되지 않습니다.

  • 사전 처리. 이 알고리즘은 자동 사전 처리를 지원하지 않습니다. 학습 및 검증 데이터를 입력 데이터 형식 지정에 대한 다음 섹션에서 설명하는 요구사항을 충족하는 별도의 파일 그룹으로 직접 준비해야 합니다.
  • 단일 복제본 학습. 이 알고리즘은 학습에 여러 가상 머신을 사용하도록 설계되었습니다. 단일 가상 머신을 사용하여 학습하려면 단일 복제본 기본 제공 XGBoost 알고리즘을 사용합니다.

지원되는 머신 유형

구성이 다음 요구사항을 충족하는 경우 AI Platform Training 확장 등급 또는 유효한 머신 유형 조합을 이 알고리즘과 함께 사용할 수 있습니다.

  • 1명의 마스터 작업자와 1명 이상의 작업자를 지정합니다.
  • 최고의 성능을 위해 마스터 작업자와 작업자에 동일한 머신 유형을 지정합니다.
  • 매개변수 서버를 지정하지 마세요.
  • 지정한 가상 머신의 총 메모리가 학습 데이터의 총 파일 크기보다 20% 이상 큰지 확인합니다. 이렇게 하면 가상 머신이 모든 학습 데이터를 메모리에 로드하고 추가 메모리를 학습에 사용할 수 있습니다.
  • GPU를 사용하는 경우 각 가상 머신은 단일 GPU만 사용하고 마스터 작업자와 작업자에 동일한 유형의 GPU를 사용해야 합니다. 지정한 머신 유형이 GPU 구성을 지원하는지 확인합니다.
  • TPU를 사용하지 마세요.

입력 데이터 형식 지정

기본 제공 분산 XGBoost 알고리즘은 표 형식의 수치 데이터에서 작동합니다. 데이터세트의 각 행은 인스턴스 1개를 나타내며, 데이터세트의 각 열은 특성 값을 나타냅니다. 타겟 열은 예측할 값을 나타냅니다.

CSV 파일을 준비합니다.

입력 데이터는 UTF-8로 인코딩된 1개 이상의 CSV 파일이어야 합니다. 각 파일은 다음 요구사항을 충족해야 합니다.

  • CSV 파일에 헤더 행이 없어야 합니다. CSV 파일에 각 열에 라벨을 지정하는 헤더 행이 있는 경우 각 파일에서 이 첫 번째 행을 삭제합니다.
  • 타겟 열은 첫 번째 열이어야 합니다.
  • 분류 학습 작업의 경우 타겟 열에 숫자가 아닌 값이 포함될 수 있습니다. 다른 모든 열에는 숫자 데이터만 포함되어야 합니다.
  • 회귀 학습 작업의 경우 각 값이 0과 1 사이가 되도록 타겟 값을 정규화합니다. 다른 모든 열에는 숫자 데이터만 포함되어야 합니다.

분산 학습용 데이터 분할

학습 작업을 제출할 때 여러 CSV 파일의 데이터를 제공하려면 training_data_pathvalidation_data_path 인수에 지정하는 Cloud Storage 경로에서 와일드 카드를 사용합니다. 모든 CSV 파일은 동일한 열 스키마를 사용하여 이전 섹션에서 설명하는 요구사항을 충족해야 합니다.

기본 제공 분산 XGBoost 알고리즘은 다음 방법 중 하나로 가상 머신 전반에 학습 데이터를 분산합니다.

  • CSV 파일 수가 가상 머신 수보다 크거나 같은 경우 알고리즘은 순차 순환 순서로 파일별로 데이터를 분산합니다. 즉, 마스터 작업자는 첫 번째 CSV 파일을 로드하고, 첫 번째 작업자는 두 번째 CSV 파일을 로드합니다. 이 파일 할당 방법은 각 가상 머신이 대략 동일한 수의 파일을 로드하도록 반복합니다.

  • CSV 파일 수가 가상 머신 수보다 적은 경우 알고리즘은 순차 순환 순서로 인스턴스별로 데이터를 분산합니다. 즉, 마스터 작업자는 각 CSV 파일의 첫 번째 행을 로드하고, 첫 번째 작업자는 각 CSV 파일의 두 번째 행을 로드합니다. 이 인스턴스 할당 방법은 각 가상 머신이 대략 동일한 수의 인스턴스를 로드하도록 반복합니다.

validation_data_path 인수를 지정하면 알고리즘은 다음 방법 중 하나로 검증 데이터를 로드합니다. 그러나 알고리즘은 학습 데이터 및 검증 데이터를 독립적으로 로드합니다. 예를 들어 학습 데이터 파일은 여러 개 제공하지만 검증 데이터 파일은 하나만 제공하는 경우 알고리즘은 파일별로 학습 데이터를 로드하고 인스턴스별로 검증 데이터를 로드할 수 있습니다.

성능을 최적화하려면 학습 데이터를 다음 가이드라인을 충족하는 여러 CSV 파일로 분할합니다.

  • 각 파일의 크기는 1GB 미만입니다.
  • 각 파일에는 대략 동일한 수의 인스턴스가 포함됩니다.
  • 파일 수는 총 가상 머신 수로 나눌 수 있습니다. 예를 들어 1명의 마스터와 2명의 작업자와 함께 학습하면 파일 수는 3의 배수입니다.

Cloud Storage 버킷 권한 확인

데이터를 저장하려면 AI Platform Training 작업을 실행하는 데 사용하는 것과 동일한 Google Cloud 프로젝트에서 Cloud Storage 버킷을 사용합니다. 그렇지 않으면 데이터가 저장된 Cloud Storage 버킷에 AI Platform Training 액세스 권한을 부여합니다.

GPU 사용

머신 유형에 대한 이전 섹션에서 설명한 대로 기본 제공 분산 XGBoost 알고리즘은 가상 머신당 단일 GPU를 사용하여 학습을 지원합니다.

GPU를 활용하려면 학습 작업을 제출할 때 tree_method 초매개변수gpu_exact 또는 gpu_hist로 설정합니다.

XGBoost의 GPU 지원에 대해 자세히 알아보세요.

분산 XGBoost 학습 작업 제출

이 섹션에서는 기본 제공 분산 XGBoost 학습 작업을 제출하는 방법을 설명합니다. Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 작업을 제출합니다.

기본 제공 분산 XGBoost 알고리즘 참조에서 이 알고리즘에 맞게 조정할 수 있는 초매개변수 및 기타 인수에 대한 포괄적인 설명을 확인할 수 있습니다.

다음 예시에서는 3개의 학습 데이터 파일과 3개의 검증 데이터 파일로 분할된 인구조사 데이터에 대한 분류 기준을 학습한다고 가정합니다.

  • train-0.csv
  • train-1.csv
  • train-2.csv
  • eval-0.csv
  • eval-1.csv
  • eval-2.csv

이러한 파일에는 헤더 행이 없고 Cloud Storage에 해당 파일을 업로드했다고 가정합니다. 이 예시에서는 각각 NVIDIA Tesla P100 GPU를 사용하는 3개의 가상 머신을 사용하는 학습 작업을 만듭니다. 작업은 us-central1 리전에서 실행됩니다.

Google Cloud 콘솔

  1. Google Cloud 콘솔의 AI Platform Training 작업 페이지로 이동합니다.

    AI Platform Training 작업 페이지

  2. 새 학습 작업 버튼을 클릭합니다. 아래 표시된 옵션 중에서 기본 제공 알고리즘 학습을 클릭합니다.

  3. 새 학습 작업 만들기 페이지에서 알고리즘 선택 드롭다운 목록을 열고 분산 XGBoost를 선택합니다. 다음을 클릭합니다.

  4. 학습 데이터 섹션의 드롭다운 목록에서 Cloud Storage 디렉터리 한 곳에 저장된 여러 파일 사용을 선택합니다. 디렉터리 경로 필드를 사용하여 학습 파일이 포함된 Cloud Storage 디렉터리를 선택합니다. 와일드 카드 이름 필드에 train-*.csv를 입력합니다.

  5. 검증 데이터(선택사항) 섹션의 드롭다운 목록에서 Cloud Storage 디렉터리 한 곳에 저장된 여러 파일 사용을 선택합니다. 디렉터리 경로 필드를 사용하여 검증 파일이 포함된 Cloud Storage 디렉터리를 선택합니다. 와일드 카드 이름 필드에 eval-*.csv를 입력합니다.

  6. 학습 출력 섹션에서 출력 디렉터리 필드를 사용하여 Cloud Storage 버킷에서 학습 출력을 저장할 별도의 디렉터리를 선택합니다. 다음을 클릭합니다.

  7. 학습 작업의 알고리즘 인수를 맞춤설정하거나 기본값을 유지합니다. Google Cloud 콘솔의 링크를 따라 이동하고 기본 제공 분산 XGBoost 참조를 확인하여 인수를 자세히 알아보세요. 다음을 클릭합니다.

  8. 작업 ID 필드에 원하는 이름을 입력합니다. 리전 드롭다운 메뉴에서 us-central1을 선택합니다.

    확장 등급 드롭다운 목록에서 CUSTOM을 선택합니다. 커스텀 클러스터 구성 섹션의 마스터 유형작업자 유형 드롭다운 목록에서 standard_p100을 선택합니다. 작업자 수 필드에 2를 입력합니다. 완료를 클릭합니다.

  9. 작업 페이지에서 새 작업의 ID를 클릭하면 작업 세부정보 페이지가 표시됩니다. 그런 다음 로그 보기를 클릭하여 학습 로그를 확인합니다.

gcloud 도구

  1. BUCKET을 Cloud Storage 버킷의 이름으로 바꾸고 DATA_DIRECTORY를 버킷에서 데이터가 있는 디렉터리의 경로로 바꿔 작업의 환경 변수를 설정합니다.

    # Specify the Docker container for your built-in algorithm selection.
    IMAGE_URI='gcr.io/cloud-ml-algos/xgboost_dist:latest'
    
    # Specify the Cloud Storage wildcard paths to your training and validation data.
    TRAINING_DATA='gs://BUCKET/DATA_DIRECTORY/train-*.csv'
    VALIDATION_DATA='gs://BUCKET/DATA_DIRECTORY/eval-*.csv'
    
    # Variables for constructing descriptive names for JOB_ID and JOB_DIR
    DATASET_NAME='census'
    ALGORITHM='xgboost_dist'
    MODEL_TYPE='classification'
    DATE='date '+%Y%m%d_%H%M%S''
    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    
    # Specify an ID for this job
    JOB_ID="${MODEL_NAME}_${DATE}"
    
    # Specify the directory where you want your training outputs to be stored
    JOB_DIR="gs://BUCKET/algorithm_training/${MODEL_NAME}/${DATE}"
    
  2. gcloud ai-platform jobs training submit 명령어를 사용하여 학습 작업을 제출합니다.

    gcloud ai-platform jobs submit training $JOB_ID \
      --region=us-central1 \
      --master-image-uri=$IMAGE_URI \
      --job-dir=$JOB_DIR \
      --scale-tier=CUSTOM \
      --master-machine-type=n1-standard-4 \
      --master-accelerator count=1,type=nvidia-tesla-p100 \
      --worker-machine-type=n1-standard-4 \
      --worker-count=2 \
      --worker-accelerator count=1,type=nvidia-tesla-p100 \
      -- \
      --training_data_path=$TRAINING_DATA \
      --validation_data_path=$VALIDATION_DATA \
      --objective=binary:logistic \
      --tree_method=gpu_hist
    
  3. gcloud로 로그를 확인하여 학습 작업 상태를 모니터링합니다. gcloud ai-platform jobs describegcloud ai-platform jobs stream-logs를 참조하세요.

    gcloud ai-platform jobs describe ${JOB_ID}
    gcloud ai-platform jobs stream-logs ${JOB_ID}
    

다음 단계