Administra recursos en cola

Los recursos en cola te permiten solicitar recursos de Cloud TPU en colas. Cuando se solicitan recursos en cola, la solicitud se agrega a una cola que mantiene el servicio de Cloud TPU. Cuando el recurso solicitado está disponible, se asigna a tu proyecto de Google Cloud para el uso exclusivo inmediato. Permanecerá asignado a tu proyecto, a menos que lo borres o se interrumpa. Solo las VMs Spot de TPU y las TPU interrumpibles cumplen con los requisitos 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 no se completa una solicitud antes de la hora de finalización especificada, vence. La solicitud permanece en la cola después de esto.

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 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 TPU.
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 cola 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 de 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 según demanda

Los recursos según demanda no se interrumpirán, pero la cuota según demanda no garantiza que habrá suficientes recursos de Cloud TPU disponibles para satisfacer tu solicitud. Para obtener más información sobre los recursos según demanda, 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
Es el ID asignado por el usuario de la TPU que se crea cuando se asigna la solicitud de recurso en cola.
project
Es tu proyecto de Google Cloud .
zone
Es la zona en la que deseas crear tu 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
Es la versión de 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
Es el ID asignado por el usuario de la TPU que se crea cuando se asigna la solicitud de recurso en cola.
project
Es tu proyecto de Google Cloud .
zone
Es la zona en la que deseas crear tu 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
Es la versión de software de Cloud TPU.

Consola

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

    Ir a TPU

  2. Haz clic en Crear una TPU.

  3. En el campo Nombre, ingresa el nombre de 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 de software de TPU especifica la versión del entorno 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 para activar o desactivar la opción Habilitar las colas.

  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. Para 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. Para 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
Es el ID asignado por el usuario de la TPU que se crea cuando se asigna la solicitud de recurso en cola.
project
Es tu proyecto de Google Cloud .
zone
Es la zona en la que deseas crear tu 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
Es la versión de 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
Es el ID asignado por el usuario de la TPU que se crea cuando se asigna la solicitud de recurso en cola.
project
Es tu proyecto de Google Cloud .
zone
Es la zona en la que deseas crear tu 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
Es la versión de software de Cloud TPU.
reserved
Usa esta marca cuando solicites recursos en cola como parte de una reserva de Cloud TPU.

Consola

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

    Ir a TPU

  2. Haz clic en Crear una TPU.

  3. En el campo Nombre, ingresa el nombre de 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 de software de TPU especifica la versión del entorno 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 para activar o desactivar la opción Habilitar las colas.

  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 con VM Spot de 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 VMs Spot cuestan menos, y es posible que obtengas acceso a los recursos más rápido en comparación con la solicitud de una 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 tu 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
Es la versión de 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 tu 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
Es la versión de software de Cloud TPU.
spot
Es una marca booleana que especifica que el recurso en cola es una VM Spot.

Consola

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

    Ir a TPU

  2. Haz clic en Crear una TPU.

  3. En el campo Nombre, ingresa el nombre de 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 de software de TPU especifica la versión del entorno 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 para activar o desactivar la opción Habilitar las colas.

  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. Para 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. Para 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 o la duración del 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, esta vence. Una vez que esto sucede, la solicitud permanece en la cola, pero ya no cumple con los requisitos 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 marcas de tiempo y duración compatibles, consulta Fecha y hora.

Solicita que se entregue 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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear tu 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
Es la versión de software de Cloud TPU.
valid-after-time
Es la hora después de la cual se debe asignar el recurso. Para obtener más información sobre los formatos de duración, consulta Fecha y hora del tema de Google Cloud CLI.

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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear tu 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
Es la versión de software de Cloud TPU.
valid-after-time
Es la hora después de la cual se debe asignar el recurso. Para obtener más información sobre los formatos de duración, consulta Fecha y hora del tema de Google Cloud CLI.

Consola

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

    Ir a TPU

  2. Haz clic en Crear una TPU.

  3. En el campo Nombre, ingresa el nombre de 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 de software de TPU especifica la versión del entorno 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 para activar o desactivar la opción Habilitar las colas.

  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 el momento después del 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 una 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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear tu 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
Es la versión de 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 Fecha y hora del tema 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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear tu 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
Es la versión de 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 Fecha y hora del tema de Google Cloud CLI.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta 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 se venza después de un tiempo especificado

En una solicitud de recursos en cola, puedes especificar por cuánto tiempo sigue siendo válida. Si la solicitud no se cumple en el momento o la duración que especificas, esta vence.

gcloud

Con el siguiente comando, se solicita una TPU v5p-4096. Si la solicitud no se completa antes del 14 de diciembre de 2022 a las 9:00 a.m., esta 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 tu 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
Es la versión de software de Cloud TPU.
valid-until-time
Es la hora después de la cual se cancelará la solicitud. Para obtener más información sobre los formatos de duración, consulta Fecha y hora del tema de Google Cloud CLI.

curl

