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 container predefiniti, devi salvare il modello come uno o più artefatto del modello che soddisfino i requisiti del container predefinito. Questi requisiti si applicano indipendentemente dal fatto che gli artefatti del modello siano stati creati su Vertex AI.
Se utilizzi un container personalizzato per pubblicare le previsioni, non devi soddisfare i requisiti riportati 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 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, esporta il modello come directory SavedModel di TensorFlow.
Esistono diversi modi per esportare SavedModels dal codice di addestramento TensorFlow. Di seguito sono elencati alcuni metodi che funzionano con le varie API TensorFlow:
Se utilizzi Keras per l'addestramento, utilizza
tf.keras.Model.save
per esportare un SavedModel.Se utilizzi uno strumento per la stima per l'addestramento, utilizza
tf.estimator.Estimator.export_saved_model
per esportare un modello SavedModel.In caso contrario, usa
tf.saved_model.save
o usatf.compat.v1.saved_model.SavedModelBuilder
.Se non utilizzi Keras o uno strumento per la stima, assicurati di utilizzare il tag
serve
e la firmaserving_default
quando esporti il SaveModel al fine di garantire che Vertex AI possa utilizzare gli artefatti del modello per fornire previsioni. Keras e Estimator si occupano di tutto questo automaticamente. Scopri di più su come specificare le firme durante l'esportazione.
Per fornire previsioni utilizzando questi artefatti, crea un elemento Model
con il container predefinito per le previsioni corrispondente alla versione di TensorFlow utilizzata per l'addestramento.
TensorFlow per Vertex Explainable AI
Se vuoi ottenere spiegazioni da un Model
che utilizza un container TensorFlow predefinito per fornire previsioni, leggi i requisiti aggiuntivi per l'esportazione di un modello TensorFlow per Vertex Explainable AI.
Abilita il batch di richieste lato server per TensorFlow
Se vuoi abilitare il raggruppamento in batch delle richieste per un Model
che utilizza un container TensorFlow predefinito per fornire previsioni, includi config/batching_parameters_config nella stessa directory Cloud Storage del file saved_model.pb
. Per configurare il file di configurazione per la creazione in 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 tramite
l'archiviazione dei modelli di Torch.
Le immagini PyTorch predefinite prevedono che l'archivio venga denominato model.mar
, quindi assicurati di impostare il nome del modello su "modello".
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 un container predefinito XGBoost per addestrare un modello, puoi esportare il modello addestrato 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
. - Usa il modulo
pickle
di Python per esportare un file denominatomodel.pkl
.
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)
sottaceti
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 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
. - Usa il modulo
pickle
di Python per esportare un file denominatomodel.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 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 fornire previsioni utilizzando questo artefatto, crea un Model
con il container predefinito per la previsione che corrisponde alla versione di scikit-learn che hai utilizzato per l'addestramento.
Passaggi successivi
Leggi 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 un elementoModel
dagli artefatti del modello risultanti.Scopri come importare
Model
dagli artefatti del modello in Cloud Storage. Questo vale per gli artefatti del modello che crei utilizzando una risorsaCustomJob
o una risorsaHyperparameterTuningJob
, nonché per gli artefatti del modello che addestri al di fuori di Vertex AI.