Gestire le risorse in coda

Le risorse in coda ti consentono di richiedere risorse Cloud TPU mettendole in coda. Quando richiedi le risorse in coda, la richiesta viene aggiunta a una coda gestita dal servizio Cloud TPU. Quando la risorsa richiesta diventa disponibile, viene assegnata al tuo Google Cloud progetto per il tuo uso esclusivo immediato. Rimarrà assegnata al tuo progetto, a meno che non la elimini o non venga anticipata. Solo le VM TPU spot e le TPU prerilasciabili sono idonee per il prerilascio.

Puoi specificare un'ora di inizio e di fine facoltativa in una richiesta di risorse in coda. L'ora di inizio specifica l'ora più antica in cui soddisfare la richiesta. Se una richiesta non è stata soddisfatta entro l'ora di fine specificata, scade. La richiesta rimane in coda dopo la scadenza.

Le richieste di risorse in coda possono trovarsi in uno dei seguenti stati:

WAITING_FOR_RESOURCES
La richiesta ha superato la convalida iniziale ed è stata aggiunta alla coda. Rimane in questo stato finché non sono disponibili risorse libere sufficienti per iniziare il provisioning della richiesta o non scade l'intervallo di allocazione. Quando la domanda è elevata, non è possibile eseguire il provisioning immediato di tutte le richieste. Se hai bisogno di una disponibilità più affidabile delle TPU, ti consigliamo di acquistare una prenotazione.
PROVISIONING
La richiesta è stata selezionata dalla coda e le relative risorse sono in fase di allocazione.
ACTIVE
La richiesta è stata allocata. Quando le richieste di risorse in coda sono nello stato ACTIVE, puoi gestire le VM TPU come descritto in Gestire le TPU.
FAILED
Non è stato possibile completare la richiesta perché si è verificato un problema con la richiesta o perché le risorse richieste non erano disponibili nell'intervallo di allocazione. La richiesta rimane in coda finché non viene eliminata esplicitamente.
SUSPENDING
Le risorse associate alla richiesta vengono eliminate.
SUSPENDED
Le risorse specificate nella richiesta sono state eliminate. Quando una richiesta è nello stato SUSPENDED, non è più idonea per un'ulteriore allocazione.

Prerequisiti

Prima di eseguire i comandi in questa guida, devi installare Google Cloud CLI, creare un Google Cloud progetto e abilitare l'API Cloud TPU. Per le istruzioni, consulta Configurare l'ambiente Cloud TPU.

Richiedere una risorsa in coda on demand

Le risorse on demand non verranno prelevate, ma la quota on demand non garantisce che ci siano risorse Cloud TPU sufficienti per soddisfare la tua richiesta. Per ulteriori informazioni sulle risorse on demand, consulta Tipi di quote.

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

Descrizioni dei parametri dei comandi

queued-resource-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID assegnato dall'utente della TPU che viene creato quando viene allocata la richiesta di risorse in coda.
project
Il tuo Google Cloud progetto.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software 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

Descrizioni dei parametri dei comandi

queued-resource-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID assegnato dall'utente della TPU che viene creato quando viene allocata la richiesta di risorsa in coda.
project
Il tuo Google Cloud progetto.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.

Console

  1. Nella console Google Cloud, vai alla pagina TPU:

    Vai alle TPU

  2. Fai clic su Crea TPU.

  3. Nel campo Nome, inserisci un nome per la TPU.

  4. Nella casella Zona, seleziona la zona in cui vuoi creare la TPU.

  5. Nella casella Tipo TPU, seleziona un tipo di acceleratore. Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione TPU, consulta Versioni TPU.

  6. Nella casella Versione software TPU, seleziona una versione software. Quando crei una VM Cloud TPU, la versione software TPU specifica la versione del runtime TPU da installare. Per ulteriori informazioni, consulta le immagini VM TPU.

  7. Fai clic sul pulsante di attivazione/disattivazione Attiva l'inserimento in coda.

  8. Nel campo Nome della risorsa in coda, inserisci un nome per la richiesta di risorsa in coda.

  9. Fai clic su Crea per creare la richiesta di risorse in coda.

Java

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Dimensioni dei segmenti predefinite per le risorse in coda on demand

Quando utilizzi la quota on demand, devi richiedere una dimensione del segmento inferiore al limite predefinito per il tipo di acceleratore in uso. Le richieste che superano i limiti predefiniti vengono rifiutate dal sistema.

La tabella seguente mostra i tipi di TPU e i relativi limiti predefiniti associati.

