Vertex AI 提供預建容器,可從使用下列機器學習 (ML) 架構訓練的模型提供推論和說明:
- TensorFlow
- PyTorch
- XGBoost
- scikit-learn
如要使用其中一個預先建構的容器,您必須將模型儲存為一或多個模型構件,且這些構件須符合預先建構容器的規定。無論模型構件是否在 Vertex AI 上建立,都適用這些規定。
如果您使用自訂容器提供推論結果,則不需要遵守本頁面的規定,但仍可將這些規定做為指引。
匯出至預先建構容器的架構專屬需求
視您打算用於推論的機器學習架構而定,您必須以不同格式匯出模型構件。以下各節說明各個機器學習架構可接受的模型格式。
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,請務必在匯出 SavedModel 時使用
serve
標記和serving_default
簽章,確保 Vertex AI 可以使用模型構件提供推論。Keras 和 Estimator 會自動處理這項作業。進一步瞭解如何在匯出期間指定簽章。
如要使用這些構件提供推論服務,請建立 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
的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)
如要使用這個構件提供推論結果,請建立 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
。
後續步驟
請參閱訓練程式碼的其他規定,瞭解在 Vertex AI 中執行自訂訓練時必須考量的事項。
瞭解如何建立自訂
TrainingPipeline
資源,以便執行自訂訓練程式碼,並從產生的模型構件建立Model
。瞭解如何從 Cloud Storage 中的模型構件匯入
Model
。這適用於您使用CustomJob
資源或HyperparameterTuningJob
資源建立的模型構件,以及在 Vertex AI 以外訓練的模型構件。