Agrega un Persistent Disk a una VM de TPU

Una VM TPU incluye un disco de arranque de 100 GB. En algunas situaciones, es posible que tu VM de TPU necesite almacenamiento adicional para el entrenamiento o el procesamiento previo. Puedes agregar un disco persistente para expandir la capacidad de tu disco local.

Descripción general

Un Persistent Disk conectado a una TPU de un solo dispositivo (v2-8, v3-8, v4-8, etcétera) se puede configurar como read-write o read-only. Cuando conectas un Persistent Disk a una VM de TPU que forma parte de un pod de TPU, el disco se conecta a cada VM de TPU de ese pod. Para evitar que dos o más VMs de TPU de un Pod escriban en un Persistent Disk a la vez, todos los discos persistentes conectados a una VM de TPU en un Pod deben configurarse como read-only. Los discos read-only son útiles para almacenar un conjunto de datos para procesarlo en un pod de TPU.

Después de crear y conectar un Persistent Disk a tu VM de TPU, debes activar el Persistent Disk y especificar en qué parte del sistema de archivos se puede acceder al Persistent Disk. Para obtener más información, consulta Cómo activar un disco.

Requisitos previos

Debes tener una cuenta y un proyecto de Google Cloud configurados antes de usar los siguientes procedimientos. Si aún no tienes configurado un proyecto de Cloud TPU, sigue el procedimiento que se indica en Configura el entorno de Cloud TPU antes de continuar.

Pasos de alto nivel

Estos son los pasos de alto nivel para configurar un Persistent Disk:

  1. Cómo crear un disco persistente
  2. Cómo conectar un Persistent Disk a una VM de TPU
  3. Activa el disco persistente
  4. Cómo limpiar los recursos de la VM y el Persistent Disk de TPU

Configura una VM de TPU y un Persistent Disk

Puedes conectar un Persistent Disk a una VM de TPU cuando la creas. También puedes conectar un Persistent Disk a una VM de TPU existente.

Creación de un disco persistente

Usa el siguiente comando para crear un Persistent Disk:

  $ gcloud compute disks create disk-name \
    --size disk-size  \
    --zone zone \
    --type pd-balanced

Descripciones de las marcas de comandos

disk-name
Un nombre que elijas para el Persistent Disk.
disk-size
El tamaño del Persistent Disk en GB.
zone
La zona en la que se creará el Persistent Disk. Debe ser la misma zona que se usó para crear la TPU.
type
El tipo de disco que se agregará. Los tipos admitidos son pd-standard, pd-ssd o pd-balanced.

Cómo conectar un Persistent Disk

Puedes conectar un Persistent Disk a tu VM de TPU cuando la creas o puedes agregar uno después de crearla.

Cómo conectar un Persistent Disk cuando creas una VM de TPU

Usa la marca --data-disk para conectar un Persistent Disk cuando crees una VM de TPU. Si creas un Pod de TPU, debes especificar mode=read-only. Si estás creando un solo dispositivo TPU, puedes especificar mode=read-only o mode=read-write. El siguiente comando crea una sola TPU y establece el modo de Persistent Disk en read-write:

  $ gcloud compute tpus tpu-vm create tpu-name \
    --project project-id \
    --zone=zone \
    --accelerator-type=v3-8 \
    --version=tpu-vm-image \
    --data-disk source=projects/project-id/zones/zone/disks/disk-name,mode=read-write

Descripciones de las marcas de comandos

tpu-name
Es el nombre que elegiste para los recursos de TPU.
project
El ID del proyecto.
zone
Es la zona en la que crearás 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.
version
La imagen de la VM de TPU para tu framework
data-disk
El nombre y el modo de lectura/escritura del Persistent Disk que se conectará a la VM de TPU.

Cómo conectar un Persistent Disk a una VM de TPU existente

Usa el comando gcloud alpha compute tpus tpu-vm attach-disk para conectar un Persistent Disk a una VM de TPU existente. Consulta la documentación de gcloud para obtener más detalles y ejemplos.

  $ gcloud alpha compute tpus tpu-vm attach-disk tpu-name \
    --zone=zone \
    --disk=disk-name \
    --mode=disk-mode

Descripciones de las marcas de comandos

tpu-name
El nombre de los recursos de TPU.
zone
Es la zona en la que se encuentra la Cloud TPU.
disk-name
Es el nombre del Persistent Disk que se adjuntará a la VM de TPU.
mode
Es el modo del disco. El modo debe ser read-only o read-write.

Si quieres borrar el Persistent Disk cuando borres la VM de TPU, debes establecer el estado de eliminación automática del Persistent Disk con el siguiente comando:

$ gcloud compute instances set-disk-auto-delete vm-instance \
  --zone=zone \
  --auto-delete \
  --disk=disk-name

