AI Platform Training 서비스는 모델 학습을 위해 클라우드의 컴퓨팅 리소스를 관리합니다. 이 페이지에서는 AI Platform Training을 사용하여 XGBoost 모델을 학습시키는 프로세스에 대해 설명합니다.
이 가이드에서는 인구통계 소득 데이터 세트를 기반으로 개인의 소득 수준을 예측하도록 간단한 모델을 학습시킵니다. 학습 애플리케이션을 로컬에서 만들어서 Cloud Storage로 업로드하고 학습 작업을 제출합니다. AI Platform Training 서비스는 Cloud Storage 버킷에 출력을 기록하고 Logging에 로그를 생성합니다.
이 콘텐츠는 GitHub에서 Jupyter 노트북으로도 제공됩니다.
AI Platform Training에서 모델을 학습시키는 방법
AI Platform Training에서 모델 학습은 다음 세 단계로 수행됩니다.
- Python 모델 파일 만들기
- AI Platform Training이 사용할 수 있도록 Cloud Storage에서 데이터를 다운로드하는 코드 추가
- AI Platform Training에서 모델 학습이 완료된 후 모델을 내보내고 Cloud Storage에 저장하는 코드 추가
- 학습 애플리케이션 패키지 준비
- 학습 작업 제출
시작하기 전에
다음 단계에 따라 GCP 계정을 설정하고 AI Platform Training API를 활성화한 후 Cloud SDK를 설치하여 활성화합니다.
GCP 프로젝트 설정
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
환경 설정
아래 옵션 중 하나를 선택하여 macOS에서 로컬로 또는 Cloud Shell의 원격 환경에서 환경을 설정합니다.
macOS 사용자는 아래의 MACOS 탭을 사용하여 환경을 설정하는 것이 좋습니다. CLOUD SHELL 탭에 표시된 Cloud Shell은 macOS, Linux, Windows에서 사용할 수 있습니다. Cloud Shell을 이용하면 AI Platform Training을 빠르게 사용해 볼 수 있지만 지속적인 개발 작업에는 적합하지 않습니다.
macOS
-
Python 설치 확인
Python이 설치되어 있는지 확인하고 필요하면 설치합니다.python -V
-
pip
설치 확인
pip
는 현재 버전의 Python에 포함되어 있는 Python의 패키지 관리자입니다.pip --version
을 실행하여pip
가 이미 설치되어 있는지 확인합니다. 설치되어 있지 않으면pip
설치 방법을 참조하세요.다음 명령어를 사용하여
pip
를 업그레이드할 수 있습니다.pip install -U pip
자세한 내용은 pip 문서를 참조하세요.
-
virtualenv
설치
virtualenv
는 격리된 Python 환경을 만드는 도구입니다.virtualenv --version
을 실행하여virtualenv
가 이미 설치되어 있는지 확인합니다. 설치되어 있지 않으면virtualenv
를 설치합니다.pip install --user --upgrade virtualenv
이 가이드용으로 격리된 개발 환경을 만들려면
virtualenv
에서 새 가상 환경을 만듭니다. 예를 들어 다음 명령어는aip-env
라는 환경을 활성화합니다.virtualenv aip-env source aip-env/bin/activate
-
이 튜토리얼에서는 나머지 명령어를 가상 환경 내에서 실행합니다.
virtualenv
사용에 대한 자세한 내용을 알아보세요.virtualenv
를 종료하려면deactivate
를 실행합니다.
Cloud Shell
-
Google Cloud 콘솔을 엽니다.
-
콘솔 창의 상단에서 Google Cloud Shell 활성화 버튼을 클릭합니다.
콘솔 하단의 새로운 프레임에 Cloud Shell 세션이 열리고 명령줄 프롬프트가 표시됩니다. 셸 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.
Cloud Shell 세션을 사용할 수 있습니다.
-
선택한 프로젝트를 사용하려면
gcloud
명령줄 도구를 구성합니다.gcloud config set project [selected-project-id]
[selected-project-id]
는 프로젝트 ID입니다. (괄호 생략)
프레임워크 설치
macOS
가상 환경 내에서 다음 명령어를 실행하여 AI Platform Training 런타임 버전 2.11에 사용되는 scikit-learn, XGBoost, pandas의 버전을 설치합니다.
(aip-env)$ pip install scikit-learn==1.0.2 xgboost==1.6.2 pandas==1.3.5
앞의 명령어에 버전 번호를 제공하면 가상 환경의 종속 항목과 런타임 버전의 종속 항목을 일치시킬 수 있습니다. 이렇게 하면 AI Platform Training에서 코드를 실행할 때 예기치 못한 동작을 방지하는 데 도움이 됩니다.
설치 옵션 및 문제 해결 정보에 대한 자세한 내용은 각 프레임워크의 설치 안내를 참조하세요.
Cloud Shell
다음 명령어를 실행하여 scikit-learn, XGBoost, pandas를 설치합니다.
pip install --user scikit-learn xgboost pandas
설치 옵션 및 문제 해결 정보에 대한 자세한 내용은 각 프레임워크의 설치 안내를 참조하세요.
Cloud Storage 버킷 설정
학습 코드 및 종속 항목을 저장하려면 Cloud Storage 버킷이 필요합니다. 이 가이드를 쉽게 따라하려면 AI Platform Training에 사용하는 것과 동일한 프로젝트에서 전용 Cloud Storage 버킷을 사용하는 것이 좋습니다.
다른 프로젝트에서 버킷을 사용 중인 경우 AI Platform Training 서비스 계정이 Cloud Storage에 있는 학습 코드 및 종속 항목에 액세스할 수 있는지 확인해야 합니다. 적절한 권한이 없으면 학습 작업이 실패합니다. 스토리지에 대한 권한을 부여하는 방법을 참조하세요.
학습 작업 실행하는 데 사용 중인 리전의 버킷을 사용하거나 설정해야 합니다. AI Platform Training 서비스에 사용 가능한 리전을 참조하세요.
이 섹션에서는 새 버킷을 만드는 방법을 설명합니다. 기존 버킷을 사용할 수도 있지만 해당 버킷이 AI Platform 작업을 실행하려는 리전과 동일한 리전에 있어야 합니다. 또한 해당 버킷이 AI Platform Training을 실행하는 데 사용 중인 프로젝트에 속하지 않는 경우 명시적으로 AI Platform Training 서비스 계정에 대한 액세스 권한을 부여해야 합니다.
-
새 버킷의 이름을 지정합니다. 이름은 Cloud Storage의 모든 버킷에서 중복되지 않아야 합니다.
BUCKET_NAME="YOUR_BUCKET_NAME"
예를 들어 프로젝트 이름에
-aiplatform
을 추가하여 사용합니다.PROJECT_ID=$(gcloud config list project --format "value(core.project)") BUCKET_NAME=${PROJECT_ID}-aiplatform
-
만든 버킷 이름을 확인합니다.
echo $BUCKET_NAME
-
버킷 리전을 선택하고
REGION
환경 변수를 설정합니다.AI Platform Training 작업을 실행할 리전과 동일한 리전을 사용합니다. AI Platform Training 서비스에 사용 가능한 리전을 참조하세요.
예를 들어 다음 코드는
REGION
을 생성하고us-central1
로 설정합니다.REGION=us-central1
-
새 버킷을 만듭니다.
gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION
데이터 정보
이 샘플의 학습에 사용되는 인구통계 소득 데이터 세트는 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. 이 데이터 세트는 데이터 세트 출처(http://archive.ics.uci.edu/ml)에서 제공하는 약관을 따르는 모든 사용자에게 공개되며 Google의 어떠한 명시적 또는 묵시적인 보증 없이 '있는 그대로' 제공됩니다. Google은 데이터세트 사용으로 인한 직간접적인 손해를 책임지지 않습니다.
편의를 위해 공개 Cloud Storage 버킷 gs://cloud-samples-data/ai-platform/sklearn/census_data/
에 이 데이터를 호스팅했으며 Python 학습 파일 내에서 다운로드할 수 있습니다.
Python 모델 파일 만들기
이 섹션의 모든 학습 코드는 GitHub(train.py
)에서 찾을 수 있습니다.
이 섹션의 나머지 부분에는 학습 코드의 역할에 대한 설명이 나와 있습니다.
설정
Python, Google Cloud CLI, XGBoost, scikit-learn에서 다음 라이브러리를 가져옵니다. Cloud Storage 버킷 이름의 변수를 설정합니다.
import xgboost as xgb
import pandas as pd
from sklearn.preprocessing import LabelEncoder
import subprocess
from google.cloud import storage
# Fill in your Cloud Storage bucket name
BUCKET_ID = <YOUR_BUCKET_NAME>
Cloud Storage에서 데이터 다운로드
일반적인 개발 프로세스에서는 데이터를 AI Platform Training이 액세스할 수 있도록 Cloud Storage에 업로드합니다. 이 가이드의 데이터는 공개 버킷 gs://cloud-samples-data/ai-platform/sklearn/census_data/
에서 호스팅됩니다.
아래 코드는 학습 데이터세트 adult.data
를 다운로드합니다. 평가 데이터는 adult.test
에서 제공되지만 이 가이드에서 사용되지 않습니다.
모델 코드 추가
모델 학습 코드는 다음과 같은 몇 가지 기본 단계를 수행합니다.
- 데이터 정의 및 로드
- 카테고리형 특성을 숫자 특성으로 변환
- scikit-learn 파이프라인을 사용하여 숫자 특성 추출
- 모델을 내보내고 Cloud Storage에 저장
데이터 정의 및 로드
카테고리형 특성을 숫자 특성으로 변환
모델을 학습시켜 Cloud Storage로 내보내고 저장
AI Platform Training에 사용 중인 프로젝트에 Cloud Storage 버킷이 있는 경우 AI Platform Training이 버킷에서 데이터를 읽고 쓸 수 있습니다. 그렇지 않은 경우 AI Platform Training을 실행하는 데 사용 중인 프로젝트가 Cloud Storage 버킷에 액세스할 수 있는지 확인해야 합니다. 스토리지에 대한 권한을 부여하는 방법을 참조하세요.
AI Platform Prediction에서 온라인 예측 요청에 사용하려는 모델 파일의 이름을 model.pkl
, model.joblib
또는 model.bst
로 지정해야 합니다.
Cloud Storage에 모델 파일 업로드 확인(선택사항)
명령줄에서 대상 모델 폴더의 콘텐츠를 보고 모델 파일이 Cloud Storage에 업로드되었는지 확인합니다. 버킷 이름에 대한 환경 변수(BUCKET_ID
)를 설정하지 않은 경우 설정합니다.
gcloud storage ls gs://$BUCKET_ID/census_*
출력은 다음과 비슷하게 표시됩니다.
gs://[YOUR-PROJECT-ID]/census_[DATE]_[TIME]/model.bst
학습 애플리케이션 패키지 만들기
학습 애플리케이션 패키지를 만드는 가장 쉽고 권장되는 방법은 학습 작업 제출 시 gcloud
를 사용하여 애플리케이션을 패키징하고 업로드하는 것입니다. 이 방법을 사용하면 파일 두 개만 사용하여 매우 간단한 파일 구조를 만들 수 있습니다. 이 가이드에서는 학습 애플리케이션 패키지의 파일 구조가 다음과 비슷하게 표시됩니다.
census_training/
__init__.py
train.py
디렉터리를 로컬에서 만듭니다.
mkdir census_training
__init__.py
라는 빈 파일을 만듭니다.touch census_training/__init__.py
학습 코드를 Python 파일 하나에 저장하고 해당 파일을
census_training
디렉터리 내에 저장합니다.train.py
의 예시 코드를 참조하세요.cURL
을 사용하여 파일을 다운로드하고 저장할 수 있습니다.curl https://raw.githubusercontent.com/GoogleCloudPlatform/cloudml-samples/master/xgboost/notebooks/census_training/train.py > census_training/train.py
학습 애플리케이션 패키징에 대해 자세히 알아보세요.
학습 작업 제출
이 섹션에서는 gcloud ai-platform jobs submit training
을 사용하여 학습 작업을 제출합니다.
학습 작업 매개변수 지정
학습 작업 요청의 각 매개변수에 다음과 같은 환경 변수를 설정합니다.
PROJECT_ID
- Google Cloud 프로젝트와 일치하는 PROJECT_ID를 사용합니다.BUCKET_ID
- Cloud Storage 버킷 이름입니다.JOB_NAME
- 작업에 사용할 이름입니다(대소문자가 혼합된 문자, 숫자, 밑줄만 사용, 문자로 시작). 이 경우는census_training_$(date +"%Y%m%d_%H%M%S")
입니다.JOB_DIR
- 학습 작업의 출력 파일에 사용할 Cloud Storage 위치 경로입니다. 예를 들면gs://$BUCKET_ID/xgboost_job_dir
입니다.TRAINING_PACKAGE_PATH
- 학습 애플리케이션의 루트 디렉터리에 대한 로컬 경로입니다. 이 경우는./census_training/
입니다.MAIN_TRAINER_MODULE
- AI Platform Training 서비스가 실행할 파일을 지정합니다. 형식은[YOUR_FOLDER_NAME.YOUR_PYTHON_FILE_NAME]
입니다. 이 경우는census_training.train
입니다.REGION
- 학습 작업을 실행하는 데 사용할 리전의 이름입니다. AI Platform Training 서비스에 사용 가능한 리전 중 하나를 사용합니다. Cloud Storage 버킷이 동일한 리전에 있는지 확인합니다. 이 가이드에서는us-central1
을 사용합니다.RUNTIME_VERSION
- scikit-learn을 지원하는 AI Platform Training 런타임 버전을 지정해야 합니다. 이 예시에서는2.11
입니다.PYTHON_VERSION
- 작업에 사용할 Python 버전입니다. 이 가이드에서는 Python 3.7을 지정합니다.SCALE_TIER
- 학습 작업을 실행할 머신의 사전 정의된 클러스터 사양입니다. 이 경우는BASIC
입니다. 커스텀 확장 등급을 사용하여 고유한 학습용 클러스터 구성을 정의할 수도 있습니다.
편의를 위해 아래에 이 가이드의 환경 변수가 있습니다.
[VALUES-IN-BRACKETS]
를 적절한 값으로 바꿉니다.
PROJECT_ID=[YOUR-PROJECT-ID]
BUCKET_ID=[YOUR-BUCKET-ID]
JOB_NAME=census_training_$(date +"%Y%m%d_%H%M%S")
JOB_DIR=gs://$BUCKET_ID/xgboost_job_dir
TRAINING_PACKAGE_PATH="[YOUR-LOCAL-PATH-TO-TRAINING-PACKAGE]/census_training/"
MAIN_TRAINER_MODULE=census_training.train
REGION=us-central1
RUNTIME_VERSION=2.11
PYTHON_VERSION=3.7
SCALE_TIER=BASIC
요청을 제출합니다.
gcloud ai-platform jobs submit training $JOB_NAME \
--job-dir $JOB_DIR \
--package-path $TRAINING_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE \
--region $REGION \
--runtime-version=$RUNTIME_VERSION \
--python-version=$PYTHON_VERSION \
--scale-tier $SCALE_TIER
다음과 비슷한 출력이 표시됩니다.
Job [census_training_[DATE]_[TIME]] submitted successfully. Your job is still active. You may view the status of your job with the command $ gcloud ai-platform jobs describe census_training_20180718_160825 or continue streaming the logs with the command $ gcloud ai-platform jobs stream-logs census_training_[DATE]_[TIME] jobId: census_training_[DATE]_[TIME] state: QUEUED
학습 로그 보기(선택사항)
AI Platform Training은 모든 stdout
및 stderr
스트림과 로깅 구문을 캡처합니다. 이러한 로그는 Logging에 저장되며 실행 중 및 실행 후에 볼 수 있습니다.
학습 작업에 대한 로그를 보려면 다음 단계를 따르세요.
콘솔
AI Platform Training 작업 페이지를 엽니다.
검사할 학습 작업 이름을 선택합니다. 이렇게 하면 선택한 학습 작업의 작업 세부정보 페이지로 이동합니다.
작업 세부정보에서 로그 보기 링크를 선택합니다. 이렇게 하면 선택한 학습 작업의 로그를 검색 및 필터링할 수 있는 로깅 Logging 페이지로 이동합니다.
gcloud
gcloud ai-platform jobs stream-logs
를 사용하여 터미널에서 로그를 확인할 수 있습니다.
gcloud ai-platform jobs stream-logs $JOB_NAME
다음 단계
- AI Platform Training에서 XGBoost를 사용하여 온라인 예측 수행하기
- 커스텀 확장 등급을 사용하여 고유한 학습용 클러스터 구성을 정의하는 방법 알아보기