As informações nesta página se aplicam a modelos treinados de maneira personalizada e do AutoML. Para implantação do Model Garden, consulte Usar modelos no Model Garden.
Com o Private Service Connect, é possível implantar seu modelo personalizado da Vertex AI e veicular inferências on-line com segurança para vários projetos de consumidor e redes VPC sem precisar de endereços IP públicos, acesso à Internet pública ou um intervalo de endereços IP internos com peering explícito.
Recomendamos o Private Service Connect para casos de uso de inferência on-line que têm os seguintes requisitos:
- Exigir conexões particulares e seguras
- Requer baixa latência
- Não precisam ser acessíveis publicamente
O Private Service Connect usa uma regra de encaminhamento na sua rede VPC para enviar tráfego unidirecionalmente ao serviço de inferência on-line da Vertex AI. A regra de encaminhamento se conecta a uma anexo de serviço que expõe o serviço Vertex AI à sua rede VPC. Para mais informações, consulte Sobre o acesso aos serviços da Vertex AI usando o Private Service Connect. Para saber mais sobre como configurar o Private Service Connect, consulte a Visão geral do Private Service Connect na documentação da nuvem privada virtual (VPC).
Endpoints particulares dedicados são compatíveis com protocolos de comunicação HTTP e gRPC. Para solicitações gRPC, o cabeçalho x-vertex-ai-endpoint-id precisa ser incluído para a identificação adequada do endpoint. Há suporte para as seguintes APIs:
- Prever
- RawPredict
- StreamRawPredict
- Conclusão de conversa (somente no Model Garden)
É possível enviar solicitações de inferência on-line a um endpoint particular dedicado usando o SDK da Vertex AI para Python. Para mais detalhes, consulte Receber inferências on-line.
Funções exigidas
Para receber a permissão necessária para criar um endpoint do Private Service Connect, peça ao administrador para conceder a você o papel do IAM de Usuário da Vertex AI (roles/aiplatform.user) no projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém a permissão
aiplatform.endpoints.create,
que é necessária para
criar um endpoint do Private Service Connect.
Também é possível receber essa permissão com papéis personalizados ou outros papéis predefinidos.
Para mais informações sobre os papéis e permissões da Vertex AI, consulte Controle de acesso da Vertex AI com IAM e Permissões do IAM da Vertex AI.
Criar o endpoint de inferência on-line
Use um dos métodos a seguir para criar um endpoint de inferência on-line com Private Service Connect ativado.
O tempo limite de solicitação padrão para um endpoint do Private Service Connect é de 10 minutos.
No SDK da Vertex AI para Python, é possível especificar um tempo limite de solicitação diferente ao definir um novo valor de inference_timeout, conforme mostrado no exemplo a seguir. O valor máximo de tempo limite é de 3.600 segundos (1 hora).
Console
No console Google Cloud , na Vertex AI, acesse a página Previsão on-line.
Clique em Criar.
Forneça um nome de exibição para o endpoint.
Selecione Privado.
Selecione Private Service Connect.
Clique em Selecionar IDs do projeto.
Selecione projetos para adicionar à lista de permissões do endpoint.
Clique em Continuar.
Escolha as especificações do seu modelo. Para mais informações, consulte Implantar um modelo em um endpoint.
Clique em Criar. para criar o endpoint e implantar o modelo nele.
Anote o ID do endpoint na resposta.
API
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
VERTEX_AI_PROJECT_ID: o ID do projeto do Google Cloud em que você está criando o endpoint de previsão on-line.REGION: a região em que você está usando a Vertex AI.VERTEX_AI_ENDPOINT_NAME: o nome de exibição da previsão on-line. endpoint de API.ALLOWED_PROJECTS: uma lista separada por vírgulas de IDs de projetos Google Cloud , cada um entre aspas, por exemplo,["PROJECTID1", "PROJECTID2"]. Se um projeto não estiver nesta lista, você não poderá enviar solicitações de previsão. para o endpoint da Vertex AI. Não se esqueça de incluir VERTEX_AI_PROJECT_ID nessa lista para chamar o endpoint no mesmo projeto em que está.- INFERENCE_TIMEOUT_SECS: (opcional) número de segundos no campo opcional
inferenceTimeout.
Método HTTP e URL:
POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints
Corpo JSON da solicitação:
{
"displayName": "VERTEX_AI_ENDPOINT_NAME",
"privateServiceConnectConfig": {
"enablePrivateServiceConnect": true,
"projectAllowlist": ["ALLOWED_PROJECTS"],
"clientConnectionConfig": {
"inferenceTimeout": {
"seconds": INFERENCE_TIMEOUT_SECS
}
}
}
}
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{
"name": "projects/VERTEX_AI_PROJECT_NUMBER/locations/REGION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
"genericMetadata": {
"createTime": "2020-11-05T17:45:42.812656Z",
"updateTime": "2020-11-05T17:45:42.812656Z"
}
}
}
ENDPOINT_ID.
Python
Antes de testar esse exemplo, siga as instruções de configuração para Python 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 Python.
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.
Substitua:
VERTEX_AI_PROJECT_ID: o ID do Google Cloud projeto em que você está criando o endpoint de inferência on-lineREGION: a região em que você está usando a Vertex AI.VERTEX_AI_ENDPOINT_NAME: o nome de exibição do endpoint de inferência on-lineALLOWED_PROJECTS: uma lista separada por vírgulas de IDs de projetos do Google Cloud, cada um entre aspas. Por exemplo,["PROJECTID1", "PROJECTID2"]. Se um projeto não estiver nesta lista, você não poderá enviar solicitações de inferência. para o endpoint da Vertex AI. Não se esqueça de incluir VERTEX_AI_PROJECT_ID nessa lista para chamar o endpoint no mesmo projeto em que está.INFERENCE_TIMEOUT_SECS: (opcional) número de segundos no valor opcionalinference_timeout.
PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"
INFERENCE_TIMEOUT_SECS = "INFERENCE_TIMEOUT_SECS"
from google.cloud import aiplatform
aiplatform.init(project=PROJECT_ID, location=REGION)
# Create the forwarding rule in the consumer project
psc_endpoint = aiplatform.PrivateEndpoint.create(
display_name=VERTEX_AI_ENDPOINT_NAME,
project=PROJECT_ID,
location=REGION,
private_service_connect_config=aiplatform.PrivateEndpoint.PrivateServiceConnectConfig(
project_allowlist=["ALLOWED_PROJECTS"],
),
inference_timeout=INFERENCE_TIMEOUT_SECS,
)
Anote o ENDPOINT_ID no final da
URI do endpoint:
INFO:google.cloud.aiplatform.models:To use this PrivateEndpoint in another session:
INFO:google.cloud.aiplatform.models:endpoint = aiplatform.PrivateEndpoint('projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID')
Criar o endpoint de inferência on-line com automação do PSC (prévia)
A inferência on-line se integra à automação de conectividade de serviço, que permite configurar endpoints de inferência com a automação do PSC. Isso simplifica o processo criando automaticamente endpoints de PSC e é particularmente útil para desenvolvedores de ML que não têm permissões para criar recursos de rede, como regras de encaminhamento em um projeto.
Para começar, o administrador de rede precisa estabelecer uma política de conexão de serviço. Essa política é uma configuração única por projeto e rede que permite que a Vertex AI (classe de serviço gcp-vertexai) gere endpoints do PSC nos seus projetos e redes.
Em seguida, crie endpoints usando a configuração de automação do PSC e implante seus modelos. Quando a implantação for concluída, as informações relevantes do endpoint PSC estarão acessíveis nos endpoints.
Limitações
- O VPC Service Controls não é compatível.
- Um limite regional de 500 endpoints se aplica às configurações de automação do PSC.
- Os resultados da automação do PSC são excluídos quando nenhum modelo é implantado ou está em processo de implantação no endpoint. Após a limpeza e a implantação do modelo, os novos resultados da automação apresentam endereços IP e regras de encaminhamento distintos.
Criar uma política de conexão de serviço
Você precisa ser um administrador de rede para criar a política de conexão de serviço.
Uma política de conexão de serviço é necessária para permitir que a Vertex AI
crie endpoints do PSC nas suas redes. Sem uma política válida, a automação falha com um erro CONNECTION_POLICY_MISSING.
Crie sua política de conexão de serviço.
- POLICY_NAME: um nome especificado pelo usuário para a política.
PROJECT_ID: o ID do projeto de serviço em que você está criando recursos da Vertex AI.
VPC_PROJECT: o ID do projeto em que a VPC do cliente está localizada. Para a configuração de uma única VPC, é o mesmo que
$PROJECT. Para a configuração da VPC compartilhada, esse é o projeto host da VPC.NETWORK_NAME: o nome da rede a ser implantada.
REGION: a região da rede.
PSC_SUBNETS: as sub-redes do Private Service Connect a serem usadas.
gcloud network-connectivity service-connection-policies create POLICY_NAME \ --project=VPC_PROJECT \ --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \ --service-class=gcp-vertexai --region=REGION --subnets=PSC_SUBNETSAcesse a política de conexão de serviço.
gcloud network-connectivity service-connection-policies list \ --project=VPC_PROJECT -–region=REGION
Para uma configuração de VPC única, um exemplo é assim:
gcloud network-connectivity service-connection-policies create test-policy \ --network=default \ --project=YOUR_PROJECT_ID \ --region=us-central1 \ --service-class=gcp-vertexai \ --subnets=default \ --psc-connection-limit=500 \ --description=test
Criar o endpoint de inferência on-line com a configuração de automação do PSC
No PSCAutomationConfig, verifique se o projectId está na
lista de permissões.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- REGION: a região em que você está usando a Vertex AI.
- VERTEX_AI_PROJECT_ID: o ID do projeto Google Cloud em que você está criando o endpoint de inferência on-line.
- VERTEX_AI_ENDPOINT_NAME: o nome de exibição do endpoint de previsão on-line.
- NETWORK_NAME: o nome completo do recurso, incluindo o ID do projeto, em vez do número do projeto.
Método HTTP e URL:
POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints
Corpo JSON da solicitação:
{
{
displayName: "VERTEX_AI_ENDPOINT_NAME",
privateServiceConnectConfig: {
enablePrivateServiceConnect: true,
projectAllowlist: ["VERTEX_AI_PROJECT_ID"],
pscAutomationConfigs: [
{ "project_id": "VERTEX_AI_PROJECT_ID", "network": "projects/VERTEX_AI_PROJECT_ID/global/networks/NETWORK_NAME" },
],
},
},
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{
"name": "projects/VERTEX_AI_PROJECT_NUMBER/locations/REGION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
"genericMetadata": {
"createTime": "2020-11-05T17:45:42.812656Z",
"updateTime": "2020-11-05T17:45:42.812656Z"
}
}
}
ENDPOINT_ID.
Python
Antes de testar esse exemplo, siga as instruções de configuração para Python 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 Python.
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.
Substitua:
VERTEX_AI_PROJECT_ID: o ID do Google Cloud projeto em que você está criando o endpoint de inferência on-lineREGION: a região em que você está usando a Vertex AI.VERTEX_AI_ENDPOINT_NAME: o nome de exibição do endpoint de inferência on-lineNETWORK_NAME: o nome completo do recurso, incluindo o ID do projeto, em vez do número do projeto.
PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"
from google.cloud import aiplatform
aiplatform.init(project=PROJECT_ID, location=REGION)
config =
aiplatform.compat.types.service_networking.PrivateServiceConnectConfig(
enable_private_service_connect=True,
project_allowlist="VERTEX_AI_PROJECT_ID"
psc_automation_configs=[
aiplatform.compat.types.service_networking.PSCAutomationConfig(
project_id="VERTEX_AI_PROJECT_ID"
network=projects/"VERTEX_AI_PROJECT_ID"/global/networks/"NETWORK_NAME",
)
]
)
psc_endpoint = aiplatform.PrivateEndpoint.create(
display_name="VERTEX_AI_ENDPOINT_NAME"
private_service_connect_config=config,
)
Implantar o modelo
Depois de criar o endpoint de inferência on-line com Private Service Connect ativado, implante seu modelo nele, seguindo as as etapas descritas em Implantar um modelo em um endpoint.
Criar endpoint do PSC manualmente
Acessar o URI do anexo de serviço
Quando você implanta o modelo, um anexo de serviço é criado para o endpoint de inferência on-line. Esse anexo de serviço representa o
serviço de inferência on-line da Vertex AI que está sendo exposto à sua
rede VPC. Execute o comando
Comando gcloud ai endpoints describe
para receber o URI do anexo de serviço.
Liste apenas o valor
serviceAttachmentdos detalhes do endpoint:gcloud ai endpoints describe ENDPOINT_ID \ --project=VERTEX_AI_PROJECT_ID \ --region=REGION \ | grep -i serviceAttachmentSubstitua:
ENDPOINT_ID: o ID do endpoint de inferência on-lineVERTEX_AI_PROJECT_ID: o ID do projeto Google Cloud em que você criou o endpoint de inferência on-lineREGION: a região desta solicitação
O resultado será assim:
serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1Anote toda a string no campo
serviceAttachment. Isto é o URI do anexo de serviço.
Criar uma regra de encaminhamento
É possível reservar um endereço IP interno e criar uma regra de encaminhamento a esse endereço. Para criar a regra de encaminhamento, você precisa do URI do anexo de serviço da etapa anterior.
Para reservar um endereço IP interno para a regra de encaminhamento, use o Comando
gcloud compute addresses create:gcloud compute addresses create ADDRESS_NAME \ --project=VPC_PROJECT_ID \ --region=REGION \ --subnet=SUBNETWORK \ --addresses=INTERNAL_IP_ADDRESSSubstitua:
ADDRESS_NAME: um nome para o endereço IP internoVPC_PROJECT_ID: o ID do projeto Google Cloud que hospeda sua rede VPC. Se o endpoint de inferência on-line e regra de encaminhamento do Private Service Connect são hospedados no mesmo projeto, useVERTEX_AI_PROJECT_IDpara esse parâmetro.REGION: a região do Google Cloud em que a regra de encaminhamento do Private Service Connect será criadaSUBNETWORK: o nome da sub-rede VPC que contém o endereço IPINTERNAL_IP_ADDRESS: o endereço IP interno de reservar. Este parâmetro é opcional.- Se esse parâmetro for especificado, o endereço IP deverá estar dentro do do intervalo de endereços IP primário da sub-rede. O endereço IP pode ser um endereço RFC 1918 ou uma sub-rede com intervalos não RFC.
- Se esse parâmetro for omitido, um endereço IP interno é alocado automaticamente.
- Para mais informações, consulte Reserve um novo endereço IPv4 ou IPv6 interno estático.
Para verificar se o endereço IP está reservado, use o comando
gcloud compute addresses list:gcloud compute addresses list --filter="name=(ADDRESS_NAME)" \ --project=VPC_PROJECT_IDNa resposta, verifique se o endereço IP tem um status
RESERVED.Para criar a regra de encaminhamento e apontá-la para o anexo de serviço de inferência on-line, use o comando
gcloud compute forwarding-rules create:gcloud compute forwarding-rules create PSC_FORWARDING_RULE_NAME \ --address=ADDRESS_NAME \ --project=VPC_PROJECT_ID \ --region=REGION \ --network=VPC_NETWORK_NAME \ --target-service-attachment=SERVICE_ATTACHMENT_URISubstitua:
PSC_FORWARDING_RULE_NAME: um nome para a regra de encaminhamentoVPC_NETWORK_NAME: o nome da rede VPC em que o endpoint será criadoSERVICE_ATTACHMENT_URI: o anexo de serviço que você criou. observação
Para verificar se o anexo de serviço aceita o endpoint, use o comando
gcloud compute forwarding-rules describe:gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \ --project=VPC_PROJECT_ID \ --region=REGIONNa resposta, verifique se um status
ACCEPTEDaparece para o campopscConnectionStatus.
Acessar o endereço IP interno
Se você não especificou um valor para INTERNAL_IP_ADDRESS quando
criar a regra de encaminhamento, é possível coletar o endereço
alocado automaticamente usando a
Comando gcloud compute forwarding-rules describe:
gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
--project=VERTEX_AI_PROJECT_ID \
--region=REGION \
| grep -i IPAddress
Substitua:
VERTEX_AI_PROJECT_ID: ID do projetoREGION: o nome da região da solicitação.
Opcional: extrair o endpoint do PSC do resultado da automação do PSC
É possível conseguir o endereço IP gerado e a regra de encaminhamento do endpoint de inferência. Veja um exemplo:
"privateServiceConnectConfig": {
"enablePrivateServiceConnect": true,
"projectAllowlist": [
"your-project-id",
],
"pscAutomationConfigs": [
{
"projectId": "your-project-id",
"network": "projects/your-project-id/global/networks/default",
"ipAddress": "10.128.15.209",
"forwardingRule": "https://www.googleapis.com/compute/v1/projects/your-project-id/regions/us-central1/forwardingRules/sca-auto-fr-47b0d6a4-eaff-444b-95e6-e4dc1d10101e",
"state": "PSC_AUTOMATION_STATE_SUCCESSFUL"
},
]
}
Confira alguns detalhes sobre o tratamento de erros.
- A falha Automation não afeta o resultado da implantação do modelo.
- O sucesso ou a falha da operação é indicado no estado.
- Se a operação for bem-sucedida, o endereço IP e a regra de encaminhamento serão exibidos.
- Se não for possível, uma mensagem de erro será exibida.
- As configurações Automation são removidas quando não há modelos implantados ou em processo de implantação no endpoint. Isso resulta em uma mudança no endereço IP e na regra de encaminhamento se um modelo for implantado posteriormente.
- A automação com falha não será recuperada. Em caso de falha, ainda é possível criar o endpoint do PSC manualmente. Consulte Criar endpoint do PSC manualmente.
Receber inferências on-line
Como receber inferências on-line de um endpoint com o Private Service Connect é semelhante a receber inferências on-line de endpoints públicos, exceto conforme as seguintes considerações:
- A solicitação precisa ser enviada de um projeto especificado no
projectAllowlistquando o endpoint de inferência on-line foi criado. - Se o acesso global não estiver ativado, a solicitação precisa ser enviada da mesma região.
- Há duas portas abertas: 443 com TLS usando certificado autoassinado e 80 sem TLS. As duas portas são compatíveis com HTTP e gRPC. Todo o tráfego permanece na sua rede privada e não passa pela Internet pública.
- A prática recomendada é usar HTTPS com o certificado autoassinado obtido da inferência on-line da Vertex AI ou implantar seu próprio certificado autoassinado.
Para receber inferências, uma conexão precisa ser estabelecida usando o endereço IP estático do endpoint, a menos que um registro DNS seja criado para o endereço IP interno. Por exemplo, envie as solicitações
predictpara o seguinte endpoint:http://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predictSubstitua
INTERNAL_IP_ADDRESSpelo endereço IP interno que você reservou anteriormente.Para solicitações gRPC: Para garantir a identificação adequada do endpoint para solicitações gRPC, é necessário incluir o cabeçalho
x-vertex-ai-endpoint-id. Isso é necessário porque as informações do endpoint não são transmitidas no caminho da solicitação para comunicação gRPC.
Criar um registro DNS para o endereço IP interno
Recomendamos que você crie um registro DNS para receber inferências on-line do endpoint sem precisar especificar o endereço IP interno.
Para mais informações, consulte Outras maneiras de configurar o DNS.
Crie uma zona DNS particular usando o comando
gcloud dns managed-zones create. Essa zona está associada à rede VPC em que a regra de encaminhamento foi criada.DNS_NAME_SUFFIX="prediction.p.vertexai.goog." # DNS names have "." at the end. gcloud dns managed-zones create ZONE_NAME \ --project=VPC_PROJECT_ID \ --dns-name=$DNS_NAME_SUFFIX \ --networks=VPC_NETWORK_NAME \ --visibility=private \ --description="A DNS zone for Vertex AI endpoints using Private Service Connect."Substitua:
ZONE_NAME: o nome da zona de DNS.
Para criar um registro DNS na zona, use o Comando
gcloud dns record-sets create:DNS_NAME=ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.$DNS_NAME_SUFFIX gcloud dns record-sets create $DNS_NAME \ --rrdatas=INTERNAL_IP_ADDRESS \ --zone=ZONE_NAME \ --type=A \ --ttl=60 \ --project=VPC_PROJECT_IDSubstitua:
VERTEX_AI_PROJECT_NUMBER: o número do projetoVERTEX_AI_PROJECT_ID. Você pode localizar esse número do projeto no console Google Cloud . Para mais informações, consulte Identificar projetos.INTERNAL_IP_ADDRESS: o endereço IP interno do seu endpoint de inferência on-line
Agora você pode enviar suas solicitações
predictpara:http://ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
Suporte para certificados Transport Layer Security (TLS)
A inferência on-line da Vertex AI é protegida com um certificado autoassinado. Como esse certificado não é assinado por uma CA (autoridade certificadora) confiável, os clientes que tentam estabelecer uma conexão HTTPS precisam ser configurados explicitamente para confiar nele. O certificado autoassinado obtido do endpoint de inferência on-line da Vertex AI é válido por 10 anos. Como esse certificado não é exclusivo de um endpoint específico, um único certificado pode ser usado para todas as integrações de repositório de confiança. Estas são as etapas gerais necessárias para estabelecer uma conexão HTTPS com a inferência on-line da Vertex AI:
Configure o DNS: o certificado autoassinado inclui o nome alternativo do assunto (SAN)
*.prediction.p.vertexai.goog. É preciso criar um registro DNS na sua rede que corresponda a esse formato.Para mais detalhes sobre a implementação, consulte Criar um registro DNS para o endereço IP interno.
Estabelecer a confiança do cliente: o cliente precisa baixar o certificado autônomo e adicioná-lo ao repositório de confiança local.
Estabelecer conexão HTTPS: para estabelecer uma conexão HTTPS com a inferência on-line da Vertex AI, é necessário usar o nome de domínio totalmente qualificado (FQDN). Isso é necessário porque o serviço usa um certificado SSL curinga válido para o domínio
*.prediction.p.vertexai.goog.
As etapas a seguir mostram como baixar o certificado de inferência on-line da Vertex AI e adicioná-lo ao armazenamento de confiança local em sistemas Linux baseados em Debian, como Debian 11 e Ubuntu.
Atualize os pacotes do SO e instale o OpenSSL:
sudo apt update && sudo apt install opensslExecute o comando a seguir no diretório inicial para baixar o certificado de inferência on-line da Vertex AI e salve-o em um arquivo chamado
vertex_certificate.crtno diretório atual. Faça as seguintes substituições:- ENDPOINT_ID: ID do endpoint do modelo implantado
- REGION: a região em que o endpoint reside.
- VERTEX_AI_PROJECT_NUMBER: o número do projeto. Você pode localizar esse número do projeto no console Google Cloud . Para mais informações, consulte Como identificar projetos.
openssl s_client -showcerts -connect \ ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog:443 </dev/null | \ openssl x509 -outform pem -out vertex_certificate.crtMova o certificado para o repositório de confiança do sistema:
sudo mv vertex_certificate.crt /usr/local/share/ca-certificatesAtualize a lista de CAs confiáveis do Certificate Manager. Você vai ver uma saída confirmando que um certificado foi adicionado.
sudo update-ca-certificatesEnvie uma solicitação
predictpara o seguinte URL, fazendo estas substituições:- INTERNAL_IP_ADDRESS: o endereço IP interno do seu endpoint de inferência on-line
- VERTEX_AI_PROJECT_ID: o ID do projeto
https://ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
Suporte a certificados personalizados para TLS
Para organizações que precisam de controle preciso sobre o gerenciamento e a rotação de certificados para endpoints de inferência on-line da Vertex AI, use um certificado gerenciado pelo cliente com um balanceador de carga de aplicativo (HTTPS) regional Google Cloud.
Essa arquitetura funciona com o certificado padrão da Vertex AI, oferecendo controle direto.
Estas são as etapas gerais de implantação:
Crie um certificado gerenciado pelo cliente:
- Gere um certificado autoassinado (ou use sua CA) para um domínio personalizado.
- Esse domínio precisa usar o sufixo
.prediction.p.vertexai.googpara garantir que ele corresponda ao certificado curinga da Vertex AI. Por exemplo,my-endpoint.prediction.vertexai.goog.
Implante um balanceador de carga de aplicativo regional (HTTPS):
- Configure o balanceador de carga para usar o certificado gerenciado pelo cliente no front-end HTTPS.
- Defina o serviço de back-end como um grupo de endpoints de rede (NEG) do Private Service Connect (PSC). Essa NEG vai apontar para o anexo de serviço serviço publicado do endpoint do modelo da Vertex AI.
Configure o DNS:
- Crie um registro A do DNS na sua zona de DNS.
- Esse registro precisa mapear seu domínio personalizado totalmente qualificado (por exemplo,
my-endpoint.prediction.p.vertexai.goog) para o endereço IP do balanceador de carga de aplicativo regional.
Atualize o truststore local:
- Para que o cliente autentique o servidor, o certificado do Application Load Balancer (ou a CA emissora) precisa ser importado para o repositório de confiança local.
Agora você pode enviar suas solicitações de previsão para o domínio personalizado totalmente qualificado:
https://MY_ENDPOINT.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
Exemplos de como receber inferências on-line
As seções a seguir mostram exemplos de como enviar a predict solicitação usando Python.
Primeiro exemplo
psc_endpoint = aiplatform.PrivateEndpoint("projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID")
REQUEST_FILE = "PATH_TO_INPUT_FILE"
import json
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
with open(REQUEST_FILE) as json_file:
data = json.load(json_file)
response = psc_endpoint.predict(
instances=data["instances"], endpoint_override=INTERNAL_IP_ADDRESS
)
print(response)
Substitua PATH_TO_INPUT_FILE por um caminho para um arquivo JSON.
que contém a entrada da solicitação.
Segundo exemplo
import json
import requests
import urllib3
import google.auth.transport.requests
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
REQUEST_FILE = "PATH_TO_INPUT_FILE"
# Programmatically get credentials and generate an access token
creds, project = google.auth.default()
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
access_token = creds.token
# Note: the credential lives for 1 hour by default
# After expiration, it must be refreshed
# See https://cloud.google.com/docs/authentication/token-types#access-tokens
# for token lifetimes.
with open(REQUEST_FILE) as json_file:
data = json.load(json_file)
url = "https://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}" # Add access token to headers
}
payload = {
"instances": data["instances"],
}
response = requests.post(url, headers=headers, json=payload, verify=False)
print(response.json())
Terceiro exemplo
Este é um exemplo de como enviar a predict solicitação para a zona de DNS usando Python:
REQUEST_FILE = "PATH_TO_INPUT_FILE"
import json
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
with open(REQUEST_FILE) as json_file:
data = json.load(json_file)
response = psc_endpoint.predict(
instances=data["instances"], endpoint_override=DNS_NAME
)
print(response)
Substitua DNS_NAME pelo nome DNS especificado no
comando gcloud dns record-sets create.
Práticas recomendadas
Quando um novo endpoint é implantado, o anexo de serviço pode ser atualizado. Sempre verifique o status do anexo de serviço e do endpoint do PSC antes de fazer a chamada de inferência. Confira as práticas recomendadas para fazer isso:
- Se um endpoint não tiver implantações ativas, a Vertex AI poderá excluir a vinculação de serviço e recriá-la. Verifique se o endpoint do PSC está em um estado conectado (recriando a regra de encaminhamento) quando o anexo de serviço é recriado.
- Quando um endpoint tem um modelo implantado ativo, o anexo de serviço não muda. Para manter a vinculação de serviço, crie uma divisão de tráfego e migre gradualmente o tráfego para a nova versão do modelo antes de remover a implantação da versão anterior.
- A Vertex AI permite até 1.000 conexões por anexo de serviço.
- A regra de encaminhamento também tem um limite de cota. Para mais detalhes, consulte Cotas e limites do Cloud Load Balancing.
Limitações
Os endpoints da Vertex AI com o Private Service Connect estão sujeitos à as seguintes limitações:
- A implantação de modelos ajustados do Gemini não é compatível.
- Não há suporte para saída particular de dentro do endpoint. Porque As regras de encaminhamento do Private Service Connect são unidirecionais, outro privado As cargas de trabalho doGoogle Cloud não são acessíveis dentro do contêiner.
- Não é possível mudar o valor do
projectAllowlistde um endpoint. - Não há suporte para a Vertex Explainable AI.
- Antes de excluir um endpoint, é necessário cancelar a implantação do modelo dele.
- Se todos os modelos forem removidos por mais de 10 minutos, o anexo de serviço poderá ser excluído. Verifique o status da conexão do Private Service Connect. Se for
CLOSED, recrie a regra de encaminhamento. - Depois de excluir o endpoint, não será possível reutilizar o nome dele por até sete dias.
- Um projeto pode ter até 10 valores
projectAllowlistdiferentes nas configurações do Private Service Connect.