Exportar artefatos de modelo para inferência e explicação

A Vertex AI oferece contêineres pré-criados para exibir inferências e explicações de modelos treinados com os seguintes frameworks de machine learning (ML):

  • TensorFlow
  • PyTorch
  • XGBoost
  • scikit-learn

Para usar um desses contêineres predefinidos, salve seu modelo como um ou mais artefatos de modelo que atendam aos requisitos do contêiner pré-criado. Esses requisitos se aplicam, independentemente de os artefatos do modelo serem criados na Vertex AI.

Se você usar um contêiner personalizado para exibir inferências, não precisa atender aos requisitos desta página, mas ainda pode usá-los como diretrizes.

Requisitos específicos do framework para exportar para contêineres pré-criados

Dependendo de qual framework de ML você pretende usar para inferência, exporte artefatos de modelo em formatos diferentes. As seções a seguir descrevem os formatos de modelo aceitáveis para cada framework de ML.

TensorFlow

Se você usar o TensorFlow para treinar um modelo, exporte-o como um diretório TensorFlow SavedModel.

Há várias maneiras de exportar SavedModels do código de treinamento do TensorFlow. Na lista a seguir, você verá algumas maneiras diferentes que funcionam para várias APIs TensorFlow:

Para exibir inferências usando esses artefatos, crie um Model com o contêiner pré-criado para inferência correspondente à versão do TensorFlow que você usou para treinamento.

TensorFlow para Vertex Explainable AI

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

Ativar o agrupamento de solicitações do lado do servidor para o Tensorflow

Se você quiser ativar o envio de solicitações em lote para um Model que usa um contêiner predefinido do TensorFlow para exibir inferências, inclua config/batching_parameters_config no mesmo diretório do Cloud Storage em que está o arquivo saved_model.pb. Para definir o arquivo de configuração de agrupamento, consulte a documentação oficial do TensorFlow.

PyTorch

Você precisa empacotar os artefatos do modelo, incluindo um gerenciador padrão ou personalizado criando um arquivo com o arquivador de modelos do Torch. As imagens do PyTorch pré-criadas esperam que o arquivo seja nomeado como model.mar, portanto, defina o nome do modelo como "model".

Para informações sobre a otimização do uso de memória, a latência ou a capacidade de processamento de um modelo do PyTorch fornecido com o TorchServe, consulte o Guia de desempenho do PyTorch.

XGBoost

Se você usa um contêiner predefinido do XGBoost para treinar modelos, pode exportá-los das seguintes maneiras:

O nome de arquivo do artefato de modelo precisa corresponder exatamente a uma dessas opções.

Confira estes exemplos para saber como treinar 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 exibir inferências usando esse artefato, crie um Model com o contêiner pré-criado para inferência que corresponda à versão do XGBoost que você usou para treinamento.

scikit-learn

Se você usa um modelo predefinido scikit-learn para treinar um modelo, pode exportá-lo usando a biblioteca joblib para exportar um arquivo chamado model.joblib.

O nome de arquivo do artefato de modelo precisa corresponder exatamente a uma dessas opções. É possível exportar estimators scikit-learn ou pipelines do scikit-learn padrão.

Confira o exemplo a seguir para saber como treinar 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 exibir inferências usando esse artefato, crie um Model com o contêiner pré-criado para inferência que corresponda à versão do scikit-learn que você usou para treinamento.

A seguir