Gérer les ressources en file d'attente

Les ressources en mode file d'attente vous permettent de demander des ressources Cloud TPU via une file d'attente. Lorsque vous demandez des ressources en mode file d'attente, la demande est ajoutée à une file d'attente gérée par le service Cloud TPU. Lorsque la ressource demandée devient disponible, elle est attribuée à votre projet Google Cloud pour votre usage exclusif immédiat. Elle restera attribuée à votre projet, sauf si vous la supprimez ou si elle est préemptée. Seules les VM Spot TPU et les TPU préemptifs peuvent être préemptés.

Vous pouvez spécifier une heure de début et de fin facultatives dans une demande de ressource mise en file d'attente. L'heure de début indique l'heure la plus tôt à laquelle la demande doit être satisfaite. Si une demande n'a pas été traitée avant l'heure de fin spécifiée, elle expire. La demande reste dans la file d'attente après son expiration.

Les demandes de ressources mises en file d'attente peuvent avoir l'un des états suivants :

WAITING_FOR_RESOURCES
La demande a passé la validation initiale et a été ajoutée à la file d'attente. Il reste dans cet état jusqu'à ce qu'il y ait suffisamment de ressources disponibles pour commencer à provisionner votre demande ou jusqu'à ce que l'intervalle d'allocation expire. Lorsque la demande est élevée, toutes les requêtes ne peuvent pas être provisionnées immédiatement. Si vous avez besoin d'une disponibilité plus fiable des TPU, envisagez d'acheter une réservation.
PROVISIONING
La demande a été sélectionnée dans la file d'attente et ses ressources sont en cours d'attribution.
ACTIVE
La demande a été attribuée. Lorsque les demandes de ressources en file d'attente sont à l'état ACTIVE, vous pouvez gérer vos VM TPU comme décrit dans Gérer les TPU.
FAILED
La demande n'a pas pu être traitée, soit parce qu'il y a un problème avec la demande, soit parce que les ressources demandées n'étaient pas disponibles dans l'intervalle d'allocation. La demande reste dans la file d'attente jusqu'à ce qu'elle soit explicitement supprimée.
SUSPENDING
Les ressources associées à la demande sont en cours de suppression.
SUSPENDED
Les ressources spécifiées dans la requête ont été supprimées. Lorsqu'une demande est à l'état SUSPENDED, elle n'est plus éligible à une allocation supplémentaire.

Prérequis

Avant d'exécuter les commandes de ce guide, vous devez installer Google Cloud CLI, créer un projet Google Cloud et activer l'API Cloud TPU. Pour obtenir des instructions, consultez Configurer l'environnement Cloud TPU.

Si vous utilisez l'une des bibliothèques clientes Cloud, suivez les instructions de configuration pour le langage que vous utilisez :

Demander une ressource en file d'attente à la demande

Les ressources à la demande ne seront pas préemptées, mais le quota à la demande ne garantit pas qu'il y aura suffisamment de ressources Cloud TPU disponibles pour répondre à votre demande. Pour en savoir plus sur les ressources à la demande, consultez Types de quotas.

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

Descriptions des paramètres de commande

queued-resource-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID attribué par l'utilisateur au TPU créé lorsque la demande de ressource mise en file d'attente est allouée.
project
Votre projet Google Cloud .
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel 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

Descriptions des paramètres de commande

queued-resource-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID attribué par l'utilisateur au TPU créé lorsque la demande de ressource mise en file d'attente est allouée.
project
Votre projet Google Cloud .
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.

Console

  1. Dans la console Google Cloud , accédez à la page TPU :

    Accéder aux TPU

  2. Cliquez sur Créer un TPU.

  3. Dans le champ Nom, saisissez le nom de votre TPU.

  4. Dans le champ Zone, sélectionnez la zone dans laquelle vous souhaitez créer le TPU.

  5. Dans la zone Type de TPU, sélectionnez un type d'accélérateur. Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.

  6. Dans le champ Version logicielle du TPU, sélectionnez une version logicielle. Lorsque vous créez une VM Cloud TPU, la version logicielle TPU spécifie la version de l'environnement d'exécution TPU à installer. Pour en savoir plus, consultez Versions logicielles de TPU.

  7. Cliquez sur le bouton Activer la mise en file d'attente.

  8. Dans le champ Nom de la ressource mise en file d'attente, saisissez le nom de votre demande de ressource mise en file d'attente.

  9. Cliquez sur Créer pour créer votre demande de ressource mise en file d'attente.

