Faça a gestão dos recursos em fila

Os recursos em fila permitem-lhe pedir recursos de Cloud TPU de forma organizada em fila. Quando pede recursos em fila, o pedido é adicionado a uma fila mantida pelo serviço Cloud TPU. Quando o recurso pedido fica disponível, é atribuído ao seu Google Cloud projeto para sua utilização exclusiva imediata. Permanece atribuído ao seu projeto, a menos que o elimine ou seja antecipado. Apenas as VMs Spot de TPU e as TPUs preemptíveis são elegíveis para a preempção.

Pode especificar uma hora de início e de fim opcional num pedido de recurso em fila. A hora de início especifica a hora mais antiga em que o pedido deve ser preenchido. Se um pedido não for preenchido até à hora de fim especificada, o pedido expira. O pedido permanece na fila após expirar.

Os pedidos de recursos em fila podem estar num dos seguintes estados:

WAITING_FOR_RESOURCES
O pedido passou na validação inicial e foi adicionado à fila. Permanece neste estado até existirem recursos gratuitos suficientes para começar o aprovisionamento do seu pedido ou o intervalo de atribuição expirar. Quando a procura é elevada, nem todos os pedidos podem ser imediatamente aprovisionados. Se precisar de uma obtenção mais fiável de TPUs, pondere comprar uma reserva.
PROVISIONING
O pedido foi selecionado na fila e os respetivos recursos estão a ser atribuídos.
ACTIVE
O pedido foi atribuído. Quando os pedidos de recursos em fila estão no estado ACTIVE, pode gerir as suas VMs de TPU conforme descrito em Gerir TPUs.
FAILED
Não foi possível concluir o pedido porque existe um problema com o pedido ou os recursos pedidos não estavam disponíveis no intervalo de atribuição. O pedido permanece na fila até ser eliminado explicitamente.
SUSPENDING
Os recursos associados ao pedido estão a ser eliminados.
SUSPENDED
Os recursos especificados no pedido foram eliminados. Quando um pedido se encontra no estado SUSPENDED, deixa de ser elegível para atribuição adicional.

Pré-requisitos

Antes de executar os comandos neste guia, tem de instalar a CLI Google Cloud, criar um Google Cloud projeto e ativar a API Cloud TPU. Para ver instruções, consulte o artigo Configure o ambiente do Cloud TPU.

Se estiver a usar uma das bibliotecas de cliente da nuvem, siga as instruções de configuração para o idioma que está a usar:

Peça um recurso em fila de espera a pedido

Os recursos a pedido não são antecipados, mas a quota a pedido não garante que existam recursos de Cloud TPU suficientes disponíveis para satisfazer o seu pedido. Para mais informações sobre os recursos a pedido, consulte os tipos de quota.

gcloud

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-central1-a \
    --accelerator-type v5litepod-8 \
    --runtime-version v2-alpha-tpuv5-lite

Descrições dos parâmetros de comandos

queued-resource-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID atribuído pelo utilizador da TPU que é criado quando o pedido de recurso em fila é atribuído.
project
O seu Google Cloud projeto.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do 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-central1-a',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v5litepod-8',
        'runtime_version': 'v2-alpha-tpuv5-lite',
        }
    }
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central1-a/queuedResources?queued_resource_id=your-queued-resource-id

Descrições dos parâmetros de comandos

queued-resource-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID atribuído pelo utilizador da TPU que é criado quando o pedido de recurso em fila é atribuído.
project
O seu Google Cloud projeto.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.

Consola

  1. Na Google Cloud consola, aceda à página TPUs:

    Aceder às TPUs

  2. Clique em Criar TPU.

  3. No campo Nome, introduza um nome para a TPU.

  4. Na caixa Zona, selecione a zona onde quer criar a TPU.

  5. Na caixa Tipo de TPU, selecione um tipo de acelerador. O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.

  6. Na caixa Versão do software da TPU, selecione uma versão do software. Quando cria uma VM do Cloud TPU, a versão do software da TPU especifica a versão do tempo de execução da TPU a instalar. Para mais informações, consulte o artigo Versões de software da TPU.

  7. Clique no botão de ativar/desativar Ativar colocação em fila.

  8. No campo Nome do recurso em fila, introduza um nome para o seu pedido de recurso em fila.

  9. Clique em Criar para criar o pedido de recursos em fila.

Java

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import com.google.cloud.tpu.v2alpha1.CreateQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.Node;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateQueuedResource {
  public static void main(String[] args)
          throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "us-central1-a";
    // The name for your TPU.
    String nodeName = "YOUR_NODE_ID";
    // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
    // For more information about supported accelerator types for each TPU version,
    // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
    String tpuType = "v5litepod-4";
    // Software version that specifies the version of the TPU runtime to install.
    // For more information see https://cloud.google.com/tpu/docs/runtimes
    String tpuSoftwareVersion = "v2-tpuv5-litepod";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    createQueuedResource(
        projectId, zone, queuedResourceId, nodeName, tpuType, tpuSoftwareVersion);
  }

  // Creates a Queued Resource
  public static QueuedResource createQueuedResource(String projectId, String zone,
      String queuedResourceId, String nodeName, String tpuType, String tpuSoftwareVersion)
          throws IOException, ExecutionException, InterruptedException, TimeoutException {
    String resource = String.format("projects/%s/locations/%s/queuedResources/%s",
            projectId, zone, queuedResourceId);
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      String parent = String.format("projects/%s/locations/%s", projectId, zone);
      Node node =
          Node.newBuilder()
              .setName(nodeName)
              .setAcceleratorType(tpuType)
              .setRuntimeVersion(tpuSoftwareVersion)
              .setQueuedResource(resource)
              .build();

      QueuedResource queuedResource =
          QueuedResource.newBuilder()
              .setName(queuedResourceId)
              .setTpu(
                  QueuedResource.Tpu.newBuilder()
                      .addNodeSpec(
                          QueuedResource.Tpu.NodeSpec.newBuilder()
                              .setParent(parent)
                              .setNode(node)
                              .setNodeId(nodeName)
                              .build())
                      .build())
              .build();

      CreateQueuedResourceRequest request =
          CreateQueuedResourceRequest.newBuilder()
              .setParent(parent)
              .setQueuedResourceId(queuedResourceId)
              .setQueuedResource(queuedResource)
              .build();

      return tpuClient.createQueuedResourceAsync(request).get(1, TimeUnit.MINUTES);
    }
  }
}

Python

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-a"
# tpu_name = "tpu-name"
# tpu_type = "v5litepod-4"
# runtime_version = "v2-tpuv5-litepod"
# queued_resource_name = "resource-name"

node = tpu_v2alpha1.Node()
node.accelerator_type = tpu_type
# To see available runtime version use command:
# gcloud compute tpus versions list --zone={ZONE}
node.runtime_version = runtime_version

node_spec = tpu_v2alpha1.QueuedResource.Tpu.NodeSpec()
node_spec.parent = f"projects/{project_id}/locations/{zone}"
node_spec.node_id = tpu_name
node_spec.node = node

resource = tpu_v2alpha1.QueuedResource()
resource.tpu = tpu_v2alpha1.QueuedResource.Tpu(node_spec=[node_spec])

