Administra recursos en cola

Los recursos en cola te permiten solicitar recursos de Cloud TPU en colas. Cuando solicitas recursos en cola, la solicitud se agrega a una cola que mantiene el servicio de Cloud TPU. Cuando el recurso solicitado esté disponible, se asignará a tu proyecto Google Cloud para que lo uses de inmediato y de forma exclusiva. Permanecerá asignada a tu proyecto, a menos que la borres o se interrumpa. Solo las VMs de TPU Spot y las TPU interrumpibles son aptas para la interrupción.

Puedes especificar una hora de inicio y finalización opcional en una solicitud de recursos en cola. La hora de inicio especifica la hora más temprana en la que se puede completar la solicitud. Si una solicitud no se completa antes de la hora de finalización especificada, vence. La solicitud permanece en la cola después de que vence.

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

WAITING_FOR_RESOURCES
La solicitud pasó la validación inicial y se agregó a la cola. Permanece en este estado hasta que haya suficientes recursos libres para comenzar 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 una mayor confiabilidad en la obtención de las TPU, considera comprar una reserva.
PROVISIONING
Se seleccionó la solicitud de la cola y se están asignando sus recursos.
ACTIVE
Se asignó la solicitud. Cuando las solicitudes de recursos en cola están en el estado ACTIVE, puedes administrar tus VMs de TPU como se describe en Administra TPUs.
FAILED
No se pudo completar la solicitud, ya sea porque hay un problema con ella o porque los recursos solicitados no estaban disponibles dentro del intervalo de asignación. La solicitud permanecerá en la fila hasta que se borre de forma explícita.
SUSPENDING
Se están borrando los recursos asociados con la solicitud.
SUSPENDED
Se borraron los recursos especificados en la solicitud. Cuando una solicitud se encuentra en el estado SUSPENDED, ya no es apta para una asignación adicional.

Requisitos previos

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

Si usas una de las bibliotecas cliente de Cloud, sigue las instrucciones de configuración para el lenguaje que usas:

Solicita un recurso en cola a pedido

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

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 comando

queued-resource-id
Es el 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
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.

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 comando

queued-resource-id
Es el 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
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.

Console

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Nombre, ingresa un nombre para tu TPU.

  4. En el cuadro Zona, selecciona la zona en la que deseas 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 Cloud TPU que deseas crear. Para obtener más información sobre los tipos de aceleradores compatibles con 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 VM de Cloud TPU, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se instalará. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el botón de activación Habilitar la cola.

  8. En el campo Nombre del recurso en cola, ingresa un nombre para tu solicitud de recurso en cola.

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

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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. Si deseas obtener más información, consulta Configura la autenticación para 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

Solicita un recurso en cola con una reserva

Puedes solicitar un recurso en cola con una reserva. Para comprar una reserva, comunícate con tu equipo de cuentas de Google Cloud .

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 comando

queued-resource-id
Es el 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
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
reserved
Usa esta marca cuando solicites recursos en cola como parte de una reserva de Cloud TPU.

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 comando

queued-resource-id
Es el 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
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
reserved
Usa esta marca cuando solicites recursos en cola como parte de una reserva de Cloud TPU.

Console

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Nombre, ingresa un nombre para tu TPU.

  4. En el cuadro Zona, selecciona la zona en la que deseas 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 Cloud TPU que deseas crear. Para obtener más información sobre los tipos de aceleradores compatibles con 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 VM de Cloud TPU, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se instalará. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el botón de activación Habilitar la cola.

  8. En el campo Nombre del recurso en cola, ingresa un nombre para tu solicitud de recurso en cola.

  9. Expande la sección Administración.

  10. Selecciona la casilla de verificación Usar la reserva existente.

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

Solicita un recurso en cola de VM Spot con TPU

Una VM Spot es un recurso que se puede interrumpir y asignar a otra carga de trabajo en cualquier momento. Los recursos de las VM Spot cuestan menos y es posible que obtengas acceso a los recursos más rápido en comparación con una solicitud de VM que no sea Spot. Para obtener más información sobre las VMs Spot de TPU, consulta Administra VMs Spot 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 comando

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Es el ID del proyecto en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
spot
Es una marca booleana que especifica que 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 comando

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Es el ID del proyecto en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
spot
Es una marca booleana que especifica que el recurso en cola es una VM Spot.