Con el siguiente comando, se solicita una TPU v5p-4096. Si la solicitud no se completa antes del 14 de diciembre de 2022 a las 9:00 a.m., esta 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 tu 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
Es la versión de software de Cloud TPU.
valid-until-time
Es la hora después de la cual se cancelará la solicitud. Para obtener más información sobre los formatos de duración, consulta Fecha y hora del tema de Google Cloud CLI.

Consola

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

    Ir a TPU

  2. Haz clic en Crear una TPU.

  3. En el campo Nombre, ingresa el nombre de 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 de software de TPU especifica la versión del entorno 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 para activar o desactivar la opción Habilitar las colas.

  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 cuándo debería vencer la solicitud del 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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear tu 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
Es la versión de 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 Fecha y hora del tema 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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear tu 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
Es la versión de 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 Fecha y hora del tema de Google Cloud CLI.

Python

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para 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 indicando la hora o la duración de inicio, y la hora o la duración de finalización.

gcloud

En el siguiente comando, se solicita un v5p-32 dentro de 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 tu 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
Es la versión de software de Cloud TPU.
valid-until-time
Es la hora después de la cual se cancelará la solicitud. Para obtener más información sobre los formatos de duración, consulta Fecha y hora del tema de Google Cloud CLI.
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 Fecha y hora del tema de Google Cloud CLI.

curl

En el siguiente comando, se solicita un v5p-32 dentro de 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 tu 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
Es la versión de software de Cloud TPU.
valid-until-timw
Es la hora después de la cual se cancelará la solicitud. Para obtener más información sobre los formatos de duración, consulta Fecha y hora del tema de Google Cloud CLI.
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 Fecha y hora del tema de Google Cloud CLI.

Consola

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

    Ir a TPU

  2. Haz clic en Crear una TPU.

  3. En el campo Nombre, ingresa el nombre de 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 de software de TPU especifica la versión del entorno 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 para activar o desactivar la opción Habilitar las colas.

  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 el momento después del cual se debe asignar el recurso.

  10. En el campo Cancelar solicitud el, ingresa cuándo debería vencer la solicitud del 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á la secuencia de comandos startup-script.sh.

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

Descripciones de 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 tu 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
Es la versión de software de Cloud TPU.
validInterval
El tiempo 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 Fecha y hora del tema de Google Cloud CLI.
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 la 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 lenguaje de secuencias de comandos 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 tu 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
Es la versión de software de Cloud TPU.
validInterval
El tiempo 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 Fecha y hora del tema de Google Cloud CLI.
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 la secuencia de comandos de inicio que se ejecuta cuando se aprovisiona el recurso en cola.

Java

Para autenticarte en Cloud TPU, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta 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. Para 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 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
Es el ID asignado por el usuario de la TPU que se crea cuando se asigna la solicitud de recurso en cola.
project
Es tu proyecto de Google Cloud .
zone
Es la zona en la que deseas crear tu 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
Es la versión de 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
Es el ID asignado por el usuario de la TPU que se crea cuando se asigna la solicitud de recurso en cola.
project
Es tu proyecto de Google Cloud .
zone
Es la zona en la que deseas crear tu 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
Es la versión de 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.

Consola

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

    Ir a TPU

  2. Haz clic en Crear una TPU.

  3. En el campo Nombre, ingresa el nombre de 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 de software de TPU especifica la versión del entorno 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 para activar o desactivar la opción Habilitar las colas.

  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. Para 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. Para 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 la solicitud de un recurso en cola

Puedes borrar una solicitud del recurso en cola y la TPU asociada a la solicitud eliminando la solicitud:

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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona de la Cloud TPU que se borrará.
force
Borra la VM de TPU y la solicitud del 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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona de la Cloud TPU que se borrará.
force
Borra la VM de TPU y la solicitud del recurso en cola.

Consola

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

    Ir a TPU

  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. Para 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. Para 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 de forma directa, también debes borrar el recurso en cola, como se muestra en el siguiente ejemplo. Cuando borras la TPU, la solicitud del recurso en cola pasa al estado SUSPENDED, después del cual se puede borrar la solicitud del recurso en cola.

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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es 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:

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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es 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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es 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:

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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona de la Cloud TPU que se borrará.

Consola

Borra tu TPU:

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

    Ir a TPU

  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 En proceso de suspensión y, luego, al estado Suspendida. Cuando el recurso en cola esté en estado Suspendida, 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. Para 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. Para 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 la solicitud de un recurso en cola

Recupera la información de diagnóstico y estado sobre la solicitud de un 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 tu 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 tu Cloud TPU.

Consola

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

    Ir a TPU

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

Consola

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

Enumera las solicitudes de los recursos en cola de tu proyecto

Enumera las solicitudes de los recursos en cola de tu proyecto:

gcloud

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

Descripciones de las marcas de comandos

project
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear tu 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
Es el proyecto de Google Cloud en el que se asigna el recurso en cola.
zone
Es la zona en la que deseas crear tu Cloud TPU.

Consola

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

    Ir a TPU

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

Java

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