Gestionar recursos en cola

Los recursos en cola te permiten solicitar recursos de TPU de Cloud de forma ordenada. Cuando solicitas recursos en cola, la solicitud se añade a una cola que mantiene el servicio Cloud TPU. Cuando el recurso solicitado esté disponible, se asignará a tu Google Cloud proyecto para que lo uses de forma inmediata y exclusiva. Seguirá asignado a tu proyecto a menos que lo elimines o se interrumpa. Solo las VMs de TPU de acceso puntual y las TPUs interrumpibles se pueden interrumpir.

Puedes especificar una hora de inicio y de finalización opcionales en una solicitud de recursos en cola. La hora de inicio especifica la hora más temprana en la que se debe rellenar la solicitud. Si una solicitud no se ha rellenado antes de la hora de finalización especificada, caducará. La solicitud permanece en la cola después de que haya caducado.

Las solicitudes de recursos en cola pueden tener uno de los siguientes estados:

WAITING_FOR_RESOURCES
La solicitud ha superado la validación inicial y se ha añadido a la cola. Permanece en este estado hasta que haya suficientes recursos gratuitos para empezar a aprovisionar tu solicitud o hasta que transcurra el intervalo de asignación. Cuando la demanda es alta, no se pueden aprovisionar todas las solicitudes de inmediato. Si necesitas que las TPUs estén disponibles de forma más fiable, plantéate comprar una reserva.
PROVISIONING
La solicitud se ha seleccionado de la cola y se están asignando sus recursos.
ACTIVE
Se ha asignado la solicitud. Cuando las solicitudes de recursos en cola estén en el estado ACTIVE, puedes gestionar tus máquinas virtuales de TPU como se describe en Gestionar TPUs.
FAILED
No se ha podido completar la solicitud porque hay un problema con ella o porque los recursos solicitados no estaban disponibles en el intervalo de asignación. La solicitud permanece en la cola hasta que se elimina explícitamente.
SUSPENDING
Se están eliminando los recursos asociados a la solicitud.
SUSPENDED
Se han eliminado los recursos especificados en la solicitud. Cuando una solicitud tiene el estado SUSPENDED, ya no se puede asignar más.

Requisitos previos

Antes de ejecutar los comandos de esta guía, debes instalar la CLI de Google Cloud, crear un Google Cloud proyecto y habilitar la API Cloud TPU. Para obtener instrucciones, consulta Configurar el entorno de TPU de Cloud.

Si usas una de las bibliotecas de cliente de Cloud, sigue las instrucciones de configuración del lenguaje que estés usando:

Solicitar un recurso en cola bajo demanda

Los recursos bajo demanda no se retirarán, pero la cuota bajo demanda no garantiza que haya suficientes recursos de TPU de Cloud disponibles para satisfacer tu solicitud. Para obtener más información sobre los recursos bajo demanda, consulta Tipos de cuota.

gcloud

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-central1-a \
    --accelerator-type v5litepod-8 \
    --runtime-version v2-alpha-tpuv5-lite

Descripciones de los parámetros de los comandos

queued-resource-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID asignado por el usuario de la TPU que se crea cuando se asigna la solicitud de recurso en cola.
project
Tu Google Cloud proyecto.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.

curl

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    'tpu': {
    'node_spec': {
        'parent': 'projects/your-project-number/locations/us-central1-a',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v5litepod-8',
        'runtime_version': 'v2-alpha-tpuv5-lite',
        }
    }
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central1-a/queuedResources?queued_resource_id=your-queued-resource-id

Descripciones de los parámetros de los comandos

queued-resource-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID asignado por el usuario de la TPU que se crea cuando se asigna la solicitud de recurso en cola.
project
Tu Google Cloud proyecto.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.

Consola

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Name (Nombre), introduce un nombre para tu TPU.

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

  5. En el cuadro Tipo de TPU, selecciona un tipo de acelerador. El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores admitidos en cada versión de TPU, consulta Versiones de TPU.

  6. En el cuadro Versión de software de la TPU, selecciona una versión de software. Al crear una máquina virtual de TPU de Cloud, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se va a instalar. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el interruptor Habilitar colas.

  8. En el campo Queued resource name (Nombre del recurso en cola), introduce un nombre para tu solicitud de recurso en cola.

  9. Haz clic en Crear para crear tu solicitud de recurso en cola.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

import com.google.cloud.tpu.v2alpha1.CreateQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.Node;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateQueuedResource {
  public static void main(String[] args)
          throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "us-central1-a";
    // The name for your TPU.
    String nodeName = "YOUR_NODE_ID";
    // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
    // For more information about supported accelerator types for each TPU version,
    // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
    String tpuType = "v5litepod-4";
    // Software version that specifies the version of the TPU runtime to install.
    // For more information see https://cloud.google.com/tpu/docs/runtimes
    String tpuSoftwareVersion = "v2-tpuv5-litepod";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    createQueuedResource(
        projectId, zone, queuedResourceId, nodeName, tpuType, tpuSoftwareVersion);
  }

  // Creates a Queued Resource
  public static QueuedResource createQueuedResource(String projectId, String zone,
      String queuedResourceId, String nodeName, String tpuType, String tpuSoftwareVersion)
          throws IOException, ExecutionException, InterruptedException, TimeoutException {
    String resource = String.format("projects/%s/locations/%s/queuedResources/%s",
            projectId, zone, queuedResourceId);
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      String parent = String.format("projects/%s/locations/%s", projectId, zone);
      Node node =
          Node.newBuilder()
              .setName(nodeName)
              .setAcceleratorType(tpuType)
              .setRuntimeVersion(tpuSoftwareVersion)
              .setQueuedResource(resource)
              .build();

      QueuedResource queuedResource =
          QueuedResource.newBuilder()
              .setName(queuedResourceId)
              .setTpu(
                  QueuedResource.Tpu.newBuilder()
                      .addNodeSpec(
                          QueuedResource.Tpu.NodeSpec.newBuilder()
                              .setParent(parent)
                              .setNode(node)
                              .setNodeId(nodeName)
                              .build())
                      .build())
              .build();

      CreateQueuedResourceRequest request =
          CreateQueuedResourceRequest.newBuilder()
              .setParent(parent)
              .setQueuedResourceId(queuedResourceId)
              .setQueuedResource(queuedResource)
              .build();

      return tpuClient.createQueuedResourceAsync(request).get(1, TimeUnit.MINUTES);
    }
  }
}

Python

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-a"
# tpu_name = "tpu-name"
# tpu_type = "v5litepod-4"
# runtime_version = "v2-tpuv5-litepod"
# queued_resource_name = "resource-name"

node = tpu_v2alpha1.Node()
node.accelerator_type = tpu_type
# To see available runtime version use command:
# gcloud compute tpus versions list --zone={ZONE}
node.runtime_version = runtime_version

node_spec = tpu_v2alpha1.QueuedResource.Tpu.NodeSpec()
node_spec.parent = f"projects/{project_id}/locations/{zone}"
node_spec.node_id = tpu_name
node_spec.node = node

resource = tpu_v2alpha1.QueuedResource()
resource.tpu = tpu_v2alpha1.QueuedResource.Tpu(node_spec=[node_spec])

request = tpu_v2alpha1.CreateQueuedResourceRequest(
    parent=f"projects/{project_id}/locations/{zone}",
    queued_resource_id=queued_resource_name,
    queued_resource=resource,
)

client = tpu_v2alpha1.TpuClient()
operation = client.create_queued_resource(request=request)

