와이드 앤 딥 기본 제공 알고리즘을 사용한 학습

AI Platform의 기본 제공 알고리즘을 사용하여 학습하면 학습 코드를 작성하지 않고 데이터세트를 제출하고 모델을 학습시킬 수 있습니다. 이 페이지에서는 와이드 앤 딥 기본 제공 알고리즘 작동 방식과 이를 사용하는 방법을 설명합니다.

개요

이 기본 제공 알고리즘은 다음과 같은 방식으로 사전 처리 및 학습을 수행합니다.

  1. 사전 처리: AI Platform은 카테고리 데이터와 수치 데이터의 조합을 모든 수치 데이터세트로 처리하여 학습에 사용할 수 있도록 준비합니다.
  2. 학습: AI Platform은 제공된 데이터세트 및 모델 매개변수와 함께 TensorFlow의 와이드 앤 딥 에스티메이터를 사용하여 학습을 실행합니다.

제한사항

와이드 앤 딥 기본 제공 알고리즘을 사용한 학습에서는 다음 기능이 지원되지 않습니다.

  • 다중 GPU 학습. 기본 제공 알고리즘은 GPU를 한 번에 하나만 사용합니다. 1개의 머신에서 여러 개의 GPU를 사용하는 학습을 최대한 활용하려면 학습 애플리케이션을 만들어야 합니다. 자세한 내용은 머신 유형을 참조하세요.
  • TPU를 사용한 학습. TPU를 사용한 학습을 위해서는 학습 애플리케이션을 만들어야 합니다. 자세한 내용은 TPU를 사용한 학습 작업 실행 방법을 참조하세요.
  • 분산형 학습. AI Platform에서 분산형 학습 작업을 실행하려면 학습 애플리케이션을 만들어야 합니다.

지원되는 머신 유형

지원되는 AI Platform 확장 등급과 머신 유형은 다음과 같습니다.

  • BASIC
  • CUSTOM:
    • standard
    • large_model
    • complex_model_s
    • complex_model_m
    • complex_model_l
    • standard_gpu
    • standard_p100
    • standard_v100
    • large_model_v100

또한 Compute Engine 머신 유형(베타)도 사용할 수 있습니다. 자세한 내용은 머신 유형을 참조하세요.

입력 데이터 형식 지정

데이터세트의 각 행은 1개의 인스턴스를 나타내며, 데이터세트의 각 열은 특성 값을 나타냅니다. 타겟 열은 예측하려는 값을 나타냅니다.

CSV 파일 준비

입력 데이터는 UTF-8으로 인코딩된 CSV 파일이어야 합니다. 학습 데이터가 범주형 값과 숫자 값으로만 구성된 경우, Cloud ML Engine 사전 처리 모듈을 사용하여 누락된 숫자 값을 채우고, 데이터세트를 분할하고, 누락 값이 10%가 넘는 행을 삭제할 수 있습니다. 그렇지 않으면 자동 사전 처리를 사용 설정하지 않고 학습을 실행하면 됩니다.

입력 CSV 파일을 준비할 때는 다음과 같은 요구사항을 충족해야 합니다.

  • 헤더 행을 삭제합니다. 헤더 행에는 각 열의 라벨이 있습니다. 학습 데이터에 포함할 나머지 데이터 인스턴스와 함께 제출되지 않도록 헤더 행을 삭제하세요.
  • 타겟 열이 첫 번째 열인지 확인합니다. 타겟 열에는 예측하려는 값이 포함됩니다. 분류 알고리즘의 경우, 타겟 열의 모든 값은 클래스 또는 범주입니다. 회귀 알고리즘의 경우, 타겟 열의 모든 값은 숫자 값입니다.

정수 값 처리

고유 값이 충분하지 않으면 기본적으로 정수 값 열이 범주형 열로 해석됩니다. 예를 들어 데이터세트의 한 열에 {101, 102, 103}과 같은 정수 값이 포함된 경우 AI Platform은 이러한 값을 {'high', 'medium', 'low'}와 같은 범주로 해석합니다.

이러한 잘못된 분석을 방지하고 정수가 수치 데이터로 해석되도록 하려면 정수를 {101.0, 102.0, 103.0}과 같은 부동 소수점 숫자로 변환해야 합니다. 정수가 범주로 해석되도록 하려면 {code_101, code_102, code_103}과 같이 각 값의 앞이나 뒤에 문자열을 추가합니다.

와이드 앤 딥 학습 작업 제출

