Administra recursos de TPU

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

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

Con gcloud, hay dos métodos para aprovisionar TPU:

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

La práctica recomendada es aprovisionar TPU con 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.

Si usas Multislice, especifica los siguientes parámetros adicionales cuando solicites recursos en cola:

export NODE_COUNT=node_count
export NODE_PREFIX=your_tpu_prefix # Optional
donde
${NODE_COUNT} is the number of slices to create and
${NODE_PREFIX} is the prefix you specify to generate names for each slice.
A number is appended to the prefix for each slice. For example if you set
${NODE_PREFIX} to mySlice, the slices are named: mySlice-0, mySlice-1,
and so on.

Crea una Cloud TPU con la API de Crear nodo

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

Para determinar qué software de VM de TPU debes usar, consulta Imágenes de VM de TPU.

Puedes especificar las 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 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 deseas 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. Si deseas obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta las versiones de TPU.
version
La versión del software de la TPU.
shielded-secure-boot (opcional)
Especifica que las instancias de TPU se crean con el arranque 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 una topología específica:

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

Marcas obligatorias

tpu-name
Es el nombre de la VM de TPU que estás creando.
zone
La zona en la que crearás la Cloud TPU.
type
La versión de la Cloud TPU que quieres crear. Para obtener más información sobre las versiones de TPU, consulta Versiones de TPU.
topology
Consulta la sección topología para conocer las topologías compatibles.
version
La versión de software de TPU que quieres usar. Para obtener más información, consulta Versiones de software de TPU

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

Crea una Cloud TPU en la consola de Google Cloud

  1. Ve a la página TPU:

    Ir a TPU

  2. Haz clic en CREAR NODO TPU.

  3. En el cuadro Nombre, escribe el nombre de una instancia de TPU.

  4. En el cuadro Zona, selecciona la zona en la que se creará la TPU.

  5. En el cuadro Tipo de TPU, selecciona el tipo de acelerador que usas. El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. Si deseas obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta las versiones de TPU.

  6. En 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 una Cloud TPU, la versión de software de la TPU te permite elegir el marco de trabajo de AA instalado en la VM de TPU. No se requiere ningún otro parámetro de configuración. Para obtener más información, consulta Modelos compatibles.

  7. 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 crearás tu Cloud TPU.
node_name
Es el nombre de la VM de TPU que estás creando.

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 crees 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 una Cloud TPU

Debes conectarte de forma explícita a la VM de TPU con SSH.

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

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 con el tpu-vm ssh command.

  $ gcloud compute tpus tpu-vm ssh tpu-name
  

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

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

Para ejecutar un comando en todas las VM de TPU con un solo comando, 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=your_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 la TPU enumerado, cada prefijo de fragmento y el número agregado a él, o usar las marcas --node=all, --worker=all y --command para ejecutar el comando en todas las VM de TPU en todos los segmentos, con un campo --batch-size opcional.

  $ gcloud 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
  

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 VM de TPU, haz clic en SSH en la fila de la VM de TPU a la que deseas conectarte.

Enumera los recursos de Cloud TPU

Puedes enumerar todas tus Cloud TPU en una zona especificada.

Enumera los recursos de Cloud TPU con gcloud

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

Este comando crea una lista de los recursos de Cloud TPU de 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 no está en buen estado. Debes iniciar o reiniciar el recurso que no se esté ejecutando.

Genera una lista de los recursos de Cloud TPU en la consola de Google Cloud

Ir a TPU

Todas tus TPU aprovisionadas se muestran en el resultado.

Recupera información sobre Cloud TPU

Puedes recuperar información sobre una Cloud TPU especificada.

Recuperar información sobre una Cloud TPU con gcloud

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

Recuperar información sobre una Cloud TPU en la consola de Google Cloud

  1. Ve a la página TPU:

    Ir a TPU

  2. Haz clic en el nombre de tu Cloud TPU. Se muestra la página de detalles de Cloud TPU.

Detén tus recursos de Cloud TPU

Puedes detener una sola Cloud TPU para que deje de generar cargos sin perder la configuración ni el software de la VM. No se admite la detención de pods de TPU o TPU asignados 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

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

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

  1. Ve a la página TPU:

    Ir a TPU

  2. Selecciona la casilla de verificación junto a tu Cloud TPU y haz clic en DETENER en la barra de menú de la parte superior de la página.

Inicia tus recursos de Cloud TPU

Puedes iniciar una Cloud TPU cuando está detenida.

  1. Selecciona la casilla de verificación junto a tu Cloud TPU y haz clic en INICIAR en la barra de menú de la parte superior de la página.

Inicia una Cloud TPU con gcloud

Puedes iniciar una Cloud TPU detenida para reanudar su uso.

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

Inicia una Cloud TPU en la consola de Google Cloud

  1. Ve a la página TPU:

    Ir a TPU

  2. Selecciona la casilla de verificación junto a tu Cloud TPU y haz clic en START en la barra de menú de la parte superior de la pantalla.

Borra una Cloud TPU

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

Borra una Cloud TPU con gcloud

$ 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 la Cloud TPU.

Borra una Cloud TPU en la consola de Google Cloud

  1. Ve a la página TPU:

    Ir a TPU

  2. 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 elegir especificar la red o una subred. Para ello, envía un comando gcloud o una llamada a curl.

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

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

Con el fin de establecer una conexión SSH a las VM de TPU, debes agregar la configuración de acceso para las VM de TPU o activar el Acceso privado a Google en la subred a la que están conectadas las VM 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 establece de forma predeterminada. Si deseas 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 mediante 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 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 la VM de TPU. Las cuentas de servicio personalizadas que se usan en las VM 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 tu 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 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 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

Para 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 VM

  1. Configurar un firewall para SSH

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

    $ gcloud CLI compute firewall-rules create \
     --network=network allow-ssh \
     --allow=tcp:22
    
  2. Conéctate a las VMs de TPU con SSH.

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

    Campos obligatorios

    • tpu-name: Es el nombre de la VM de TPU.
    • zone: Es la zona en la que creaste la VM de TPU.
    • project-id: Es el nombre de tu proyecto de Google Cloud.

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