Anexe armazenamento em bloco duradouro a uma VM da TPU

Uma VM da TPU inclui um disco de arranque de 100 GiB. Em alguns cenários, a VM de TPU pode precisar de armazenamento adicional para a preparação ou o pré-processamento. Pode adicionar um Google Cloud Hyperdisk ou um volume de disco persistente (PD) para expandir a capacidade do disco local.

Para o desempenho mais elevado e funcionalidades avançadas, a Google recomenda a utilização do Hyperdisk, se estiver disponível para a sua TPU. Caso contrário, use o disco persistente. Para mais informações sobre as opções de armazenamento em blocos no Compute Engine, consulte o artigo Escolha um tipo de disco.

Suporte de TPU para Hyperdisk e disco persistente

A tabela seguinte mostra os tipos de discos suportados para cada versão da TPU:

Versão da TPU Tipos de discos suportados Máximo de PDs por VM
(inclui o disco de arranque)
v6e Hyperdisk Balanced
Hyperdisk ML
Os PDs não são suportados pela v6e
v5p Disco persistente equilibrado 128
v5e Disco persistente equilibrado 128
v4 Disco persistente equilibrado 128
v3 Disco persistente equilibrado 128
v2 Disco persistente equilibrado 128

Modos de acesso

Pode configurar um disco associado a uma TPU no modo de gravação única ou só de leitura, conforme mostrado na tabela seguinte:

Modo de acesso Descrição Valor na API Compute Engine Valor na API Cloud TPU Tipos de discos suportados
Modo de gravação única Este é o modo de acesso predefinido. Permite que o disco seja anexado a, no máximo, uma instância em qualquer altura. A instância tem acesso de leitura/escrita ao disco. READ_WRITE_SINGLE read-write
  • Hyperdisk Balanced
  • Hyperdisk ML
  • Disco persistente equilibrado
Modo de leitura Permite anexos simultâneos a várias instâncias no modo de leitura. As instâncias não podem escrever no disco neste modo. Necessário para a partilha só de leitura. READ_ONLY_MANY read-only
  • Hyperdisk Balanced
  • Disco persistente equilibrado

Pode configurar um disco associado a uma TPU de anfitrião único (por exemplo, v6e-8, v5p-8 ou v5litepod-8) no modo de gravação única ou de leitura.

Quando anexa um disco a uma TPU multi-anfitrião, o disco é anexado a cada VM nessa TPU. Para impedir que duas ou mais VMs de TPU escrevam num disco ao mesmo tempo, tem de configurar todos os discos associados a uma TPU multi-anfitrião como só de leitura. Os discos só de leitura são úteis para armazenar um conjunto de dados para processamento numa fatia de TPU.

Pré-requisitos

Tem de ter uma conta Google Cloud e um projeto configurados antes de usar os procedimentos seguintes. Para mais informações, consulte o artigo Configure o ambiente do Cloud TPU.

Crie um disco

Use o seguinte comando para criar um disco:

$ gcloud compute disks create DISK_NAME \
    --size DISK_SIZE  \
    --zone ZONE \
    --type DISK_TYPE

Descrições das flags de comando

DISK_NAME
O nome do novo disco.
DISK_SIZE
O tamanho do novo disco. O valor tem de ser um número inteiro seguido de uma unidade de tamanho de GB para gibibyte ou TB para tebibyte. Se não for especificada nenhuma unidade de tamanho, é assumido GB.
ZONE
O nome da zona na qual criar o novo disco. Esta tem de ser a mesma zona usada para criar a TPU.
DISK_TYPE
O tipo de disco. Use um dos seguintes valores: hyperdisk-balanced, hyperdisk-ml ou pd-balanced.

Para o Hyperdisk, pode especificar opcionalmente a flag --access-mode com um dos seguintes valores:

  • READ_WRITE_SINGLE: acesso de leitura/escrita a partir de uma instância. Esta é a predefinição.
  • READ_ONLY_MANY: (apenas Hyperdisk ML) Acesso simultâneo só de leitura a partir de várias instâncias.

Para mais informações sobre como criar discos, consulte os artigos Crie um novo volume do Hyperdisk e Crie um novo volume do Persistent Disk.

