Para personalizar a forma como o Vertex AI apresenta inferências online a partir do seu modelo preparado de forma personalizada, pode especificar um contentor personalizado em vez de um contentor pré-criado quando cria um recurso Model
. Quando usa um contentor personalizado, o Vertex AI executa um contentor Docker à sua escolha em cada nó de inferência.
Pode querer usar um contentor personalizado por qualquer um dos seguintes motivos:
- Para publicar inferências a partir de um modelo de ML preparado com uma framework que não está disponível como um contentor pré-criado
- Para pré-processar pedidos de inferência ou pós-processar as inferências geradas pelo seu modelo
- para executar um servidor de inferência escrito numa linguagem de programação à sua escolha
- Para instalar dependências que quer usar para personalizar inferências
Este guia descreve como criar um modelo que usa um contentor personalizado. Não fornece instruções detalhadas sobre a conceção e a criação de uma imagem de contentor do Docker.
Prepare uma imagem de contentor
Para criar um Model
que use um contentor personalizado, tem de fornecer uma imagem de contentor Docker como base desse contentor. Esta imagem do contentor tem de
cumprir os requisitos descritos nos requisitos do contentor personalizado.
Se planeia usar uma imagem de contentor existente criada por terceiros em quem confia, pode ignorar uma ou ambas as seguintes secções.
Crie uma imagem de contentor
Conceba e crie uma imagem de contentor do Docker que cumpra os requisitos da imagem de contentor.
Para aprender os princípios básicos da conceção e criação de uma imagem de contentor do Docker, leia o início rápido da documentação do Docker
Envie a imagem do contentor para o Artifact Registry
Envie a sua imagem de contentor para um repositório do Artifact Registry.
Saiba como enviar uma imagem de contentor para o Artifact Registry.
Crie um Model
Para criar um Model
que use um contentor personalizado, faça uma das seguintes ações:
Crie um
TrainingPipeline
que execute umCustomJob
e importe os artefactos resultantes como umModel
.
As secções seguintes mostram como configurar os campos da API relacionados com contentores personalizados quando cria um Model
de uma destas formas.
Campos da API relacionados com o contentor
Quando criar o Model
, certifique-se de que configura o campo containerSpec
com os detalhes do seu contentor personalizado, em vez de com um contentor pré-criado.
Tem de especificar uma ModelContainerSpec
mensagem no campo Model.containerSpec
. Nesta mensagem, pode especificar os seguintes subcampos:
imageUri
(obrigatório)O URI do Artifact Registry da sua imagem de contentor.
Se estiver a usar o comando
gcloud ai models upload
, pode usar a flag--container-image-uri
para especificar este campo.command
(opcional)Uma matriz de um executável e argumentos para substituir a instrução
ENTRYPOINT
do contentor. Para saber como formatar este campo e como interage com o campoargs
, leia a referência da API paraModelContainerSpec
.Se estiver a usar o comando
gcloud ai models upload
, pode usar a flag--container-command
para especificar este campo.args
(opcional)Uma matriz de um executável e argumentos para substituir o
CMD
do contentor Para saber como formatar este campo e como interage com o campocommand
, leia a referência da API paraModelContainerSpec
.Se estiver a usar o comando
gcloud ai models upload
, pode usar a flag--container-args
para especificar este campo.ports
(opcional)Uma matriz de portas; o Vertex AI envia verificações de atividade, verificações de estado e pedidos de inferência para o seu contentor na primeira porta indicada ou
8080
por predefinição. A especificação de portas adicionais não tem efeito.Se estiver a usar o comando
gcloud ai models upload
, pode usar a flag--container-ports
para especificar este campo.env
(opcional)Uma matriz de variáveis de ambiente que a instrução
ENTRYPOINT
do contentor, bem como os camposcommand
eargs
, podem referenciar. Para saber mais sobre como outros campos podem fazer referência a estas variáveis de ambiente, leia a referência da API paraModelContainerSpec
.Se estiver a usar o comando
gcloud ai models upload
, pode usar a flag--container-env-vars
para especificar este campo.healthRoute
(opcional)O caminho no servidor HTTP do contentor para o qual quer que o Vertex AI envie verificações de estado.
Se não especificar este campo, quando implementar o
Model
como umDeployedModel
num recursoEndpoint
, o valor predefinido é/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL
, em que ENDPOINT é substituído pelo último segmento do camponame
do recursoEndpoint
(apósendpoints/
) e DEPLOYED_MODEL é substituído pelo campoid
do recursoDeployedModel
.Se estiver a usar o comando
gcloud ai models upload
, pode usar a flag--container-health-route
para especificar este campo.predictRoute
(opcional)O caminho no servidor HTTP do contentor para o qual quer que o Vertex AI encaminhe pedidos de inferência.
Se não especificar este campo, quando implementar o
Model
como umDeployedModel
num recursoEndpoint
, o valor predefinido é/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL:predict
, em que ENDPOINT é substituído pelo último segmento do camponame
do recursoEndpoint
(apósendpoints/
) e DEPLOYED_MODEL é substituído pelo campoid
do recursoDeployedModel
.Se estiver a usar o comando
gcloud ai models upload
, pode usar a flag--container-predict-route
para especificar este campo.invokeRoutePrefix
(opcional)Invoque o prefixo do caminho para o contentor personalizado. Definir este campo como "/*" ativa o encaminhamento arbitrário para o modelo. Após a implementação, qualquer rota não raiz no servidor do modelo fica acessível com a chamada HTTP invoke. Por exemplo, "/invoke/foo/bar" seria encaminhado como "/foo/bar" para o servidor do modelo. Esta funcionalidade está na fase de pré-visualização pública. Para criar um modelo com invocação ativada, siga as instruções para usar rotas personalizadas arbitrárias.
sharedMemorySizeMb
(opcional)A quantidade de memória da VM a reservar num volume de memória partilhada para o modelo em megabytes.
A memória partilhada é um mecanismo de comunicação entre processos (IPC) que permite que vários processos acedam e manipulem um bloco de memória comum. A quantidade de memória partilhada necessária, se existir, é um detalhe de implementação do seu contentor e modelo. Consulte a documentação do servidor de modelos para ver diretrizes.
Se estiver a usar o comando
gcloud ai models upload
, pode usar a flag--container-shared-memory-size-mb
para especificar este campo.startupProbe
(opcional)Especificação da sonda que verifica se a aplicação do contentor foi iniciada.
Se estiver a usar o comando
gcloud ai models upload
, pode usar a flag--container-startup-probe-exec, --container-startup-probe-period-seconds, --container-startup-probe-timeout-seconds
para especificar este campo.healthProbe
(opcional)Especificação da sonda que verifica se um contentor está pronto para aceitar tráfego.
Se estiver a usar o comando
gcloud ai models upload
, pode usar a flag--container-health-probe-exec, --container-health-probe-period-seconds, --container-health-probe-timeout-seconds
para especificar este campo.
Além das variáveis que define no campo Model.containerSpec.env
, o Vertex AI define várias outras variáveis com base na sua configuração. Saiba mais sobre
a utilização destas variáveis de ambiente nestes campos e na instrução ENTRYPOINT
do contentor.
Exemplos de importação de modelos
Os exemplos seguintes mostram como especificar campos da API relacionados com o contentor quando importa um modelo.
gcloud
O exemplo seguinte 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 flag --container-image-uri
é obrigatória. Todas as outras flags que começam com --container-
são opcionais. Para saber mais sobre os valores destes campos,
consulte a secção anterior deste guia.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.
Para mais contexto, leia o guia de importação de modelos.
Envie pedidos de inferência
Para enviar um pedido de inferência online para o seu Model
, siga as instruções em
Obtenha inferências a partir de um modelo preparado personalizado:
este processo funciona da mesma forma, independentemente de usar um contentor personalizado.
Leia acerca dos requisitos de pedidos de previsão e respostas para contentores personalizados.
O que se segue?
- Para saber tudo o que deve ter em conta quando cria um contentor personalizado para usar com a Vertex AI, leia os requisitos do contentor personalizado.