Usar a interface do Private Service Connect para o treinamento da Vertex AI

A interface do Private Service Connect é recomendada para conectividade privada, já que 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 persistentes da Vertex AI.

Visão geral

A interface do Private Service Connect é compatível com jobs personalizados e recursos permanentes do treinamento da Vertex AI. 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 persistente para ativar a interface do Private Service Connect.

Conectividade de saída do Private Service Connect da Vertex AI para outras redes

A Vertex AI integrou as conectividades de rede de saída com suporte do Private Service Connect (consulte Como se conectar a workloads em outras redes), com as seguintes exceções:

  • Não há suporte para saída para o Acesso privado do Google de um cliente. Em vez disso, a saída do Private Service Connect seria resolvida localmente para o Acesso privado do Google.

  • A saída para o Cloud NAT só é possível quando o VPC Service Control está ativado.

Limitações

  • As interfaces do Private Service Connect não aceitam endereços IP externos.

Preços

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

Antes de começar

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

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

É possível criar um job de treinamento personalizado com a interface do Private Service Connect usando o SDK da Vertex AI para Python ou a API REST.

Python

Para criar um job de treinamento personalizado com PSC-I usando o SDK da Vertex AI para Python, configure o job usando a definição aiplatform_v1beta1/services/job_service.

Python

from google.cloud import aiplatform
from google.cloud import aiplatform_v1beta1


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_name: str,
):
    """Custom training job sample with PSC-I through aiplatform_v1beta1."""
    aiplatform.init(project=project, location=location, staging_bucket=bucket)

    client_options = {"api_endpoint": f"{location}-aiplatform.googleapis.com"}

    client = aiplatform_v1beta1.JobServiceClient(client_options=client_options)

    request = aiplatform_v1beta1.CreateCustomJobRequest(
        parent=f"projects/{project}/locations/{location}",
        custom_job=aiplatform_v1beta1.CustomJob(
            display_name=display_name,
            job_spec=aiplatform_v1beta1.CustomJobSpec(
                worker_pool_specs=[
                    aiplatform_v1beta1.WorkerPoolSpec(
                        machine_spec=aiplatform_v1beta1.MachineSpec(
                            machine_type=machine_type,
                        ),
                        replica_count=replica_count,
                        container_spec=aiplatform_v1beta1.ContainerSpec(
                            image_uri=image_uri,
                        ),
                    )
                ],
                psc_interface_config=aiplatform_v1beta1.PscInterfaceConfig(
                    network_attachment=network_attachment_name,
                ),
            ),
        ),
    )

    response = client.create_custom_job(request=request)

    return response

  • project: o ID do projeto. Esses IDs estão na página de boas-vindas do console do Google Cloud.
  • 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: especifica 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 de contêiner personalizada.
  • network_attachment_name: o nome especificado ao configurar seus recursos para o Private Service Connect no projeto do usuário.

REST

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

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • 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 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:

Método HTTP e URL:

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

Corpo JSON da solicitação:

"display_name": JOB_NAME,
"job_spec": {
    "worker_pool_specs": [
      {
        "machine_spec": {
          "machine_type": "n1-standard-4",
        },
        "replica_count": REPLICA_COUNT,
        "container_spec": {
          "image_uri": IMAGE_URI,
        },
      },
    ],
    "psc_interface_config": {
      "network_attachment": NETWORK_ATTACHMENT_NAME
    },
    "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/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta: