キューに格納されたリソースを管理する

キューに格納されたリソースを使用すると、Cloud TPU リソースをキュー方式でリクエストできます。キューに格納されたリソースをリクエストすると、そのリクエストは Cloud TPU サービスによって管理されるキューに追加されます。リクエストされたリソースが使用可能になると、 Google Cloud プロジェクトに割り当てられ、すぐに独占的に使用できるようになります。プロジェクトを削除またはプリエンプトしない限り、リソースはプロジェクトに割り当てられたままになります。プリエンプションの対象は TPU Spot VM とプリエンプティブル TPU のみとなります。

キューに格納されたリソース リクエストでは、必要に応じて開始時刻や終了時刻を指定できます。開始時刻は、リクエストを処理できる最も早い時刻を指定します。指定された終了時刻までにリクエストが処理されない場合、リクエストは期限切れになります。リクエストは有効期限が切れた後もキュー内に残ります。

キューに格納されたリソース リクエストは、次のいずれかの状態になります。

WAITING_FOR_RESOURCES
リクエストは最初の検証に合格し、キューに追加されました。この状態は、リクエストのプロビジョニングを開始するのに十分な空きリソースがあるか、割り当て間隔が経過するまで維持されます。需要が高い場合、一部のリクエストはすぐにプロビジョニングできない可能性があります。TPU を安定して取得する必要がある場合は、予約の購入を検討してください。
PROVISIONING
リクエストがキューから選択され、リソースが割り当てられています。
ACTIVE
リクエストが割り当てられました。キューに格納されたリソース リクエストが ACTIVE 状態になると、TPU を管理するの説明に従って TPU VM を管理できます。
FAILED
リクエストに問題があるか、割り当て間隔内でリクエストされたリソースが使用可能にならなかったため、リクエストを完了できませんでした。リクエストは、明示的に削除されるまでキューに残ります。
SUSPENDING
リクエストに関連付けられているリソースが削除されています。
SUSPENDED
リクエストで指定されたリソースが削除されました。リクエストが SUSPENDED 状態になると、その後の割り当ての対象外になります。

前提条件

このガイドのコマンドを実行する前に、Google Cloud CLI をインストールし、 Google Cloud プロジェクトを作成して、Cloud TPU API を有効にする必要があります。手順については、Cloud TPU 環境を設定するをご覧ください。

Cloud クライアント ライブラリのいずれかを使用している場合は、使用している言語の設定手順に沿って操作します。

キューに格納されたオンデマンド リソースをリクエストする

オンデマンド リソースはプリエンプトされませんが、オンデマンド割り当ては、リクエストを満たすのに十分な Cloud 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

コマンド パラメータの説明

queued-resource-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
キューに格納されたリソース リクエストの割り当て時に作成される TPU のユーザー割り当て ID。
project
Google Cloud プロジェクト。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
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

コマンド パラメータの説明

queued-resource-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
キューに格納されたリソース リクエストの割り当て時に作成される TPU のユーザー割り当て ID。
project
Google Cloud プロジェクト。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン

コンソール

  1. Google Cloud コンソールで、[TPU] ページに移動します。

    [TPU] に移動

  2. [TPU を作成] をクリックします。

  3. [名前] フィールドに、TPU の名前を入力します。

  4. [ゾーン] ボックスで、TPU を作成するゾーンを選択します。

  5. [TPU タイプ] ボックスで、アクセラレータ タイプを選択します。アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。

  6. [TPU ソフトウェア バージョン] ボックスで、ソフトウェア バージョンを選択します。Cloud TPU VM の作成時には、この TPU ソフトウェア バージョンによって、インストールされる TPU ランタイム バージョンが指定されます。詳細については、TPU ソフトウェア バージョンをご覧ください。

  7. [キューイングを有効にする] トグルをクリックします。

  8. [キューに格納されたリソースの名前] フィールドに、キューに格納されたリソース リクエストの名前を入力します。

  9. [作成] をクリックして、キューに格納されたリソース リクエストを作成します。

Java

Cloud TPU に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

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

Cloud TPU に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

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

予約を使用してキューに格納されたリソースをリクエストする

