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

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 파일과 동일한 Cloud Storage 디렉터리에 config/batching_parameters_config를 포함합니다. 일괄 처리 구성 파일을 구성하려면 TensorFlow 공식 문서를 참고하세요.

PyTorch

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

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

XGBoost

XGBoost 사전 빌드 컨테이너를 사용하여 모델을 학습시키는 경우 다음과 같은 방법으로 학습된 모델을 내보낼 수 있습니다.

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

다음 예에서는 모델을 학습시키고 내보내는 방법을 보여줍니다.

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)
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)
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 사전 빌드된 모델을 사용하여 모델을 학습하는 경우 다음과 같은 방법으로 모델을 내보낼 수 있습니다.

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

다음 예에서는 모델을 학습시키고 내보내는 방법을 보여줍니다.

joblibpickle
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)
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을 만듭니다.

다음 단계