예측 및 설명을 위해 모델 아티팩트 내보내기

Vertex AI는 다음 머신러닝(ML) 프레임워크를 사용하여 학습된 모델에서 예측과 설명을 제공하기 위해 사전 빌드된 컨테이너를 제공합니다.

  • TensorFlow
  • PyTorch
  • XGBoost
  • scikit-learn

이러한 사전 빌드된 컨테이너 중 하나를 사용하려면 모델을 사전 빌드된 컨테이너의 요구사항을 준수하는 하나 이상의 모델 아티팩트로 저장해야 합니다. 이러한 요구사항은 모델 아티팩트가 Vertex AI에 생성되는지 여부에 적용됩니다.

커스텀 컨테이너를 사용하여 예측을 제공하려는 경우 이 페이지의 요구사항을 준수할 필요는 없지만 여전히 가이드라인으로 사용할 수는 있습니다.

사전 빌드된 컨테이너로 내보내기 위한 프레임워크별 요구사항

예측에 사용할 ML 프레임워크에 따라 여러 형식으로 모델 아티팩트를 내보내야 합니다. 다음 섹션에서는 각 ML 프레임워크에 허용되는 모델 형식을 설명합니다.

TensorFlow

TensorFlow를 사용하여 모델을 학습시키는 경우 모델을 TensorFlow SavedModel 디렉터리로 내보냅니다.

TensorFlow 학습 코드에서 SavedModel을 내보내는 방법에는 여러 가지가 있습니다. 다음 목록에는 다양한 TensorFlow API에서 작동하는 방법이 나와 있습니다.

이러한 아티팩트를 사용하여 예측을 제공하려면 학습에 사용한 TensorFlow 버전과 일치하는 사전 빌드된 예측용 컨테이너를 사용하여 Model을 만듭니다.

Vertex Explainable AI용 TensorFlow

TensorFlow의 사전 빌드된 컨테이너를 사용하여 예측을 제공하는 Model에서 설명을 가져오려면 Vertex Explainable AI용 TensorFlow 모델을 내보내기 위한 추가 요구사항을 참조하세요.

Tensorflow에 대한 서버 측 요청 일괄 처리 사용 설정

예측 지원을 위해 TensorFlow 사전 빌드된 컨테이너를 사용하는 Model에 대해 요청 일괄 처리를 사용 설정하려면 saved_model.pb 파일과 동일한 gcs 디렉터리에 config/batching_parameters_config를 포함합니다. 일괄 처리 구성 파일을 구성하려면 Tensorflow 공식 문서를 참조하세요.

PyTorch

Torch 모델 archiver를 사용하여 보관 파일을 생성하여 기본값 또는 커스텀 핸들러를 포함하는 모델 아티팩트를 패키징해야 합니다. 사전 빌드된 PyTorch 이미지는 보관 파일 이름이 model.mar이라고 예상하므로 모델 이름을 'model'로 설정해야 합니다.

TorchServe와 함께 제공되는 PyTorch 모델의 메모리 사용량, 지연 시간 또는 처리량 최적화에 대한 자세한 내용은 PyTorch 성능 가이드를 참조하세요.

XGBoost

XGBoost를 사용하여 모델을 학습시킨 경우 다음 3가지 방법 중 하나로 학습된 모델을 내보낼 수 있습니다.

  • xgboost.Boostersave_model 메서드를 사용하여 model.bst 파일을 내보냅니다.
  • joblib 라이브러리를 사용하여 model.joblib 파일을 내보냅니다.
  • Python의 pickle 모듈을 사용하여 model.pkl 파일을 내보냅니다.

모델 아티팩트의 파일 이름이 이러한 옵션 중 하나와 정확하게 일치해야 합니다.

다음 탭 형식의 예에서는 3가지 방법을 각각 사용하여 모델을 학습시키고 내보내는 방법을 보여줍니다.

xgboost.Booster

import os

from google.cloud import storage
from sklearn import datasets
import xgboost as xgb

digits = datasets.load_digits()
dtrain = xgb.DMatrix(digits.data, label=digits.target)
bst = xgb.train({}, dtrain, 20)

artifact_filename = 'model.bst'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
bst.save_model(local_path)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

joblib

import os

from google.cloud import storage
from sklearn import datasets
import joblib
import xgboost as xgb

digits = datasets.load_digits()
dtrain = xgb.DMatrix(digits.data, label=digits.target)
bst = xgb.train({}, dtrain, 20)

artifact_filename = 'model.joblib'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
joblib.dump(bst, local_path)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

pickle

import os
import pickle

from google.cloud import storage
from sklearn import datasets
import xgboost as xgb

digits = datasets.load_digits()
dtrain = xgb.DMatrix(digits.data, label=digits.target)
bst = xgb.train({}, dtrain, 20)

artifact_filename = 'model.pkl'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
with open(local_path, 'wb') as model_file:
  pickle.dump(bst, model_file)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

이러한 아티팩트를 사용하여 예측을 제공하려면 학습에 사용한 XGBoost 버전과 일치하는 사전 빌드된 예측용 컨테이너를 사용하여 Model을 만듭니다.

scikit-learn

scikit-learn을 사용하여 모델을 학습시킨 경우 다음 2가지 방법 중 하나로 모델을 내보낼 수 있습니다.

  • joblib 라이브러리를 사용하여 model.joblib 파일을 내보냅니다.
  • Python의 pickle 모듈을 사용하여 model.pkl 파일을 내보냅니다.

모델 아티팩트의 파일 이름이 이러한 옵션 중 하나와 정확하게 일치해야 합니다. 표준 scikit-learn 에스티메이터 또는 scikit-learn 파이프라인을 내보낼 수 있습니다.

다음 탭 형식의 예에서는 2가지 방법을 각각 사용하여 모델을 학습시키고 내보내는 방법을 보여줍니다.

joblib

import os

from google.cloud import storage
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier
import joblib

digits = datasets.load_digits()
classifier = RandomForestClassifier()
classifier.fit(digits.data, digits.target)

artifact_filename = 'model.joblib'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
joblib.dump(classifier, local_path)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

pickle

import os
import pickle

from google.cloud import storage
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

digits = datasets.load_digits()
classifier = RandomForestClassifier()
classifier.fit(digits.data, digits.target)

artifact_filename = 'model.pkl'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
with open(local_path, 'wb') as model_file:
  pickle.dump(classifier, model_file)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

이러한 아티팩트를 사용하여 예측을 제공하려면 학습에 사용한 scikit-learn 버전과 일치하는 사전 빌드된 예측용 컨테이너를 사용하여 Model을 만듭니다.

다음 단계