scikit-learn 또는 XGBoost 모델에서 ML 예측 가져오기

AI Platform Prediction 온라인 예측 서비스는 모델 실행을 위해 클라우드의 컴퓨팅 리소스를 관리합니다. 이 모델은 다른 곳에서 로컬로 또는 다른 서비스를 통해 학습시킨 후 파일로 내보낸 scikit-learn 또는 XGBoost 모델일 수 있습니다. 이 페이지에서는 AI Platform Prediction을 사용하여 내보낸 이 모델에서 온라인 예측을 수행하는 프로세스에 대해 설명합니다.

시작하기 전에

개요

이 가이드에서는 Iris 데이터세트를 사용하여 꽃의 종류를 예측하는 간단한 모델을 학습시킵니다. 모델을 학습시키고 로컬로 저장한 후에는 AI Platform Prediction에 이를 배포하고 쿼리하여 온라인 예측을 수행할 수 있습니다.

시작하기 전에

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

GCP 프로젝트 설정

  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

환경 설정

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

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

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에서 새 가상 환경을 만듭니다. 예를 들어 다음 명령어는 aip-env라는 환경을 활성화합니다.

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

    virtualenv 사용에 대한 자세한 내용을 알아보세요. virtualenv를 종료하려면 deactivate를 실행합니다.

Cloud Shell

  1. Google Cloud 콘솔을 엽니다.

    Google Cloud 콘솔

  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입니다. (괄호 생략)

프레임워크 설치

macOS

가상 환경 내에서 다음 명령어를 실행하여 AI Platform Prediction 런타임 버전 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 Prediction에서 코드를 실행할 때 예기치 못한 동작을 방지하는 데 도움이 됩니다.

설치 옵션 및 문제 해결 정보에 대한 자세한 내용은 각 프레임워크의 설치 안내를 참조하세요.

Cloud Shell

다음 명령어를 실행하여 scikit-learn, XGBoost, pandas를 설치합니다.

pip install --user scikit-learn xgboost pandas

설치 옵션 및 문제 해결 정보에 대한 자세한 내용은 각 프레임워크의 설치 안내를 참조하세요.

scikit-learn 및 XGBoost 버전

AI Platform Prediction 런타임 버전은 scikit-learn 및 XGBoost의 새 릴리스에 대한 지원을 포함하도록 주기적으로 업데이트됩니다. 각 런타임 버전에 대한 자세한 내용을 참조하세요.

모델 학습 및 저장

Iris 데이터세트의 간단한 모델 학습부터 시작합니다.

scikit-learn

모델 지속성에 대한 scikit-learn 예를 따라 아래에 표시된 대로 모델을 학습시킨 후 내보냅니다.

from sklearn.externals import joblib
from sklearn import datasets
from sklearn import svm

# Load the Iris dataset
iris = datasets.load_iris()

# Train a classifier
classifier = svm.SVC()
classifier.fit(iris.data, iris.target)

# Export the classifier to a file
joblib.dump(classifier, 'model.joblib')

다음과 같이 pickle 라이브러리를 사용하여 모델을 내보낼 수도 있습니다.

import pickle
with open('model.pkl', 'wb') as model_file:
  pickle.dump(classifier, model_file)

XGBoost

Booster 객체의 'save_model' 메소드를 사용하여 모델을 내보낼 수 있습니다.

이 가이드에서는 Iris 데이터세트를 가져올 때에만 scikit-learn을 XGBoost와 함께 사용합니다.

from sklearn import datasets
import xgboost as xgb

# Load the Iris dataset
iris = datasets.load_iris()

# Load data into DMatrix object
dtrain = xgb.DMatrix(iris.data, label=iris.target)

# Train XGBoost model
bst = xgb.train({}, dtrain, 20)

# Export the classifier to a file
bst.save_model('./model.bst')

다음과 같이 pickle 라이브러리를 사용하여 모델을 내보낼 수도 있습니다.

import pickle
with open('model.pkl', 'wb') as model_file:
  pickle.dump(bst, model_file)

모델 파일 이름 지정 요구사항

온라인 예측의 경우 Cloud Storage에 업로드할 저장된 모델 파일의 이름을 사용한 라이브러리에 따라 model.pkl, model.joblib, model.bst 중 하나로 지정해야 합니다. 이렇게 하면 AI Platform Prediction은 모델을 가져올 때 내보내기에 사용한 것과 동일한 패턴으로 모델을 재구성합니다.

