Exportar artefatos do modelo para previsão e explicação

A Vertex AI oferece contêineres pré-criados para exibir previsões 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.

Para usar um contêiner personalizado e exibir previsões, você 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 previsão, 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 previsões usando esses artefatos, crie um Model com o contêiner pré-criado para previsão 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 predefinido do TensorFlow para exibir previsões, leia os requisitos adicionais ao 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 agrupamento de solicitações para um Model que usa um contêiner predefinido do TensorFlow para exibir previsões, 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)

pickle

import os
import pickle

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.pkl'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
with open(local_path, 'wb') as model_file:
  pickle.dump(bst, model_file)

# 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 previsões usando esse artefato, crie um Model com o contêiner pré-criado para previsão que corresponda à versão do XGBoost que você usou para treinamento.

scikit-learn

Se você usa um modelo predefinido scikit-learn 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. É possível exportar estimators scikit-learn ou pipelines do scikit-learn padrão.

Confira estes exemplos 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)

pickle

import os
import pickle

from google.cloud import storage
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

digits = datasets.load_digits()
classifier = RandomForestClassifier()
classifier.fit(digits.data, digits.target)

artifact_filename = 'model.pkl'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
with open(local_path, 'wb') as model_file:
  pickle.dump(classifier, model_file)

# 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 previsões usando esse artefato, crie um Model com o contêiner pré-criado para previsão que corresponda à versão do scikit-learn que você usou para treinamento.

A seguir