Configure a rede e o acesso à sua Cloud TPU

Esta página descreve como configurar a rede personalizada e as configurações de acesso para a sua Cloud TPU, incluindo:

  • Especificar uma rede e uma sub-rede personalizadas
  • Especificar endereços IP externos e internos
  • Ativar o acesso SSH às TPUs
  • Associar uma conta de serviço personalizada à TPU
  • Ativar métodos SSH personalizados
  • Usar os VPC Service Controls

Pré-requisitos

Antes de executar estes procedimentos, tem de instalar a CLI Google Cloud, criar um Google Cloud projeto e ativar a API Cloud TPU. Para ver instruções, consulte o artigo Configure o ambiente do Cloud TPU.

Especifique uma rede e uma sub-rede personalizadas

Opcionalmente, pode especificar a rede e a sub-rede a usar para a TPU. Se a rede não for especificada, a TPU está na rede default. A sub-rede tem de estar na mesma região que a zona onde a TPU é executada.

  1. Crie uma rede que corresponda a um dos seguintes formatos válidos:

    • compute/{version}/projects/{proj-id}/global/networks/{network}
    • compute/{version}/projects/{proj-##}/global/networks/{network}
    • projects/{proj-id}/global/networks/{network}
    • projects/{proj-##}/global/networks/{network}
    • global/networks/{network}
    • {network}

    Para mais informações, consulte o artigo Crie e faça a gestão de redes VPC.

  2. Crie uma sub-rede que corresponda a um dos seguintes formatos válidos:

    • compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
    • compute/{version}/projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
    • projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
    • projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
    • regions/{region}/subnetworks/{subnetwork}
    • {subnetwork}

    Para mais informações, consulte o artigo Crie e faça a gestão de redes VPC.

  3. Crie uma VM de TPU, especificando a rede e a sub-rede personalizadas:

    gcloud

    Para especificar a rede e a sub-rede através da CLI gcloud, adicione os flags --network e --subnetwork ao seu pedido de criação:

        $ gcloud compute tpus tpu-vm create TPU_NAME \
            --zone=us-central2-b \
            --accelerator-type=v4-8 \
            --version=TPU_SOFTWARE_VERSION \
            --network=NETWORK \
            --subnetwork=SUBNETWORK

    curl

    Para especificar a rede e a sub-rede numa chamada curl, adicione os campos network e subnetwork ao corpo do pedido:

        $ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
            runtime_version:'tpu-vm-tf-2.17.1-pjrt', \
            network_config: {network: 'NETWORK', subnetwork: 'SUBNETWORK', enable_external_ips: true}, \
            shielded_instance_config: { enable_secure_boot: true }}" \
            https://tpu.googleapis.com/v2/projects/PROJECT_ID/locations/us-central2-b/nodes?node_id=TPU_NAME

Compreenda os endereços IP externos e internos

Quando cria VMs de TPU, estas têm sempre endereços IP internos automaticamente. Se as VMs de TPU forem criadas através da CLI gcloud, os endereços IP externos são gerados por predefinição. Se forem criados através das APIs REST do Cloud TPU (tpu.googleapis.com), não é atribuído nenhum endereço IP externo por predefinição. Pode alterar o comportamento predefinido em ambos os casos.

Endereços IP externos

Quando cria uma TPU usando gcloud, são criados endereços IP externos por predefinição para cada VM da TPU. Se quiser criar uma VM de TPU sem um IP externo, use a flag --internal-ips apresentada nos exemplos seguintes quando criar a VM de TPU.

gcloud

Se estiver a usar recursos em fila:

gcloud compute tpus queued-resources create your-queued-resource-id \
  --node-id your-node-id \
  --project your-project \
  --zone us-central2-b \
  --accelerator-type v4-8 \
  --runtime-version tpu_software_version \
  --internal-ips

Se estiver a usar a API Create Node:

$ gcloud compute tpus tpu-vm create TPU_NAME \
    --zone=us-central2-b \
    --accelerator-type=v4-8 \
    --version=tpu_software_version \
    --internal-ips

curl

Defina o campo enable_external_ips como false no corpo do pedido:

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
    runtime_version:'tpu-vm-tf-2.17.1-pjrt', \
    network_config: {enable_external_ips: false}, \
    shielded_instance_config: { enable_secure_boot: true }}" \
    https://tpu.googleapis.com/v2/projects/PROJECT_ID/locations/us-central2-b/nodes?node_id=TPU_NAME