커스텀 예측 루틴(베타)을 만드는 경우에는 이 요구사항이 적용되지 않습니다.

scikit-learn

모델 내보내기에 사용된 라이브러리 올바른 모델 이름
pickle model.pkl
sklearn.externals.joblib model.joblib

XGBoost

모델 내보내기에 사용된 라이브러리 올바른 모델 이름
pickle model.pkl
joblib model.joblib
xgboost.Booster model.bst

이후 모델을 반복할 때는 새로운 모델마다 전용 디렉터리를 갖도록 Cloud Storage 버킷을 구성하세요.

Cloud Storage에 모델 저장

이 가이드를 쉽게 따라하려면 AI Platform Prediction에 사용하는 것과 동일한 프로젝트에서 전용 Cloud Storage 버킷을 사용하는 것이 좋습니다.

다른 프로젝트의 버킷을 사용 중인 경우 AI Platform Prediction 서비스 계정이 Cloud Storage에 있는 모델에 액세스할 수 있는지 확인해야 합니다. 적절한 권한이 없으면 AI Platform Prediction 모델 버전 생성 요청이 실패합니다. 스토리지 권한 부여에 대해 자세히 알아보세요.

Cloud Storage 버킷 설정

이 섹션에서는 새 버킷을 만드는 방법을 설명합니다. 기존 버킷을 사용할 수도 있지만 해당 버킷이 AI Platform 작업을 실행하려는 리전과 동일한 리전에 있어야 합니다. 또한 해당 버킷이 AI Platform Prediction을 실행하는 데 사용 중인 프로젝트에 속하지 않는 경우 명시적으로 AI Platform Prediction 서비스 계정에 액세스 권한을 부여해야 합니다.

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

    BUCKET_NAME="YOUR_BUCKET_NAME"

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

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

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

    AI Platform Prediction 작업을 실행할 리전과 동일한 리전을 사용합니다. AI Platform Prediction 서비스에 사용 가능한 리전을 참조하세요.

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

    REGION=us-central1
  4. 새 버킷을 만듭니다.

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

내보낸 모델 파일을 Cloud Storage로 업로드

다음 명령어를 실행하여 이 가이드의 앞부분에서 내보낸 모델을 Cloud Storage의 버킷에 업로드합니다.

gsutil cp ./model.joblib gs://$BUCKET_NAME/model.joblib

여러 모델 파일에 동일한 Cloud Storage 버킷을 사용할 수 있습니다. 각 모델 파일은 버킷 내부의 고유한 디렉터리에 있어야 합니다.

예측을 위한 데이터 형식 지정

gcloud

각 입력 인스턴스가 별도의 줄에 있는 input.json 파일을 만듭니다.

[6.8,  2.8,  4.8,  1.4]
[6.0,  3.4,  4.5,  1.6]

입력 인스턴스의 형식은 모델이 예상하는 형식과 일치해야 합니다. 이 예시에서는 Iris 모델에 4개의 특성이 필요하므로 입력은 (num_instances, 4) 형태의 행렬이어야 합니다.

REST API

간단한 부동 소수점의 목록으로 형식이 지정되고 각 입력 인스턴스가 별도의 줄에 있는 input.json 파일을 만듭니다.

{
  "instances": [

    [6.8,  2.8,  4.8,  1.4],
    [6.0,  3.4,  4.5,  1.6]

  ]
}

입력 인스턴스의 형식은 모델이 예상하는 형식과 일치해야 합니다. 이 예시에서는 Iris 모델에 4개의 특성이 필요하므로 입력은 (num_instances, 4) 형태의 행렬이어야 합니다.

XGBoost의 경우 AI Platform Prediction이 입력 인스턴스의 희소 표현을 지원하지 않습니다. 특성 값이 0이면 해당 입력에 0.0을 사용합니다. 특성 값이 누락된 경우 해당 입력에서 NaN을 사용합니다.

자세한 내용은 온라인 예측 입력 형식 지정을 참조하세요.

로컬 예측을 사용하여 모델 테스트

AI Platform Prediction에 모델을 배포하기 전에 gcloud ai-platform local predict 명령어를 사용하여 모델이 예측을 수행하는 방식을 테스트할 수 있습니다. 이 명령어는 로컬 환경의 종속 항목을 사용하여 예측을 수행하고 gcloud ai-platform predict가 온라인 예측을 수행할 때 사용하는 것과 동일한 형식으로 결과를 반환합니다. 예측을 로컬에서 테스트하면 온라인 예측 요청에 대한 비용이 발생하기 전에 오류를 발견하는 데 도움이 됩니다.

