Usar o Private Service Connect para acessar a IA generativa na Vertex AI do local


Os hosts locais podem acessar a IA generativa na Vertex AI por meio da Internet pública ou de modo privado por meio de uma arquitetura de rede híbrida que usa o Private Service Connect (PSC) pelo Cloud VPN ou Cloud Interconnect. As duas opções oferecem criptografia SSL/TLS. No entanto, a opção privada oferece um desempenho muito melhor e, portanto, é recomendada para aplicativos essenciais.

Neste tutorial, você usa a VPN de alta disponibilidade (VPN de alta disponibilidade) para acessar a IA generativa na Vertex AI publicamente, por meio do Cloud NAT, e de modo particular, entre duas redes de Nuvem privada virtual (VPC) que podem servir de base para conectividade particular multicloud e no local.

Este tutorial é destinado a administradores de redes empresariais, cientistas de dados e pesquisadores que estão familiarizados com a Vertex AI, a nuvem privada virtual (VPC), o console do Google Cloud e o Cloud Shell. Conhecer a IA generativa na Vertex AI é útil, mas não é obrigatório.

Diagrama de arquitetura do uso do Private Service Connect para acessar a IA generativa na Vertex AI.

Objetivos

  • Crie duas redes VPC, conforme mostrado no diagrama anterior:
    • Uma (onprem-vpc) representa uma rede local.
    • O outro (vertex-networking-vpc) serve para acessar a API REST para IA generativa na Vertex AI.
  • Implante gateways de VPN de alta disponibilidade, túneis do Cloud VPN e Cloud Routers para conectar vertex-networking-vpc e onprem-vpc.
  • Crie um endpoint Private Service Connect (PSC) para encaminhar solicitações à API REST de IA generativa.
  • Configure uma rota divulgada personalizada do Cloud Router em vertex-networking-vpc para anunciar rotas do endpoint do Private Service Connect para onprem-vpc.
  • Crie uma instância de VM do Compute Engine em onprem-vpc para representar um aplicativo cliente que envia solicitações para a API REST de IA generativa por VPN de alta disponibilidade.

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.

Antes de começar

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Select or create a Google Cloud project.

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Se você não for o proprietário do projeto, ele precisará conceder a você o papel roles/resourcemanager.projectIamAdmin do IAM. Você precisa ter esse papel para conceder papéis e permissões do IAM a você mesmo e a contas de serviço.
  5. Abra o Cloud Shell para executar os comandos listados neste tutorial. O Cloud Shell é um ambiente shell interativo para o Google Cloud que permite gerenciar projetos e recursos a partir do navegador da Web.
  6. No Cloud Shell, defina o projeto atual com o ID do projeto do Google Cloud e armazene o mesmo projectid variável de shell:
      projectid="PROJECT_ID"
      gcloud config set project ${projectid}
    substitua PROJECT_ID pelo ID do projeto. Se necessário, localize o ID do projeto no console do Google Cloud. Para mais informações, consulte Encontrar o ID do projeto.
  7. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iap.tunnelResourceAccessor, roles/iam.serviceAccountCreator, roles/iam.serviceAccountUser, roles/iam.serviceAccountDeleter, roles/resourcemanager.projectIamAdmin, roles/servicedirectory.editor, roles/servicemanagement.quotaAdmin, roles/aiplatform.user

    gcloud projects add-iam-policy-binding PROJECT_ID --member="USER_IDENTIFIER" --role=ROLE
    • Replace PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.
  8. Enable the DNS, IAM, Compute Engine, Service Usage, and Vertex AI APIs:

    gcloud services enable dns.googleapis.com iam.googleapis.com compute.googleapis.com serviceusage.googleapis.com aiplatform.googleapis.com

Crie duas redes VPC: vertex-networking-vpc e onprem-vpc

Nesta seção, você cria duas redes VPC: uma para ser a rede principal para acessar a API IA generativa da Vertex AI (também conhecida como GenAI) e outra para simular a rede local.

