Cómo adjuntar almacenamiento en bloque duradero a una VM de TPU
Una VM 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 procesamiento previo. Puedes agregar un volumen de Google Cloud Hyperdisk o Persistent Disk (PD) para expandir la capacidad de tu disco local.
Para obtener el mayor 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 en Compute Engine, consulta Elige un tipo de disco.
Compatibilidad con TPU para Hyperdisk y Persistent Disk
En la siguiente tabla, se muestran los tipos de discos compatibles para cada versión de TPU:
Versión de TPU | Tipos de discos compatibles | Cantidad máxima de PD por VM (incluye el disco de arranque) |
---|---|---|
v6e | Hyperdisk Balanced Hyperdisk ML |
v6e no admite PD |
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 en la API de Compute Engine | Valor en la API de Cloud TPU | Tipos de discos compatibles |
---|---|---|---|---|
Modo de escritura única | Este es el modo de acceso predeterminado. Permite que el disco se conecte 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 conexiones simultáneas a varias instancias en modo de solo lectura. Las instancias no pueden escribir en el disco en este modo. Se requiere para el uso compartido 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 solo escritura o de solo lectura.
Cuando conectas un disco a una TPU de varios hosts, el disco se conecta a cada VM de esa TPU. Para evitar que dos o más VMs de TPU escriban en un disco al mismo tiempo, debes configurar todos los discos conectados a una TPU de varios hosts como de solo lectura. Los discos de solo lectura son útiles para almacenar un conjunto de datos para el procesamiento en un segmento de TPU.
Requisitos previos
Debes tener una cuenta y un proyecto de Google Cloud configurados antes de usar los siguientes procedimientos. Para obtener más información, consulta Configura 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 las marcas de comandos
DISK_NAME
- El nombre del disco nuevo.
DISK_SIZE
- El tamaño del disco nuevo. El valor debe ser un número entero seguido de una unidad de tamaño de GB para gibibyte o TB para tebibyte. Si no se especifica ninguna unidad de tamaño, se supone que es GB.
ZONE
- El nombre de la zona en la que se creará el disco nuevo. Debe ser la misma zona que se usó 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. Esta es la opción predeterminada.READ_ONLY_MANY
: (solo para Hyperdisk ML) Acceso simultáneo de solo lectura desde varias instancias.
Para obtener más información sobre cómo crear discos, consulta Crea un nuevo volumen de Hyperdisk y Crea un nuevo volumen de Persistent Disk.
Cómo adjuntar un disco
Puedes conectar un volumen de disco a tu VM de TPU cuando la creas o después de que se crea.
Adjunta un disco cuando crees una VM de TPU
Usa la marca --data-disk
para conectar un volumen de disco cuando crees una VM de TPU.
Si creas una TPU de varios hosts, debes especificar mode=read-only
(solo Hyperdisk ML y Persistent Disk Balanced). Si creas una TPU de un solo host, puedes especificar mode=read-only
(solo para Hyperdisk ML y Persistent Disk balanceado) o mode=read-write
. Para obtener más información, consulta Modos de acceso.
En el siguiente ejemplo, se muestra cómo conectar un volumen de disco cuando se crea 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 las marcas de comandos
QR_NAME
- Es el nombre de la solicitud de recurso en cola.
TPU_NAME
- El nombre de la nueva TPU.
PROJECT_ID
- Es el ID del proyecto Google Cloud en el que se creará la TPU.
ZONE
- El nombre de la zona en la que se creará la Cloud TPU.
ACCELERATOR_TYPE
- El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas 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
- El nombre del disco que se conectará a la VM de TPU.
MODE
- Es 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 conectar un disco cuando creas 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 las marcas de comandos
TPU_NAME
- El nombre de la nueva TPU.
PROJECT_ID
- Es el ID del proyecto Google Cloud en el que se creará la TPU.
ZONE
- El nombre de la zona en la que se creará la Cloud TPU.
ACCELERATOR_TYPE
- El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas 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
- El nombre del disco que se conectará a la VM de TPU.
MODE
- Es 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.
Conecta un disco a una VM de TPU existente
Usa el comando gcloud alpha compute tpus tpu-vm
attach-disk
para conectar un disco a una VM de TPU existente.
$ gcloud alpha compute tpus tpu-vm attach-disk TPU_NAME \ --zone=ZONE \ --disk=DISK_NAME \ --mode=MODE
Descripciones de las marcas de comandos
TPU_NAME
- El nombre de la TPU.
ZONE
- Es la zona en la que se encuentra la Cloud TPU.
DISK_NAME
- Es el nombre del disco que se adjuntará a la VM de TPU.
MODE
- Es 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 corresponder al modo de acceso del disco.
Si la VM se apaga por algún motivo, es posible que debas activar el disco después de reiniciar la VM. Para obtener información sobre cómo habilitar la activación automática del disco cuando se reinicia la VM, consulta Configura la activación automática cuando se reinicia el sistema.
Para obtener más información sobre cómo borrar un disco automáticamente, consulta Cómo modificar un Hyperdisk y Cómo modificar un disco persistente.
Formatea y activa un disco
Si conectaste un disco nuevo en blanco a tu VM de TPU, antes de poder usarlo, debes formatear y activar el disco. Si conectaste un disco que ya contiene datos, debes activar el disco antes de poder usarlo.
Para obtener más información sobre cómo formatear y activar un disco que no sea de arranque, consulta Formatea y activa un disco que no sea de arranque en una VM de Linux.
Conéctate a tu VM de TPU con 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 de la porción de TPU (también llamada trabajador 0).
Desde la VM 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 recién adjuntado. El nombre del disco conectado depende de la cantidad de discos conectados a la VM.Cuando usas una TPU de varios hosts, debes activar el disco en todas las VMs de TPU de la porción 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 cambia de
sdb
asdc
.Si el disco no se formateó, formatea el disco adjunto con la herramienta
mkfs
. Reemplaza sdb si tu disco tiene un nombre de dispositivo diferente. Reemplaza ext4 si quieres usar un sistema de archivos diferente.(vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
Crea un directorio para activar el disco en la TPU.
Si usas una TPU de host único, ejecuta el siguiente comando desde tu TPU para crear un directorio en el que se pueda activar el disco:
(vm)$ sudo mkdir -p /mnt/disks/MOUNT_DIR
Reemplaza MOUNT_DIR por el directorio en el que se activará 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 de la porción de TPU.
(vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/MOUNT_DIR"
Adjunta el disco a tu TPU con la herramienta
mount
.Si usas una TPU de un solo host, ejecuta el siguiente comando para activar 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. Se activará el disco en todas las VMs 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 otorga acceso de escritura al disco para todos los usuarios.
(vm)$ sudo chmod a+w /mnt/disks/MOUNT_DIR
Cómo desactivar un disco
Para desmontar (desconectar) 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 las marcas de comandos
TPU_NAME
- El nombre de la TPU.
ZONE
- Es la zona en la que se encuentra la Cloud TPU.
DISK_NAME
- Es el nombre del disco que se desconectará de la VM de TPU.
Limpia
Borra tus recursos de Cloud TPU y Compute Engine cuando termines de usarlos.
Desconéctate de la Cloud TPU, si aún no lo hiciste:
(vm)$ exit
El mensaje ahora debería mostrar
username@projectname
, que indica que estás en Cloud Shell.Borra tu Cloud TPU.
$ gcloud compute tpus tpu-vm delete TPU_NAME \ --zone=ZONE
Verifica que se haya borrado la Cloud TPU. La eliminación puede tardar varios minutos.
$ gcloud compute tpus tpu-vm list --zone=ZONE
Verifica que el disco se haya borrado automáticamente cuando se borró la VM de TPU enumerando todos los discos de la zona en la que creaste el disco:
$ gcloud compute disks list --filter="zone:( ZONE )"
Si el disco no se borró cuando se borró la VM de TPU, usa el siguiente comando para borrarlo:
$ gcloud compute disks delete DISK_NAME \ --zone ZONE