O uso de endpoints particulares para exibir previsões on-line com o Vertex AI fornece uma conexão segura e de baixa latência com o serviço de previsão on-line do Vertex AI. Neste guia, mostramos como configurar endpoints particulares no Vertex AI usando peering de rede VPC para fazer peering na rede com o serviço de previsão on-line do Vertex AI.
Visão geral
Antes de veicular previsões on-line com endpoints particulares, configure o acesso a serviços particulares para criar conexões de peering entre sua rede e a Vertex AI. Se você já tiver configurado isso, use suas conexões de peering atuais.
Este guia abrange as seguintes tarefas:
- Verificar o status das suas conexões de peering atuais
- Verificar se as APIs necessárias estão ativadas.
- Criar um endpoint particular.
- Como implantar um modelo em um endpoint particular.
- Compatibilidade com apenas um modelo por endpoint particular. Isso é diferente de um endpoint público da Vertex AI, em que é possível dividir o tráfego em vários modelos implantados em um endpoint.
- O endpoint particular é compatível com modelos tabulares e treinados personalizados do AutoML.
- Envio de uma previsão para um endpoint particula
- Como limpar recursos
Verificar o status das conexões de peering existentes
Se você tiver conexões de peering existentes com o Vertex AI, será possível listá-las para verificar o status:
gcloud compute networks peerings list --network NETWORK_NAME
Você verá que o estado das conexões de peering é ACTIVE
.
Saiba mais sobre conexões de peering ativas.
Ativar as APIs necessárias
gcloud services enable aiplatform.googleapis.com
gcloud services enable dns.googleapis.com
Criar um endpoint particular
Para criar um endpoint particular, adicione a sinalização --network
ao criar um endpoint usando a CLI do Google Cloud:
gcloud beta ai endpoints create \
--display-name=ENDPOINT_DISPLAY_NAME \
--network=FULLY_QUALIFIED_NETWORK_NAME \
--region=REGION
Substitua NETWORK_NAME pelo nome de rede totalmente qualificado:
projects/PROJECT_NUMBER/global/networks/NETWORK_NAME
Se você criar o endpoint sem especificar uma rede, criará um endpoint público.
Limitações de endpoints particulares
Observe as seguintes limitações para endpoints particulares:
- Endpoints particulares não são compatíveis com a divisão de tráfego. Como solução alternativa, é possível criar a divisão de tráfego manualmente implantando o modelo em vários endpoints particulares e dividindo o tráfego entre os URLs de previsão resultantes para cada endpoint particular.
- Os endpoints particulares não são compatíveis com SSL/TLS.
- Para ativar a geração de registros de acesso em um endpoint particular, entre em contato com vertex-ai-feedback@google.com
- Só é possível usar uma rede para todos os endpoints particulares em um projeto do Google Cloud. Se quiser mudar para outra rede,
entre em contato com a
vertex-ai-feedback@google.com
. - Uma nova tentativa do cliente sobre erros recuperáveis é altamente recomendável. Eles podem
incluir os seguintes erros:
- Resposta vazia (código de erro HTTP
0
), possivelmente devido a uma conexão corrompida temporária. - Códigos de erro HTTP
5xx
que indicam que o serviço pode estar temporariamente indisponível.
- Resposta vazia (código de erro HTTP
- Para o código de erro HTTP
429
que indica que o sistema está sobrecarregado, considere reduzir o tráfego para mitigar esse problema em vez de tentar novamente. - As solicitações de previsão de
PredictionServiceClient
na biblioteca de cliente Python da Vertex AI não são compatíveis.
Monitorar endpoints particulares
Use o painel de métricas para inspecionar a disponibilidade e a latência do tráfego enviado a um endpoint particular.
Para personalizar o monitoramento, consulte as métricas a seguir no Cloud Monitoring:
aiplatform.googleapis.com/prediction/online/private/response_count
O número de respostas de previsão. É possível filtrar essa métrica por
deployed_model_id
ou código de resposta HTTP.aiplatform.googleapis.com/prediction/online/private/prediction_latencies
Latência da solicitação de previsão em milissegundos. Você pode filtrar essa métrica por
deployed_model_id
, apenas para solicitações bem-sucedidas.
Saiba como selecionar, consultar e exibir essas métricas no Metrics Explorer.
Implantar um modelo
É possível importar um novo modelo ou implantar um modelo existente que você já tenha enviado. Para fazer upload de um novo modelo, use
gcloud ai models upload
.
Para mais informações, consulte
Importar modelos para a Vertex AI.
Para implantar um modelo em um endpoint particular, consulte o guia sobre como implantar modelos. Além de dividir o tráfego e ativar manualmente a geração de registros de acesso, é possível usar qualquer uma das outras opções disponíveis para implantar modelos treinados personalizados. Consulte as limitações dos endpoints particulares para saber mais sobre como eles são diferentes dos endpoints públicos.
Depois de implantar o endpoint, é possível conseguir o URI de previsão nos metadados do endpoint particular.
Se você tiver o nome de exibição do endpoint particular, execute este comando para conseguir o ID do endpoint:
ENDPOINT_ID=$(gcloud ai endpoints list \ --region=REGION \ --filter=displayName:ENDPOINT_DISPLAY_NAME \ --format="value(ENDPOINT_ID.scope())")
Caso contrário, para visualizar o ID do endpoint e o nome de exibição de todos os endpoints, execute este comando:
gcloud ai endpoints list --region=REGION
Por fim, para conseguir o URI de previsão, execute este comando:
gcloud beta ai endpoints describe ENDPOINT_ID \ --region=REGION \ --format="value(deployedModels.privateEndpoints.predictHttpUri)"
Formato do URI de previsão particular
O URI de previsão é diferente para endpoints particulares em comparação com os endpoints públicos da Vertex AI:
http://ENDPOINT_ID.aiplatform.googleapis.com/v1/models/DEPLOYED_MODEL_ID:predict
Se você optar por cancelar a implantação do modelo atual e implantar novamente com um novo, o nome de domínio será reutilizado, mas o caminho incluirá um ID de modelo implantado diferente.
Enviar uma previsão para um endpoint particular
Crie uma instância do Compute Engine na sua rede VPC. Crie a instância na mesma rede VPC em que você fez peering com a Vertex AI.
Conecte o SSH à instância do Compute Engine e instale o cliente de previsão, se aplicável. Caso contrário, use o curl.
Ao prever, use o URL de previsão obtido da implantação do modelo. Neste exemplo, você está enviando a solicitação do cliente de previsão na instância do Compute Engine na mesma rede VPC:
curl -X POST -d@PATH_TO_JSON_FILE http://ENDPOINT_ID.aiplatform.googleapis.com/v1/models/DEPLOYED_MODEL_ID:predict
Nesta solicitação de amostra, PATH_TO_JSON_FILE é o caminho para a solicitação de previsão, salva como um arquivo JSON. Por exemplo,
example-request.json
.
Limpar recursos
É possível remover a implantação de modelos e excluir endpoints particulares da mesma forma que acontece com modelos públicos e endpoints. Só é possível criar endpoints particulares em uma rede por projeto do Google Cloud, mesmo se você excluir esses recursos posteriormente. Se você precisar mudar para uma rede diferente, entre em contato com vertex-ai-feedback@google.com.
Exemplo: testar endpoints particulares na VPC compartilhada
Este exemplo usa dois projetos do Google Cloud com uma rede VPC compartilhada:
- O projeto host hospeda a rede VPC compartilhada.
- O projeto do cliente hospeda uma instância do Compute Engine em que você executa um cliente de previsão, como curl, ou seu próprio cliente REST na instância do Compute Engine, para enviar solicitações de previsão.
Quando você cria a instância do Compute Engine no projeto cliente, ela precisa estar dentro da sub-rede personalizada na rede VPC compartilhada do projeto host e na mesma região em que o modelo é implantado.
Crie as conexões de peering para acessar serviços privados no projeto host. Execute
gcloud services vpc-peerings connect
:gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --network=HOST_SHARED_VPC_NAME \ --ranges=PREDICTION_RESERVED_RANGE_NAME \ --project=HOST_PROJECT_ID
Crie o endpoint no projeto cliente usando o nome de rede do projeto host. Execute
gcloud beta ai endpoints create
:gcloud beta ai endpoints create \ --display-name=ENDPOINT_DISPLAY_NAME \ --network=HOST_SHARED_VPC_NAME \ --region=REGION \ --project=CLIENT_PROJECT_ID
Envie solicitações de previsão usando o cliente de previsão no projeto cliente.
Exemplo: endpoints particulares com sub-redes não RFC 1918
Este exemplo usa endereços não RFC 1918 para criar endpoints particulares.
Reserve intervalos de IP para nós, pods e serviços. Os intervalos de IP para nós precisam ser do intervalo RFC 1918.
Crie a conexão de peering para acesso a serviço particular usando os intervalos reservados.
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --network=VPC_NAME \ --ranges=NODES_RANGE_NAME,PODS_RANGE_NAME,SERVICES_RANGE_NAME \ --project=PROJECT_ID
Crie o endpoint especificando os intervalos reservados para nós, pods e serviços. RequestedIpRangeConfig só pode ser especificado pela API REST.
# Sample json request for endpoint creation. { displayName: "my_endpoint", network: "projects/<project_num>/global/networks/<network>", requestedIpRangeConfig: { nodesIpRange: { ipAddress: "xxx.xx.x.x", ipPrefixLength: 22 }, podsIpRange: { ipAddress: "yyy.yy.y.y", ipPrefixLength: 17 }, servicesIpRange: { ipAddress: "zzz.zz.z.z", ipPrefixLength: 22 } } }
Envie solicitações de previsão usando o cliente de previsão no projeto cliente.