시작하기

이 가이드에서 AI Platform을 사용하기 전에 먼저 머신러닝과 TensorFlow를 숙지해야 합니다. 자세한 내용은 TensorFlow API를 사용한 머신러닝 단기집중과정을 참조하세요. 머신러닝에 대한 더 많은 교육 자료는 Google AI로 배우기를 참조하세요.

개요

이 문서에서는 AI Platform의 학습 및 예측을 소개하고 전반적인 과정을 둘러봅니다. 인구조사 데이터세트를 사용하는 샘플을 통해 다음 내용을 살펴봅니다.

  • 텐서플로우 학습 애플리케이션 생성 및 로컬에서 검증
  • 클라우드의 단일 작업자 인스턴스에서 학습 작업 실행
  • 클라우드의 분산 학습 작업으로 학습 작업 실행
  • 초매개변수 조정을 사용하여 초매개변수 최적화
  • 모델을 배포하여 예측 지원
  • 온라인 예측을 요청하고 응답 확인
  • 배치 예측 요청

빌드 대상

이 샘플에서는 미국 인구조사 소득 데이터세트를 기반으로 소득 범주를 예측하는 와이드 앤 딥 모델을 빌드합니다. 두 가지 소득 카테고리, 즉 라벨은 다음과 같습니다.

  • >50K - 50,000달러 초과
  • <=50K - 50,000달러 이하

와이드 앤 딥 모델은 심층신경망(DNN)을 통해 복잡한 특성에 대한 고수준 추상화 또는 이러한 특성 간의 상호작용을 학습합니다. 이 모델은 DNN의 출력을 더 단순한 특성으로 수행한 선형 회귀와 결합됩니다. 이를 통해 성능과 속도 사이에서 균형을 찾음으로써 구조화된 데이터와 관련된 다양한 문제에서 효율성을 발휘합니다.

와이드 앤 딥 모델에 대한 자세한 내용은 Google Research 블로그 글 Wide & Deep Learning: Better Together with TensorFlow를 참조하세요.

샘플에서는 텐서플로우에 내장된 DNNCombinedLinearClassifier 클래스를 사용하여 모델을 정의합니다. 또한 인구조사 데이터세트에 특화된 데이터 변환을 정의하고 잠재적으로 변환된 특성을 모델의 DNN 또는 선형 부분에 할당합니다.

비용

이 가이드에서 다음을 포함한 Google Cloud Platform 구성요소를 사용할 때 비용이 청구될 수 있습니다.

  • 다음 목적으로 AI Platform 사용:
    • 학습
    • 예측
  • 다음 목적으로 Cloud Storage 사용:
    • 학습용 입력 데이터 저장
    • 학습 애플리케이션 패키지 스테이징
    • 학습 아티팩트 작성
    • 배치 예측용 입력 데이터 파일 저장

가격 계산기를 사용하여 예상 사용량을 기준으로 예상 비용을 산출할 수 있습니다.

클라우드 환경 설정 및 테스트

다음 단계에 따라 GCP 계정을 설정하고 AI Platform API를 활성화한 후 Cloud SDK를 설치하여 활성화합니다.

GCP 프로젝트 설정

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

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

  2. Google Cloud Platform 프로젝트를 선택하거나 만듭니다.

    리소스 관리 페이지로 이동

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

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

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

    APIs 사용 설정

  5. Cloud SDK 설치 및 초기화.

환경 설정

아래 옵션 중 하나를 선택하여 macOS에서 로컬로 또는 Cloud Shell의 원격 환경에서 환경을 설정합니다.

macOS 사용자의 경우 아래의 MACOS 탭의 안내에 따라 환경을 설정하는 것이 좋습니다. CLOUD SHELL 탭에 표시된 Cloud Shell은 macOS, Linux, Windows에서 사용할 수 있습니다. Cloud Shell을 이용하면 AI Platform을 빠르게 사용해 볼 수 있지만 지속적인 개발 작업에는 적합하지 않습니다.

macOS

  1. Python 설치 확인
    Python이 설치되어 있는지 확인하고 필요하면 설치합니다.

    python -V
  2. pip 설치 확인
    pip는 현재 버전의 Python에 포함되어 있는 Python의 패키지 관리자입니다. pip --version을 실행하여 pip가 이미 설치되어 있는지 확인합니다. 설치되어 있지 않으면 pip 설치 방법을 참조하세요.

    다음 명령어를 사용하여 pip를 업그레이드할 수 있습니다.

    pip install -U pip

    자세한 내용은 pip 문서를 참조하세요.

  3. virtualenv 설치
    virtualenv는 격리된 Python 환경을 만드는 도구입니다. virtualenv --version을 실행하여 virtualenv가 이미 설치되어 있는지 확인합니다. 설치되어 있지 않으면 virtualenv를 설치합니다.

    pip install --user --upgrade virtualenv

    이 가이드용으로 격리된 개발 환경을 만들려면 virtualenv에서 새 가상 환경을 만듭니다. 예를 들어 다음 명령어는 cmle-env라는 환경을 활성화합니다.

    virtualenv cmle-env
    source cmle-env/bin/activate
  4. 이 가이드를 진행하면서 가상 환경 내에서 나머지 명령어를 실행합니다.

    자세한 내용은 virtualenv 사용을 참조하세요. virtualenv를 종료하려면 deactivate를 실행합니다.

