Adicionar um Persistent Disk a uma VM de TPU

Uma VM de TPU inclui um disco de inicialização de 100 GB. Em alguns cenários, pode ser necessário mais armazenamento local para treinamento ou pré-processamento. Adicione um disco permanente para expandir a capacidade do disco local.

Informações gerais

Um Persistent Disk anexado a uma TPU de dispositivo único (v2-8, v3-8, v4-8 etc.) pode ser configurado como read-write ou read-only. Quando você anexa um Persistent Disk a uma VM de TPU que faz parte de um pod de TPU, o disco é anexado a cada VM de TPU nesse pod. Para impedir que duas ou mais VMs de TPU de um pod gravem em um Persistent Disk ao mesmo tempo, todos os discos permanentes anexados a uma VM de TPU em um pod precisam ser configurados como read-only. Os discos read-only são úteis para armazenar um conjunto de dados para processamento em um pod de TPU.

Depois de criar e anexar um Persistent Disk à VM de TPU, é preciso montar o Persistent Disk, especificando em que local do sistema de arquivos o Persistent Disk pode ser acessado. Para mais informações, consulte Como montar um disco.

Pré-requisitos

Você precisa ter uma conta e um projeto do Google Cloud configurados antes de usar os procedimentos a seguir. Se você ainda não tiver um projeto do Cloud TPU configurado, siga o procedimento em Configurar uma conta e um projeto do Cloud TPU antes de continuar.

Etapas avançadas

As etapas avançadas para configurar um Persistent Disk:

  1. Crie um disco permanente
  2. Anexar um Persistent Disk a uma VM de TPU
  3. Montar o disco permanente
  4. Limpar recursos de VM e Persistent Disk da TPU

Como configurar uma VM de TPU e um Persistent Disk

É possível anexar um Persistent Disk a uma VM de TPU ao criar essa VM. Também é possível anexar um Persistent Disk a uma VM de TPU atual.

Criar disco permanente

Use o seguinte comando para criar um Persistent Disk:

  $ gcloud compute disks create disk-name \
    --size disk-size  \
    --zone zone \
    --type pd-balanced

Descrições de sinalizações de comando

disk-name
Um nome de sua escolha para o Persistent Disk.
disk-size
O tamanho do Persistent Disk em GB.
zone
A zona em que o Persistent Disk será criado. Ela precisa ser a mesma zona usada para criar a TPU.
type
O tipo de disco a ser adicionado. Os tipos compatíveis são: "pd-standard", "pd-ssd" ou "pd- Restaurante".

Anexar um Persistent Disk

É possível anexar um Persistent Disk à sua VM de TPU ao criar a VM da TPU ou adicionar um após a criação da VM da TPU.

Anexar um Persistent Disk ao criar uma VM de TPU

Use a sinalização --data-disk para anexar um Persistent Disk ao criar uma VM de TPU. Se você estiver criando um pod de TPU, será preciso especificar mode=read-only. Se você estiver criando um único dispositivo TPU, especifique mode=read-only ou mode=read-write. O comando a seguir cria uma única TPU e define o modo do Persistent Disk como read-write:

  $ gcloud compute tpus tpu-vm create tpu-name \
    --project project-id \
    --zone=zone \
    --accelerator-type=v3-8 \
    --version=Cloud TPU software version \
    --data-disk source=projects/project-id/zones/zone/disks/disk-name,mode=read-write

Descrições de sinalizações de comando

tpu-name
O nome que você escolheu para os recursos da TPU.
project
O ID do projeto.
zone
A zona em que o Cloud TPU será criado.
accelerator-type
O tipo do Cloud TPU a ser criado.
version
A versão do software do Cloud TPU para o framework.
data-disk
O nome e o modo de leitura/gravação do Persistent Disk a ser anexado à VM da TPU.

Anexar um Persistent Disk a uma VM de TPU atual

Use o comando gcloud alpha compute tpus tpu-vm attach-disk para anexar um Persistent Disk a uma VM de TPU atual. Consulte a documentação gcloud para ver mais detalhes e exemplos.

  $ gcloud alpha compute tpus tpu-vm attach-disk tpu-name \
    --zone=zone \
    --disk=disk-name \
    --mode=disk-mode

Descrições de sinalizações de comando

tpu-name
O nome dos recursos da TPU.
zone
A zona em que o Cloud TPU está localizado.
disk-name
O nome do Persistent Disk a ser anexado à VM da TPU.
mode
O modo do disco. O modo precisa ser "somente leitura" ou "leitura-gravação".

Para excluir o Persistent Disk ao excluir a VM da TPU, defina o estado de exclusão automática do Persistent Disk usando o seguinte comando:

$ gcloud compute instances set-disk-auto-delete vm-instance \
  --zone=zone \
  --auto-delete \
  --disk=disk-name

Descrições de sinalizações de comando

