Vertex AI bietet vordefinierte Container für Vorhersagen und Erläuterungen von Modellen, die mit den folgenden ML-Frameworks (maschinelles Lernen) trainiert wurden:
- TensorFlow
- PyTorch
- XGBoost
- scikit-learn
Wenn Sie einen dieser vordefinierten Container verwenden möchten, müssen Sie das Modell als ein oder mehrere Modellartefakte speichern, die den Anforderungen des vordefinierten Containers entsprechen. Diese Anforderungen gelten unabhängig davon, ob Ihre Modellartefakte in Vertex AI erstellt werden.
Wenn Sie einen benutzerdefinierten Container für die Bereitstellung von Vorhersagen nutzen, müssen Sie die Anforderungen auf dieser Seite nicht erfüllen. Sie können sie jedoch weiterhin als Richtlinien verwenden.
Framework-spezifische Anforderungen für den Export in vordefinierte Container
Je nachdem, welches ML-Framework Sie für die Vorhersage verwenden, müssen Sie Modellartefakte in verschiedene Formate exportieren. In den folgenden Abschnitten werden die zulässigen Modellformate für jedes ML-Framework erläutert.
TensorFlow
Wenn Sie ein Modell mithilfe von TensorFlow trainieren, exportieren Sie das Modell als TensorFlow SavedModel-Verzeichnis.
Es gibt mehrere Möglichkeiten, SavedModels aus dem TensorFlow-Trainingscode zu exportieren. In der folgenden Liste werden einige Möglichkeiten für verschiedene TensorFlow APIs erläutert:
Wenn Sie Keras für das Training verwenden, nutzen Sie
tf.keras.Model.save
, um ein SavedModel zu exportieren.Wenn Sie einen Estimator für das Training verwenden, nutzen Sie
tf.estimator.Estimator.export_saved_model
, um ein SavedModel zu exportieren.Andernfalls verwenden Sie
tf.saved_model.save
odertf.compat.v1.saved_model.SavedModelBuilder
.Wenn Sie nicht Keras und keinen Estimator nutzen, müssen Sie das Tag
serve
und dieserving_default
-Signatur für das Exportieren des SavedModel verwenden, um sicherzustellen, dass Vertex AI Ihre Modellartefakte für die Bereitstellung von Vorhersagen nutzen kann. Keras und Estimator verarbeiten dies automatisch. Weitere Informationen finden Sie unter Signaturen während des Exports angeben.
Erstellen Sie für die Bereitstellung von Vorhersagen mit diesen Artefakten ein Model
mit dem vordefinierten Container für Vorhersagen, der der Version von TensorFlow entspricht, die Sie für das Training verwendet haben.
TensorFlow für Vertex Explainable AI
Wenn Sie Erläuterungen von einem Model
abrufen möchten, das einen vordefinierten TensorFlow-Container für Vorhersagen verwendet, informieren Sie sich über die zusätzlichen Anforderungen für das Exportieren eines TensorFlow-Modells für Vertex Explainable AI.
Serverseitige Batchverarbeitung von Anfragen für Tensorflow aktivieren
Wenn Sie die Batchverarbeitung für Anfragen für einen Model
aktivieren möchten, der einen vordefinierten TensorFlow-Container zur Bereitstellung von Vorhersagen verwendet, schließen Sie config/batching_parameters_config in dasselbe Cloud Storage-Verzeichnis wie die saved_model.pb
-Datei ein. Informationen zur Konfiguration der Batch-Konfigurationsdatei finden Sie in der offiziellen TensorFlow-Dokumentation.
PyTorch
Sie müssen die Modellartefakte verpacken, einschließlich eines Standard- oder benutzerdefinierten Handlers. Erstellen Sie dazu eine Archivdatei mit der Torch-Modellarchivierung.
Die vordefinierten PyTorch-Images erwarten, dass das Archiv den Namen model.mar
hat. Legen Sie also den Modellnamen auf "model" fest.
Informationen zur Optimierung von Arbeitsspeichernutzung, Latenz und Durchsatze eines PyTorch-Modells, das mit TorchServe bereitgestellt wird, finden Sie im Leitfaden: PyTorch-Leistung.
XGBoost
Wenn Sie einen vordefinierten XGBoost-Container verwenden, um ein Modell zu trainieren, können Sie das trainierte Modell so exportieren:
- Mit der
save_model
-Methode vonxgboost.Booster
exportieren Sie eine Datei namensmodel.bst
. - Mit der Bibliothek
joblib
exportieren Sie eine Datei namensmodel.joblib
. - Mit dem Modul
pickle
von Python exportieren Sie eine Datei namensmodel.pkl
.
Der Dateiname Ihres Modellartefakts muss genau einer dieser Optionen entsprechen.
Die folgenden Beispiele zeigen, wie ein Modell trainiert und exportiert wird:
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)
pickle
import os
import pickle
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.pkl'
# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
with open(local_path, 'wb') as model_file:
pickle.dump(bst, model_file)
# 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)
Erstellen Sie für die Bereitstellung von Vorhersagen mit diesem Artefakt ein Model
mit dem vordefinierten Container für Vorhersagen, der der Version von XGBoost entspricht, die Sie für das Training verwendet haben.
scikit-learn
Wenn Sie ein vordefiniertes scikit-learn
-Modell zum Trainieren eines
Modells verwenden, können Sie es so exportieren:
- Mit der Bibliothek
joblib
exportieren Sie eine Datei namensmodel.joblib
. - Mit dem Modul
pickle
von Python exportieren Sie eine Datei namensmodel.pkl
.
Der Dateiname Ihres Modellartefakts muss genau einer dieser Optionen entsprechen. Sie können Standard-scikit-learn-Estimatoren oder scikit-learn-Pipelines exportieren.
Die folgenden Beispiele zeigen, wie ein Modell trainiert und exportiert wird:
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)
pickle
import os
import pickle
from google.cloud import storage
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier
digits = datasets.load_digits()
classifier = RandomForestClassifier()
classifier.fit(digits.data, digits.target)
artifact_filename = 'model.pkl'
# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
with open(local_path, 'wb') as model_file:
pickle.dump(classifier, model_file)
# 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)
Erstellen Sie für die Bereitstellung von Vorhersagen mit diesem Artefakt ein Model
mit dem vordefinierten Container für Vorhersagen, der der Version von scikit-learn entspricht, die Sie für das Training verwendet haben.
Nächste Schritte
Informieren Sie sich über die zusätzlichen Anforderungen für Ihren Trainingscode, die Sie für ein benutzerdefiniertes Training in Vertex AI berücksichtigen müssen.
Erfahren Sie mehr über das Erstellen einer benutzerdefinierten
TrainingPipeline
-Ressource, um Ihren benutzerdefinierten Trainingscode auszuführen und um einModel
aus den daraus resultierenden Modellartefakten zu erstellen.Erfahren Sie mehr über das Importieren eines
Model
aus Modellartefakten in Cloud Storage. Dies gilt für alle Modellartefakte, die Sie mit einerCustomJob
-Ressource oder mit einerHyperparameterTuningJob
-Ressource erstellen, sowie für Modellartefakte, die Sie außerhalb von Vertex AI trainieren.