Administra recursos de TPU

En esta página, se describe cómo administrar los recursos de Cloud TPU con los siguientes elementos:

Cloud TPU tiene dos arquitecturas de VM: nodo TPU y VM de TPU. Las dos arquitecturas de VM se describen en Arquitectura del sistema. Puedes usar los comandos de gcloud que se describen en este documento con ambas configuraciones de TPU. Los comandos de gcloud que uses dependerán de la configuración de TPU que uses. Cada comando gcloud se muestra en una sección con pestañas. Elige la pestaña de la configuración de TPU que deseas usar y la página web mostrará el comando gcloud adecuado. A menos que sepas que necesitas usar nodos TPU, te recomendamos que uses las VM de TPU. Para Cloud TPU v4 y versiones posteriores, solo se admite la arquitectura de VM de TPU.

Requisitos previos

Antes de ejecutar estos procedimientos, debes instalar Google Cloud CLI, crear un proyecto de Google Cloud y habilitar la API de Cloud TPU. Para obtener instrucciones, consulta Configura un proyecto y habilita la API de Cloud TPU.

Si usas Google Cloud CLI, puedes usar Google Cloud Shell, una VM de Compute Engine o instalar Google Cloud CLI de forma local. Google Cloud Shell te permite interactuar con las Cloud TPU sin tener que instalar ningún software. Es posible que Google Cloud Shell se desconecte después de un período de inactividad. Si ejecutas comandos de larga duración, te recomendamos que instales Google Cloud CLI en tu máquina local. Para obtener más información sobre Google Cloud CLI, consulta la Referencia de gcloud.

Aprovisiona Cloud TPU

Puedes aprovisionar una Cloud TPU con gcloud, la consola de Google Cloud o la API de Cloud TPU.

Si usas gcloud, existen dos métodos para aprovisionar TPU:

  1. Usa recursos en cola: gcloud alpha compute tpus queued-resources create
  2. Usa la API de Create Node: gcloud alpha compute tpus tpu-vm create

La práctica recomendada es aprovisionar recursos en cola. Cuando solicitas recursos en cola, la solicitud se agrega a una cola que mantiene el servicio de Cloud TPU. Cuando el recurso solicitado está disponible, se asigna a tu proyecto de Google Cloud para tu uso exclusivo inmediato.

Para crear una TPU con recursos en cola, consulta Recursos en cola.

Si usarás Multislice, consulta la Introducción a Multislice para obtener más información.

Cuando uses Multislice, especifica los siguientes parámetros adicionales cuando solicites recursos en cola:

export NODE_COUNT=node_count
export NODE_PREFIX=your_tpu_prefix # Optional

Crea una Cloud TPU con la API de Crear nodo

Para crear una TPU con la API de Crear nodo, ejecuta el comando gcloud compute tpus tpu-vm create.

VMs de TPU

Puedes especificar configuraciones de TPU en términos de TensorCores o chips TPU. Para obtener más información, consulta la sección de la versión de TPU que usas en Arquitectura del sistema.

El siguiente comando usa una configuración basada en TensorCore:

$ gcloud alpha compute tpus tpu-vm create tpu-name \
  --zone=us-central2-b \
  --accelerator-type=v4-8 \
  --version=tpu-software-version

Descripciones de las marcas de comandos

zone
La zona en la que planeas crear tu Cloud TPU.
accelerator-type
El tipo de Cloud TPU que se creará.
version
La versión de software de TPU.
shielded-secure-boot (opcional)
Especifica que las instancias de TPU se crean con el inicio seguro habilitado. Esto las convierte de manera implícita en instancias de VM protegida. Consulta ¿Qué es una VM protegida? para obtener más información.

Con el siguiente comando, se crea una TPU con la API de Create Node:

  $ gcloud alpha compute tpus tpu-vm create tpu-name \
    --zone=us-central2-b \
    --type=v4 \
    --topology=2x2x1 \
    --version=tpu-software-version

Marcas obligatorias