이 섹션에서는 와이드 앤 딥 기본 제공 알고리즘을 사용하여 학습 작업을 제출하는 방법을 설명합니다.

Google Cloud Platform Console 내에서 각 초매개변수에 대한 간단한 설명을 확인하고, 와이드 앤 딥 기본 제공 알고리즘 참조에서 보다 자세한 설명을 확인할 수 있습니다.

콘솔

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

    AI Platform 작업 페이지

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

  3. 새 학습 작업 만들기 페이지에서 기본 제공 와이드 앤 딥을 선택하고 다음을 클릭합니다.

  4. 사용 가능한 모든 매개변수에 대해 자세히 알아보려면 Google Cloud Platform Console의 링크와 기본 제공 와이드 앤 딥 참조를 확인하세요.

gcloud

  1. 이 가이드를 사용하기 전에 gcloud를 설치한 경우에는 최신 버전의 gcloud beta로 업데이트합니다.

       gcloud components install beta
    
  2. [VALUES-IN-BRACKETS]에 고유 값을 입력하여 작업 환경 변수를 설정합니다.

       # Specify the name of the Cloud Storage bucket where you want your
       # training outputs to be stored, and the Docker container for
       # your built-in algorithm selection.
       BUCKET_NAME='[YOUR-BUCKET-NAME]'
       IMAGE_URI='gcr.io/cloud-ml-algos/wide_deep_learner_cpu:latest'
    
       # Specify the Cloud Storage path to your training input data.
       TRAINING_DATA='gs://[YOUR_BUCKET_NAME]/[YOUR_FILE_NAME].csv'
    
       DATASET_NAME='census'
       ALGORITHM='wide_deep'
       MODEL_TYPE='classification'
    
       DATE='date '+%Y%m%d_%H%M%S''
       MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
       JOB_ID="${MODEL_NAME}_${DATE}"
    
       JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
    
  3. gcloud beta ai-platform jobs training submit을 사용하여 교육 작업을 제출합니다.

       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
    
  4. gcloud로 로그를 확인하여 학습 작업 상태를 모니터링합니다. gcloud ai-platform jobs describegcloud ai-platform jobs stream-logs를 참조하세요.

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

사전 처리 작동 방법

범주형 및 수치 데이터에는 자동 사전 처리가 수행됩니다. 사전 처리 루틴은 먼저 데이터를 분석한 후 변환합니다.

분석

먼저 AI Platform이 각 열의 데이터 유형을 자동으로 감지하고, 각 열의 처리 방법을 식별하고, 열의 데이터 통계 일부를 계산합니다. 이 정보는 metadata.json 파일에 캡처됩니다.

AI Platform은 대상 열의 유형을 분석하여 제공된 데이터세트가 회귀용인지 또는 분류용인지 식별합니다. 이러한 분석이 개발자가 선택한 model_type과 충돌하면 오류가 발생합니다. 모호한 경우에는 데이터 형식을 명확하게 지정하여 타겟 열의 취급 방법을 명확하게 해야 합니다.

  • 유형: 열은 숫자 또는 범주일 수 있습니다.

  • 처리: AI Platform은 각 열의 처리 방법을 다음과 같이 식별합니다.

    • 열에 모든 행의 단일 값이 있으면 열을 상수로 처리합니다.
    • 열이 범주형이고 모든 행에 고유 값이 있으면 열을 row_identifier로 처리합니다.
    • 열이 부동 소수점 값이 포함된 숫자형이거나 정수 값이 포함된 숫자형이고 여러 고유 값이 있으면 열을 숫자로 처리합니다.
    • 열이 정수 값이 포함된 숫자형이고 고유 값이 충분하게 포함되어 있지 않으면 정수 값이 ID 또는 어휘인 범주형 열로 처리합니다.
      • 열에 있는 고유 값 수가 입력 데이터세트에 있는 행 수의 20% 미만이면 열의 고유 값이 부족한 것으로 간주합니다.
    • 열이 범주형이고 카디널리티가 높으면 열을 해시 처리합니다. 이 때 해시 버킷 수는 열에 있는 고유 값 수의 제곱근과 동일합니다.
      • 범주형 열은 고유 값 수가 데이터세트에 있는 행 수의 제곱근보다 클 때 카디널리티가 높다고 간주합니다.
    • 열이 범주형이고 고유 값 수가 데이터세트에 있는 행 수의 제곱근보다 작거나 같으면 어휘가 있는 일반 범주형 열로 처리됩니다.
  • 통계: AI Platform은 식별된 열 유형 및 처리를 토대로 이후 단계에서 열을 변환하는 데 사용되는 통계를 다음과 같이 계산합니다.

    • 열이 숫자형이면 평균 값과 분산 값이 계산됩니다.
    • 열이 범주형이고 처리 방식이 ID 또는 어휘이면 열에서 고유 값을 추출합니다.
    • 열이 범주형이고 처리 방식이 해싱이면 열의 카디널리티를 고려해서 해시 버킷 수를 계산합니다.