Crie as redes VPC

  1. Crie a rede VPC para acessar a API IA generativa (vertex-networking-vpc):

    gcloud compute networks create vertex-networking-vpc --subnet-mode custom
    
  2. Crie a rede VPC para simular a rede local (onprem-vpc):

    gcloud compute networks create onprem-vpc --subnet-mode custom
    
  3. Na rede onprem-vpc, crie uma sub-rede chamada onprem-vpc-subnet1, com um intervalo IPv4 principal de 172.16.10.0/24:

    gcloud compute networks subnets create onprem-vpc-subnet1 \
       --range 172.16.10.0/24 \
       --network onprem-vpc \
       --region us-central1
    
  4. No console do Google Cloud, acesse a guia Redes no projeto atual na página Rede VPC.

    Acessar a rede VPC

  5. Na lista de redes VPC, verifique se as duas redes foram criadas: vertex-networking-vpc e onprem-vpc.

  6. Na página Rede VPC, clique na guia Sub-redes no projeto atual.

  7. Na lista de sub-redes VPC, verifique se a sub-rede onprem-vpc-subnet1 foi criada na rede onprem-vpc.

Configurar conectividade híbrida

Nesta seção, você cria dois gateways de VPN de alta disponibilidade conectados entre si. Um fica na rede VPC vertex-networking-vpc. O outro fica na rede VPC onprem-vpc. Cada gateway contém um Cloud Router e um par de túneis VPN.

Criar os gateways de VPN de alta disponibilidade

  1. No Cloud Shell, crie o gateway de VPN de alta disponibilidade para a rede VPC vertex-networking-vpc:

    gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \
       --network vertex-networking-vpc \
       --region us-central1
    
  2. Crie o gateway de VPN de alta disponibilidade para a rede VPC onprem-vpc:

    gcloud compute vpn-gateways create onprem-vpn-gw1 \
       --network onprem-vpc \
       --region us-central1
    
  3. No console do Google Cloud, acesse a guia Gateways do Cloud VPN na página VPN.

    Acessar a VPN

  4. Na lista de gateways da VPN, verifique se os dois gateways (vertex-networking-vpn-gw1 e onprem-vpn-gw1) foram criados e se cada um tem dois endereços IP.

Criar Cloud Routers

  1. No Cloud Shell, crie um Cloud Router para a rede VPC vertex-networking-vpc:

    gcloud compute routers create vertex-networking-vpc-router1 \
       --region us-central1\
       --network vertex-networking-vpc \
       --asn 65001
    
  2. Crie um Cloud Router para a rede VPC onprem-vpc:

    gcloud compute routers create onprem-vpc-router1 \
       --region us-central1\
       --network onprem-vpc\
       --asn 65002
    

Adicionar um gateway do Cloud NAT à rede VPC onprem-vpc

Nesta etapa, você adiciona um gateway do Cloud NAT ao Cloud Router para a rede VPC onprem-vpc. Um gateway do Cloud NAT oferece conectividade de saída para instâncias de máquina virtual (VM) do Compute Engine que não têm endereços IP externos.

  1. No Cloud Shell, adicione um gateway do Cloud NAT ao Cloud Router onprem-vpc-router1:

    gcloud compute routers nats create us-central-cloudnat-onprem \
       --router=onprem-vpc-router1 \
       --auto-allocate-nat-external-ips \
       --nat-all-subnet-ip-ranges \
       --region us-central1
    
  2. No console do Google Cloud, acesse a página do Cloud Routers.

    Acesse o Cloud Routers

  3. Na lista do Cloud Router, verifique se vertex-networking-vpc-router1 e onprem-vpc-router1 foram criados. Talvez seja necessário atualizar a guia do navegador do console do Google Cloud para visualizar os novos valores.

  4. Na lista de Cloud Routers, clique em onprem-vpc-router1.

  5. Na página Detalhes do roteador, verifique se o gateway us-central-cloudnat-onprem do Cloud NAT foi criado.