Java

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Demander une ressource en file d'attente à l'aide d'une réservation

Vous pouvez demander une ressource en file d'attente à l'aide d'une réservation. Pour acheter une réservation, contactez l'équipe de gestion de votre compte 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

Descriptions des paramètres de commande

queued-resource-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID attribué par l'utilisateur au TPU créé lorsque la demande de ressource mise en file d'attente est allouée.
project
Votre projet Google Cloud .
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
reserved
Utilisez cet indicateur lorsque vous demandez des ressources en file d'attente dans le cadre d'une réservation 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

Descriptions des paramètres de commande

queued-resource-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID attribué par l'utilisateur au TPU créé lorsque la demande de ressource mise en file d'attente est allouée.
project
Votre projet Google Cloud .
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
reserved
Utilisez cet indicateur lorsque vous demandez des ressources en file d'attente dans le cadre d'une réservation Cloud TPU.

Console

  1. Dans la console Google Cloud , accédez à la page TPU :

    Accéder aux TPU

  2. Cliquez sur Créer un TPU.

  3. Dans le champ Nom, saisissez le nom de votre TPU.

  4. Dans le champ Zone, sélectionnez la zone dans laquelle vous souhaitez créer le TPU.

  5. Dans la zone Type de TPU, sélectionnez un type d'accélérateur. Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.

  6. Dans le champ Version logicielle du TPU, sélectionnez une version logicielle. Lorsque vous créez une VM Cloud TPU, la version logicielle TPU spécifie la version de l'environnement d'exécution TPU à installer. Pour en savoir plus, consultez Versions logicielles de TPU.

  7. Cliquez sur le bouton Activer la mise en file d'attente.

  8. Dans le champ Nom de la ressource mise en file d'attente, saisissez le nom de votre demande de ressource mise en file d'attente.

  9. Développez la section Gestion.

  10. Cochez la case Utiliser une réservation existante.

  11. Cliquez sur Créer pour créer votre demande de ressource mise en file d'attente.

Demander une ressource en file d'attente de VM Spot TPU

Une VM Spot est une ressource qui peut être préemptée et attribuée à une autre charge de travail à tout moment. Les ressources des VM Spot coûtent moins cher et vous pouvez y accéder plus rapidement qu'avec une demande de VM non Spot. Pour en savoir plus sur les VM Spot TPU, consultez Gérer les VM Spot 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

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
ID du projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
spot
 : indicateur booléen spécifiant que la ressource mise en file d'attente est une 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

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
ID du projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
spot
 : indicateur booléen spécifiant que la ressource mise en file d'attente est une VM spot.

Console

  1. Dans la console Google Cloud , accédez à la page TPU :

    Accéder aux TPU

  2. Cliquez sur Créer un TPU.

  3. Dans le champ Nom, saisissez le nom de votre TPU.

  4. Dans le champ Zone, sélectionnez la zone dans laquelle vous souhaitez créer le TPU.

  5. Dans la zone Type de TPU, sélectionnez un type d'accélérateur. Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.

  6. Dans le champ Version logicielle du TPU, sélectionnez une version logicielle. Lorsque vous créez une VM Cloud TPU, la version logicielle TPU spécifie la version de l'environnement d'exécution TPU à installer. Pour en savoir plus, consultez Versions logicielles de TPU.

  7. Cliquez sur le bouton Activer la mise en file d'attente.

  8. Dans le champ Nom de la ressource mise en file d'attente, saisissez le nom de votre demande de ressource mise en file d'attente.

  9. Développez la section Gestion.

  10. Cochez la case Transformer en VM Spot TPU.

  11. Cliquez sur Créer.

Java

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Demander l'allocation d'une ressource mise en file d'attente avant ou après une heure spécifiée

Vous pouvez spécifier une heure de début ou une heure de fin facultatives dans une demande de ressource mise en file d'attente. L'heure ou la durée de début spécifient l'heure la plus tôt à laquelle la demande doit être satisfaite. L'heure ou la durée de fin indiquent la durée de validité de la demande. Si une demande n'a pas été satisfaite à l'heure de fin spécifiée ou dans le délai spécifié, elle expire. Une fois la demande expirée, elle reste dans la file d'attente, mais n'est plus éligible à l'allocation.