Tipo di acceleratore Limite predefinito (in numero di TensorCore)
v2 128
v3 128
v4 384
v5 32

Se hai bisogno di dimensioni dei segmenti più grandi, contatta l'assistenza di Cloud TPU per ulteriori informazioni.

Richiedere una risorsa in coda utilizzando una prenotazione

Puoi richiedere una risorsa in coda utilizzando una prenotazione. Per acquistare una prenotazione, contatta il Google Cloud team dedicato al tuo account.

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

Descrizioni dei parametri dei comandi

queued-resource-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID assegnato dall'utente della TPU che viene creato quando viene allocata la richiesta di risorse in coda.
project
Il tuo Google Cloud progetto.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
reserved
Utilizza questo flag quando richiedi risorse in coda nell'ambito di una prenotazione 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

Descrizioni dei parametri dei comandi

queued-resource-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID assegnato dall'utente della TPU che viene creato quando viene allocata la richiesta di risorsa in coda.
project
Il tuo Google Cloud progetto.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
reserved
Utilizza questo flag quando richiedi risorse in coda nell'ambito di una prenotazione Cloud TPU.

Console

  1. Nella console Google Cloud, vai alla pagina TPU:

    Vai alle TPU

  2. Fai clic su Crea TPU.

  3. Nel campo Nome, inserisci un nome per la TPU.

  4. Nella casella Zona, seleziona la zona in cui vuoi creare la TPU.

  5. Nella casella Tipo TPU, seleziona un tipo di acceleratore. Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione TPU, consulta Versioni TPU.

  6. Nella casella Versione software TPU, seleziona una versione software. Quando crei una VM Cloud TPU, la versione software TPU specifica la versione del runtime TPU da installare. Per ulteriori informazioni, consulta le immagini VM TPU.

  7. Fai clic sul pulsante di attivazione/disattivazione Attiva l'inserimento in coda.

  8. Nel campo Nome della risorsa in coda, inserisci un nome per la richiesta di risorsa in coda.

  9. Espandi la sezione Gestione.

  10. Seleziona la casella di controllo Utilizza prenotazione esistente.

  11. Fai clic su Crea per creare la richiesta di risorse in coda.

Richiedere una risorsa in coda di VM spot TPU

Una VM spot è una risorsa che può essere prerilasciata e assegnata a un altro carico di lavoro in qualsiasi momento. Le risorse VM spot costano meno e potresti accedere alle risorse prima rispetto a una richiesta di VM non spot. Per ulteriori informazioni sulle VM spot TPU, consulta Gestire le 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

Descrizioni dei parametri dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
L'ID del progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
spot
Un flag booleano che specifica che la risorsa in coda è una VM Spot.