Criar túneis VPN

  1. Na rede vertex-networking-vpc, crie um túnel de VPN chamado vertex-networking-vpc-tunnel0:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \
       --peer-gcp-gateway onprem-vpn-gw1 \
       --region us-central1 \
       --ike-version 2 \
       --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
       --router vertex-networking-vpc-router1 \
       --vpn-gateway vertex-networking-vpn-gw1 \
       --interface 0
    
  2. Na rede vertex-networking-vpc, crie um túnel de VPN chamado vertex-networking-vpc-tunnel1:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \
       --peer-gcp-gateway onprem-vpn-gw1 \
       --region us-central1 \
       --ike-version 2 \
       --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
       --router vertex-networking-vpc-router1 \
       --vpn-gateway vertex-networking-vpn-gw1 \
       --interface 1
    
  3. Na rede onprem-vpc, crie um túnel de VPN chamado onprem-vpc-tunnel0:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \
       --peer-gcp-gateway vertex-networking-vpn-gw1 \
       --region us-central1\
       --ike-version 2 \
       --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
       --router onprem-vpc-router1 \
       --vpn-gateway onprem-vpn-gw1 \
       --interface 0
    
  4. Na rede onprem-vpc, crie um túnel de VPN chamado onprem-vpc-tunnel1:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \
       --peer-gcp-gateway vertex-networking-vpn-gw1 \
       --region us-central1\
       --ike-version 2 \
       --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
       --router onprem-vpc-router1 \
       --vpn-gateway onprem-vpn-gw1 \
       --interface 1
    
  5. No Console do Google Cloud, acesse a página VPN.

    Acessar a VPN

  6. Na lista de túneis de VPN, verifique se os quatro túneis de VPN foram criados.

Criar sessões do BGP

O Cloud Router usa o protocolo de gateway de borda (BGP) para trocar rotas entre a rede VPC (neste caso, vertex-networking-vpc) e a rede local (representada por onprem-vpc). No Cloud Router, você configura uma interface e um peering do BGP para o roteador local. A interface e a configuração de peering do BGP formam uma sessão do BGP. Nesta seção, você cria duas sessões do BGP para vertex-networking-vpc e duas para onprem-vpc.

Depois de configurar as interfaces e os peerings do BGP entre os roteadores, eles começarão a trocar rotas de forma automática.

Estabeleça sessões do BGP para vertex-networking-vpc

  1. No Cloud Shell, na rede vertex-networking-vpc, crie uma interface do BGP para vertex-networking-vpc-tunnel0:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
       --interface-name if-tunnel0-to-onprem \
       --ip-address 169.254.0.1 \
       --mask-length 30 \
       --vpn-tunnel vertex-networking-vpc-tunnel0 \
       --region us-central1
    
  2. Na rede vertex-networking-vpc, crie um peering do BGP para bgp-onprem-tunnel0:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
       --peer-name bgp-onprem-tunnel0 \
       --interface if-tunnel0-to-onprem \
       --peer-ip-address 169.254.0.2 \
       --peer-asn 65002 \
       --region us-central1
    
  3. Na rede vertex-networking-vpc, crie uma interface do BGP para vertex-networking-vpc-tunnel1:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
       --interface-name if-tunnel1-to-onprem \
       --ip-address 169.254.1.1 \
       --mask-length 30 \
       --vpn-tunnel vertex-networking-vpc-tunnel1 \
       --region us-central1
    
  4. Na rede vertex-networking-vpc, crie um peering do BGP para bgp-onprem-tunnel1:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
       --peer-name bgp-onprem-tunnel1 \
       --interface if-tunnel1-to-onprem \
       --peer-ip-address 169.254.1.2 \
       --peer-asn 65002 \
       --region us-central1
    

Estabeleça sessões do BGP para onprem-vpc

  1. Na rede onprem-vpc, crie uma interface do BGP para onprem-vpc-tunnel0:

    gcloud compute routers add-interface onprem-vpc-router1 \
       --interface-name if-tunnel0-to-vertex-networking-vpc \
       --ip-address 169.254.0.2 \
       --mask-length 30 \
       --vpn-tunnel onprem-vpc-tunnel0 \
       --region us-central1
    
  2. Na rede onprem-vpc, crie um peering do BGP para bgp-vertex-networking-vpc-tunnel0:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
       --peer-name bgp-vertex-networking-vpc-tunnel0 \
       --interface if-tunnel0-to-vertex-networking-vpc \
       --peer-ip-address 169.254.0.1 \
       --peer-asn 65001 \
       --region us-central1
    
  3. Na rede onprem-vpc, crie uma interface do BGP para onprem-vpc-tunnel1:

    gcloud compute routers add-interface onprem-vpc-router1  \
       --interface-name if-tunnel1-to-vertex-networking-vpc \
       --ip-address 169.254.1.2 \
       --mask-length 30 \
       --vpn-tunnel onprem-vpc-tunnel1 \
       --region us-central1
    
  4. Na rede onprem-vpc, crie um peering do BGP para bgp-vertex-networking-vpc-tunnel1:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
       --peer-name bgp-vertex-networking-vpc-tunnel1 \
       --interface if-tunnel1-to-vertex-networking-vpc \
       --peer-ip-address 169.254.1.1 \
       --peer-asn 65001 \
       --region us-central1
    

