Vertex AI offre container predefiniti per fornire previsioni 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ù elementi del modello conformi ai requisiti del contenitore predefinito. Questi requisiti si applicano indipendentemente dal fatto che gli elementi del modello siano stati creati o meno su Vertex AI.
Se utilizzi un contenitore personalizzato per pubblicare le previsioni, non devi rispettare i requisiti riportati in questa pagina, ma puoi comunque usarli 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 un modello, esportalo come directory SavedModel di TensorFlow.
Esistono diversi modi per esportare i SavedModel dal codice di addestramento di TensorFlow. Il seguente elenco descrive alcuni metodi che funzionano per varie API TensorFlow:
Se utilizzi Keras per l'addestramento, utilizza
tf.keras.Model.save
per esportare un SavedModel.Se utilizzi un estimatore per l'addestramento, utilizza
tf.estimator.Estimator.export_saved_model
per esportare un SavedModel.In caso contrario, utilizza
tf.saved_model.save
o utilizzatf.compat.v1.saved_model.SavedModelBuilder
.Se non utilizzi Keras o un estimatore, assicurati di utilizzare il tag
serve
e la firmaserving_default
quando esporti il tuo SavedModel per assicurarti che Vertex AI possa utilizzare gli elementi del tuo modello per generare previsioni. Keras ed Estimator gestiscono automaticamente questo compito. Scopri di più su come specificare le firme durante l'esportazione.
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 precompilate prevedono che l'archivio sia denominato model.mar
, quindi assicurati di impostare il nome del modello su "modello".
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 esportarlo nei seguenti modi:
- Utilizza il metodo
save_model
dixgboost.Booster
per esportare un file denominatomodel.bst
. - Utilizza la libreria
joblib
per esportare un file denominatomodel.joblib
. - Utilizza il modulo
pickle
di Python per esportare un file denominatomodel.pkl
.
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 artefatto, 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:
- Utilizza la libreria
joblib
per esportare un file denominatomodel.joblib
. - Utilizza il modulo
pickle
di Python per esportare un file denominatomodel.pkl
.
Il nome file dell'elemento del modello deve corrispondere esattamente a una di queste opzioni. Puoi esportare gli stimatori scikit-learn standard o le pipeline scikit-learn.
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)
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)
Per fornire le previsioni utilizzando questo elemento, crea un Model
con il container predefinito per la previsione corrispondente alla versione di scikit-learn utilizzata per l'addestramento.
Passaggi successivi
Scopri i requisiti aggiuntivi per il codice di addestramento che devi prendere in considerazione quando esegui l'addestramento personalizzato su Vertex AI.
Scopri come creare una risorsa
TrainingPipeline
personalizzata per eseguire il codice di addestramento personalizzato e creare unModel
dagli elementi del modello risultanti.Scopri come importare un
Model
dagli elementi del modello in Cloud Storage. Questo vale per gli elementi del modello che crei utilizzando una risorsaCustomJob
o una risorsaHyperparameterTuningJob
, nonché per gli elementi del modello che addestri al di fuori di Vertex AI.