予約を使用して、キューに格納されたリソースをリクエストできます。予約を購入するには、 Google Cloud アカウント チームにお問い合わせください。

gcloud

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

コマンド パラメータの説明

queued-resource-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
キューに格納されたリソース リクエストの割り当て時に作成される TPU のユーザー割り当て ID。
project
Google Cloud プロジェクト。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
reserved
このフラグは、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

コマンド パラメータの説明

queued-resource-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
キューに格納されたリソース リクエストの割り当て時に作成される TPU のユーザー割り当て ID。
project
Google Cloud プロジェクト。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
reserved
このフラグは、Cloud TPU 予約の一部としてキューに格納されたリソースをリクエストするときに使用します。

コンソール

  1. Google Cloud コンソールで、[TPU] ページに移動します。

    [TPU] に移動

  2. [TPU を作成] をクリックします。

  3. [名前] フィールドに、TPU の名前を入力します。

  4. [ゾーン] ボックスで、TPU を作成するゾーンを選択します。

  5. [TPU タイプ] ボックスで、アクセラレータ タイプを選択します。アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。

  6. [TPU ソフトウェア バージョン] ボックスで、ソフトウェア バージョンを選択します。Cloud TPU VM の作成時には、この TPU ソフトウェア バージョンによって、インストールされる TPU ランタイム バージョンが指定されます。詳細については、TPU ソフトウェア バージョンをご覧ください。

  7. [キューイングを有効にする] トグルをクリックします。

  8. [キューに格納されたリソースの名前] フィールドに、キューに格納されたリソース リクエストの名前を入力します。

  9. [管理] セクションを開きます。

  10. [既存の予約を使用する] チェックボックスをオンにします。

  11. [作成] をクリックして、キューに格納されたリソース リクエストを作成します。

キューに格納された TPU Spot VM リソースをリクエストする

Spot VM は、いつでもプリエンプトして別のワークロードに割り当てることができるリソースです。Spot VM リソースは低コストで、Spot VM 以外のリクエストよりも早くリソースにアクセスできる場合があります。TPU Spot VM の詳細については、TPU Spot VM を管理するをご覧ください。

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

コマンド パラメータの説明

queued-resource-request-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
リクエストへのレスポンスとして作成された TPU のユーザー定義 ID。
project
キューに格納されたリソースが割り当てられているプロジェクトの ID。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
spot
キューに格納されたリソースが Spot VM であることを指定するブール値のフラグ。

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

コマンド パラメータの説明

queued-resource-request-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
リクエストへのレスポンスとして作成された TPU のユーザー定義 ID。
project
キューに格納されたリソースが割り当てられているプロジェクトの ID。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
spot
キューに格納されたリソースが Spot VM であることを指定するブール値のフラグ。

コンソール

  1. Google Cloud コンソールで、[TPU] ページに移動します。

    [TPU] に移動

  2. [TPU を作成] をクリックします。

  3. [名前] フィールドに、TPU の名前を入力します。

  4. [ゾーン] ボックスで、TPU を作成するゾーンを選択します。

  5. [TPU タイプ] ボックスで、アクセラレータ タイプを選択します。アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。

  6. [TPU ソフトウェア バージョン] ボックスで、ソフトウェア バージョンを選択します。Cloud TPU VM の作成時には、この TPU ソフトウェア バージョンによって、インストールされる TPU ランタイム バージョンが指定されます。詳細については、TPU ソフトウェア バージョンをご覧ください。

  7. [キューイングを有効にする] トグルをクリックします。

  8. [キューに格納されたリソースの名前] フィールドに、キューに格納されたリソース リクエストの名前を入力します。

  9. [管理] セクションを開きます。

  10. [これを TPU Spot VM にする。] チェックボックスをオンにします。

  11. [作成] をクリックします。

Java

Cloud TPU に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

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

Cloud TPU に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

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

指定した時間の前後にキューに格納されたリソースを割り当てるようリクエストする

キューに格納されたリソース リクエストでは、必要に応じて開始時刻または終了時刻を指定できます。開始時刻または開始期間は、リクエストを処理する最も早い時刻を指定します。終了時刻または終了期間は、リクエストが有効な期間を指定します。指定した終了時刻まで、または指定した期間内にリクエストが処理されない場合、リクエストは期限切れになります。リクエストの有効期限が切れると、キューには残りますが、割り当ての対象外になります。

