Gérer les ressources en file d'attente

Les ressources en 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 Google Cloud projet pour votre utilisation exclusive et immédiate. Il restera attribué à votre projet, sauf si vous le supprimez ou si un autre projet le préempte. Seules les VM Spot TPU et les TPU préemptifs peuvent être préemptées.

Vous pouvez spécifier des heures de début et de fin facultatives dans une requête de ressources mise en file d'attente. L'heure de début spécifie l'heure la plus précoce à laquelle la requête doit être traitée. Si une demande n'a pas été traitée avant l'heure de fin spécifiée, elle expire. La requête reste dans la file d'attente après avoir expiré.

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

WAITING_FOR_RESOURCES
La requête 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 libres pour commencer à provisionner votre requête ou jusqu'à l'expiration de l'intervalle d'allocation. 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 requête a été sélectionnée dans la file d'attente et ses ressources sont en cours d'allocation.
ACTIVE
La requête a été allouée. Lorsque les requêtes de ressources en file d'attente sont à l'état ACTIVE, vous pouvez gérer vos VM TPU comme décrit dans la section Gérer les TPU.
FAILED
La requête n'a pas pu être traitée, soit en raison d'un problème avec la requête, soit parce que les ressources demandées n'étaient pas disponibles dans l'intervalle d'allocation. La requête reste dans la file d'attente jusqu'à ce qu'elle soit supprimée explicitement.
SUSPENDING
Les ressources associées à la requête sont en cours de suppression.
SUSPENDED
Les ressources spécifiées dans la requête ont été supprimées. Lorsqu'une requête est à l'état SUSPENDED, elle n'est plus éligible à une nouvelle allocation.

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 la section Configurer l'environnement Cloud TPU.

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 la section Types de quotas.

gcloud

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project \
    --zone us-central2-b \
    --accelerator-type v4-8 \
    --runtime-version tpu-vm-tf-2.18.0-pjrt

Descriptions des paramètres de commande

queued-resource-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
node-id
ID attribué par l'utilisateur du TPU créé lors de l'allocation de la requête de ressource mise en file d'attente.
project
Votre Google Cloud projet
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 la section 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-central2-b',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v4-8',
        'runtime_version': 'tpu-vm-tf-2.18.0-pjrt',
        }
    }
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id

Descriptions des paramètres de commande

queued-resource-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
node-id
ID attribué par l'utilisateur du TPU créé lors de l'allocation de la requête de ressource mise en file d'attente.
project
Votre Google Cloud projet
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 la section 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 un nom pour votre TPU.

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

  5. Dans le champ 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 la section 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 la section Images de VM 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 un nom pour votre requête de ressource mise en file d'attente.

  9. Cliquez sur Créer pour créer votre requête 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-f";
    // 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 = "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 tpuSoftwareVersion = "tpu-vm-tf-2.14.1";
    // 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-b"
# tpu_name = "tpu-name"
# tpu_type = "v2-8"
# runtime_version = "tpu-vm-tf-2.17.0-pjrt"
# 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 = 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.state)
# Example response:
# projects/[project_id]/locations/[zone]/queuedResources/resource-name
# State.WAITING_FOR_RESOURCES

Tailles de tranche par défaut pour les ressources mises en file d'attente à la demande

Lorsque vous utilisez un quota à la demande, vous devez demander une taille de tranche inférieure à la limite par défaut pour le type d'accélérateur que vous utilisez. Les requêtes qui dépassent les limites par défaut sont refusées par le système.

Le tableau suivant présente les types de TPU et les limites par défaut associées.

Type d'accélérateur Limite par défaut (en nombre de TensorCores)
v2 128
v3 128
v4 384
v5 32

Si vous avez besoin de tailles de tranche plus importantes, contactez l'assistance Cloud TPU pour en savoir plus.

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 Google Cloud compte.

gcloud

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project \
    --zone us-central2-b \
    --accelerator-type v4-8 \
    --runtime-version tpu-vm-tf-2.18.0-pjrt \
    --reserved