--model-dir 인수에는 내보낸 머신러닝 모델을 포함하는 로컬 머신 또는 Cloud Storage의 디렉터리를 지정합니다. --framework 인수에는 tensorflow, scikit-learn 또는 xgboost를 지정합니다. 커스텀 예측 루틴에는 gcloud ai-platform local predict 명령어를 사용할 수 없습니다.

다음은 로컬 예측을 수행하는 방법을 보여주는 예시입니다.

gcloud ai-platform local predict --model-dir LOCAL_OR_CLOUD_STORAGE_PATH_TO_MODEL_DIRECTORY/ \
  --json-instances LOCAL_PATH_TO_PREDICTION_INPUT.JSON \
  --framework NAME_OF_FRAMEWORK

모델 및 버전 배포

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

모델을 배포하려면 AI Platform Prediction에서 모델 리소스를 만들고 해당 모델의 한 버전을 만든 다음 모델 버전을 Cloud Storage에 저장된 모델 파일에 연결합니다.

모델 리소스 만들기

AI Platform Prediction은 모델 리소스를 사용하여 모델의 여러 버전을 구성합니다.

이때 이 모델에 속하는 모델 버전에 리전 엔드포인트와 전역 엔드포인트 중 무엇을 사용할지 결정해야 합니다. 대부분의 경우 리전 엔드포인트를 선택합니다. 기존(MLS1) 머신 유형에서만 사용할 수 있는 기능이 필요한 경우 전역 엔드포인트를 사용합니다.

또한 이 모델에 속한 모델 버전이 예측을 제공할 때 로그를 내보내도록 할지를 결정해야 합니다. 다음 예시에서는 로깅을 사용 설정하지 않습니다. 로깅을 사용 설정하는 방법을 알아보세요.

콘솔

  1. Google Cloud Console에서 AI Platform Prediction 모델 페이지를 엽니다.

    모델 페이지로 이동

  2. 모델 페이지 상단에 있는 새 모델 버튼을 클릭합니다. 그러면 모델 만들기 페이지로 이동합니다.

  3. 모델 이름 필드에 모델의 고유한 이름을 입력합니다.

  4. 리전 엔드포인트 사용 체크박스가 선택되어 있으면 AI Platform Prediction에서 리전 엔드포인트를 사용합니다. 전역 엔드포인트를 사용하려면 리전 엔드포인트 사용 체크박스를 선택 해제합니다.

  5. 리전 드롭다운 목록에서 예측 노드의 위치를 선택합니다. 사용 가능한 리전은 리전 엔드포인트 또는 전역 엔드포인트 중 어느 것을 사용하는지에 따라 다릅니다.

  6. 만들기를 클릭합니다.

  7. 모델 페이지로 돌아와 목록에 새 모델이 표시되는지 확인합니다.

gcloud

리전 엔드포인트

다음 명령어를 실행합니다.

gcloud ai-platform models create MODEL_NAME \
  --region=REGION

다음을 바꿉니다.

--region 플래그를 지정하지 않으면 gcloud CLI에서 리전 엔드포인트를 선택하거나 전역 엔드포인트에서 us-central을 사용하라는 메시지를 표시합니다.

또는 --region 플래그를 지정하지 않은 경우에도 gcloud CLI가 AI Platform Prediction에 대해 항상 해당하는 리전 엔드포인트를 사용하도록 ai_platform/region 속성을 특정 리전으로 설정할 수 있습니다. (이 구성은 gcloud ai-platform operations 명령어 그룹의 명령어에는 적용되지 않습니다.)

전역 엔드포인트

다음 명령어를 실행합니다.

gcloud ai-platform models create MODEL_NAME \
  --regions=REGION

다음을 바꿉니다.

--regions 플래그를 지정하지 않으면 gcloud CLI에서 리전 엔드포인트를 선택하거나 전역 엔드포인트에서 us-central1을 사용하라는 메시지를 표시합니다.

REST API