開始時刻または期間と終了時刻または期間を指定して、割り当て間隔を指定することもできます。

サポートされているタイムスタンプと期間の形式の一覧については、日時をご覧ください。

指定した時刻の経過後にキューに格納されたリソースを処理するようにリクエストする

キューに格納されたリソース リクエストでは、ある時刻または期間の経過後にリソースを割り当てるよう指定できます。

gcloud

次のコマンドは、2022 年 12 月 14 日午前 9 時以降に v5p-4096 TPU を割り当てるようリクエストします。

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

コマンド パラメータの説明

queued-resource-request-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
リクエストへのレスポンスとして作成された TPU のユーザー定義 ID。
project
キューに格納されたリソースが割り当てられている Google Cloud プロジェクト。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
valid-after-time
経過後にリソースが割り当てられる時刻。期間の形式の詳細については、Google Cloud CLI トピックの日時をご覧ください。

curl

次のコマンドは、2022 年 12 月 14 日午前 9 時以降に v5p-4096 TPU を割り当てるようリクエストします。

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

コマンド パラメータの説明

queued-resource-request-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
リクエストへのレスポンスとして作成された TPU のユーザー定義 ID。
project
キューに格納されたリソースが割り当てられている Google Cloud プロジェクト。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
valid-after-time
経過後にリソースが割り当てられる時刻。期間の形式の詳細については、Google Cloud CLI トピックの日時をご覧ください。

コンソール

  1. Google Cloud コンソールで、[TPU] ページに移動します。

    [TPU] に移動

  2. [TPU を作成] をクリックします。

  3. [名前] フィールドに、TPU の名前を入力します。

  4. [ゾーン] ボックスで、TPU を作成するゾーンを選択します。

  5. [TPU タイプ] ボックスで、アクセラレータ タイプを選択します。アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。

  6. [TPU ソフトウェア バージョン] ボックスで、ソフトウェア バージョンを選択します。Cloud TPU VM の作成時には、この TPU ソフトウェア バージョンによって、インストールされる TPU ランタイム バージョンが指定されます。詳細については、TPU ソフトウェア バージョンをご覧ください。

  7. [キューイングを有効にする] トグルをクリックします。

  8. [キューに格納されたリソースの名前] フィールドに、キューに格納されたリソース リクエストの名前を入力します。

  9. [リクエストの開始時刻] フィールドに、経過後にリソースが割り当てられる時刻を入力します。

  10. [作成] をクリックして、キューに格納されたリソース リクエストを作成します。

次の例では、v5p-32 を 6 時間後に割り当てるようリクエストします。

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

コマンド パラメータの説明

queued-resource-request-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
リクエストへのレスポンスとして作成された TPU のユーザー定義 ID。
project
キューに格納されたリソースが割り当てられている Google Cloud プロジェクト。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
valid-after-duration
開始前に TPU をプロビジョニングできない期間。期間形式の詳細については、Google Cloud CLI トピックの日時をご覧ください。

curl

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

コマンド パラメータの説明

queued-resource-request-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
リクエストへのレスポンスとして作成された TPU のユーザー定義 ID。
project
キューに格納されたリソースが割り当てられている Google Cloud プロジェクト。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
valid-after-duration
開始前に TPU をプロビジョニングできない期間。期間形式の詳細については、Google Cloud CLI トピックの日時をご覧ください。

Java

Cloud TPU に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

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

指定した期間の経過後に期限切れとなるキューに格納されたリソースをリクエストする

キューに格納されたリソース リクエストでは、キューに格納されたリソース リクエストの有効期間を指定できます。指定した時刻まで、または期間内にリクエストが処理されない場合、リクエストは期限切れになります。

gcloud

次のコマンドは、v5p-4096 TPU をリクエストします。2022 年 12 月 14 日午前 9 時までにリクエストが処理されなかった場合、リクエストは期限切れになります。

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

コマンド パラメータの説明

queued-resource-request-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
リクエストへのレスポンスとして作成された TPU のユーザー定義 ID。
project
キューに格納されたリソースが割り当てられているプロジェクトの ID。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
valid-until-time
経過後にリクエストがキャンセルされる時刻。期間形式の詳細については、Google Cloud CLI トピックの日時をご覧ください。

