XGBoost 기본 제공 알고리즘 시작하기

AI Platform Training의 기본 제공 알고리즘을 사용하면 학습 애플리케이션용 코드를 작성하지 않고도 학습 데이터를 제출하고, 알고리즘을 선택한 후 AI Platform Training이 사전 처리 및 학습을 자동으로 처리하도록 할 수 있습니다.

개요

이 가이드에서는 코드를 작성하지 않고 XGBoost 모델을 학습시킵니다. 사전 처리 및 학습용 인구조사 소득 데이터세트를 AI Platform Training에 제출한 다음 모델을 AI Platform Training에 배포하여 예측을 수행합니다. 결과 모델에서는 개인의 연간 소득이 $50,000를 초과할 확률을 예측합니다.

시작하기 전에

명령줄에서 이 튜토리얼을 수행하려면 Cloud Shell 또는 Google Cloud CLI가 설치된 환경을 사용합니다.

다음 단계에 따라 GCP 계정을 설정하고, 필요한 API를 사용 설정하고, Google Cloud CLI를 설치 및 활성화합니다.

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. API AI Platform Training & Prediction and Compute Engine 사용 설정

    API 사용 설정

  5. Google Cloud CLI를 설치합니다.
  6. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  7. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  8. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  9. API AI Platform Training & Prediction and Compute Engine 사용 설정

    API 사용 설정

  10. Google Cloud CLI를 설치합니다.
  11. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init

설정