response = operation.result()
print(response.name)
print(response.state)
# Example response:
# projects/[project_id]/locations/[zone]/queuedResources/resource-name
# State.WAITING_FOR_RESOURCES

Solicitar un recurso en cola mediante una reserva

Puedes solicitar un recurso en cola mediante una reserva. Para comprar una reserva, ponte en contacto con el Google Cloud equipo de tu cuenta.

gcloud

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-central1-a \
    --accelerator-type v5litepod-8 \
    --runtime-version v2-alpha-tpuv5-lite \
    --reserved

Descripciones de los parámetros de los comandos

queued-resource-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID asignado por el usuario de la TPU que se crea cuando se asigna la solicitud de recurso en cola.
project
Tu Google Cloud proyecto.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
reserved
Usa esta marca cuando solicites recursos en cola como parte de una reserva de TPU de Cloud.

curl

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    'tpu': {
    'node_spec': {
        'parent': 'projects/your-project-number/locations/us-central1-a',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v5litepod-8',
        'runtime_version': 'v2-alpha-tpuv5-lite',
        }
    }
    },
    'guaranteed': {
    'reserved': true,
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central1-a/queuedResources?queued_resource_id=your-queued-resource-id

Descripciones de los parámetros de los comandos

queued-resource-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID asignado por el usuario de la TPU que se crea cuando se asigna la solicitud de recurso en cola.
project
Tu Google Cloud proyecto.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
reserved
Usa esta marca cuando solicites recursos en cola como parte de una reserva de TPU de Cloud.

Consola

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Name (Nombre), introduce un nombre para tu TPU.

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

  5. En el cuadro Tipo de TPU, selecciona un tipo de acelerador. El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores admitidos en cada versión de TPU, consulta Versiones de TPU.

  6. En el cuadro Versión de software de la TPU, selecciona una versión de software. Al crear una máquina virtual de TPU de Cloud, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se va a instalar. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el interruptor Habilitar colas.

  8. En el campo Queued resource name (Nombre del recurso en cola), introduce un nombre para tu solicitud de recurso en cola.

  9. Despliega la sección Gestión.

  10. Seleccione la casilla Usar reserva existente.

  11. Haz clic en Crear para crear tu solicitud de recurso en cola.

Solicitar un recurso en cola de VM de TPU de Spot

Una máquina virtual de acceso puntual es un recurso que se puede interrumpir y asignar a otra carga de trabajo en cualquier momento. Los recursos de las máquinas virtuales de acceso puntual cuestan menos y es posible que obtengas acceso a los recursos antes que con una solicitud de máquina virtual que no sea de acceso puntual. Para obtener más información sobre las VMs de acceso puntual de TPU, consulta Gestionar VMs de acceso puntual de TPU.

gcloud

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-central1-a \
    --accelerator-type v5litepod-8 \
    --runtime-version v2-alpha-tpuv5-lite \
    --spot

Descripciones de los parámetros de los comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El ID del proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
spot
Marca booleana que especifica si el recurso en cola es una VM spot.

curl

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    'tpu': {
    'node_spec': {
        'parent': 'projects/your-project-number/locations/us-central1-a',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v5litepod-8',
        'runtime_version': 'v2-alpha-tpuv5-lite'
        }
    }
    },
    'spot': {}
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central1-a/queuedResources?queued_resource_id=your-queued-resource-id

Descripciones de los parámetros de los comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El ID del proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
spot
Marca booleana que especifica si el recurso en cola es una VM spot.

Consola

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Name (Nombre), introduce un nombre para tu TPU.

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

  5. En el cuadro Tipo de TPU, selecciona un tipo de acelerador. El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores admitidos para cada versión de TPU, consulta Versiones de TPU.

  6. En el cuadro Versión de software de la TPU, selecciona una versión de software. Al crear una máquina virtual de TPU de Cloud, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se va a instalar. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el interruptor Habilitar colas.

  8. En el campo Queued resource name (Nombre del recurso en cola), introduce un nombre para tu solicitud de recurso en cola.

  9. Despliega la sección Gestión.

  10. Selecciona la casilla Convertir esta VM en una VM de acceso puntual con TPU.

  11. Haz clic en Crear.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

import com.google.cloud.tpu.v2alpha1.CreateQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.Node;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.SchedulingConfig;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class CreateSpotQueuedResource {
  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "us-central1-a";
    // The name for your TPU.
    String nodeName = "YOUR_TPU_NAME";
    // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
    // For more information about supported accelerator types for each TPU version,
    // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
    String tpuType = "v5litepod-4";
    // Software version that specifies the version of the TPU runtime to install.
    // For more information see https://cloud.google.com/tpu/docs/runtimes
    String tpuSoftwareVersion = "v2-tpuv5-litepod";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    createQueuedResource(
        projectId, zone, queuedResourceId, nodeName, tpuType, tpuSoftwareVersion);
  }

  // Creates a Queued Resource with --preemptible flag.
  public static QueuedResource createQueuedResource(
      String projectId, String zone, String queuedResourceId,
      String nodeName, String tpuType, String tpuSoftwareVersion)
      throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      String parent = String.format("projects/%s/locations/%s", projectId, zone);
      String resourceName = String.format("projects/%s/locations/%s/queuedResources/%s",
              projectId, zone, queuedResourceId);
      SchedulingConfig schedulingConfig = SchedulingConfig.newBuilder()
          .setPreemptible(true)
          .build();

      Node node =
          Node.newBuilder()
              .setName(nodeName)
              .setAcceleratorType(tpuType)
              .setRuntimeVersion(tpuSoftwareVersion)
              .setSchedulingConfig(schedulingConfig)
              .setQueuedResource(resourceName)
              .build();

      QueuedResource queuedResource =
          QueuedResource.newBuilder()
              .setName(queuedResourceId)
              .setTpu(
                  QueuedResource.Tpu.newBuilder()
                      .addNodeSpec(
                          QueuedResource.Tpu.NodeSpec.newBuilder()
                              .setParent(parent)
                              .setNode(node)
                              .setNodeId(nodeName)
                              .build())
                      .build())
              .build();

      CreateQueuedResourceRequest request =
          CreateQueuedResourceRequest.newBuilder()
              .setParent(parent)
              .setQueuedResourceId(queuedResourceId)
              .setQueuedResource(queuedResource)
              .build();

      return tpuClient.createQueuedResourceAsync(request).get();
    }
  }
}

Python

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-a"
# tpu_name = "tpu-name"
# tpu_type = "v5litepod-4"
# runtime_version = "v2-tpuv5-litepod"
# queued_resource_name = "resource-name"

node = tpu_v2alpha1.Node()
node.accelerator_type = tpu_type
# To see available runtime version use command:
# gcloud compute tpus versions list --zone={ZONE}
node.runtime_version = runtime_version

node_spec = tpu_v2alpha1.QueuedResource.Tpu.NodeSpec()
node_spec.parent = f"projects/{project_id}/locations/{zone}"
node_spec.node_id = tpu_name
node_spec.node = node

resource = tpu_v2alpha1.QueuedResource()
resource.tpu = tpu_v2alpha1.QueuedResource.Tpu(node_spec=[node_spec])
# Create a spot resource
resource.spot = tpu_v2alpha1.QueuedResource.Spot()

request = tpu_v2alpha1.CreateQueuedResourceRequest(
    parent=f"projects/{project_id}/locations/{zone}",
    queued_resource_id=queued_resource_name,
    queued_resource=resource,
)

client = tpu_v2alpha1.TpuClient()
operation = client.create_queued_resource(request=request)
response = operation.result()

print(response.name)
print(response.state)
# Example response:
# projects/[project_id]/locations/[zone]/queuedResources/resource-name
# State.WAITING_FOR_RESOURCES