리전 엔드포인트

  1. 요청 본문에 모델 객체를 배치하여 요청의 형식을 지정합니다. 최소한 다음 샘플에서 MODEL_NAME을 바꿔 모델 이름을 지정합니다.

    {
      "name": "MODEL_NAME"
    }
    
  2. PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿔 다음 URL에서 REST API를 호출합니다.

    POST https://REGION-ml.googleapis.com/v1/projects/PROJECT_ID/models/
    

    다음을 바꿉니다.

    예를 들어 curl 명령어를 사용하여 다음 요청을 수행할 수 있습니다. 이 명령어는 Google Cloud CLI 설치와 연결된 사용자 인증 정보를 사용하여 요청을 승인합니다.

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "MODEL_NAME"}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://REGION-ml.googleapis.com/v1/projects/PROJECT_ID/models"
    

    API는 다음과 비슷한 응답을 반환합니다.

    {
      "name": "projects/PROJECT_ID/models/MODEL_NAME",
      "regions": [
        "REGION"
      ]
    }
    

전역 엔드포인트

  1. 요청 본문에 모델 객체를 배치하여 요청의 형식을 지정합니다. 최소한 다음 샘플에서 MODEL_NAME을 바꿔 모델 이름을 지정하고 REGION기존(MLS1) 머신 유형을 지원하는 리전으로 바꿔 리전을 지정합니다.

    {
      "name": "MODEL_NAME",
      "regions": ["REGION"]
    }
    
  2. PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿔 다음 URL에서 REST API를 호출합니다.

    POST https://ml.googleapis.com/v1/projects/PROJECT_ID/models/
    

    예를 들어 curl 명령어를 사용하여 다음 요청을 수행할 수 있습니다. 이 명령어는 Google Cloud CLI 설치와 연결된 사용자 인증 정보를 사용하여 요청을 승인합니다.

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "MODEL_NAME", "regions": ["REGION"]}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://ml.googleapis.com/v1/projects/PROJECT_ID/models"
    

    API는 다음과 비슷한 응답을 반환합니다.

    {
      "name": "projects/PROJECT_ID/models/MODEL_NAME",
      "regions": [
        "REGION"
      ]
    }
    

자세한 내용은 AI Platform Prediction 모델 API를 참조하세요.

모델 버전 만들기

이제 이전에 Cloud Storage에 업로드한 학습된 모델로 모델 버전을 만들 준비가 되었습니다. 버전을 만들 때 매개변수의 수를 지정할 수 있습니다. 다음 목록에서는 일반적인 매개변수에 대해 설명합니다. 이중 일부만 필요합니다.

  • name: AI Platform Prediction 모델 내에서 고유해야 합니다.
  • deploymentUri: Cloud Storage에서 모델 디렉터리의 경로입니다.

    • TensorFlow 모델을 배포하는 경우 이는 저장된 모델 디렉터리입니다.
    • scikit-learn 또는 XGBoost 모델을 배포하는 경우 이는 model.joblib, model.pkl 또는 model.bst 파일이 포함된 디렉터리입니다.
    • 커스텀 예측 루틴을 배포하는 경우 이는 모든 모델 아티팩트가 포함된 모델 디렉터리입니다. 이 디렉터리의 전체 크기는 500MB 이하여야 합니다.
  • framework: TENSORFLOW, SCIKIT_LEARN 또는 XGBOOST

  • runtimeVersion: 모델에 필요한 종속 항목에 기반을 둔 런타임 버전입니다. scikit-learn 모델 또는 XGBoost 모델을 배포하는 경우 이는 1.4 이상이어야 합니다. 일괄 예측에 모델 버전을 사용하려면 런타임 버전 2.1 이하를 사용해야 합니다.

  • pythonVersion: Python 3을 사용하여 내보낸 모델 파일과 호환되도록 '3.5'(런타임 버전 1.4~1.14의 경우) 또는 '3.7'(런타임 버전 1.15 이상의 경우)로 설정해야 합니다. 또한 런타임 버전 1.15 이하에서 사용하는 경우 '2.7'로 설정할 수도 있습니다.

  • machineType(선택사항): AI Platform 예측이 예측을 제공하는 노드에 사용하는 가상 머신의 유형입니다. 머신 유형에 대해 자세히 알아보세요. 설정하지 않으면 리전 엔드포인트의 기본값은 n1-standard-2이고 전역 엔드포인트의 기본값은 mls1-c1-m2입니다.

덜 일반적인 매개변수와 함께 각 매개변수에 대한 자세한 내용은 버전 리소스의 API 참조에서 확인하세요.

