Vertex AI ofrece contenedores precompilados para entregar inferencias y explicaciones de modelos entrenados con los siguientes frameworks de aprendizaje automático (AA):
- TensorFlow
- PyTorch
- XGBoost
- scikit-learn
Para usar uno de estos contenedores precompilados, debes guardar el modelo como uno o más artefactos del modelo que cumplan con los requisitos del contenedor precompilado. Estos requisitos se aplican sin importar si los artefactos del modelo se crean en Vertex AI o no.
Si usas un contenedor personalizado para entregar inferencias, no necesitas cumplir con los requisitos de esta página, pero puedes usarlos como lineamientos.
Requisitos específicos del framework para exportar a contenedores compilados previamente
Según el framework de AA que desees usar para la inferencia, debes exportar artefactos de modelo en diferentes formatos. En las siguientes secciones, se describen los formatos de modelo aceptables para cada framework de AA.
TensorFlow
Si usas TensorFlow para entrenar un modelo, exporta el modelo como un directorio de modelos guardados de TensorFlow.
Hay varias maneras de exportar modelos guardados desde el código de entrenamiento de TensorFlow. En la siguiente lista, se describen algunas opciones que funcionan para varias APIs de TensorFlow:
Si usas Keras para el entrenamiento, usa
tf.keras.Model.savepara exportar un modelo guardado.Si usas un Estimador para el entrenamiento, usa
tf.estimator.Estimator.export_saved_modela fin de exportar un modelo guardado.De lo contrario, usa
tf.saved_model.saveotf.compat.v1.saved_model.SavedModelBuilder.Si no usas Keras ni un Estimador, asegúrate de usar la etiqueta
servey la firmaserving_defaultcuando exportes tu modelo guardado para asegurarte de que Vertex AI puede usar tus artefactos de modelo para entregar inferencias. Keras y Estimador controlan esto automáticamente. Obtén más información sobre la especificación de firmas durante la exportación.
Para entregar inferencias con estos artefactos, crea un Model con el contenedor compilado previamente para la inferencia que coincida con la versión de TensorFlow que usaste en el entrenamiento.
TensorFlow para Vertex Explainable AI
Si deseas obtener explicaciones de un Model que usa un contenedor compilado con anterioridad de TensorFlow para entregar inferencias, lee los requisitos adicionales para exportar un modelo de TensorFlow para Vertex Explainable AI.
Habilita el procesamiento por lotes de solicitudes del servidor para TensorFlow
Si deseas habilitar el procesamiento por lotes de solicitudes para un Model que use un contenedor compilado con anterioridad de TensorFlow para entregar inferencias, incluye el archivo 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. Para flujos de trabajo de exportación y conversión más avanzados, por ejemplo, si es necesario usar contenedores personalizados, debes considerar usar contenedores personalizados.
Las imágenes de PyTorch compiladas con anterioridad esperan que el archivo se llame model.mar, así que asegúrate de establecer el nombre del modelo como “model”.
Para obtener información sobre cómo optimizar el uso de memoria, la latencia o la capacidad de procesamiento de un modelo de PyTorch entregado con TorchServe, consulta la Guía de rendimiento de PyTorch.
XGBoost
Si usas un contenedor compilado previamente de XGBoost para entrenar un modelo, puedes exportar el modelo entrenado de las siguientes maneras:
- Usa el método
save_modeldexgboost.Boosterpara exportar un archivo llamadomodel.bst. - Usa la biblioteca
joblibpara exportar un archivo llamadomodel.joblib.
El nombre de archivo del artefacto del modelo debe coincidir 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 entregar inferencias con este artefacto, crea un Model con el contenedor compilado previamente para la inferencia que coincida con la versión de XGBoost que usaste en el entrenamiento.
scikit-learn
Si usas un modelo prediseñado de scikit-learn para entrenar un modelo, puedes exportarlo con la biblioteca joblib para exportar un archivo llamado model.joblib.
El nombre de archivo del artefacto del modelo debe coincidir con una de estas opciones. Puedes exportar estimadores estándar de scikit-learn o canalizaciones 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 entregar inferencias con este artefacto, crea un Model con el contenedor compilado previamente para la inferencia que coincida con la versión de scikit-learn que usaste en el entrenamiento.
¿Qué sigue?
Lee sobre los requisitos adicionales para tu código de entrenamiento que debes tener en cuenta cuando realices el entrenamiento personalizado en Vertex AI.
Obtén más información sobre cómo crear un recurso
TrainingPipelinepersonalizado para ejecutar tu código de entrenamiento personalizado y crear unModela partir de los artefactos del modelo resultantes.Aprende a importar un
Modelde los artefactos de modelo en Cloud Storage. Esto se aplica a los artefactos de modelo que creaste con un recursoCustomJoboHyperparameterTuningJoby a los artefactos de modelo que entrenas fuera de Vertex AI.