Usa TPU interrumpibles

Los nodos de TPU interrumpibles cuestan mucho menos que los nodos no interrumpibles. El servicio de Cloud TPU puede interrumpir (cerrar) estos nodos en cualquier momento, si requiere recursos de TPU adicionales para atender otras solicitudes. Puedes crear un nodo TPU interrumpible con Cloud Console o la herramienta de línea de comandos de gcloud.

Crea un nodo TPU interrumpible

Console

  1. Ve a la página de TPU en Compute Engine en la página principal.
  2. Haz clic en CREAR NODO TPU para abrir la página de creación de nodos TPU.
  3. Ingresa un nombre para tu nodo TPU.
  4. Selecciona la zona en la que se creará el nodo TPU.
  5. Selecciona un tipo de TPU para tu nodo TPU.
  6. Haz clic en Activar la prioridad para este nodo a fin de hacer que tu nodo TPU sea interrumpible.
  7. Selecciona la versión de TensorFlow o PyTorch que se instalará en la VM.

gcloud

$ gcloud compute tpus execution-groups create demo-tpu \
  --zone=europe-west4-a \
  --accelerator-type=v3-8
  --version=2.5.0 \
  --preemptible
  

Donde:

  • demo-tpu es un nombre para la TPU.
  • "--accelerator-type especifica el tipo de TPU.
  • --version especifica la versión de TensorFlow o PyTorch que se instalará en tu VM.
  • --preemptible permite que Cloud TPU interrumpa la TPU.

El estado interrumpible de una TPU es independiente del estado interrumpible de la instancia de VM.

Precios y cuotas para las TPU interrumpibles

Los precios para las TPU interrumpibles son considerablemente menores que los de las TPU normales. Para obtener más detalles, consulta la guía de precios. Las TPU no se cobran si se interrumpen durante el primer minuto posterior a su creación.

Por lo general, la cuota para las TPU interrumpibles es más alta y está separada de la de las TPU normales. Consulta la página de cuotas.

TPU y TPU interrumpibles

Como se describe en la guía de inicio rápido, necesitas una máquina virtual (VM) de Compute Engine para conectarte a una TPU. Ten en cuenta que el estado interrumpible de la TPU es independiente del estado interrumpible de la VM. Puedes definir tu TPU como interrumpible y la VM como no interrumpible, o viceversa. También puedes definir ambas como interrumpibles.

La combinación más probable es una TPU interrumpible y una VM no interrumpible. Ten en cuenta los siguientes puntos:

  • Es probable que los cargos aplicados a la VM sean bajos en relación con los cargos aplicados a la TPU. Los cargos de la VM dependen del tipo de máquina que uses. Consulta la página de precios para ver un ejemplo simple de los costos relativos.
  • Cloud TPU no coordina la interrupción de la VM ni de la TPU. Si estableces que ambas son interrumpibles, la VM y la TPU pueden interrumpirse en diferentes momentos.
  • Si Compute Engine interrumpe la VM, se te cobrará por la TPU (a menos que la TPU en sí misma sea interrumpible). Ten en cuenta que la TPU está inactiva, al tiempo que la VM está interrumpida.
  • Las instancias interrumpibles, como las instancias de VM de Compute Engine y Cloud TPU, siempre se interrumpen después de que se ejecutan durante 24 horas. Ciertas acciones restablecen este contador de 24 horas.

Detectar si se ha interrumpido una TPU

Usa el comando gcloud para verificar si el servicio de Cloud TPU interrumpió tu TPU:

Indica las TPU disponibles:

(vm)$ gcloud compute tpus list

El comando anterior muestra los detalles de las TPU que se crearon en el proyecto. Si se interrumpió una TPU, el estado cambia de READY a PREEMPTED.

Por ejemplo:

NAME       ZONE           ACCELERATOR_TYPE  NETWORK_ENDPOINT   NETWORK  RANGE          STATUS
demo-tpu   us-central1-b  v2-8              10.240.1.2:8470    default  10.240.1.0/29  PREEMPTED

Detectar si se ha interrumpido una instancia de VM

Con el fin de verificar si la instancia de VM se interrumpió, usa el comando gcloud compute operations list para obtener una lista de las operaciones recientes del sistema. Agrega un filtro name para que solo se muestren las instancias que tienes en ejecución o agrega el filtro operationType a fin de que solo se muestren los recursos interrumpidos. Por ejemplo, usa el comando siguiente para mostrar solo las instancias con el nombre de instancia especificado:

$ gcloud compute operations list--filter="name=( 'NAME' my-vm)"

El ejemplo siguiente muestra únicamente los recursos que se interrumpieron:

$ gcloud compute operations list --filter="operationType=compute.instances.preempted"

Si deseas obtener más detalles, consulta la guía de Compute Engine.

Cómo diseñar la aplicación de aprendizaje automático para que se ejecute en TPU interrumpibles

A fin de asegurarse de que la aplicación sea resistente a los reinicios de la VM y la TPU, guarda los puntos de control del modelo de forma regular y configura la aplicación para que restablezca el punto de control más reciente durante el reinicio.