Gerenciar recursos de TPU

Nesta página, descrevemos como gerenciar recursos do Cloud TPU usando:

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:

  1. Como usar recursos na fila: gcloud alpha compute tpus queued-resources create
  2. Usando a API Create Node: gcloud alpha 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 alpha 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 alpha 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

  1. Acesse o console do Google Cloud.
  2. No menu de navegação, selecione Compute Engine > TPUs.
  3. Clique em CRIAR NÓ DE TPU.
  4. Na caixa Nome, digite um nome de instância de TPU.
  5. Na caixa Zona, selecione a zona em que a TPU será criada.
  6. 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.
  7. Em Tipo de TPU, selecione o tipo de TPU que você quer criar.
  8. 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.
  9. 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 alpha 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:

    1. No console do Google Cloud, acesse a página TPUs:

      Acessar TPUs

    2. 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

  1. Acesse o console do Google Cloud.

  2. 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

  1. Acesse o console do Google Cloud.
  2. No menu de navegação, selecione Compute Engine > TPUs. O console exibe a página "TPUs".
  3. 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

  1. Acesse o console do Google Cloud.

  2. No menu de navegação, selecione Compute Engine > TPUs. O console exibe a página "TPUs".

  3. 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

  1. Acesse o console do Google Cloud.

  2. No menu de navegação, selecione Compute Engine > TPUs. O console exibe a página "TPUs".

  3. 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

  1. Acesse o console do Google Cloud.

  2. No menu de navegação, selecione Compute Engine > TPUs. O console exibe a página "TPUs".

  3. 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 alpha 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

  1. 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
    
  2. 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 para us-central2-b.
    • project-id: o projeto que você criou acima.

    Para conferir uma lista de campos opcionais, consulte a documentação da API gcloud.