또한 리전 엔드포인트에서 모델을 만든 경우 같은 리전 엔드포인트에서 버전을 만들어야 합니다.

콘솔

  1. Google Cloud Console에서 AI Platform Prediction 모델 페이지를 엽니다.

    모델 페이지로 이동

  2. 모델 페이지에서 버전을 만드는 데 사용할 모델 리소스 이름을 선택합니다. 그러면 모델 세부정보 페이지로 이동합니다.

  3. 모델 세부정보 페이지 상단의 새 버전 버튼을 클릭합니다. 그러면 버전 만들기 페이지로 이동합니다.

  4. 이름 필드에 버전 이름을 입력합니다. 필요에 따라 설명 필드에 버전에 대한 설명을 입력합니다.

  5. 드롭다운 상자에 모델을 학습시킨 방법에 대한 다음 정보를 입력합니다.

    • 모델 학습에 사용된 Python 버전을 선택합니다.
    • 프레임워크프레임워크 버전을 선택합니다.
    • ML 런타임 버전을 선택합니다. AI Platform Prediction 런타임 버전에 대해 자세히 알아보세요.
  6. 온라인 예측을 실행할 머신 유형을 선택합니다.

  7. 모델 URI 필드에 모델 파일을 업로드한 Cloud Storage 버킷 위치를 입력합니다. 찾아보기 버튼을 사용하여 올바른 경로를 찾을 수도 있습니다.

    모델 파일 자체의 경로가 아니라 파일이 들어 있는 디렉터리의 경로를 지정해야 합니다. 예를 들어 gs://your_bucket_name/model-dir/saved_model.pb 또는 gs://your_bucket_name/model-dir/model.pkl 대신 gs://your_bucket_name/model-dir/을 사용합니다.

  8. 온라인 예측 배포의 확장 옵션을 선택합니다.

    • '자동 확장'을 선택하면 선택사항인 최소 노드 수 필드가 표시됩니다. 서비스가 축소되었을 때도 항상 실행되도록 할 최소 노드 수를 입력하면 됩니다.

    • '수동 확장'을 선택한 경우 항상 실행 상태로 유지할 노드 수를 입력해야 합니다.

    확장 옵션이 머신 유형에 따라 어떻게 다른지 알아보세요.

    예측 비용 가격에 대해 자세히 알아보세요.

  9. 모델 버전 만들기를 완료하려면 저장을 클릭합니다.

gcloud

  1. 환경 변수를 설정하여 모델 바이너리가 있는 Cloud Storage 디렉터리 경로, 모델 이름, 버전 이름, 선택한 프레임워크를 저장합니다.

    gcloud CLI를 사용하여 버전을 만드는 경우 밑줄과 대문자로 이루어진 프레임워크 이름(예: SCIKIT_LEARN) 또는 하이픈과 소문자로 이루어진 프레임워크 이름(예: scikit-learn)을 지정할 수 있습니다. 두 옵션 모두 동일한 동작으로 이어집니다.

    [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.

    MODEL_DIR="gs://your_bucket_name/"
    VERSION_NAME="[YOUR-VERSION-NAME]"
    MODEL_NAME="[YOUR-MODEL-NAME]"
    FRAMEWORK="[YOUR-FRAMEWORK_NAME]"
    

  2. 버전을 만듭니다.

    gcloud ai-platform versions create $VERSION_NAME \
      --model=$MODEL_NAME \
      --origin=$MODEL_DIR \
      --runtime-version=2.11 \
      --framework=$FRAMEWORK \
      --python-version=3.7 \
      --region=REGION \
      --machine-type=MACHINE_TYPE
    

    다음을 바꿉니다.

    • REGION: 모델을 만든 리전 엔드포인트의 리전입니다. 전역 엔드포인트에서 모델을 만든 경우 --region 플래그를 생략합니다.

    • MACHINE_TYPE: 예측 노드에서 사용할 수 있는 컴퓨팅 리소스를 결정하는 머신 유형입니다.

    버전을 만드는 데 몇 분 정도 걸립니다. 준비되면 다음 출력이 표시됩니다.

    Creating version (this might take a few minutes)......done.
  3. 새 버전에 대한 정보를 가져옵니다.

    gcloud ai-platform versions describe $VERSION_NAME \
      --model=$MODEL_NAME
    

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

    createTime: '2018-02-28T16:30:45Z'
    deploymentUri: gs://your_bucket_name
    framework: [YOUR-FRAMEWORK-NAME]
    machineType: mls1-c1-m2
    name: projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME]
    pythonVersion: '3.7'
    runtimeVersion: '2.11'
    state: READY