Cloud Shell

  1. Google Cloud Platform Console을 엽니다.

    Google Cloud Platform Console

  2. 콘솔 창의 상단에서 Google Cloud Shell 활성화 버튼을 클릭합니다.

    Google Cloud Shell 활성화

    콘솔 하단의 새로운 프레임에 Cloud Shell 세션이 열리고 명령줄 프롬프트가 표시됩니다. 셸 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

    Cloud Shell 세션

    Cloud Shell 세션을 사용할 준비가 되었습니다.

  3. 선택한 프로젝트를 사용하도록 gcloud 명령줄 도구를 구성합니다.

    gcloud config set project [selected-project-id]

    여기서 [selected-project-id]는 프로젝트 ID입니다(괄호 생략).

Google Cloud SDK 구성요소 확인

Google Cloud SDK 구성요소가 설치되었는지 확인하려면 다음 단계를 따르세요.

  1. 다음 명령어를 사용하여 모델을 나열합니다.

    gcloud ai-platform models list
  2. 이전에 모델을 만든 적이 없으면 빈 목록이 반환됩니다.

    Listed 0 items.

    모델을 만들기 시작하면 이 명령어를 사용하여 모델 목록을 표시할 수 있습니다.

  3. 이전에 gcloud를 설치한 경우 gcloud를 업데이트합니다.

    gcloud components update

TensorFlow 설치

TensorFlow를 설치하려면 다음 명령어를 실행하세요.

pip install --user --upgrade tensorflow

설치를 확인합니다.

python -c "import tensorflow as tf; print('TensorFlow version {} is installed.'.format(tf.VERSION))"

TensorFlow 라이브러리가 특정 지시문을 사용하도록 컴파일되지 않았다는 경고 메시지가 나타나면 무시해도 됩니다.

기타 설치 옵션과 문제 해결 정보를 포함하여 TensorFlow 설치에 대한 자세한 내용은 TensorFlow 문서를 참조하세요.

Python 버전 지원

AI Platform은 기본적으로 Python 2.7을 실행하며, 이 가이드의 샘플에서도 Python 2.7을 사용합니다.

AI Platform 런타임 버전 1.4 이상을 사용하는 경우 학습용으로 Python 3.5를 사용할 수 있습니다. 모델 학습에 Python 2와 Python 3 중 무엇을 사용했든 관계없이 학습된 모델로 온라인 및 일괄 예측 작업을 수행할 수 있습니다.

Python 3.5를 사용하여 학습 작업을 제출하는 방법을 알아보세요.

이 가이드의 코드 다운로드

  1. GitHub 저장소에서 샘플을 다운로드합니다.

macOS

  1. AI Platform 샘플 zip 파일을 다운로드하고 압축을 풉니다.

    zip 파일 다운로드

  2. 터미널 창을 열고 압축이 해제된 cloudml-samples-master 디렉토리가 포함된 디렉토리로 이동합니다.

  3. cloudml-samples-master > census > estimator 디렉토리로 이동합니다. 이 둘러보기의 명령어는 estimator 디렉토리에서 실행해야 합니다.

    cd cloudml-samples-master/census/estimator
    

Cloud Shell

  1. 다음 명령어를 입력하여 AI Platform 샘플 zip 파일을 다운로드합니다.

    wget https://github.com/GoogleCloudPlatform/cloudml-samples/archive/master.zip
    
  2. 파일의 압축을 풀어 cloudml-samples-master 디렉토리를 만듭니다.

    unzip master.zip
    
  3. cloudml-samples-master > census > estimator 디렉토리로 이동합니다. 이 둘러보기의 명령어는 estimator 디렉토리에서 실행해야 합니다.

    cd cloudml-samples-master/census/estimator
    

로컬에서 학습 애플리케이션 개발 및 검증

학습 애플리케이션을 클라우드에서 실행하기 전에 로컬에서 실행해 봅니다. 로컬 환경이 제공하는 효율적인 개발 및 검증 워크플로를 통해 빠르게 반복할 수 있습니다. 애플리케이션을 로컬에서 디버깅하면 클라우드 리소스 관련 비용이 발생하지 않습니다.

