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
- Acesse a página "TPUs" na página principal do Compute Engine.
- Clique em CRIAR NÓ DE TPU para abrir a página de criação de nó da TPU.
- Digite um nome para o nó de TPU.
- Selecione a zona em que o nó de TPU será criado.
- Selecione um Tipo de TPU para o nó de TPU.
- Clique em Ativar a preempção deste nó para ativar a capacidade de preempção do nó de TPU.
- 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.