vm-instance
Depois de inserir o SSH na VM da TPU, o prompt do shell será alterado para incluir seu ID de usuário seguido por um nome de instância de VM gerado (por exemplo, pjohnston@t1v-n-...$). Substitua vm-instance pelo nome da instância de VM gerada.
zone
A zona em que o Persistent Disk está localizado.
auto-delete
Excluir automaticamente o Persistent Disk quando os recursos da TPU forem excluídos.
disk-name
Um nome do seu Persistent Disk.

Se a VM for desligada por qualquer motivo, talvez o Persistent Disk seja desconectado. Consulte Configurar a montagem automática na reinicialização do sistema para que o Persistent Disk seja ativado automaticamente na reinicialização da VM.

Para saber mais sobre como excluir automaticamente um Persistent Disk, consulte Modificar um disco permanente.

Montar um Persistent Disk

Para acessar um Persistent Disk a partir de uma VM de TPU, é preciso ativar o disco. Isso especifica um local no sistema de arquivos da VM da TPU em que o Persistent Disk pode ser acessado.

  1. Conecte-se à VM da TPU usando SSH:

    $ gcloud compute tpus tpu-vm ssh tpu-name --zone zone
    

    Ao trabalhar com um pod de TPU, há uma VM de TPU para cada TPU. O comando anterior funciona para dispositivos e pods de TPU. Se você estiver usando pods de TPU, esse comando conectará você à primeira TPU no pod (também chamada de worker 0).

  2. Na VM de TPU, liste os discos anexados à VM:

    (vm)$ sudo lsblk
    

    A saída do comando lsblk vai ser semelhante a esta:

    NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    loop0     7:0    0  55.5M  1 loop /snap/core18/1997
    loop1     7:1    0  67.6M  1 loop /snap/lxd/20326
    loop2     7:2    0  32.3M  1 loop /snap/snapd/11588
    loop3     7:3    0  32.1M  1 loop /snap/snapd/11841
    loop4     7:4    0  55.4M  1 loop /snap/core18/2066
    sda       8:0    0   300G  0 disk
    ├─sda1    8:1    0 299.9G  0 part /
    ├─sda14   8:14   0     4M  0 part
    └─sda15   8:15   0   106M  0 part /boot/efi
    sdb       8:16   0    10G  0 disk    <== Persistent Disk
    

    Neste exemplo, sda é o disco de inicialização e sdb é o nome do disco permanente recém-anexado. O nome do Persistent Disk anexado depende de quantos discos permanentes estão anexados à VM.

    Ao usar um pod de TPU, você precisará montar o Persistent Disk em todas as VMs de TPU no pod. O nome do Persistent Disk precisa ser o mesmo para todas as VMs da TPU, mas isso não é garantido. Por exemplo, se você desanexar e anexar novamente oPersistent Diske, o nome do dispositivo será incrementado, mudando de sdb para sdc e assim por diante.

  3. Se o disco não tiver sido formatado, formate o Persistent Disk anexado agora:

    (vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
    
  4. Crie um diretório para montar o Persistent Disk:

    Se você estiver usando um dispositivo TPU, execute o comando a seguir para criar um diretório e ativar o Persistent Disk:

    (vm)$ sudo mkdir -p /mnt/disks/persist
    

    Se você estiver usando um pod de TPU, execute o comando a seguir fora da sua VM de TPU. Isso criará o diretório em todas as VMs de TPU no pod.

    gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/persist"
    
  5. Monte o Persistent Disk:

    Se você estiver usando um dispositivo TPU, execute o comando a seguir para ativar o disco permanente na VM de TPU.

    (vm)$ sudo mount -o discard,defaults /dev/sdb /mnt/disks/persist

    Se você estiver usando um pod de TPU, execute o comando a seguir fora da VM da TPU. Ele monta o Persistent Disk em todas as VMs de TPU no pod.

    (vm)$ gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all --command="sudo mount -o discard,defaults /dev/sdb /mnt/disks/persist"

Limpeza

Exclua os recursos de TPU quando terminar.

  1. Desconecte-se da instância do Compute Engine, caso ainda não tenha feito isso:

    (vm)$ exit
    

    Agora, o prompt será username@projectname, mostrando que você está no Cloud Shell.

  2. Exclua os recursos do Cloud TPU e do Compute Engine.

    $ gcloud compute tpus tpu-vm delete tpu-name \
     --zone=zone
    
  3. Execute gcloud list para verificar se os recursos foram excluídos. A exclusão pode levar vários minutos. A saída de gcloud list não pode exibir nenhum dos recursos de VM de TPU criados por este procedimento.

    VM de TPU

    $ gcloud compute tpus tpu-vm list --zone=zone
    

    Nó da TPU

    $ gcloud compute tpus execution-groups list --zone zone
    
  4. Confira se o Persistent Disk foi excluído automaticamente quando a VM da TPU foi excluída. Para isso, liste todos os discos na zona em que você criou o Persistent Disk:

    $ gcloud compute disks list --filter="zone:( us-central1-b )"
    

    Se o Persistent Disk não foi excluído junto com a VM da TPU, use os seguintes comandos para excluí-lo:

    $ gcloud compute disks delete disk-name \
    --zone zone