curl

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    'tpu': {
    'node_spec': {
        'parent': 'projects/your-project-number/locations/us-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

Descrizioni dei parametri dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
L'ID del progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
spot
Un flag booleano che specifica che la risorsa in coda è una VM Spot.

Console

  1. Nella console Google Cloud, vai alla pagina TPU:

    Vai alle TPU

  2. Fai clic su Crea TPU.

  3. Nel campo Nome, inserisci un nome per la TPU.

  4. Nella casella Zona, seleziona la zona in cui vuoi creare la TPU.

  5. Nella casella Tipo TPU, seleziona un tipo di acceleratore. Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione TPU, consulta Versioni TPU.

  6. Nella casella Versione software TPU, seleziona una versione software. Quando crei una VM Cloud TPU, la versione software TPU specifica la versione del runtime TPU da installare. Per ulteriori informazioni, consulta le immagini VM TPU.

  7. Fai clic sul pulsante di attivazione/disattivazione Attiva l'inserimento in coda.

  8. Nel campo Nome della risorsa in coda, inserisci un nome per la richiesta di risorsa in coda.

  9. Espandi la sezione Gestione.

  10. Seleziona la casella di controllo Crea una VM spot TPU.

  11. Fai clic su Crea.

Java

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Richiedere l'allocazione di una risorsa in coda prima o dopo un'ora specificata

Puoi specificare un'ora di inizio o una ora di fine facoltative in una richiesta di risorse in coda. L'ora di inizio o la durata di inizio specificano l'ora più antica in cui soddisfare la richiesta. L'ora di fine o la durata di fine specificano per quanto tempo la richiesta rimane valida. Se una richiesta non viene soddisfatta entro l'ora di fine specificata o entro la durata specificata, la richiesta scade. Una volta scaduta, la richiesta rimane in coda, ma non è più idonea per l'allocazione.

Puoi anche specificare un intervallo di allocazione specificando un'ora di inizio o una durata e un'ora di fine o una durata.

Per un elenco dei formati di timestamp e durata supportati, consulta Data e ora.

Richiedi l'evasione di una risorsa in coda dopo un orario specificato

In una richiesta di risorse in coda, puoi specificare un orario o una durata dopo la quale deve essere allocata una risorsa.

gcloud

Il seguente comando richiede una TPU v4-4096 da allocare dopo le 09:00 del 14 dicembre 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

Descrizioni dei parametri dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
valid-after-time
L'ora dopo la quale deve essere allocata la risorsa. Per ulteriori informazioni sui formati della durata, consulta l'argomento Datatime della CLI di Google Cloud.

curl

Il seguente comando richiede una TPU v4-4096 da allocare dopo le 09:00 del 14 dicembre 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

Descrizioni dei parametri dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
valid-after-time
L'ora dopo la quale deve essere allocata la risorsa. Per ulteriori informazioni sui formati della durata, consulta l'argomento Datatime della CLI di Google Cloud.

Console

  1. Nella console Google Cloud, vai alla pagina TPU:

    Vai alle TPU

  2. Fai clic su Crea TPU.

  3. Nel campo Nome, inserisci un nome per la TPU.

  4. Nella casella Zona, seleziona la zona in cui vuoi creare la TPU.

  5. Nella casella Tipo TPU, seleziona un tipo di acceleratore. Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione TPU, consulta Versioni TPU.

  6. Nella casella Versione software TPU, seleziona una versione software. Quando crei una VM Cloud TPU, la versione software TPU specifica la versione del runtime TPU da installare. Per ulteriori informazioni, consulta le immagini VM TPU.

  7. Fai clic sul pulsante di attivazione/disattivazione Attiva l'inserimento in coda.

  8. Nel campo Nome della risorsa in coda, inserisci un nome per la richiesta di risorsa in coda.

  9. Nel campo Inizia richiesta il, inserisci l'ora dopo la quale deve essere allocata la risorsa.

  10. Fai clic su Crea per creare la richiesta di risorse in coda.

L'esempio seguente richiede l'allocazione di un token v4-32 dopo sei ore.

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

Descrizioni dei parametri dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
valid-after-duration
La durata prima della quale non deve essere eseguito il provisioning della TPU. Per ulteriori informazioni sui formati della durata, consulta l'argomento datetime di 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

Descrizioni dei parametri dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
valid-after-duration
La durata prima della quale non deve essere eseguito il provisioning della TPU. Per ulteriori informazioni sui formati della durata, consulta l'argomento datetime di Google Cloud CLI

Java

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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();
    }
  }
}

Richiedi una risorsa in coda che scade dopo un'ora specificata

In una richiesta di risorse in coda, puoi specificare per quanto tempo la richiesta rimane valida. Se la richiesta non viene soddisfatta entro l'ora o la durata specificata, scade.

gcloud

Il comando seguente richiede una TPU v4-4096. Se la richiesta non viene soddisfatta entro il 14 dicembre 2022 alle 09:00, scade.

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

Descrizioni dei parametri dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
L'ID del progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
valid-until-time
L'ora dopo la quale la richiesta viene annullata. Per ulteriori informazioni sui formati della durata, consulta l'argomento Datatime della CLI Google Cloud.

curl

Il comando seguente richiede una TPU v4-4096. Se la richiesta non viene soddisfatta entro le 09:00 (ora italiana) del 14 dicembre 2022, scade.

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

Descrizioni dei parametri dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
L'ID del progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
valid-until-time
L'ora dopo la quale la richiesta viene annullata. Per ulteriori informazioni sui formati della durata, consulta l'argomento Datatime della CLI Google Cloud.

Console

  1. Nella console Google Cloud, vai alla pagina TPU:

    Vai alle TPU

  2. Fai clic su Crea TPU.

  3. Nel campo Nome, inserisci un nome per la TPU.

  4. Nella casella Zona, seleziona la zona in cui vuoi creare la TPU.

  5. Nella casella Tipo TPU, seleziona un tipo di acceleratore. Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione TPU, consulta Versioni TPU.

  6. Nella casella Versione software TPU, seleziona una versione software. Quando crei una VM Cloud TPU, la versione software TPU specifica la versione del runtime TPU da installare. Per ulteriori informazioni, consulta Immagini VM TPU.

  7. Fai clic sul pulsante di attivazione/disattivazione Attiva l'inserimento in coda.

  8. Nel campo Nome della risorsa in coda, inserisci un nome per la richiesta di risorsa in coda.

  9. Nel campo Annulla richiesta su, inserisci la data e l'ora di scadenza della richiesta di risorse in coda se non viene soddisfatta.

  10. Fai clic su Crea per creare la richiesta di risorse in coda.