Anexe um disco

Pode anexar um volume de disco à sua VM da TPU quando criar a VM da TPU ou pode anexá-lo depois de criar a VM da TPU.

Anexe um disco quando criar uma VM de TPU

Use a flag --data-disk para anexar um volume de disco quando criar uma VM da TPU.

Se estiver a criar uma TPU multi-host, tem de especificar mode=read-only (apenas Hyperdisk ML e disco persistente equilibrado). Se estiver a criar uma TPU de anfitrião único, pode especificar mode=read-only (apenas Hyperdisk ML e disco persistente equilibrado) ou mode=read-write. Para mais informações, consulte o artigo Modos de acesso.

O exemplo seguinte mostra como anexar um volume de disco quando cria uma VM da TPU usando recursos em fila:

$ gcloud compute tpus queued-resources create QR_NAME \
    --node-id=TPU_NAME
    --project PROJECT_ID \
    --zone=ZONE \
    --accelerator-type=ACCELERATOR_TYPE \
    --runtime-version=TPU_SOFTWARE_VERSION \
    --data-disk source=projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME,mode=MODE

Descrições das flags de comando

QR_NAME
O nome do pedido de recurso em fila.
TPU_NAME
O nome da nova TPU.
PROJECT_ID
O ID do Google Cloud projeto no qual criar a TPU.
ZONE
O nome da zona na qual criar o Cloud TPU.
ACCELERATOR_TYPE
O tipo de acelerador especifica a versão e o tamanho da TPU na nuvem que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
TPU_SOFTWARE_VERSION
A versão do software do TPU.
DISK_NAME
O nome do disco a anexar à VM da TPU.
MODE
O modo do disco. O modo tem de ser um dos seguintes: read-only ou read-write. Se não for especificado, o modo predefinido é read-write. Para mais informações, consulte o artigo Modo de acesso.

Também pode anexar um disco quando cria uma VM da TPU com o comando gcloud compute tpus tpu-vm create:

$ gcloud compute tpus tpu-vm create TPU_NAME \
    --project PROJECT_ID \
    --zone=ZONE \
    --accelerator-type=ACCELERATOR_TYPE \
    --version=TPU_SOFTWARE_VERSION \
    --data-disk source=projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME,mode=MODE

Descrições das flags de comando

TPU_NAME
O nome da nova TPU.
PROJECT_ID
O ID do Google Cloud projeto no qual criar a TPU.
ZONE
O nome da zona na qual criar o Cloud TPU.
ACCELERATOR_TYPE
O tipo de acelerador especifica a versão e o tamanho da TPU na nuvem que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
TPU_SOFTWARE_VERSION
A versão do software do TPU.
DISK_NAME
O nome do disco a anexar à VM da TPU.
MODE
O modo do disco. O modo tem de ser um dos seguintes: read-only ou read-write. Se não for especificado, o modo predefinido é read-write. Para mais informações, consulte o artigo Modos de acesso.

Anexe um disco a uma VM da TPU existente

Use o comando gcloud alpha compute tpus tpu-vm attach-disk para anexar um disco a uma VM da TPU existente.

$ gcloud alpha compute tpus tpu-vm attach-disk TPU_NAME \
    --zone=ZONE \
    --disk=DISK_NAME \
    --mode=MODE

Descrições das flags de comando

TPU_NAME
O nome da TPU.
ZONE
A zona onde a Cloud TPU está localizada.
DISK_NAME
O nome do disco a anexar à VM da TPU.
MODE
O modo do disco. O modo tem de ser um dos seguintes: read-only ou read-write. Se não for especificado, o modo predefinido é read-write. Tem de corresponder ao modo de acesso do disco.

Se a sua VM for encerrada por qualquer motivo, pode ter de montar o disco depois de reiniciar a VM. Para obter informações sobre como ativar a montagem automática do disco no reinício da VM, consulte o artigo Configure a montagem automática no reinício do sistema.

Para mais informações sobre como eliminar automaticamente um disco, consulte os artigos Modifique um Hyperdisk e Modifique um disco persistente.

Formate e monte um disco