학습 데이터 가져오기

관련 데이터 파일인 adult.dataadult.test는 공개 Cloud Storage 버킷에 호스팅되어 있습니다. 이 샘플에서는 원본 소스 데이터가 아니라 몇 가지 간단한 정제를 거친 Cloud Storage 버전을 사용합니다. 아래에서 데이터 관련 정보를 자세히 알아보세요.

데이터 파일을 Cloud Storage에서 직접 읽을 수도 있고, 로컬 환경으로 복사할 수도 있습니다. 이 샘플에서는 로컬 학습을 위해 샘플을 다운로드한 후 클라우드 학습을 위해 자체 Cloud Storage 버킷에 업로드합니다.

  1. 데이터를 로컬 파일 디렉토리에 다운로드하고 해당 데이터 파일을 가리키는 변수를 설정합니다.

    mkdir data
    gsutil -m cp gs://cloud-samples-data/ml-engine/census/data/* data/
    
  2. TRAIN_DATAEVAL_DATA 변수를 로컬 파일 경로로 설정합니다. 예를 들어 다음 명령어는 변수를 로컬 경로로 설정합니다.

    TRAIN_DATA=$(pwd)/data/adult.data.csv
    EVAL_DATA=$(pwd)/data/adult.test.csv
    

데이터는 아래의 adult.data 파일 미리보기와 같이 쉼표로 구분된 값 형식으로 저장됩니다.

39, State-gov, 77516, Bachelors, 13, Never-married, Adm-clerical, Not-in-family, White, Male, 2174, 0, 40, United-States, <=50K
50, Self-emp-not-inc, 83311, Bachelors, 13, Married-civ-spouse, Exec-managerial, Husband, White, Male, 0, 0, 13, United-States, <=50K
38, Private, 215646, HS-grad, 9, Divorced, Handlers-cleaners, Not-in-family, White, Male, 0, 0, 40, United-States, <=50K
53, Private, 234721, 11th, 7, Married-civ-spouse, Handlers-cleaners, Husband, Black, Male, 0, 0, 40, United-States, <=50K
...

종속 항목 설치

macOS

텐서플로우를 로컬에 설치하려면 가상 환경을 사용하는 것이 좋습니다. 다음 방법을 참조하세요.

Docker를 사용하는 데 익숙하다면 텐서플로우 컨테이너 내에서 이 가이드를 완료할 수 있습니다. Docker로 텐서플로우를 설치하는 방법을 참조하세요.

샘플에서 제공하는 requirements.txt 파일을 사용하여 프로젝트에 필요한 종속 항목을 설치할 수 있습니다. 가상 환경 내에서 다음 명령어를 입력합니다.

  pip install --user -r ../requirements.txt

이 명령어를 실행하면 가이드에 사용되는 TensorFlow 1.10이 설치됩니다.

Cloud Shell

Cloud Shell에는 TensorFlow가 설치되어 있지만 샘플의 requirements.txt 파일을 실행하여 샘플에 필요한 버전과 동일한 텐서플로우 버전을 사용해야 합니다.

  pip install --user -r ../requirements.txt

이 명령어를 실행하면 가이드에 사용되는 TensorFlow 1.10이 설치됩니다.

로컬 학습 작업 실행