curl

次のコマンドは、v5p-4096 TPU をリクエストします。2022 年 12 月 14 日午前 9 時までにリクエストが処理されなかった場合、リクエストは期限切れになります。

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

コマンド パラメータの説明

queued-resource-request-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
リクエストへのレスポンスとして作成された TPU のユーザー定義 ID。
project
キューに格納されたリソースが割り当てられているプロジェクトの ID。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
valid-until-time
経過後にリクエストがキャンセルされる時刻。期間形式の詳細については、Google Cloud CLI トピックの日時をご覧ください。

コンソール

  1. Google Cloud コンソールで、[TPU] ページに移動します。

    [TPU] に移動

  2. [TPU を作成] をクリックします。

  3. [名前] フィールドに、TPU の名前を入力します。

  4. [ゾーン] ボックスで、TPU を作成するゾーンを選択します。

  5. [TPU タイプ] ボックスで、アクセラレータ タイプを選択します。アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。

  6. [TPU ソフトウェア バージョン] ボックスで、ソフトウェア バージョンを選択します。Cloud TPU VM の作成時には、この TPU ソフトウェア バージョンによって、インストールされる TPU ランタイム バージョンが指定されます。詳細については、TPU ソフトウェア バージョンをご覧ください。

  7. [キューイングを有効にする] トグルをクリックします。

  8. [キューに格納されたリソースの名前] フィールドに、キューに格納されたリソース リクエストの名前を入力します。

  9. [リクエストのキャンセル時刻] フィールドに、キューに格納されたリソース リクエストが処理されなかった場合に期限切れになる時刻を入力します。

  10. [作成] をクリックして、キューに格納されたリソース リクエストを作成します。

次の例では、v5p-32 をリクエストします。6 時間以内に処理されないとリクエストは期限切れになります。

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

コマンド パラメータの説明

queued-resource-request-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
リクエストへのレスポンスとして作成された TPU のユーザー定義 ID。
project
キューに格納されたリソースが割り当てられている Google Cloud プロジェクト。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
valid-until-duration
リクエストが有効である期間。期間形式の詳細については、Google Cloud CLI トピックの日時をご覧ください。

curl

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

コマンド パラメータの説明

queued-resource-request-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
リクエストへのレスポンスとして作成された TPU のユーザー定義 ID。
project
キューに格納されたリソースが割り当てられている Google Cloud プロジェクト。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
valid-until-duration
リクエストが有効である期間。期間形式の詳細については、Google Cloud CLI トピックの日時をご覧ください。

Python

Cloud TPU に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

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

キューに格納されたリソースを指定された時間内に割り当てるようリクエストする

開始時刻または期間と終了時刻または期間の両方を指定して、割り当て間隔を指定できます。

gcloud

次のコマンドは、現在の時刻から 5 時間 30 分後に v5p-32 をリクエストし、2022 年 12 月 14 日午前 9 時までに作成するようリクエストします。

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

コマンドフラグの説明

queued-resource-request-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
リクエストへのレスポンスとして作成された TPU のユーザー定義 ID。
project
キューに格納されたリソースが割り当てられているプロジェクトの ID。
zone
Cloud TPU を作成するゾーン
accelerator-type
アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
runtime-version
Cloud TPU ソフトウェアのバージョン
valid-until-time
経過後にリクエストがキャンセルされる時刻。期間形式の詳細については、Google Cloud CLI トピックの日時をご覧ください。
valid-after-duration
開始前に TPU をプロビジョニングできない期間。期間形式の詳細については、Google Cloud CLI トピックの日時をご覧ください。

curl

次のコマンドは、現在の時刻から 5 時間 30 分後に v5p-32 をリクエストし、2022 年 12 月 14 日午前 9 時までに作成するようリクエストします。

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

コマンドフラグの説明

queued-resource-request-id
キューに格納されたリソース リクエストのユーザー割り当て ID。
node-id
リクエストへのレスポンスとして作成された TPU のユーザー定義 ID。
project
キューに格納されたリソースが割り当てられているプロジェクトの ID。
zone