Use pontos finais privados dedicados baseados no Private Service Connect para inferência online

O Private Service Connect permite-lhe aceder às inferências online da Vertex AI em segurança a partir de 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 necessária 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 do Vertex AI para Python, pode especificar opcionalmente um tempo limite de pedido diferente especificando um novo valor, conforme mostrado no exemplo seguinte.inference_timeout O valor de tempo limite máximo é de 3600 segundos (1 hora).

Consola

  1. Na Google Cloud consola, no Vertex AI, aceda à página Previsão online.

    Aceda à previsão online

  2. Clique em Criar.

  3. Indique um nome a apresentar para o ponto final.

  4. Selecione Privado.

  5. Selecione Private Service Connect.

  6. Clique em Selecionar IDs dos projetos.

  7. Selecione os projetos a adicionar à lista de autorizações do ponto final.

  8. Clique em Continuar.

  9. Escolha as especificações do modelo. Para mais informações, consulte o artigo Implemente um modelo num ponto final.

  10. Clique em Criar para criar o seu ponto final e implementar o modelo no mesmo.

  11. 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 Google Cloud onde está a criar o ponto final de previsão online.
  • REGION: 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 inferenceTimeout opcional.

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"
    }
  }
}
Tome nota do 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 online
  • REGION: a região onde está a usar o Vertex AI
  • VERTEX_AI_ENDPOINT_NAME: o nome a apresentar do ponto final de inferência 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 inferência para o endpoint do 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 valor inference_timeout opcional.
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.
  • É aplicado 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.

  1. Crie a política de ligação do 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_SUBNETS
    
  2. Veja 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 uma única VPC, 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"
    }
  }
}
Tome nota do 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 online
  • REGION: a região onde está a usar o Vertex AI
  • VERTEX_AI_ENDPOINT_NAME: o nome a apresentar do ponto final de inferência online
  • NETWORK_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 para obter o URI do anexo de serviço.gcloud ai endpoints describe

  1. Apresente apenas o valor serviceAttachment dos detalhes do ponto final:

    gcloud ai endpoints describe ENDPOINT_ID \
    --project=VERTEX_AI_PROJECT_ID \
    --region=REGION \
    | grep -i serviceAttachment
    

    Substitua o seguinte:

    • ENDPOINT_ID: o ID do seu ponto final de inferência online
    • VERTEX_AI_PROJECT_ID: o ID do Google Cloud projeto onde criou o seu ponto final de inferência online
    • REGION: a região para este pedido

    O resultado é semelhante ao seguinte:

    serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
    
  2. Tome nota da 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.

  1. 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 o seguinte:

    • ADDRESS_NAME: um nome para o endereço IP interno
    • VPC_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, use VERTEX_AI_PROJECT_ID para este parâmetro.
    • REGION: a Google Cloud região onde a regra de encaminhamento do Private Service Connect vai ser criada
    • SUBNETWORK: o nome da sub-rede da VPC que contém o endereço IP
    • INTERNAL_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 dentro do 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.
  2. 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 é apresentado o estado RESERVED para o endereço IP.

  3. 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_URI
    

    Substitua o seguinte:

    • PSC_FORWARDING_RULE_NAME: um nome para a regra de encaminhamento
    • VPC_NETWORK_NAME: o nome da rede da VPC onde o ponto final vai ser criado
    • SERVICE_ATTACHMENT_URI: o anexo de serviço que anotou anteriormente
  4. 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=REGION
    

    Na resposta, verifique se é apresentado um estado ACCEPTED no campo pscConnectionStatus.

Opcional: 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 projeto
  • REGION: 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 projectAllowlist quando 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 vai estar na rede privada e não vai passar pela Internet pública.
  • 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 predict para o seguinte ponto final:

    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 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.

  • Ligações seguras (porta 443): quando estabelece ligações seguras através da porta 443, o servidor usa um certificado autoassinado. Para continuar com a associação, recomendamos uma das seguintes abordagens:

    • Opção 1: ignorar a validação de certificados: configure o cliente para ignorar a validação de certificados e estabelecer a ligação através do endereço IP do servidor ou de um método de resolução de DNS preferencial.
    • Opção 2: integração do repositório fidedigno: obtenha o certificado autoassinado do servidor, adicione-o ao repositório fidedigno local do sistema cliente e use o nome DNS no formato *.prediction.p.vertexai.goog para estabelecer a ligação. Este método garante a comunicação segura através da validação de certificados.

As secções seguintes fornecem exemplos de como pode enviar o pedido predict com 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())

Opcional: crie um registo de DNS para o endereço IP interno

Recomendamos que crie um registo DNS para poder obter inferências online a partir 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.

  1. 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
  2. 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_ID
    

    Substitua o seguinte:

    • VERTEX_AI_PROJECT_NUMBER: o número do projeto do seu projeto VERTEX_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 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
    

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.

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 projectAllowlist de 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 projectAllowlist diferentes nas respetivas configurações do Private Service Connect.

O que se segue?