Vous pouvez également spécifier un intervalle d'allocation en indiquant une heure ou une durée de début, et une heure ou une durée de fin.

Pour obtenir la liste des formats d'horodatage et de durée acceptés, consultez Date/Heure.

Demander qu'une ressource en file d'attente soit traitée après un délai spécifié

Dans une requête de ressources en file d'attente, vous pouvez spécifier une heure ou une durée après laquelle une ressource doit être allouée.

gcloud

La commande suivante demande l'allocation d'un TPU v5p-4096 après 9h le 14 décembre 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

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-after-time
Heure après laquelle la ressource doit être allouée. Pour en savoir plus sur les formats de durée, consultez la page gcloud topic datetimes.

curl

La commande suivante demande l'allocation d'un TPU v5p-4096 après 9h le 14 décembre 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

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-after-time
Heure après laquelle la ressource doit être allouée. Pour en savoir plus sur les formats de durée, consultez la page gcloud topic datetimes.

Console

  1. Dans la console Google Cloud , accédez à la page TPU :

    Accéder aux TPU

  2. Cliquez sur Créer un TPU.

  3. Dans le champ Nom, saisissez le nom de votre TPU.

  4. Dans le champ Zone, sélectionnez la zone dans laquelle vous souhaitez créer le TPU.

  5. Dans la zone Type de TPU, sélectionnez un type d'accélérateur. Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.

  6. Dans le champ Version logicielle du TPU, sélectionnez une version logicielle. Lorsque vous créez une VM Cloud TPU, la version logicielle TPU spécifie la version de l'environnement d'exécution TPU à installer. Pour en savoir plus, consultez Versions logicielles de TPU.

  7. Cliquez sur le bouton Activer la mise en file d'attente.

  8. Dans le champ Nom de la ressource mise en file d'attente, saisissez le nom de votre demande de ressource mise en file d'attente.

  9. Dans le champ Heure de début de la demande, saisissez l'heure à partir de laquelle la ressource doit être allouée.

  10. Cliquez sur Créer pour créer votre demande de ressource mise en file d'attente.

L'exemple suivant demande l'attribution d'un v5p-32 après six heures.

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

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-after-duration
 : durée avant laquelle le TPU ne doit pas être provisionné. Pour en savoir plus sur les formats de durée, consultez la documentation Google Cloud CLI sur les dates et heures.

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

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-after-duration
 : durée avant laquelle le TPU ne doit pas être provisionné. Pour en savoir plus sur les formats de durée, consultez la documentation Google Cloud CLI sur les dates et heures.

Java

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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();
    }
  }
}

Demander une ressource mise en file d'attente qui expire après une période spécifiée

Dans une demande de ressources en file d'attente, vous pouvez spécifier la durée de validité d'une demande de ressources en file d'attente. Si la demande n'a pas été traitée dans le délai ou la durée que vous avez spécifiés, elle expire.

gcloud

La commande suivante demande un TPU v5p-4096. Si la demande n'est pas traitée d'ici le 14 décembre 2022 à 9h00, elle expirera.

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

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
ID du projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-until-time
 : délai au-delà duquel la demande est annulée. Pour en savoir plus sur les formats de durée, consultez la section gcloud topic datetimes.

curl

La commande suivante demande un TPU v5p-4096. Si la demande n'est pas traitée d'ici le 14 décembre 2022 à 9h00, elle expirera.

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

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
ID du projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-until-time
 : délai au-delà duquel la demande est annulée. Pour en savoir plus sur les formats de durée, consultez la section gcloud topic datetimes.

Console

  1. Dans la console Google Cloud , accédez à la page TPU :

    Accéder aux TPU

  2. Cliquez sur Créer un TPU.

  3. Dans le champ Nom, saisissez le nom de votre TPU.

  4. Dans le champ Zone, sélectionnez la zone dans laquelle vous souhaitez créer le TPU.

  5. Dans la zone Type de TPU, sélectionnez un type d'accélérateur. Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.

  6. Dans le champ Version logicielle du TPU, sélectionnez une version logicielle. Lorsque vous créez une VM Cloud TPU, la version logicielle TPU spécifie la version de l'environnement d'exécution TPU à installer. Pour en savoir plus, consultez Versions logicielles de TPU.

  7. Cliquez sur le bouton Activer la mise en file d'attente.

  8. Dans le champ Nom de la ressource mise en file d'attente, saisissez le nom de votre demande de ressource mise en file d'attente.

  9. Dans le champ Annuler la demande le, saisissez l'heure à laquelle la demande de ressource mise en file d'attente doit expirer si elle n'est pas satisfaite.

  10. Cliquez sur Créer pour créer votre demande de ressource mise en file d'attente.

