Nesta página, descrevemos como usar o Vertex AI para exportar seu modelo tabular do AutoML para o Cloud Storage, fazer o download do modelo em um servidor local ou um servidor hospedado por outro provedor de nuvem e usar o Docker para deixar o modelo disponível para previsões.
Para informações sobre como exportar modelos do Edge e de imagens e vídeos, consulte Exportar modelos do AutoML Edge.
Depois de exportar o modelo tabular, se você quiser importá-lo novamente para o Vertex AI, consulte Importar modelos para o Vertex AI.
Limitações
A exportação de modelos tabulares do AutoML tem as seguintes limitações:
É possível exportar somente modelos de classificação e regressão tabulares do AutoML. Não há como exportar modelos de previsão tabular do AutoML.
O Explainable AI não está disponível usando modelos tabulares exportados. Se você precisar usar a Explainable AI, exiba previsões de um modelo hospedado pela Vertex AI.
O modelo tabular exportado só pode ser executado em CPUs de arquitetura x86 compatíveis com conjuntos de instruções Advanced Vector Extensions (AVX).
Processo de exportação
As etapas para a exportação do modelo são:
- Configure o ambiente.
- Exportar o modelo.
- Extrair e executar o servidor de modelo.
- Solicitar previsões.
Antes de começar
Antes de concluir esta tarefa, é preciso que você tenha concluído as seguintes tarefas:
- Configure o projeto conforme descrito em Como configurar o ambiente de nuvem.
- Treinar o modelo de que você quer fazer o download.
- Instale e inicialize a Google Cloud CLI no servidor que você usará para executar o modelo exportado.
- Instalar o Docker no seu servidor.
Exportar o modelo
Console
No Console do Google Cloud, na seção da Vertex AI, acesse a página Modelos.
Clique no modelo tabular que você quer exportar para abrir a página de detalhes.
Clique em Exportar na barra de botões para exportar o modelo.
Selecione ou crie uma pasta do Cloud Storage no local desejado.
O bucket precisa atender aos requisitos de bucket.
Não é possível exportar um modelo para um bucket de nível superior. Você precisa usar pelo menos um nível de pasta.
Para melhores resultados, crie uma nova pasta vazia. Você copiará todo o conteúdo da pasta.
Clique em Exportar.
Você fará o download do modelo exportado para seu servidor na próxima seção.
REST
Você usa o método models.export para exportar um modelo para o Cloud Storage.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: sua região.
- PROJECT: o ID do projeto.
- MODEL_ID: o ID do modelo que você quer exportar.
-
GCS_DESTINATION: a pasta de destino no Cloud Storage. Por exemplo,
gs://export-bucket/exports
.Não é possível exportar um modelo para um bucket de nível superior. Você precisa usar pelo menos um nível de pasta.
A pasta precisa estar em conformidade com os requisitos de bucket.
Para melhores resultados, crie uma nova pasta. Você copiará todo o conteúdo da pasta.
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export
Corpo JSON da solicitação:
{ "outputConfig": { "exportFormatId": "tf-saved-model", "artifactDestination": { "outputUriPrefix": "GCS_DESTINATION" } } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/models/MODEL_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.ExportModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-12T20:53:40.130785Z", "updateTime": "2020-10-12T20:53:40.130785Z" }, "outputInfo": { "artifactOutputUri": "gs://OUTPUT_BUCKET/model-MODEL_ID/EXPORT_FORMAT/YYYY-MM-DDThh:mm:ss.sssZ" } } }
Java
Antes de testar esse exemplo, siga as instruções de configuração para Java no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar essa amostra, siga as instruções de configuração para Node.js Guia de início rápido da Vertex AI: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Ver o status de uma operação de exportação
Algumas solicitações iniciam operações de longa duração que exigem tempo para serem concluídas. Essas solicitações retornam um nome de operação, que pode ser usado para ver o status da operação ou cancelá-la. A Vertex AI oferece métodos auxiliares para realizar chamadas em operações de longa duração. Para mais informações, consulte Como trabalhar com operações de longa duração.
Extrair e executar o servidor de modelo
Nesta tarefa, você fará o download do modelo exportado do Cloud Storage e iniciará o contêiner do Docker para que seu modelo esteja pronto para receber solicitações de previsão.
Para extrair e executar o servidor de modelo:
Na máquina que você executará o modelo, mude para o diretório em que você quer salvar o modelo exportado.
Faça o download do modelo exportado:
gsutil cp -r <var>gcs-destination</var> .
Em que gcs-destination é o caminho para o local do modelo exportado no Cloud Storage.
O modelo é copiado para o diretório atual, no seguinte caminho:
./model-<model-id>/tf-saved-model/<export-timestamp>
O caminho pode conter
tf-saved-model
oucustom-trained
.Renomeie o diretório para que o carimbo de data/hora seja removido.
mv model-<model-id>/tf-saved-model/<export-timestamp> model-<model-id>/tf-saved-model/<new-dir-name>
O carimbo de data/hora torna o diretório inválido para o Docker.
Extraia a imagem Docker do servidor de modelo.
sudo docker pull MODEL_SERVER_IMAGE
A imagem do servidor de modelo a ser extraída está localizada no arquivo
environment.json
no diretório do modelo exportado. Ele precisa ter o seguinte caminho:./model-<model-id>/tf-saved-model/<new-dir-name>/environment.json
Se nenhum arquivoenvironment.json estiver presente, use:
MULTI_REGION-docker.pkg.dev/vertex-ai/automl-tabular/prediction-server-v1
Substitua
MULTI_REGION
porus
,europe
ouasia
para selecionar de qual repositório do Docker você quer extrair a imagem do Docker. Cada repositório fornece a mesma imagem do Docker, mas escolher a multirregião do Artifact Registry mais próxima da máquina em que você está executando o Docker pode reduzir a latência.Inicie o contêiner do Docker usando o nome do diretório que você acabou de criar:
docker run -v `pwd`/model-<model-id>/tf-saved-model/<new-dir-name>:/models/default -p 8080:8080 -it MODEL_SERVER_IMAGE
É possível parar o servidor de modelo a qualquer momento, basta usar Ctrl-C
.
Atualizar o contêiner do Docker do servidor de modelos
Como você faz o download do contêiner do servidor do modelo ao exportar o modelo, é necessário atualizar explicitamente o servidor do modelo para receber atualizações e correções de bugs. Atualize o servidor de modelos periodicamente usando o seguinte comando:
docker pull MODEL_SERVER_IMAGE
Verifique se o URI da imagem do Docker corresponde ao URI da imagem do Docker que você extraiu anteriormente.
Receber previsões do modelo exportado
O servidor de modelo no contêiner de imagem da Vertex AI lida com solicitações de previsão e retorna resultados de previsão.
A previsão em lote não está disponível para modelos exportados.
Formato de dados de previsão
Você fornece os dados (campo payload
) para sua solicitação de previsão no
seguinte formato JSON:
{ "instances": [ { "column_name_1": value, "column_name_2": value, … } , … ] }
O exemplo a seguir mostra uma solicitação com três colunas: uma coluna categórica, uma matriz numérica e uma struct. A solicitação inclui duas linhas.
{ "instances": [ { "categorical_col": "mouse", "num_array_col": [ 1, 2, 3 ], "struct_col": { "foo": "piano", "bar": "2019-05-17T23:56:09.05Z" } }, { "categorical_col": "dog", "num_array_col": [ 5, 6, 7 ], "struct_col": { "foo": "guitar", "bar": "2019-06-17T23:56:09.05Z" } } ] }
Fazer a solicitação de previsão
Coloque os dados da solicitação em um arquivo de texto, por exemplo,
tmp/request.json
.O número de linhas de dados na solicitação de previsão, chamado de tamanho de minilote, afeta a latência de previsão e a capacidade. Quanto maior o tamanho do minilote, maior a latência e a capacidade. Para reduzir a latência, use um minilote menor. Para maior capacidade, aumente o tamanho do minilote. Os tamanhos de minilote mais usados são 1, 32, 64, 128, 256, 512 e 1024.
Solicite a previsão:
curl -X POST --data @/tmp/request.json http://localhost:8080/predict
Formato dos resultados de previsão
O formato dos resultados depende do objetivo do seu modelo.
Resultados do modelo de classificação
Os resultados de previsão para modelos de classificação (binários e multiclasses) retornam uma pontuação de probabilidade para cada valor potencial da coluna de destino. Você precisa determinar como quer usar as pontuações. Por exemplo, para receber uma classificação binária a partir das pontuações fornecidas, você identificaria um valor limite. Se houver duas classes, "A" e "B", classifique o exemplo como "A" se a pontuação de "A" for maior que o limite escolhido, e como "B" se for menor. Em conjuntos de dados desequilibrados, o limite pode se aproximar de 100% ou de 0%.
O payload de resultados de um modelo de classificação é semelhante a este exemplo:
{ "predictions": [ { "scores": [ 0.539999994635582, 0.2599999845027924, 0.2000000208627896 ], "classes": [ "apple", "orange", "grape" ] }, { "scores": [ 0.23999999463558197, 0.35999998450279236, 0.40000002086278963 ], "classes": [ "apple", "orange", "grape" ] } ] }
Resultados do modelo de regressão
Um valor previsto é retornado para cada linha válida da solicitação de previsão. Os intervalos de previsão não são retornados para modelos exportados.
O payload de resultados de um modelo de regressão é semelhante a este exemplo:
{ "predictions": [ { "value": -304.3663330078125, "lower_bound": -56.32196807861328, "upper_bound": 126.51904296875 }, { "value": -112.3663330078125, "lower_bound": 16.32196807861328, "upper_bound": 255.51904296875 } ] }
A seguir