TPUs preemptivas

As TPUs preemptivas são muito mais baratas do que as não preemptivas. O serviço do Cloud TPU pode interromper (encerrar) essas TPUs a qualquer momento se exigir outros recursos da TPU.

Se você estiver criando uma VM de TPU preemptiva, use o comando gcloud. Se você estiver criando um nó da TPU preemptiva, use o comando gcloud ou o Console. Para mais informações sobre as diferenças entre VMs e nós de TPU, consulte Arquitetura do sistema.

Como criar uma VM preemptiva da TPU

gcloud

$ gcloud compute tpus tpu-vm create demo-tpu \
  --zone=europe-west4-a \
  --accelerator-type=v3-8 \
  --version=tpu-vm-tf-2.16.1-pjrt \
  --preemptible
  

onde:

  • demo-tpu é um nome para a TPU;
  • --accelerator-type especifica o tipo de TPU.
  • --version especifica a versão do software de VM da TPU a ser instalada;
  • --preemptible permite que a Cloud TPU force a interrupção da TPU.

Como criar um nó da TPU preemptiva

Console

  1. Acesse a página "TPUs" na página principal do Compute Engine.
  2. Clique em CRIAR NÓ DE TPU para abrir a página de criação de nó da TPU.
  3. Digite um nome para o nó de TPU.
  4. Selecione a zona em que o nó de TPU será criado.
  5. Selecione um Tipo de TPU para o nó de TPU.
  6. Clique em Ativar a preempção deste nó para ativar a capacidade de preempção do nó de TPU.
  7. Selecione a versão do TensorFlow ou do PyTorch para instalar na VM.

gcloud

$ gcloud compute tpus execution-groups create \
  --name=demo-tpu \
  --zone=europe-west4-a \
  --accelerator-type=v3-8 \
  --tf-version=2.12.0 \
  --preemptible
  

onde:

  • demo-tpu é um nome para a TPU;
  • `--accelerator-type especifica o tipo de TPU;
  • --tf-version especifica a versão do TensorFlow ou do PyTorch a ser instalada na VM.
  • --preemptible permite que a Cloud TPU force a interrupção da TPU.

Com os nós de TPU, o status preemptivo de uma TPU é independente do status preemptivo da instância de VM.

Preços e cotas para TPUs preemptivas

O preço das TPUs preemptíveis é significativamente menor do que das TPUs normais. Para detalhes, consulte a página de preços. Não haverá cobranças pelas TPUs caso elas sejam interrompidas no primeiro minuto após a criação.

Geralmente, a cota para TPUs preemptivas é maior e contabilizada separadamente da cota para TPUs normais. Consulte a página de cotas.

Como descobrir se uma TPU foi interrompida

Use o seguinte comando gcloud para verificar se o serviço do Cloud TPU encerrou por preempção a TPU:

Liste as TPUs disponíveis:

VM de TPU

gcloud compute tpus tpu-vm list --zone=us-central1-b

Nó da TPU

(vm)$ gcloud compute tpus list --zone=us-central1-b

A saída do comando exibe os detalhes das TPUs criadas no projeto. Se uma TPU tiver sido interrompida, o status mudará de READY para PREEMPTED.

Exemplo:

NAME       ZONE           ACCELERATOR_TYPE  NETWORK_ENDPOINT   NETWORK  RANGE          STATUS
demo-tpu   us-central1-b  v2-8              10.240.1.2:8470    default  10.240.1.0/29  PREEMPTED

VMs e TPUs preemptivas (somente nós de TPU)

Conforme descrito no guia de início rápido do seu framework, é necessário ter uma máquina virtual (VM) do Compute Engine para se conectar a uma TPU. Observe que o status preemptivo da TPU é independente do status preemptivo da VM. É possível definir a TPU como preemptiva e a VM como não preemptiva ou vice-versa. Outra opção é definir ambas como preemptivas.

A combinação mais provável é uma TPU preemptiva e uma VM não preemptiva. Observe os seguintes detalhes:

  • As cobranças pela VM provavelmente serão baixas em comparação às cobranças pela TPU. As cobranças pela VM dependem do tipo de máquina usado. Consulte a página de preços para ver um exemplo simples dos custos relativos.
  • O Cloud TPU não coordena a preempção da VM e da TPU. Se você definir ambas como preemptivas, a VM e a TPU poderão ser interrompidas em momentos diferentes.
  • Se o Compute Engine forçar a interrupção da VM, você ainda será cobrado pela TPU, a menos que ela também seja interrompida. Observe que a TPU permanece inativa enquanto a VM é interrompida.
  • As instâncias preemptivas, tanto as instâncias de VM do Compute Engine quanto as do Cloud TPU, são sempre interrompidas após 24 horas. Certas ações redefinem esse contador de 24 horas.

Como detectar se uma instância de VM foi interrompida (somente nós de TPU)

Para verificar se a instância da VM foi interrompida, use o comando gcloud compute operations list para conseguir uma lista de operações recentes do sistema. Adicione um filtro name para exibir apenas as instâncias em execução ou adicione o filtro operationType para exibir apenas os recursos que foram interrompidos. Por exemplo, use o seguinte comando para exibir apenas as instâncias com o nome de instância especificado:

$ gcloud compute operations list--filter="name=( 'NAME' my-vm)"

O exemplo a seguir exibe apenas os recursos que foram interrompidos:

$ gcloud compute operations list --filter="operationType=compute.instances.preempted"

Para saber mais, consulte o guia do Compute Engine.

Como projetar um aplicativo de aprendizado de máquina executável em TPUs preemptivas

Seu aplicativo precisa ser resiliente a reinicializações da VM e da TPU. Para isso, salve regularmente os checkpoints do modelo e configure o aplicativo para restaurar o checkpoint mais recente ao reiniciar.