Solicitar que se asigne un recurso en cola antes o después de una hora especificada

Puedes especificar una hora de inicio o una hora de finalización opcionales en una solicitud de recurso en cola. La hora de inicio o la duración de inicio especifican la hora más temprana en la que se debe completar la solicitud. La hora o la duración de finalización especifican durante cuánto tiempo es válida la solicitud. Si una solicitud no se ha completado antes de la hora de finalización especificada o en el plazo indicado, caducará. Una vez que la solicitud haya caducado, permanecerá en la cola, pero ya no se podrá asignar.

También puedes especificar un intervalo de asignación indicando una hora o duración de inicio y una hora o duración de finalización.

Para ver una lista de los formatos de marca de tiempo y duración admitidos, consulta Fecha y hora.

Solicitar que se proporcione un recurso en cola después de un tiempo especificado

En una solicitud de recursos en cola, puedes especificar una hora o una duración después de la cual se debe asignar un recurso.

gcloud

El siguiente comando solicita que se asigne una TPU v5p-4096 después de las 9:00 del 14 de diciembre del 2022.

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-east5-a \
    --accelerator-type v5p-4096 \
    --runtime-version v2-alpha-tpuv5 \
    --valid-after-time 2022-12-14T09:00:00Z

Descripciones de los parámetros de los comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
valid-after-time
El tiempo transcurrido el cual se debe asignar el recurso. Para obtener más información sobre los formatos de duración, consulta el tema de fecha y hora de Google Cloud CLI.

curl

El siguiente comando solicita que se asigne una TPU v5p-4096 después de las 9:00 del 14 de diciembre del 2022.

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    'tpu': {
    'node_spec': {
        'parent': 'projects/your-project-number/locations/us-east5-a',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v5p-4096',
        'runtime_version': 'v2-alpha-tpuv5',
        }
    }
    },
    'queueing_policy': {
    'valid_after_time': {
        'seconds': 2022-12-14T09:00:00Z
    }
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-east5-a/queuedResources?queued_resource_id=your-queued-resource-id

Descripciones de los parámetros de los comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
valid-after-time
El tiempo transcurrido el cual se debe asignar el recurso. Para obtener más información sobre los formatos de duración, consulta el tema de fecha y hora de Google Cloud CLI.

Consola

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Name (Nombre), introduce un nombre para tu TPU.

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

  5. En el cuadro Tipo de TPU, selecciona un tipo de acelerador. El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores admitidos en cada versión de TPU, consulta Versiones de TPU.

  6. En el cuadro Versión de software de la TPU, selecciona una versión de software. Al crear una máquina virtual de TPU de Cloud, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se va a instalar. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el interruptor Habilitar colas.

  8. En el campo Queued resource name (Nombre del recurso en cola), introduce un nombre para tu solicitud de recurso en cola.

  9. En el campo Iniciar solicitud el, introduce la hora a partir de la cual se debe asignar el recurso.

  10. Haz clic en Crear para crear tu solicitud de recurso en cola.

En el siguiente ejemplo se solicita que se asigne un v5p-32 después de seis horas.

gcloud

    gcloud compute tpus queued-resources create your-queued-resource-id \
        --node-id your-node-id \
        --project your-project-id \
        --zone us-east5-a \
        --accelerator-type v5p-32 \
        --runtime-version v2-alpha-tpuv5 \
        --valid-after-duration 6h

Descripciones de los parámetros de los comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
valid-after-duration
La duración antes de la cual no se debe aprovisionar la TPU. Para obtener más información sobre los formatos de duración, consulta el tema de fecha y hora de Google Cloud CLI
.

curl

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    'tpu': {
    'node_spec': {
        'parent': 'projects/your-project-number/locations/us-east5-a',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v5p-32',
        'runtime_version': 'v2-alpha-tpuv5',
        }
    }
    },
'queueing_policy': {
    'valid_after_duration': {
        'seconds': 21600
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-east5-a/queuedResources?queued_resource_id=your-queued-resource-id

Descripciones de los parámetros de los comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
valid-after-duration
La duración antes de la cual no se debe aprovisionar la TPU. Para obtener más información sobre los formatos de duración, consulta el tema de fecha y hora de Google Cloud CLI
.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

import com.google.cloud.tpu.v2alpha1.CreateQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.Node;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import com.google.protobuf.Duration;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class CreateTimeBoundQueuedResource {

  public static void main(String[] args)
          throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "us-central2-b";
    // The name of your node.
    String nodeId = "YOUR_NODE_ID";
    // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
    // For more information about supported accelerator types for each TPU version,
    // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
    String acceleratorType = "v2-8";
    // Software version that specifies the version of the TPU runtime to install.
    // For more information see https://cloud.google.com/tpu/docs/runtimes
    String runtimeVersion = "v2-tpuv5-litepod";
    // The name of your Queued Resource.
    String queuedResourceId = "YOUR_QUEUED_RESOURCE_ID";

    createTimeBoundQueuedResource(projectId, nodeId,
        queuedResourceId, zone, acceleratorType, runtimeVersion);
  }

  // Creates a Queued Resource with time bound configuration.
  public static QueuedResource createTimeBoundQueuedResource(
      String projectId, String nodeId, String queuedResourceId,
      String zone, String acceleratorType, String runtimeVersion)
          throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      String parent = String.format("projects/%s/locations/%s", projectId, zone);
      // Create a Duration object representing 6 hours.
      Duration validAfterDuration = Duration.newBuilder().setSeconds(6 * 3600).build();
      // You could also use timestamps like this:
      // Timestamp validAfterTime = Timestamps.parse("2024-10-14T09:00:00Z");

      Node node =
          Node.newBuilder()
              .setName(nodeId)
              .setAcceleratorType(acceleratorType)
              .setRuntimeVersion(runtimeVersion)
              .setQueuedResource(
                  String.format(
                      "projects/%s/locations/%s/queuedResources/%s",
                      projectId, zone, queuedResourceId))
              .build();

      QueuedResource queuedResource =
          QueuedResource.newBuilder()
              .setName(queuedResourceId)
              .setTpu(
                  QueuedResource.Tpu.newBuilder()
                      .addNodeSpec(
                          QueuedResource.Tpu.NodeSpec.newBuilder()
                              .setParent(parent)
                              .setNode(node)
                              .setNodeId(nodeId)
                              .build())
                      .build())
              .setQueueingPolicy(
                  QueuedResource.QueueingPolicy.newBuilder()
                      .setValidAfterDuration(validAfterDuration)
                      // .setValidAfterTime(validAfterTime)
                      .build())
              .build();

      CreateQueuedResourceRequest request =
          CreateQueuedResourceRequest.newBuilder()
              .setParent(parent)
              .setQueuedResource(queuedResource)
              .setQueuedResourceId(queuedResourceId)
              .build();

      return tpuClient.createQueuedResourceAsync(request).get();
    }
  }
}

Solicitar un recurso en cola que caduque después de un tiempo especificado

En una solicitud de recursos en cola, puedes especificar cuánto tiempo sigue siendo válida. Si la solicitud no se ha completado en el momento o durante el periodo que especifiques, caducará.

gcloud

El siguiente comando solicita una TPU v5p-4096. Si la solicitud no se cumple antes del 14 de diciembre del 2022 a las 9:00, caducará.

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-east5-a \
    --accelerator-type v5p-4096 \
    --runtime-version v2-alpha-tpuv5 \
    --valid-until-time 2022-12-14T09:00:00Z