tpu-name
El nombre de la VM de TPU que creas.
zone
La zona en la que crearás tu Cloud TPU.
type
Para obtener más información sobre los tipos de TPU compatibles, consulta Tipos de TPU.
topology
Consulta la sección topología para conocer las topologías compatibles.
version
La versión de software de TPU que deseas usar. Para obtener más información, consulta Versiones de software de TPU

Para obtener más información sobre las topologías y los tipos de TPU admitidos, consulta Configuraciones de TPU compatibles.

Nodos TPU

$ gcloud compute tpus execution-groups create --name=tpu-name \
  --zone=us-central1-a \
  --tf-version=2.12.0 \
  --machine-type=n1-standard-1 \
  --accelerator-type=v3-8

Descripciones de las marcas de comandos

zone
Es la zona en la que deseas crear la Cloud TPU.

tf-version
La versión de Tensorflow que el comando gcloud instala en tu VM.

machine-type
El tipo de máquina de la VM de Compute Engine que se creará.

accelerator-type
El tipo de Cloud TPU que se creará.

Crea una Cloud TPU en la consola de Google Cloud

  1. Navega a la consola de Google Cloud.
  2. Desde el menú de navegación de la izquierda, selecciona Compute Engine > TPU.
  3. Haz clic en CREAR NODO TPU.
  4. En el cuadro Nombre, escribe el nombre de una instancia de TPU.
  5. En el cuadro Zona, selecciona la zona en la que se creará la TPU.
  6. En Configuración de TPU, selecciona la arquitectura de VM de TPU o la arquitectura de nodo TPU. La configuración de la TPU determina si se crea la TPU como una VM de TPU o un nodo TPU. Para obtener más información, consulta Arquitectura del sistema.
  7. En Tipo de TPU, selecciona el tipo de TPU que quieres crear.
  8. En el caso de la versión de software de TPU, selecciona la versión de software. Cuando se crea una VM de Cloud TPU, la versión de software de TPU especifica la versión del entorno de ejecución de TPU que se instalará. Cuando creas un nodo de Cloud TPU, la versión de software de TPU te permite elegir el framework de AA instalado en la VM del nodo. No se requiere ningún otro parámetro de configuración. Para obtener más información, consulta Modelos compatibles.
  9. Haz clic en CREAR para crear tus recursos.

Crea una VM de Cloud TPU con curl

En el siguiente comando, se usa curl para crear una TPU.

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
  runtime_version:'tpu-vm-tf-2.16.1-pjrt', \
  network_config: {enable_external_ips: true}, \
  shielded_instance_config: { enable_secure_boot: true }}" \
  https://tpu.googleapis.com/v2/projects/project-id/locations/us-central2-b/nodes?node_id=node_name

Campos obligatorios

runtime_version
La versión del entorno de ejecución de Cloud TPU que quieres usar.
project
El nombre del proyecto de Google Cloud inscrito.
zone
La zona en la que creas tu Cloud TPU.
node_name
El nombre de la VM de TPU que creas.

Ejecuta una secuencia de comandos de inicio

Puedes ejecutar una secuencia de comandos de inicio en cada VM de TPU si especificas el parámetro --metadata startup-script cuando creas la VM de TPU. Con el siguiente comando, se crea una VM de TPU con una secuencia de comandos de inicio.

$ gcloud compute tpus tpu-vm create tpu-name \
    --zone=us-central2-b \
    --accelerator-type=tpu-type \
    --version=tpu-vm-tf-2.16.1-pjrt \
    --metadata startup-script='#! /bin/bash
      pip3 install numpy
      EOF'

Conéctate a Cloud TPU

Puedes conectarte a una TPU con SSH.

VMs de TPU

