Gerenciar recursos de TPU
Nesta página, descrevemos como gerenciar recursos do Cloud TPU usando:
- a Google Cloud CLI, que fornece a CLI principal ao Google Cloud;
- o console do Google Cloud, que fornece um console de gerenciamento integrado para os recursos do Google Cloud.
O Cloud TPU tem duas arquiteturas de VM: nó de TPU e VM de TPU. As duas arquiteturas
de VM são descritas em Arquitetura do sistema.
É possível usar os comandos gcloud
descritos neste documento com as duas configurações de TPU. Os comandos gcloud
que você
usa dependem da configuração de TPU que você está usando. Cada comando gcloud
é
mostrado em uma seção com guias. Escolha a guia da configuração de TPU que você quer
usar. A página da Web mostra o comando gcloud
apropriado. A menos que você saiba que
precisa usar os nós da TPU, recomendamos o uso de VMs. No Cloud TPU v4 e posterior, apenas a arquitetura de VM da TPU é compatível.
Pré-requisitos
Antes de executar esses procedimentos, instale a Google Cloud CLI, crie um projeto do Google Cloud e ative a API Cloud TPU. Para mais instruções, consulte Configurar um projeto e ativar a API Cloud TPU.
Se você estiver usando a Google Cloud CLI, poderá usar o Google Cloud Shell,
uma VM do Compute Engine ou instalar a Google Cloud CLI localmente. O Google Cloud Shell permite que você interaja com Cloud TPUs sem precisar instalar nenhum software. O Google Cloud Shell pode ser desconectado após um período de
inatividade. Se você estiver executando comandos de longa duração, recomendamos instalar a
Google Cloud CLI na sua máquina local. Para mais informações sobre a Google Cloud CLI,
consulte a Referência do gcloud
.
Provisionar Cloud TPUs
É possível provisionar um Cloud TPU usando gcloud
, o console do Google Cloud ou a API Cloud TPU.
Usando gcloud
, há dois métodos para provisionar TPUs:
- Como usar recursos na fila:
gcloud alpha compute tpus queued-resources create
- Usando a API Create Node:
gcloud compute tpus tpu-vm create
A prática recomendada é provisionar com Recursos na fila. Quando você solicita recursos na fila, a solicitação é adicionada a uma fila mantida pelo serviço do Cloud TPU. Quando o recurso solicitado ficar disponível, ele será atribuído ao projeto do Google Cloud para uso exclusivo imediato.
Para criar uma TPU usando recursos na fila, consulte Recursos na fila.
Se você estiver usando multislice, consulte a Introdução a multislice para saber mais.
Ao usar o Multislice, especifique os parâmetros adicionais a seguir ao solicitar recursos na fila:
export NODE_COUNT=node_count export NODE_PREFIX=your_tpu_prefix # Optional
Criar uma Cloud TPU usando a API Create Node
Para criar uma TPU usando a API Create Node, execute o comando gcloud compute tpus tpu-vm create
.
VMs de TPU
É possível especificar configurações de TPU em termos de TensorCores ou chips de TPU. Para mais informações, consulte a seção da versão do TPU que você está usando em Arquitetura do sistema.
O comando a seguir usa uma configuração baseada no TensorCore:
$ gcloud compute tpus tpu-vm create tpu-name \
--zone=us-central2-b \
--accelerator-type=v4-8 \
--version=tpu-software-version
Descrições de sinalizações de comando
zone
- A zona em que você planeja criar o Cloud TPU.
accelerator-type
- O tipo de acelerador especifica a versão e o tamanho do Cloud TPU que você quer criar. Para mais informações sobre os tipos de aceleradores compatíveis com cada versão de TPU, acesse Versões de TPU.
version
- A versão do software da TPU.
shielded-secure-boot
(opcional)- Especifica que as instâncias de TPU foram criadas com a inicialização segura ativada. Isso implicitamente as torna instâncias de VM protegida. Consulte O que é a VM protegida? para obter mais detalhes.
O comando a seguir cria uma TPU com uma topologia específica:
$ gcloud compute tpus tpu-vm create tpu-name \
--zone=us-central2-b \
--type=v4 \
--topology=2x2x1 \
--version=tpu-software-version
Sinalizações obrigatórias
tpu-name
- O nome da VM da TPU que você está criando.
zone
- A zona em que você está criando o Cloud TPU.
type
- A versão do Cloud TPU que você quer criar. Para mais informações sobre as versões de TPU, acesse Versões de TPU.
topology
- Consulte a seção topologia para conhecer as topologias compatíveis.
version
- A versão do software do TPU que você quer usar. Para mais informações, consulte Versões do software de TPU
Para mais informações sobre tipos e topologias de TPU compatíveis, consulte Versões de TPU.
Nós da TPU
$ gcloud compute tpus execution-groups create --name=tpu-name \
--zone=us-central1-a \
--tf-version=2.12.0 \
--machine-type=n1-standard-1 \
--accelerator-type=v3-8
Descrições de sinalizações de comando
zone
- A zona onde você planeja criar o Cloud TPU.
tf-version
- A versão do Tensorflow que o comando
gcloud
instala na sua VM. machine-type
- O tipo de máquina da VM do Compute Engine a ser criada.
accelerator-type
- O tipo de acelerador especifica a versão e o tamanho do Cloud TPU que você quer criar. Para mais informações sobre os tipos de aceleradores compatíveis com cada versão de TPU, acesse Versões de TPU.
Como criar um Cloud TPU no console do Google Cloud
- Acesse o console do Google Cloud.
- No menu de navegação, selecione Compute Engine > TPUs.
- Clique em CRIAR NÓ DE TPU.
- Na caixa Nome, digite um nome de instância de TPU.
- Na caixa Zona, selecione a zona em que a TPU será criada.
- Em Configurações de TPU, selecione Arquitetura de VM de TPU ou Arquitetura de nó de TPU. A configuração da TPU determina se você criará a TPU como uma VM ou nó de TPU. Para mais informações, consulte Arquitetura do sistema.
- Em Tipo de TPU, selecione o tipo de TPU que você quer criar.
- Em Versão do software de TPU, selecione a versão do software. Ao criar uma VM do Cloud TPU, a versão do software da TPU especifica a versão do ambiente de execução da TPU que será instalada. Ao criar um nó do Cloud TPU, a versão do software da TPU permite escolher o framework de ML instalado na VM do nó. Nenhuma outra configuração é necessária. Para mais informações, consulte Modelos compatíveis.
- Clique em CRIAR para criar os recursos.
Como criar uma VM do Cloud TPU usando curl
O comando a seguir usa curl
para criar uma TPU.
$ 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.16.1-pjrt', \
network_config: {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=node_name
Campos obrigatórios
runtime_version
- A versão do ambiente de execução do Cloud TPU que você quer usar.
project
- O nome do seu projeto registrado do Google Cloud.
zone
- A zona em que você está criando o Cloud TPU.
node_name
- O nome da VM da TPU que está sendo criada.
Executar um script de inicialização
É possível executar um script de inicialização em cada VM de TPU especificando o parâmetro --metadata startup-script
ao criar a VM de TPU. O comando a seguir cria uma VM da TPU usando um script de inicialização.
$ gcloud compute tpus tpu-vm create tpu-name \
--zone=us-central2-b \
--accelerator-type=tpu-type \
--version=tpu-vm-tf-2.16.1-pjrt \
--metadata startup-script='#! /bin/bash
pip3 install numpy
EOF'
Como se conectar a um Cloud TPU
É possível se conectar a uma TPU usando SSH.
VMs de TPU
Ao usar VMs de TPU, conecte-se explicitamente à VM da TPU usando SSH.
Conecte-se à VM da TPU por SSH usando o comando
gcloud compute tpus tpu-vm ssh
.Quando você solicita frações com mais de quatro chips, o Cloud TPU cria uma VM TPU para cada grupo de quatro chips.
Para instalar os binários ou executar o código, conecte-se a cada VM da TPU usando o
tpu-vm ssh command
.gcloud compute tpus tpu-vm ssh ${TPU_NAME}
Para acessar uma VM de TPU específica ou instalar binários em cada VM de TPU com SSH, use a sinalização
--worker
, que segue um índice baseado em zero:gcloud compute tpus tpu-vm ssh ${TPU_NAME} --worker=1
Quando você tiver mais de uma VM de TPU, use as sinalizações
--worker=all
e--command
para executar um comando em todas as VMs de TPU ao mesmo tempo. Exemplo:gcloud compute tpus tpu-vm ssh ${TPU_NAME} --project ${PROJECT_ID} \ --zone ${ZONE} \ --worker=all \ --command='pip install "jax[tpu]==0.4.20" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html'
No Multislice, é possível executar um comando em uma única VM (usando o tpu-name enumerado) ou usar as sinalizações
--node=all
,--worker=all
e--command
para executar o comando em todas as VMs de TPU de todas as frações do Multislice, com um campo opcional--batch-size
.gcloud compute tpus queued-resources ssh ${QUEUED_RESOURCE_ID} \ --project ${PROJECT_ID} --zone ${ZONE} --node=all --worker=all \ --command='pip install "jax[tpu]==0.4.20" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html' --batch-size=4
$ gcloud compute tpus tpu-vm ssh tpu-name --zone=zone
Para usar o SSH no navegador, faça o seguinte:
No console do Google Cloud, acesse a página TPUs:
Na lista de VMs de TPU, clique em SSH na linha da VM da TPU à qual você quer se conectar.
Nós da TPU
Por padrão, o comando gcloud
usado para criar nós de TPU tenta automaticamente
efetuar SSH ao nó de TPU. Se você estiver usando nós de TPU e não estiver conectado à instância do Compute Engine pelo comando gcloud
, conecte-se executando o seguinte:
$ gcloud compute ssh tpu-name \
--zone=zone
Após a criação da VM da TPU, é possível visualizar os registros do script de inicialização. Basta conectar-se à VM da TPU usando SSH
e executando:
$ cat /var/log/syslog | grep startup-script
Como listar recursos do Cloud TPU
É possível listar todos os seus Cloud TPUs em uma zona especificada.
Como listar recursos do Cloud TPU usando gcloud
Os comandos usados dependem do uso de VMs ou nós de TPU. Para mais informações, consulte Arquitetura do sistema.
VMs de TPU
$ gcloud compute tpus tpu-vm list --zone=zone
Nós da TPU
$ gcloud compute tpus execution-groups list --zone=zone
Esse comando lista os recursos do Cloud TPU na zona especificada. Se nenhum recurso estiver configurado, a saída mostrará apenas traços para a VM e a TPU. Se um recurso estiver ativo e o outro não, uma mensagem informará que o status não é íntegro. Inicie ou reinicie qualquer recurso que não esteja em execução.
Como listar os recursos do Cloud TPU no console do Google Cloud
Acesse o console do Google Cloud.
No menu de navegação, selecione Compute Engine > TPUs. O console exibe a página "TPUs".
Como recuperar informações sobre o Cloud TPU
É possível recuperar informações sobre um Cloud TPU especificado.
Recuperar informações sobre um Cloud TPU usando gcloud
Os comandos usados dependem do uso de VMs ou nós de TPU. Para mais informações, consulte Arquitetura do sistema.
VMs de TPU
$ gcloud compute tpus tpu-vm describe tpu-name \
--zone=zone
Nós da TPU
$ gcloud compute tpus execution-groups describe tpu-name \
--zone=zone
Recuperar informações sobre um Cloud TPU no console do Google Cloud
- Acesse o console do Google Cloud.
- No menu de navegação, selecione Compute Engine > TPUs. O console exibe a página "TPUs".
- Clique no nome do Cloud TPU. A página de detalhes do Cloud TPU é exibida.
Como interromper seus recursos do Cloud TPU
É possível interromper um único Cloud TPU para interromper as cobranças sem perder a configuração e o software da sua VM. Não é possível interromper pods ou TPUs de TPU alocados por meio da API de recursos na fila. Para interromper as cobranças para TPUs alocadas por meio da API de recursos em fila, é necessário excluir a TPU.
Como interromper uma Cloud TPU usando gcloud
Os comandos usados para interromper uma Cloud TPU dependem do uso de VMs ou nós de TPU. Para mais informações, consulte Arquitetura do sistema.
VMs de TPU
$ gcloud compute tpus tpu-vm stop tpu-name \
--zone=zone
Nós da TPU
$ gcloud compute tpus stop tpu-name \
--zone=zone
Como interromper uma Cloud TPU no console do Google Cloud
Acesse o console do Google Cloud.
No menu de navegação, selecione Compute Engine > TPUs. O console exibe a página "TPUs".
Marque a caixa de seleção ao lado do seu Cloud TPU e clique em Parar.
Como iniciar os recursos do Cloud TPU
É possível iniciar um Cloud TPU quando ele está parado.
Como iniciar uma Cloud TPU usando gcloud
É possível iniciar uma Cloud TPU interrompida para continuar a usá-la.
O comando usado para iniciar uma Cloud TPU interrompida depende de você estar usando VMs ou nós de TPU. Para mais informações, consulte Arquitetura do sistema.
VMs de TPU
$ gcloud compute tpus tpu-vm start tpu-name --zone=zone
Nós da TPU
$ gcloud compute tpus start tpu-name --zone=zone
Como iniciar uma Cloud TPU no console do Google Cloud
Acesse o console do Google Cloud.
No menu de navegação, selecione Compute Engine > TPUs. O console exibe a página "TPUs".
Marque a caixa de seleção ao lado do seu Cloud TPU e clique em Iniciar.
Excluir a VM da TPU
O comando usado depende se você usa VMs ou nós de TPU. Para mais informações, consulte Arquitetura do sistema.
VMs de TPU
Exclua as frações da VM da TPU no final da sessão.
gcloud compute tpus tpu-vm delete ${TPU_NAME} --project=${PROJECT_ID} --zone=${ZONE} --quiet
Descrições de sinalizações de comando
zone
- A zona em que você planeja excluir o Cloud TPU.
Nós da TPU
$ gcloud compute tpus execution-groups delete tpu-name \
--zone=zone
Descrições de sinalizações de comando
zone
- A zona em que você planeja excluir o Cloud TPU.
Como excluir uma Cloud TPU no console do Google Cloud
Acesse o console do Google Cloud.
No menu de navegação, selecione Compute Engine > TPUs. O console exibe a página "TPUs".
Marque a caixa de seleção ao lado do seu Cloud TPU e clique em Excluir.
Configurações avançadas
Recursos de rede personalizados
Ao criar a TPU, especifique a rede e/ou uma sub-rede. Para isso, envie um comando gcloud
ou uma chamada de curl
.
Para especificar a rede ou sub-rede na CLI gcloud
, use:
--network [NETWORK] --subnetwork [SUBNETWORK]
Para especificar a rede ou sub-rede em uma chamada curl
, use:
network_config: {network: '[NETWORK]', subnet: '[SUBNETWORK]', enable_external_ips: true}
Rede
Como opção, é possível especificar a rede a ser usada para a TPU. Se não for especificada,
a rede default
será usada.
Formatos de rede válidos:
https://www.googleapis.com/compute/{version}/projects/{proj-id}/global/networks/{network} 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}
Sub-rede
Você pode especificar a sub-rede para usar uma determinada sub-rede. A sub-rede especificada precisa estar na mesma região que a zona em que a TPU é executada.
Formatos válidos:
https://www.googleapis.com/compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork} 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}
Acesso privado do Google
Para se conectar via SSH às VMs de TPU, é preciso adicionar configurações de acesso a elas ou ativar o Acesso privado do Google para a sub-rede a que as VMs de TPU estão conectadas.
Para adicionar configurações de acesso, defina enable_external_ips
. Quando você cria uma TPU, enable_external_ips
é definido por padrão. Se você quiser desativar, especifique o
seguinte comando:
--internal-ips
Ou use uma chamada curl
:
network_config: {enable_external_ips: true}
Depois de configurar o Acesso privado do Google, conecte-se à VM via SSH.
Conta de serviço personalizada
Cada VM da TPU tem uma conta de serviço associada que é usada para fazer solicitações de API em seu nome. As VMs da TPU usam essa conta de serviço para chamar as APIs do Cloud TPU, acessar o Cloud Storage e outros serviços. Por padrão, a VM da TPU usa a conta de serviço padrão do Compute Engine.
Especifique uma conta de serviço personalizada ao criar uma VM da TPU usando a sinalização --service-account
. A conta de serviço precisa ser definida no mesmo projeto do Google Cloud em que você cria a VM da TPU. As contas de serviço personalizadas usadas para VMs de TPU precisam ter o papel de Leitor da TPU para chamar a API Cloud TPU. Se o código em execução na VM da TPU chamar outros serviços do Google Cloud, ele precisará ter os papéis necessários para acessar esses serviços.
Ao criar uma TPU, especifique uma conta de serviço personalizada usando a sinalização --service-account
. Para mais informações sobre contas de serviço,
consulte Contas de serviço.
Use os comandos a seguir para especificar uma conta de serviço personalizada.
Criar uma VM de TPU usando a CLI gcloud
$ gcloud compute tpus tpu-vm create tpu-name \
--zone=us-central2-b \
--accelerator-type=tpu-type \
--version=tpu-vm-tf-2.16.1-pjrt \
--service-account=your-service-account
Criar uma VM de TPU usando curl
$ 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.16.1-pjrt', \
network_config: {enable_external_ips: true}, \
shielded_instance_config: { enable_secure_boot: true }}" \
service_account: {email: 'your-service-account'} \
https://tpu.googleapis.com/v2/projects/project-id/locations/us-central2-b/nodes?node_id=node_name
Para usar uma conta de serviço personalizada, é necessário autorizá-la para seus buckets do Google Cloud Storage. Para mais informações, consulte Como se conectar a buckets do Cloud Storage.
Métodos SSH de VM personalizada
Configure um firewall para SSH.
A rede padrão vem pré-configurada para permitir o acesso SSH a todas as VMs. Se você não usa a rede padrão ou se as configurações de rede padrão foram editadas, talvez seja necessário ativar explicitamente o acesso SSH adicionando uma regra de firewall:
$ gcloud CLI compute firewall-rules create \ --network=network allow-ssh \ --allow=tcp:22
SSH nas VMs de TPU.
$ gcloud compute tpus tpu-vm ssh tpu-name \ --zone=us-central2-b \ --project=project-id
Campos obrigatórios
tpu-name
: nome do nó da TPU.zone
: o local do nó da TPU. Atualmente, só há suporte paraus-central2-b
.project-id
: o projeto que você criou acima.
Para conferir uma lista de campos opcionais, consulte a documentação da API
gcloud
.