Console

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Nombre, ingresa un nombre para tu TPU.

  4. En el cuadro Zona, selecciona la zona en la que deseas 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 Cloud TPU que deseas crear. Para obtener más información sobre los tipos de aceleradores compatibles con 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 VM de Cloud TPU, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se instalará. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el botón de activación Habilitar la cola.

  8. En el campo Nombre del recurso en cola, ingresa un nombre para tu solicitud de recurso en cola.

  9. Expande la sección Administración.

  10. Selecciona la casilla de verificación Convierte esta VM en una VM Spot con TPU.

  11. Haz clic en Crear.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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. Si deseas obtener más información, consulta Configura la autenticación para 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

Solicita 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 recursos en cola. La hora de inicio o la duración de inicio especifican la hora más temprana en la que se puede completar la solicitud. La hora o duración de finalización especifican por cuánto tiempo sigue siendo válida la solicitud. Si una solicitud no se completa antes de la hora de finalización especificada o dentro de la duración especificada, la solicitud vence. Una vez que vence la solicitud, permanece en la cola, pero ya no es apta para la asignación.

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 obtener una lista de los formatos de duración y marca de tiempo admitidos, consulta Fecha y hora.

Solicita que se complete un recurso en cola después de un tiempo especificado

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

gcloud

El siguiente comando solicita una TPU v5p-4096 para que se asigne después de las 9 a.m. del 14 de diciembre de 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 comando

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
valid-after-time
Es la fecha y hora después de las cuales se debe asignar el recurso. Para obtener más información sobre los formatos de duración, consulta gcloud topic datetime.

curl

El siguiente comando solicita una TPU v5p-4096 para que se asigne después de las 9 a.m. del 14 de diciembre de 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 comando

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
valid-after-time
Es la fecha y hora después de las cuales se debe asignar el recurso. Para obtener más información sobre los formatos de duración, consulta gcloud topic datetime.

Console

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Nombre, ingresa un nombre para tu TPU.

  4. En el cuadro Zona, selecciona la zona en la que deseas 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 Cloud TPU que deseas crear. Para obtener más información sobre los tipos de aceleradores compatibles con 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 VM de Cloud TPU, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se instalará. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el botón de activación Habilitar la cola.

  8. En el campo Nombre del recurso en cola, ingresa un nombre para tu solicitud de recurso en cola.

  9. En el campo Iniciar solicitud el, ingresa la hora después de la cual se debe asignar el recurso.

  10. Haz clic en Crear para crear tu solicitud de recursos 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 comando

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
valid-after-duration
Es 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 datetime 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 comando

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
valid-after-duration
Es 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 datetime de Google Cloud CLI.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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();
    }
  }
}

Solicita un recurso en cola que vence 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 cumple en el momento o la duración que especificas, vencerá.

gcloud

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

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 comando

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Es el ID del proyecto en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
valid-until-time
Es la fecha y hora después de las cuales se cancela la solicitud. Para obtener más información sobre los formatos de duración, consulta gcloud topic datetime.

curl

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

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 comando

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Es el ID del proyecto en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
valid-until-time
Es la fecha y hora después de las cuales se cancela la solicitud. Para obtener más información sobre los formatos de duración, consulta gcloud topic datetime.

Console

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Nombre, ingresa un nombre para tu TPU.

  4. En el cuadro Zona, selecciona la zona en la que deseas 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 Cloud TPU que deseas crear. Para obtener más información sobre los tipos de aceleradores compatibles con 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 VM de Cloud TPU, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se instalará. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el botón de activación Habilitar la cola.

  8. En el campo Nombre del recurso en cola, ingresa un nombre para tu solicitud de recurso en cola.

  9. En el campo Cancelar solicitud el, ingresa la fecha y hora en que debe vencer la solicitud de recurso en cola si no se completa.

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

En el siguiente ejemplo, se solicita un v5p-32. La solicitud vence si no se completa 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 comando

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
valid-until-duration
Es la duración durante la cual la solicitud es válida. Para obtener más información sobre los formatos de duración, consulta el tema datetime 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_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 comando

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
valid-until-duration
Es la duración durante la cual la solicitud es válida. Para obtener más información sobre los formatos de duración, consulta el tema datetime de Google Cloud CLI.

