Esportare gli artefatti del modello per l'inferenza e la spiegazione

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

  • TensorFlow
  • PyTorch
  • XGBoost
  • scikit-learn

Per utilizzare uno di questi contenitori predefiniti, devi salvare il modello come uno o più artefatti del modello che rispettino i requisiti del contenitore predefinito. Questi requisiti si applicano indipendentemente dal fatto che gli artefatti del modello siano creati su Vertex AI.

Se utilizzi un contenitore personalizzato per pubblicare inferenze, non devi rispettare i requisiti indicati in questa pagina, ma puoi comunque utilizzarli come linee guida.

Requisiti specifici del framework per l'esportazione in container predefiniti

A seconda del framework ML che prevedi di utilizzare per l'inferenza, devi esportare gli artefatti del modello in formati diversi. Le sezioni seguenti descrivono i formati di modello accettabili per ogni framework ML.

TensorFlow

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

Esistono diversi modi per esportare SavedModel dal codice di addestramento TensorFlow. L'elenco seguente descrive alcuni modi che funzionano per varie API TensorFlow:

Per pubblicare inferenze utilizzando questi artefatti, crea un Model con il container predefinito per l'inferenza corrispondente alla versione di TensorFlow che hai utilizzato per l'addestramento.

TensorFlow per Vertex Explainable AI

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

Attiva il batching delle richieste lato server per TensorFlow

Se vuoi attivare il batching delle richieste per un Model che utilizza un container predefinito TensorFlow per pubblicare inferenze, 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 comprimere gli artefatti del modello includendo un gestore predefinito o personalizzato. Per flussi di lavoro di esportazione e conversione più avanzati, ad esempio se è necessario utilizzare container personalizzati, ti consigliamo di utilizzare container personalizzati. 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 del throughput di un modello PyTorch pubblicato con TorchServe, consulta la Guida al rendimento di PyTorch.

XGBoost

Se utilizzi un container predefinito XGBoost per addestrare un modello, puoi esportare il modello addestrato nei seguenti modi:

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

I seguenti esempi 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)

Per pubblicare inferenze utilizzando questo artefatto, crea un Model con il container predefinito per l'inferenza corrispondente alla versione di XGBoost che hai utilizzato per l'addestramento.

scikit-learn

Se utilizzi un modello predefinito scikit-learn per addestrare un modello, puoi esportarlo utilizzando la libreria joblib per esportare un file denominato model.joblib.

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.

Il seguente esempio mostra 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)

Per pubblicare inferenze utilizzando questo artefatto, crea un Model con il container predefinito per l'inferenza corrispondente alla versione di scikit-learn che hai utilizzato per l'addestramento.

Passaggi successivi