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.
Crie uma rede e uma sub-rede seguindo as instruções para criar uma rede VPC.
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_ADDRESSSubstitua 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_TYPEprecisa ser um dos seguintes:IPV4_ONLY,IPV4_IPV6ouIPV6_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:
- Um endereço IPv4 válido da sub-rede especificada. É preciso ter reservado um endereço IPv4 externo.
''(uma string vazia) para usar um endereço IP externo temporário.
Se você não quiser que a VM tenha um endereço IP externo, substitua a flag
--addresspela 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_TYPEprecisa ser um dos seguintes:IPV4_ONLY,IPV4_IPV6ouIPV6_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_TYPEprecisa ser um dos seguintes:IPV4_ONLY,IPV4_IPV6ouIPV6_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.