Valide a criação da sessão do BGP

  1. No Console do Google Cloud, acesse a página VPN.

    Acessar a VPN

  2. Na lista de túneis de VPN, verifique se o valor na coluna Status da sessão do BGP para cada um dos túneis mudou de Configurar sessão do BGP para O BGP foi estabelecido. Talvez seja necessário atualizar a guia do navegador do console do Google Cloud para visualizar os novos valores.

Criar o endpoint do Private Service Connect (PSC)

Nesta seção, você cria um endpoint do Private Service Connect (PSC) para APIs do Google que as instâncias de VM na rede onprem-vpc vão usar para acessar a API IA generativa da rede onprem-vpc.

O endpoint do Private Service Connect (PSC) é um endereço IP interno na rede onprem-vpc que pode ser acessado diretamente pelos clientes nessa rede. Esse endpoint é criado com a implantação de uma regra de encaminhamento que direciona o tráfego de rede correspondente ao endereço IP do endpoint do PSC para um pacote de APIs do Google: especificamente, o pacote todas as APIs.

O endereço IP do endpoint do PSC (192.168.0.1) será anunciado no Cloud Router vertex-networking-vpc-router como uma divulgação de roteador personalizada para a rede onprem-vpc em uma etapa posterior.

  1. Reserve um endereço IP interno global para atribuir ao endpoint:

    gcloud compute addresses create psc-googleapi-ip \
       --global \
       --purpose=PRIVATE_SERVICE_CONNECT \
       --addresses=192.168.0.1 \
       --network=vertex-networking-vpc
    
  2. Crie o endpoint com uma regra de encaminhamento que conecte o endpoint a APIs e serviços do Google:

    gcloud compute forwarding-rules create pscvertex \
       --global \
       --network=vertex-networking-vpc\
       --address=psc-googleapi-ip \
       --target-google-apis-bundle=all-apis
    
  3. Liste os endpoints do PSC configurados e verifique se o endpoint pscvertex foi criado:

    gcloud compute forwarding-rules list  \
       --filter target="(all-apis OR vpc-sc)" --global
    
  4. Encontre os detalhes do endpoint do PSC configurado e verifique se o endereço IP é 192.168.0.1:

    gcloud compute forwarding-rules describe \
       pscvertex --global
    

Criar divulgações de rota personalizadas para vertex-networking-vpc

Nesta seção, você cria uma divulgação de rota personalizada para vertex-networking-vpc-router1 (o Cloud Router para vertex-networking-vpc) para divulgar o endereço IP do endpoint do PSC para a rede onprem-vpc.

  1. No console do Google Cloud, acesse a página do Cloud Routers.

    Acesse o Cloud Routers

  2. Na lista de Cloud Routers, clique em vertex-networking-vpc-router1.

  3. Na página Detalhes do Router, clique em Editar.

  4. Na seção Rotas divulgadas, para Rotas, selecione Criar rotas personalizadas.

  5. Selecione a caixa de seleção Divulgar todas as sub-redes visíveis para o Cloud Router para continuar divulgando as sub-redes disponíveis para o Cloud Router. A ativação dessa opção imita o comportamento do Cloud Router no modo de divulgação padrão.

  6. Clique em Adicionar uma rota personalizada.

  7. Em Origem, selecione Intervalo de IP personalizado.

  8. Em Intervalo de endereços IP, insira o seguinte endereço IP:

    192.168.0.1
    
  9. Para Descrição, insira o seguinte texto:

    Custom route to advertise Private Service Connect endpoint IP address
    
  10. Clique em Concluído e depois em Salvar.