Descripciones de los parámetros de los comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El ID del proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
valid-until-time
Tiempo tras el cual se cancela la solicitud. Para obtener más información sobre los formatos de duración, consulta el tema sobre fecha y hora de Google Cloud CLI.

curl

El siguiente comando solicita una TPU v5p-4096. Si la solicitud no se cumple antes del 14 de diciembre del 2022 a las 9:00, caducará.

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    'tpu': {
    'node_spec': {
        'parent': 'projects/your-project-number/locations/us-east5-a',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v5p-4096',
        'runtime_version': 'v2-alpha-tpuv5',
        }
    }
    },
    'queueing_policy': {
    'valid_until_time': {
        'seconds': 1655197200
    }
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-east5-a/queuedResources?queued_resource_id=your-queued-resource-id

Descripciones de los parámetros de los comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El ID del proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
valid-until-time
Tiempo tras el cual se cancela la solicitud. Para obtener más información sobre los formatos de duración, consulta el tema sobre fecha y hora de Google Cloud CLI.

Consola

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Name (Nombre), introduce un nombre para tu TPU.

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

  5. En el cuadro Tipo de TPU, selecciona un tipo de acelerador. El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores admitidos para cada versión de TPU, consulta Versiones de TPU.

  6. En el cuadro Versión de software de la TPU, selecciona una versión de software. Al crear una máquina virtual de TPU de Cloud, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se va a instalar. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el interruptor Habilitar colas.

  8. En el campo Queued resource name (Nombre del recurso en cola), introduce un nombre para tu solicitud de recurso en cola.

  9. En el campo Cancelar solicitud el, introduce la hora en la que debe caducar la solicitud de recurso en cola si no se completa.

  10. Haz clic en Crear para crear tu solicitud de recurso en cola.

En el siguiente ejemplo se solicita una v5p-32. La solicitud caduca si no se rellena en seis horas.

gcloud

    gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-east5-a \
    --accelerator-type v5p-32 \
    --runtime-version v2-alpha-tpuv5 \
    --valid-until-duration 6h

Descripciones de los parámetros de los comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
valid-until-duration
El periodo de validez de la solicitud. Para obtener más información sobre los formatos de duración, consulta el tema sobre fecha y hora de la CLI de Google Cloud
.

curl

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    'tpu': {
    'node_spec': {
        'parent': 'projects/your-project-number/locations/us-east5-a',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v5p-32',
        'runtime_version': 'v2-alpha-tpuv5',
        }
    }
    },