Para criar uma VM de TPU com um endereço IP externo quando usar a API REST (tpu.googleapis.com), defina o campo networkconfig.enable_external_ips no pedido como true.

Endereços IP internos

As VMs de TPU têm sempre endereços IP internos. Os utilizadores de TPUs na nuvem podem querer restringir as respetivas VMs de TPU apenas a endereços IP internos por alguns motivos importantes:

Segurança melhorada: os IPs internos só são acessíveis a recursos na mesma rede VPC, o que pode melhorar a segurança ao limitar o acesso externo às VMs de TPU. Isto é especialmente importante quando trabalha com dados sensíveis ou quando quer restringir o acesso às suas TPUs a utilizadores ou sistemas específicos na sua rede.

Poupança de custos: ao usar endereços IP internos, pode evitar os custos associados a endereços IP externos, que podem ser significativos para um grande número de VMs de TPU.

Melhor desempenho da rede: os IPs internos podem levar a um melhor desempenho da rede porque o tráfego permanece na rede da Google, evitando a sobrecarga do encaminhamento através da Internet pública. Isto é particularmente relevante para cargas de trabalho de aprendizagem automática em grande escala que precisam de comunicação de largura de banda elevada entre VMs de TPUs.

Ative métodos SSH personalizados

Para estabelecer ligação a TPUs através de SSH, tem de ativar os endereços IP externos para as TPUs ou ativar o acesso privado à Google para a sub-rede à qual as VMs de TPU estão ligadas.

Ative o acesso privado à Google

As TPUs que não têm endereços IP externos podem usar o acesso privado à Google para aceder a APIs e serviços Google. Para mais informações sobre como ativar o acesso privado à Google, consulte o artigo Configure o acesso privado à Google.

Depois de configurar o acesso privado à Google, estabeleça ligação à VM através do SSH.

Anexe uma conta de serviço personalizada

Cada VM de TPU tem uma conta de serviço associada que usa para fazer pedidos de API em seu nome. As VMs de TPU usam esta conta de serviço para chamar as APIs Cloud TPU e aceder ao Cloud Storage e a outros serviços. Por predefinição, a VM de TPU usa a conta de serviço predefinida do Compute Engine.

A conta de serviço tem de ser definida no mesmo Google Cloud projeto onde cria a VM da TPU. As contas de serviço personalizadas usadas para VMs de TPU têm de ter a função TPU Viewer para chamar a API Cloud TPU. Se o código executado na VM de TPU chamar outros Google Cloud serviços, tem de ter as funções necessárias para aceder a esses serviços.

Para mais informações sobre contas de serviço, consulte o artigo Contas de serviço.

Use os seguintes comandos para especificar uma conta de serviço personalizada.

gcloud

Use a flag --service-account ao criar uma TPU:

$ gcloud compute tpus tpu-vm create TPU_NAME \
    --zone=us-central2-b \
    --accelerator-type=TPU_TYPE \
    --version=tpu-vm-tf-2.17.1-pjrt \
    --service-account=SERVICE_ACCOUNT

curl

Defina o campo service_account no corpo do pedido:

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
    runtime_version:'tpu-vm-tf-2.17.1-pjrt', \
    network_config: {enable_external_ips: true}, \
    shielded_instance_config: { enable_secure_boot: true }}" \
    service_account: {email: 'SERVICE_ACCOUNT'} \
    https://tpu.googleapis.com/v2/projects/PROJECT_ID/locations/us-central2-b/nodes?node_id=TPU_NAME

Ative métodos SSH personalizados

A rede predefinida permite o acesso SSH a todas as VMs de TPU. Se usar uma rede diferente da predefinida ou alterar as definições de rede predefinidas, tem de ativar explicitamente o acesso SSH adicionando uma regra de firewall:

$ gcloud compute firewall-rules create \
    --network=NETWORK allow-ssh \
    --allow=tcp:22

Faça a integração com os VPC Service Controls

Os VPC Service Controls dos Cloud TPU permitem-lhe definir perímetros de segurança em torno dos seus recursos de Cloud TPU e controlar o movimento de dados através do limite do perímetro. Para saber mais acerca dos VPC Service Controls, consulte o artigo Vista geral dos VPC Service Controls. Para saber mais sobre as limitações da utilização do Cloud TPU com os VPC Service Controls, consulte os produtos suportados e as limitações.