request = tpu_v2alpha1.CreateQueuedResourceRequest(
    parent=f"projects/{project_id}/locations/{zone}",
    queued_resource_id=queued_resource_name,
    queued_resource=resource,
)

client = tpu_v2alpha1.TpuClient()
operation = client.create_queued_resource(request=request)

response = operation.result()
print(response.name)
print(response.state)
# Example response:
# projects/[project_id]/locations/[zone]/queuedResources/resource-name
# State.WAITING_FOR_RESOURCES

Peça um recurso em fila de espera através de uma reserva

Pode pedir um recurso em fila de espera através de uma reserva. Para comprar uma reserva, contacte a sua Google Cloud equipa da conta.

gcloud

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-central1-a \
    --accelerator-type v5litepod-8 \
    --runtime-version v2-alpha-tpuv5-lite \
    --reserved

Descrições dos parâmetros de comandos

queued-resource-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID atribuído pelo utilizador da TPU que é criado quando o pedido de recurso em fila é atribuído.
project
O seu Google Cloud projeto.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
reserved
Use esta flag quando pedir recursos em fila como parte de uma reserva do Cloud TPU.

curl

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

Descrições dos parâmetros de comandos

queued-resource-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID atribuído pelo utilizador da TPU que é criado quando o pedido de recurso em fila é atribuído.
project
O seu Google Cloud projeto.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
reserved
Use esta flag quando pedir recursos em fila como parte de uma reserva do Cloud TPU.

Consola

  1. Na Google Cloud consola, aceda à página TPUs:

    Aceder às TPUs

  2. Clique em Criar TPU.

  3. No campo Nome, introduza um nome para a TPU.

  4. Na caixa Zona, selecione a zona onde quer criar a TPU.

  5. Na caixa Tipo de TPU, selecione um tipo de acelerador. O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.

  6. Na caixa Versão do software da TPU, selecione uma versão do software. Quando cria uma VM do Cloud TPU, a versão do software da TPU especifica a versão do tempo de execução da TPU a instalar. Para mais informações, consulte o artigo Versões de software da TPU.

  7. Clique no botão de ativar/desativar Ativar colocação em fila.

  8. No campo Nome do recurso em fila, introduza um nome para o seu pedido de recurso em fila.

  9. Expanda a secção Gestão.

  10. Selecione a caixa de verificação Usar reserva existente.

  11. Clique em Criar para criar o pedido de recursos em fila.

Peça um recurso em fila de espera de VM do Spot de TPU

Uma VM do Spot é um recurso que pode ser anulado e atribuído a outra carga de trabalho em qualquer altura. Os recursos da VM do Spot custam menos e pode ter acesso aos recursos mais cedo em comparação com um pedido de VM não do Spot. Para mais informações sobre as VMs de Spot de TPU, consulte o artigo Faça a gestão de VMs de Spot de TPU.

gcloud

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-central1-a \
    --accelerator-type v5litepod-8 \
    --runtime-version v2-alpha-tpuv5-lite \
    --spot

Descrições dos parâmetros de comandos

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O ID do projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
spot
Uma sinalização booleana que especifica que o recurso em fila é uma VM Spot.

curl

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

Descrições dos parâmetros de comandos

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O ID do projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
spot
Uma sinalização booleana que especifica que o recurso em fila é uma VM Spot.

Consola

  1. Na Google Cloud consola, aceda à página TPUs:

    Aceder às TPUs

  2. Clique em Criar TPU.

  3. No campo Nome, introduza um nome para a TPU.

  4. Na caixa Zona, selecione a zona onde quer criar a TPU.

  5. Na caixa Tipo de TPU, selecione um tipo de acelerador. O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.

  6. Na caixa Versão do software da TPU, selecione uma versão do software. Quando cria uma VM do Cloud TPU, a versão do software da TPU especifica a versão do tempo de execução da TPU a instalar. Para mais informações, consulte o artigo Versões de software da TPU.

  7. Clique no botão de ativar/desativar Ativar colocação em fila.

  8. No campo Nome do recurso em fila, introduza um nome para o seu pedido de recurso em fila.

  9. Expanda a secção Gestão.

  10. Selecione a caixa de verificação Transformar esta VM numa VM Spot da TPU.

  11. Clique em Criar.

Java

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import com.google.cloud.tpu.v2alpha1.CreateQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.Node;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.SchedulingConfig;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class CreateSpotQueuedResource {
  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "us-central1-a";
    // The name for your TPU.
    String nodeName = "YOUR_TPU_NAME";
    // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
    // For more information about supported accelerator types for each TPU version,
    // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
    String tpuType = "v5litepod-4";
    // Software version that specifies the version of the TPU runtime to install.
    // For more information see https://cloud.google.com/tpu/docs/runtimes
    String tpuSoftwareVersion = "v2-tpuv5-litepod";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    createQueuedResource(
        projectId, zone, queuedResourceId, nodeName, tpuType, tpuSoftwareVersion);
  }

  // Creates a Queued Resource with --preemptible flag.
  public static QueuedResource createQueuedResource(
      String projectId, String zone, String queuedResourceId,
      String nodeName, String tpuType, String tpuSoftwareVersion)
      throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      String parent = String.format("projects/%s/locations/%s", projectId, zone);
      String resourceName = String.format("projects/%s/locations/%s/queuedResources/%s",
              projectId, zone, queuedResourceId);
      SchedulingConfig schedulingConfig = SchedulingConfig.newBuilder()
          .setPreemptible(true)
          .build();

      Node node =
          Node.newBuilder()
              .setName(nodeName)
              .setAcceleratorType(tpuType)
              .setRuntimeVersion(tpuSoftwareVersion)
              .setSchedulingConfig(schedulingConfig)
              .setQueuedResource(resourceName)
              .build();

      QueuedResource queuedResource =
          QueuedResource.newBuilder()
              .setName(queuedResourceId)
              .setTpu(
                  QueuedResource.Tpu.newBuilder()
                      .addNodeSpec(
                          QueuedResource.Tpu.NodeSpec.newBuilder()
                              .setParent(parent)
                              .setNode(node)
                              .setNodeId(nodeName)
                              .build())
                      .build())
              .build();

      CreateQueuedResourceRequest request =
          CreateQueuedResourceRequest.newBuilder()
              .setParent(parent)
              .setQueuedResourceId(queuedResourceId)
              .setQueuedResource(queuedResource)
              .build();

      return tpuClient.createQueuedResourceAsync(request).get();
    }
  }
}

Python

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-a"
# tpu_name = "tpu-name"
# tpu_type = "v5litepod-4"
# runtime_version = "v2-tpuv5-litepod"
# queued_resource_name = "resource-name"

node = tpu_v2alpha1.Node()
node.accelerator_type = tpu_type
# To see available runtime version use command:
# gcloud compute tpus versions list --zone={ZONE}
node.runtime_version = runtime_version

node_spec = tpu_v2alpha1.QueuedResource.Tpu.NodeSpec()
node_spec.parent = f"projects/{project_id}/locations/{zone}"
node_spec.node_id = tpu_name
node_spec.node = node

