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

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

  • TensorFlow
  • PyTorch
  • XGBoost
  • scikit-learn

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

如果您使用自訂容器提供推論結果,則不需要遵守本頁面的規定,但仍可將這些規定做為指引。

匯出至預先建構容器的架構專屬需求

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

TensorFlow

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

您可以透過多種方式,從 TensorFlow 訓練程式碼匯出 SavedModel。以下列出幾種適用於各種 TensorFlow API 的方式:

如要使用這些構件提供推論服務,請建立 Model,並使用與訓練時所用 TensorFlow 版本相符的預建推論容器

TensorFlow for Vertex Explainable AI

如要從使用 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

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)

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

後續步驟