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

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

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

  1. 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_SUBNETS
    
  2. Consulte 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"
    }
  }
}
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 gcloud ai endpoints describe para receber o URI do anexo de serviço.

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

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

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 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 predict para o seguinte ponto final:

    http://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.

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.

  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:

    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:

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

  2. Estabeleça a confiança do cliente: o cliente tem de transferir o certificado autossinado e adicioná-lo à respetiva loja de confiança local.

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

  1. Atualize os pacotes do SO e instale o OpenSSL:

    sudo apt update && sudo apt install openssl
    
  2. Execute 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.crt no 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.crt
    
    
  3. Mova o certificado para a loja de fidedignidade do sistema:

    sudo mv vertex_certificate.crt /usr/local/share/ca-certificates
    
  4. Atualize a lista de CAs fidedignas do Gestor de certificados. Deverá ver um resultado a confirmar que foi adicionado um certificado.

    sudo update-ca-certificates
    
  5. Envie um pedido predict para 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:

  1. 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.goog para garantir que corresponde ao certificado de caráter universal do Vertex AI, por exemplo, my-endpoint.prediction.vertexai.goog.
  2. Implemente um balanceador de carga de aplicações regional (HTTPS):

  3. 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.
  4. 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 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?