resource = tpu_v2alpha1.QueuedResource()
resource.tpu = tpu_v2alpha1.QueuedResource.Tpu(node_spec=[node_spec])
# Create a spot resource
resource.spot = tpu_v2alpha1.QueuedResource.Spot()

request = tpu_v2alpha1.CreateQueuedResourceRequest(
    parent=f"projects/{project_id}/locations/{zone}",
    queued_resource_id=queued_resource_name,
    queued_resource=resource,
)

client = tpu_v2alpha1.TpuClient()
operation = client.create_queued_resource(request=request)
response = operation.result()

print(response.name)
print(response.state)
# Example response:
# projects/[project_id]/locations/[zone]/queuedResources/resource-name
# State.WAITING_FOR_RESOURCES

Pedir que um recurso em fila seja atribuído antes ou depois de uma hora especificada

Pode especificar uma hora de início ou uma hora de fim opcional num pedido de recurso em fila. A hora de início ou a duração de início especifica a hora mais próxima em que o pedido deve ser preenchido. A hora de fim ou a duração de fim especifica durante quanto tempo o pedido permanece válido. Se um pedido não for preenchido até à hora de fim especificada ou dentro da duração especificada, o pedido expira. Após a expiração do pedido, este permanece na fila, mas deixa de ser elegível para atribuição.

Também pode especificar um intervalo de atribuição especificando uma hora de início ou uma duração e uma hora de fim ou uma duração.

Para ver uma lista dos formatos de data/hora e duração suportados, consulte o artigo Data/hora.

Pedir que um recurso em fila seja preenchido após um período especificado

Num pedido de recurso em fila, pode especificar uma hora ou uma duração após a qual um recurso deve ser atribuído.

gcloud

O comando seguinte pede uma TPU v5p-4096 para ser atribuída após as 09:00 de 14 de dezembro de 2022.

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-east5-a \
    --accelerator-type v5p-4096 \
    --runtime-version v2-alpha-tpuv5 \
    --valid-after-time 2022-12-14T09:00:00Z

Descrições dos parâmetros de comandos

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte Versões da TPU.
runtime-version
A versão do software Cloud TPU.
valid-after-time
A hora após a qual o recurso deve ser atribuído. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI do Google Cloud.

curl

O comando seguinte pede uma TPU v5p-4096 para ser atribuída após as 09:00 de 14 de dezembro de 2022.

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

Descrições dos parâmetros de comandos

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
valid-after-time
A hora após a qual o recurso deve ser atribuído. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI do Google Cloud.

Consola

  1. Na Google Cloud consola, aceda à página TPUs:

    Aceder às TPUs

  2. Clique em Criar TPU.

  3. No campo Nome, introduza um nome para a TPU.

  4. Na caixa Zona, selecione a zona onde quer criar a TPU.

  5. Na caixa Tipo de TPU, selecione um tipo de acelerador. O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.

  6. Na caixa Versão do software da TPU, selecione uma versão do software. Quando cria uma VM do Cloud TPU, a versão do software da TPU especifica a versão do tempo de execução da TPU a instalar. Para mais informações, consulte o artigo Versões de software da TPU.

  7. Clique no botão de ativar/desativar Ativar colocação em fila.

  8. No campo Nome do recurso em fila, introduza um nome para o seu pedido de recurso em fila.

  9. No campo Iniciar pedido a, introduza a hora após a qual o recurso deve ser atribuído.

  10. Clique em Criar para criar o pedido de recursos em fila.

O exemplo seguinte pede que seja alocada uma v5p-32 após seis horas.

gcloud

    gcloud compute tpus queued-resources create your-queued-resource-id \
        --node-id your-node-id \
        --project your-project-id \
        --zone us-east5-a \
        --accelerator-type v5p-32 \
        --runtime-version v2-alpha-tpuv5 \
        --valid-after-duration 6h

Descrições dos parâmetros de comandos

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
valid-after-duration
A duração antes da qual a TPU não deve ser aprovisionada. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI do Google Cloud

curl

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

Descrições dos parâmetros de comandos

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
valid-after-duration
A duração antes da qual a TPU não deve ser aprovisionada. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI do Google Cloud

Java

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import com.google.cloud.tpu.v2alpha1.CreateQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.Node;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import com.google.protobuf.Duration;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class CreateTimeBoundQueuedResource {

  public static void main(String[] args)
          throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "us-central2-b";
    // The name of your node.
    String nodeId = "YOUR_NODE_ID";
    // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
    // For more information about supported accelerator types for each TPU version,
    // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
    String acceleratorType = "v2-8";
    // Software version that specifies the version of the TPU runtime to install.
    // For more information see https://cloud.google.com/tpu/docs/runtimes
    String runtimeVersion = "v2-tpuv5-litepod";
    // The name of your Queued Resource.
    String queuedResourceId = "YOUR_QUEUED_RESOURCE_ID";

    createTimeBoundQueuedResource(projectId, nodeId,
        queuedResourceId, zone, acceleratorType, runtimeVersion);
  }

  // Creates a Queued Resource with time bound configuration.
  public static QueuedResource createTimeBoundQueuedResource(
      String projectId, String nodeId, String queuedResourceId,
      String zone, String acceleratorType, String runtimeVersion)
          throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      String parent = String.format("projects/%s/locations/%s", projectId, zone);
      // Create a Duration object representing 6 hours.
      Duration validAfterDuration = Duration.newBuilder().setSeconds(6 * 3600).build();
      // You could also use timestamps like this:
      // Timestamp validAfterTime = Timestamps.parse("2024-10-14T09:00:00Z");

      Node node =
          Node.newBuilder()
              .setName(nodeId)
              .setAcceleratorType(acceleratorType)
              .setRuntimeVersion(runtimeVersion)
              .setQueuedResource(
                  String.format(
                      "projects/%s/locations/%s/queuedResources/%s",
                      projectId, zone, queuedResourceId))
              .build();

      QueuedResource queuedResource =
          QueuedResource.newBuilder()
              .setName(queuedResourceId)
              .setTpu(
                  QueuedResource.Tpu.newBuilder()
                      .addNodeSpec(
                          QueuedResource.Tpu.NodeSpec.newBuilder()
                              .setParent(parent)
                              .setNode(node)
                              .setNodeId(nodeId)
                              .build())
                      .build())
              .setQueueingPolicy(
                  QueuedResource.QueueingPolicy.newBuilder()
                      .setValidAfterDuration(validAfterDuration)
                      // .setValidAfterTime(validAfterTime)
                      .build())
              .build();

      CreateQueuedResourceRequest request =
          CreateQueuedResourceRequest.newBuilder()
              .setParent(parent)
              .setQueuedResource(queuedResource)
              .setQueuedResourceId(queuedResourceId)
              .build();

      return tpuClient.createQueuedResourceAsync(request).get();
    }
  }
}

Pedir um recurso em fila que expire após um tempo especificado

Num pedido de recurso em fila, pode especificar durante quanto tempo um pedido de recurso em fila permanece válido. Se o pedido não for cumprido no prazo ou na duração que especificar, o pedido expira.

gcloud

