Anexar 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 da TPU pode precisar de mais armazenamento para treinamento ou pré-processamento. É possível adicionar um volume do Google Cloud Hyperdisk ou do Persistent Disk (DP) para expandir a capacidade do disco local.
Para ter o melhor desempenho e recursos avançados, o Google recomenda usar o Hyperdisk, se ele estiver disponível para sua TPU. Caso contrário, use Persistent Disk. Para mais informações sobre opções de armazenamento em blocos no Compute Engine, consulte Escolher um tipo de disco.
Suporte a TPU para Hyperdisk e Persistent Disk
A tabela a seguir mostra os tipos de disco compatíveis com cada versão da TPU:
Versão da TPU | Tipos de disco compatíveis | Número máximo de PDs por VM (inclui o disco de inicialização) |
---|---|---|
v6e | Hiperdisco equilibrado Hyperdisk ML |
Os PDs não são compatíveis com o v6e |
v5p | Disco permanente equilibrado | 128 |
v5e | Disco permanente equilibrado | 128 |
v4 | Disco permanente equilibrado | 128 |
v3 | Disco permanente equilibrado | 128 |
v2 | Disco permanente equilibrado | 128 |
Meios de acesso
É possível configurar um disco anexado a uma TPU no modo de gravação única ou somente leitura, conforme mostrado na tabela a seguir:
Modo de acesso | Descrição | Valor na API Compute Engine | Valor na API Cloud TPU | Tipos de disco compatíveis |
---|---|---|---|---|
Modo de gravador único | Esse é o modo de acesso padrão. 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. As instâncias não podem gravar no disco nesse modo. Obrigatório para compartilhamento somente leitura. | READ_ONLY_MANY |
read-only |
|
É possível configurar um disco anexado a uma TPU de host único (por exemplo, v6e-8, v5p-8 ou v5litepod-8) no modo de gravação única ou 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 gravem em um disco ao mesmo tempo, configure todos os discos anexados a uma TPU multi-host como somente leitura. Discos somente leitura são úteis para armazenar um conjunto de dados para processamento em uma fração de TPU.
Pré-requisitos
É necessário ter uma conta do Google Cloud e um projeto configurados antes de usar os procedimentos a seguir. Para mais informações, consulte Configurar o ambiente do Cloud TPU.
Criar um disco
Use o comando a seguir para criar um disco:
$ gcloud compute disks create DISK_NAME \ --size DISK_SIZE \ --zone ZONE \ --type DISK_TYPE
Descrições de sinalizações 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 de 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 novo disco será criado. Ela precisa ser a mesma zona usada para criar a TPU.
DISK_TYPE
- O
tipo de disco. Use um dos seguintes valores:
hyperdisk-balanced
,hyperdisk-ml
oupd-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 simultâneo de leitura de várias instâncias.
Para mais informações sobre como criar discos, consulte Criar um novo volume do Hyperdisk e Criar um novo volume de Persistent Disk.
Anexar um disco
É possível anexar um volume de disco à VM de TPU ao criar essa VM ou depois.
Anexar um disco ao criar uma VM de TPU
Use a flag --data-disk
para anexar um volume de disco ao criar
uma VM da TPU.
Se você estiver criando uma TPU com vários hosts, especifique mode=read-only
(somente hiperdisco de ML e disco permanente balanceado). Se você estiver
criando uma TPU de host único, especifique mode=read-only
(somente Hyperdisk ML e disco permanente equilibrado) ou
mode=read-write
. Para mais informações, consulte Modos de acesso.
O exemplo a seguir mostra como anexar um volume de disco ao criar uma VM de TPU usando recursos enfileirados:
$ 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 sinalizações de comando
QR_NAME
- O nome da solicitação de recurso enfileirada.
TPU_NAME
- O nome da nova TPU.
PROJECT_ID
- O ID do projeto Google Cloud em que a TPU será criada.
ZONE
- O nome da zona em que a Cloud TPU será criada.
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.
TPU_SOFTWARE_VERSION
- A versão do software da TPU.
DISK_NAME
- O nome do disco a ser anexado à VM de TPU.
MODE
- O modo do disco. O modo precisa ser
read-only
ouread-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 sinalizações de comando
TPU_NAME
- O nome da nova TPU.
PROJECT_ID
- O ID do projeto Google Cloud em que a TPU será criada.
ZONE
- O nome da zona em que a Cloud TPU será criada.
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.
TPU_SOFTWARE_VERSION
- A versão do software da TPU.
DISK_NAME
- O nome do disco a ser anexado à VM de TPU.
MODE
- O modo do disco. O modo precisa ser
read-only
ouread-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
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 sinalizações de comando
TPU_NAME
- O nome da TPU.
ZONE
- A zona em que o Cloud TPU está localizado.
DISK_NAME
- O nome do disco a ser anexado à VM de TPU.
MODE
- O modo do disco. O modo precisa ser
read-only
ouread-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 desligada por algum motivo, talvez seja necessário montar o disco depois de reiniciar a VM. Para informações sobre como ativar a montagem automática do disco na reinicialização da VM, consulte Configurar a montagem automática na reinicialização do sistema.
Para mais informações sobre como excluir um disco automaticamente, consulte Modificar um Hyperdisk e Modificar um disco permanente.
Formatar e ativar um disco
Se você anexou um disco novo e em branco à VM da TPU, antes de poder usá-lo, formate-o e ative-o. Se você anexou um disco que já contém dados, ative-o antes de usá-lo.
Para mais informações sobre 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 à VM da TPU usando SSH:
$ gcloud compute tpus tpu-vm ssh TPU_NAME --zone ZONE
Se você estiver usando uma TPU de vários hosts, esse comando vai conectar você à primeira TPU na fração de TPU (também chamada de worker 0).
Na VM de TPU, liste os discos anexados à VM:
(vm)$ sudo lsblk
A saída do comando
lsblk
é 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
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 montar o disco em todas as VMs de TPU na fração de TPU. O nome do disco precisa ser o mesmo para 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
sdb
parasdc
.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 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.
Se você estiver usando uma TPU de host único, execute o seguinte comando na TPU para criar um diretório em que o disco será montado:
(vm)$ sudo mkdir -p /mnt/disks/MOUNT_DIR
Substitua MOUNT_DIR pelo diretório em que você quer ativar o disco.
Se você estiver usando uma TPU de vários hosts, execute o comando a seguir fora da VM da TPU. Esse comando vai criar 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"
Monte o disco na TPU usando a ferramenta
mount
.Se você estiver usando uma TPU de host único, execute o comando a seguir para montar o disco na VM de TPU:
(vm)$ sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR
Se você estiver usando uma TPU de vários hosts, execute o comando a seguir fora da VM da TPU. Ele vai ativar o disco em todas as VMs de TPU na sua 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 as permissões de leitura e gravação no disco. Por exemplo, o comando a seguir 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 desmontar (desanexar) um disco da VM da TPU, 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 da TPU.
ZONE
- A zona em que o Cloud TPU está localizado.
DISK_NAME
- O nome do disco a ser desconectado da VM de TPU.
Limpar
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 a Cloud TPU foi excluída. A exclusão pode levar vários minutos.
$ gcloud compute tpus tpu-vm list --zone=ZONE
Verifique se o disco foi excluído automaticamente quando a VM de TPU foi excluída, listando 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 quando a VM de TPU foi excluída, use o seguinte comando para excluí-lo:
$ gcloud compute disks delete DISK_NAME \ --zone ZONE