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

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 ファイルと同じ Cloud Storage ディレクトリに config/batching_parameters_config を含めます。バッチ処理構成ファイルを構成するには、TensorFlow の公式ドキュメントをご覧ください。

PyTorch

Torch モデル アーカイバでアーカイブ ファイルを作成して、デフォルト ハンドラまたはカスタム ハンドラを含むモデル アーティファクトをパッケージ化する必要があります。ビルド済み PyTorch イメージでは、アーカイブの名前は model.mar であるため、モデル名を「model」に設定してください。

TorchServe で提供される PyTorch モデルのメモリ使用量、レイテンシ、スループットの最適化については、PyTorch パフォーマンス ガイドをご覧ください。

XGBoost

XGBoost ビルド済みコンテナを使用してモデルをトレーニングする場合は、次の方法でトレーニング済みモデルをエクスポートできます。

モデルのアーティファクトのファイル名は、これらのオプションのいずれかと正確に一致している必要があります。

次の例は、モデルをトレーニングしてエクスポートする方法を示しています。

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 事前構築済みモデルを使用してモデルをトレーニングする場合は、次の方法でモデルをエクスポートできます。

モデルのアーティファクトのファイル名は、これらのオプションのいずれかと正確に一致している必要があります。標準の scikit-learn estimator または scikit-learn パイプラインをエクスポートできます。

次の例は、モデルをトレーニングしてエクスポートする方法を示しています。

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 を作成します。

次のステップ