匯出模型構件以供推論和說明

Vertex AI 提供預建容器,可透過使用下列機器學習 (ML) 架構訓練的模型,提供推論和說明:

  • TensorFlow
  • PyTorch
  • XGBoost
  • scikit-learn

如要使用其中一個預先建構的容器,您必須將模型儲存為一或多個符合預先建構容器需求的模型構件。無論模型構件是在 Vertex AI 中建立,還是在其他地方建立,都必須符合這些規定。

如果您使用自訂容器來提供推論,則不必遵守本頁中的規定,但仍可將這些規定做為指南。

匯出至預先建構容器的特定架構需求

視您要用於推論的機器學習架構而定,您必須以不同的格式匯出模型構件。以下各節說明各 ML 架構可接受的模型格式。

TensorFlow

如果您使用 TensorFlow 訓練模型,請將模型匯出為 TensorFlow SavedModel 目錄

從 TensorFlow 訓練程式碼匯出 SavedModel 的方式有很多種。下表列出適用於各種 TensorFlow API 的幾種方法:

如要使用這些構件提供推論,請使用預先建構的推論容器建立 Model,並與您用於訓練的 TensorFlow 版本相符。

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)

如要使用這個構件提供推論,請建立 Model,並使用與您用於訓練的 XGBoost 版本相符的推論用預建容器

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)

如要使用這個構件提供推論,請使用預先建構的推論容器建立 Model,並與您用於訓練的 scikit-learn 版本相符。

後續步驟