O comando seguinte pede uma TPU v5p-4096. Se o pedido não for cumprido até 14 de dezembro de 2022 às 09:00, expira.

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-east5-a \
    --accelerator-type v5p-4096 \
    --runtime-version v2-alpha-tpuv5 \
    --valid-until-time 2022-12-14T09:00:00Z

Descrições dos parâmetros de comandos

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O ID do projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte Versões da TPU.
runtime-version
A versão do software Cloud TPU.
valid-until-time
O tempo após o qual o pedido é cancelado. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI gcloud do Google Cloud.

curl

O comando seguinte pede uma TPU v5p-4096. Se o pedido não for cumprido até 14 de dezembro de 2022 às 09:00, expira.

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

Descrições dos parâmetros de comandos

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O ID do projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte Versões da TPU.
runtime-version
A versão do software Cloud TPU.
valid-until-time
O tempo após o qual o pedido é cancelado. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI gcloud do Google Cloud.

Consola

  1. Na Google Cloud consola, aceda à página TPUs:

    Aceder às TPUs

  2. Clique em Criar TPU.

  3. No campo Nome, introduza um nome para a TPU.

  4. Na caixa Zona, selecione a zona onde quer criar a TPU.

  5. Na caixa Tipo de TPU, selecione um tipo de acelerador. O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.

  6. Na caixa Versão do software da TPU, selecione uma versão do software. Quando cria uma VM do Cloud TPU, a versão do software da TPU especifica a versão do tempo de execução da TPU a instalar. Para mais informações, consulte o artigo Versões de software da TPU.

  7. Clique no botão de ativar/desativar Ativar colocação em fila.

  8. No campo Nome do recurso em fila, introduza um nome para o seu pedido de recurso em fila.

  9. No campo Cancelar pedido a, introduza a hora em que o pedido de recurso em fila deve expirar se não for preenchido.

  10. Clique em Criar para criar o pedido de recursos em fila.

O exemplo seguinte pede um v5p-32. O pedido expira se não for preenchido no prazo de seis horas.

gcloud

    gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-east5-a \
    --accelerator-type v5p-32 \
    --runtime-version v2-alpha-tpuv5 \
    --valid-until-duration 6h

Descrições dos parâmetros de comandos

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
valid-until-duration
A duração durante a qual o pedido é válido. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI do Google Cloud

curl

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

Descrições dos parâmetros de comandos

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
valid-until-duration
A duração durante a qual o pedido é válido. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI do Google Cloud

Python

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-a"
# tpu_name = "tpu-name"
# tpu_type = "v5litepod-4"
# runtime_version = "v2-tpuv5-litepod"
# queued_resource_name = "resource-name"

node = tpu_v2alpha1.Node()
node.accelerator_type = tpu_type
# To see available runtime version use command:
# gcloud compute tpus versions list --zone={ZONE}
node.runtime_version = runtime_version

node_spec = tpu_v2alpha1.QueuedResource.Tpu.NodeSpec()
node_spec.parent = f"projects/{project_id}/locations/{zone}"
node_spec.node_id = tpu_name
node_spec.node = node

resource = tpu_v2alpha1.QueuedResource()
resource.tpu = tpu_v2alpha1.QueuedResource.Tpu(node_spec=[node_spec])

# Use one of the following queueing policies
resource.queueing_policy = tpu_v2alpha1.QueuedResource.QueueingPolicy(
    # valid_after_duration = "6000s", # Duration after which a resource should be allocated
    valid_until_duration="90s",  # Specify how long a queued resource request remains valid
    # valid_after_time="2024-10-31T09:00:00Z", # Specify a time after which a resource should be allocated
    # valid_until_time="2024-10-29T16:00:00Z",  # Specify a time before which the resource should be allocated
)

request = tpu_v2alpha1.CreateQueuedResourceRequest(
    parent=f"projects/{project_id}/locations/{zone}",
    queued_resource_id=queued_resource_name,
    queued_resource=resource,
)

client = tpu_v2alpha1.TpuClient()
operation = client.create_queued_resource(request=request)

response = operation.result()
print(resource.queueing_policy)
print(response.queueing_policy.valid_until_time)
# Example response:
# valid_until_duration {
#   seconds: 90
# }
# 2024-10-29 14:22:53.562090+00:00

Pedir que um recurso em fila seja atribuído dentro de um intervalo especificado

Pode especificar um intervalo de atribuição especificando a hora de início ou a duração e a hora de fim ou a duração.

gcloud

O comando seguinte pede uma v5p-32 dentro de 5 horas e 30 minutos a partir da hora atual, a ser criada o mais tardar a 14 de dezembro de 2022 às 09:00.

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-east5-a \
    --accelerator-type v5p-32 \
    --runtime-version v2-alpha-tpuv5 \
    --valid-after-duration 5h30m \
    --valid-until-time 2022-12-14T09:00:00Z

Descrições das flags de comando

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O ID do projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
valid-until-time
O tempo após o qual o pedido é cancelado. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI gcloud do Google Cloud.
valid-after-duration
A duração antes da qual a TPU não deve ser aprovisionada. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI gcloud do Google Cloud.

curl

O comando seguinte pede uma v5p-32 dentro de 5 horas e 30 minutos a partir da hora atual, a ser criada o mais tardar a 14 de dezembro de 2022 às 09:00.

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

Descrições das flags de comando

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O ID do projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
valid-until-timw
O tempo após o qual o pedido é cancelado. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI gcloud do Google Cloud.
valid-until-duration
A duração durante a qual o pedido é válido. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI gcloud do Google Cloud.

Consola

  1. Na Google Cloud consola, aceda à página TPUs:

    Aceder às TPUs

  2. Clique em Criar TPU.

  3. No campo Nome, introduza um nome para a TPU.

  4. Na caixa Zona, selecione a zona onde quer criar a TPU.

  5. Na caixa Tipo de TPU, selecione um tipo de acelerador. O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.

  6. Na caixa Versão do software da TPU, selecione uma versão do software. Quando cria uma VM do Cloud TPU, a versão do software da TPU especifica a versão do tempo de execução da TPU a instalar. Para mais informações, consulte o artigo Versões de software da TPU.

  7. Clique no botão de ativar/desativar Ativar colocação em fila.

  8. No campo Nome do recurso em fila, introduza um nome para o seu pedido de recurso em fila.

  9. No campo Iniciar pedido a, introduza a hora após a qual o recurso deve ser atribuído.

  10. No campo Cancelar pedido a, introduza a hora em que o pedido de recurso em fila deve expirar se não for preenchido.

  11. Clique em Criar para criar o pedido de recursos em fila.

Peça um recurso em fila com um script de arranque

Pode especificar um script a ser executado num recurso em fila após o respetivo aprovisionamento.

gcloud

Quando usa o comando gcloud, pode usar a flag --metadata ou --metadata-from-file para especificar um comando de script ou um ficheiro que contenha o código do script, respetivamente. O exemplo seguinte cria um pedido de recurso em fila que executa o script startup-script.sh.

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