Python

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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

Solicita que se asigne un recurso en cola dentro de un intervalo especificado

Puedes especificar un intervalo de asignación si indicas la hora o la duración de inicio y 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 de 2022 a las 9:00 a.m.

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 las marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Es el ID del proyecto en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
valid-until-time
Es la fecha y hora después de las cuales se cancela la solicitud. Para obtener más información sobre los formatos de duración, consulta gcloud topic datetime.
valid-after-duration
Es 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 gcloud topic datetime.

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 de 2022 a las 9:00 a.m.

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 las marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Es el ID del proyecto en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
valid-until-timw
Es la fecha y hora después de las cuales se cancela la solicitud. Para obtener más información sobre los formatos de duración, consulta gcloud topic datetime.
valid-until-duration
Es la duración durante la cual la solicitud es válida. Para obtener más información sobre los formatos de duración, consulta gcloud topic datetime.

Console

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Nombre, ingresa un nombre para tu TPU.

  4. En el cuadro Zona, selecciona la zona en la que deseas 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 Cloud TPU que deseas crear. Para obtener más información sobre los tipos de aceleradores compatibles con 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 VM de Cloud TPU, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se instalará. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el botón de activación Habilitar la cola.

  8. En el campo Nombre del recurso en cola, ingresa un nombre para tu solicitud de recurso en cola.

  9. En el campo Iniciar solicitud el, ingresa la hora después de la cual se debe asignar el recurso.

  10. En el campo Cancelar solicitud el, ingresa la fecha y hora en que debe vencer la solicitud de recurso en cola si no se completa.

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

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

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

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á el script 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 las marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Es el ID del proyecto en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
validInterval
Es el período durante el cual la solicitud es válida, después del cual se cancela. Para obtener más información sobre los formatos de duración, consulta gcloud topic datetime.
metadata-from-file
Especifica un archivo que contiene metadatos. Si no especificas una ruta de acceso completamente calificada al archivo de metadatos, el comando supone 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 metadatos para 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 uses curl, debes incluir el código de la secuencia de comandos en el contenido JSON. En el siguiente ejemplo, se incluye un código intercalado 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 las marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
node-id
Es el ID definido por el usuario de la TPU creada en respuesta a la solicitud.
project
Es el ID del proyecto en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
validInterval
Es el período durante el cual la solicitud es válida, después del cual se cancela. Para obtener más información sobre los formatos de duración, consulta gcloud topic datetime.
metadata-from-file
Especifica un archivo que contiene metadatos. Si no especificas una ruta de acceso completamente calificada al archivo de metadatos, el comando supone 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 metadatos para 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. Si deseas obtener más información, consulta Configura la autenticación para 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. Si deseas obtener más información, consulta Configura la autenticación para 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    '}

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

En una solicitud de recursos en cola, puedes especificar una red y una subred a las que deseas 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 comando

queued-resource-id
Es el 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
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
reserved
Usa esta marca cuando solicites recursos en cola como parte de una reserva de Cloud TPU.
network
Es una red de la que formará parte el recurso en cola.
subnetwork
Es 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 comando

queued-resource-id
Es el 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
Es la zona en la que deseas crear la Cloud TPU.
accelerator-type
El tipo de acelerador especifica la versión y el tamaño de la Cloud TPU que deseas crear. 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 Cloud TPU.
reserved
Usa esta marca cuando solicites recursos en cola como parte de una reserva de Cloud TPU.
network
Es una red de la que formará parte el recurso en cola.
subnetwork
Es una subred de la que formará parte el recurso en cola.

Console

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

    Ir a TPUs

  2. Haz clic en Crear TPU.

  3. En el campo Nombre, ingresa un nombre para tu TPU.

  4. En el cuadro Zona, selecciona la zona en la que deseas 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 Cloud TPU que deseas crear. Para obtener más información sobre los tipos de aceleradores compatibles con 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 VM de Cloud TPU, la versión del software de TPU especifica la versión del tiempo de ejecución de TPU que se instalará. Para obtener más información, consulta Versiones de software de TPU.

  7. Haz clic en el botón de activación Habilitar la cola.

  8. En el campo Nombre del recurso en cola, ingresa un nombre para tu solicitud de recurso en cola.

  9. Expande la sección Red.

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

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

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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. Si deseas obtener más información, consulta Configura la autenticación para 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

