Esporta gli artefatti del modello per previsioni e spiegazioni

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

  • TensorFlow
  • PyTorch
  • XGBoost
  • scikit-learn

Per utilizzare uno di questi container predefiniti, devi salvare il modello come uno o più elementi del modello conformi ai requisiti del container predefinito. Questi requisiti si applicano indipendentemente dal fatto che gli artefatti del modello vengano creati o meno su Vertex AI.

Se vuoi utilizzare un container personalizzato per pubblicare le previsioni, non devi soddisfare i requisiti di questa pagina, ma puoi comunque utilizzarlo come linee guida.

Requisiti specifici del framework per l'esportazione in container predefiniti

A seconda del framework ML che intendi utilizzare per la previsione, devi esportare gli artefatti del modello in formati diversi. Le seguenti sezioni descrivono i formati dei modelli accettabili per ogni framework ML.

TensorFlow

Se utilizzi TensorFlow per addestrare un modello, esportalo come directory savedModel di TensorFlow.

Esistono diversi modi per esportare SaveModel dal codice di addestramento TensorFlow. Di seguito sono descritti alcuni modi in cui è possibile utilizzare le varie API TensorFlow:

Per fornire previsioni con questi artefatti, crea un elemento Model con il container predefinito per la previsione corrispondente alla versione di TensorFlow che hai utilizzato per l'addestramento.

TensorFlow per Vertex Explainable AI

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

Abilita il raggruppamento delle richieste lato server per Tensorflow

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

PyTorch

Devi pacchettizzare gli artefatti del modello, incluso un gestore predefinito o personalizzato, creando un file di archivio utilizzando Archiviazione dei modelli Torch. Le immagini PyTorch predefinite prevedono che l'archivio sia denominato model.mar, quindi assicurati di impostare il nome del modello su "model".

Per informazioni sull'ottimizzazione dell'utilizzo della memoria, della latenza o della velocità effettiva di un modello PyTorch fornito con TorchServe, consulta la guida alle prestazioni di PyTorch.

XGBoost

Se utilizzi XGBoost per addestrare un modello, puoi esportare il modello addestrato in uno dei tre modi seguenti:

  • Usa il metodo save_model di xgboost.Booster per esportare un file denominato model.bst.
  • Usa la libreria joblib per esportare un file denominato model.joblib.
  • Usa il modulo pickle di Python per esportare un file denominato model.pkl.

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

I seguenti esempi a schede mostrano come addestrare ed esportare un modello in ognuno dei tre modi:

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)

cetriolo

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 fornire previsioni utilizzando questo artefatto, crea un elemento Model con il container predefinito per la previsione corrispondente alla versione di XGBoost che hai utilizzato per l'addestramento.

scikit-learn

Se utilizzi scikit-learn per addestrare un modello, puoi esportarlo in due modi:

  • Usa la libreria joblib per esportare un file denominato model.joblib.
  • Usa il modulo pickle di Python per esportare un file denominato model.pkl.

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

I seguenti esempi a schede mostrano come addestrare ed esportare un modello in ognuno dei due modi:

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)

cetriolo

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 fornire previsioni con questo artefatto, crea un elemento Model con il container predefinito per la previsione corrispondente alla versione di scikit-learn che hai utilizzato per l'addestramento.

Passaggi successivi