L'esempio seguente richiede una versione 4-32. La richiesta scade se non viene compilata in sei ore.

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

Descrizioni dei parametri dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
valid-until-duration
La durata di validità della richiesta. Per saperne di più sui formati della durata, consulta l'argomento datetime di 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

Descrizioni dei parametri dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
valid-until-duration
La durata di validità della richiesta. Per saperne di più sui formati della durata, consulta l'argomento datetime di Google Cloud CLI

Python

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Richiedi l'allocazione di una risorsa in coda in un intervallo specificato

Puoi specificare un intervallo di allocazione specificando sia la data e l'ora di inizio sia la data e l'ora di fine.

gcloud

Il seguente comando richiede una versione v4-32 tra 5 ore e 30 minuti dall'ora corrente, da creare entro le 09:00 del 14 dicembre 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-32 \
    --runtime-version tpu-vm-tf-2.18.0-pod-pjrt \
    --valid-after-duration 5h30m \
    --valid-until-time 2022-12-14T09:00:00Z

Descrizioni dei flag dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
L'ID del progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
valid-until-timw
L'ora dopo la quale la richiesta viene annullata. Per ulteriori informazioni sui formati della durata, consulta l'argomento datetime della CLI Google Cloud.
valid-until-duration
La durata di validità della richiesta. Per ulteriori informazioni sui formati della durata, consulta l'argomento Datatime della CLI Google Cloud.

curl

Il seguente comando richiede una versione v4-32 tra 5 ore e 30 minuti dall'ora corrente, da creare entro le 09:00 del 14 dicembre 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-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

Descrizioni dei flag dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
L'ID del progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
valid-until-timw
L'ora dopo la quale la richiesta viene annullata. Per ulteriori informazioni sui formati della durata, consulta l'argomento datetime della CLI Google Cloud.
valid-until-duration
La durata di validità della richiesta. Per ulteriori informazioni sui formati della durata, consulta l'argomento datetime della CLI Google Cloud.

Console

  1. Nella console Google Cloud, vai alla pagina TPU:

    Vai alle TPU

  2. Fai clic su Crea TPU.

  3. Nel campo Nome, inserisci un nome per la TPU.

  4. Nella casella Zona, seleziona la zona in cui vuoi creare la TPU.

  5. Nella casella Tipo TPU, seleziona un tipo di acceleratore. Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione TPU, consulta Versioni TPU.

  6. Nella casella Versione software TPU, seleziona una versione software. Quando crei una VM Cloud TPU, la versione software TPU specifica la versione del runtime TPU da installare. Per ulteriori informazioni, consulta Immagini VM TPU.

  7. Fai clic sul pulsante di attivazione/disattivazione Attiva l'inserimento in coda.

  8. Nel campo Nome della risorsa in coda, inserisci un nome per la richiesta di risorsa in coda.

  9. Nel campo Inizia richiesta il, inserisci l'ora dopo la quale deve essere allocata la risorsa.

  10. Nel campo Annulla richiesta su, inserisci la data e l'ora di scadenza della richiesta di risorse in coda se non viene soddisfatta.

  11. Fai clic su Crea per creare la richiesta di risorse in coda.

Richiedere una risorsa in coda con uno script di avvio

Puoi specificare uno script da eseguire su una risorsa in coda dopo il provisioning.

gcloud

Quando utilizzi il comando gcloud, puoi utilizzare il flag --metadata o --metadata-from-file per specificare rispettivamente un comando dello script o un file contenente il codice dello script. L'esempio seguente crea una richiesta di risorsa in coda che eseguirà lo 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'

Descrizioni dei flag dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
L'ID del progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
validInterval
L'ora entro la quale la richiesta è valida, dopodiché viene annullata. Per ulteriori informazioni sui formati della durata, consulta l'argomento datetime della CLI Google Cloud.
metadata-from-file
Specifica un file contenente metadati. Se non specifichi un percorso completo del file dei metadati, il comando presume che si trovi nella directory corrente. In questo esempio, il file contiene uno script di avvio che viene eseguito al momento del provisioning della risorsa in coda.
metadata
Specifica i metadati per la richiesta. In questo esempio, i metadati sono un comando dello script di avvio eseguito quando viene eseguito il provisioning della risorsa in coda.

