Modellartefakte zur Vorhersage und Erklärung exportieren

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öchten, 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:

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 GCS-Verzeichnis wie die saved_model.pb-Datei ein. Informationen zur Konfiguration der Batchverarbeitungs-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 XGBoost zum Trainieren eines Modells verwenden, können Sie das trainierte Modell auf drei Arten exportieren:

  • Mit der save_model-Methode von xgboost.Booster exportieren Sie eine Datei namens model.bst.
  • Mit der Bibliothek joblib exportieren Sie eine Datei namens model.joblib.
  • Mit dem Modul pickle von Python exportieren Sie eine Datei namens model.pkl.

Der Dateiname Ihres Modellartefakts muss genau einer dieser Optionen entsprechen.

Die folgenden gekennzeichneten Beispiele zeigen das Trainieren und Exportieren eines Modells mit diesen drei Methoden:

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 Modell mit scikit-learn trainieren, können Sie es auf zwei Arten exportieren:

  • Mit der Bibliothek joblib exportieren Sie eine Datei namens model.joblib.
  • Mit dem Modul pickle von Python exportieren Sie eine Datei namens model.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 gekennzeichneten Beispiele zeigen das Trainieren und Exportieren eines Modells mit diesen zwei Methoden:

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