Com o Private Service Connect, é possível acessar a Vertex AI on-line previsões com segurança de vários projetos de consumidor e redes VPC sem precisar de endereços IP públicos, acesso à Internet pública ou intervalo de endereços IP internos com peering explícito.
Recomendamos o Private Service Connect para uso de previsão on-line casos 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 VPC para enviar tráfego unidirecionalmente Serviço de previsão 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).
Criar o endpoint de previsão on-line
Use um dos métodos a seguir para criar um endpoint de previsão on-line com Private Service Connect ativado:
Console
No console do Google Cloud, na Vertex AI, acesse Página de 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 do Google Cloud; 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á.
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"] } }
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.
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)
# 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"],
),
)
Substitua:
VERTEX_AI_PROJECT_ID
: o ID do projeto do Google Cloud. em que você está criando o endpoint de previsão on-lineREGION
: 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 APIALLOWED_PROJECTS
: uma lista separada por vírgulas do Google Cloud IDs de projeto, 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á.
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')
Implantar o modelo
Depois de criar o endpoint de previsão on-line com Private Service Connect ativado, implante seu modelo nele, seguindo as as etapas descritas em Implantar um modelo em um endpoint.
Acessar o URI do anexo de serviço
Quando você implanta o modelo, um anexo de serviço é criado para
endpoint de previsão on-line. Esse anexo de serviço representa o
o serviço de previsão on-line da Vertex AI que está sendo exposto aos seus
rede VPC. Execute o comando
Comando gcloud ai endpoints describe
para receber o URI do anexo de serviço.
Liste apenas o valor
serviceAttachment
dos detalhes do endpoint:gcloud ai endpoints describe ENDPOINT_ID \ --project=VERTEX_AI_PROJECT_ID \ --region=REGION \ | grep -i serviceAttachment
Substitua:
ENDPOINT_ID
: o ID do endpoint de previsão on-lineVERTEX_AI_PROJECT_ID
: o ID do projeto do Google Cloud em que Você criou seu endpoint de previsão on-lineREGION
: a região desta solicitação
O resultado será assim:
serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
Anote 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_ADDRESS
Substitua:
ADDRESS_NAME
: um nome para o endereço IP internoVPC_PROJECT_ID
: o ID do projeto do Google Cloud que hospeda sua rede VPC. Se o endpoint de previsão on-line e regra de encaminhamento do Private Service Connect são hospedados no mesmo projeto, useVERTEX_AI_PROJECT_ID
para esse parâmetro.REGION
: a região do Google Cloud em que o 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_ID
Na 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 previsão 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_URI
Substitua:
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=REGION
Na resposta, verifique se um status
ACCEPTED
aparece para o campopscConnectionStatus
.
Opcional: ver 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.
Receber previsões on-line
Como receber previsões on-line de um endpoint com o Private Service Connect é semelhante a receber previsões on-line de endpoints públicos, exceto conforme as seguintes considerações:
- A solicitação precisa ser enviada de um projeto especificado no
projectAllowlist
quando o endpoint de previsão on-line foi criado. - Se o acesso global não estiver ativado, a solicitação precisa ser enviada da mesma região.
Para receber previsões usando REST, você precisa se conectar usando o namespace estático do endpoint Endereço IP, a menos que você crie um registro DNS para o endereço IP interno. Para exemplo, você deve enviar seu
predict
solicitações para no endpoint a seguir:https://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
Substitua
INTERNAL_IP_ADDRESS
pelo endereço IP interno que você reservou anteriormente.Este é um exemplo de como enviar a predict solicitação 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=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.
Opcional: crie um registro DNS para o endereço IP interno
Recomendamos que você crie um registro DNS para receber previsões 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_ID
Substitua:
VERTEX_AI_PROJECT_NUMBER
: o número do projetoVERTEX_AI_PROJECT_ID
. Você pode localizar isso número do projeto no console do Google Cloud. Para mais informações, consulte Como identificar projetos.INTERNAL_IP_ADDRESS
: o endereço IP interno da sua endpoint de previsão on-line
Agora você pode enviar suas solicitações
predict
para:https://ENDPOINT_ID.REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
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
.
Limitações
Os endpoints da Vertex AI com o Private Service Connect estão sujeitos à as seguintes limitações:
- 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 do Google Cloud não são acessíveis dentro do contêiner.
- Não é possível alterar a configuração do
projectAllowlist
de um endpoint. - Não há suporte para a geração de registros de acesso.
- A geração de registros de solicitações e respostas não é compatível.
- Não há suporte para a Vertex Explainable AI.
Limitações de visualização
No pré-lançamento, as seguintes limitações adicionais se aplicam:
- Se você cancelar a implantação de todos os modelos do Private Service Connect e reimplantar uma regra de encaminhamento, mesmo que o anexo de serviço é o mesmo.
- Todos os endpoints precisam ter a mesma configuração de
projectAllowlist
.