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:
Se você usar o Keras para treinamento, use
tf.keras.Model.save
para exportar um SavedModel.Se você usar um Estimator para treinamento, use
tf.estimator.Estimator.export_saved_model
para exportar um SavedModel.Caso contrário, use
tf.saved_model.save
ou usetf.compat.v1.saved_model.SavedModelBuilder
.Se você não usar o Keras ou um Estimator, utilize a tag
serve
e a assinaturaserving_default
ao exportar o SavedModel para garantir que a Vertex AI possa fazer uso dos artefatos do modelo para exibir predições. Keras e Estimator processam isso automaticamente. Saiba mais sobre como especificar assinaturas durante a exportação.
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:
- Use o método
save_model
dexgboost.Booster
para exportar um arquivo chamadomodel.bst
. - Use a biblioteca
joblib
para exportar um arquivo chamadomodel.joblib
. - Use o módulo
pickle
do Python para exportar um arquivo chamadomodel.pkl
.
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:
- Use a biblioteca
joblib
para exportar um arquivo chamadomodel.joblib
. - Use o módulo
pickle
do Python para exportar um arquivo chamadomodel.pkl
.
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
Leia sobre outros requisitos para o código de treinamento que você precisa considerar ao executar o treinamento personalizado no Vertex AI.
Saiba como criar um recurso
TrainingPipeline
personalizado para executar o código de treinamento personalizado e criar umModel
com os artefatos de modelo resultantes.Saiba como importar um
Model
de artefatos de modelo no Cloud Storage. Isso se aplica aos artefatos de modelo que você cria usando um recursoCustomJob
ou um recursoHyperparameterTuningJob
, bem como artefatos de modelo treinados fora da Vertex AI.