Cuando uses VMs de TPU, debes conectarte de forma explícita a tu VM de TPU con SSH.

  • Conéctate a la VM de TPU a través de SSH con el comando gcloud compute tpus tpu-vm ssh.

    Cuando solicitas porciones con más de 4 chips, Cloud TPU crea una VM de TPU para cada grupo de 4 chips.

    Para instalar los objetos binarios o ejecutar el código, puedes conectarte a cada VM de TPU a través de tpu-vm ssh command.

    gcloud compute tpus tpu-vm ssh ${TPU_NAME}
    

    Para acceder a una VM de TPU específica o instalar objetos binarios en cada VM de TPU con SSH, usa la marca --worker que sigue a un índice basado en 0:

    gcloud compute tpus tpu-vm ssh ${TPU_NAME} --worker=1
    

    Cuando tengas más de una VM de TPU, usa las marcas --worker=all y --command para ejecutar un comando en todas las VM de TPU al mismo tiempo. Por ejemplo:

    gcloud compute tpus tpu-vm ssh ${TPU_NAME}  --project ${PROJECT_ID} \
    --zone  ${ZONE} \
    --worker=all \
    --command='pip install "jax[tpu]==0.4.20" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html'
    

    Para Multislice, puedes ejecutar un comando en una sola VM (con el nombre de tpu-name) o usar las marcas --node=all, --worker=all y --command para ejecutar el comando en todas las VM de TPU de todas las porciones de Multislice, con un campo opcional --batch-size.

    gcloud alpha compute tpus queued-resources ssh ${QUEUED_RESOURCE_ID} \
    --project ${PROJECT_ID} --zone ${ZONE} --node=all --worker=all \
    --command='pip install "jax[tpu]==0.4.20" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html' --batch-size=4
    
    $ gcloud compute tpus tpu-vm ssh tpu-name --zone=zone
  • Para usar SSH en el navegador, haz lo siguiente:

    1. En la consola de Google Cloud, ve a la página TPU:

      Ir a TPU

    2. En la lista de VMs de TPU, haz clic en SSH en la fila de la VM de TPU a la que deseas conectarte.

Nodos TPU

De forma predeterminada, el comando gcloud que usas para crear nodos TPU intenta establecer una conexión SSH a tu nodo TPU automáticamente. Si usas nodos TPU y no estás conectado a la instancia de Compute Engine mediante el comando gcloud, puedes conectarte mediante el siguiente comando:

$ gcloud compute ssh tpu-name \
  --zone=zone

Después de crear la VM de TPU, puedes ver los registros desde la secuencia de comandos de inicio si conéctate a la VM de TPU con SSH y ejecuta lo siguiente:

$ cat /var/log/syslog | grep startup-script

Enumera los recursos de Cloud TPU

Puedes enumerar todas tus Cloud TPU en una zona especificada.

Enumera los recursos de Cloud TPU con gcloud

Los comandos que uses dependerán de si usas VMs de TPU o nodos TPU. Para obtener más información, consulta Arquitectura del sistema.

VMs de TPU

$ gcloud compute tpus tpu-vm list --zone=zone

Nodos TPU

$ gcloud compute tpus execution-groups list --zone=zone

Con este comando, se enumeran los recursos de Cloud TPU en la zona especificada. Si no hay recursos configurados, el resultado solo mostrará guiones para la VM y la TPU. Si un recurso está activo y el otro no, verás un mensaje que indica que el estado está en mal estado. Debes iniciar o reiniciar el recurso que no esté en ejecución.

Muestra una lista de tus recursos de Cloud TPU en la consola de Google Cloud

  1. Navega a la consola de Google Cloud.

  2. Desde el menú de navegación de la izquierda, selecciona Compute Engine > TPU. En la consola, se muestra la página de TPU.

Recupera información sobre Cloud TPU

Puedes recuperar información sobre una Cloud TPU especificada.

Recupera información sobre Cloud TPU con gcloud

Los comandos que uses dependerán de si usas VMs de TPU o nodos TPU. Para obtener más información, consulta Arquitectura del sistema.

VMs de TPU

$ gcloud compute tpus tpu-vm describe tpu-name \
  --zone=zone

Nodos TPU

$ gcloud compute tpus execution-groups describe tpu-name \
  --zone=zone

Recupera información sobre Cloud TPU en la consola de Google Cloud.

  1. Navega a la consola de Google Cloud.
  2. Desde el menú de navegación de la izquierda, selecciona Compute Engine > TPU. En la consola, se muestra la página de TPU.
  3. Haz clic en el nombre de tu Cloud TPU. Se mostrará la página de detalles de Cloud TPU.

