Exportar artefactos de modelos para inferencias y explicaciones

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:

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:

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