Valide se o onprem-vpc aprendeu as rotas divulgadas

  1. No console do Google Cloud, acesse a página Rotas.

    Acessar a página Rotas

  2. Na guia Rotas efetivas, faça o seguinte:

    1. Em Rede, escolha onprem-vpc.
    2. Em Região, escolha us-central1 (Iowa).
    3. Clique em Visualizar.
    4. Na lista de rotas, verifique se há entradas com nomes que começam com onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0 e onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1 e se ambas têm um Intervalo de IP de destino de 192.168.0.1/32. 192.168.0.1 é o endereço IP do endpoint do PSC.

      Se essas entradas não aparecerem imediatamente, aguarde alguns minutos e atualize a guia do navegador do console do Google Cloud.

Configurar uma instância de VM na rede local

Nesta seção, você cria uma instância de VM do Compute Engine na rede VPC onprem-vpc. Essa instância de VM simula um cliente local que se conecta ao endpoint do PSC e acessa a API IA generativa.

Crie uma conta de serviço gerenciada pelo usuário

Neste tutorial, você cria uma conta de serviço gerenciada pelo usuário de acordo com as práticas recomendadas do Compute Engine e do IAM.

  1. No Cloud Shell, execute os seguintes comandos, substituindo PROJECT_ID pelo ID do projeto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Crie a conta de serviço:

    gcloud iam service-accounts create user-managed-sa
    
  3. Atribua o papel do IAM de usuário da Vertex AI (roles/aiplatform.user) à conta de serviço:

    gcloud projects add-iam-policy-binding $projectid \
       --member="serviceAccount:user-managed-sa@$projectid.iam.gserviceaccount.com" \
       --role="roles/aiplatform.user"
    

Criar a instância de VM on-prem-client

Nesta etapa, você cria a instância de VM, que usa o endereço IP do Private Service Connect (192.168.0.1) para acessar as APIs do Google pela VPN de alta disponibilidade.

Para permitir que o Identity-Aware Proxy (IAP) se conecte às instâncias de VM, crie uma regra de firewall que:

  • Se aplica a todas as instâncias de VM que você quer tornar acessíveis por meio do IAP. Neste caso, há apenas on-prem-client.
  • Permite o tráfego TCP pela porta 22 do intervalo de IP 35.235.240.0/20. Esse intervalo contém todos os endereços IP que o IAP usa para o encaminhamento de TCP.
  1. Criar a instância de VM on-prem-client. O comando a seguir também instala os pacotes tcpdump e dnsutils, que contêm os utilitários tcpdump e dig que você vai usar mais tarde para validar as solicitações de API:

    gcloud compute instances create on-prem-client \
       --zone=us-central1-a \
       --image-family=debian-11 \
       --image-project=debian-cloud \
       --subnet=onprem-vpc-subnet1 \
       --scopes=https://www.googleapis.com/auth/cloud-platform \
       --no-address \
       --shielded-secure-boot \
       --service-account=user-managed-sa@$projectid.iam.gserviceaccount.com \
       --metadata startup-script="#! /bin/bash
          sudo apt-get update
          sudo apt-get install tcpdump dnsutils -y"
    
  2. Crie uma regra de firewall do IAP chamada ssh-iap-on-prem-vpc:

    gcloud compute firewall-rules create ssh-iap-on-prem-vpc \
       --network onprem-vpc \
       --allow tcp:22 \
       --source-ranges=35.235.240.0/20
    

Valide o acesso à Internet pública para a IA generativa na Vertex AI

Nesta seção, você faz login na instância de VM on-prem-client usando o Identity-Aware Proxy e, em seguida, valida a conectividade pública às APIs Vertex AI (incluindo IA generativa) executando o comando dig em relação ao domínio público da Vertex AI (us-central1-aiplatform.googleapis.com).

  1. No Cloud Shell (guia um), execute os seguintes comandos, substituindo PROJECT_ID pelo ID do projeto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Faça login na instância de VM on-prem-client usando o IAP:

    gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
    
  3. Execute o comando dig:

    dig us-central1-aiplatform.googleapis.com
    

    Você vai ver uma saída dig semelhante à seguinte, em que os endereços IP na seção de resposta são endereços IP públicos:

    ; <<>> DiG 9.16.44-Debian <<>> us-central1.aiplatfom.googleapis.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42506
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;us-central1.aiplatfom.googleapis.com. IN A
    
    ;; ANSWER SECTION:
    us-central1.aiplatfom.googleapis.com. 300 IN A  173.194.192.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.152.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  172.217.219.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.146.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.147.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.125.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.136.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.148.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.200.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.234.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.251.171.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  108.177.112.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.128.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.251.6.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  172.217.212.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  74.125.124.95
    
    ;; Query time: 8 msec
    ;; SERVER: 169.254.169.254#53(169.254.169.254)
    ;; WHEN: Wed Sep 27 04:10:16 UTC 2023
    ;; MSG SIZE  rcvd: 321
    