L'exemple suivant demande un v5p-32. La demande expire si elle n'est pas satisfaite au bout de six heures.

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

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-until-duration
Durée de validité de la demande. Pour en savoir plus sur les formats de durée, consultez la section datetime de Google Cloud CLI.

curl

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

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-until-duration
Durée de validité de la demande. Pour en savoir plus sur les formats de durée, consultez la section datetime de Google Cloud CLI.

Python

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Demander l'allocation d'une ressource mise en file d'attente dans un intervalle spécifié

Vous pouvez spécifier un intervalle d'allocation en indiquant à la fois l'heure ou la durée de début et l'heure ou la durée de fin.

gcloud

La commande suivante demande une v5p-32 dans cinq heures et demie à partir de l'heure actuelle, à créer au plus tard le 14 décembre 2022 à 9h00.

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

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
ID du projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-until-time
 : délai au-delà duquel la demande est annulée. Pour en savoir plus sur les formats de durée, consultez la section gcloud topic datetimes.
valid-after-duration
 : durée avant laquelle le TPU ne doit pas être provisionné. Pour en savoir plus sur les formats de durée, consultez la section gcloud topic datetimes.

curl

La commande suivante demande une v5p-32 dans cinq heures et demie à partir de l'heure actuelle, à créer au plus tard le 14 décembre 2022 à 9h00.

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

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
ID du projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-until-timw
 : délai au-delà duquel la demande est annulée. Pour en savoir plus sur les formats de durée, consultez la section gcloud topic datetimes.
valid-until-duration
Durée de validité de la demande. Pour en savoir plus sur les formats de durée, consultez la section gcloud topic datetimes.

Console

  1. Dans la console Google Cloud , accédez à la page TPU :

    Accéder aux TPU

  2. Cliquez sur Créer un TPU.

  3. Dans le champ Nom, saisissez le nom de votre TPU.

  4. Dans le champ Zone, sélectionnez la zone dans laquelle vous souhaitez créer le TPU.

  5. Dans la zone Type de TPU, sélectionnez un type d'accélérateur. Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.

  6. Dans le champ Version logicielle du TPU, sélectionnez une version logicielle. Lorsque vous créez une VM Cloud TPU, la version logicielle TPU spécifie la version de l'environnement d'exécution TPU à installer. Pour en savoir plus, consultez Versions logicielles de TPU.

  7. Cliquez sur le bouton Activer la mise en file d'attente.

  8. Dans le champ Nom de la ressource mise en file d'attente, saisissez le nom de votre demande de ressource mise en file d'attente.

  9. Dans le champ Heure de début de la demande, saisissez l'heure à partir de laquelle la ressource doit être allouée.

  10. Dans le champ Annuler la demande le, saisissez l'heure à laquelle la demande de ressource mise en file d'attente doit expirer si elle n'est pas satisfaite.

  11. Cliquez sur Créer pour créer votre demande de ressource mise en file d'attente.

Demander une ressource mise en file d'attente avec un script de démarrage

Vous pouvez spécifier un script à exécuter sur une ressource mise en file d'attente après son provisionnement.

gcloud

Lorsque vous utilisez la commande gcloud, vous pouvez utiliser l'option --metadata ou --metadata-from-file pour spécifier respectivement une commande de script ou un fichier contenant le code du script. L'exemple suivant crée une demande de ressource mise en file d'attente qui exécutera le script startup-script.sh.

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

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
ID du projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
validInterval
Durée de validité de la demande, après laquelle elle est annulée. Pour en savoir plus sur les formats de durée, consultez la page Google Cloud CLI topic datetime.
metadata-from-file
Spécifie un fichier contenant des métadonnées. Si vous ne spécifiez pas de chemin d'accès complet au fichier de métadonnées, la commande suppose qu'il se trouve dans le répertoire actuel. Dans cet exemple, le fichier contient un script de démarrage qui est exécuté lorsque la ressource mise en file d'attente est provisionnée.
metadata
Spécifie les métadonnées de la requête. Dans cet exemple, les métadonnées sont une commande de script de démarrage exécutée lorsque la ressource mise en file d'attente est provisionnée.