'queueing_policy': {
    'valid_until_duration': {
        'seconds': 21600
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-east5-a/queuedResources?queued_resource_id=your-queued-resource-id

Descripciones de los parámetros de los comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
valid-until-duration
El periodo de validez de la solicitud. Para obtener más información sobre los formatos de duración, consulta el tema sobre fecha y hora de la CLI de Google Cloud
.

Python

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-a"
# tpu_name = "tpu-name"
# tpu_type = "v5litepod-4"
# runtime_version = "v2-tpuv5-litepod"
# queued_resource_name = "resource-name"

node = tpu_v2alpha1.Node()
node.accelerator_type = tpu_type
# To see available runtime version use command:
# gcloud compute tpus versions list --zone={ZONE}
node.runtime_version = runtime_version

node_spec = tpu_v2alpha1.QueuedResource.Tpu.NodeSpec()
node_spec.parent = f"projects/{project_id}/locations/{zone}"
node_spec.node_id = tpu_name
node_spec.node = node

resource = tpu_v2alpha1.QueuedResource()
resource.tpu = tpu_v2alpha1.QueuedResource.Tpu(node_spec=[node_spec])

# Use one of the following queueing policies
resource.queueing_policy = tpu_v2alpha1.QueuedResource.QueueingPolicy(
    # valid_after_duration = "6000s", # Duration after which a resource should be allocated
    valid_until_duration="90s",  # Specify how long a queued resource request remains valid
    # valid_after_time="2024-10-31T09:00:00Z", # Specify a time after which a resource should be allocated
    # valid_until_time="2024-10-29T16:00:00Z",  # Specify a time before which the resource should be allocated
)

request = tpu_v2alpha1.CreateQueuedResourceRequest(
    parent=f"projects/{project_id}/locations/{zone}",
    queued_resource_id=queued_resource_name,
    queued_resource=resource,
)

client = tpu_v2alpha1.TpuClient()
operation = client.create_queued_resource(request=request)

response = operation.result()
print(resource.queueing_policy)
print(response.queueing_policy.valid_until_time)
# Example response:
# valid_until_duration {
#   seconds: 90
# }
# 2024-10-29 14:22:53.562090+00:00

Solicitar que se asigne un recurso en cola en un intervalo específico

Puedes especificar un intervalo de asignación indicando la hora o la duración de inicio, así como la hora o la duración de finalización.

gcloud

El siguiente comando solicita un v5p-32 en 5 horas y 30 minutos a partir de la hora actual, que se creará a más tardar el 14 de diciembre del 2022 a las 9:00.

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-east5-a \
    --accelerator-type v5p-32 \
    --runtime-version v2-alpha-tpuv5 \
    --valid-after-duration 5h30m \
    --valid-until-time 2022-12-14T09:00:00Z

Descripciones de marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El ID del proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
valid-until-time
Tiempo tras el cual se cancela la solicitud. Para obtener más información sobre los formatos de duración, consulta el tema sobre fecha y hora de Google Cloud CLI.
valid-after-duration
La duración antes de la cual no se debe aprovisionar la TPU. Para obtener más información sobre los formatos de duración, consulta el tema sobre fecha y hora de Google Cloud CLI.

curl

El siguiente comando solicita un v5p-32 en 5 horas y 30 minutos a partir de la hora actual, que se creará a más tardar el 14 de diciembre del 2022 a las 9:00.

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    'tpu': {
    'node_spec': {
        'parent': 'projects/your-project-number/locations/us-east5-a',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v5p-32',
        'runtime_version': 'v2-alpha-tpuv5',
        }
    }
    },
'queueing_policy': {
    'validInterval': {
        'startTime': '2022-12-10T14:30:00Z',
        'endTime': '2022-12-14T09:00:00Z'
    }
    },
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-east5-a/queuedResources?queued_resource_id=your-queued-resource-id

Descripciones de marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El ID del proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
valid-until-timw
Tiempo tras el cual se cancela la solicitud. Para obtener más información sobre los formatos de duración, consulta el tema sobre fecha y hora de Google Cloud CLI.
valid-until-duration
El periodo de validez de la solicitud. Para obtener más información sobre los formatos de duración, consulta el tema sobre fecha y hora de Google Cloud CLI.

Consola

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Name (Nombre), introduce un nombre para tu TPU.

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

  5. En el cuadro Tipo de TPU, selecciona un tipo de acelerador. El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores admitidos para cada versión de TPU, consulta Versiones de TPU.

  6. En el cuadro Versión de software de la TPU, selecciona una versión de software. Al crear una máquina virtual de TPU de Cloud, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se va a instalar. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el interruptor Habilitar colas.

  8. En el campo Queued resource name (Nombre del recurso en cola), introduce un nombre para tu solicitud de recurso en cola.

  9. En el campo Iniciar solicitud el, introduce la hora a partir de la cual se debe asignar el recurso.

  10. En el campo Cancelar solicitud el, introduce la hora en la que debe caducar la solicitud de recurso en cola si no se completa.

  11. Haz clic en Crear para crear tu solicitud de recurso en cola.

Solicitar un recurso en cola con una secuencia de comandos de inicio

Puedes especificar una secuencia de comandos que se ejecute en un recurso en cola después de que se haya aprovisionado.

gcloud

Cuando usas el comando gcloud, puedes usar la marca --metadata o --metadata-from-file para especificar un comando de secuencia de comandos o un archivo que contenga el código de la secuencia de comandos, respectivamente. En el siguiente ejemplo se crea una solicitud de recurso en cola que ejecutará la secuencia de comandos startup-script.sh.

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-central1-a \
    --accelerator-type v5litepod-8 \
    --runtime-version v2-alpha-tpuv5-lite \
    --metadata-from-file='startup-script=startup-script.sh'

Descripciones de marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El ID del proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
validInterval
El periodo durante el cual la solicitud es válida. Una vez transcurrido, se cancela. Para obtener más información sobre los formatos de duración, consulta el tema sobre fecha y hora de Google Cloud CLI.
metadata-from-file
Especifica un archivo que contiene metadatos. Si no especifica una ruta completa al archivo de metadatos, el comando asume que se encuentra en el directorio actual. En este ejemplo, el archivo contiene una secuencia de comandos de inicio que se ejecuta cuando se aprovisiona el recurso en cola.
metadata
Especifica los metadatos de la solicitud. En este ejemplo, los metadatos son un comando de secuencia de comandos de inicio que se ejecuta cuando se aprovisiona el recurso en cola.

curl

Cuando se usa curl, debe incluir el código de la secuencia de comandos en el contenido JSON. En el siguiente ejemplo se incluye una secuencia de comandos insertada en el cuerpo JSON.

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    tpu: {
        node_spec: {
        parent: 'projects/your-project-number/locations/us-central1-a',
        node_id: 'your-node-id',
        node: {
            accelerator_type: 'v5e-8',
            runtime_version: 'v2-alpha-tpuv5-lite',
            metadata: {
                "startup-script": "#! /bin/bash\npwd > /tmp/out.txt\nwhoami >> /tmp/out.txt"
            }
        }
        }
    },
'queueing_policy': {
    'validInterval': {
        'startTime': '2022-12-10T14:30:00Z',
        'endTime': '2022-12-14T09:00:00Z'
    }
    },
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central1-a/queuedResources?queued_resource_id=your-queued-resource-id

Descripciones de marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
El ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
El ID del proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
validInterval
El periodo durante el cual la solicitud es válida. Una vez transcurrido, se cancela. Para obtener más información sobre los formatos de duración, consulta el tema sobre fecha y hora de Google Cloud CLI.
metadata-from-file
Especifica un archivo que contiene metadatos. Si no especifica una ruta completa al archivo de metadatos, el comando asume que se encuentra en el directorio actual. En este ejemplo, el archivo contiene una secuencia de comandos de inicio que se ejecuta cuando se aprovisiona el recurso en cola.
metadata
Especifica los metadatos de la solicitud. En este ejemplo, los metadatos son un comando de secuencia de comandos de inicio que se ejecuta cuando se aprovisiona el recurso en cola.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

import com.google.cloud.tpu.v2alpha1.CreateQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.Node;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutionException;

public class CreateQueuedResourceWithStartupScript {
  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "us-central1-a";
    // The name for your TPU.
    String nodeName = "YOUR_TPU_NAME";
    // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
    // For more information about supported accelerator types for each TPU version,
    // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
    String tpuType = "v5litepod-4";
    // Software version that specifies the version of the TPU runtime to install.
    // For more information see https://cloud.google.com/tpu/docs/runtimes
    String tpuSoftwareVersion = "v2-tpuv5-litepod";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    createQueuedResource(projectId, zone, queuedResourceId, nodeName,
        tpuType, tpuSoftwareVersion);
  }

  // Creates a Queued Resource with startup script.
  public static QueuedResource createQueuedResource(
      String projectId, String zone, String queuedResourceId,
      String nodeName, String tpuType, String tpuSoftwareVersion)
      throws IOException, ExecutionException, InterruptedException {
    String parent = String.format("projects/%s/locations/%s", projectId, zone);
    String startupScriptContent = "#!/bin/bash\necho \"Hello from the startup script!\"";
    // Add startup script to metadata
    Map<String, String> metadata = new HashMap<>();
    metadata.put("startup-script", startupScriptContent);
    String queuedResourceForTpu =  String.format("projects/%s/locations/%s/queuedResources/%s",
            projectId, zone, queuedResourceId);
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      Node node =
          Node.newBuilder()
              .setName(nodeName)
              .setAcceleratorType(tpuType)
              .setRuntimeVersion(tpuSoftwareVersion)
              .setQueuedResource(queuedResourceForTpu)
              .putAllMetadata(metadata)
              .build();

      QueuedResource queuedResource =
          QueuedResource.newBuilder()
              .setName(queuedResourceId)
              .setTpu(
                  QueuedResource.Tpu.newBuilder()
                      .addNodeSpec(
                          QueuedResource.Tpu.NodeSpec.newBuilder()
                              .setParent(parent)
                              .setNode(node)
                              .setNodeId(nodeName)
                              .build())
                      .build())
              .build();

      CreateQueuedResourceRequest request =
          CreateQueuedResourceRequest.newBuilder()
              .setParent(parent)
              .setQueuedResourceId(queuedResourceId)
              .setQueuedResource(queuedResource)
              .build();
      // You can wait until TPU Node is READY,
      // and check its status using getTpuVm() from "tpu_vm_get" sample.

      return tpuClient.createQueuedResourceAsync(request).get();
    }
  }
}

Python

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-a"
# tpu_name = "tpu-name"
# tpu_type = "v5litepod-4"
# runtime_version = "v2-tpuv5-litepod"
# queued_resource_name = "resource-name"

node = tpu_v2alpha1.Node()
node.accelerator_type = tpu_type
# To see available runtime version use command:
# gcloud compute tpus versions list --zone={ZONE}
node.runtime_version = runtime_version
# This startup script updates numpy to the latest version and logs the output to a file.
script = {
    "startup-script": """#!/bin/bash
echo "Hello World" > /var/log/hello.log
sudo pip3 install --upgrade numpy >> /var/log/hello.log 2>&1
"""
}
node.metadata = script
# Enabling external IPs for internet access from the TPU node for updating numpy
node.network_config = tpu_v2alpha1.NetworkConfig(
    enable_external_ips=True,
)

node_spec = tpu_v2alpha1.QueuedResource.Tpu.NodeSpec()
node_spec.parent = f"projects/{project_id}/locations/{zone}"
node_spec.node_id = tpu_name
node_spec.node = node

resource = tpu_v2alpha1.QueuedResource()
resource.tpu = tpu_v2alpha1.QueuedResource.Tpu(node_spec=[node_spec])

request = tpu_v2alpha1.CreateQueuedResourceRequest(
    parent=f"projects/{project_id}/locations/{zone}",
    queued_resource_id=queued_resource_name,
    queued_resource=resource,
)

client = tpu_v2alpha1.TpuClient()
operation = client.create_queued_resource(request=request)

response = operation.result()
print(response.name)
print(response.tpu.node_spec[0].node.metadata)
# Example response:
# projects/[project_id]/locations/[zone]/queuedResources/resource-name
# {'startup-script': '#!/bin/bash\n    echo "Hello World" > /var/log/hello.log\n
# sudo pip3 install --upgrade numpy >> /var/log/hello.log 2>&1\n    '}

Solicitar un recurso en cola con una red y una subred especificadas

En una solicitud de recurso en cola, puedes especificar una red y una subred a las que quieras conectar tu TPU.