Borra una solicitud de recurso en cola

Puedes borrar una solicitud de recurso en cola y la TPU asociada a la solicitud borrando 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 las marcas de comandos

your-queued-resource-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
La zona de la Cloud TPU que se borrará.
force
Borra la VM de TPU y 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 las marcas de comandos

your-queued-resource-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
La zona de la Cloud TPU que se borrará.
force
Borra la VM de TPU y la solicitud de recurso en cola.

Console

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

    Ir a TPUs

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

  3. Selecciona la casilla de verificación junto a la solicitud de recurso en cola.

  4. Haz clic en Borrar.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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. Si deseas obtener más información, consulta Configura la autenticación para 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 borras la TPU directamente, también debes borrar el recurso en cola, como se muestra en el siguiente ejemplo. Cuando borras la TPU, la solicitud de recurso en cola pasa al estado SUSPENDED, después del cual se puede borrar.

gcloud

Borra la TPU:

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

Descripciones de las marcas de comandos

project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
La zona de la Cloud TPU que se borrará.
your-node-id
Es el nombre de la TPU que deseas borrar.

Cuando borras tu TPU, el recurso en cola asociado pasa al estado SUSPENDING y, luego, al estado SUSPENDED. Cuando el recurso en cola esté en estado SUSPENDED, puedes borrarlo de la siguiente manera:

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

Descripciones de las marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
La zona de la Cloud TPU que se borrará.

curl

Borra 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 las marcas de comandos

project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
La zona de la Cloud TPU que se borrará.
your-node-id
Es el nombre de la TPU que deseas borrar.

Cuando borras tu TPU, el recurso en cola asociado pasa al estado SUSPENDING y, luego, al estado SUSPENDED. Cuando el recurso en cola esté en estado SUSPENDED, puedes borrarlo de la siguiente manera:

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 las marcas de comandos

queued-resource-request-id
Es el ID asignado por el usuario de la solicitud de recurso en cola.
project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
La zona de la Cloud TPU que se borrará.

Console

Borra tu TPU:

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

    Ir a TPUs

  2. Selecciona la casilla de verificación junto a tu TPU.

  3. Haz clic en Borrar.

Cuando borras tu TPU, el recurso en cola asociado pasa al estado Suspending y, luego, al estado Suspended. Cuando el recurso en cola esté en estado Suspendido, puedes borrarlo:

  1. Haz clic en la pestaña Recursos en cola.
  2. Selecciona la casilla de verificación junto a la solicitud de recurso en cola.
  3. Haz clic en Borrar.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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 borras tu TPU, el recurso en cola asociado pasa al estado SUSPENDING y, luego, al estado SUSPENDED. Cuando el recurso en cola esté en estado SUSPENDED, puedes borrarlo:

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. Si deseas obtener más información, consulta Configura la autenticación para 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 borras tu TPU, el recurso en cola asociado pasa al estado SUSPENDING y, luego, al estado SUSPENDED. Cuando el recurso en cola esté en estado SUSPENDED, puedes borrarlo:

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

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

Recupera el estado y la información de diagnóstico sobre 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 las marcas de comandos

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

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 las marcas de comandos

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

Console

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

    Ir a TPUs

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

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

Después de que se aprovisione tu TPU, también puedes ver los detalles de tu solicitud de recursos en cola. Para ello, ve a la página de TPU, busca tu TPU y haz clic en el nombre de la solicitud de recursos en cola correspondiente.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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. Si deseas obtener más información, consulta Configura la autenticación para 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, el resultado contendrá información sobre el error. En el caso de una solicitud que espera recursos, el resultado es 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

Console

En el campo Estado del recurso en cola, se muestra Esperando recursos.

Enumera las solicitudes de recursos en cola de tu proyecto

Enumera las solicitudes de recursos en cola en tu proyecto:

gcloud

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

Descripciones de las marcas de comandos

project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.

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 las marcas de comandos

project
Proyecto Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear la Cloud TPU.

Console

  1. En la consola de Google Cloud , 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. Si deseas obtener más información, consulta Configura la autenticación para 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. Si deseas obtener más información, consulta Configura la autenticación para 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