curl

Lorsque vous utilisez curl, vous devez inclure le code du script dans le contenu JSON. L'exemple suivant inclut un script intégré dans le corps 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

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
ID du projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
validInterval
Durée de validité de la demande, après laquelle elle est annulée. Pour en savoir plus sur les formats de durée, consultez la page Google Cloud CLI topic datetime.
metadata-from-file
Spécifie un fichier contenant des métadonnées. Si vous ne spécifiez pas de chemin d'accès complet au fichier de métadonnées, la commande suppose qu'il se trouve dans le répertoire actuel. Dans cet exemple, le fichier contient un script de démarrage qui est exécuté lorsque la ressource mise en file d'attente est provisionnée.
metadata
Spécifie les métadonnées de la requête. Dans cet exemple, les métadonnées sont une commande de script de démarrage exécutée lorsque la ressource mise en file d'attente est provisionnée.

Java

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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    '}

Demander une ressource mise en file d'attente avec un réseau et un sous-réseau spécifiés

Dans une demande de ressources en file d'attente, vous pouvez spécifier un réseau et un sous-réseau auxquels vous souhaitez connecter votre 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

Descriptions des paramètres de commande

queued-resource-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID attribué par l'utilisateur au TPU créé lorsque la demande de ressource mise en file d'attente est allouée.
project
Votre projet Google Cloud .
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
reserved
Utilisez cet indicateur lorsque vous demandez des ressources en file d'attente dans le cadre d'une réservation Cloud TPU.
network
 : réseau auquel la ressource en file d'attente appartiendra.
subnetwork
Sous-réseau auquel la ressource en file d'attente appartiendra.

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

Descriptions des paramètres de commande

queued-resource-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
node-id
ID attribué par l'utilisateur au TPU créé lorsque la demande de ressource mise en file d'attente est allouée.
project
Votre projet Google Cloud .
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
reserved
Utilisez cet indicateur lorsque vous demandez des ressources en file d'attente dans le cadre d'une réservation Cloud TPU.
network
 : réseau auquel la ressource en file d'attente appartiendra.
subnetwork
Sous-réseau auquel la ressource en file d'attente appartiendra.

Console

  1. Dans la console Google Cloud , accédez à la page TPU :

    Accéder aux TPU

  2. Cliquez sur Créer un TPU.

  3. Dans le champ Nom, saisissez le nom de votre TPU.

  4. Dans le champ Zone, sélectionnez la zone dans laquelle vous souhaitez créer le TPU.

  5. Dans la zone Type de TPU, sélectionnez un type d'accélérateur. Le type d'accélérateur spécifie la version et la taille du Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez Versions de TPU.

  6. Dans le champ Version logicielle du TPU, sélectionnez une version logicielle. Lorsque vous créez une VM Cloud TPU, la version logicielle TPU spécifie la version de l'environnement d'exécution TPU à installer. Pour en savoir plus, consultez Versions logicielles de TPU.

  7. Cliquez sur le bouton Activer la mise en file d'attente.

  8. Dans le champ Nom de la ressource mise en file d'attente, saisissez le nom de votre demande de ressource mise en file d'attente.

  9. Développez la section Réseau.

  10. Dans les champs Réseau et Sous-réseau, sélectionnez le réseau et le sous-réseau que vous souhaitez utiliser.

  11. Cliquez sur Créer pour créer votre demande de ressource mise en file d'attente.

Java

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Supprimer une demande de ressource en file d'attente

Vous pouvez supprimer une demande de ressource en file d'attente et le TPU associé à la demande en supprimant la demande de ressource en file d'attente :

gcloud

Transmettez l'option --force à la commande queued-resource delete :

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

Description des options de commande

your-queued-resource-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone du Cloud TPU à supprimer.
force
 Supprimez à la fois la VM TPU et la demande de ressource en file d'attente.

curl

Utilisez le paramètre de requête force=true dans votre requête 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

Description des options de commande

your-queued-resource-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone du Cloud TPU à supprimer.
force
 Supprimez à la fois la VM TPU et la demande de ressource en file d'attente.

