予測と説明用のモデル アーティファクトをエクスポートする

Vertex AI には、次の機械学習(ML)フレームワークを使用してトレーニングされたモデルから予測と説明を提供するビルド済みコンテナが用意されています。

  • TensorFlow
  • PyTorch
  • XGBoost
  • scikit-learn

これらのビルド済みコンテナのいずれかを使用するには、ビルド済みコンテナの要件に適合する 1 つ以上のモデル アーティファクトとしてモデルを保存する必要があります。これらの要件は、モデル アーティファクトが 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 モデル アーカイバを使用してアーカイブ ファイルを作成して、デフォルトまたはカスタム ハンドラのいずれかを含むモデル アーティファクトをパッケージ化する必要があります。ビルド済み 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 estimator または 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 を作成します。

次のステップ