Descripciones de las marcas de comandos

vm-instance
Después de establecer una conexión SSH a la VM de TPU, el mensaje de shell cambia para incluir tu ID de usuario seguido de un nombre de instancia de VM generado (por ejemplo, pjohnston@t1v-n-…$). Reemplaza vm-instance por el nombre de la instancia de VM generada.
zone
La zona en la que se encuentra el Persistent Disk.
auto-delete
Borra automáticamente el Persistent Disk cuando se borran los recursos de TPU.
disk-name
Un nombre para tu Persistent Disk.

Si la VM se apaga por algún motivo, es posible que el Persistent Disk se desconecte. Consulta Configura la activación automática cuando se reinicia el sistema para que tu Persistent Disk se active automáticamente cuando se reinicie la VM.

Para obtener más información sobre cómo borrar automáticamente un Persistent Disk, consulta Cómo modificar un disco persistente.

Activa un Persistent Disk

Para acceder a un Persistent Disk desde una VM de TPU, debes activarlo. Esto especifica una ubicación en el sistema de archivos de la VM de TPU a la que se puede acceder al Persistent Disk.

  1. Conéctate a tu VM de TPU con SSH:

    $ gcloud compute tpus tpu-vm ssh tpu-name --zone zone

    Cuando se trabaja con un pod de TPU, hay una VM de TPU para cada TPU en el pod. El comando anterior funcionará para dispositivos TPU y pods TPU. Si usas Pods de TPU, este comando te conectará a la primera TPU del Pod (también llamada trabajador 0).

  2. Desde la VM de TPU, muestra una lista de los discos conectados a la VM de TPU:

    (vm)$ sudo lsblk

    El resultado del comando lsblk debería verse de la siguiente manera:

    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    <== Persistent Disk
    

    En este ejemplo, sda es el disco de arranque y sdb es el nombre del Persistent Disk que se agregó recientemente. El nombre del Persistent Disk conectado dependerá de la cantidad de discos persistentes conectados a la VM.

    Cuando uses un pod de TPU, deberás activar el Persistent Disk en todas las VMs de TPU de tu pod. El nombre del Persistent Disk debe ser el mismo para todas las VMs de TPU, pero no se garantiza. Por ejemplo, si desconectas y vuelves a conectar el Persistent Disk, el nombre del dispositivo aumentará y cambiará de sdb a sdc.

  3. Si el disco no tiene formato, formatea el Persistent Disk conectado ahora:

    (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 Persistent Disk:

    Si usas un dispositivo TPU, ejecuta el siguiente comando para crear un directorio para activar el Persistent Disk:

    (vm)$ sudo mkdir -p /mnt/disks/persist

    Si usas un pod de TPU, ejecuta el siguiente comando fuera de tu VM de TPU. Esto creará el directorio en todas las VMs de TPU del pod.

    (vm)$ gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/persist"
  5. Activa el Persistent Disk:

    Si usas un dispositivo TPU, ejecuta el siguiente comando para activar el Persistent Disk en tu VM de TPU.

    (vm)$ sudo mount -o discard,defaults /dev/sdb /mnt/disks/persist

    Si usas un pod de TPU, ejecuta el siguiente comando fuera de la VM de TPU. Se adjuntará el Persistent Disk a todas las VMs de TPU de tu Pod.

    (vm)$ gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all --command="sudo mount -o discard,defaults /dev/sdb /mnt/disks/persist"

Desactiva un disco persistente

Para desactivar (desactivar) un disco persistente, 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 los recursos de TPU.
zone
Es la zona en la que se encuentra la Cloud TPU.
disk-name
Es el nombre del Persistent Disk que se desconecta de la VM de TPU.

Limpia

Borra tus recursos de TPU cuando termines de usarlos.

  1. Desconéctate de la instancia de Compute Engine, 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 tus recursos de Cloud TPU y Compute Engine.

    $ gcloud compute tpus tpu-vm delete tpu-name \
     --zone=zone
  3. Ejecuta gcloud list para verificar que los recursos se hayan borrado. La eliminación puede tardar varios minutos. El resultado de gcloud list no debería mostrar ninguno de los recursos de VM de TPU creados por este procedimiento.

    $ gcloud compute tpus tpu-vm list --zone=zone
  4. Para verificar que el Persistent Disk se borró automáticamente cuando se borró la VM de TPU, muestra una lista de todos los discos de la zona en la que creaste el Persistent Disk:

    $ gcloud compute disks list --filter="zone:( us-central1-b )"

    Si el Persistent Disk no se borró cuando se borró la VM de TPU, usa los siguientes comandos para borrarlo:

    $ gcloud compute disks delete disk-name \
    --zone zone