Usar a interface do Private Service Connect para o Vertex AI Training

A interface do Private Service Connect é recomendada para conectividade privada, porque reduz a chance de esgotamento de IP e permite o peering transitivo.

A interface do Private Service Connect é compatível com jobs personalizados e recursos permanentes da Agent Platform.

Visão geral

A interface do Private Service Connect é compatível com jobs personalizados e recursos permanentes do Vertex AI Training. Para usar a interface do Private Service Connect, é necessário configurar uma rede VPC, uma sub-rede e um anexo de rede no projeto do usuário. Consulte Configurar uma interface do Private Service Connect. O nome do anexo de rede precisa ser incluído na solicitação para criar um job personalizado ou um recurso permanente para ativar a interface do Private Service Connect.

Conectividade de saída do Private Service Connect da Gemini Enterprise Agent Platform para outras redes

A Gemini Enterprise Agent Platform integrou as conectividades de rede de saída com suporte do Private Service Connect (consulte Conectar-se a cargas de trabalho em outras redes) com os seguintes comportamentos arquitetônicos.

Como acessar APIs do Google e serviços somente internos

Quando a Gemini Enterprise Agent Platform envia tráfego para as APIs do Google, ele é resolvido localmente no ambiente do produtor e não usa as configurações de Acesso privado do Google ou o roteamento da rede VPC do consumidor.

Observação :

  • Requisito de identidade da VPC: como a resolução local ignora o caminho da rede VPC do consumidor, o tráfego não carrega a identidade da rede VPC. Isso fará com que as solicitações para serviços internos do Google, como os serviços do Cloud Run configurados com entrada interna, falhem com um erro 404 ou 403.
  • Solução de endpoint do Private Service Connect: para acessar esses serviços internos de forma privada, é necessário configurar um endpoint do Private Service Connect para as APIs do Google na rede VPC.
  • Configuração de DNS: é necessário garantir que o domínio de serviço (por exemplo, *.run.app) seja resolvido para o endereço IP interno do endpoint do Private Service Connect para garantir que o tráfego permaneça em um caminho puramente particular.

Saída da Internet e Cloud NAT

Por padrão, a Gemini Enterprise Agent Platform usa gateways de Internet gerenciados pelo Google para tráfego de saída, em vez das rotas da rede VPC. A saída usando um gateway do Cloud NAT do consumidor só é utilizada quando o projeto faz parte de um perímetro do VPC Service Controls.

Esse perímetro bloqueia o acesso padrão à Internet, forçando o tráfego pela interface do Private Service Connect e pelas regras de roteamento da rede VPC. Se você não estiver usando o VPC Service Controls, o tráfego de saída da Internet vai ignorar a rede VPC e o gateway do Cloud NAT.

Limitações

Para conferir os recursos e as limitações das interfaces do Private Service Connect, consulte Sobre como acessar os serviços da Gemini Enterprise Agent Platform pelas interfaces do Private Service Connect.

Preços

Os preços das interfaces do Private Service Connect são descritos na "Usar uma interface do Private Service Connect para acesso a uma rede VPC do produtor ou consumidor" seção na Todos os preços de rede página.

Antes de começar

Configure seus recursos para a interface do Private Service Connect no projeto do usuário.

Criar um job de treinamento sem servidor com uma interface do Private Service Connect

É possível criar um job de treinamento sem servidor com a interface do Private Service Connect usando o SDK da Agent Platform para Python ou a API REST.

Python

Para criar um job de treinamento sem servidor com PSC-I usando o SDK da Agent Platform para Python, configure o job usando a aiplatform_v1/services/job_service definição.

Python

from google.cloud import aiplatform


def create_custom_job_psci_sample(
    project: str,
    location: str,
    bucket: str,
    display_name: str,
    machine_type: str,
    replica_count: int,
    image_uri: str,
    network_attachment: str,
    domain: str,
    target_project: str,
    target_network: str,
):
    """Custom training job sample with PSC Interface Config."""
    aiplatform.init(project=project, location=location, staging_bucket=bucket)

    worker_pool_specs = [{
        "machine_spec": {
            "machine_type": machine_type,
        },
        "replica_count": replica_count,
        "container_spec": {
            "image_uri": image_uri,
            "command": [],
            "args": [],
        },
    }]
    psc_interface_config = {
        "network_attachment": network_attachment,
        "dns_peering_configs": [
            {
                "domain": domain,
                "target_project": target_project,
                "target_network": target_network,
            },
        ],
    }
    job = aiplatform.CustomJob(
        display_name=display_name,
        worker_pool_specs=worker_pool_specs,
    )

    job.run(psc_interface_config=psc_interface_config)

  • project: . É possível encontrar esses IDs na Google Cloud página de boas-vindas do console.
  • location: consulte a lista de locais disponíveis.
  • bucket: substitua bucket pelo nome de um bucket ao qual você tem acesso.
  • display_name: o nome de exibição do recurso permanente.
  • machine_type: Especifique os recursos de computação.
  • replica_count: o número de réplicas de worker a serem usadas em cada teste.
  • service_attachment: o nome do recurso de anexo de serviço. Preenchido se o Private Service Connect estiver ativado.
  • image_uri: o URI de uma imagem de contêiner do Docker com o código de treinamento. Saiba como criar uma imagem do contêiner personalizada.
  • network_attachment: o nome ou o caminho completo do anexo de rede criado ao configurar os recursos para o Private Service Connect.
  • domain: o nome DNS da zona privada do Cloud DNS criada ao configurar o peering de DNS particular.
  • target_project: o projeto que hospeda a rede VPC.
  • target_network: o nome da rede VPC.

REST

Para criar um job de treinamento sem servidor, envie uma solicitação POST usando o customJobs.create método.

Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:

  • LOCATION: a região em que o contêiner ou o pacote Python será executado.
  • PROJECT_ID: o ID do projeto. .
  • JOB_NAME: um nome de exibição para o CustomJob.
  • REPLICA_COUNT: o número de réplicas de worker a serem usadas. Na maioria dos casos, defina esse valor como 1 para o primeiro pool de workers.
  • Se o aplicativo de treinamento for executado em um contêiner personalizado, especifique o seguinte:
    • IMAGE_URI: o URI de uma imagem de contêiner do Docker com o código de treinamento. Saiba como criar uma imagem do contêiner personalizada.
    • NETWORK_ATTACHMENT: o nome ou o caminho completo do anexo de rede criado ao configurar a interface do Private Service Connect.
    • Se você precisar de peering de DNS particular, o campo dns_peering_configs será obrigatório. Para essa lista, cada item contém:
      • DOMAIN_SUFFIX: o nome DNS da zona de DNS privada do Cloud DNS que você criou ao configurar o peering de DNS particular.
      • TARGET_PROJECT: o projeto que hospeda a rede VPC.
      • TARGET_NETWORK: o nome da rede VPC.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs

Corpo JSON da solicitação:

"display_name": JOB_NAME,
"job_spec": {
    "worker_pool_specs": [
      {
        "machine_spec": {
          "machine_type": "n2-standard-4",
        },
        "replica_count": REPLICA_COUNT,
        "container_spec": {
          "image_uri": IMAGE_URI,
        },
      },
    ],
    "psc_interface_config": {
      "network_attachment": NETWORK_ATTACHMENT,
      "dns_peering_configs": [
         {
          "domain": DOMAIN_SUFFIX,
          "target_project": TARGET_PROJECT,
          "target_network": TARGET_NETWORK
         }
      ],
    },
    "enable_web_access": 1
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta: