Configurar rede e acesso a uma instância de TPU

Nesta página, descrevemos como definir configurações personalizadas de rede e acesso para uma instância de TPU, incluindo:

  • Como especificar uma rede e uma sub-rede personalizadas.
  • Como especificar endereços IP externos e internos.
  • Como ativar o acesso SSH às TPUs.
  • Como anexar uma conta de serviço personalizada à TPU.
  • Como ativar métodos SSH personalizados.
  • Como usar o VPC Service Controls.

Pré-requisitos

Antes de executar esses procedimentos, instale a Google Cloud CLI, crie um projeto do Google Cloud e ative a API Compute Engine. Para instruções, consulte Configurar um projeto Google Cloud para TPUs.

Especificar uma rede e uma sub-rede personalizadas

Ao criar uma instância de VM de TPU ou um modelo de instância, você pode especificar a rede e a sub-rede a serem usadas para a TPU. Se você não especificar uma rede, a TPU vai usar a rede default. A sub-rede precisa estar na mesma região que a zona em que a TPU é executada.

  1. Crie uma rede e uma sub-rede seguindo as instruções para criar uma rede VPC.

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

    Para especificar a rede e a sub-rede, inclua as flags de rede mostradas no exemplo a seguir ao executar o comando gcloud compute instances create:

    gcloud compute instances create TPU_NAME \
        --machine-type=MACHINE_TYPE \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --zone=ZONE \
        --maintenance-policy=TERMINATE \
        --network=NETWORK_NAME \
        --subnet=SUBNET_NAME \
        --stack-type=STACK_TYPE \
        --private-network-ip=INTERNAL_IPV4_ADDRESS \
        --address=EXTERNAL_IPV4_ADDRESS
    

    Substitua os seguintes marcadores de posição:

    • TPU_NAME: um nome para a VM de TPU.
    • MACHINE_TYPE: o tipo de máquina para a VM da TPU (por exemplo, ct6e-standard-8t).
    • IMAGE_FAMILY: a família de imagens do SO para a VM da TPU. Se você quiser instalar uma versão específica do SO, use a flag --image. Para mais informações sobre imagens do SO, consulte Imagens do SO.
    • IMAGE_PROJECT: o projeto que contém a imagem do SO. Para imagens de TPU, é ubuntu-os-accelerator-images.
    • ZONE: a zona da VM de TPU (por exemplo, us-central1-b).
    • NETWORK_NAME: opcional: nome da rede. Se você especificar uma rede, especifique uma sub-rede que pertença à mesma rede. Se você não especificar uma rede, o Compute Engine vai inferir a rede pela sub-rede especificada.
    • SUBNET_NAME: nome da sub-rede a ser usada com a instância.

      Para ver uma lista de sub-redes na rede, use o comando gcloud compute networks subnets list.

    • STACK_TYPE: opcional: o tipo de pilha de rede para a interface de rede. STACK_TYPE precisa ser um dos seguintes: IPV4_ONLY, IPV4_IPV6 ou IPV6_ONLY (Pré-lançamento). O valor padrão é IPV4_ONLY.

    • INTERNAL_IPV4_ADDRESS: opcional: o endereço IPv4 interno que você quer que a instância de computação use na sub-rede de destino. Omita essa flag se você não precisar de um endereço IP específico.

      Para especificar um endereço IPv6 interno, use a flag --internal-ipv6-address.

    • EXTERNAL_IPV4_ADDRESS: opcional: o endereço IPv4 externo estático a ser usado com a interface de rede. Substitua EXTERNAL_IPV4_ADDRESS por um dos seguintes:

      Se você não quiser que a VM tenha um endereço IP externo, substitua a flag --address pela flag --no-address.

      Para especificar um endereço IPv6 externo, use a flag --external-ipv6-address.

Entender os endereços IP externos e internos

Quando você cria instâncias de VM de TPU, elas sempre têm endereços IP internos. Se você criar instâncias de TPU usando a CLI gcloud, os endereços IP externos serão gerados por padrão. Se você usar as APIs REST do Compute Engine (compute.googleapis.com) para criá-las, nenhum endereço IP externo será atribuído por padrão. É possível mudar o comportamento padrão nos dois casos.

Confira alguns motivos para restringir as VMs de TPU para usar apenas endereços IP internos:

  • Segurança aprimorada: os endereços IP internos só podem ser acessados por recursos na mesma rede VPC, o que pode melhorar a segurança ao limitar o acesso externo às VMs de TPU. Isso é especialmente importante ao trabalhar com dados sensíveis ou quando você quer restringir o acesso às VMs da TPU a usuários ou sistemas específicos na rede.
  • Economia de custos: ao usar endereços IP internos, você evita os custos associados a endereços IP externo, que podem ser significativos para um grande número de VMs de TPU.
  • Melhor desempenho de rede: os endereços IP internos podem melhorar o desempenho da rede porque o tráfego permanece na rede do Google, evitando o overhead do roteamento pela Internet pública. Isso é particularmente relevante para cargas de trabalho de machine learning em grande escala que precisam de comunicação de alta largura de banda entre VMs de TPU.

Criar uma instância de VM de TPU sem um endereço IP externo

Se você quiser criar uma instância de VM de TPU sem um endereço IP externo, use a flag --no-address ao executar o comando gcloud compute instances create:

gcloud compute instances create TPU_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --maintenance-policy=TERMINATE \
    --network=NETWORK_NAME \
    --subnet=SUBNET_NAME \
    --stack-type=STACK_TYPE \
    --private-network-ip=INTERNAL_IPV4_ADDRESS \
    --no-address

Substitua os seguintes marcadores de posição:

  • TPU_NAME: um nome para a VM de TPU.
  • MACHINE_TYPE: o tipo de máquina para a VM da TPU (por exemplo, ct6e-standard-8t).
  • IMAGE_FAMILY: a família de imagens do SO para a VM da TPU. Se você quiser instalar uma versão específica do SO, use a flag --image. Para mais informações sobre imagens do SO, consulte Imagens do SO.
  • IMAGE_PROJECT: o projeto que contém a imagem do SO. Para imagens de TPU, é ubuntu-os-accelerator-images.
  • ZONE: a zona da VM de TPU (por exemplo, us-central1-b).
  • NETWORK_NAME: opcional: nome da rede. Se você especificar uma rede, especifique uma sub-rede que pertença à mesma rede. Se você não especificar uma rede, o Compute Engine vai inferir a rede pela sub-rede especificada.
  • SUBNET_NAME: nome da sub-rede a ser usada com a instância.

    Para ver uma lista de sub-redes na rede, use o comando gcloud compute networks subnets list.

  • STACK_TYPE: opcional: o tipo de pilha de rede da interface de rede. STACK_TYPE precisa ser um dos seguintes: IPV4_ONLY, IPV4_IPV6 ou IPV6_ONLY (Pré-lançamento). O valor padrão é IPV4_ONLY.

  • INTERNAL_IPV4_ADDRESS (opcional): o endereço IPv4 interno que você quer que a instância de computação use na sub-rede de destino. Omita essa flag se você não precisar de um endereço IP específico.

    Para especificar um endereço IPv6 interno, use a flag --internal-ipv6-address.

Criar uma instância de VM de TPU com um endereço IP externo

Quando você cria uma instância de VM de TPU usando a CLI gcloud, ela recebe um endereço IP externo temporário por padrão.

Para criar uma VM de TPU com um endereço IP externo usando a API REST, faça uma solicitação POST ao método instances.insert e inclua o campo accessConfigs na matriz networkInterfaces no corpo da solicitação. Se o corpo da solicitação não especificar o campo accessConfigs, a instância não terá acesso externo à Internet.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
    "machineType":"zones/ZONE/machineTypes/MACHINE_TYPE",
    "name":"TPU_NAME",
    "disks":[
        {
            "initializeParams":{
                "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
            },
            "boot":true
        }
    ],
    "networkInterfaces":[
        {
            "network":"global/networks/NETWORK_NAME",
            "subnetwork":"regions/REGION/subnetworks/SUBNET_NAME",
            "stackType":"STACK_TYPE",
            "accessConfigs":[
                {
                    "name": "external-nat",
                    "type": "ONE_TO_ONE_NAT"
                }
            ]
        }
    ],
    "scheduling": {
        "onHostMaintenance": "TERMINATE"
    }
}

Substitua os seguintes marcadores de posição:

  • PROJECT_ID: o ID do projeto em que você quer criar a VM de TPU.
  • ZONE: a zona da VM de TPU (por exemplo, us-central1-b).
  • MACHINE_TYPE: o tipo de máquina para a VM da TPU (por exemplo, ct6e-standard-8t).
  • TPU_NAME: um nome para a VM de TPU.
  • IMAGE_PROJECT: o projeto que contém a imagem do SO. Para imagens de TPU, é ubuntu-os-accelerator-images.
  • IMAGE_FAMILY: a família de imagens do SO para a VM da TPU. Se você quiser instalar uma versão específica do SO, substitua todo o valor "sourceImage" pelo nome da versão da imagem no seguinte formato: projects/IMAGE_PROJECT/global/images/IMAGE_NAME.

    Para mais informações sobre imagens do SO, consulte Imagens do SO.

  • NETWORK_NAME: opcional: nome da rede. Se você especificar uma rede, especifique uma sub-rede que pertença à mesma rede. Se você não especificar uma rede, o Compute Engine vai inferir a rede pela sub-rede especificada.

  • REGION: a região da sub-rede.

  • SUBNET_NAME: nome da sub-rede a ser usada com a instância.

    Para ver uma lista de sub-redes na rede, use o comando gcloud compute networks subnets list.

  • STACK_TYPE: opcional: o tipo de pilha da interface de rede. STACK_TYPE precisa ser um dos seguintes: IPV4_ONLY, IPV4_IPV6 ou IPV6_ONLY (Pré-lançamento). O valor padrão é IPV4_ONLY.

Se você já reservou um endereço IP externo estático, é possível atribuí-lo à instância no momento da criação usando a flag --address com o endereço IP estático ou a flag --network-interface para definir a configuração detalhada da rede. Para mais informações, consulte Configurar endereços IP externo estáticos.

Ativar o acesso SSH a uma instância de VM da TPU

Para ativar o acesso SSH a uma instância de VM de TPU:

  • A instância de TPU precisa estar acessível por um endereço IP externo ou pelo Acesso privado do Google.
    • Se você criar a instância de TPU usando a CLI gcloud, ela vai receber um endereço IP externo temporário por padrão. Se você criar a instância de TPU usando a API REST, especifique que ela precisa ter um endereço IP externo. Para mais informações, consulte Criar uma instância de VM da TPU com um endereço IP externo.
    • Se as instâncias de TPU não tiverem endereços IP externo, configure o Acesso privado do Google. Para mais informações, consulte Ativar o Acesso privado do Google.
  • A rede usada pela instância de TPU precisa permitir o tráfego SSH. A rede padrão permite automaticamente o tráfego SSH. Se você estiver usando uma rede personalizada ou mudar as configurações de rede padrão, será necessário ativar o SSH na rede.

Ativar o Acesso privado do Google

As TPUs sem endereços IP externos podem usar o Acesso privado do Google para acessar APIs e serviços do Google. Para saber como ativar o Acesso privado do Google, consulte Configurar o Acesso privado do Google.

Depois de configurar o Acesso privado do Google, conecte-se à VM usando SSH.

Ativar o tráfego SSH na rede

A rede padrão permite o acesso SSH a todas as VMs de TPU. Se você usar uma rede personalizada ou mudar as configurações de rede padrão, vai precisar ativar explicitamente o acesso SSH adicionando uma regra de firewall:

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

Anexar uma conta de serviço personalizada

Cada VM de TPU tem uma conta de serviço associada que é usada para fazer solicitações de API em seu nome. As VMs de TPU usam essa conta de serviço para chamar as APIs do Compute Engine e acessar o Cloud Storage e outros serviços. Por padrão, a VM de TPU usa a conta de serviço padrão do Compute Engine.

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

Para especificar uma conta de serviço personalizada ao criar uma instância de VM de TPU, use o comando gcloud compute instances create e forneça o e-mail da conta de serviço e o escopo de acesso cloud-platform à instância de VM:

gcloud compute instances create TPU_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --maintenance-policy=TERMINATE \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --scopes=https://www.googleapis.com/auth/cloud-platform

Substitua:

  • TPU_NAME: um nome para a VM de TPU.
  • MACHINE_TYPE: o tipo de máquina para a VM da TPU (por exemplo, ct6e-standard-8t).
  • IMAGE_FAMILY: a família de imagens do SO para a VM da TPU. Se você quiser instalar uma versão específica do SO, use a flag --image. Para mais informações sobre imagens do SO, consulte Imagens do SO.
  • IMAGE_PROJECT: o projeto que contém a imagem do SO. Para imagens de TPU, é ubuntu-os-accelerator-images.
  • ZONE: a zona da VM de TPU (por exemplo, us-central1-b).
  • SERVICE_ACCOUNT_EMAIL: o endereço de e-mail da conta de serviço que você criou. Por exemplo, my-sa-123@my-project-123.iam.gserviceaccount.com. Para conferir o endereço de e-mail, consulte Como listar contas de serviço.

Para usar uma conta de serviço em um projeto diferente de onde você cria a VM de TPU, siga as instruções em Usar uma conta de serviço entre projetos.

Integração com o VPC Service Controls

Use o VPC Service Controls para definir perímetros de segurança em torno dos recursos de TPU e controlar a movimentação de dados no limite do perímetro. Para saber mais, consulte a visão geral do VPC Service Controls. Para saber mais sobre as limitações de uso das TPUs com o VPC Service Controls, consulte os produtos e limitações compatíveis.