Detén tus recursos de Cloud TPU

Puedes detener una sola Cloud TPU para que no se generen cargos sin perder la configuración ni el software de la VM. No se admite la detención de los pods de TPU o las TPU asignadas a través de la API de recursos en cola. Para dejar de generar cargos por las TPU asignadas a través de la API de recursos en cola, debes borrar la TPU.

Detén una Cloud TPU con gcloud

Los comandos que usas para detener una Cloud TPU dependen de si usas VMs de TPU o nodos TPU. Para obtener más información, consulta Arquitectura del sistema.

VMs de TPU

$ gcloud compute tpus tpu-vm stop tpu-name \
--zone=zone

Nodos TPU

$ gcloud compute tpus stop tpu-name \
--zone=zone

Detén una Cloud TPU en la consola de Google Cloud

  1. Navega a la consola de Google Cloud.

  2. Desde el menú de navegación de la izquierda, selecciona Compute Engine > TPU. En la consola, se muestra la página de TPU.

  3. Selecciona la casilla de verificación junto a tu Cloud TPU y haz clic en Detener.

Inicia tus recursos de Cloud TPU

Puedes iniciar una Cloud TPU cuando se detenga.

Inicia una Cloud TPU con gcloud

Puedes iniciar una Cloud TPU detenida para reanudar su uso.

El comando que uses para iniciar una Cloud TPU detenida depende de si usas VMs de TPU o nodos TPU. Para obtener más información, consulta Arquitectura del sistema.

VMs de TPU

$ gcloud compute tpus tpu-vm start tpu-name --zone=zone

Nodos TPU

$ gcloud compute tpus start tpu-name --zone=zone

Inicia una Cloud TPU en la consola de Google Cloud

  1. Navega a la consola de Google Cloud.

  2. Desde el menú de navegación de la izquierda, selecciona Compute Engine > TPU. En la consola, se muestra la página de TPU.

  3. Selecciona la casilla de verificación junto a tu Cloud TPU y haz clic en Iniciar.

Borra la VM de TPU

El comando que uses depende de si usas VM de TPU o nodos TPU. Para obtener más información, consulta Arquitectura del sistema.

VMs de TPU

Borra las porciones de VM de TPU al final de la sesión.

 gcloud compute tpus tpu-vm delete ${TPU_NAME} --project=${PROJECT_ID}
 --zone=${ZONE} --quiet

Descripciones de las marcas de comandos

zone
La zona en la que planeas borrar tu Cloud TPU.

Nodos TPU

$ gcloud compute tpus execution-groups delete tpu-name \
  --zone=zone

Descripciones de las marcas de comandos

zone
La zona en la que planeas borrar tu Cloud TPU.

Borra una Cloud TPU en la consola de Google Cloud

  1. Navega a la consola de Google Cloud.

  2. Desde el menú de navegación de la izquierda, selecciona Compute Engine > TPU. En la consola, se muestra la página de TPU.

  3. Selecciona la casilla de verificación junto a tu Cloud TPU y haz clic en Borrar.

Configuraciones avanzadas

Recursos de red personalizados

Cuando creas la TPU, puedes optar por especificar la red o una subred. Puedes hacerlo mediante el envío de un comando gcloud o una llamada curl.

Para especificar la red o subred en la CLI de gcloud, usa el siguiente comando:

--network [NETWORK] --subnetwork [SUBNETWORK]

Para especificar la red o subred en una llamada a curl, usa lo siguiente:

network_config: {network: '[NETWORK]', subnet: '[SUBNETWORK]', enable_external_ips: true}

Red

De manera opcional, puedes especificar la red que se usará para la TPU. Si no se especifica, se usa la red default.

Formatos de red válidos:

