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 |
|
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 |
|
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
oupd-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
ouread-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
ouread-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
ouread-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.
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).
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 esdb
é 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
parasdc
.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
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"
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"
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.
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.Elimine a sua Cloud TPU:
$ gcloud compute tpus tpu-vm delete TPU_NAME \ --zone=ZONE
Confirme que o Cloud TPU foi eliminado. A eliminação pode demorar vários minutos.
$ gcloud compute tpus tpu-vm list --zone=ZONE
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