Gemini Enterprise Agent Platform 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 container predefiniti, devi salvare il modello come uno o più artefatti del modello conformi ai requisiti del container predefinito. Questi requisiti si applicano indipendentemente dal fatto che gli artefatti del modello siano creati o meno su Agent Platform.
Se utilizzi un container personalizzato per fornire inferenze, non devi rispettare i requisiti indicati in questa pagina, ma puoi comunque utilizzare li 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 di TensorFlow. L'elenco seguente descrive alcuni modi che funzionano per varie API TensorFlow:
Se utilizzi Keras per l'addestramento, usa
tf.keras.Model.saveper esportare un SavedModel.Se utilizzi un Estimator per l'addestramento, usa
tf.estimator.Estimator.export_saved_modelper esportare un SavedModel.In caso contrario, usa
tf.saved_model.saveo usatf.compat.v1.saved_model.SavedModelBuilder.Se non utilizzi Keras o un Estimator, assicurati di utilizzare il
servetag eserving_defaultsignature quando esporti il tuo SavedModel per assicurarti che Agent Platform possa utilizzare i tuoi artefatti del modello per erogare inferenze. Keras ed Estimator gestiscono questa operazione automaticamente. Scopri di più sulla specifica delle firme durante l'esportazione.
Per fornire 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 di 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 di TensorFlow per erogare 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 in un file di archivio del modello (.mar).
Questo archivio deve includere uno script di gestione, predefinito o
personalizzato, che
definisce il modo in cui il modello elabora le richieste di inferenza. Per flussi di lavoro più avanzati, ti consigliamo di utilizzare container personalizzati anziché affidarti all'immagine di serving PyTorch predefinita.
Le immagini PyTorch predefinite prevedono che l'archivio sia denominato model.mar, quindi assicurati di impostare il nome del modello su "model" quando crei l'archivio.
Per informazioni sull'ottimizzazione della memoria utilizzata, della latenza o del throughput di un modello PyTorch fornito 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:
- Utilizza il metodo
save_modeldixgboost.Booster's per esportare un file denominatomodel.bst. - Utilizza la
jobliblibreria per esportare un file denominatomodel.joblib.
Il nome file dell'artefatto del modello deve corrispondere esattamente a una di queste opzioni.
Gli esempi seguenti 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 fornire 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 gli Estimator standard di scikit-learn o le pipeline di scikit-learn.
L'esempio seguente 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 fornire inferenze utilizzando questo artefatto, crea un Model con il predefinito
container per l'inferenza
corrispondente alla versione di scikit-learn che hai utilizzato per l'addestramento.
Passaggi successivi
Leggi ulteriori informazioni sui requisiti aggiuntivi per il codice di addestramento che devi considerare quando esegui l'addestramento serverless su Agent Platform.
Scopri come creare una risorsa
TrainingPipelinepersonalizzata per eseguire il codice di addestramento personalizzato e creare unModeldagli artefatti del modello risultanti.Scopri come importare un
Modeldagli artefatti del modello in Cloud Storage. Questo vale per gli artefatti del modello che crei utilizzando unaCustomJobrisorsa o unaHyperparameterTuningJobrisorsa, nonché per gli artefatti del modello addestrati al di fuori di Agent Platform.