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

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

개요

이 가이드에서는 코드를 작성하지 않고 와이드 앤 딥 모델을 학습시킵니다. 사전 처리 및 학습용 인구조사 소득 데이터세트를 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단계로 구분됩니다. 첫 번째 단계는 학습 알고리즘입니다. 와이드 앤 딥을 선택하고 다음을 클릭합니다.

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/wide_deep_learner_cpu:latest"

학습 작업 제출

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

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

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

기본 제공 와이드 앤 딥 알고리즘과 관련된 인수:

알고리즘 인수
인수 설명
preprocess AI Platform Training에서 데이터 사전 처리 여부를 나타내는 부울 인수입니다.
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 이 인수를 설정하면 모델의 딥 부분에 범주형 열이 삽입되어 사용됩니다.

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

Console

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

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

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

  4. 출력 디렉터리에 AI Platform Training이 학습 작업의 출력을 저장할 개발자의 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 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 Training이 다른 몇 가지 아티팩트와 함께 학습된 모델을 개발자의 Cloud Storage 버킷에 만듭니다. JOB_DIR 내의 디렉터리 구조는 다음과 같습니다.

  • artifacts/
    • metadata.json
  • model/(deployment_config.yaml 파일도 포함된 TensorFlow 저장된 모델 디렉터리)
    • saved_model.pb
    • deployment_config.yaml
  • processed_data/
    • test.csv
    • training.csv
    • validation.csv

작업 디렉터리에는 '실험' 디렉터리의 다양한 모델 체크포인트 파일도 있습니다.

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

gsutil ls -a $JOB_DIR/*

학습된 모델 배포

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

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

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

Console

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

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

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

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

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

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

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

gcloud

기본 제공 와이드 앤 딥 알고리즘을 사용하여 학습을 진행하면 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_wide_deep_classification/20190227060114/model
    framework: TENSORFLOW
    labels:
      global_step: '1000'
      job_id: census_wide_deep_classification_20190227060114
      accuracy: '86'
    runtimeVersion: '1.14'
    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에 명시된 자료로 변환하여 사전 처리합니다.

와이드 앤 딥 모델은 예측 전에 이와 비슷한 사전 처리를 입력 데이터에 적용합니다.

Console

  1. 방금 만든 버전인 'v1'의 버전 세부정보 페이지에서 샘플 예측 요청을 보낼 수 있습니다.

    테스트 및 사용 탭을 선택합니다.

  2. 다음 샘플을 입력란에 복사합니다.

     {
       "instances": [
         {"csv_row": "44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States", "key": "dummy-key"}
       ]
     }
    
  3. 테스트를 클릭합니다.

    샘플 예측 결과에는 여러 필드가 있습니다. classes 목록에는 예측된 클래스 >50K'가 표시됩니다.

    {
       "predictions": [
         {
           ...
           "classes": [
             ">50K"
           ],
           ...
         }
       ]
     }
    

    이 경우 배포된 모델은 제공된 정보에 해당하는 개인이 수령하는 급여를 $50,000 이상으로 예측합니다. 학습은 비확정적이므로 모델마다 예측 결과가 다를 수 있습니다.

gcloud

  1. metadata.json의 마지막 몇 줄을 검토합니다.

    gsutil cat $JOB_DIR/artifacts/metadata.json | tail
    

    target_column.mapping 객체는 예측된 클래스가 예측 결과에 표시되는 방식을 보여줍니다.

        "target_algorithm": "TensorFlow",
        "target_column": {
          "mapping": {
            "0": "<=50K",
            "1": ">50K"
          },
        "num_category": 2,
        "type": "classification"
      }
    }
    
  2. 데이터 인스턴스 한 개에 필요한 예측 입력을 준비합니다. 각 데이터 인스턴스를 다음 필드가 있는 JSON 객체로 제공해야 합니다.

    • 쉼표로 구분된 특성 행을 학습 중에 사용된 인스턴스와 동일한 형식으로 포함하는 csv_row.
    • key: 각 인스턴스마다 고유한 문자열 식별자. 예측 출력의 일부로 표시되는 인스턴스 키의 역할을 하므로 각 예측을 해당 입력 인스턴스와 일치시킬 수 있습니다.

      이는 일괄 예측에 필요합니다. 일괄 예측은 예측할 수 없는 순서로 입력을 저장하고 출력을 저장하기 때문입니다.

      개발자가 제공하는 입력과 동일한 순서로 출력을 생성하는 온라인 예측의 경우 인스턴스 키가 덜 중요합니다. 이 예시에서는 단일 인스턴스에 대해서만 예측을 수행하므로 인스턴스 키의 값은 중요하지 않습니다.

    Google Cloud CLI를 사용하여 온라인 예측 요청을 보내려면 이 예시처럼 각 인스턴스를 줄바꿈으로 구분된 JSON 파일의 행에 작성합니다.

    터미널에서 다음 명령어를 실행하여 AI Platform Prediction에 보낼 수 있는 단일 인스턴스에 대한 입력을 만듭니다.

     # 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 "{\"csv_row\": \"$RAW_DATA_POINT\", \"key\": \"dummy-key\"}" > sample_input.json
    
    # Check the prediction request file.
    cat sample_input.json
    
  3. 예측 요청을 전송합니다.

    gcloud ai-platform predict \
      --model $MODEL_NAME \
      --version $VERSION_NAME \
      --json-instances sample_input.json \
      --format "value(predictions[0].classes[0])" \
      --signature-name "predict"
    

    이 예측 출력은 예측된 클래스만 표시하도록 필터링됩니다.

    >50K
    

대부분의 경우 예측 출력은 >50K입니다. 배포된 모델은 제공된 정보에 해당하는 개인이 수령하는 급여를 $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.

다음 단계