기본 제공 와이드 앤 딥 알고리즘 시작하기

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

개요

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

시작하기 전에

명령줄에서 이 가이드를 수행하려면 Cloud SDK가 설치된 환경이나 Cloud Shell을 사용합니다.

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

  1. Google 계정에 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. GCP Console에서 리소스 관리 페이지로 이동하고 프로젝트를 선택하거나 만듭니다.

    리소스 관리 페이지로 이동

  3. Google Cloud Platform 프로젝트에 결제가 사용 설정되어 있는지 확인하세요.

    결제 사용 설정 방법 알아보기

  4. AI Platform ("Cloud Machine Learning Engine") and Compute Engine APIs를 사용 설정합니다.

    APIs 사용 설정

  5. Cloud SDK 설치 및 초기화.

이미 AI Platform용 계정을 설정하고 Cloud SDK를 설치했으면 gcloud beta를 업데이트합니다.

gcloud components install beta

설정

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

콘솔

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

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

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

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

      샘플 데이터 가져오기

    2. 각 파일의 이름(test.csvtrain.csv)을 클릭합니다. 이 두 파일은 개발자의 로컬 환경에 각각 ml-engine_census_algorithms_data_test.csvml-engine_census_algorithms_data_train.csv로 다운로드됩니다.

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

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

      Cloud Storage 브라우저 페이지

    2. 사용할 버킷 이름을 클릭하거나 버킷이 없으면 새 버킷을 만듭니다. 새 버킷을 만들 경우에는 리전 버킷인지 확인하고 AI Platform 학습 작업을 실행할 리전과 같은 리전을 선택합니다.

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

    4. 파일 업로드를 클릭하여 학습 파일(ml-engine_census_algorithms_data_train.csv)과 테스트 파일(ml-engine_census_algorithms_data_test.csv) 모두 개발자의 버킷에 업로드합니다.

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

알고리즘 선택

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

    AI Platform 작업 페이지

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

  3. 학습 작업 만들기는 4단계로 구분됩니다. 첫 번째 단계는 학습 알고리즘입니다. 기본 제공 와이드 앤 딥을 선택하고 다음을 클릭합니다.

gcloud

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

AI Platform 기본 제공 알고리즘은 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/ml-engine/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/wide_deep_learner_cpu:latest"

학습 작업 제출

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

학습 작업의 일반 인수는 다음과 같습니다.

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

기본 제공 와이드 앤 딥 알고리즘과 관련된 인수는 다음과 같습니다.

알고리즘 인수
인수 설명
preprocess AI Platform에서 데이터를 사전 처리해야 하는지 여부를 나타내는 부울 인수입니다.
model_type 학습시킬 모델 유형(분류 또는 회귀)을 나타냅니다.
training_data_path 학습 데이터의 Cloud Storage 위치입니다(CSV 파일이어야 함).
learning_rate 선형 옵티마이저에서 사용하는 학습률입니다.
max_steps 학습을 실행할 단계 수입니다.
batch_size 각 학습 단계마다 사용할 예시 수입니다.
dnn_learning_rate 모델의 DNN 부분에서 사용할 학습률입니다.
dnn_dropout 드롭아웃 확률입니다.
hidden_units 각 레이어의 숨겨진 단위 수를 나타내는 쉼표로 구분된 문자열입니다.
use_wide 이 인수를 설정하면 DNN 모델의 와이드 부분에 범주형 열이 사용됩니다.
embed_categories 이 인수를 설정하면 모델의 딥 부분에 범주형 열이 삽입되어 사용됩니다.

다른 모든 와이드 앤 딥 알고리즘 플래그의 세부 목록은 기본 제공 와이드 앤 딥 참조를 참조하세요.

콘솔

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

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

  3. 유효성 검사 데이터테스트 데이터 필드는 기본 설정 그대로 둡니다.

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

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

    다음을 클릭합니다.

  5. 모델 유형분류를 선택합니다.

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

  7. 작업 설정 페이지에서 다음을 수행합니다.

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

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

gcloud

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

    DATASET_NAME="census"
    ALGORITHM="wide_deep"
    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 beta ai-platform jobs submit training $JOB_ID \
      --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \
      -- \
      --preprocess --model_type=$MODEL_TYPE --batch_size=250 --learning_rate=0.1 \
      --dnn_learning_rate=0.005 --dnn_dropout=0.1 --hidden_units=10,10,10 \
      --use_wide --embed_categories \
      --max_steps=1000 --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이 다른 몇 가지 아티팩트와 함께 학습된 모델을 개발자의 Cloud Storage 버킷에 만듭니다. JOB_DIR 내의 디렉토리 구조는 다음과 같습니다.

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

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

gsutil ls -a $JOB_DIR/*

학습된 모델 배포

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

모델을 배포하려면 AI Platform에서 모델 리소스와 모델 버전을 만든 후 생성된 모델과 버전을 사용하여 온라인 예측을 요청합니다.

AI Platform에 모델을 배포하는 방법에 대한 자세한 내용은 TensorFlow 모델 배포 방법을 참조하세요.

Console

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

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

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

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

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

gcloud

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

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

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

    deployment_config.yaml 파일 콘텐츠는 다음과 유사합니다.

    deploymentUri: gs://[BUCKET_NAME]/algorithms_training/census_wide_deep_classification/model
    framework: TENSORFLOW
    labels:
      global_step: '1000'
      job_id: census_wide_deep_classification_20190227060114
      accuracy: '86'
    runtimeVersion: '1.13'
    
  2. AI Platform에서 모델과 버전을 만듭니다.

    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은 데이터를 metadata.json에 명시된 자료로 변환하여 사전 처리합니다.

TensorFlow 에스티메이터 모델은 예측 전에 이와 비슷한 사전 처리를 입력 데이터에 적용합니다.

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

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

     # A sample record from census dataset. 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"
    
     # Create a prediction request file
    echo $RAW_DATA_POINT > sample_input.csv
    
    # Check the prediction request file.
    cat sample_input.csv
    
  3. 예측 요청을 전송합니다.

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

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.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...