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, a VM da TPU pode precisar de armazenamento adicional para treinamento ou pré-processamento. É possível adicionar um Persistent Disk para expandir a capacidade do disco local.

Visão geral

Um Persistent Disk anexado a um 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 de uma só vez, todos os discos permanentes conectados 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, você precisa montar o Persistent Disk, especificando onde no sistema de arquivos ele pode ser acessado. Para mais informações, consulte Como montar um disco.

Pré-requisitos

É necessário 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 o ambiente do Cloud TPU antes de continuar.

Etapas avançadas

Etapas gerais para configurar um Persistent Disk:

  1. Criar 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.

Criar disco permanente

Use o comando a seguir 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 aceitos são: pd-standard, pd-ssd ou pd-balanced.

Anexar um Persistent Disk

É possível anexar um Persistent Disk à VM de TPU ao criar a VM de TPU ou adicionar um depois que ela for criada.

Anexar um Persistent Disk ao criar uma VM de TPU

Use a flag --data-disk para anexar um Persistent Disk ao criar uma VM de TPU. Se você estiver criando um pod de TPU, especifique 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 de Persistent Disk como read-write:

  $ gcloud compute tpus tpu-vm create tpu-name \
    --project project-id \
    --zone=zone \
    --accelerator-type=v3-8 \
    --version=tpu-vm-image \
    --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 de acelerador especifica a versão e o tamanho da Cloud TPU que você quer criar. Para mais informações sobre os tipos de aceleradores compatíveis com cada versão de TPU, consulte Versões de TPU.
version
A imagem da VM de TPU para sua estrutura.
data-disk
O nome e o modo de leitura/gravação do Persistent Disk a ser anexado à VM de TPU.

Anexar um Persistent Disk a uma VM de TPU

Use o comando gcloud alpha compute tpus tpu-vm attach-disk para anexar um Persistent Disk a uma VM TPU existente. Consulte a documentação do gcloud para 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 de TPU.
mode
O modo do disco. O modo precisa ser read-only ou read-write.

Se você quiser excluir o Persistent Disk ao excluir a VM de TPU, definirá 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 se conectar por SSH à VM de TPU, o prompt do shell é alterado para incluir o ID do usuário seguido por um nome de instância de VM gerada (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
Exclua automaticamente o Persistent Disk quando os recursos da TPU forem excluídos.
disk-name
Um nome do Persistent Disk.

Se a VM for desligada por algum motivo, o Persistent Disk poderá ser desconectado. Consulte Configurar a ativação automática na reinicialização do sistema para fazer com que seu Persistent Disk seja ativado automaticamente na reinicialização da VM.

Para mais informações sobre como excluir automaticamente um Persistent Disk, consulte Modificar um disco permanente.

Montar um Persistent Disk

Para acessar um Persistent Disk de uma VM de TPU, você precisa montar o disco. Isso especifica um local no sistema de arquivos da VM de TPU em que o Persistent Disk pode ser acessado.

  1. Conecte-se à VM do 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 no pod. O comando anterior funciona para dispositivos e pods da TPU. Se você estiver usando pods de TPU, esse comando vai 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 conectados à VM.

    Ao usar um pod de TPU, você vai 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 do TPU, mas isso não é garantido. Por exemplo, se você desconectar e reconectar o Persistent Disk, o nome do dispositivo será incrementado, mudando de sdb para sdc.

  3. Se o disco não tiver sido formatado, faça isso 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 para montar o Persistent Disk:

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

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

    (vm)$ 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 montar o Persistent Disk na VM da TPU.

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

    Se você estiver usando um pod de TPU, execute o comando abaixo fora da VM de TPU. Ele vai montar 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"

Desmontar um disco permanente

Para desmontar (desinstalar) um disco permanente, execute o seguinte comando:

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

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 desconectado da VM de TPU.

Limpar

Exclua os recursos da TPU quando não precisar mais deles.

  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 mostrar nenhum dos recursos de VM de TPU criados por este procedimento.

    $ gcloud compute tpus tpu-vm list --zone=zone
  4. Verifique se o Persistent Disk foi excluído automaticamente quando a VM de TPU foi excluída, listando todos os discos na zona em que o Persistent Disk foi criado:

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

    Se o Persistent Disk não tiver sido excluído quando a VM de TPU foi excluída, use os seguintes comandos para excluí-lo:

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