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 completado 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 libres 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, puedes 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, ya sea porque hay un problema con la solicitud o porque los recursos solicitados no estaban disponibles en el intervalo de asignación. La solicitud permanece en la cola hasta que se elimina de forma explícita.
  • 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: ID asignado por el usuario de la solicitud de recurso en cola.
  • node-id: 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 tienes previsto 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: ID asignado por el usuario de la solicitud de recurso en cola.
  • node-id: 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 tienes previsto 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 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 TPU, selecciona una versión de software. Cuando creas 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)