로컬 학습 작업은 Python 학습 프로그램을 로드하고 실제 AI Platform 클라우드 학습 작업과 비슷한 환경에서 학습 프로세스를 시작합니다.

  1. 출력 디렉토리를 지정하고 MODEL_DIR 변수를 설정합니다. 다음 명령어는 MODEL_DIRoutput 값으로 설정합니다.

    MODEL_DIR=output
    
  2. 이전 학습 실행에서 사용된 데이터가 남아 있을 수 있으므로 출력 디렉토리의 콘텐츠를 삭제하는 것이 좋습니다. 다음 명령어는 output 디렉토리의 모든 데이터를 삭제합니다.

    rm -rf $MODEL_DIR/*
    
  3. 로컬에서 학습을 실행하려면 다음 명령어를 실행합니다.

    gcloud ai-platform local train \
        --module-name trainer.task \
        --package-path trainer/ \
        --job-dir $MODEL_DIR \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --eval-steps 100
    

상세 로깅은 기본적으로 해제되어 있습니다. --verbosity 태그를 DEBUG로 설정하여 활성화할 수 있습니다. 이후 예제에서 활성화 방법을 설명합니다.

텐서보드로 요약 로그 검사

텐서보드라는 시각화 도구를 사용하여 평가 결과를 확인할 수 있습니다. 텐서보드로 텐서플로우 그래프를 시각화하고, 그래프 실행에 대한 측정항목을 수치로 나타내고, 그래프를 통과하는 이미지와 같은 추가 데이터를 표시할 수 있습니다. 텐서보드는 텐서플로우를 설치할 때 포함됩니다.

실행 중 및 실행 후에 아래 단계에 따라 텐서보드를 실행하고 학습 중에 생성된 요약 로그를 가리키도록 설정합니다.

macOS

  1. 텐서보드를 실행합니다.

    tensorboard --logdir=$MODEL_DIR
    
  2. 텐서보드 실행이 시작되면 브라우저에 http://localhost:6006 주소를 입력하여 액세스할 수 있습니다.

Cloud Shell

  1. 텐서보드를 실행합니다.

    tensorboard --logdir=$MODEL_DIR --port=8080
    
  2. 명령줄 상단의 웹 미리보기 메뉴에서 '포트 8080에서 미리보기'를 선택합니다.

accuracy를 클릭하여 작업 진행에 따른 정확성의 변화를 그래픽으로 확인합니다.

텐서보드 정확성 그래프

명령줄에 ctrl+c를 입력하면 언제든지 텐서보드를 종료할 수 있습니다.

분산 모드로 로컬 학습 작업 실행

--distributed 플래그를 사용하여 로컬 학습 작업을 실행하면 모델이 AI Platform의 분산 실행 환경에서 작동하는지 테스트할 수 있습니다.

  1. 출력 디렉토리를 지정하고 MODEL_DIR 변수를 다시 설정합니다. 다음 명령어는 MODEL_DIRoutput-dist 값으로 설정합니다.

    MODEL_DIR=output-dist
    
  2. 이전 학습 실행에서 사용된 데이터가 남아 있을 수 있으므로 output 디렉토리의 콘텐츠를 삭제합니다.

    rm -rf $MODEL_DIR/*
    
  3. --distributed 옵션을 사용하여 local train 명령어를 실행합니다. 사용자 인수와 명령줄 인수를 구분하는 -- 위에 플래그를 입력해야 합니다.

    gcloud ai-platform local train \
        --module-name trainer.task \
        --package-path trainer/ \
        --job-dir $MODEL_DIR \
        --distributed \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --eval-steps 100
    

출력 검사

출력 파일은 --job-dir에 지정된 디렉토리에 기록됩니다. 여기에서는 output-dist로 설정되어 있습니다.

ls -R output-dist/

다음과 비슷한 출력이 표시됩니다.

checkpoint
eval
events.out.tfevents.1488577094.<host-name>
export
graph.pbtxt
model.ckpt-1000.data-00000-of-00001
model.ckpt-1000.index
model.ckpt-1000.meta
model.ckpt-2.data-00000-of-00001
model.ckpt-2.index
model.ckpt-2.meta

output-dist//eval:
events.out.tfevents.<timestamp>.<host-name>
events.out.tfevents.<timestamp><host-name>
events.out.tfevents.<timestamp>.<host-name>

output-dist//export:
census

output-dist//export/census:
<timestamp>

output-dist//export/census/<timestamp>:
saved_model.pb
variables
...

로그 검사

단일 인스턴스 학습 작업과 동일한 방법으로 텐서보드를 사용하여 요약 로그를 검사합니다. 단, --logdir 값을 분산 모드에서 사용한 출력 디렉토리 이름과 일치하도록 변경해야 합니다.

macOS

  1. 텐서보드를 실행합니다.

    tensorboard --logdir=$MODEL_DIR
    
  2. 텐서보드 실행이 시작되면 브라우저에 http://localhost:6006 주소를 입력하여 액세스할 수 있습니다.

Cloud Shell

  1. 텐서보드를 실행합니다.

    tensorboard --logdir=$MODEL_DIR --port=8080
    
  2. 명령줄 상단의 웹 미리보기 메뉴에서 '포트 8080에서 미리보기'를 선택합니다.

Cloud Storage 버킷 설정

이 섹션에서는 새 버킷을 만드는 방법을 보여줍니다. 기존 버킷을 사용할 수 있지만, 이 버킷이 AI Platform을 실행하는 데 사용 중인 프로젝트에 포함되지 않은 경우 명시적으로 AI Platform 서비스 계정에 액세스 권한을 부여해야 합니다.

  1. 새 버킷의 이름을 지정합니다. 이름은 Cloud Storage의 모든 버킷에서 중복되지 않아야 합니다.

    BUCKET_NAME="your_bucket_name"

    예를 들어 프로젝트 이름에 -mlengine을 추가하여 사용합니다.

    PROJECT_ID=$(gcloud config list project --format "value(core.project)")
    BUCKET_NAME=${PROJECT_ID}-mlengine
  2. 만든 버킷 이름을 확인합니다.

    echo $BUCKET_NAME
  3. 버킷 리전을 선택하고 REGION 환경 변수를 설정합니다.

    예를 들어 다음 코드는 REGION을 생성하고 us-central1으로 설정합니다.

    REGION=us-central1
  4. 새 버킷을 생성합니다.

    gsutil mb -l $REGION gs://$BUCKET_NAME

    참고: AI Platform 작업을 실행할 곳과 동일한 리전을 사용하세요. 시작하기 안내에서 us-central1을 사용했으므로 예시에서도 이 리전을 사용합니다.

Cloud Storage 버킷에 데이터 파일을 업로드합니다.

  1. gsutil을 사용하여 Cloud Storage 버킷에 두 파일을 복사합니다.

    gsutil cp -r data gs://$BUCKET_NAME/data
    
  2. TRAIN_DATAEVAL_DATA 변수가 해당 파일을 가리키도록 설정합니다.

    TRAIN_DATA=gs://$BUCKET_NAME/data/adult.data.csv
    EVAL_DATA=gs://$BUCKET_NAME/data/adult.test.csv
    
  3. gsutil을 다시 사용하여 Cloud Storage 버킷에 JSON 테스트 파일 test.json을 복사합니다.

    gsutil cp ../test.json gs://$BUCKET_NAME/data/test.json
    
  4. TEST_JSON 변수가 해당 파일을 가리키도록 설정합니다.

    TEST_JSON=gs://$BUCKET_NAME/data/test.json
    

클라우드에서 단일 인스턴스 학습 작업 실행

학습 작업이 단일 인스턴스 모드와 분산 모드에서 모두 검증되었으므로 이제 클라우드에서 학습 작업을 실행할 수 있습니다. 우선 단일 인스턴스 학습 작업을 요청해 보겠습니다.

기본 BASIC 확장 등급을 사용하여 단일 인스턴스 학습 작업을 실행합니다. 처음 작업을 요청하면 시작하는 데 몇 분 정도 걸릴 수 있지만 이후 작업은 빠르게 실행됩니다. 따라서 학습 작업을 개발하고 검증하면서 빠른 반복이 가능합니다.

  1. 최초 학습 실행의 이름을 이후의 학습 실행과 구분할 수 있는 이름으로 선택합니다. 예를 들어 숫자를 추가하여 반복을 나타낼 수 있습니다.

    JOB_NAME=census_single_1
    
  2. 학습 및 예측 작업을 요청할 때 포함하도록 OUTPUT_PATH 변수를 설정하여 AI Platform에서 생성된 출력 디렉토리를 지정합니다. OUTPUT_PATH는 모델 체크포인트, 요약, 내보내기에 대한 정규화된 Cloud Storage 위치를 나타냅니다. 이전 단계에서 정의한 BUCKET_NAME 변수를 사용할 수 있습니다.

    작업 이름을 출력 디렉토리로 사용하는 것이 좋습니다. 예를 들어 다음 OUTPUT_PATHcensus_single_1이라는 디렉토리를 가리킵니다.

    OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME
    
  3. 다음 명령어를 실행하여 클라우드에 단일 프로세스를 사용하는 학습 작업을 제출합니다. 이번에는 전체 로깅 출력을 검사하고 정확성, 손실, 기타 측정항목을 검색할 수 있도록 --verbosity 태그를 DEBUG로 설정합니다. 출력에 경고 메시지가 포함되지만 이 샘플에서는 무시해도 무방합니다.

    gcloud ai-platform jobs submit training $JOB_NAME \
        --job-dir $OUTPUT_PATH \
        --runtime-version 1.10 \
        --module-name trainer.task \
        --package-path trainer/ \
        --region $REGION \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --eval-steps 100 \
        --verbosity DEBUG
    

명령줄 출력이나 Google Cloud Platform ConsoleAI Platform > 작업에서 학습 작업 과정을 모니터링할 수 있습니다.

출력 검사

클라우드 학습에서는 출력이 Cloud Storage에 생성됩니다. 이 샘플에서는 출력이 OUTPUT_PATH로 저장되며, 출력을 나열하려면 다음을 실행합니다.

gsutil ls -r $OUTPUT_PATH

위에 나온 로컬 학습 출력과 비슷한 출력이 표시됩니다.

Stackdriver 로그 검사

로그는 클라우드에서 학습 코드의 동작을 이해하는 유용한 수단입니다. AI Platform에서 학습 작업을 실행하면 모든 stdoutstderr 스트림과 로깅 구문을 캡처합니다. 로그는 Stackdriver Logging에 저장되며 실행 중이나 실행 후에 확인할 수 있습니다.

GCP ConsoleAI Platform > 작업에서 확인할 작업을 선택하고 '로그 보기'를 클릭하면 작업 관련 로그를 쉽게 찾아볼 수 있습니다.

'모든 로그'를 선택한 상태로 두면 모든 작업자의 모든 로그가 표시됩니다. 특정 작업을 선택할 수도 있으며, master-replica-0은 마스터의 관점에서 작업 실행에 대한 개요를 제공합니다.

상세 로깅을 선택했으므로 전체 로깅 출력을 검사할 수 있습니다. 로그에서 accuracy라는 단어를 찾습니다.

AI Platform 작업용 Stackdriver Logging 콘솔 스크린샷

터미널에서 로그를 확인하려면 명령줄에서 다음 명령어를 사용하면 됩니다.

gcloud ai-platform jobs stream-logs $JOB_NAME

gcloud ai-platform jobs stream-logs의 모든 옵션을 확인하세요.

텐서보드로 요약 로그 검사

실행 중 및 실행 후에 텐서보드를 실행하고 학습 중에 생성된 요약 로그를 가리키도록 설정하면 학습 작업의 동작을 검사할 수 있습니다.

학습 프로그램은 Cloud Storage 위치에 요약을 바로 기록하므로 이벤트 파일을 직접 복사하지 않아도 텐서보드에서 자동으로 읽을 수 있습니다.

macOS

  1. 텐서보드를 실행합니다.

    tensorboard --logdir=$OUTPUT_PATH
    
  2. 텐서보드 실행이 시작되면 브라우저에 http://localhost:6006 주소를 입력하여 액세스할 수 있습니다.

Cloud Shell

  1. 텐서보드를 실행합니다.

    tensorboard --logdir=$OUTPUT_PATH --port=8080
    
  2. 명령줄 상단의 웹 미리보기 메뉴에서 '포트 8080에서 미리보기'를 선택합니다.

accuracy를 클릭하여 작업 진행에 따른 정확성의 변화를 그래픽으로 확인합니다.

명령줄에 ctrl+c를 입력하면 언제든지 텐서보드를 종료할 수 있습니다.

클라우드에서 분산 학습 실행

학습 작업을 실행하면서 Google의 확장 가능한 인프라를 활용하려면 학습 작업이 분산 모드에서 실행되도록 구성하세요.

코드를 변경하지 않아도 AI Platform에서 모델을 분산 프로세스로 실행할 수 있습니다.

분산 작업을 실행하려면 --scale-tier를 BASIC보다 높은 등급으로 설정합니다. 확장 등급에 대한 자세한 내용은 확장 등급 문서를 참조하세요.

  1. 분산 학습 작업의 이름을 다른 학습 작업과 구분되는 이름으로 선택합니다. 예를 들어 dist를 사용하여 분산을, 숫자를 사용하여 반복을 나타낼 수 있습니다.

    JOB_NAME=census_dist_1
    
  2. 작업 간에 체크포인트가 실수로 재사용되지 않도록 작업 이름을 포함하여 OUTPUT_PATH를 지정합니다. BUCKET_NAME을 정의한 이후로 새 명령줄 세션을 시작한 경우 다시 정의해야 할 수도 있습니다. 예를 들어 다음 OUTPUT_PATHcensus-dist-1이라는 디렉토리를 가리킵니다.

    OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME
    
  3. 다음 명령어를 실행하여 클라우드에 여러 작업자를 사용하는 학습 작업을 제출합니다. 작업이 시작되는 데 몇 분 정도 걸릴 수 있습니다.

    사용자 인수와 명령줄 인수를 구분하는 -- 위에 --scale-tier를 입력합니다. 예를 들어 다음 명령어는 확장 등급 STANDARD_1을 사용합니다.

    gcloud ai-platform jobs submit training $JOB_NAME \
        --job-dir $OUTPUT_PATH \
        --runtime-version 1.10 \
        --module-name trainer.task \
        --package-path trainer/ \
        --region $REGION \
        --scale-tier STANDARD_1 \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --verbosity DEBUG  \
        --eval-steps 100
    

명령줄 출력이나 Google Cloud Platform ConsoleAI Platform > 작업에서 작업 과정을 모니터링할 수 있습니다.

로그 검사

단일 인스턴스 학습 작업과 동일한 방법으로 Stackdriver 로그 및 요약 로그를 검사합니다.

Stackdriver 로그의 경우 GCP ConsoleAI Platform > 작업에서 작업을 선택한 후 로그 보기를 클릭하거나 터미널에서 다음 명령어를 사용합니다.

gcloud ai-platform jobs stream-logs $JOB_NAME

텐서보드의 경우는 다음과 같습니다.

macOS

  1. 텐서보드를 실행합니다.

    tensorboard --logdir=$OUTPUT_PATH
    
  2. 텐서보드 실행이 시작되면 브라우저에서 http://localhost:6006 주소로 액세스할 수 있습니다.

Cloud Shell

  1. 텐서보드를 실행합니다.

    tensorboard --logdir=$OUTPUT_PATH --port=8080
    
  2. 명령줄 상단의 웹 미리보기 메뉴에서 '포트 8080에서 미리보기'를 선택합니다.

초매개변수 조정

AI Platform이 제공하는 초매개변수 조정을 통해 모델의 예측 정확성을 극대화할 수 있습니다. 인구조사 샘플에서는 hptuning_config.yaml이라는 YAML 파일에 초매개변수 구성 설정을 저장하고 --config 변수를 사용하여 학습 요청에 해당 파일을 포함합니다.

  1. 새 작업 이름을 선택하고 구성 파일을 참조하는 변수를 만듭니다.

    HPTUNING_CONFIG=../hptuning_config.yaml
    JOB_NAME=census_core_hptune_1
    TRAIN_DATA=gs://$BUCKET_NAME/data/adult.data.csv
    EVAL_DATA=gs://$BUCKET_NAME/data/adult.test.csv
    
  2. 작업 간에 체크포인트가 실수로 재사용되지 않도록 작업 이름을 포함하여 OUTPUT_PATH를 지정합니다. BUCKET_NAME을 정의한 이후로 새 명령줄 세션을 시작한 경우 다시 정의해야 할 수도 있습니다. 예를 들어 다음 OUTPUT_PATHcensus_core_hptune_1이라는 디렉토리를 가리킵니다.

    OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME
    
  3. 다음 명령어를 실행하여 여러 작업자뿐 아니라 초매개변수 조정도 사용하는 학습 작업을 제출합니다.

    gcloud ai-platform jobs submit training $JOB_NAME \
        --stream-logs \
        --job-dir $OUTPUT_PATH \
        --runtime-version 1.10 \
        --config $HPTUNING_CONFIG \
        --module-name trainer.task \
        --package-path trainer/ \
        --region $REGION \
        --scale-tier STANDARD_1 \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --verbosity DEBUG  \
        --eval-steps 100
    

초매개변수 조정에 대한 자세한 내용은 초매개변수 조정 개요를 참조하세요.

모델을 배포하여 예측 지원

  1. 모델의 이름을 선택합니다. 문자로 시작해야 하며 문자, 숫자, 밑줄만 포함할 수 있습니다. 예를 들면 다음과 같습니다.

    MODEL_NAME=census
    
  2. AI Platform 모델을 만듭니다.

    gcloud ai-platform models create $MODEL_NAME --regions=$REGION
    
  3. 사용할 작업 출력을 선택합니다. 다음 샘플에서는 census_dist_1이라는 작업을 사용합니다.

    OUTPUT_PATH=gs://$BUCKET_NAME/census_dist_1
    
  4. 내보낸 학습 모델 바이너리의 전체 경로를 조회합니다.

    gsutil ls -r $OUTPUT_PATH/export
    
  5. 이름이 $OUTPUT_PATH/export/census/<timestamp>인 디렉토리를 찾아서 맨 뒤의 :을 제외하고 디렉토리 경로를 복사한 후 MODEL_BINARIES 환경 변수를 이 값으로 설정합니다. 예를 들면 다음과 같습니다.

    MODEL_BINARIES=gs://$BUCKET_NAME/census_dist_1/export/census/1487877383942/

    여기서 $BUCKET_NAME은 Cloud Storage 버킷 이름이고 census_dist_1은 출력 디렉토리입니다.

  6. 다음 명령어를 실행하여 v1 버전을 만듭니다.

    gcloud ai-platform versions create v1 \
        --model $MODEL_NAME \
        --origin $MODEL_BINARIES \
        --runtime-version 1.10
    

models list 명령어를 사용하여 모델 목록을 가져올 수 있습니다.

gcloud ai-platform models list

배포된 모델에 온라인 예측 요청 보내기

이제 모델에 예측 요청을 보낼 수 있습니다. 예를 들어 다음 명령어는 샘플 GitHub 저장소와 함께 다운로드한 test.json 파일을 사용하여 온라인 예측 요청을 보냅니다.

gcloud ai-platform predict \
    --model $MODEL_NAME \
    --version v1 \
    --json-instances ../test.json

응답에는 test.json의 데이터 항목을 기반으로 각 라벨(>50K<=50K)의 확률이 포함되며, 이를 통해 예상 소득이 50,000달러보다 높은지 아니면 낮은지를 알 수 있습니다.

응답은 다음과 같습니다.

CLASSES       PROBABILITIES
[u'0', u'1']  [0.9969545602798462, 0.0030454816296696663]

배치 예측 작업 제출

배치 예측 서비스는 데이터가 대량이며 예측 결과를 수신하는 데 지연 시간 요구사항이 없는 경우에 유용합니다. 사용되는 형식은 온라인 예측과 같지만 데이터를 Cloud Storage에 저장해야 합니다.

  1. 작업의 이름을 설정합니다.

    JOB_NAME=census_prediction_1
    
  2. 출력 경로를 설정합니다.

    OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME
    
  3. 예측 작업을 제출합니다.

    gcloud ai-platform jobs submit prediction $JOB_NAME \
        --model $MODEL_NAME \
        --version v1 \
        --data-format text \
        --region $REGION \
        --input-paths $TEST_JSON \
        --output-path $OUTPUT_PATH/predictions
    

이 명령어는 이전 명령어와 달리 즉시 반환됩니다. 작업 진행 상황을 확인하면서 완료되기를 기다립니다.

gcloud ai-platform jobs describe $JOB_NAME

작업이 완료되면 state: SUCCEEDED가 표시되며, 몇 분 정도 걸릴 수 있습니다. 터미널에서 다음을 실행하여 작업 로그를 확인할 수도 있습니다.

gcloud ai-platform jobs stream-logs $JOB_NAME

또는 GCP ConsoleAI Platform > 작업에서 진행 상황을 확인할 수 있습니다.

작업이 성공한 후 다음을 수행할 수 있습니다.

  • 출력 요약을 읽습니다.

    gsutil cat $OUTPUT_PATH/predictions/prediction.results-00000-of-00001
    

    다음과 비슷한 출력이 표시됩니다.

    {"probabilities": [0.9962924122810364, 0.003707568161189556], "logits": [-5.593664646148682], "classes": 0, "logistic": [0.003707568161189556]}
    
  • gsutil ls 명령어를 사용하여 작업에서 생성된 기타 파일을 나열합니다.

    gsutil ls -r $OUTPUT_PATH
    

온라인 예측과 비교한 배치 예측의 특징은 다음과 같습니다.

  • 인스턴스 수가 적을 때는 더 느리지만 인스턴스 수가 많을 때는 더 적합합니다.
  • 출력이 입력과 다른 순서로 반환될 수 있지만 숫자 색인을 통해 각 출력을 해당 입력 인스턴스와 대조할 수 있습니다. 온라인 예측에서는 출력이 원본 입력 인스턴스와 동일한 순서로 반환되므로 이 과정이 불필요합니다.

예측이 가능해진 후 일반적인 다음 단계는 해당 예측을 데이터베이스 또는 데이터 처리 파이프라인으로 내부 데이터화하는 것입니다.

이 샘플에서는 배치 예측을 실행하기 전에 모델을 배포했지만, 배치 예측 작업을 제출할 때 모델 바이너리 URI를 지정하면 이 단계를 건너뛸 수 있습니다. 모델을 배포하기 전에 예측을 생성하는 방식의 장점 중 하나는 다양한 평가 데이터세트로 모델의 성능을 평가하여 모델이 배포 기준을 충족하는지 파악할 수 있다는 것입니다.

삭제

학습 및 예측 실행의 출력 분석을 마쳤으면 GCP 계정에서 이 가이드에서 사용한 Cloud Storage 디렉토리와 관련하여 추가 요금이 발생하지 않도록 다음을 수행합니다.

  1. 터미널 창을 엽니다(아직 열려 있지 않은 경우).

  2. -r 플래그와 함께 gsutil rm 명령어를 사용하여 가장 최근 작업이 포함된 디렉토리를 삭제합니다.

    gsutil rm -r gs://$BUCKET_NAME/$JOB_NAME
    

성공하면 다음과 유사한 메시지가 반환됩니다.

Removing gs://my-awesome-bucket/just-a-folder/cloud-storage.logo.png#1456530077282000...
Removing gs://my-awesome-bucket/...

이 샘플용으로 생성한 모든 디렉토리에 대해 이 명령어를 반복합니다.

버킷에 다른 데이터가 저장되어 있지 않은 경우 버킷 자체에서 gsutil rm -r 명령어를 실행할 수도 있습니다.

데이터 정보

이 샘플에서 학습에 사용하는 인구조사 소득 데이터 세트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에서는 데이터세트 사용으로 인한 직간접적인 손해에 대해 책임을 지지 않습니다.

다음 단계

인구조사 데이터를 사용하여 학습 및 예측을 수행하는 AI Platform 샘플을 끝까지 둘러보았습니다. 로컬에서 학습 작업을 검증하고, 클라우드에서 단일 인스턴스 모드와 분산 모드로 실행하고, 초매개변수 조정을 사용하여 모델을 개선하고, 모델을 사용하여 온라인 및 일괄 예측을 수행했습니다.

다음은 계속해서 AI Platform을 배우는 데 도움이 될 수 있는 리소스입니다.

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

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

TensorFlow용 AI Platform