Conectar almacenamiento en bloques duradero a una máquina virtual de TPU
Una VM de TPU incluye un disco de arranque de 100 GiB. En algunos casos, es posible que tu VM de TPU necesite almacenamiento adicional para el entrenamiento o el preprocesamiento. Puedes añadir un volumen de Hyperdisk de Google Cloud o de Persistent Disk (PD) para ampliar la capacidad de tu disco local.
Para obtener el máximo rendimiento y las funciones avanzadas, Google recomienda usar Hyperdisk si está disponible para tu TPU. De lo contrario, usa Persistent Disk. Para obtener más información sobre las opciones de almacenamiento en bloque de Compute Engine, consulta Elegir un tipo de disco.
Compatibilidad con TPUs para Hyperdisk y Persistent Disk
En la siguiente tabla se muestran los tipos de disco admitidos para cada versión de TPU:
Versión de TPU | Tipos de discos admitidos | Número máximo de discos persistentes por VM (incluido el disco de arranque) |
---|---|---|
v6e | Hyperdisk Balanced Hyperdisk ML |
Los PDs no son compatibles con la versión 6e |
v5p | Disco persistente balanceado | 128 |
v5e | Disco persistente balanceado | 128 |
v4 | Disco persistente balanceado | 128 |
v3 | Disco persistente balanceado | 128 |
v2 | Disco persistente balanceado | 128 |
Modos de acceso
Puedes configurar un disco conectado a una TPU en modo de un solo escritor o de solo lectura, como se muestra en la siguiente tabla:
Modo de acceso | Descripción | Valor de la API de Compute Engine | Valor de la API de TPU de Cloud | Tipos de discos admitidos |
---|---|---|---|---|
Modo de un solo escritor | Este es el modo de acceso predeterminado. Permite que el disco se acople a como máximo una instancia en cualquier momento. La instancia tiene acceso de lectura y escritura al disco. | READ_WRITE_SINGLE |
read-write |
|
Modo de solo lectura | Permite adjuntar simultáneamente varias instancias en modo de solo lectura. Las instancias no pueden escribir en el disco en este modo. Obligatorio para compartir en modo de solo lectura. | READ_ONLY_MANY |
read-only |
|
Puedes configurar un disco conectado a una TPU de un solo host (por ejemplo, v6e-8, v5p-8 o v5litepod-8) en modo de un solo escritor o de solo lectura.
Cuando adjuntas un disco a una TPU multihost, el disco se adjunta a cada VM de esa TPU. Para evitar que dos o más máquinas virtuales de TPU escriban en un disco al mismo tiempo, debes configurar todos los discos conectados a una TPU multihost como de solo lectura. Los discos de solo lectura son útiles para almacenar un conjunto de datos que se va a procesar en una porción de TPU.
Requisitos previos
Para seguir los procedimientos que se indican a continuación, debes tener una cuenta y un proyecto de Google Cloud configurados. Para obtener más información, consulta Configurar el entorno de Cloud TPU.
Crear un disco
Usa el siguiente comando para crear un disco:
$ gcloud compute disks create DISK_NAME \ --size DISK_SIZE \ --zone ZONE \ --type DISK_TYPE
Descripciones de marcas de comandos
DISK_NAME
- El nombre del nuevo disco.
DISK_SIZE
- Tamaño del nuevo disco. El valor debe ser un número entero seguido de una unidad de tamaño: GB para gibibyte o TB para tebibyte. Si no se especifica ninguna unidad de tamaño, se presupone que es GB.
ZONE
- Nombre de la zona en la que se creará el disco. Debe ser la misma zona que se ha usado para crear la TPU.
DISK_TYPE
- El
tipo de disco. Usa uno de los siguientes valores:
hyperdisk-balanced
,hyperdisk-ml
opd-balanced
.
En el caso de Hyperdisk, puedes especificar de forma opcional la marca --access-mode
con uno de los siguientes valores:
READ_WRITE_SINGLE
: acceso de lectura y escritura desde una instancia. Es el valor predeterminado.READ_ONLY_MANY
: (solo Hyperdisk ML) acceso de solo lectura simultáneo desde varias instancias.
Para obtener más información sobre cómo crear discos, consulta Crear un volumen de Hyperdisk y Crear un volumen de Persistent Disk.
Adjuntar un disco
Puedes adjuntar un volumen de disco a tu VM de TPU cuando crees la VM de TPU o después de crearla.
Adjuntar un disco al crear una VM de TPU
Usa la marca --data-disk
para adjuntar un volumen de disco al crear una VM de TPU.
Si vas a crear una TPU multihost, debes especificar mode=read-only
(solo Hyperdisk ML y Persistent Disk equilibrado). Si vas a crear una TPU de un solo host, puedes especificar mode=read-only
(solo Hyperdisk ML y Persistent Disk Balanced) o mode=read-write
. Para obtener más información, consulta Modos de acceso.
En el siguiente ejemplo se muestra cómo adjuntar un volumen de disco al crear una VM de TPU con recursos en cola:
$ 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
Descripciones de marcas de comandos
QR_NAME
- Nombre de la solicitud de recurso en cola.
TPU_NAME
- El nombre de la nueva TPU.
PROJECT_ID
- El ID del proyecto Google Cloud en el que se creará la TPU.
ZONE
- Nombre de la zona en la que se creará la TPU de Cloud.
ACCELERATOR_TYPE
- El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
TPU_SOFTWARE_VERSION
- La versión de software de la TPU.
DISK_NAME
- Nombre del disco que se va a adjuntar a la máquina virtual de TPU.
MODE
- El modo del disco. El modo debe ser uno de los siguientes:
read-only
oread-write
. Si no se especifica, el modo predeterminado esread-write
. Para obtener más información, consulta Modo de acceso.
También puedes adjuntar un disco al crear una VM de TPU con el 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
Descripciones de marcas de comandos
TPU_NAME
- El nombre de la nueva TPU.
PROJECT_ID
- El ID del proyecto Google Cloud en el que se creará la TPU.
ZONE
- Nombre de la zona en la que se creará la TPU de Cloud.
ACCELERATOR_TYPE
- El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
TPU_SOFTWARE_VERSION
- La versión de software de la TPU.
DISK_NAME
- Nombre del disco que se va a adjuntar a la máquina virtual de TPU.
MODE
- El modo del disco. El modo debe ser uno de los siguientes:
read-only
oread-write
. Si no se especifica, el modo predeterminado esread-write
. Para obtener más información, consulta Modos de acceso.
Acoplar un disco a una máquina virtual de TPU
Usa el comando gcloud alpha compute tpus tpu-vm
attach-disk
para adjuntar un disco a una máquina virtual de TPU.
$ gcloud alpha compute tpus tpu-vm attach-disk TPU_NAME \ --zone=ZONE \ --disk=DISK_NAME \ --mode=MODE
Descripciones de marcas de comandos
TPU_NAME
- El nombre de la TPU.
ZONE
- La zona donde se encuentra la TPU de Cloud.
DISK_NAME
- Nombre del disco que se va a adjuntar a la máquina virtual de TPU.
MODE
- El modo del disco. El modo debe ser uno de los siguientes:
read-only
oread-write
. Si no se especifica, el modo predeterminado esread-write
. Debe corresponderse con el modo de acceso del disco.
Si tu VM se apaga por cualquier motivo, es posible que tengas que montar el disco después de reiniciar la VM. Para obtener información sobre cómo habilitar el montaje automático de tu disco al reiniciar la VM, consulta Configurar el montaje automático al reiniciar el sistema.
Para obtener más información sobre cómo eliminar automáticamente un disco, consulta Modificar un Hyperdisk y Modificar un disco persistente.
Formatear y montar un disco
Si has conectado un disco nuevo y vacío a tu máquina virtual de TPU, debes formatearlo y montarlo para poder usarlo. Si has adjuntado un disco que ya contiene datos, debes montar el disco para poder usarlo.
Para obtener más información sobre cómo formatear y montar un disco que no es de arranque, consulta Formatear y montar un disco que no es de arranque en una VM Linux.
Conéctate a tu VM de TPU mediante SSH:
$ gcloud compute tpus tpu-vm ssh TPU_NAME --zone ZONE
Si usas una TPU de varios hosts, este comando te conectará a la primera TPU del segmento de TPU (también llamada trabajador 0).
En la máquina virtual de TPU, enumera los discos conectados a ella:
(vm)$ sudo lsblk
El resultado del comando
lsblk
es similar al siguiente: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
En este ejemplo,
sda
es el disco de arranque ysdb
es el nombre del disco que se acaba de adjuntar. El nombre del disco conectado depende del número de discos conectados a la VM.Cuando usas una TPU de varios hosts, debes montar el disco en todas las VMs de TPU del segmento de TPU. El nombre del disco debe ser el mismo para todas las VMs de TPU, pero no está garantizado. Por ejemplo, si desconectas y vuelves a conectar el disco, el nombre del dispositivo se incrementa y pasa de
sdb
asdc
.Si el disco no se ha formateado, formatea el disco conectado con la
mkfs
herramienta. Sustituye sdb si tu disco tiene otro nombre de dispositivo. Sustitúyelo por ext4 si quiere usar otro sistema de archivos.(vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
Crea un directorio para montar el disco en la TPU.
Si usas una TPU de un solo host, ejecuta el siguiente comando desde tu TPU para crear un directorio en el que montar el disco:
(vm)$ sudo mkdir -p /mnt/disks/MOUNT_DIR
Sustituye MOUNT_DIR por el directorio en el que se va a montar el disco.
Si usas una TPU de varios hosts, ejecuta el siguiente comando fuera de tu VM de TPU. Este comando creará el directorio en todas las VMs de TPU del slice de TPU.
(vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/MOUNT_DIR"
Monta el disco en tu TPU con la herramienta
mount
.Si usas una TPU de un solo host, ejecuta el siguiente comando para montar el disco en tu VM de TPU:
(vm)$ sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR
Si usas una TPU de varios hosts, ejecuta el siguiente comando fuera de tu VM de TPU. Montará el disco en todas las máquinas virtuales de TPU de tu segmento 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"
Configura los permisos de lectura y escritura en el disco. Por ejemplo, el siguiente comando concede acceso de escritura al disco a todos los usuarios.
(vm)$ sudo chmod a+w /mnt/disks/MOUNT_DIR
Desmontar un disco
Para desmontar (desasociar) un disco de tu VM de TPU, ejecuta el siguiente comando:
$ gcloud alpha compute tpus tpu-vm detach-disk TPU_NAME \ --zone=ZONE \ --disk=DISK_NAME
Descripciones de marcas de comandos
TPU_NAME
- El nombre de la TPU.
ZONE
- La zona donde se encuentra la TPU de Cloud.
DISK_NAME
- Nombre del disco que se va a separar de la máquina virtual de TPU.
Limpieza
Cuando hayas terminado de usar los recursos de TPU de Cloud y de Compute Engine, elimínalos.
Desconéctate de la TPU de Cloud, si aún no lo has hecho:
(vm)$ exit
A continuación, se mostrará el mensaje
username@projectname
, que indica que estás en Cloud Shell.Elimina tu TPU de Cloud:
$ gcloud compute tpus tpu-vm delete TPU_NAME \ --zone=ZONE
Comprueba que se haya eliminado la TPU de Cloud. El proceso de eliminación puede tardar varios minutos.
$ gcloud compute tpus tpu-vm list --zone=ZONE
Verifica que el disco se haya eliminado automáticamente al eliminar la VM de TPU. Para ello, enumera todos los discos de la zona en la que creaste el disco:
$ gcloud compute disks list --filter="zone:( ZONE )"
Si el disco no se eliminó cuando se eliminó la VM de TPU, usa el siguiente comando para eliminarlo:
$ gcloud compute disks delete DISK_NAME \ --zone ZONE