Descrições das flags de comando

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O ID do projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte Versões da TPU.
runtime-version
A versão do software Cloud TPU.
validInterval
O período durante o qual o pedido é válido após o qual o pedido é cancelado. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI gcloud do Google Cloud.
metadata-from-file
Especifica um ficheiro que contém metadados. Se não especificar um caminho totalmente qualificado para o ficheiro de metadados, o comando assume que este se encontra no diretório atual. Neste exemplo, o ficheiro contém um script de arranque que é executado quando o recurso em fila é aprovisionado.
metadata
Especifica os metadados do pedido. Neste exemplo, os metadados são um comando de script de arranque executado quando o recurso em fila é aprovisionado.

curl

Quando usar curl, tem de incluir o código do script no conteúdo JSON. O exemplo seguinte inclui um script inline no 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-central1-a',
        node_id: 'your-node-id',
        node: {
            accelerator_type: 'v5e-8',
            runtime_version: 'v2-alpha-tpuv5-lite',
            metadata: {
                "startup-script": "#! /bin/bash\npwd > /tmp/out.txt\nwhoami >> /tmp/out.txt"
            }
        }
        }
    },
'queueing_policy': {
    'validInterval': {
        'startTime': '2022-12-10T14:30:00Z',
        'endTime': '2022-12-14T09:00:00Z'
    }
    },
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central1-a/queuedResources?queued_resource_id=your-queued-resource-id

Descrições das flags de comando

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID definido pelo utilizador da TPU criada em resposta ao pedido.
project
O ID do projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte Versões da TPU.
runtime-version
A versão do software Cloud TPU.
validInterval
O período durante o qual o pedido é válido após o qual o pedido é cancelado. Para mais informações sobre formatos de duração, consulte o tópico datetime da CLI gcloud do Google Cloud.
metadata-from-file
Especifica um ficheiro que contém metadados. Se não especificar um caminho totalmente qualificado para o ficheiro de metadados, o comando assume que este se encontra no diretório atual. Neste exemplo, o ficheiro contém um script de arranque que é executado quando o recurso em fila é aprovisionado.
metadata
Especifica os metadados do pedido. Neste exemplo, os metadados são um comando de script de arranque executado quando o recurso em fila é aprovisionado.

Java

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import com.google.cloud.tpu.v2alpha1.CreateQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.Node;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutionException;

public class CreateQueuedResourceWithStartupScript {
  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "us-central1-a";
    // The name for your TPU.
    String nodeName = "YOUR_TPU_NAME";
    // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
    // For more information about supported accelerator types for each TPU version,
    // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
    String tpuType = "v5litepod-4";
    // Software version that specifies the version of the TPU runtime to install.
    // For more information see https://cloud.google.com/tpu/docs/runtimes
    String tpuSoftwareVersion = "v2-tpuv5-litepod";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    createQueuedResource(projectId, zone, queuedResourceId, nodeName,
        tpuType, tpuSoftwareVersion);
  }

  // Creates a Queued Resource with startup script.
  public static QueuedResource createQueuedResource(
      String projectId, String zone, String queuedResourceId,
      String nodeName, String tpuType, String tpuSoftwareVersion)
      throws IOException, ExecutionException, InterruptedException {
    String parent = String.format("projects/%s/locations/%s", projectId, zone);
    String startupScriptContent = "#!/bin/bash\necho \"Hello from the startup script!\"";
    // Add startup script to metadata
    Map<String, String> metadata = new HashMap<>();
    metadata.put("startup-script", startupScriptContent);
    String queuedResourceForTpu =  String.format("projects/%s/locations/%s/queuedResources/%s",
            projectId, zone, queuedResourceId);
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      Node node =
          Node.newBuilder()
              .setName(nodeName)
              .setAcceleratorType(tpuType)
              .setRuntimeVersion(tpuSoftwareVersion)
              .setQueuedResource(queuedResourceForTpu)
              .putAllMetadata(metadata)
              .build();

      QueuedResource queuedResource =
          QueuedResource.newBuilder()
              .setName(queuedResourceId)
              .setTpu(
                  QueuedResource.Tpu.newBuilder()
                      .addNodeSpec(
                          QueuedResource.Tpu.NodeSpec.newBuilder()
                              .setParent(parent)
                              .setNode(node)
                              .setNodeId(nodeName)
                              .build())
                      .build())
              .build();

      CreateQueuedResourceRequest request =
          CreateQueuedResourceRequest.newBuilder()
              .setParent(parent)
              .setQueuedResourceId(queuedResourceId)
              .setQueuedResource(queuedResource)
              .build();
      // You can wait until TPU Node is READY,
      // and check its status using getTpuVm() from "tpu_vm_get" sample.

      return tpuClient.createQueuedResourceAsync(request).get();
    }
  }
}

Python

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-a"
# tpu_name = "tpu-name"
# tpu_type = "v5litepod-4"
# runtime_version = "v2-tpuv5-litepod"
# queued_resource_name = "resource-name"

node = tpu_v2alpha1.Node()
node.accelerator_type = tpu_type
# To see available runtime version use command:
# gcloud compute tpus versions list --zone={ZONE}
node.runtime_version = runtime_version
# This startup script updates numpy to the latest version and logs the output to a file.
script = {
    "startup-script": """#!/bin/bash
echo "Hello World" > /var/log/hello.log
sudo pip3 install --upgrade numpy >> /var/log/hello.log 2>&1
"""
}
node.metadata = script
# Enabling external IPs for internet access from the TPU node for updating numpy
node.network_config = tpu_v2alpha1.NetworkConfig(
    enable_external_ips=True,
)

node_spec = tpu_v2alpha1.QueuedResource.Tpu.NodeSpec()
node_spec.parent = f"projects/{project_id}/locations/{zone}"
node_spec.node_id = tpu_name
node_spec.node = node

resource = tpu_v2alpha1.QueuedResource()
resource.tpu = tpu_v2alpha1.QueuedResource.Tpu(node_spec=[node_spec])

request = tpu_v2alpha1.CreateQueuedResourceRequest(
    parent=f"projects/{project_id}/locations/{zone}",
    queued_resource_id=queued_resource_name,
    queued_resource=resource,
)

client = tpu_v2alpha1.TpuClient()
operation = client.create_queued_resource(request=request)

response = operation.result()
print(response.name)
print(response.tpu.node_spec[0].node.metadata)
# Example response:
# projects/[project_id]/locations/[zone]/queuedResources/resource-name
# {'startup-script': '#!/bin/bash\n    echo "Hello World" > /var/log/hello.log\n
# sudo pip3 install --upgrade numpy >> /var/log/hello.log 2>&1\n    '}

Peça um recurso em fila com uma rede e uma sub-rede especificadas

Num pedido de recursos em fila, pode especificar uma rede e uma sub-rede às quais quer ligar a TPU.

gcloud

gcloud compute tpus queued-resources create your-queued-resource-id \
    --node-id your-node-id \
    --project your-project-id \
    --zone us-central1-a \
    --accelerator-type v5e-8 \
    --runtime-version v2-alpha-tpuv5-lite \
    --network network-name \
    --subnetwork subnetwork-name

Descrições dos parâmetros de comandos

