Vertex AI ofrece contenedores precompilados para ofrecer inferencias y explicaciones de modelos entrenados con los siguientes frameworks de aprendizaje automático:
- TensorFlow
- PyTorch
- XGBoost
- scikit‑learn
Para usar uno de estos contenedores precompilados, debes guardar tu modelo como uno o varios artefactos de modelo que cumplan los requisitos del contenedor precompilado. Estos requisitos se aplican tanto si los artefactos de tu modelo se crean en Vertex AI como si no.
Si usas un contenedor personalizado para servir inferencias, no tienes que cumplir los requisitos de esta página, pero puedes usarlos como directrices.
Requisitos específicos del framework para exportar a contenedores prediseñados
En función del framework de aprendizaje automático que quieras usar para la inferencia, debes exportar los artefactos del modelo en diferentes formatos. En las siguientes secciones se describen los formatos de modelo aceptables para cada framework de aprendizaje automático.
TensorFlow
Si usas TensorFlow para entrenar un modelo, exporta el modelo como un directorio SavedModel de TensorFlow.
Hay varias formas de exportar SavedModels desde el código de entrenamiento de TensorFlow. En la siguiente lista se describen algunas formas de trabajar con varias APIs de TensorFlow:
Si usas Keras para el entrenamiento, usa
tf.keras.Model.save
para exportar un SavedModel.Si usas un Estimator para el entrenamiento, usa
tf.estimator.Estimator.export_saved_model
para exportar un SavedModel.De lo contrario, use
tf.saved_model.save
o usetf.compat.v1.saved_model.SavedModelBuilder
.Si no usas Keras ni Estimator, asegúrate de usar la etiqueta
serve
y la firmaserving_default
al exportar tu SavedModel para que Vertex AI pueda usar los artefactos de tu modelo para ofrecer inferencias. Keras y Estimator se encargan de esto automáticamente. Más información sobre cómo especificar firmas durante la exportación
Para ofrecer inferencias con estos artefactos, crea un Model
con el contenedor precompilado para inferencias que coincida con la versión de TensorFlow que hayas usado para el entrenamiento.
TensorFlow para Vertex Explainable AI
Si quieres obtener explicaciones de un Model
que use un contenedor precompilado de TensorFlow para publicar inferencias, consulta los requisitos adicionales para exportar un modelo de TensorFlow para Vertex AI Explanations.
Habilitar el procesamiento por lotes de solicitudes del lado del servidor en TensorFlow
Si quieres habilitar el procesamiento por lotes de solicitudes para un Model
que use un contenedor prediseñado de TensorFlow para ofrecer inferencias, incluye config/batching_parameters_config en el mismo directorio de Cloud Storage que el archivo saved_model.pb
. Para configurar el archivo de configuración de procesamiento por lotes, consulta la documentación oficial de TensorFlow.
PyTorch
Debes empaquetar los artefactos del modelo, incluido un controlador predeterminado o personalizado, creando un archivo mediante Torch model archiver.
Las imágenes de PyTorch prediseñadas esperan que el archivo se llame model.mar
, así que asegúrate de que el nombre del modelo sea "model".
Para obtener información sobre cómo optimizar el uso de memoria, la latencia o el rendimiento de un modelo de PyTorch servido con TorchServe, consulta la guía de rendimiento de PyTorch.
XGBoost
Si usas un contenedor precompilado de XGBoost para entrenar un modelo, puedes exportarlo de las siguientes formas:
- Usa el método
save_model
dexgboost.Booster
para exportar un archivo llamadomodel.bst
. - Usa la biblioteca
joblib
para exportar un archivo llamadomodel.joblib
.
El nombre del archivo de tu artefacto de modelo debe coincidir exactamente con una de estas opciones.
En los siguientes ejemplos se muestra cómo entrenar y exportar un modelo:
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)
Para servir inferencias con este artefacto, crea un Model
con el contenedor precompilado para inferencias que coincida con la versión de XGBoost que has usado para el entrenamiento.
scikit‑learn
Si usas un modelo precompilado scikit-learn
para entrenar un modelo, puedes exportarlo
con la biblioteca joblib
para exportar un archivo llamado model.joblib
.
El nombre del archivo de tu artefacto de modelo debe coincidir exactamente con una de estas opciones. Puedes exportar estimadores estándar de scikit-learn o pipelines de scikit-learn.
En el siguiente ejemplo se muestra cómo entrenar y exportar un modelo:
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)
Para publicar inferencias con este artefacto, crea un Model
con el contenedor precompilado para inferencias
que coincida con la versión de scikit-learn que hayas usado para el entrenamiento.
Siguientes pasos
Consulta los requisitos adicionales para tu código de entrenamiento que debes tener en cuenta al realizar un entrenamiento personalizado en Vertex AI.
Consulta cómo crear un
TrainingPipeline
recurso personalizado para ejecutar tu código de entrenamiento personalizado y crear unModel
a partir de los artefactos del modelo resultante.Consulta cómo importar un
Model
de artefactos de modelo en Cloud Storage. Esto se aplica a los artefactos de modelo que crees con unCustomJob
recurso o unHyperparameterTuningJob
recurso, así como a los artefactos de modelo que entrenes fuera de Vertex AI.