curl

Quando utilizzi curl, devi includere il codice dello script nei contenuti JSON. L'esempio seguente include uno script incorporato nel corpo 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

Descrizioni dei flag dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID definito dall'utente della TPU creata in risposta alla richiesta.
project
L'ID del progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
validInterval
L'ora entro la quale la richiesta è valida, dopodiché viene annullata. Per ulteriori informazioni sui formati della durata, consulta l'argomento datetime della CLI Google Cloud.
metadata-from-file
Specifica un file contenente metadati. Se non specifichi un percorso completo del file dei metadati, il comando presume che si trovi nella directory corrente. In questo esempio, il file contiene uno script di avvio che viene eseguito al momento del provisioning della risorsa in coda.
metadata
Specifica i metadati per la richiesta. In questo esempio, i metadati sono un comando dello script di avvio eseguito quando viene eseguito il provisioning della risorsa in coda.

Java

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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    '}

Richiedere una risorsa in coda con una rete e una subnet specificate

In una richiesta di risorse in coda, puoi specificare una rete e una subnet a cui collegare la 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

Descrizioni dei parametri dei comandi

queued-resource-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID assegnato dall'utente della TPU che viene creato quando viene allocata la richiesta di risorsa in coda.
project
Il tuo Google Cloud progetto.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
reserved
Utilizza questo flag quando richiedi risorse in coda nell'ambito di una prenotazione Cloud TPU.
network
Una rete a cui la risorsa in coda farà parte.
subnetwork
Una subnet di cui farà parte la risorsa in coda.

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

Descrizioni dei parametri dei comandi

queued-resource-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
node-id
L'ID assegnato dall'utente della TPU che viene creato quando viene allocata la richiesta di risorsa in coda.
project
Il tuo Google Cloud progetto.
zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
runtime-version
La versione del software Cloud TPU.
reserved
Utilizza questo flag quando richiedi risorse in coda nell'ambito di una prenotazione Cloud TPU.
network
Una rete a cui la risorsa in coda farà parte.
subnetwork
Una subnet di cui farà parte la risorsa in coda.

Console

  1. Nella console Google Cloud, vai alla pagina TPU:

    Vai alle TPU

  2. Fai clic su Crea TPU.

  3. Nel campo Nome, inserisci un nome per la TPU.

  4. Nella casella Zona, seleziona la zona in cui vuoi creare la TPU.

  5. Nella casella Tipo TPU, seleziona un tipo di acceleratore. Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione TPU, consulta Versioni TPU.

  6. Nella casella Versione software TPU, seleziona una versione software. Quando crei una VM Cloud TPU, la versione software TPU specifica la versione del runtime TPU da installare. Per ulteriori informazioni, consulta Immagini VM TPU.

  7. Fai clic sul pulsante di attivazione/disattivazione Attiva l'inserimento in coda.

  8. Nel campo Nome della risorsa in coda, inserisci un nome per la richiesta di risorsa in coda.

  9. Espandi la sezione Rete.

  10. Nei campi Rete e Subnet, seleziona la rete e la subnet che vuoi utilizzare.

  11. Fai clic su Crea per creare la richiesta di risorse in coda.

Java

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Eliminare una richiesta di risorsa in coda

Puoi eliminare una richiesta di risorse in coda e la TPU associata alla richiesta eliminando la richiesta di risorse in coda:

gcloud

Passa il flag --force al comando queued-resource delete:

gcloud compute tpus queued-resources delete your-queued-resource-id \
    --project my-project \
    --zone us-central2-b \
    --force \
    --async

Descrizioni dei flag dei comandi

your-queued-resource-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona della Cloud TPU da eliminare.
force
Elimina sia la VM TPU sia la richiesta di risorsa in coda.

curl

Utilizza il parametro di query force=true nella richiesta 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

Descrizioni dei flag dei comandi

your-queued-resource-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona della Cloud TPU da eliminare.
force
Elimina sia la VM TPU sia la richiesta di risorsa in coda.

Console

  1. Nella console Google Cloud, vai alla pagina TPU:

    Vai alle TPU

  2. Fai clic sulla scheda Risorse in coda.

  3. Seleziona la casella di controllo accanto alla richiesta di risorse in coda.

  4. Fai clic su Elimina.

