Exporte artefactos de modelos para inferência e explicação

O Vertex AI oferece contentores pré-criados para apresentar inferências e explicações de modelos preparados com as seguintes frameworks de aprendizagem automática (ML):

  • TensorFlow
  • PyTorch
  • XGBoost
  • scikit-learn

Para usar um destes contentores pré-criados, tem de guardar o seu modelo como um ou mais artefactos do modelo que estejam em conformidade com os requisitos do contentor pré-criado. Estes requisitos aplicam-se independentemente de os artefactos do modelo serem criados no Vertex AI.

Se usar um contentor personalizado para publicar inferências, não tem de agir em conformidade com os requisitos nesta página, mas pode usá-los como diretrizes.

Requisitos específicos da framework para exportar para contentores pré-criados

Consoante a framework de AA que planeia usar para a inferência, tem de exportar os artefactos do modelo em formatos diferentes. As secções seguintes descrevem os formatos de modelos aceitáveis para cada framework de ML.

TensorFlow

Se usar o TensorFlow para preparar um modelo, exporte o modelo como um diretório TensorFlow SavedModel.

Existem várias formas de exportar SavedModels a partir do código de preparação do TensorFlow. A lista seguinte descreve algumas formas que funcionam para várias APIs TensorFlow:

Para publicar inferências com estes artefactos, crie um Model com o contentor pré-criado para inferência correspondente à versão do TensorFlow que usou para a preparação.

TensorFlow para o Vertex Explainable AI

Se quiser receber explicações de um Model que use um contentor pré-criado do TensorFlow para publicar inferências, leia os requisitos adicionais para exportar um modelo do TensorFlow para o Vertex Explainable AI.

Ative o processamento em lote de pedidos do lado do servidor para o TensorFlow

Se quiser ativar o processamento em lote de pedidos para um Model que use um contentor pré-criado do TensorFlow para publicar inferências, inclua config/batching_parameters_config no mesmo diretório do Cloud Storage que o ficheiro saved_model.pb. Para configurar o ficheiro de configuração de processamento em lote, consulte a documentação oficial do TensorFlow.

PyTorch

Tem de criar um pacote com os artefactos do modelo, incluindo um controlador predefinido ou personalizado. Para fluxos de trabalho de exportação e conversão mais avançados, por exemplo, se for necessário usar contentores personalizados, deve considerar usá-los. As imagens do PyTorch pré-criadas esperam que o arquivo se chame model.mar, por isso, certifique-se de que define o nome do modelo como "model".

Para informações sobre a otimização da utilização de memória, da latência ou da taxa de transferência de um modelo do PyTorch publicado com o TorchServe, consulte o guia de desempenho do PyTorch.

XGBoost

Se usar um contentor pré-criado do XGBoost para preparar um modelo, pode exportar o modelo preparado das seguintes formas:

O nome do ficheiro do artefacto do modelo tem de corresponder exatamente a uma destas opções.

Os exemplos seguintes mostram como preparar e exportar um 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 publicar inferências com este artefacto, crie um Model com o contentor pré-criado para inferência correspondente à versão do XGBoost que usou para a preparação.

scikit-learn

Se usar um scikit-learnmodelo pré-criado para preparar um modelo, pode exportá-lo usando a biblioteca para exportar um ficheiro denominado model.joblib.joblib

O nome do ficheiro do artefacto do modelo tem de corresponder exatamente a uma destas opções. Pode exportar estimativas padrão do scikit-learn ou pipelines do scikit-learn.

O exemplo seguinte mostra como preparar e exportar um 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 inferências com este artefacto, crie um Model com o contentor pré-criado para inferência que corresponda à versão do scikit-learn que usou para a preparação.

O que se segue?