Vertex AI には、次の機械学習(ML)フレームワークを使用してトレーニングされたモデルから推論と説明を提供するビルド済みコンテナが用意されています。
- TensorFlow
- PyTorch
- XGBoost
- scikit-learn
これらのビルド済みコンテナのいずれかを使用するには、ビルド済みコンテナの要件に適合する 1 つ以上のモデル アーティファクトとしてモデルを保存する必要があります。これらの要件は、モデル アーティファクトが Vertex AI で作成されたかどうかにかかわらず適用されます。
推論の提供にカスタム コンテナを使用する場合、このページに記載されている要件を満たす必要はありませんが、ガイドラインとして使用できます。
ビルド済みコンテナにエクスポートするためのフレームワーク固有の要件
推論に使用する ML フレームワークに応じて、モデル アーティファクトをさまざまな形式でエクスポートする必要があります。以下のセクションでは、各 ML フレームワークで使用可能なモデル形式について説明します。
TensorFlow
TensorFlow を使用してモデルをトレーニングする場合、モデルを TensorFlow SavedModel ディレクトリとしてエクスポートします。
TensorFlow トレーニング コードから SavedModel をエクスポートする方法はいくつかあります。次のリストでは、さまざまな TensorFlow API に対応するいくつかの方法を示しています。
トレーニングに Keras を使用している場合は、
tf.keras.Model.saveを使用して SavedModel をエクスポートします。トレーニングに Estimator を使用する場合は、
tf.estimator.Estimator.export_saved_modelを使用して SavedModel をエクスポートします。それ以外の場合は、
tf.saved_model.saveまたはtf.compat.v1.saved_model.SavedModelBuilderを使用します。Keras や Estimator を使用していない場合は、Vertex AI がモデル アーティファクトを使用して推論を提供できるように、SavedModel をエクスポートする際に
serveタグとserving_default署名を使用する必要があります。Keras と Estimator の場合、この処理は自動的に行われます。詳しくは、エクスポート時の署名の指定をご覧ください。
これらのアーティファクトを使用して推論を提供するには、トレーニングに使用した 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
デフォルト ハンドラまたはカスタム ハンドラを含むモデル アーティファクトをパッケージ化する必要があります。より高度なエクスポートと変換のワークフロー(カスタム コンテナの使用が必要な場合など)では、カスタム コンテナの使用を検討する必要があります。ビルド済み PyTorch イメージでは、アーカイブの名前は model.mar であるため、モデル名を「model」に設定してください。
TorchServe で提供される PyTorch モデルのメモリ使用量、レイテンシ、スループットの最適化については、PyTorch パフォーマンス ガイドをご覧ください。
XGBoost
XGBoost ビルド済みコンテナを使用してモデルをトレーニングする場合は、次の方法でトレーニング済みモデルをエクスポートできます。
xgboost.Boosterのsave_modelメソッドを使用して、ファイルmodel.bstをエクスポートする。joblibライブラリを使用して、ファイルmodel.joblibをエクスポートする。
モデルのアーティファクトのファイル名は、これらのオプションのいずれかと正確に一致している必要があります。
次の例は、モデルをトレーニングしてエクスポートする方法を示しています。
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)
このアーティファクトを使用して推論を提供するには、トレーニングに使用した XGBoost のバージョンと一致する推論用のビルド済みコンテナを含む Model を作成します。
scikit-learn
scikit-learn 事前構築済みモデルを使用してモデルをトレーニングする場合は、joblib ライブラリを使用して、model.joblib というファイルをエクスポートすることで、モデルをエクスポートできます。
モデルのアーティファクトのファイル名は、これらのオプションのいずれかと正確に一致している必要があります。標準の 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)
このアーティファクトを使用して推論を提供するには、トレーニングに使用した scikit-learn のバージョンと一致する推論用のビルド済みコンテナを含む Model を作成します。
次のステップ
Vertex AI でカスタム トレーニングを実行する際に考慮する必要があるトレーニング コードの追加要件を確認する。
カスタム
TrainingPipelineリソースを作成してカスタム トレーニング コードを実行し、結果のモデル アーティファクトからModelを作成する方法を学習する。Cloud Storage のモデル アーティファクトから
Modelをインポートする方法を学習する。これは、CustomJobリソースまたはHyperparameterTuningJobリソースを使用して作成したモデル アーティファクトに適用されます。また、Vertex AI 以外でトレーニングしたモデル アーティファクトにも適用されます。