Para personalizar a maneira como a Vertex AI exibe previsões on-line do
seu modelo treinado de forma personalizada, especifique um contêiner personalizado em vez de um contêiner
pré-criado ao criar um
recurso Model
. Quando você usa um contêiner personalizado, a Vertex AI executa um contêiner do Docker de sua escolha em cada nó de previsão.
Convém usar um contêiner personalizado por um dos seguintes motivos:
- para exibir previsões de um modelo de ML treinado usando um framework que não está disponível como um contêiner pré-criado.
- para pré-processar solicitações de previsão ou pós-processar as previsões geradas pelo modelo;
- para executar um servidor de previsão escrito em uma linguagem de programação de sua escolha;
- para instalar as dependências que você quer usar para personalizar a previsão.
Neste guia, descrevemos como criar um modelo que usa um contêiner personalizado. Ele não fornece instruções detalhadas sobre como projetar e criar uma imagem de contêiner do Docker.
Preparar uma imagem de contêiner
Para criar um Model
que usa um contêiner personalizado, forneça uma
imagem de contêiner do Docker para ser a base do contêiner. Essa imagem de contêiner precisa
atender aos requisitos descritos em Requisitos personalizados
do contêiner.
Se você planeja usar uma imagem de contêiner atual criada por terceiros em quem confia, é possível pular uma ou as duas seções a seguir.
Crie uma imagem de contêiner
Projete e crie uma imagem de contêiner do Docker que atenda aos requisitos de imagem de contêiner.
Para aprender os princípios básicos de como projetar e criar uma imagem de contêiner do Docker, leia o guia de início rápido da documentação do Docker.
Envie a imagem do contêiner para o Artifact Registry
Envie a imagem do contêiner para um repositório do Artifact Registry.
Saiba como enviar uma imagem de contêiner para o Artifact Registry.
Criar um Model
Para criar um Model
que usa um contêiner personalizado, siga um destes procedimentos:
Nas seções a seguir, mostramos como configurar os campos da API relacionados a contêineres
personalizados durante a criação de um Model
.
Campos da API relacionados ao contêiner
Ao criar o Model
, configure o campo
containerSpec
com os
detalhes do seu contêiner personalizado, em vez de usar um contêiner
pré-criado.
Você precisa especificar uma
mensagem ModelContainerSpec
no
campo Model.containerSpec
. Nessa mensagem, é possível especificar os
subcampos a seguir:
imageUri
(obrigatório)O URI do Artifact Registry da imagem do seu contêiner.
Se você estiver usando o comando
gcloud ai models upload
, use a flag--container-image-uri
para especificar esse campo.command
(opcional)Uma matriz de um executável e argumentos para substituir a instrução
ENTRYPOINT
do contêiner. Para saber mais sobre como formatar este campo e como ele interage com o campoargs
, leia a referência da API sobreModelContainerSpec
.Se você estiver usando o comando
gcloud ai models upload
, use a flag--container-command
para especificar esse campo.args
(opcional)Uma matriz de um executável e argumentos para modificar o
CMD
do contêiner. Para saber mais sobre como formatar este campo e como ele interage com o campocommand
, leia a referência da API paraModelContainerSpec
.Se você estiver usando o comando
gcloud ai models upload
, use a flag--container-args
para especificar esse campo.ports
(opcional)Uma matriz de portas: a Vertex AI envia verificações de atividade e de integridade e solicitações de previsão ao seu contêiner na primeira porta listada ou na porta
8080
por padrão. A especificação de portas extras não tem efeito.Se você estiver usando o comando
gcloud ai models upload
, use a flag--container-ports
para especificar esse campo.env
(opcional)Uma matriz de variáveis de ambiente que a instrução
ENTRYPOINT
do contêiner e os camposcommand
eargs
podem referenciar. Para saber mais sobre como outros campos podem referenciar essas variáveis de ambiente, leia a referência da API paraModelContainerSpec
.Se você estiver usando o comando
gcloud ai models upload
, use a flag--container-env-vars
para especificar esse campo.healthRoute
(opcional)O caminho no servidor HTTP do contêiner em que você quer que a Vertex AI envie verificações de integridade.
Se você não especificar esse campo, então quando implantar o
Model
como umDeployedModel
para um atributoEndpoint
, o padrão será definido como/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL
, em que ENDPOINT é substituído pelo último segmento do camponame
doEndpoint
(apósendpoints/
), e DEPLOYED_MODEL é substituído pelo campoid
doDeployedModel
.Se você estiver usando o comando
gcloud ai models upload
, use a flag--container-health-route
para especificar esse campo.predictRoute
(opcional)O caminho no servidor HTTP do contêiner em que você quer que a Vertex AI encaminhe solicitações de previsão.
Se você não especificar esse campo, então quando implantar o
Model
como umDeployedModel
para um atributoEndpoint
, o padrão será definido como/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL:predict
, em que ENDPOINT é substituído pelo último segmento do camponame
doEndpoint
(apósendpoints/
), e DEPLOYED_MODEL é substituído pelo campoid
doDeployedModel
.Se você estiver usando o comando
gcloud ai models upload
, use a flag--container-predict-route
para especificar esse campo.sharedMemorySizeMb
(opcional)A quantidade de memória da VM a ser reservada em um volume de memória compartilhada para o modelo em megabytes.
A memória compartilhada é um mecanismo de comunicação entre processos (IPC) que permite que vários processos acessem e manipulem um bloco comum de memória. A quantidade de memória compartilhada necessária, se houver, é um detalhe de implementação do contêiner e do modelo. Consulte as diretrizes na documentação do servidor de modelo.
Se você estiver usando o comando
gcloud ai models upload
, use a flag--container-shared-memory-size-mb
para especificar esse campo.startupProbe
(opcional)Especificação da sondagem que verifica se o aplicativo do contêiner foi iniciado.
Se você estiver usando o comando
gcloud ai models upload
, use a flag--container-startup-probe-exec, --container-startup-probe-period-seconds, --container-startup-probe-timeout-seconds
para especificar esse campo.healthProbe
(opcional)Especificação da sondagem que verifica se um contêiner está pronto para aceitar o tráfego.
Se você estiver usando o comando
gcloud ai models upload
, use a flag--container-health-probe-exec, --container-health-probe-period-seconds, --container-health-probe-timeout-seconds
para especificar esse campo.
Além das variáveis definidas no campo
Model.containerSpec.env
, a a Vertex AI define várias outras variáveis com base na sua
configuração. Saiba mais sobre
como usar essas variáveis de ambiente nesses campos e na instrução ENTRYPOINT
do contêiner.
Exemplos de importação de modelos
Nos exemplos a seguir, mostramos como especificar campos de API relacionados ao contêiner quando você importa um modelo.
gcloud
O exemplo a seguir usa o comando
gcloud ai models upload
:
gcloud ai models upload \
--region=LOCATION \
--display-name=MODEL_NAME \
--container-image-uri=IMAGE_URI \
--container-command=COMMAND \
--container-args=ARGS \
--container-ports=PORTS \
--container-env-vars=ENV \
--container-health-route=HEALTH_ROUTE \
--container-predict-route=PREDICT_ROUTE \
--container-shared-memory-size-mb=SHARED_MEMORY_SIZE \
--container-startup-probe-exec=STARTUP_PROBE_EXEC \
--container-startup-probe-period-seconds=STARTUP_PROBE_PERIOD \
--container-startup-probe-timeout-seconds=STARTUP_PROBE_TIMEOUT \
--container-health-probe-exec=HEALTH_PROBE_EXEC \
--container-health-probe-period-seconds=HEALTH_PROBE_PERIOD \
--container-health-probe-timeout-seconds=HEALTH_PROBE_TIMEOUT \
--artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY
A sinalização --container-image-uri
é obrigatória, todas as outras sinalizações que começam
com --container-
são opcionais. Para saber mais sobre os valores desses campos,
consulte a seção anterior deste guia.
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 esse exemplo, siga as instruções de configuração para Node.js 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 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.
Para mais contexto, leia o Guia de importação de modelos.
Enviar solicitações de previsão
Para enviar uma solicitação de previsão on-line ao Model
, siga as instruções em
Receber previsões de um modelo treinado personalizado:
esse processo funciona, não importa se você usa um contêiner personalizado.
Leia sobre os requisitos de solicitação e resposta de previsão para contêineres personalizados.
A seguir
- Para saber mais sobre tudo que deve ser considerado ao projetar um contêiner personalizado para usar com a Vertex AI,, leia Requisitos de contêineres personalizados.