Vertex AI는 다음 머신러닝(ML) 프레임워크를 사용하여 학습된 모델에서 예측과 설명을 제공하기 위해 사전 빌드된 컨테이너를 제공합니다.
- TensorFlow
- PyTorch
- XGBoost
- scikit-learn
이러한 사전 빌드된 컨테이너 중 하나를 사용하려면 모델을 사전 빌드된 컨테이너의 요구사항을 준수하는 하나 이상의 모델 아티팩트로 저장해야 합니다. 이러한 요구사항은 모델 아티팩트가 Vertex AI에 생성되는지 여부에 적용됩니다.
커스텀 컨테이너를 사용하여 예측을 제공하려는 경우 이 페이지의 요구사항을 준수할 필요는 없지만 여전히 가이드라인으로 사용할 수는 있습니다.
사전 빌드된 컨테이너로 내보내기 위한 프레임워크별 요구사항
예측에 사용할 ML 프레임워크에 따라 여러 형식으로 모델 아티팩트를 내보내야 합니다. 다음 섹션에서는 각 ML 프레임워크에 허용되는 모델 형식을 설명합니다.
TensorFlow
TensorFlow를 사용하여 모델을 학습시키는 경우 모델을 TensorFlow SavedModel 디렉터리로 내보냅니다.
TensorFlow 학습 코드에서 SavedModel을 내보내는 방법에는 여러 가지가 있습니다. 다음 목록에는 다양한 TensorFlow API에서 작동하는 방법이 나와 있습니다.
학습에 Keras를 사용한 경우
tf.keras.Model.save
를 사용해 저장된 모델을 내보냅니다.학습에 에스티메이터를 사용하는 경우
tf.estimator.Estimator.export_saved_model
을 사용해 저장된 모델을 내보냅니다.아니면
tf.saved_model.save
를 사용하거나tf.compat.v1.saved_model.SavedModelBuilder
를 사용하세요.Keras 또는 에스티메이터를 사용하지 않는 경우 SavedModel을 내보낼 때
serve
태그와serving_default
서명을 사용하여 Vertex AI가 모델 아티팩트를 사용하여 예측을 제공할 수 있도록 합니다. Keras 및 에스티메이터는 이를 자동으로 처리합니다. 내보내기 중 서명 지정에 대해 자세히 알아보세요.
이러한 아티팩트를 사용하여 예측을 제공하려면 학습에 사용한 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.Booster
의save_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
을 만듭니다.
다음 단계
Vertex AI에서 커스텀 학습을 수행할 때 고려해야 하는 학습 코드의 추가 요구사항을 알아봅니다.
커스텀 학습 코드를 실행하고 결과 모델 아티팩트에서
Model
을 만드는 커스텀TrainingPipeline
리소스를 생성하는 방법을 알아봅니다.Cloud Storage의 모델 아티팩트에서
Model
을 가져오는 방법을 알아봅니다. 이 내용은CustomJob
리소스 또는HyperparameterTuningJob
리소스를 사용하여 만든 모델 아티팩트와 Vertex AI 외부에서 학습하는 모델 아티팩트에 적용됩니다.