Configurar e validar o acesso particular à IA generativa na Vertex AI

Nesta seção, você configura o acesso particular à IA generativa na Vertex AI para que, quando enviar solicitações para o endpoint de serviço público (us-central1-aiplatform.googleapis.com), elas sejam redirecionadas para o endpoint do PSC. O endpoint do PSC, por sua vez, encaminha a solicitação para

Atualizar o arquivo /etc/hosts para apontar para o endpoint do PSC

Nesta etapa, você adiciona uma linha ao arquivo /etc/hosts que faz com que as solicitações enviadas ao endpoint de serviço público (us-central1-aiplatform.googleapis.com) sejam redirecionadas para o endpoint do PSC (192.168.0.1).

  1. Na instância de VM on-prem-client (guia um), use um editor de texto como vim ou nano para abrir o arquivo /etc/hosts:

    sudo vim /etc/hosts
    
  2. Adicione a linha a seguir ao arquivo:

    192.168.0.1 us-central1-aiplatform.googleapis.com
    

    Essa linha atribui o endereço IP do endpoint do PSC (192.168.0.1) ao nome de domínio totalmente qualificado da API Vertex AI do Google (us-central1-aiplatform.googleapis.com).

    O arquivo editado deve ficar assim:

    127.0.0.1       localhost
    ::1             localhost ip6-localhost ip6-loopback
    ff02::1         ip6-allnodes
    ff02::2         ip6-allrouters
    
    192.168.0.1 us-central1-aiplatform.googleapis.com  # Added by you
    172.16.10.6 on-prem-client.us-central1-a.c.vertex-genai-400103.internal on-prem-client  # Added by Google
    169.254.169.254 metadata.google.internal  # Added by Google
    
  3. Salve o arquivo da seguinte maneira:

    • Se você estiver usando vim, pressione a tecla Esc e, em seguida, digite :wq para salvar o arquivo e sair.
    • Se você estiver usando nano, digite Control+O e pressione Enter para salvar o arquivo. Em seguida, digite Control+X para sair.
  4. Dê um ping no endpoint da Vertex AI da seguinte maneira:

    ping us-central1-aiplatform.googleapis.com
    

    O comando ping precisa retornar a seguinte saída. 192.168.0.1 é o endereço IP do endpoint do PSC:

    PING us-central1-aiplatform.googleapis.com (192.168.0.1) 56(84) bytes of data.
    
  5. Digite Control+C para sair de ping.

  6. Execute o comando tcpdump a seguir para validar a resolução de DNS e o caminho de dados do IP ao enviar uma solicitação de previsão on-line para o endpoint:

     sudo tcpdump -i any port 53 -n or host 192.168.0.1
    

Criar a solicitação particular

