Esportazione degli artefatti del modello per la previsione e la spiegazione

Vertex AI offre container predefiniti per fornire previsioni e spiegazioni dai modelli addestrati utilizzando i seguenti di machine learning (ML):

  • TensorFlow
  • PyTorch
  • XGBoost
  • scikit-learn

Per utilizzare uno di questi container predefiniti, devi salvare il modello come uno o più artefatto del modello che soddisfano i requisiti della piattaforma containerizzato. Questi requisiti si applicano indipendentemente dal fatto che gli artefatti del modello siano creato su Vertex AI.

Se utilizzi un container personalizzato per la pubblicazione di previsioni, non devono soddisfare i requisiti di questa pagina, ma puoi comunque utilizzare come linee guida.

Requisiti specifici del framework per l'esportazione in container predefiniti

A seconda del framework ML che prevedi di utilizzare per la previsione, devi esportare gli elementi del modello in formati diversi. Le sezioni seguenti descrivono i formati dei modelli accettabili per ciascun framework ML.

TensorFlow

Se utilizzi TensorFlow per addestrare modello, esportalo come TensorFlow SavedModel .

Esistono diversi modi per esportare i modelli SavedModel dal codice di addestramento di TensorFlow. Il seguente elenco descrive alcuni metodi che funzionano per varie API TensorFlow:

Per generare previsioni utilizzando questi elementi, crea un Model con il

TensorFlow per Vertex Explainable AI

Se vuoi ricevere spiegazioni da un Model che utilizza un container predefinito di TensorFlow per fornire previsioni, leggi i requisiti aggiuntivi per l'esportazione di un modello TensorFlow per Vertex Explainable AI.

Attivare il raggruppamento delle richieste lato server per TensorFlow

Se vuoi attivare il raggruppamento delle richieste per un Model che utilizza un container predefinito di TensorFlow per fornire le previsioni, includi config/batching_parameters_config nella stessa directory Cloud Storage del file saved_model.pb. Per configurare il file di configurazione del batching, consulta la documentazione ufficiale di TensorFlow.

PyTorch

Devi pacchettizzare gli elementi del modello, inclusi un gestore predefinito o personalizzato, creando un file di archivio utilizzando Torch Model Archiver. Le immagini PyTorch predefinite prevedono che l'archivio venga denominato model.mar, quindi assicurati di assicurati di impostare model-name su "model".

Per informazioni su come ottimizzare l'utilizzo della memoria, la latenza o la velocità effettiva di un il modello PyTorch fornito con TorchServe; consulta Guida al rendimento di PyTorch.

XGBoost

Se usi un container predefinito XGBoost per addestrare un modello, puoi esportarlo nei seguenti modi:

Il nome file dell'elemento del modello deve corrispondere esattamente a una di queste opzioni.

Gli esempi riportati di seguito mostrano come addestrare ed esportare un modello:

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)

Per generare le previsioni utilizzando questo elemento, crea un Model con il container predefinito per la previsione corrispondente alla versione di XGBoost utilizzata per l'addestramento.

scikit-learn

Se utilizzi un modello predefinito scikit-learn per addestrare un modello, puoi esportarlo nei seguenti modi:

Il nome file dell'artefatto del modello deve corrispondere esattamente a una di queste opzioni. Puoi esporta gli stimatori scikit-learn standard o scikit-learn pipeline di dati.

Gli esempi riportati di seguito mostrano come addestrare ed esportare un modello:

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)

sottaceti

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)

Per pubblicare previsioni utilizzando questo artefatto, crea un Model con container per la previsione che corrisponde alla versione di scikit-learn utilizzata per l'addestramento.

Passaggi successivi