As informações nesta página aplicam-se a modelos preparados de forma personalizada e a modelos do AutoML. Para a implementação do Model Garden, consulte o artigo Use modelos no Model Garden.
O Private Service Connect permite implementar o seu modelo do Vertex AI com preparação personalizada e publicar inferências online em segurança para vários projetos de consumidor e redes VPC sem necessidade de endereços IP públicos, acesso público à Internet ou um intervalo de endereços IP internos com peering explícito.
Recomendamos o Private Service Connect para exemplos de utilização de inferência online que tenham os seguintes requisitos:
- Exija ligações privadas e seguras
- Exigir latência baixa
- Não precisam de ser acessíveis publicamente
O Private Service Connect usa uma regra de encaminhamento na sua rede VPC para enviar tráfego unidirecionalmente para o serviço de inferência online do Vertex AI. A regra de encaminhamento liga-se a uma associação de serviço que expõe o serviço Vertex AI à sua rede VPC. Para mais informações, consulte o artigo Acerca do acesso aos serviços da Vertex AI através do Private Service Connect. Para saber como configurar o Private Service Connect, consulte a vista geral do Private Service Connect na documentação da Virtual Private Cloud (VPC).
Os pontos finais privados dedicados suportam os protocolos de comunicação HTTP e gRPC. Para pedidos gRPC, o cabeçalho x-vertex-ai-endpoint-id tem de ser incluído para a identificação adequada do ponto final. As seguintes APIs são suportadas:
- Prever
- RawPredict
- StreamRawPredict
- Conclusão de chat (apenas no Model Garden)
Pode enviar pedidos de inferência online para um ponto final privado dedicado através do SDK Vertex AI para Python. Para ver detalhes, consulte o artigo Obtenha inferências online.
Funções necessárias
Para receber a autorização de que
precisa para criar um ponto final do Private Service Connect,
peça ao seu administrador para lhe conceder a função de IAM
utilizador do Vertex AI (roles/aiplatform.user)
no seu projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém a autorização
aiplatform.endpoints.create
, que é necessária para
criar um ponto final do Private Service Connect.
Também pode obter esta autorização com funções personalizadas ou outras funções predefinidas.
Para mais informações sobre as funções e as autorizações da Vertex AI, consulte os artigos Controlo de acesso da Vertex AI com a IAM e Autorizações da IAM da Vertex AI.
Crie o ponto final de inferência online
Use um dos seguintes métodos para criar um ponto final de inferência online com o Private Service Connect ativado.
O limite de tempo predefinido do pedido para um ponto final do Private Service Connect é de 10 minutos.
No SDK Vertex AI para Python, pode especificar opcionalmente um tempo limite de pedido diferente especificando um novo valor inference_timeout, conforme mostrado no exemplo seguinte. O valor de tempo limite máximo é de 3600 segundos (1 hora).
Consola
Na Google Cloud consola, no Vertex AI, aceda à página Previsão online.
Clique em Criar.
Indique um nome a apresentar para o ponto final.
Selecione Privado.
Selecione Private Service Connect.
Clique em Selecionar IDs dos projetos.
Selecione os projetos a adicionar à lista de autorizações do ponto final.
Clique em Continuar.
Escolha as especificações do modelo. Para mais informações, consulte o artigo Implemente um modelo num ponto final.
Clique em Criar para criar o seu ponto final e implementar o modelo no mesmo.
Tome nota do ID do ponto final na resposta.
API
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
VERTEX_AI_PROJECT_ID: o ID do projeto onde está a criar o ponto final de previsão online. Google CloudREGION: a região onde está a usar o Vertex AI.VERTEX_AI_ENDPOINT_NAME: o nome a apresentar para o ponto final de previsão online.ALLOWED_PROJECTS: uma lista separada por vírgulas de Google Cloud IDs de projetos, cada um entre aspas, por exemplo,["PROJECTID1", "PROJECTID2"]. Se um projeto não estiver incluído nesta lista, não vai poder enviar pedidos de previsão para o ponto final da Vertex AI a partir dele. Certifique-se de que inclui VERTEX_AI_PROJECT_ID nesta lista para poder chamar o ponto final a partir do mesmo projeto em que se encontra.- INFERENCE_TIMEOUT_SECS: (Opcional) Número de segundos no campo
inferenceTimeoutopcional.
Método HTTP e URL:
POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints
Corpo JSON do pedido:
{
"displayName": "VERTEX_AI_ENDPOINT_NAME",
"privateServiceConnectConfig": {
"enablePrivateServiceConnect": true,
"projectAllowlist": ["ALLOWED_PROJECTS"],
"clientConnectionConfig": {
"inferenceTimeout": {
"seconds": INFERENCE_TIMEOUT_SECS
}
}
}
}
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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 experimentar este exemplo, siga as Pythoninstruçõ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 Python 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.
Substitua o seguinte:
VERTEX_AI_PROJECT_ID: o ID do Google Cloud projeto onde está a criar o ponto final de inferência onlineREGION: a região onde está a usar o Vertex AIVERTEX_AI_ENDPOINT_NAME: o nome a apresentar do ponto final de inferência onlineALLOWED_PROJECTS: uma lista separada por vírgulas de Google Cloud IDs de projetos, cada um entre aspas. Por exemplo,["PROJECTID1", "PROJECTID2"]. Se um projeto não estiver incluído nesta lista, não vai poder enviar pedidos de inferência para o ponto final da Vertex AI a partir dele. Certifique-se de que inclui VERTEX_AI_PROJECT_ID nesta lista para poder chamar o ponto final a partir do mesmo projeto em que se encontra.INFERENCE_TIMEOUT_SECS: (Opcional) Número de segundos no valorinference_timeoutopcional.
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,
)
Tome nota do ENDPOINT_ID no final do URI do ponto final devolvido:
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')
Crie o ponto final de inferência online com a automatização do PSC (pré-visualização)
A inferência online integra-se com a automatização da conetividade de serviços, o que lhe permite configurar pontos finais de inferência com a automatização do PSC. Isto simplifica o processo através da criação automática de pontos finais do PSC e é particularmente benéfico para os programadores de ML que não têm autorizações para criar recursos de rede, como regras de encaminhamento, num projeto.
Para começar, o administrador de rede tem de estabelecer uma política de ligação de serviços. Esta política é uma configuração única por projeto e rede que permite à Vertex AI (classe de serviço gcp-vertexai) gerar pontos finais PSC nos seus projetos e redes.
Em seguida, pode criar pontos finais através da configuração de automatização do PSC e, depois, implementar os seus modelos. Assim que a implementação estiver concluída, as informações relevantes do ponto final do PSC estão acessíveis nos pontos finais.
Limitações
- Os VPC Service Controls não são suportados.
- Aplica-se um limite regional de 500 pontos finais às configurações de automatização do PSC.
- Os resultados da automatização do PSC são eliminados quando não é implementado nenhum modelo ou quando está em processo de implementação no ponto final. Após a limpeza e a implementação subsequente do modelo, os novos resultados da automatização apresentam endereços IP distintos e regras de encaminhamento.
Crie uma política de ligação de serviço
Tem de ser um administrador de rede para criar a política de ligação de serviço.
É necessária uma política de ligação de serviço para permitir que a Vertex AI crie pontos finais PSC nas suas redes. Sem uma política válida, a automatização falha com um erro CONNECTION_POLICY_MISSING.
Crie a sua política de ligação de serviço.
- POLICY_NAME: um nome especificado pelo utilizador para a política.
PROJECT_ID: O ID do projeto de serviço onde está a criar recursos do Vertex AI.
VPC_PROJECT: o ID do projeto onde se encontra a sua VPC do cliente. Para a configuração de uma única VPC, isto é o mesmo que
$PROJECT. Para a configuração da VPC partilhada, este é o projeto anfitrião da VPC.NETWORK_NAME: o nome da rede para a qual fazer a implementação.
REGION: a região da rede.
PSC_SUBNETS: as sub-redes do Private Service Connect a usar.
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_SUBNETSConsulte a sua política de ligação de serviços.
gcloud network-connectivity service-connection-policies list \ --project=VPC_PROJECT -–region=REGION
Para uma configuração de VPC única, um exemplo tem o seguinte aspeto:
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
Crie o ponto final de inferência online com a configuração de automatização do PSC
Na app PSCAutomationConfig, verifique se o projectId está na lista de autorizações.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- REGION: a região onde está a usar o Vertex AI.
- VERTEX_AI_PROJECT_ID: o ID do Google Cloud projeto onde está a criar o ponto final de inferência online.
- VERTEX_AI_ENDPOINT_NAME: o nome a apresentar do ponto final de previsão online.
- 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 do pedido:
{
{
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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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 experimentar este exemplo, siga as Pythoninstruçõ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 Python 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.
Substitua o seguinte:
VERTEX_AI_PROJECT_ID: o ID do Google Cloud projeto onde está a criar o ponto final de inferência onlineREGION: a região onde está a usar o Vertex AIVERTEX_AI_ENDPOINT_NAME: o nome a apresentar do ponto final de inferência onlineNETWORK_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,
)
Implemente o modelo
Depois de criar o ponto final de inferência online com o Private Service Connect ativado, implemente o modelo no mesmo seguindo os passos descritos em Implemente um modelo num ponto final.
Crie um ponto final do PSC manualmente
Obtenha o URI do anexo de serviço
Quando implementa o modelo, é criado um anexo de serviço para o ponto final de inferência online. Esta associação de serviço representa o serviço de inferência online do Vertex AI que está a ser exposto à sua rede VPC. Execute o comando gcloud ai endpoints describe para receber o URI do anexo de serviço.
Apresente apenas o valor
serviceAttachmentdos detalhes do ponto final:gcloud ai endpoints describe ENDPOINT_ID \ --project=VERTEX_AI_PROJECT_ID \ --region=REGION \ | grep -i serviceAttachmentSubstitua o seguinte:
ENDPOINT_ID: o ID do seu ponto final de inferência onlineVERTEX_AI_PROJECT_ID: o ID do Google Cloud projeto onde criou o seu ponto final de inferência onlineREGION: a região para este pedido
O resultado é semelhante ao seguinte:
serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1Anote a string completa no campo
serviceAttachment. Este é o URI do anexo de serviço.
Crie uma regra de encaminhamento
Pode reservar um endereço IP interno e criar uma regra de encaminhamento com esse endereço. Para criar a regra de encaminhamento, precisa do URI do anexo de serviço do passo 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 o seguinte:
ADDRESS_NAME: um nome para o endereço IP internoVPC_PROJECT_ID: o ID do Google Cloud projeto que aloja a sua rede VPC. Se o ponto final de inferência online e a regra de encaminhamento do Private Service Connect estiverem alojados no mesmo projeto, useVERTEX_AI_PROJECT_IDpara este parâmetro.REGION: a Google Cloud região onde a regra de encaminhamento do Private Service Connect vai ser criadaSUBNETWORK: o nome da sub-rede da VPC que contém o endereço IPINTERNAL_IP_ADDRESS: o endereço IP interno a reservar. Este parâmetro é opcional.- Se este parâmetro for especificado, o endereço IP tem de estar no intervalo de endereços IP principal da sub-rede. O endereço IP pode ser um endereço RFC 1918 ou uma sub-rede com intervalos não RFC.
- Se este parâmetro for omitido, é atribuído automaticamente um endereço IP interno.
- Para mais informações, consulte o artigo 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 é apresentado o estado
RESERVEDpara o endereço IP.Para criar a regra de encaminhamento e direcioná-la para o anexo do serviço de inferência online, 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 o seguinte:
PSC_FORWARDING_RULE_NAME: um nome para a regra de encaminhamentoVPC_NETWORK_NAME: o nome da rede VPC onde o ponto final vai ser criadoSERVICE_ATTACHMENT_URI: o anexo de serviço que anotou anteriormente
Para verificar se a associação de serviço aceita o ponto final, 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 é apresentado um estado
ACCEPTEDno campopscConnectionStatus.
Obtenha o endereço IP interno
Se não especificou um valor para INTERNAL_IP_ADDRESS quando criou a regra de encaminhamento, pode obter o endereço que foi atribuído automaticamente através do 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 o seguinte:
VERTEX_AI_PROJECT_ID: o ID do seu projetoREGION: o nome da região para este pedido
Opcional: obtenha o ponto final do PSC a partir do resultado da automatização do PSC
Pode obter o endereço IP gerado e a regra de encaminhamento a partir do ponto final de inferência. Segue-se 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"
},
]
}
Seguem-se alguns detalhes de processamento de erros.
- A falha da automatização não afeta o resultado da implementação do modelo.
- O êxito ou a falha da operação é indicado no estado.
- Se for bem-sucedida, é apresentado o endereço IP e a regra de encaminhamento.
- Se não for bem-sucedida, é apresentada uma mensagem de erro.
- As configurações de automatização são removidas quando não existem modelos implementados ou em processo de implementação no ponto final. Isto resulta numa alteração ao endereço IP e à regra de encaminhamento se um modelo for implementado mais tarde.
- A automatização com falhas não é recuperada. Em caso de falha, pode continuar a criar o ponto final do PSC manualmente. Consulte o artigo Crie o ponto final do PSC manualmente.
Obtenha inferências online
A obtenção de inferências online a partir de um ponto final com o Private Service Connect é semelhante à obtenção de inferências online a partir de pontos finais públicos, exceto pelas seguintes considerações:
- O pedido tem de ser enviado a partir de um projeto que foi especificado no
projectAllowlistquando o ponto final de inferência online foi criado. - Se o acesso global não estiver ativado, o pedido tem de ser enviado a partir da mesma região.
- Existem duas portas abertas, a 443 com TLS a usar um certificado autoassinado e a 80 sem TLS. Ambas as portas suportam HTTP e gRPC. Todo o tráfego permanece na sua rede privada e não atravessa a Internet pública.
- A prática recomendada é usar o HTTPS com o certificado autoassinado obtido a partir da inferência online da Vertex AI ou implementar o seu próprio certificado autoassinado.
Para obter inferências, tem de ser estabelecida uma ligação através do endereço IP estático do ponto final, a menos que seja criado um registo DNS para o endereço IP interno. Por exemplo, envie os pedidos
predictpara o seguinte ponto final:http://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predictSubstitua
INTERNAL_IP_ADDRESSpelo endereço IP interno que reservou anteriormente.Para pedidos gRPC: Para garantir a identificação adequada do ponto final para pedidos gRPC, é necessário incluir o cabeçalho
x-vertex-ai-endpoint-id. Isto é necessário porque as informações do ponto final não são transmitidas no caminho do pedido para a comunicação gRPC.
Crie um registo DNS para o endereço IP interno
Recomendamos que crie um registo DNS para poder obter inferências online do seu ponto final sem ter de especificar o endereço IP interno.
Para mais informações, consulte o artigo Outras formas de configurar o DNS.
Crie uma zona DNS privada com o comando
gcloud dns managed-zones create. Esta zona está associada à rede da VPC na qual 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 o seguinte:
ZONE_NAME: o nome da zona DNS
Para criar um registo 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 o seguinte:
VERTEX_AI_PROJECT_NUMBER: o número do projeto do seu projetoVERTEX_AI_PROJECT_ID. Pode localizar este número do projeto na Google Cloud consola. Para mais informações, consulte o artigo Identificar projetos.INTERNAL_IP_ADDRESS: o endereço IP interno do seu ponto final de inferência online
Agora, pode enviar os seus pedidos de
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 online da Vertex AI está protegida com um certificado autoassinado. Uma vez que este certificado não é assinado por uma AC (autoridade de certificação) fidedigna, os clientes que tentam estabelecer uma ligação HTTPS têm de ser configurados explicitamente para confiar nele. O certificado autoassinado obtido a partir do ponto final de inferência online do Vertex AI é válido durante 10 anos. Uma vez que este certificado não é exclusivo de um ponto final específico, pode ser usado um único certificado para todas as integrações da loja de fidedignidade. Seguem-se os passos de nível elevado necessários para estabelecer uma ligação HTTPS à inferência online do Vertex AI:
Configurar DNS: o certificado autoassinado inclui o nome alternativo de entidade (SAN)
*.prediction.p.vertexai.goog. Tem de criar um registo DNS na sua rede que corresponda a este formato.Para ver detalhes de implementação, consulte o artigo Crie um registo DNS para o endereço IP interno.
Estabeleça a confiança do cliente: o cliente tem de transferir o certificado autossinado e adicioná-lo à respetiva loja de confiança local.
Estabelecer ligação HTTPS: estabelecer uma ligação HTTPS à inferência online da Vertex AI requer a utilização do nome do domínio totalmente qualificado (FQDN). Isto é necessário porque o serviço usa um certificado SSL com carateres universais válido para o domínio
*.prediction.p.vertexai.goog.
Os passos seguintes demonstram como transferir o certificado de inferência online da Vertex AI e adicioná-lo ao repositório de confiança local em sistemas Linux baseados em Debian, como o Debian 11 e o Ubuntu.
Atualize os pacotes do SO e instale o OpenSSL:
sudo apt update && sudo apt install opensslExecute o seguinte comando a partir do seu diretório base para transferir o certificado de inferência online do Vertex AI e guardá-lo num ficheiro com o nome
vertex_certificate.crtno seu diretório atual. Faça as seguintes substituições:- ENDPOINT_ID: ID do ponto final do modelo implementado
- REGION: a região onde o seu ponto final reside
- VERTEX_AI_PROJECT_NUMBER: o número do projeto. Pode localizar este número do projeto na Google Cloud consola. Para mais informações, consulte 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 a loja de fidedignidade do sistema:
sudo mv vertex_certificate.crt /usr/local/share/ca-certificatesAtualize a lista de CAs fidedignas do Gestor de certificados. Deverá ver um resultado a confirmar que foi adicionado um certificado.
sudo update-ca-certificatesEnvie um pedido
predictpara o seguinte URL, fazendo estas substituições:- INTERNAL_IP_ADDRESS: o endereço IP interno do seu ponto final de inferência online
- 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 de certificados personalizados para TLS
Para as organizações que precisam de um controlo preciso sobre a gestão e a rotação de certificados para pontos finais de inferência online da Vertex AI, pode usar um certificado gerido pelo cliente com um Application Load Balancer (HTTPS) Google Cloudregional.
Esta arquitetura funciona com o certificado predefinido do Vertex AI, o que lhe dá controlo direto.
Seguem-se os passos de implementação de nível superior:
Crie um certificado gerido pelo cliente:
- Gere um certificado autoassinado (ou use a sua CA) para um domínio personalizado.
- Este domínio tem de usar o sufixo
.prediction.p.vertexai.googpara garantir que corresponde ao certificado de caráter universal do Vertex AI, por exemplo,my-endpoint.prediction.vertexai.goog.
Implemente um balanceador de carga de aplicações regional (HTTPS):
- Configure o balanceador de carga para usar o seu certificado gerido pelo cliente para o frontend HTTPS.
- Defina o serviço de back-end para um grupo de pontos finais da rede (NEG) do Private Service Connect (PSC). Este NEG vai apontar para o serviço anexado ao serviço publicado do seu ponto final do modelo da Vertex AI.
Configure o DNS:
- Crie um registo A de DNS na sua zona de DNS.
- Este registo tem de mapear o seu domínio personalizado totalmente qualificado (por exemplo,
my-endpoint.prediction.p.vertexai.goog) para o endereço IP do Application Load Balancer regional.
Atualize a loja de confiança local:
- Para o cliente autenticar o servidor, o certificado do Application Load Balancer (ou a respetiva AC emissora) tem de ser importado para o arquivo de fidedignidade local.
Agora, pode enviar os seus pedidos 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 obtenção de inferências online
As secções seguintes fornecem exemplos de como pode enviar o pedido predict 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 ficheiro JSON
que contenha a entrada do pedido.
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
Segue-se um exemplo de como pode enviar o pedido predict para a zona DNS através do 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 que especificou no comando
gcloud dns record-sets create.
Práticas recomendadas
Quando é implementado um novo ponto final, o anexo de serviço pode ser atualizado. Verifique sempre o anexo de serviço e o estado do ponto final do PSC antes de fazer a chamada de inferência. Seguem-se as práticas recomendadas para o fazer:
- Se um ponto final não tiver implementações ativas, o Vertex AI pode eliminar a associação de serviço e recriá-la. Certifique-se de que o ponto final do PSC está num estado ligado (recriando a regra de encaminhamento) quando a associação de serviço é recriada.
- Quando um ponto final tem um modelo implementado ativo, a associação de serviço não é alterada. Para manter a associaçã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 anular a implementação da versão anterior.
- A Vertex AI permite até 1000 associações por anexo de serviço.
- A regra de encaminhamento também tem um limite de quota. Para ver detalhes, consulte o artigo Quotas e limites do Cloud Load Balancing.
Limitações
Os pontos finais da Vertex AI com o Private Service Connect estão sujeitos às seguintes limitações:
- A implementação de modelos do Gemini otimizados não é suportada.
- A saída privada a partir do ponto final não é suportada. Uma vez que as regras de encaminhamento do Private Service Connect são unidirecionais, não é possível aceder a outras cargas de trabalho privadas no seu contentor.Google Cloud
- Não é possível alterar o valor de
projectAllowlistde um ponto final. - O Vertex Explainable AI não é suportado.
- Antes de eliminar um ponto final, tem de anular a implementação do modelo nesse ponto final.
- Se todos os modelos não forem implementados durante mais de 10 minutos, a associação de serviço pode ser eliminada. Verifique o estado da ligação do Private Service Connect. Se for
CLOSED, recrie a regra de encaminhamento. - Depois de eliminar o seu ponto final, não pode reutilizar esse nome de ponto final durante um período máximo de 7 dias.
- Um projeto pode ter até 10 valores
projectAllowlistdiferentes nas respetivas configurações do Private Service Connect.