Console

  1. Dans la console Google Cloud , accédez à la page TPU :

    Accéder aux TPU

  2. Cliquez sur l'onglet Ressources en file d'attente.

  3. Cochez la case à côté de votre demande de ressource en file d'attente.

  4. Cliquez sur Supprimer.

Java

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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 vous supprimez directement le TPU, vous devez également supprimer la ressource en file d'attente, comme indiqué dans l'exemple suivant. Lorsque vous supprimez le TPU, la requête de ressource en file d'attente passe à l'état SUSPENDED, après quoi elle peut être supprimée.

gcloud

Supprimez le TPU :

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

Description des options de commande

project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone du Cloud TPU à supprimer.
your-node-id
Nom de la TPU que vous souhaitez supprimer.

Lorsque vous supprimez votre TPU, la ressource en file d'attente associée passe à l'état SUSPENDING, puis à l'état SUSPENDED. Lorsque votre ressource mise en file d'attente est à l'état SUSPENDED, vous pouvez la supprimer :

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

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone du Cloud TPU à supprimer.

curl

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

Description des options de commande

project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone du Cloud TPU à supprimer.
your-node-id
Nom de la TPU que vous souhaitez supprimer.

Lorsque vous supprimez votre TPU, la ressource en file d'attente associée passe à l'état SUSPENDING, puis à l'état SUSPENDED. Lorsque votre ressource mise en file d'attente est à l'état SUSPENDED, vous pouvez la supprimer :

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

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone du Cloud TPU à supprimer.

Console

Supprimez votre TPU :

  1. Dans la console Google Cloud , accédez à la page TPU :

    Accéder aux TPU

  2. Cochez la case située à côté de votre TPU.

  3. Cliquez sur Supprimer.

Lorsque vous supprimez votre TPU, la ressource en file d'attente associée passe à l'état En cours de suspension, puis à l'état Suspendue. Lorsque votre ressource en file d'attente est à l'état Suspendue, vous pouvez la supprimer :

  1. Cliquez sur l'onglet Ressources en file d'attente.
  2. Cochez la case à côté de votre demande de ressource en file d'attente.
  3. Cliquez sur Supprimer.

Java

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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");
    }
  }
}

Lorsque vous supprimez votre TPU, la ressource en file d'attente associée passe à l'état SUSPENDING, puis à l'état SUSPENDED. Lorsque votre ressource en file d'attente est à l'état SUSPENDED, vous pouvez la supprimer :

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

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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)

Lorsque vous supprimez votre TPU, la ressource en file d'attente associée passe à l'état SUSPENDING, puis à l'état SUSPENDED. Lorsque votre ressource en file d'attente est à l'état SUSPENDED, vous pouvez la supprimer :

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

Récupérer des informations sur l'état et le diagnostic d'une demande de ressource en file d'attente

Récupérez l'état et les informations de diagnostic d'une demande de ressource en file d'attente :

gcloud

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

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
project
ID du projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre 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

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la demande de ressource mise en file d'attente.
project
ID du projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.

Console

  1. Dans la console Google Cloud , accédez à la page TPU :

    Accéder aux TPU

  2. Cliquez sur l'onglet Ressources en file d'attente.

  3. Cliquez sur le nom de votre demande de ressource mise en file d'attente.

Une fois votre TPU provisionné, vous pouvez également afficher des informations sur votre demande de ressources en file d'attente en accédant à la page TPU, en recherchant votre TPU et en cliquant sur le nom de la demande de ressources en file d'attente correspondante.

Java

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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 requête échoue, le résultat contient des informations sur l'erreur. Pour une requête en attente de ressources, le résultat ressemble à ce qui suit :

gcloud

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

Console

Le champ État de la ressource en file d'attente affiche En attente de ressources.

Lister les demandes de ressources en file d'attente dans votre projet

Répertoriez les demandes de ressources en file d'attente dans votre projet :

gcloud

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

Description des options de commande

project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre 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

Description des options de commande

project
Le Google Cloud projet dans lequel la ressource mise en file d'attente est allouée.
zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.

Console

  1. Dans la console Google Cloud , accédez à la page TPU :

    Accéder aux TPU

  2. Cliquez sur l'onglet Ressources en file d'attente.

Java

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour vous authentifier auprès de Cloud TPU, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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