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
  • Hyperdisk Balanced
  • Hyperdisk ML
  • Disco persistente balanceado
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
  • Hyperdisk Balanced
  • Disco persistente balanceado

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 o pd-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 o read-write. Si no se especifica, el modo predeterminado es read-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 o read-write. Si no se especifica, el modo predeterminado es read-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 o read-write. Si no se especifica, el modo predeterminado es read-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.

  1. 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).

  2. 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 y sdb 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 a sdc.

  3. Si el disco no se ha formateado, formatea el disco conectado con la mkfsherramienta. 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
  4. 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"
  5. 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"
  6. 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.

  1. 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.

  2. Elimina tu TPU de Cloud:

    $ gcloud compute tpus tpu-vm delete TPU_NAME \
        --zone=ZONE
  3. 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
  4. 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