Se anexou um disco novo e vazio à sua VM de TPU, antes de o poder usar, tem de o formatar e montar. Se anexou um disco que já contém dados, tem de montar o disco antes de o poder usar.

Para mais informações sobre a formatação e a montagem de um disco não de arranque, consulte o artigo Formate e monte um disco não de arranque numa VM Linux.

  1. Estabeleça ligação à VM de TPU através do SSH:

    $ gcloud compute tpus tpu-vm ssh TPU_NAME --zone ZONE

    Se estiver a usar uma TPU multi-host, este comando estabelece ligação à primeira TPU na fatia de TPU (também denominada worker 0).

  2. Na VM da TPU, liste os discos associados à VM da TPU:

    (vm)$ sudo lsblk

    O resultado do comando lsblk tem um aspeto semelhante ao seguinte:

    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
    

    Neste exemplo, sda é o disco de arranque e sdb é o nome do disco recém-anexado. O nome do disco anexado depende do número de discos anexados à VM.

    Quando usar uma TPU com vários anfitriões, tem de montar o disco em todas as VMs da TPU na fatia da TPU. O nome do disco deve ser o mesmo para todas as VMs de TPU, mas não é garantido. Por exemplo, se desanexar e, em seguida, voltar a anexar o disco, o nome do dispositivo é incrementado, passando de sdb para sdc.

  3. Se o disco não tiver sido formatado, formate o disco anexado com a ferramenta mkfs. Substitua sdb se o seu disco tiver um nome de dispositivo diferente. Substitua-o ext4 se quiser usar um sistema de ficheiros diferente.

    (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 disco na TPU.

    Se estiver a usar uma TPU de host único, execute o seguinte comando a partir da TPU para criar um diretório para montar o disco:

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

    Substitua MOUNT_DIR pelo diretório no qual montar o disco.

    Se estiver a usar uma TPU com vários anfitriões, execute o seguinte comando fora da VM da TPU. Este comando cria o diretório em todas as VMs de TPU na fatia de TPU.

    (vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/MOUNT_DIR"
  5. Monte o disco na TPU através da ferramenta mount.

    Se estiver a usar uma TPU de anfitrião único, execute o seguinte comando para montar o disco na sua VM de TPU:

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

    Se estiver a usar uma TPU com vários anfitriões, execute o seguinte comando fora da VM da TPU. Vai montar o disco em todas as VMs de TPU na sua fatia de TPU.

    (vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR"
  6. Configure as autorizações de leitura e escrita no disco. Por exemplo, o comando seguinte concede acesso de escrita ao disco a todos os utilizadores.

    (vm)$ sudo chmod a+w /mnt/disks/MOUNT_DIR

Desmonte um disco

Para desmontar (desassociar) um disco da sua VM de TPU, execute o seguinte comando:

$ gcloud alpha compute tpus tpu-vm detach-disk TPU_NAME \
    --zone=ZONE \
    --disk=DISK_NAME

Descrições das flags de comando

TPU_NAME
O nome da TPU.
ZONE
A zona onde a Cloud TPU está localizada.
DISK_NAME
O nome do disco a desanexar da VM da TPU.

Limpar

Elimine os recursos do Cloud TPU e do Compute Engine quando terminar de os usar.

  1. Desligue-se da Cloud TPU, se ainda não o tiver feito:

    (vm)$ exit

    O comando deve agora ser username@projectname, o que indica que está no Cloud Shell.

  2. Elimine a sua Cloud TPU:

    $ gcloud compute tpus tpu-vm delete TPU_NAME \
        --zone=ZONE
  3. Confirme que o Cloud TPU foi eliminado. A eliminação pode demorar vários minutos.

    $ gcloud compute tpus tpu-vm list --zone=ZONE
  4. Verifique se o disco foi eliminado automaticamente quando a VM de TPU foi eliminada listando todos os discos na zona onde criou o disco:

    $ gcloud compute disks list --filter="zone:( ZONE )"

    Se o disco não foi eliminado quando a VM de TPU foi eliminada, use o seguinte comando para o eliminar:

    $ gcloud compute disks delete DISK_NAME \
        --zone ZONE