queued-resource-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID atribuído pelo utilizador da TPU que é criado quando o pedido de recurso em fila é atribuído.
project
O seu Google Cloud projeto.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
reserved
Use esta flag quando pedir recursos em fila como parte de uma reserva do Cloud TPU.
network
Uma rede da qual o recurso em fila fará parte.
subnetwork
Uma subrede da qual o recurso em fila fará parte.

curl

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "{
    'tpu': {
    'node_spec': {
        'parent': 'projects/your-project-number/locations/us-central1-a',
        'node_id': 'your-node-id',
        'node': {
        'accelerator_type': 'v5e-8',
        'runtime_version': 'v2-alpha-tpuv5-lite',
        'network_config': {
            'network': 'network-name',
            'subnetwork': 'subnetwork-name',
            'enable_external_ips': true
        }
    }
    },
    'guaranteed': {
    'reserved': true,
    }
}" \
https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central1-a/queuedResources?queued_resource_id=your-queued-resource-id

Descrições dos parâmetros de comandos

queued-resource-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
node-id
O ID atribuído pelo utilizador da TPU que é criado quando o pedido de recurso em fila é atribuído.
project
O seu Google Cloud projeto.
zone
A zona onde planeia criar a sua Cloud TPU.
accelerator-type
O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.
runtime-version
A versão do software Cloud TPU.
reserved
Use esta flag quando pedir recursos em fila como parte de uma reserva do Cloud TPU.
network
Uma rede da qual o recurso em fila fará parte.
subnetwork
Uma subrede da qual o recurso em fila fará parte.

Consola

  1. Na Google Cloud consola, aceda à página TPUs:

    Aceder às TPUs

  2. Clique em Criar TPU.

  3. No campo Nome, introduza um nome para a TPU.

  4. Na caixa Zona, selecione a zona onde quer criar a TPU.

  5. Na caixa Tipo de TPU, selecione um tipo de acelerador. O tipo de acelerador especifica a versão e o tamanho da Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU.

  6. Na caixa Versão do software da TPU, selecione uma versão do software. Quando cria uma VM do Cloud TPU, a versão do software da TPU especifica a versão do tempo de execução da TPU a instalar. Para mais informações, consulte o artigo Versões de software da TPU.

  7. Clique no botão de ativar/desativar Ativar colocação em fila.

  8. No campo Nome do recurso em fila, introduza um nome para o seu pedido de recurso em fila.

  9. Expanda a secção Rede.

  10. Nos campos Rede e Sub-rede, selecione a rede e a sub-rede que quer usar.

  11. Clique em Criar para criar o pedido de recursos em fila.

Java

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import com.google.api.gax.retrying.RetrySettings;
import com.google.cloud.tpu.v2alpha1.CreateQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.NetworkConfig;
import com.google.cloud.tpu.v2alpha1.Node;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import com.google.cloud.tpu.v2alpha1.TpuSettings;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import org.threeten.bp.Duration;

public class CreateQueuedResourceWithNetwork {
  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "europe-west4-a";
    // The name for your TPU.
    String nodeName = "YOUR_TPU_NAME";
    // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
    // For more information about supported accelerator types for each TPU version,
    // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
    String tpuType = "v5litepod-4";
    // Software version that specifies the version of the TPU runtime to install.
    // For more information see https://cloud.google.com/tpu/docs/runtimes
    String tpuSoftwareVersion = "v2-tpuv5-litepod";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";
    // The name of the network you want the node to connect to.
    // The network should be assigned to your project.
    String networkName = "YOUR_COMPUTE_TPU_NETWORK";

    createQueuedResourceWithNetwork(projectId, zone, queuedResourceId, nodeName,
        tpuType, tpuSoftwareVersion, networkName);
  }

  // Creates a Queued Resource with network configuration.
  public static QueuedResource createQueuedResourceWithNetwork(
      String projectId, String zone, String queuedResourceId, String nodeName,
      String tpuType, String tpuSoftwareVersion, String networkName)
      throws IOException, ExecutionException, InterruptedException {
    // With these settings the client library handles the Operation's polling mechanism
    // and prevent CancellationException error
    TpuSettings.Builder clientSettings =
        TpuSettings.newBuilder();
    clientSettings
        .createQueuedResourceSettings()
        .setRetrySettings(
            RetrySettings.newBuilder()
                .setInitialRetryDelay(Duration.ofMillis(5000L))
                .setRetryDelayMultiplier(2.0)
                .setInitialRpcTimeout(Duration.ZERO)
                .setRpcTimeoutMultiplier(1.0)
                .setMaxRetryDelay(Duration.ofMillis(45000L))
                .setTotalTimeout(Duration.ofHours(24L))
                .build());
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create(clientSettings.build())) {
      String parent = String.format("projects/%s/locations/%s", projectId, zone);
      String region = zone.substring(0, zone.length() - 2);

      // Specify the network and subnetwork that you want to connect your TPU to.
      NetworkConfig networkConfig =
          NetworkConfig.newBuilder()
              .setEnableExternalIps(true)
              .setNetwork(String.format("projects/%s/global/networks/%s", projectId, networkName))
              .setSubnetwork(
                  String.format(
                      "projects/%s/regions/%s/subnetworks/%s", projectId, region, networkName))
              .build();

      // Create a node
      Node node =
          Node.newBuilder()
              .setName(nodeName)
              .setAcceleratorType(tpuType)
              .setRuntimeVersion(tpuSoftwareVersion)
              .setNetworkConfig(networkConfig)
              .setQueuedResource(
                  String.format(
                      "projects/%s/locations/%s/queuedResources/%s",
                      projectId, zone, queuedResourceId))
              .build();

      // Create queued resource
      QueuedResource queuedResource =
          QueuedResource.newBuilder()
              .setName(queuedResourceId)
              .setTpu(
                  QueuedResource.Tpu.newBuilder()
                      .addNodeSpec(
                          QueuedResource.Tpu.NodeSpec.newBuilder()
                              .setParent(parent)
                              .setNode(node)
                              .setNodeId(nodeName)
                              .build())
                      .build())
              .build();

      CreateQueuedResourceRequest request =
          CreateQueuedResourceRequest.newBuilder()
              .setParent(parent)
              .setQueuedResource(queuedResource)
              .setQueuedResourceId(queuedResourceId)
              .build();

      // You can wait until TPU Node is READY,
      // and check its status using getTpuVm() from "tpu_vm_get" sample.

      return tpuClient.createQueuedResourceAsync(request).get();
    }
  }
}

Python

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-a"
# tpu_name = "tpu-name"
# tpu_type = "v5litepod-4"
# runtime_version = "v2-tpuv5-litepod"
# queued_resource_name = "resource-name"
# network = "default"

node = tpu_v2alpha1.Node()
node.accelerator_type = tpu_type
node.runtime_version = runtime_version
# Setting network configuration
node.network_config = tpu_v2alpha1.NetworkConfig(
    network=network,  # Update if you want to use a specific network
    subnetwork="default",  # Update if you want to use a specific subnetwork
    enable_external_ips=True,
    can_ip_forward=True,
)

node_spec = tpu_v2alpha1.QueuedResource.Tpu.NodeSpec()
node_spec.parent = f"projects/{project_id}/locations/{zone}"
node_spec.node_id = tpu_name
node_spec.node = node