변환

데이터세트의 초기 분석이 완료되면 AI Platform은 데이터세트에 적용된 유형, 처리, 통계를 기준으로 데이터를 변환합니다. AI Platform은 다음 순서로 변환을 수행합니다.

  1. 분할 비율을 지정하는 경우, 학습 데이터세트를 유효성 검사 데이터세트와 테스트 데이터세트로 분할합니다.
  2. 10%가 넘는 특성이 누락된 행을 삭제합니다.
  3. 열 평균 값을 사용하여 누락된 숫자 값을 채웁니다.

변환 예

누락 값이 10%인 행을 삭제합니다. 다음 예에서는 행에 10개 값이 있다고 가정합니다. 각 예시 행은 간단한 설명을 위해 일부 내용만 보여줍니다.

행 문제 원래 값 변환된 값 설명
예시 행에 누락 값이 없음 [3, 0.45, ...,
'fruits', 0, 1]
[3, 0.45, ...,
1, 0, 0, 0, 1]
'fruits' 문자열이 원-핫 인코딩에 따라 '1, 0, 0' 값으로 변환됩니다. 이 작업은 나중에 TensorFlow 그래프에서 수행됩니다.
누락 값이 너무 많음 [3, 0.45, ...,
'fruits', __, __]
행이 삭제됨 행의 값이 10% 넘게 누락되었습니다.
숫자 값 누락 [3, 0.45, ...,
'fruits', 0, __]
[3, 0.45, ...,
1, 0, 0, 0, 0.54]
  • 누락된 숫자 값이 열 평균 값으로 대체됩니다. 이 예에서 평균 값은 0.54입니다.
  • 'fruits' 문자열이 원-핫 인코딩에 따라 '1, 0, 0' 값으로 변환됩니다. 이 작업은 나중에 TensorFlow 그래프에서 수행됩니다.
범주형 값 누락 [3, 0.45, ...,
__, 0, 1]
[3, 0.45, ...,
0, 0, 0, 0, 1]
  • 누락된 범주형 값이 원-핫 인코딩에 따라 '0, 0, 0' 값으로 변환됩니다. 이 작업은 나중에 TensorFlow 그래프에서 수행됩니다.

특성 열

변환 중에는 열이 처리되지 않습니다. 대신 분석 중에 생성된 메타데이터가 AI Platform에 전달되어 특성 열이 생성됩니다.

열 유형 열 처리 결과 특성 열
수치 (모든 열 처리 유형) tf.feature_column.numeric_column

값 표준화를 위해 평균 값과 분산 값이 사용됩니다.
new_value = (input_value - mean) / sqrt(variance)
특성은 모델의 심층신경망 부분으로 이동합니다.

범주형 ID tf.feature_column.categorical_column_with_identity
범주형 어휘 tf.feature_column.categorical_column_with_vocabulary_list
범주형 해싱 tf.feature_column.categorical_column_with_hash_bucket
범주형 상수 또는 행 식별자 무시됨. 특성 열이 생성되지 않습니다.

추가 특성 열

DNN 모델의 와이드 파트(use_wide)에서 범주형 열을 사용하거나 모델의 딥 파트(embed_categories)에 이를 임베딩할 수 있습니다. 선택에 따라 다음과 같은 특성 열이 추가됩니다.

use_wide 사용 embed_categories 사용 결과
True True 또는 False 특성이 모델의 와이드 파트로 이동합니다.
True 또는 False True 범주형 열의 임베딩 특성 열이 생성됩니다. 여기서 임베딩 차원은 해당 열에 있는 범주 개수의 제곱근의 올림으로 설정됩니다. 이 임베딩 특성 열은 모델의 딥 파트로 이동합니다.
False False 범주형 열의 표시 열이 생성됩니다. 이 표시 특성 열은 모델의 딥 파트로 이동합니다.

자동 사전 처리가 완료되면 AI Platform은 처리된 데이터세트를 작업 요청에서 지정된 디렉토리의 Cloud Storage 버킷으로 다시 업로드합니다.

다음 단계

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

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