gcloud

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-central1-a \
    --accelerator-type v5e-8 \
    --runtime-version v2-alpha-tpuv5-lite \
    --network network-name \
    --subnetwork subnetwork-name

Descripciones de los parámetros de los comandos

queued-resource-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID asignado por el usuario de la TPU que se crea cuando se asigna la solicitud de recurso en cola.
project
Tu Google Cloud proyecto.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
reserved
Usa esta marca cuando solicites recursos en cola como parte de una reserva de TPU de Cloud.
network
Una red de la que formará parte el recurso en cola.
subnetwork
Una subred de la que formará parte el recurso en cola.

curl

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    'tpu': {
    'node_spec': {
        'parent': 'projects/your-project-number/locations/us-central1-a',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v5e-8',
        'runtime_version': 'v2-alpha-tpuv5-lite',
        'network_config': {
            'network': 'network-name',
            'subnetwork': 'subnetwork-name',
            'enable_external_ips': true
        }
    }
    },
    'guaranteed': {
    'reserved': true,
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central1-a/queuedResources?queued_resource_id=your-queued-resource-id

Descripciones de los parámetros de los comandos

queued-resource-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID asignado por el usuario de la TPU que se crea cuando se asigna la solicitud de recurso en cola.
project
Tu Google Cloud proyecto.
zone
La zona en la que quieres crear tu TPU de Cloud.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
runtime-version
La versión del software de TPU de Cloud.
reserved
Usa esta marca cuando solicites recursos en cola como parte de una reserva de TPU de Cloud.
network
Una red de la que formará parte el recurso en cola.
subnetwork
Una subred de la que formará parte el recurso en cola.

Consola

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Name (Nombre), introduce un nombre para tu TPU.

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

  5. En el cuadro Tipo de TPU, selecciona un tipo de acelerador. El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores admitidos para cada versión de TPU, consulta Versiones de TPU.

  6. En el cuadro Versión de software de la TPU, selecciona una versión de software. Al crear una máquina virtual de TPU de Cloud, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se va a instalar. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el interruptor Habilitar colas.

  8. En el campo Queued resource name (Nombre del recurso en cola), introduce un nombre para tu solicitud de recurso en cola.

  9. Despliega la sección Red.

  10. En los campos Red y Subred, selecciona la red y la subred que quieras usar.

  11. Haz clic en Crear para crear tu solicitud de recurso en cola.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

import com.google.api.gax.retrying.RetrySettings;
import com.google.cloud.tpu.v2alpha1.CreateQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.NetworkConfig;
import com.google.cloud.tpu.v2alpha1.Node;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import com.google.cloud.tpu.v2alpha1.TpuSettings;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import org.threeten.bp.Duration;

public class CreateQueuedResourceWithNetwork {
  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "europe-west4-a";
    // The name for your TPU.
    String nodeName = "YOUR_TPU_NAME";
    // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
    // For more information about supported accelerator types for each TPU version,
    // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
    String tpuType = "v5litepod-4";
    // Software version that specifies the version of the TPU runtime to install.
    // For more information see https://cloud.google.com/tpu/docs/runtimes
    String tpuSoftwareVersion = "v2-tpuv5-litepod";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";
    // The name of the network you want the node to connect to.
    // The network should be assigned to your project.
    String networkName = "YOUR_COMPUTE_TPU_NETWORK";

    createQueuedResourceWithNetwork(projectId, zone, queuedResourceId, nodeName,
        tpuType, tpuSoftwareVersion, networkName);
  }

  // Creates a Queued Resource with network configuration.
  public static QueuedResource createQueuedResourceWithNetwork(
      String projectId, String zone, String queuedResourceId, String nodeName,
      String tpuType, String tpuSoftwareVersion, String networkName)
      throws IOException, ExecutionException, InterruptedException {
    // With these settings the client library handles the Operation's polling mechanism
    // and prevent CancellationException error
    TpuSettings.Builder clientSettings =
        TpuSettings.newBuilder();
    clientSettings
        .createQueuedResourceSettings()
        .setRetrySettings(
            RetrySettings.newBuilder()
                .setInitialRetryDelay(Duration.ofMillis(5000L))
                .setRetryDelayMultiplier(2.0)
                .setInitialRpcTimeout(Duration.ZERO)
                .setRpcTimeoutMultiplier(1.0)
                .setMaxRetryDelay(Duration.ofMillis(45000L))
                .setTotalTimeout(Duration.ofHours(24L))
                .build());
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create(clientSettings.build())) {
      String parent = String.format("projects/%s/locations/%s", projectId, zone);
      String region = zone.substring(0, zone.length() - 2);

      // Specify the network and subnetwork that you want to connect your TPU to.
      NetworkConfig networkConfig =
          NetworkConfig.newBuilder()
              .setEnableExternalIps(true)
              .setNetwork(String.format("projects/%s/global/networks/%s", projectId, networkName))
              .setSubnetwork(
                  String.format(
                      "projects/%s/regions/%s/subnetworks/%s", projectId, region, networkName))
              .build();

      // Create a node
      Node node =
          Node.newBuilder()
              .setName(nodeName)
              .setAcceleratorType(tpuType)
              .setRuntimeVersion(tpuSoftwareVersion)
              .setNetworkConfig(networkConfig)
              .setQueuedResource(
                  String.format(
                      "projects/%s/locations/%s/queuedResources/%s",
                      projectId, zone, queuedResourceId))
              .build();

      // Create queued resource
      QueuedResource queuedResource =
          QueuedResource.newBuilder()
              .setName(queuedResourceId)
              .setTpu(
                  QueuedResource.Tpu.newBuilder()
                      .addNodeSpec(
                          QueuedResource.Tpu.NodeSpec.newBuilder()
                              .setParent(parent)
                              .setNode(node)
                              .setNodeId(nodeName)
                              .build())
                      .build())
              .build();

      CreateQueuedResourceRequest request =
          CreateQueuedResourceRequest.newBuilder()
              .setParent(parent)
              .setQueuedResource(queuedResource)
              .setQueuedResourceId(queuedResourceId)
              .build();

      // You can wait until TPU Node is READY,
      // and check its status using getTpuVm() from "tpu_vm_get" sample.

      return tpuClient.createQueuedResourceAsync(request).get();
    }
  }
}

Python

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-a"
# tpu_name = "tpu-name"
# tpu_type = "v5litepod-4"
# runtime_version = "v2-tpuv5-litepod"
# queued_resource_name = "resource-name"
# network = "default"

node = tpu_v2alpha1.Node()
node.accelerator_type = tpu_type
node.runtime_version = runtime_version
# Setting network configuration
node.network_config = tpu_v2alpha1.NetworkConfig(
    network=network,  # Update if you want to use a specific network
    subnetwork="default",  # Update if you want to use a specific subnetwork
    enable_external_ips=True,
    can_ip_forward=True,
)

node_spec = tpu_v2alpha1.QueuedResource.Tpu.NodeSpec()
node_spec.parent = f"projects/{project_id}/locations/{zone}"
node_spec.node_id = tpu_name
node_spec.node = node

resource = tpu_v2alpha1.QueuedResource()
resource.tpu = tpu_v2alpha1.QueuedResource.Tpu(node_spec=[node_spec])

request = tpu_v2alpha1.CreateQueuedResourceRequest(
    parent=f"projects/{project_id}/locations/{zone}",
    queued_resource_id=queued_resource_name,
    queued_resource=resource,
)

client = tpu_v2alpha1.TpuClient()
operation = client.create_queued_resource(request=request)

response = operation.result()
print(response.name)
print(response.tpu.node_spec[0].node.network_config)
print(resource.tpu.node_spec[0].node.network_config.network == "default")
# Example response:
# network: "default"
# subnetwork: "default"
# enable_external_ips: true
# can_ip_forward: true