resource = tpu_v2alpha1.QueuedResource()
resource.tpu = tpu_v2alpha1.QueuedResource.Tpu(node_spec=[node_spec])

request = tpu_v2alpha1.CreateQueuedResourceRequest(
    parent=f"projects/{project_id}/locations/{zone}",
    queued_resource_id=queued_resource_name,
    queued_resource=resource,
)

client = tpu_v2alpha1.TpuClient()
operation = client.create_queued_resource(request=request)

response = operation.result()
print(response.name)
print(response.tpu.node_spec[0].node.network_config)
print(resource.tpu.node_spec[0].node.network_config.network == "default")
# Example response:
# network: "default"
# subnetwork: "default"
# enable_external_ips: true
# can_ip_forward: true

Elimine um pedido de recurso em fila

Pode eliminar um pedido de recursos em fila e a TPU associada ao pedido eliminando o pedido de recursos em fila:

gcloud

Transmita a marca --force ao comando queued-resource delete:

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

Descrições das flags de comando

your-queued-resource-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona da TPU na nuvem a eliminar.
force
Eliminar a VM da TPU e o pedido de recurso em fila.

curl

Use o parâmetro de consulta force=true no seu pedido curl:

curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://tpu.googleapis.com/v2/projects/your-project-id/locations/us-central1-a/queuedResources/your-queued-resource-id?force=true

Descrições das flags de comando

your-queued-resource-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona da TPU na nuvem a eliminar.
force
Eliminar a VM da TPU e o pedido de recurso em fila.

Consola

  1. Na Google Cloud consola, aceda à página TPUs:

    Aceder às TPUs

  2. Clique no separador Recursos em fila.

  3. Selecione a caixa de verificação junto ao pedido de recurso em fila.

  4. Clique em Eliminar.

Java

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import com.google.api.gax.retrying.RetrySettings;
import com.google.cloud.tpu.v2alpha1.DeleteQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import com.google.cloud.tpu.v2alpha1.TpuSettings;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import org.threeten.bp.Duration;

public class DeleteForceQueuedResource {
  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which the TPU was created.
    String zone = "us-central1-f";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    deleteForceQueuedResource(projectId, zone, queuedResourceId);
  }

  // Deletes a Queued Resource asynchronously with --force flag.
  public static void deleteForceQueuedResource(
      String projectId, String zone, String queuedResourceId)
          throws ExecutionException, InterruptedException, IOException {
    String name = String.format("projects/%s/locations/%s/queuedResources/%s",
        projectId, zone, queuedResourceId);
    // With these settings the client library handles the Operation's polling mechanism
    // and prevent CancellationException error
    TpuSettings.Builder clientSettings =
        TpuSettings.newBuilder();
    clientSettings
        .deleteQueuedResourceSettings()
        .setRetrySettings(
            RetrySettings.newBuilder()
                .setInitialRetryDelay(Duration.ofMillis(5000L))
                .setRetryDelayMultiplier(2.0)
                .setInitialRpcTimeout(Duration.ZERO)
                .setRpcTimeoutMultiplier(1.0)
                .setMaxRetryDelay(Duration.ofMillis(45000L))
                .setTotalTimeout(Duration.ofHours(24L))
                .build());

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create(clientSettings.build())) {
      DeleteQueuedResourceRequest request =
          DeleteQueuedResourceRequest.newBuilder().setName(name).setForce(true).build();
      // Waiting for updates in the library. Until then, the operation will complete successfully,
      // but the user will receive an error message with UnknownException and IllegalStateException.
      tpuClient.deleteQueuedResourceAsync(request).get();

      System.out.printf("Deleted Queued Resource: %s\n", name);
    }
  }
}

Python

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-b"
# queued_resource_name = "resource-name"

client = tpu_v2alpha1.TpuClient()
request = tpu_v2alpha1.DeleteQueuedResourceRequest(
    name=f"projects/{project_id}/locations/{zone}/queuedResources/{queued_resource_name}",
    force=True,  # Set force=True to delete the resource with tpu nodes.
)

try:
    op = client.delete_queued_resource(request=request)
    op.result()
    print(f"Queued resource '{queued_resource_name}' successfully deleted.")
except TypeError as e:
    print(f"Error deleting resource: {e}")
    print(f"Queued resource '{queued_resource_name}' successfully deleted.")

Se eliminar a TPU diretamente, também tem de eliminar o recurso em fila, conforme mostrado no exemplo seguinte. Quando elimina a TPU, o pedido de recurso em fila de espera passa para o estado SUSPENDED, após o qual pode eliminar o pedido de recurso em fila de espera.

gcloud

Elimine a TPU:

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

Descrições das flags de comando

project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona da TPU na nuvem a eliminar.
your-node-id
O nome da TPU que quer eliminar.

Quando elimina a TPU, o recurso em fila associado passa para o estado SUSPENDING e, em seguida, para o estado SUSPENDED. Quando o recurso em fila de espera está no estado SUSPENDED, pode eliminá-lo:

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

Descrições das flags de comando

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona da TPU na nuvem a eliminar.

curl

Elimine a TPU:

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

Descrições das flags de comando

project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona da TPU na nuvem a eliminar.
your-node-id
O nome da TPU que quer eliminar.

Quando elimina a TPU, o recurso em fila associado passa para o estado SUSPENDING e, em seguida, para o estado SUSPENDED. Quando o recurso em fila de espera está no estado SUSPENDED, pode eliminá-lo:

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

Descrições das flags de comando

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona da TPU na nuvem a eliminar.

Consola

Elimine a TPU:

  1. Na Google Cloud consola, aceda à página TPUs:

    Aceder às TPUs

  2. Selecione a caixa de verificação junto à sua TPU.

  3. Clique em Eliminar.

Quando elimina a TPU, o recurso em fila associado passa para o estado Suspending e, em seguida, para o estado Suspended. Quando o recurso em fila estiver no estado Suspenso, pode eliminá-lo:

  1. Clique no separador Recursos em fila.
  2. Selecione a caixa de verificação junto ao pedido de recurso em fila.
  3. Clique em Eliminar.

Java

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
import com.google.api.gax.retrying.RetrySettings;
import com.google.cloud.tpu.v2.DeleteNodeRequest;
import com.google.cloud.tpu.v2.NodeName;
import com.google.cloud.tpu.v2.TpuClient;
import com.google.cloud.tpu.v2.TpuSettings;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import org.threeten.bp.Duration;

public class DeleteTpuVm {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "europe-west4-a";
    // The name for your TPU.
    String nodeName = "YOUR_TPU_NAME";