Descriptions des paramètres de commande

queued-resource-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
node-id
ID attribué par l'utilisateur du TPU créé lors de l'allocation de la requête de ressource mise en file d'attente.
project
Votre Google Cloud projet
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 la section 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-central2-b',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v4-8',
        'runtime_version': 'tpu-vm-tf-2.18.0-pjrt',
        }
    }
    },
    'guaranteed': {
    'reserved': true,
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id

Descriptions des paramètres de commande

queued-resource-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
node-id
ID attribué par l'utilisateur du TPU créé lors de l'allocation de la requête de ressource mise en file d'attente.
project
Votre Google Cloud projet
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 la section 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 un nom pour votre TPU.

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

  5. Dans le champ 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 la section 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 la section Images de VM 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 un nom pour votre requête 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 requête de ressource mise en file d'attente.

Demander une ressource en file d'attente pour une 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-central2-b \
    --accelerator-type v4-8 \
    --runtime-version tpu-vm-tf-2.18.0-pjrt \
    --spot

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources 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 la section Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
spot
Option booléenne indiquant 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-central2-b',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v4-8',
        'runtime_version': 'tpu-vm-tf-2.18.0-pjrt'
        }
    }
    },
    'spot': {}
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources 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 la section Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
spot
Option booléenne indiquant 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 un nom pour votre TPU.

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

  5. Dans le champ 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 la section 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 la section Images de VM 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 un nom pour votre requête 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-f";
    // 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 = "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 tpuSoftwareVersion = "tpu-vm-tf-2.14.1";
    // 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-b"
# tpu_name = "tpu-name"
# tpu_type = "v2-8"
# runtime_version = "tpu-vm-tf-2.17.0-pjrt"
# 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 = 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.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 facultative dans une requête de ressources mise en file d'attente. L'heure de début ou la durée de début spécifie l'heure la plus précoce à laquelle la requête doit être traitée. L'heure de fin ou la durée de fin spécifient la durée pendant laquelle la requête reste valide. Si une demande n'a pas été satisfaite avant la date de fin ou la durée spécifiées, elle expire. Une fois la requête expirée, elle reste dans la file d'attente, mais ne peut plus être allouée.

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

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

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

Dans une requête de ressource mise 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 un TPU v4-4096 à allouer 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-central2-b \
    --accelerator-type v4-4096 \
    --runtime-version tpu-vm-tf-2.18.0-pod-pjrt \
    --valid-after-time 2022-12-14T09:00:00Z

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
Projet Google Cloud 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 la section Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-after-time
Heure à partir de laquelle la ressource doit être allouée. Pour en savoir plus sur les formats de durée, consultez Date et heure de la discussion Google Cloud CLI.

curl

La commande suivante demande un TPU v4-4096 à allouer 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-central2-b',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v4-4096',
        'runtime_version': 'tpu-vm-tf-2.18.0-pod-pjrt',
        }
    }
    },
    'queueing_policy': {
    'valid_after_time': {
        'seconds': 2022-12-14T09:00:00Z
    }
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
Projet Google Cloud 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 la section Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-after-time
Heure à partir de laquelle la ressource doit être allouée. Pour en savoir plus sur les formats de durée, consultez Date et heure de la discussion Google Cloud CLI.

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 un nom pour votre TPU.

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

  5. Dans le champ 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 la section 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 la section Images de VM 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 un nom pour votre requête de ressource mise en file d'attente.

  9. Dans le champ Démarrer la requête à, saisissez l'heure à partir de laquelle la ressource doit être allouée.

  10. Cliquez sur Créer pour créer votre requête de ressources mise en file d'attente.

L'exemple suivant demande l'allocation d'un v4-32 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-central2-b \
        --accelerator-type v4-32 \
        --runtime-version tpu-vm-tf-2.18.0-pod-pjrt \
        --valid-after-duration 6h

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
Projet Google Cloud 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 la section 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 section Date et heure de l'objet 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-central2-b',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v4-32',
        'runtime_version': 'tpu-vm-tf-2.18.0-pod-pjrt',
        }
    }
    },