Java

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Se elimini direttamente la TPU, devi eliminare anche la risorsa in coda, come mostrato nell'esempio seguente. Quando elimini la TPU, la richiesta di risorsa in coda passa allo stato SUSPENDED, dopodiché può essere eliminata.

gcloud

Elimina la TPU:

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

Descrizioni dei flag dei comandi

project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona della Cloud TPU da eliminare.
your-node-id
Il nome della TPU che vuoi eliminare.

Quando elimini la TPU, la risorsa in coda associata passa allo stato SUSPENDING e poi allo stato SUSPENDED. Quando la risorsa in coda è nello stato SUSPENDED, puoi eliminarla:

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

Descrizioni dei flag dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona della Cloud TPU da eliminare.

curl

Elimina la TPU:

curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://tpu.googleapis.com/v2/projects/your-project/locations/us-central2-b/nodes?node_id=your-node-id

Descrizioni dei flag dei comandi

project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona della Cloud TPU da eliminare.
your-node-id
Il nome della TPU che vuoi eliminare.

Quando elimini la TPU, la risorsa in coda associata passa allo stato SUSPENDING e poi allo stato SUSPENDED. Quando la risorsa in coda è nello stato SUSPENDED, puoi eliminarla:

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

Descrizioni dei flag dei comandi

queued-resource-request-id
L'ID assegnato dall'utente alla richiesta di risorsa in coda.
project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona della Cloud TPU da eliminare.

Console

Elimina la TPU:

  1. Nella console Google Cloud, vai alla pagina TPU:

    Vai alle TPU

  2. Seleziona la casella di controllo accanto alla TPU.

  3. Fai clic su Elimina.

Quando elimini la TPU, la risorsa in coda associata passa allo stato In sospensione e poi allo stato Sospesa. Quando la risorsa in coda è nello stato Sospesa, puoi eliminarla:

  1. Fai clic sulla scheda Risorse in coda.
  2. Seleziona la casella di controllo accanto alla richiesta di risorse in coda.
  3. Fai clic su Elimina.

Java

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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");
    }
  }
}

Quando elimini la TPU, la risorsa in coda associata passa allo stato SUSPENDING e poi allo stato SUSPENDED. Quando la risorsa in coda è nello stato SUSPENDED, puoi eliminarla:

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

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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)

Quando elimini la TPU, la risorsa in coda associata passa allo stato SUSPENDING e poi allo stato SUSPENDED. Quando la risorsa in coda è nello stato SUSPENDED, puoi eliminarla:

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

Recuperare informazioni sullo stato e sulla diagnostica di una richiesta di risorse in coda

Recupera lo stato e le informazioni di diagnostica di una richiesta di risorsa in coda:

gcloud

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

Descrizioni dei flag dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
project
L'ID del progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.

curl

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://tpu.googleapis.com/v2/projects/your-project-id/locations/us-central2-b/queuedResources/your-queued-resource-id

Descrizioni dei flag dei comandi

queued-resource-request-id
L'ID assegnato dall'utente della richiesta di risorsa in coda.
project
L'ID del progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.

Console

  1. Nella console Google Cloud, vai alla pagina TPU:

    Vai alle TPU

  2. Fai clic sulla scheda Risorse in coda.

  3. Fai clic sul nome della richiesta di risorsa in coda.

Dopo aver eseguito il provisioning della TPU, puoi anche visualizzare i dettagli della richiesta di risorsa in coda andando alla pagina TPU, individuando la TPU e facendo clic sul nome della richiesta di risorsa in coda corrispondente.

Java

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Se la richiesta non va a buon fine, l'output conterrà informazioni sugli errori. Per una richiesta in attesa di risorse, l'output è simile al seguente:

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

Il campo Stato risorsa in coda mostra In attesa di risorse.

Elenca le richieste di risorse in coda nel tuo progetto

Elenca le richieste di risorse in coda nel tuo progetto:

gcloud

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

Descrizioni dei flag dei comandi

project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.

curl

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://tpu.googleapis.com/v2/projects/your-project-id/locations/us-central2-b/queuedResources

Descrizioni dei flag dei comandi

project
Il Google Cloud progetto in cui è allocata la risorsa in coda.
zone
La zona in cui prevedi di creare la Cloud TPU.

Console

  1. Nella console Google Cloud, vai alla pagina TPU:

    Vai alle TPU

  2. Fai clic sulla scheda Risorse in coda.

Java

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per autenticarti a Cloud TPU, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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