Anexar um armazenamento em blocos durável a uma VM de TPU
Uma VM de TPU inclui um disco de inicialização de 100 GiB. Em alguns cenários, a VM de TPU pode precisar de mais armazenamento para o treinamento ou o pré-processamento. É possível adicionar um volume do Google Cloud Hyperdisk ou do Persistent Disk (PD) para expandir a capacidade do disco local.
Para ter o melhor desempenho e recursos avançados, o Google recomenda que você use o Hyperdisk, se ele estiver disponível para a TPU. Caso contrário, use o Persistent Disk. Para mais informações sobre opções de armazenamento em blocos no Compute Engine, consulte Escolher um tipo de disco.
Disponibilidade da TPU para Hyperdisk e Persistent Disk
A tabela abaixo mostra os tipos de disco disponíveis em cada versão de TPU:
| Versão da TPU | Tipos de disco disponíveis | Número máximo de discos por VM (inclui o disco de inicialização) |
|---|---|---|
| v6e | Hyperdisk Balanced Hyperdisk ML |
32 |
| v5p | Balanced Persistent Disk | 128 |
| v5e | Balanced Persistent Disk | 128 |
| v4 | Balanced Persistent Disk | 128 |
| v3 | Balanced Persistent Disk | 128 |
| v2 | Balanced Persistent Disk | 128 |
Modos de acesso
É possível configurar um disco anexado a uma TPU no modo de gravação única ou de somente leitura, conforme mostrado nesta tabela:
| Modo de acesso | Descrição | Valor na API Compute Engine | Valor na API Cloud TPU | Tipos de disco disponíveis |
|---|---|---|---|---|
| Modo de gravação única | Esse é o modo de acesso padrão. Ele permite que o disco seja anexado a, no máximo, uma instância por vez. A instância tem acesso de leitura e gravação ao disco. | READ_WRITE_SINGLE |
read-write |
|
| Modo somente leitura | Permite anexos simultâneos a várias instâncias no modo somente leitura. Nesse modo, as instâncias não podem fazer gravações no disco. Obrigatório para o compartilhamento somente leitura. | READ_ONLY_MANY |
read-only |
|
É possível configurar um disco anexado a uma TPU de host único, como v6e-8, v5p-8 ou v5litepod-8, no modo de gravação única ou no modo somente leitura.
Quando você anexa um disco a uma TPU de vários hosts, ele é anexado a cada VM nessa TPU. Para evitar que duas ou mais VMs de TPU façam gravações em um disco ao mesmo tempo, configure todos os discos anexados a uma TPU de vários hosts como somente leitura. Os discos somente leitura são úteis para armazenar um conjunto de dados para processamento em uma fração de TPU.
Pré-requisitos
É necessário configurar uma conta e um projeto do Google Cloud antes de seguir os procedimentos a seguir. Para mais informações, consulte Configurar o ambiente do Cloud TPU.
Criar um disco
Use o comando abaixo para criar um disco:
$ gcloud compute disks create DISK_NAME \ --size DISK_SIZE \ --zone ZONE \ --type DISK_TYPE
Descrições de flags de comando
DISK_NAME- O nome do novo disco.
DISK_SIZE- O tamanho do novo disco. O valor precisa ser um número inteiro seguido por uma unidade de tamanho: GB para gibibyte ou TB para tebibyte. Se nenhuma unidade de tamanho for especificada, GB será usado.
ZONE- O nome da zona em que o disco será criado. Ela precisa ser a mesma zona usada para criar a TPU.
DISK_TYPE- O
tipo do disco. Use um dos seguintes valores:
hyperdisk-balanced,hyperdisk-mloupd-balanced.
Para o Hyperdisk, é possível especificar a
flag --access-mode com um dos seguintes valores:
READ_WRITE_SINGLE: acesso de leitura e gravação de uma instância. Esse é o padrão.READ_ONLY_MANY(somente Hyperdisk ML): acesso somente leitura simultâneo de várias instâncias.
Para saber como criar discos, consulte Criar um volume do Hyperdisk e Criar um volume do Persistent Disk.
Anexar um disco
É possível anexar um volume de disco à VM de TPU durante a criação dela ou mais tarde.
Anexar um disco ao criar uma VM de TPU
Use a flag --data-disk para anexar um volume de disco
ao criar uma VM de TPU.
Ao criar uma TPU de vários hosts, especifique
mode=read-only (somente Hyperdisk ML e Balanced Persistent Disk). Ao criar uma
TPU de host único, especifique mode=read-only
(somente Hyperdisk ML e Balanced Persistent Disk)
ou mode=read-write. Para mais informações, consulte Modos de acesso.
O exemplo abaixo mostra como anexar um volume de disco ao criar uma VM de 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 de flags de comando
QR_NAME- O nome da solicitação de recurso em fila.
TPU_NAME- O nome da nova TPU.
PROJECT_ID- O ID do projeto do Google Cloud em que a TPU será criada.
ZONE- O nome da zona em que o Cloud TPU será criado.
ACCELERATOR_TYPE- O tipo de acelerador especifica a versão e o tamanho do Cloud TPU que você quer criar. Para mais informações sobre os tipos de acelerador disponíveis em cada versão de TPU, consulte Versões de TPU.
TPU_SOFTWARE_VERSION- A versão do software de TPU.
DISK_NAME- O nome do disco a ser anexado à VM de TPU.
MODE- O modo do disco. Precisa ser:
read-onlyouread-write. Se não for especificado, o modo padrão seráread-write. Para mais informações, consulte Modo de acesso.
Também é possível anexar um disco ao criar uma VM de TPU usando 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 de flags de comando
TPU_NAME- O nome da nova TPU.
PROJECT_ID- O ID do projeto do Google Cloud em que a TPU será criada.
ZONE- O nome da zona em que o Cloud TPU será criado.
ACCELERATOR_TYPE- O tipo de acelerador especifica a versão e o tamanho do Cloud TPU que você quer criar. Para mais informações sobre os tipos de acelerador disponíveis em cada versão de TPU, consulte Versões de TPU.
TPU_SOFTWARE_VERSION- A versão do software de TPU.
DISK_NAME- O nome do disco a ser anexado à VM de TPU.
MODE- O modo do disco. Precisa ser:
read-onlyouread-write. Se não for especificado, o modo padrão seráread-write. Para mais informações, consulte Modos de acesso.
Anexar um disco a uma VM de TPU atual
Use o comando gcloud alpha compute tpus tpu-vm
attach-disk
para anexar um disco a uma VM de TPU atual.
$ gcloud alpha compute tpus tpu-vm attach-disk TPU_NAME \ --zone=ZONE \ --disk=DISK_NAME \ --mode=MODE
Descrições de flags de comando
TPU_NAME- O nome da TPU.
ZONE- A zona em que o Cloud TPU está.
DISK_NAME- O nome do disco a ser anexado à VM de TPU.
MODE- O modo do disco. Precisa ser:
read-onlyouread-write. Se não for especificado, o modo padrão seráread-write. Ele precisa corresponder ao modo de acesso do disco.
Se a VM for interrompida por algum motivo, talvez seja necessário ativar o disco depois de reiniciá-la. Para saber como ativar automaticamente o disco na reinicialização da VM, consulte Configurar a ativação automática na reinicialização do sistema.
Para saber como excluir um disco automaticamente, consulte Modificar um Hyperdisk e Modificar um Persistent Disk.
Formatar e ativar um disco
Se você anexou um disco novo e em branco à VM, antes de usá-lo, ele deve ser formatado e ativado. Se você tiver anexado um disco que já contém dados, ative-o antes de usá-lo.
Para saber como formatar e ativar um disco que não é de inicialização, consulte Formatar e ativar um disco que não é de inicialização em uma VM do Linux.
Conecte-se por SSH à VM de TPU:
$ gcloud compute tpus tpu-vm ssh TPU_NAME --zone ZONE
Ao usar uma TPU de vários hosts, esse comando conecta você à primeira TPU na fração de TPU (também chamada de worker 0).
Na VM de TPU, liste os discos anexados:
(vm)$ sudo lsblk
A saída do comando
lsblkserá parecida com 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
Neste exemplo,
sdaé o disco de inicialização esdbé o nome do disco recém-anexado. O nome do disco anexado depende de quantos discos estão anexados à VM.Ao usar uma TPU de vários hosts, é necessário ativar o disco em todas as VMs de TPU na fração de TPU. É provável que o nome do disco seja igual em todas as VMs de TPU, mas isso não é garantido. Por exemplo, se você desanexar e anexar novamente o disco, o nome do dispositivo será incrementado, mudando de
sdbparasdc.Se o disco não tiver sido formatado, faça isso usando a ferramenta
mkfs. Substitua sdb se o disco tiver um nome de dispositivo diferente. Substitua ext4 se você quiser usar um sistema de arquivos diferente.(vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
Crie um diretório para ativar o disco na TPU.
Ao usar uma TPU de host único, execute nela o comando abaixo para criar um diretório para a ativação do disco:
(vm)$ sudo mkdir -p /mnt/disks/MOUNT_DIR
Substitua MOUNT_DIR pelo diretório em que você quer ativar o disco.
Ao usar uma TPU de vários hosts, execute o comando abaixo fora da VM de TPU. Esse comando cria o diretório em todas as VMs de TPU na fração de TPU.
(vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/MOUNT_DIR"
Ative o disco na TPU usando a ferramenta
mount.Ao usar uma TPU de host único, execute o comando abaixo para ativar o disco na VM de TPU:
(vm)$ sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR
Ao usar uma TPU de vários hosts, execute o comando abaixo fora da VM de TPU. Ele ativa o disco em todas as VMs de TPU na fração 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"
Configure permissões de leitura e gravação no disco. Por exemplo, o comando abaixo concede acesso de gravação no disco a todos os usuários.
(vm)$ sudo chmod a+w /mnt/disks/MOUNT_DIR
Desconectar um disco
Para desconectar (desanexar) um disco da VM de TPU, execute este comando:
$ gcloud alpha compute tpus tpu-vm detach-disk TPU_NAME \ --zone=ZONE \ --disk=DISK_NAME
Descrições de flags de comando
TPU_NAME- O nome da TPU.
ZONE- A zona em que o Cloud TPU está.
DISK_NAME- O nome do disco a ser desanexado da VM de TPU.
Limpeza
Exclua os recursos do Cloud TPU e do Compute Engine quando terminar de usá-los.
Desconecte-se do Cloud TPU, caso ainda não tenha feito isso:
(vm)$ exit
Agora o prompt precisa ser
username@projectname, mostrando que você está no Cloud Shell.Exclua o Cloud TPU:
$ gcloud compute tpus tpu-vm delete TPU_NAME \ --zone=ZONE
Verifique se o Cloud TPU foi excluído. A exclusão pode levar vários minutos.
$ gcloud compute tpus tpu-vm list --zone=ZONE
Verifique se o disco foi excluído automaticamente com a VM de TPU. Para isso, liste todos os discos na zona em que o disco foi criado:
$ gcloud compute disks list --filter="zone:( ZONE )"
Se o disco não tiver sido excluído com a VM de TPU, use este comando para excluí-lo:
$ gcloud compute disks delete DISK_NAME \ --zone ZONE