Nesta etapa, você cria um arquivo de texto chamado request.json que contém o payload de uma solicitação curl de amostra que você envia para a API REST da IA generativa. Para mais informações sobre solicitações de amostra, consulte Solicitação de amostra.

  1. Mantendo o comando tcpdump em execução na guia um, abra uma nova sessão do Cloud Shell (guia dois) clicando em abrir uma nova guia no Cloud Shell.

  2. Na nova sessão do Cloud Shell (guia dois), execute os seguintes comandos, substituindo PROJECT_ID pelo ID do projeto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  3. Faça login na instância de VM on-prem-client usando o IAP:

    gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
    
  4. Execute os comandos a seguir, substituindo PROJECT_ID pelo ID do projeto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  5. Use um editor de texto, como vim ou nano, para criar um novo arquivo chamado request.json que contém o texto a seguir:

    {
       "instances": [
          { "prompt": "Give me ten interview questions for the role of program manager."}
       ],
       "parameters": {
          "temperature": 0.2,
          "maxOutputTokens": 256,
          "topK": 40,
          "topP": 0.95
       }
    }
    
  6. Execute o comando a seguir para enviar uma solicitação ao endpoint do PSC, que encaminha a solicitação para a API IA generativa. Quando o endpoint recebe a resposta, ele a encaminha de volta para a VM on-prem-client:

    curl -X POST \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       -H "Content-Type: application/json; charset=utf-8" \
       -d @request.json \
       "https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/publishers/google/models/text-bison:predict"
    

    Uma resposta semelhante a esta é exibida:

    {
       "predictions": [
          {
          "content": " 1. **What is your experience in managing programs?**\n2. **What are your strengths and weaknesses as a program manager?**\n3. **What is your approach to managing a program?**\n4. **How do you handle risks and challenges in a program?**\n5. **How do you communicate with stakeholders in a program?**\n6. **How do you measure the success of a program?**\n7. **What is your experience in working with cross-functional teams?**\n8. **What is your experience in managing budgets and resources?**\n9. **What is your experience in managing change in a program?**\n10. **What are your career goals as a program manager?**",
          "citationMetadata": {
             "citations": []
          },
          "safetyAttributes": {
             "categories": [
             "Finance",
             "Health"
             ],
             "blocked": false,
             "scores": [
                0.6,
                0.1
             ]
          }
          }
       ],
       "metadata": {
          "tokenMetadata": {
             "outputTokenCount": {
                "totalBillableCharacters": 505,
                "totalTokens": 153
             },
             "inputTokenCount": {
                "totalBillableCharacters": 54,
                "totalTokens": 12
             }
          }
       }
    }
    
  7. Na guia um, verifique se o endereço IP do endpoint do PSC (192.168.0.1) foi usado para acessar as APIs da Vertex AI na instância de VM on-prem-client (sub-rede 172.16.10.0/28).

    No terminal tcpdump na guia um do Cloud Shell, é possível ver que uma busca DNS por us-central1-aiplatform.googleapis.com não é necessária, porque a linha adicionada ao arquivo /etc/hosts tem precedência e o endereço IP do endpoint do PSC (192.168.0.1) é usado no caminho de dados.

    Você vai ver uma saída tcpdump semelhante a esta:

    23:48:49.938797 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2054:2093, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 39
    23:48:49.938947 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2093:2117, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 24
    23:48:49.939839 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [F.], seq 2117, ack 6264, win 501, options [nop,nop,TS val 2943864306 ecr 2340789954], length 0
    23:48:49.940292 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0
    23:48:49.940437 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [F.], seq 6264, ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0
    23:48:49.940442 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [.], ack 6265, win 501, options [nop,nop,TS val 2943864307 ecr 2340789958], length 0
    23:48:49.941193 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2118, win 272, options [nop,nop,TS val 2340789959 ecr 2943864306], length 0
    

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

É possível excluir os recursos individuais do projeto executando os seguintes comandos no Cloud Shell:

   projectid=PROJECT_ID
   gcloud config set project ${projectid}
   gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet
   gcloud compute instances delete on-prem-client --zone=us-central1-a --quiet
   gcloud iam service-accounts delete user-managed-sa@$projectid.iam.gserviceaccount.com --quiet
   gcloud compute forwarding-rules delete pscvertex --global --quiet
   gcloud compute addresses delete psc-googleapi-ip --global --quiet
   gcloud compute vpn-tunnels delete vertex-networking-vpc-tunnel0 vertex-networking-vpc-tunnel1 onprem-vpc-tunnel0 onprem-vpc-tunnel1 --region=us-central1 --quiet
   gcloud compute routers nats delete us-central-cloudnat-onprem --router=onprem-vpc-router1 --region=us-central1 --quiet
   gcloud compute routers delete vertex-networking-vpc-router1 onprem-vpc-router1 --region=us-central1 --quiet
   gcloud compute vpn-gateways delete vertex-networking-vpn-gw1 onprem-vpn-gw1 --region=us-central1 --quiet
   gcloud compute networks subnets delete onprem-vpc-subnet1 --region=us-central1 --quiet
   gcloud compute networks delete onprem-vpc --quiet
   gcloud compute networks delete vertex-networking-vpc --quiet

A seguir