'queueing_policy': {
    'valid_after_duration': {
        'seconds': 21600
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
Projet Google Cloud 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 la section 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 Date et heure de l'objet Google Cloud CLI

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 = "tpu-vm-tf-2.14.1";
    // 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 un délai spécifié

Dans une requête de ressources mise en file d'attente, vous pouvez spécifier la durée pendant laquelle une requête de ressources mise en file d'attente reste valide. Si la requête n'a pas été traitée avant l'heure ou la durée que vous spécifiez, elle expire.

gcloud

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

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-central2-b \
    --accelerator-type v4-4096 \
    --runtime-version tpu-vm-tf-2.18.0-pod-pjrt \
    --valid-until-time 2022-12-14T09:00:00Z

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources 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 la section Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-until-time
Heure à partir de laquelle la requête est annulée. Pour en savoir plus sur les formats de durée, consultez la section Date et heure de l'élément de la Google Cloud CLI.

curl

La commande suivante demande un TPU v4-4096. Si la demande n'est pas traitée d'ici le 14 décembre 2022 à 9h, 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-central2-b',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v4-4096',
        'runtime_version': 'tpu-vm-tf-2.18.0-pod-pjrt',
        }
    }
    },
    'queueing_policy': {
    'valid_until_time': {
        'seconds': 1655197200
    }
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources 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 la section Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-until-time
Heure à partir de laquelle la requête est annulée. Pour en savoir plus sur les formats de durée, consultez la section Date et heure de l'élément de la Google Cloud CLI.

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 un nom pour votre TPU.

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

  5. Dans le champ 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 la section 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 la section Images de VM 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 un nom pour votre requête de ressource mise en file d'attente.

  9. Dans le champ Cancel request on (Annuler la requête à partir de), saisissez l'heure à laquelle la requête de ressource mise en file d'attente doit expirer si elle n'est pas remplie.

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

L'exemple suivant demande une version v4-32. La demande expire si elle n'est pas traitée dans un délai 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-central2-b \
    --accelerator-type v4-32 \
    --runtime-version tpu-vm-tf-2.18.0-pod-pjrt \
    --valid-until-duration 6h

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
Projet Google Cloud 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 la section Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-until-duration
Durée de validité de la requête. Pour en savoir plus sur les formats de durée, consultez la section Date et heure de l'objet 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-central2-b',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v4-32',
        'runtime_version': 'tpu-vm-tf-2.18.0-pod-pjrt',
        }
    }
    },
'queueing_policy': {
    'valid_until_duration': {
        'seconds': 21600
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id

Descriptions des paramètres de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
node-id
ID défini par l'utilisateur du TPU créé en réponse à la requête.
project
Projet Google Cloud 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 la section Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-until-duration
Durée de validité de la requête. Pour en savoir plus sur les formats de durée, consultez la section Date et heure de l'objet 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-b"
# tpu_name = "tpu-name"
# tpu_type = "v2-8"
# runtime_version = "tpu-vm-tf-2.17.0-pjrt"
# 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 = 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 de début ou la durée, ainsi que l'heure de fin ou la durée.

gcloud

La commande suivante demande une version 4-32 dans cinq heures et 30 minutes à compter de l'heure actuelle, à créer au plus tard le 14 décembre 2022 à 9h.

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-central2-b \
    --accelerator-type v4-32 \
    --runtime-version tpu-vm-tf-2.18.0-pod-pjrt \
    --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 requête de ressources 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 la section Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-until-timw
Heure à partir de laquelle la requête est annulée. Pour en savoir plus sur les formats de durée, consultez la section Date et heure de l'élément de la Google Cloud CLI.
valid-until-duration
Durée de validité de la requête. Pour en savoir plus sur les formats de durée, consultez la section Date et heure de l'élément de la Google Cloud CLI.

curl

La commande suivante demande une version 4-32 dans cinq heures et 30 minutes à compter de l'heure actuelle, à créer au plus tard le 14 décembre 2022 à 9h.

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-central2-b',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v4-32',
        'runtime_version': 'tpu-vm-tf-2.18.0-pod-pjrt',
        }
    }
    },