표 형식의 기본 제공 알고리즘을 사용하려면 CSV 파일에서 헤더 행을 삭제하고 대상 값을 첫 번째 열로 이동해야 합니다. 원본 인구조사 데이터세트는 이 가이드에서 사용할 수 있도록 수정되어 공개 Cloud Storage 버킷(gs://cloud-samples-data/ai-platform/census/algorithms/data/)에 호스팅되었습니다.

Console

학습 작업을 시작하려면 먼저 공개 Cloud Storage 버킷에서 개발자의 Cloud Storage 버킷으로 데이터를 복사해야 합니다.

샘플 데이터를 개발자의 Cloud Storage 버킷에 복사

  1. 먼저 공개 Cloud Storage 버킷에서 학습 데이터와 테스트 데이터를 다운로드합니다.

    1. 공용 Cloud Storage 버킷으로 이동합니다.

      샘플 데이터 가져오기

    2. test.csvtrain.csv를 모두 다운로드합니다.

      1. 파일 이름을 클릭합니다.

      2. 객체 세부정보 페이지에서 다운로드를 클릭합니다. 이러한 파일은 각각 ai-platform_census_algorithms_data_test.csvai-platform_census_algorithms_data_train.csv로 로컬 환경에 다운로드됩니다.

  2. 다음으로 학습 데이터와 테스트 데이터를 개발자의 Cloud Storage 버킷에 업로드합니다.

    1. Cloud Storage 버킷의 브라우저 페이지로 이동합니다. 프로젝트 선택 드롭다운 목록에서 프로젝트를 선택하거나 새 탭에서 엽니다.

      Cloud Storage 브라우저 페이지

    2. 사용할 버킷 이름을 클릭하거나 버킷이 없으면 새 버킷을 만듭니다. (새 버킷을 만드는 경우 해당 버킷이 리전 버킷인지 확인하고, AI Platform Training의 학습 작업에서 실행하는 리전과 동일한 리전을 선택해야 합니다.)

    3. (선택사항) 폴더 만들기를 클릭하여 업로드할 파일의 폴더를 만듭니다. 폴더 이름(예: 'data')을 입력하고 만들기를 클릭합니다. 그런 다음 폴더 이름을 클릭하여 새 폴더로 이동합니다.

    4. 파일 업로드를 클릭하여 학습 파일(ai-platform_census_algorithms_data_train.csv)과 테스트 파일(ai-platform_census_algorithms_data_test.csv)을 버킷에 업로드합니다.

이제 데이터가 개발자의 버킷에 복사되었으므로 사용할 알고리즘 유형을 선택하여 학습 작업을 시작할 수 있습니다.

알고리즘 선택

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

    AI Platform Training 작업 페이지

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

  3. 학습 작업 만들기는 4단계로 구분됩니다. 첫 번째 단계는 학습 알고리즘입니다. XGBoost를 클릭하고 다음을 클릭합니다.

gcloud

프로젝트 ID, Cloud Storage 버킷, 학습 데이터의 Cloud Storage 경로, 알고리즘 선택항목의 환경 변수를 설정합니다.

AI Platform Training 기본 제공 알고리즘은 Container Registry에 호스팅된 Docker 컨테이너에 있습니다.

PROJECT_ID=YOUR_PROJECT_ID
BUCKET_NAME=YOUR_BUCKET_NAME
REGION="us-central1"
gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION

# Copy the training data into your Cloud Storage bucket, and set the path
# to your copy of the training data.
TRAINING_DATA_SOURCE=gs://cloud-samples-data/ai-platform/census/algorithms/data/train.csv
TRAINING_DATA_PATH=gs://$BUCKET_NAME/algorithms-demo/data/train.csv
gsutil cp $TRAINING_DATA_SOURCE $TRAINING_DATA_PATH

# Specify the Docker container URI specific to the algorithm.
IMAGE_URI="gcr.io/cloud-ml-algos/boosted_trees:latest"

학습 작업 제출

작업을 제출하려면 기본 학습 인수 및 XGBoost 알고리즘과 관련된 기본 인수를 지정해야 합니다.

학습 작업의 일반 인수:

학습 작업 인수
인수 설명
job-id 학습 작업의 고유 ID입니다. 학습 작업을 제출한 후 이 인수를 사용하여 학습 작업의 상태 로그를 찾을 수 있습니다.
job-dir 학습 작업이 성공적으로 완료된 후 AI Platform Training이 학습 파일을 저장하는 Cloud Storage 경로입니다.
scale-tier 학습용 머신 유형을 지정합니다. 머신이 한 개만 있는 구성을 선택하려면 BASIC을 사용합니다.
master-image-uri 학습 작업에 사용할 Docker 컨테이너를 지정하는 데 사용되는 Container Registry URI입니다. 앞에서 IMAGE_URI로 정의된 XGBoost 기본 제공 알고리즘에 이 컨테이너를 사용합니다.
region 학습 작업을 실행할 사용 가능한 리전을 지정합니다. 이 가이드에서는 us-central1 리전을 사용할 수 있습니다.

XGBoost 기본 제공 알고리즘과 관련된 인수:

알고리즘 인수
인수 설명
preprocess AI Platform Training에서 데이터 사전 처리 여부를 나타내는 부울 인수입니다.
objective 학습 태스크와 학습 목표를 나타냅니다. 이 예에서는 'binary:logistic'입니다.
training_data_path 학습 데이터의 Cloud Storage 위치입니다(CSV 파일이어야 함).

다른 모든 XGBoost 알고리즘 플래그가 포함된 세부 목록은 기본 제공 XGBoost 참조를 확인하세요.

Console

  1. 자동 데이터 사전 처리 사용 설정을 선택한 상태로 둡니다.

  2. 학습 데이터 경로에서 찾아보기를 클릭합니다. 오른쪽 패널에서 학습 데이터를 업로드한 버킷의 이름을 클릭하고 ai-platform_census_algorithms_data_train.csv 파일로 이동합니다.

  3. 검증 데이터테스트 데이터 필드를 기본 설정으로 유지합니다.

  4. 출력 디렉터리에 AI Platform Training이 학습 작업의 출력을 저장할 개발자의 Cloud Storage 버킷 경로를 입력합니다. Cloud Storage 버킷 경로를 직접 입력하거나 찾아보기 버튼을 클릭하여 선택할 수 있습니다.

    쉽게 관리할 수 있도록 이 학습 작업을 저장할 새 디렉터리를 개발자의 Cloud Storage 버킷에 만듭니다. 찾아보기 창에서 이 작업을 수행할 수 있습니다.

    다음을 클릭합니다.

  5. 목표에 바이너리 학습 태스크와 로지스틱 회귀 목표를 나타내는 'binary:logistic'을 선택합니다.

  6. 모델 유형으로 분류를 선택합니다.

  7. 다른 모든 필드를 기본 설정으로 유지하고 다음을 클릭합니다.

  8. 작업 설정 페이지에서 다음 안내를 따릅니다.

    1. 고유한 작업 ID를 입력합니다(예: 'xgboost_example').
    2. 사용 가능한 리전을 입력합니다(예: 'us-central1').
    3. 확장 등급으로 'BASIC'을 선택합니다.

    완료를 클릭하여 학습 작업을 제출합니다.

gcloud

  1. gcloud를 사용하여 작업을 제출하기 전에 학습 작업과 알고리즘의 모든 인수를 설정합니다.

    DATASET_NAME="census"
    ALGORITHM="xgboost"
    MODEL_TYPE="classification"
    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    
    # Give a unique name to your training job.
    DATE="$(date '+%Y%m%d_%H%M%S')"
    JOB_ID="${MODEL_NAME}_${DATE}"
    
    # Make sure you have access to this Cloud Storage bucket.
    JOB_DIR="gs://${BUCKET_NAME}/algorithms_training/${MODEL_NAME}/${DATE}"
    
  2. 작업을 제출합니다.

    gcloud ai-platform jobs submit training $JOB_ID \
      --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \
      -- \
      --preprocess --objective=binary:logistic \
      --training_data_path=$TRAINING_DATA_PATH
    

  3. 작업이 성공적으로 제출되면 다음 gcloud 명령어를 사용하여 로그를 볼 수 있습니다.

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

작업 디렉터리 이해

학습 작업이 성공적으로 완료되면 AI Platform Training이 다른 몇 가지 아티팩트와 함께 학습된 모델을 개발자의 Cloud Storage 버킷에 만듭니다. JOB_DIR 내의 디렉터리 구조는 다음과 같습니다.

  • model/
    • model.pkl
    • deployment_config.yaml
  • artifacts/
    • instance_generator.py
    • metadata.json
  • processed_data/
    • training.csv
    • validation.csv
    • test.csv

JOB_DIR의 디렉터리 구조가 일치하는지 다음 명령어로 확인합니다.

gsutil ls -a $JOB_DIR/*

학습된 모델 배포

AI Platform Prediction은 모델버전 리소스를 사용하여 학습된 모델을 구성합니다. AI Platform Prediction 모델은 머신러닝 모델 버전의 컨테이너입니다.

모델을 배포하려면 AI Platform Prediction에서 모델 리소스를 만들고 해당 모델의 버전을 만든 다음 모델과 버전을 사용하여 온라인 예측을 요청합니다.

AI Platform Prediction에 모델을 배포하는 방법에 대해 자세히 알아보세요.

Console

  1. 작업 페이지에 모든 학습 작업의 목록이 표시됩니다. 바로 전에 제출한 학습 작업 이름을 클릭합니다('xgboost_example' 또는 사용된 작업 이름).

  2. 작업 세부정보 페이지에서 작업의 일반 진행 상태를 확인하거나, 로그 보기를 클릭하여 더 자세한 진행 상태를 확인할 수 있습니다.

  3. 작업이 성공하면 모델 배포 버튼이 맨 위에 나타납니다. 모델 배포를 클릭합니다.

  4. '새 모델로 배포'를 선택하고 모델 이름을 입력합니다(예: 'xgboost_model'). 그런 다음 확인을 클릭합니다.

  5. 버전 만들기 페이지에서 버전 이름(예: 'v1')을 입력하고 다른 모든 필드를 기본 설정으로 유지합니다. 저장을 클릭합니다.

  6. 모델 세부정보 페이지에 버전 이름이 표시됩니다. 버전을 만드는 데 몇 분 정도 걸립니다. 버전이 준비되면 버전 이름 옆에 체크표시 아이콘이 나타납니다.

  7. 버전 이름('v1')을 클릭하여 버전 세부정보 페이지로 이동합니다. 이 가이드의 다음 단계에서는 예측 요청을 전송합니다.

gcloud

기본 제공 XGBoost 알고리즘을 사용하여 학습을 진행하면 AI Platform Prediction에 간편하게 모델을 배포하여 예측할 수 있게 해주는 deployment_config.yaml 파일이 생성됩니다.

  1. 이 파일을 로컬 디렉터리에 복사하고 콘텐츠를 확인합니다.

    gsutil cp $JOB_DIR/model/deployment_config.yaml .
    cat deployment_config.yaml
    

    deployment_config.yaml 파일은 다음과 유사하게 표시됩니다.

    deploymentUri: gs://YOUR_BUCKET_NAME/algorithms_training/census_xgboost_classification/20190227060114/model
    framework: XGBOOST
    labels:
      job_id: census_xgboost_classification_20190227060114
      error_percentage: '14'
    runtimeVersion: '0.81'
    pythonVersion: '2.7'
    
  2. AI Platform Training에서 모델과 버전을 만듭니다.

    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    gcloud ai-platform models create $MODEL_NAME --regions $REGION
    
    # Create a model and a version using the file above.
    VERSION_NAME="v_${DATE}"
    
    gcloud ai-platform versions create $VERSION_NAME \
      --model $MODEL_NAME \
      --config deployment_config.yaml
    

    버전을 만드는 데 몇 분 정도 걸립니다.

온라인 예측 수행

예측 요청 시 입력 데이터 형식이 학습 데이터와 동일한 방식으로 지정되었는지 확인해야 합니다. 학습 전에 AI Platform Training은 데이터를 metadata.json에 명시된 자료로 변환하여 사전 처리합니다.

instance_generator.py를 사용하여 AI Platform Training이 학습 데이터에 적용하는 것과 동일한 사전 처리 변환을 입력 인스턴스에 적용할 수 있습니다. 이 파일은 metadata.json 파일에 저장된 매핑 정보를 읽습니다. 또한 모듈에서 transform_string_instance 함수를 사용하여 원시 문자열을 모델에서 허용하는 형식으로 변환할 수도 있습니다.

  1. 학습 아티팩트 파일을 다운로드하고 metadata.json을 검토합니다.

    gsutil cp $JOB_DIR/artifacts/* .
    
    # Let's look at the metadata.json file
    head metadata.json
    
  2. instance_generator.py를 사용하여 데이터 인스턴스 1개에 필요한 예측 입력을 준비합니다.

     # ground truth is >50K
    RAW_DATA_POINT="44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States"
    
     # Now let's create a JSON prediction request
    python instance_generator.py --raw_data_string="${RAW_DATA_POINT}" > sample_input.json
    
    # Let's look at the prediction request file.
    cat sample_input.json
    
  3. 예측 요청을 전송합니다.

    gcloud ai-platform predict \
      --model $MODEL_NAME \
      --version $VERSION_NAME \
      --json-instances sample_input.json
    

0.5보다 큰 숫자가 결과 예측으로 표시되며, 이는 개인 소득이 $50,000를 초과할 확률이 높음을 나타냅니다.

데이터 정보

이 샘플에서 학습에 사용하는 인구조사 소득 데이터세트UC Irvine Machine Learning Repository에서 호스팅됩니다.

인구조사 데이터 제공: Lichman, M. (2013). UCI Machine Learning Repository http://archive.ics.uci.edu/ml. Irvine, CA: University of California, School of Information and Computer Science.

다음 단계