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
  • Hiperdisco balanceado
  • Hyperdisk ML
  • Disco persistente balanceado
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
  • Hiperdisco balanceado
  • 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 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 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. 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 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 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 o read-write. Si no se especifica, el modo predeterminado es read-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 o read-write. Si no se especifica, el modo predeterminado es read-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.

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

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

  3. 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
  4. 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"
  5. 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"
  6. 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.

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

  2. Borra tu Cloud TPU.

    $ gcloud compute tpus tpu-vm delete TPU_NAME \
        --zone=ZONE
  3. Verifica que se haya borrado la Cloud TPU. La eliminación puede tardar varios minutos.

    $ gcloud compute tpus tpu-vm list --zone=ZONE
  4. 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