    deleteTpuVm(projectId, zone, nodeName);
  }

  // Deletes a TPU VM with the specified name in the given project and zone.
  public static void deleteTpuVm(String projectId, String zone, String nodeName)
      throws IOException, ExecutionException, InterruptedException {
    // With these settings the client library handles the Operation's polling mechanism
    // and prevent CancellationException error
    TpuSettings.Builder clientSettings =
        TpuSettings.newBuilder();
    clientSettings
        .deleteNodeOperationSettings()
        .setPollingAlgorithm(
            OperationTimedPollAlgorithm.create(
                RetrySettings.newBuilder()
                    .setInitialRetryDelay(Duration.ofMillis(5000L))
                    .setRetryDelayMultiplier(1.5)
                    .setMaxRetryDelay(Duration.ofMillis(45000L))
                    .setInitialRpcTimeout(Duration.ZERO)
                    .setRpcTimeoutMultiplier(1.0)
                    .setMaxRpcTimeout(Duration.ZERO)
                    .setTotalTimeout(Duration.ofHours(24L))
                    .build()));

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create(clientSettings.build())) {
      String name = NodeName.of(projectId, zone, nodeName).toString();

      DeleteNodeRequest request = DeleteNodeRequest.newBuilder().setName(name).build();

      tpuClient.deleteNodeAsync(request).get();
      System.out.println("TPU VM deleted");
    }
  }
}

Quando elimina a TPU, o recurso em fila associado passa para o estado SUSPENDING e, em seguida, para o estado SUSPENDED. Quando o recurso em fila estiver no estado SUSPENDED, pode eliminá-lo:

import com.google.cloud.tpu.v2alpha1.DeleteQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class DeleteQueuedResource {
  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which the TPU was created.
    String zone = "us-central1-f";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    deleteQueuedResource(projectId, zone, queuedResourceId);
  }

  // Deletes a Queued Resource asynchronously.
  public static void deleteQueuedResource(String projectId, String zone, String queuedResourceId)
      throws ExecutionException, InterruptedException, IOException {
    String name = String.format("projects/%s/locations/%s/queuedResources/%s",
        projectId, zone, queuedResourceId);
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      // Before deleting the queued resource it is required to delete the TPU VM.
      // For more information about deleting TPU
      // see https://cloud.google.com/tpu/docs/managing-tpus-tpu-vm

      DeleteQueuedResourceRequest request =
              DeleteQueuedResourceRequest.newBuilder().setName(name).build();

      tpuClient.deleteQueuedResourceAsync(request).get();
    }
  }
}

Python

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

from google.cloud import tpu_v2

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-b"
# tpu_name = "tpu-name"

client = tpu_v2.TpuClient()
try:
    client.delete_node(
        name=f"projects/{project_id}/locations/{zone}/nodes/{tpu_name}"
    )
    print("The TPU node was deleted.")
except Exception as e:
    print(e)

Quando elimina a TPU, o recurso em fila associado passa para o estado SUSPENDING e, em seguida, para o estado SUSPENDED. Quando o recurso em fila estiver no estado SUSPENDED, pode eliminá-lo:

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

Obtenha informações de estado e de diagnóstico sobre um pedido de recurso em fila

Obtenha o estado e as informações de diagnóstico sobre um pedido de recurso em fila:

gcloud

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

Descrições das flags de comando

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
project
O ID do projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.

curl

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

Descrições das flags de comando

queued-resource-request-id
O ID atribuído pelo utilizador do pedido de recurso em fila.
project
O ID do projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.

Consola

  1. Na Google Cloud consola, aceda à página TPUs:

    Aceder às TPUs

  2. Clique no separador Recursos em fila.

  3. Clique no nome do seu pedido de recurso em fila.

Depois de o TPU ter sido aprovisionado, também pode ver detalhes sobre o pedido de recursos em fila de espera acedendo à página TPUs, encontrando o seu TPU e clicando no nome do pedido de recursos em fila de espera correspondente.

Java

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import com.google.cloud.tpu.v2alpha1.GetQueuedResourceRequest;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import java.io.IOException;

public class GetQueuedResource {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which the TPU was created.
    String zone = "us-central1-f";
    // The name for your Queued Resource.
    String queuedResourceId = "QUEUED_RESOURCE_ID";

    getQueuedResource(projectId, zone, queuedResourceId);
  }

  // Get a Queued Resource.
  public static QueuedResource getQueuedResource(
      String projectId, String zone, String queuedResourceId) throws IOException {
    String name = String.format("projects/%s/locations/%s/queuedResources/%s",
        projectId, zone, queuedResourceId);
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      GetQueuedResourceRequest request =
          GetQueuedResourceRequest.newBuilder().setName(name).build();

      return tpuClient.getQueuedResource(request);
    }
  }
}

Python

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-b"
# queued_resource_name = "resource-name"

client = tpu_v2alpha1.TpuClient()
name = (
    f"projects/{project_id}/locations/{zone}/queuedResources/{queued_resource_name}"
)
resource = client.get_queued_resource(name=name)
print("Resource name:", resource.name)
print(resource.state)
# Example response:
# Resource name: projects/{project_id}/locations/{zone}/queuedResources/resource-name
# State.ACTIVE

Se o pedido falhar, o resultado contém informações de erro. Para um pedido que está a aguardar recursos, o resultado tem um aspeto semelhante ao seguinte:

gcloud

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

Consola

O campo Estado do recurso em fila apresenta A aguardar recursos.

Liste os pedidos de recursos em fila no seu projeto

Indique os pedidos de recursos em fila no seu projeto:

gcloud

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

Descrições das flags de comando

project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.

curl

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

Descrições das flags de comando

project
O Google Cloud projeto onde o recurso em fila é atribuído.
zone
A zona onde planeia criar a sua Cloud TPU.

Consola

  1. Na Google Cloud consola, aceda à página TPUs:

    Aceder às TPUs

  2. Clique no separador Recursos em fila.

Java

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import com.google.cloud.tpu.v2alpha1.ListQueuedResourcesRequest;
import com.google.cloud.tpu.v2alpha1.QueuedResource;
import com.google.cloud.tpu.v2alpha1.TpuClient;
import com.google.cloud.tpu.v2alpha1.TpuClient.ListQueuedResourcesPage;
import java.io.IOException;

public class ListQueuedResources {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which the TPU was created.
    String zone = "us-central1-a";

    listQueuedResources(projectId, zone);
  }

  // List Queued Resources.
  public static ListQueuedResourcesPage listQueuedResources(
      String projectId, String zone) throws IOException {
    String parent = String.format("projects/%s/locations/%s", projectId, zone);
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (TpuClient tpuClient = TpuClient.create()) {
      ListQueuedResourcesRequest request =
          ListQueuedResourcesRequest.newBuilder().setParent(parent).build();
      ListQueuedResourcesPage response =  tpuClient.listQueuedResources(request).getPage();

      for (QueuedResource queuedResource : response.iterateAll()) {
        System.out.println(queuedResource.getName());
      }
      return response;
    }
  }
}

Python

Para se autenticar no Cloud TPU, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

from google.cloud import tpu_v2alpha1

# TODO(developer): Update and un-comment below lines
# project_id = "your-project-id"
# zone = "us-central1-b"

client = tpu_v2alpha1.TpuClient()
parent = f"projects/{project_id}/locations/{zone}"
resources = client.list_queued_resources(parent=parent)
for resource in resources:
    print("Resource name:", resource.name)
    print("TPU id:", resource.tpu.node_spec[0].node_id)
# Example response:
# Resource name: projects/{project_id}/locations/{zone}/queuedResources/resource-name
# TPU id: tpu-name