https://www.googleapis.com/compute/{version}/projects/{proj-id}/global/networks/{network}
compute/{version}/projects/{proj-id}/global/networks/{network}
compute/{version}/projects/{proj-##}/global/networks/{network}
projects/{proj-id}/global/networks/{network}
projects/{proj-##}/global/networks/{network}
global/networks/{network}
{network}

Subred

Puedes especificar la subred para usar una subred específica. La subred especificada debe estar en la misma región que la zona en la que se ejecuta la TPU.

Formatos válidos:

https://www.googleapis.com/compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
compute/{version}/projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
regions/{region}/subnetworks/{subnetwork}
{subnetwork}

Acceso privado a Google

Si quieres establecer una conexión SSH a las VM de TPU, debes agregar opciones de configuración de acceso para las VMs de TPU o activar el Acceso privado a Google en la subred a la que están conectadas las VMs de TPU.

Para agregar parámetros de configuración de acceso, se debe establecer enable_external_ips. Cuando creas una TPU, enable_external_ips se configura de forma predeterminada. Si quieres inhabilitar esta opción, especifica el siguiente comando:

--internal-ips

O usa una llamada curl:

network_config: {enable_external_ips: true}

Después de configurar el Acceso privado a Google, conéctate a la VM a través de SSH.

Cuenta de servicio personalizada

Cada VM de TPU tiene una cuenta de servicio asociada que usa para realizar solicitudes a la API en tu nombre. Las VMs de TPU usan esta cuenta de servicio para llamar a las APIs de Cloud TPU, acceder a Cloud Storage y a otros servicios. De forma predeterminada, la VM de TPU usa la cuenta de servicio predeterminada de Compute Engine.

Puedes especificar una cuenta de servicio personalizada cuando creas una VM de TPU con la marca --service-account. La cuenta de servicio debe definirse en el mismo proyecto de Google Cloud en el que creas tu VM de TPU. Las cuentas de servicio personalizadas que se usan en las VMs de TPU deben tener la función de visualizador de TPU para llamar a la API de Cloud TPU. Si el código que se ejecuta en la VM de TPU llama a otros servicios de Google Cloud, debe tener las funciones necesarias para acceder a esos servicios.

Cuando creas una TPU, puedes elegir especificar una cuenta de servicio personalizada con la marca --service-account. Para obtener más información sobre las cuentas de servicio, consulta Cuentas de servicio.

Usa los siguientes comandos para especificar una cuenta de servicio personalizada.

Crea una VM de TPU con la CLI de gcloud

$ gcloud alpha compute tpus tpu-vm create tpu-name \
    --zone=us-central2-b \
    --accelerator-type=tpu-type \
    --version=tpu-vm-tf-2.16.1-pjrt \
    --service-account=your-service-account

Crea una VM de TPU con curl

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
  runtime_version:'tpu-vm-tf-2.16.1-pjrt', \
  network_config: {enable_external_ips: true}, \
  shielded_instance_config: { enable_secure_boot: true }}" \
  service_account: {email: 'your-service-account'} \
  https://tpu.googleapis.com/v2/projects/project-id/locations/us-central2-b/nodes?node_id=node_name

Si quieres usar una cuenta de servicio personalizada, debes autorizarla para tus buckets de Google Cloud Storage. Para obtener más información, consulta Conéctate a buckets de Cloud Storage.

Métodos SSH personalizados de VMs

  1. Configurar un firewall para SSH

    La red predeterminada viene preconfigurada para permitir el acceso mediante SSH a todas las VMs. Si no usas la red predeterminada o si se editó la configuración de red predeterminada, es posible que debas habilitar el acceso SSH de forma explícita agregando una regla de firewall:

    $ gcloud CLI compute firewall-rules create \
    --network=network allow-ssh \
    --allow=tcp:22
    
  2. Establece una conexión SSH a las VMs de TPU.

    $ gcloud compute tpus tpu-vm ssh tpu-name \
    --zone=us-central2-b \
    --project=project-id
    

    Campos obligatorios

    • tpu-name: El nombre del nodo TPU.
    • zone: Es la ubicación del nodo TPU. Actualmente, solo se admite us-central2-b.
    • project-id: El proyecto que creaste antes.

    Para ver una lista de campos opcionales, consulta la documentación de la API de gcloud.