큐에 추가된 리소스 관리

큐에 추가된 리소스를 사용하면 큐에 추가된 방식으로 Cloud TPU 리소스를 요청할 수 있습니다. 큐에 추가된 리소스를 요청하면 Cloud TPU 서비스에서 유지보수하는 큐에 요청이 추가됩니다. 요청된 리소스를 사용할 수 있게 되면 즉시 독점적으로 사용할 수 있도록 Google Cloud 프로젝트에 할당됩니다. 삭제 또는 선점되지 않는 한 프로젝트에 할당된 상태로 유지됩니다. TPU 스팟 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 스팟 VM 큐에 추가된 리소스 요청

스팟 VM은 언제든지 선점하고 다른 워크로드에 할당할 수 있는 리소스입니다. 스팟 VM 리소스는 비용이 낮으며, 스팟 이외의 VM 요청에 비해 더 빠르게 리소스에 액세스할 수 있습니다. TPU 스팟 VM에 대한 자세한 내용은 TPU 스팟 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
큐에 추가된 리소스가 스팟 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
큐에 추가된 리소스가 스팟 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 스팟 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 topic datetime을 참조하세요.

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 topic datetime을 참조하세요.

콘솔

  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. 만들기를 클릭하여 큐에 추가된 리소스 요청을 만듭니다.

다음 예시에서는 6시간 후에 v5p-32를 할당하도록 요청합니다.

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 topic datetime을 참조하세요.

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 topic datetime을 참조하세요.

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.