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:
Se usar o Keras para a preparação, use
tf.keras.Model.save
para exportar um SavedModel.Se usar um Estimator para a preparação, 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 não estiver a usar o Keras ou um Estimator, certifique-se de que usa a etiqueta
serve
e a assinaturaserving_default
quando exporta o seu SavedModel para garantir que o Vertex AI pode usar os seus artefactos do modelo para publicar inferências. O Keras e o Estimator processam isto automaticamente. Saiba mais sobre como especificar assinaturas durante a exportação.
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:
- Use o método
xgboost.Booster
'ssave_model
para exportar um ficheiro denominadomodel.bst
. - Use a biblioteca
joblib
para exportar um ficheiro com o nomemodel.joblib
.
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-learn
modelo 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?
Leia acerca dos requisitos adicionais para o seu código de preparação que tem de considerar quando realizar a preparação personalizada na Vertex AI.
Saiba como criar um
TrainingPipeline
recurso personalizado para executar o seu código de programação personalizado e criar umModel
a partir dos artefactos do modelo resultantes.Saiba como importar um
Model
de artefactos de modelos no Cloud Storage. Isto aplica-se a artefactos de modelos que cria através de umCustomJob
recurso ou umHyperparameterTuningJob
recurso, bem como a artefactos de modelos que prepara fora da Vertex AI.