REST API

  1. 버전 객체를 포함하도록 요청 본문 형식을 지정합니다. 이 예시에서는 버전 name, deploymentUri, runtimeVersion, framework, machineType을 지정합니다. [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.

    {
      "name": "[YOUR-VERSION-NAME]",
      "deploymentUri": "gs://your_bucket_name/",
      "runtimeVersion": "2.11",
      "framework": "[YOUR_FRAMEWORK_NAME]",
      "pythonVersion": "3.7",
      "machineType": "[YOUR_MACHINE_TYPE]"
    }
    
  2. 다음 경로에서 [VALUES_IN_BRACKETS]를 적절한 값으로 바꾸고 REST API를 호출합니다.

    POST https://REGION-ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions
    

    REGION모델을 만든 리전 엔드포인트의 리전으로 바꿉니다. 전역 엔드포인트에서 모델을 만든 경우 ml.googleapis.com을 사용합니다.

    예를 들어 curl 명령어를 사용하여 다음 요청을 수행할 수 있습니다.

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "[YOUR-VERSION-NAME]", "deploymentUri": "gs://your_bucket_name/", "runtimeVersion": "2.11", "framework": "[YOUR_FRAMEWORK_NAME]", "pythonVersion": "3.7", "machineType": "[YOUR_MACHINE_TYPE]"}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://REGION-ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions"
    

    버전을 만드는 데 몇 분 정도 걸립니다. 준비가 되면 다음과 비슷한 출력이 표시됩니다.

    {
      "name": "projects/[YOUR-PROJECT-ID]/operations/create_[YOUR-MODEL-NAME]_[YOUR-VERSION-NAME]-[TIMESTAMP]",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.ml.v1.OperationMetadata",
        "createTime": "2018-07-07T02:51:50Z",
        "operationType": "CREATE_VERSION",
        "modelName": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]",
        "version": {
          "name": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME]",
          "deploymentUri": "gs://your_bucket_name",
          "createTime": "2018-07-07T02:51:49Z",
          "runtimeVersion": "2.11",
          "framework": "[YOUR_FRAMEWORK_NAME]",
          "machineType": "[YOUR_MACHINE_TYPE]",
          "pythonVersion": "3.7"
        }
      }
    }
    

온라인 예측 요청 전송

모델 버전이 성공적으로 생성되면 AI Platform Prediction에서는 예측 요청을 제공할 수 있는 새 서버를 시작합니다.

gcloud

  1. 모델 이름, 버전 이름, 입력 파일 이름에 대한 환경 변수를 설정합니다.

    MODEL_NAME="iris"
    VERSION_NAME="v1"
    INPUT_FILE="input.json"
    
  2. 예측 요청을 전송합니다.

    gcloud ai-platform predict --model $MODEL_NAME --version \
      $VERSION_NAME --json-instances $INPUT_FILE
    

Python

이 샘플에서는 사용자가 Python용 Google Cloud 클라이언트 라이브러리에 익숙하다고 가정합니다. 익숙하지 않으면 Python 클라이언트 라이브러리 사용을 참조하세요.

import googleapiclient.discovery

def predict_json(project, model, instances, version=None):
    """Send json data to a deployed model for prediction.
    Args:
        project (str): project where the AI Platform Prediction Model is deployed.
        model (str): model name.
        instances ([[float]]): List of input instances, where each input
           instance is a list of floats.
        version: str, version of the model to target.
    Returns:
        Mapping[str: any]: dictionary of prediction results defined by the
            model.
    """
    # Create the AI Platform Prediction service object.
    # To authenticate set the environment variable
    # GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>
    service = googleapiclient.discovery.build('ml', 'v1')
    name = 'projects/{}/models/{}'.format(project, model)

    if version is not None:
        name += '/versions/{}'.format(version)

    response = service.projects().predict(
        name=name,
        body={'instances': instances}
    ).execute()

    if 'error' in response:
        raise RuntimeError(response['error'])

    return response['predictions']

이러한 각 매개변수에 대한 자세한 내용은 예측 입력에 대한 AI Platform Prediction API를 참조하세요.

삭제

이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.

다음 단계