Eliminar una solicitud de recurso en cola

Puedes eliminar una solicitud de recurso en cola y la TPU asociada a la solicitud eliminando la solicitud de recurso en cola:

gcloud

Pasa la marca --force al comando queued-resource delete:

gcloud compute tpus queued-resources delete your-queued-resource-id \
    --project your-project-id \
    --zone us-central1-a \
    --force \
    --async

Descripciones de marcas de comandos

your-queued-resource-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona de la TPU de Cloud que se va a eliminar.
force
Elimina tanto la VM de TPU como la solicitud de recurso en cola.

curl

Usa el parámetro de consulta force=true en tu solicitud curl:

curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://tpu.googleapis.com/v2/projects/your-project-id/locations/us-central1-a/queuedResources/your-queued-resource-id?force=true

Descripciones de marcas de comandos

your-queued-resource-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona de la TPU de Cloud que se va a eliminar.
force
Elimina tanto la VM de TPU como la solicitud de recurso en cola.

Consola

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

    Ir a TPUs

  2. Haz clic en la pestaña Recursos en cola.

  3. Seleccione la casilla situada junto a la solicitud de recursos en cola.

  4. Haz clic en Eliminar.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

import com.google.api.gax.retrying.RetrySettings;
import com.google.cloud.tpu.v2alpha1.DeleteQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import com.google.cloud.tpu.v2alpha1.TpuSettings;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import org.threeten.bp.Duration;

public class DeleteForceQueuedResource {
  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which the TPU was created.
    String zone = "us-central1-f";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    deleteForceQueuedResource(projectId, zone, queuedResourceId);
  }

  // Deletes a Queued Resource asynchronously with --force flag.
  public static void deleteForceQueuedResource(
      String projectId, String zone, String queuedResourceId)
          throws ExecutionException, InterruptedException, IOException {
    String name = String.format("projects/%s/locations/%s/queuedResources/%s",
        projectId, zone, queuedResourceId);
    // With these settings the client library handles the Operation's polling mechanism
    // and prevent CancellationException error
    TpuSettings.Builder clientSettings =
        TpuSettings.newBuilder();
    clientSettings
        .deleteQueuedResourceSettings()
        .setRetrySettings(
            RetrySettings.newBuilder()
                .setInitialRetryDelay(Duration.ofMillis(5000L))
                .setRetryDelayMultiplier(2.0)
                .setInitialRpcTimeout(Duration.ZERO)
                .setRpcTimeoutMultiplier(1.0)
                .setMaxRetryDelay(Duration.ofMillis(45000L))
                .setTotalTimeout(Duration.ofHours(24L))
                .build());

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create(clientSettings.build())) {
      DeleteQueuedResourceRequest request =
          DeleteQueuedResourceRequest.newBuilder().setName(name).setForce(true).build();
      // Waiting for updates in the library. Until then, the operation will complete successfully,
      // but the user will receive an error message with UnknownException and IllegalStateException.
      tpuClient.deleteQueuedResourceAsync(request).get();

      System.out.printf("Deleted Queued Resource: %s\n", name);
    }
  }
}

Python

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-b"
# queued_resource_name = "resource-name"

client = tpu_v2alpha1.TpuClient()
request = tpu_v2alpha1.DeleteQueuedResourceRequest(
    name=f"projects/{project_id}/locations/{zone}/queuedResources/{queued_resource_name}",
    force=True,  # Set force=True to delete the resource with tpu nodes.
)

try:
    op = client.delete_queued_resource(request=request)
    op.result()
    print(f"Queued resource '{queued_resource_name}' successfully deleted.")
except TypeError as e:
    print(f"Error deleting resource: {e}")
    print(f"Queued resource '{queued_resource_name}' successfully deleted.")

Si eliminas la TPU directamente, también debes eliminar el recurso en cola, tal como se muestra en el siguiente ejemplo. Cuando eliminas la TPU, la solicitud de recurso en cola pasa al estado SUSPENDED, tras lo cual se puede eliminar.

gcloud

Elimina la TPU:

$ gcloud compute tpus tpu-vm delete your-node-id \
    --project=your-project-id \
    --zone=us-central1-a \
    --quiet

Descripciones de marcas de comandos

project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona de la TPU de Cloud que se va a eliminar.
your-node-id
Nombre de la TPU que quieres eliminar.

Cuando eliminas tu TPU, el recurso en cola asociado pasa al estado SUSPENDING y, después, al estado SUSPENDED. Cuando el recurso en cola esté en estado SUSPENDED, puedes eliminarlo:

gcloud compute tpus queued-resources delete your-queued-resource-id \
    --project your-project-id \
    --zone us-central1-a

Descripciones de marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona de la TPU de Cloud que se va a eliminar.

curl

Elimina la TPU:

curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://tpu.googleapis.com/v2/projects/your-project/locations/us-central1-a/nodes?node_id=your-node-id

Descripciones de marcas de comandos

project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona de la TPU de Cloud que se va a eliminar.
your-node-id
Nombre de la TPU que quieres eliminar.

Cuando eliminas tu TPU, el recurso en cola asociado pasa al estado SUSPENDING y, después, al estado SUSPENDED. Cuando el recurso en cola esté en estado SUSPENDED, puedes eliminarlo:

curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://tpu.googleapis.com/v2/projects/your-project-id/locations/us-central1-a/queuedResources/your-queued-resource-id

Descripciones de marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona de la TPU de Cloud que se va a eliminar.

Consola

Elimina tu TPU:

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

    Ir a TPUs

  2. Seleccione la casilla situada junto a su TPU.

  3. Haz clic en Eliminar.

Cuando eliminas tu TPU, el recurso en cola asociado pasa al estado Suspending (Suspendiendo) y, después, al estado Suspended (Suspendido). Si el recurso en cola tiene el estado Suspendido, puedes eliminarlo:

  1. Haz clic en la pestaña Recursos en cola.
  2. Seleccione la casilla situada junto a la solicitud de recursos en cola.
  3. Haz clic en Eliminar.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
import com.google.api.gax.retrying.RetrySettings;
import com.google.cloud.tpu.v2.DeleteNodeRequest;
import com.google.cloud.tpu.v2.NodeName;
import com.google.cloud.tpu.v2.TpuClient;
import com.google.cloud.tpu.v2.TpuSettings;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import org.threeten.bp.Duration;

public class DeleteTpuVm {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "europe-west4-a";
    // The name for your TPU.
    String nodeName = "YOUR_TPU_NAME";

    deleteTpuVm(projectId, zone, nodeName);
  }

  // Deletes a TPU VM with the specified name in the given project and zone.
  public static void deleteTpuVm(String projectId, String zone, String nodeName)
      throws IOException, ExecutionException, InterruptedException {
    // With these settings the client library handles the Operation's polling mechanism
    // and prevent CancellationException error
    TpuSettings.Builder clientSettings =
        TpuSettings.newBuilder();
    clientSettings
        .deleteNodeOperationSettings()
        .setPollingAlgorithm(
            OperationTimedPollAlgorithm.create(
                RetrySettings.newBuilder()
                    .setInitialRetryDelay(Duration.ofMillis(5000L))
                    .setRetryDelayMultiplier(1.5)
                    .setMaxRetryDelay(Duration.ofMillis(45000L))
                    .setInitialRpcTimeout(Duration.ZERO)
                    .setRpcTimeoutMultiplier(1.0)
                    .setMaxRpcTimeout(Duration.ZERO)
                    .setTotalTimeout(Duration.ofHours(24L))
                    .build()));

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create(clientSettings.build())) {
      String name = NodeName.of(projectId, zone, nodeName).toString();

      DeleteNodeRequest request = DeleteNodeRequest.newBuilder().setName(name).build();

      tpuClient.deleteNodeAsync(request).get();
      System.out.println("TPU VM deleted");
    }
  }
}