'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-central2-b/queuedResources?queued_resource_id=your-queued-resource-id

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources 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 la section Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
valid-until-timw
Heure à partir de laquelle la requête est annulée. Pour en savoir plus sur les formats de durée, consultez la section Date et heure de l'élément de la Google Cloud CLI.
valid-until-duration
Durée de validité de la requête. Pour en savoir plus sur les formats de durée, consultez la section Date et heure de l'élément de la Google Cloud CLI.

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 un nom pour votre TPU.

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

  5. Dans le champ 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 la section 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 la section Images de VM 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 un nom pour votre requête de ressource mise en file d'attente.

  9. Dans le champ Début de la requête, saisissez l'heure à partir de laquelle la ressource doit être allouée.

  10. Dans le champ Cancel request on (Annuler la requête à partir de), saisissez l'heure à laquelle la requête de ressource mise en file d'attente doit expirer si elle n'est pas remplie.

  11. Cliquez sur Créer pour créer votre requête de ressources 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 de script. L'exemple suivant crée une requête 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 \
    --zone us-central2-b \
    --accelerator-type v4-8 \
    --runtime-version tpu-vm-tf-2.12.0 \
    --metadata-from-file='startup-script=startup-script.sh'

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources 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 la section Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
validInterval
Durée de validité de la requête, au terme de laquelle elle est annulée. Pour en savoir plus sur les formats de durée, consultez la section Date et heure de la discussion Google Cloud CLI.
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 part du principe qu'il se trouve dans le répertoire actuel. Dans cet exemple, le fichier contient un script de démarrage qui s'exécute 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-central2-b',
        node_id: 'your-node-id',
        node: {
            accelerator_type: 'v2-8',
            runtime_version: 'tpu-vm-tf-2.18.0-pjrt',
            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-central2-b/queuedResources?queued_resource_id=your-queued-resource-id

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources 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 la section Versions de TPU.
runtime-version
Version du logiciel Cloud TPU.
validInterval
Durée de validité de la requête, au terme de laquelle elle est annulée. Pour en savoir plus sur les formats de durée, consultez la section Date et heure de la discussion Google Cloud CLI.
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 part du principe qu'il se trouve dans le répertoire actuel. Dans cet exemple, le fichier contient un script de démarrage qui s'exécute 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 = "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 tpuSoftwareVersion = "tpu-vm-tf-2.14.1";
    // 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-b"
# tpu_name = "tpu-name"
# tpu_type = "v2-8"
# runtime_version = "tpu-vm-tf-2.17.0-pjrt"
# 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 = 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 requête 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 \
    --zone us-central2-b \
    --accelerator-type v4-8 \
    --runtime-version tpu-vm-tf-2.18.0-pjrt \
    --network network-name \
    --subnetwork subnetwork-name

Descriptions des paramètres de commande

queued-resource-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
node-id
ID attribué par l'utilisateur du TPU créé lors de l'allocation de la requête de ressource mise en file d'attente.
project
Votre Google Cloud projet
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 la section 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 mise en file d'attente appartient.
subnetwork
Sous-réseau auquel la ressource mise en file d'attente fera partie.

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-central2-b',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v4-8',
        'runtime_version': 'tpu-vm-tf-2.18.0-pjrt',
        '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-central2-b/queuedResources?queued_resource_id=your-queued-resource-id

Descriptions des paramètres de commande

queued-resource-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
node-id
ID attribué par l'utilisateur du TPU créé lors de l'allocation de la requête de ressource mise en file d'attente.
project
Votre Google Cloud projet
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 la section 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 mise en file d'attente appartient.
subnetwork
Sous-réseau auquel la ressource mise en file d'attente fera partie.

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 un nom pour votre TPU.

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

  5. Dans le champ 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 la section 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 la section Images de VM 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 un nom pour votre requête 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 requête de ressources 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 = "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 tpuSoftwareVersion = "tpu-vm-tf-2.14.1";
    // 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-b"
# tpu_name = "tpu-name"
# tpu_type = "v2-8"
# runtime_version = "tpu-vm-tf-2.17.0-pjrt"
# 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 = 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 requête de ressource en file d'attente

Vous pouvez supprimer une requête de ressource en file d'attente et le TPU associé à la requête en supprimant la requête 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 my-project \
    --zone us-central2-b \
    --force \
    --async

Description des options de commande

your-queued-resource-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
project
Projet Google Cloud 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 requête 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/my-project/locations/us-central2-b/queuedResources/your-queued-resource-id?force=true

Description des options de commande

your-queued-resource-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
project
Projet Google Cloud 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 requête 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 ressources mise 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 illustré dans l'exemple suivant. Lorsque vous supprimez le TPU, la requête de ressource mise 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 \
    --zone=zone \
    --quiet

Description des options de commande

project
Projet Google Cloud dans lequel la ressource mise en file d'attente est allouée.
zone
Zone du Cloud TPU à supprimer.
your-node-id
Nom du 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-central2-b

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
project
Projet Google Cloud 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-central2-b/nodes?node_id=your-node-id

Description des options de commande

project
Projet Google Cloud dans lequel la ressource mise en file d'attente est allouée.
zone
Zone du Cloud TPU à supprimer.
your-node-id
Nom du 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-central2-b/queuedResources/your-queued-resource-id

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources mise en file d'attente.
project
Projet Google Cloud 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 Suspendu. Lorsque votre ressource en file d'attente est à l'état Suspendu, vous pouvez la supprimer:

  1. Cliquez sur l'onglet Ressources en file d'attente.
  2. Cochez la case à côté de votre demande de ressources mise 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 l'état et les informations de diagnostic d'une requête de ressource mise en file d'attente

Récupérez l'état et les informations de diagnostic d'une requête de ressource mise en file d'attente:

gcloud

gcloud compute tpus queued-resources describe queued-resource-request-id \
    --project your-project-id \
    --zone us-central2-b

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources 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-central2-b/queuedResources/your-queued-resource-id

Description des options de commande

queued-resource-request-id
ID attribué par l'utilisateur à la requête de ressources 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 ressources mise en file d'attente.

Une fois votre TPU provisionné, vous pouvez également consulter les détails de votre demande de ressources mise en file d'attente en accédant à la page TPU, en recherchant votre TPU, puis en cliquant sur le nom de la demande de ressources mise 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.state)
# Example response:
# Resource name: projects/{project_id}/locations/{zone}/queuedResources/resource-name
# State.ACTIVE

Si la requête échoue, la sortie contient des informations d'erreur. Pour une requête qui attend des ressources, le résultat ressemble à ceci:

gcloud

    name: projects/your-project-id/locations/us-central2-b/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-central2-b/queuedResources/your-queued-resource-id
        runtimeVersion: tpu-vm-tf-2.10.0
        schedulingConfig: {}
        serviceAccount: {}
        shieldedInstanceConfig: {}
        useTpuVm: true
        nodeId: your-node-id
        parent: projects/your-project-number/locations/us-central2-b

Console

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

Lister les requêtes de ressources en file d'attente dans votre projet

Répertoriez les requêtes de ressources en file d'attente de votre projet:

gcloud

gcloud compute tpus queued-resources list --project your-project-id \
    --zone us-central2-b

Description des options de commande

project
Projet Google Cloud 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-central2-b/queuedResources

Description des options de commande

project
Projet Google Cloud 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