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