Cuando eliminas tu TPU, el recurso en cola asociado pasa al estado SUSPENDING y, después, al estado SUSPENDED. Cuando el recurso en cola esté en estado SUSPENDED, puedes eliminarlo:

import com.google.cloud.tpu.v2alpha1.DeleteQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class DeleteQueuedResource {
  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which the TPU was created.
    String zone = "us-central1-f";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    deleteQueuedResource(projectId, zone, queuedResourceId);
  }

  // Deletes a Queued Resource asynchronously.
  public static void deleteQueuedResource(String projectId, String zone, String queuedResourceId)
      throws ExecutionException, InterruptedException, IOException {
    String name = String.format("projects/%s/locations/%s/queuedResources/%s",
        projectId, zone, queuedResourceId);
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      // Before deleting the queued resource it is required to delete the TPU VM.
      // For more information about deleting TPU
      // see https://cloud.google.com/tpu/docs/managing-tpus-tpu-vm

      DeleteQueuedResourceRequest request =
              DeleteQueuedResourceRequest.newBuilder().setName(name).build();

      tpuClient.deleteQueuedResourceAsync(request).get();
    }
  }
}

Python

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import tpu_v2

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-b"
# tpu_name = "tpu-name"

client = tpu_v2.TpuClient()
try:
    client.delete_node(
        name=f"projects/{project_id}/locations/{zone}/nodes/{tpu_name}"
    )
    print("The TPU node was deleted.")
except Exception as e:
    print(e)

Cuando eliminas tu TPU, el recurso en cola asociado pasa al estado SUSPENDING y, después, al estado SUSPENDED. Cuando el recurso en cola esté en estado SUSPENDED, puedes eliminarlo:

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-b"
# queued_resource_name = "resource-name"

client = tpu_v2alpha1.TpuClient()
name = (
    f"projects/{project_id}/locations/{zone}/queuedResources/{queued_resource_name}"
)

try:
    op = client.delete_queued_resource(name=name)
    op.result()
    print(f"Queued resource '{queued_resource_name}' successfully deleted.")
except TypeError as e:
    print(f"Error deleting resource: {e}")
    print(f"Queued resource '{queued_resource_name}' successfully deleted.")

Obtener información de estado y de diagnóstico sobre una solicitud de recurso en cola

Recupera el estado y la información de diagnóstico de una solicitud de recurso en cola:

gcloud

gcloud compute tpus queued-resources describe queued-resource-request-id \
    --project your-project-id \
    --zone us-central1-a

Descripciones de marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
project
El ID del proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.

curl

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://tpu.googleapis.com/v2/projects/your-project-id/locations/us-central1-a/queuedResources/your-queued-resource-id

Descripciones de marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
project
El ID del proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.

Consola

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

    Ir a TPUs

  2. Haz clic en la pestaña Recursos en cola.

  3. Haga clic en el nombre de la solicitud de recurso en cola.

Una vez que se haya aprovisionado tu TPU, también puedes ver los detalles de tu solicitud de recurso en cola. Para ello, ve a la página TPUs (TPUs), busca tu TPU y haz clic en el nombre de la solicitud de recurso en cola correspondiente.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

import com.google.cloud.tpu.v2alpha1.GetQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import java.io.IOException;

public class GetQueuedResource {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which the TPU was created.
    String zone = "us-central1-f";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    getQueuedResource(projectId, zone, queuedResourceId);
  }

  // Get a Queued Resource.
  public static QueuedResource getQueuedResource(
      String projectId, String zone, String queuedResourceId) throws IOException {
    String name = String.format("projects/%s/locations/%s/queuedResources/%s",
        projectId, zone, queuedResourceId);
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      GetQueuedResourceRequest request =
          GetQueuedResourceRequest.newBuilder().setName(name).build();

      return tpuClient.getQueuedResource(request);
    }
  }
}

Python

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-b"
# queued_resource_name = "resource-name"

client = tpu_v2alpha1.TpuClient()
name = (
    f"projects/{project_id}/locations/{zone}/queuedResources/{queued_resource_name}"
)
resource = client.get_queued_resource(name=name)
print("Resource name:", resource.name)
print(resource.state)
# Example response:
# Resource name: projects/{project_id}/locations/{zone}/queuedResources/resource-name
# State.ACTIVE

Si la solicitud falla, la salida contendrá información sobre el error. En el caso de una solicitud que está esperando recursos, el resultado tiene un aspecto similar al siguiente:

gcloud

    name: projects/your-project-id/locations/us-central1-a/queuedResources/your-queued-resource-id
    state:
    state: WAITING_FOR_RESOURCES
    tpu:
    nodeSpec:
    - node:
        acceleratorType: v4-8
        bootDisk: {}
        networkConfig:
            enableExternalIps: true
        queuedResource: projects/your-project-number/locations/us-central1-a/queuedResources/your-queued-resource-id
        runtimeVersion: v2-alpha-tpuv5-lite
        schedulingConfig: {}
        serviceAccount: {}
        shieldedInstanceConfig: {}
        useTpuVm: true
        nodeId: your-node-id
        parent: projects/your-project-number/locations/us-central1-a

Consola

En el campo Estado de recurso en cola se muestra el valor Esperando recursos.

Mostrar las solicitudes de recursos en cola de tu proyecto

Lista las solicitudes de recursos en cola de tu proyecto:

gcloud

gcloud compute tpus queued-resources list --project your-project-id \
    --zone us-central1-a

Descripciones de marcas de comandos

project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.

curl

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://tpu.googleapis.com/v2/projects/your-project-id/locations/your-zone/queuedResources

Descripciones de marcas de comandos

project
El Google Cloud proyecto en el que se asigna el recurso en cola.
zone
La zona en la que quieres crear tu TPU de Cloud.

Consola

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

    Ir a TPUs

  2. Haz clic en la pestaña Recursos en cola.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

import com.google.cloud.tpu.v2alpha1.ListQueuedResourcesRequest;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import com.google.cloud.tpu.v2alpha1.TpuClient.ListQueuedResourcesPage;
import java.io.IOException;

public class ListQueuedResources {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which the TPU was created.
    String zone = "us-central1-a";

    listQueuedResources(projectId, zone);
  }

  // List Queued Resources.
  public static ListQueuedResourcesPage listQueuedResources(
      String projectId, String zone) throws IOException {
    String parent = String.format("projects/%s/locations/%s", projectId, zone);
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      ListQueuedResourcesRequest request =
          ListQueuedResourcesRequest.newBuilder().setParent(parent).build();
      ListQueuedResourcesPage response =  tpuClient.listQueuedResources(request).getPage();

      for (QueuedResource queuedResource : response.iterateAll()) {
        System.out.println(queuedResource.getName());
      }
      return response;
    }
  }
}

Python

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-b"

client = tpu_v2alpha1.TpuClient()
parent = f"projects/{project_id}/locations/{zone}"
resources = client.list_queued_resources(parent=parent)
for resource in resources:
    print("Resource name:", resource.name)
    print("TPU id:", resource.tpu.node_spec[0].node_id)
# Example response:
# Resource name: projects/{project_id}/locations/{zone}/queuedResources/resource-name
# TPU id: tpu-name