이 가이드에서는 캘린더 모드에서 미래용 예약을 사용하여 Tensor Processing Unit(TPU) 프로비저닝을 최적화하는 방법을 보여줍니다. 캘린더 모드의 미래용 예약은 TPU 용량을 찾고 미리 계획을 세우는 데 도움이 되는 내장 캘린더 어드바이저 및 추천자입니다. 시작 시간과 지속 시간(1~90일)을 지정해 용량을 요청하면 추천자에서 추천 날짜를 제공합니다.
이 가이드는 일괄 워크로드를 실행하기 위해 Kubernetes 컨테이너 조정 기능을 사용하는 데 관심이 있는 머신러닝(ML) 엔지니어, 플랫폼 관리자 및 운영자, 데이터 및 AI 전문가를 대상으로 합니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 태스크에 대해 자세히 알아보려면 일반 GKE 사용자 역할 및 태스크를 참고하세요.
자세한 내용은 캘린더 모드의 미래용 예약 정보를 참고하세요.
사용 사례
캘린더 모드의 미래용 예약은 학습과 같이 예약된 단기 고수요 요청이 있거나 요청된 시작 시간에 고가용성이 필요한 일괄 추론 모델이 있는 워크로드에 가장 적합합니다.
워크로드에 장기 예약이나 복잡한 할당량 관리 없이 필요에 따라 최대 7일 동안 동적으로 프로비저닝된 리소스가 필요한 경우 flex-start 소비 옵션을 사용하는 것이 좋습니다. 자세한 내용은 flex-start를 사용한 GPU 및 TPU 프로비저닝 정보를 참고하세요.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치했으면
gcloud components update명령어를 실행하여 최신 버전을 가져옵니다. 이전 gcloud CLI 버전에서는 이 문서의 명령어를 실행하지 못할 수 있습니다.
- 다음 중 하나가 있어야 합니다.
- 버전 1.28.3-gke.1098000 이상을 실행하는 기존 Standard 클러스터
- 버전 1.30.3-gke.1451000 이상을 실행하는 기존 Autopilot 클러스터
캘린더 모드에서 TPU의 미래용 예약 요청
캘린더 모드에서 미래용 예약으로 TPU를 요청하는 프로세스는 다음 단계를 포함합니다.
- VM이 생성될 때 예약에 포함되지 않는 리소스(예: 디스크 또는 IP 주소)에 충분한 할당량이 있는지 확인합니다. 캘린더 모드의 미래용 예약 요청에는 Compute Engine 할당량이 필요하지 않습니다.
- 캘린더 모드에서 요청 만들기의 단계를 완료합니다. 이러한 단계에는 다음이 포함됩니다.
- TPU 미래 가용성을 확인합니다.
- 캘린더 모드에서 TPU의 미래용 예약 요청을 만들고 제출합니다.
- Google Cloud 가 요청을 승인할 때까지 기다립니다.
- 예약을 사용하는 TPU 노드 풀을 만듭니다.
노드 풀 만들기
Autopilot 모드는 워크로드를 기반으로 노드를 자동으로 생성하므로 이 섹션은 Standard 클러스터에만 적용됩니다.
단일 호스트 또는 멀티 호스트 TPU 슬라이스 노드 풀을 만들 때 예약을 사용할 수 있습니다.
단일 호스트 TPU 슬라이스 노드 풀을 만듭니다.
Google Cloud CLI를 사용하여 단일 호스트 TPU 슬라이스 노드 풀을 만들 수 있습니다.
gcloud container node-pools create NODE_POOL_NAME \
--location=CONTROL_PLANE_LOCATION \
--cluster=CLUSTER_NAME \
--node-locations=NODE_ZONES \
--machine-type=MACHINE_TYPE \
--reservation-affinity=specific \ This is required
--reservation=RESERVATION
다음을 바꿉니다.
NODE_POOL_NAME: 새 노드 풀의 이름CONTROL_PLANE_LOCATION: 사용할 TPU 버전에 따른 영역의 이름. 사용 가능한 위치를 확인하려면 GKE의 TPU 가용성을 참조하세요.CLUSTER_NAME: 클러스터의 이름NODE_ZONES: GKE가 노드 풀을 만드는 하나 이상의 영역을 쉼표로 구분한 목록MACHINE_TYPE: 노드에 사용할 머신 유형. TPU 호환 머신 유형에 관한 자세한 내용은 TPU 버전 선택의 표를 참고하세요.RESERVATION: 사용할 캘린더 예약의 이름
지정할 수 있는 모든 플래그의 전체 목록은 gcloud container clusters create 참조를 확인하세요.
일정 예약으로 노드 풀을 만든 후에는 다른 TPU 노드 풀과 마찬가지로 워크로드를 배포할 수 있습니다. 캘린더 모드에서 미래용 예약을 사용하는 방식은 다른 유형의 예약과 동일합니다. 자세한 내용은 예약된 영역별 리소스 소비를 참고하세요.
멀티 호스트 TPU 슬라이스 노드 풀 만들기
멀티 호스트 TPU 슬라이스 노드 풀을 만드는 단계는 Ironwood (TPU7x)를 사용하는지 또는 이전 TPU 버전을 사용하는지에 따라 다릅니다.Ironwood (TPU7x)
Google Cloud CLI 또는 Terraform을 사용하여 Ironwood (TPU7x) 버전에서 멀티 호스트 TPU 슬라이스 노드 풀을 만들 수 있습니다.
gcloud
Ironwood (TPU7x)로 멀티 호스트 TPU 슬라이스 노드 풀을 만들려면 먼저 워크로드 정책을 만들어야 합니다.
워크로드 정책을 만듭니다.
gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \ --type=HIGH_THROUGHPUT \ --accelerator-topology=TPU_TOPOLOGY \ --project=PROJECT_ID \ --region=REGION다음을 바꿉니다.
WORKLOAD_POLICY_NAME: 워크로드 정책의 이름입니다.TPU_TOPOLOGY: TPU Ironwood (TPU7x) 토폴로지입니다. 예를 들면2x2x2입니다. 지원되는 모든 Ironwood (TPU7x) 토폴로지를 확인하려면 토폴로지 섹션을 참고하세요.PROJECT_ID: Google Cloud 프로젝트 ID입니다.REGION: 워크로드 정책의 리전입니다. 워크로드 정책은 리전별 리소스이며 동일한 토폴로지를 공유하는 노드 풀에서 재사용할 수 있습니다.
워크로드 정책을 사용하여 노드 풀을 만듭니다.
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=us-central1 \ --node-locations=us-central1-c \ --machine-type=tpu7x-standard-4t \ --reservation-affinity=specific \ --reservation=FUTURE_RESERVATION_NAME \ --placement-policy=WORKLOAD_POLICY다음을 바꿉니다.
NODE_POOL_NAME: 새 노드 풀의 이름입니다.WORKLOAD_POLICY: 생성한 워크로드 정책의 이름입니다.FUTURE_RESERVATION_NAME: 미래 예약의 이름
이 명령어는 다음 특성을 사용하여 NODE_POOL_NAME라는 노드 풀을 만듭니다.
--machine-type=tpu7x-standard-4t은 Ironwood (TPU7x) 머신 유형을 지정합니다.
Terraform
google제공업체 버전 4.84.0 이상을 사용해야 합니다.워크로드 정책을 만듭니다.
resource "google_compute_resource_policy" { name = "WORKLOAD_POLICY_NAME" region = CLUSTER_LOCATION workload_policy { type = "HIGH_THROUGHPUT" accelerator_topology = "TPU_TOPOLOGY" } }다음을 바꿉니다.
WORKLOAD_POLICY_NAME: 워크로드 정책의 이름입니다.CLUSTER_LOCATION: 클러스터의 컴퓨팅 위치. Kubernetes 컨트롤 플레인의 신뢰성 향상을 위해 리전 클러스터를 사용하는 것이 좋습니다. 영역 클러스터를 사용할 수도 있습니다. 자세한 내용은 TPU 버전 및 토폴로지 선택을 참고하세요.TPU_TOPOLOGY: TPU Ironwood (TPU7x) 토폴로지입니다. 예를 들면2x2x2입니다. 지원되는 모든 Ironwood (TPU7x) 토폴로지를 확인하려면 TPU 계획을 참고하세요.
google_compute_resource_policy참조에 대한 자세한 내용은 Terraform 제공업체를 참고하세요.Terraform 구성에 다음 블록을 추가합니다.
resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" { provider = google project = PROJECT_ID cluster = CLUSTER_NAME name = POOL_NAME location = CLUSTER_LOCATION node_locations = [NODE_ZONES] initial_node_count = NUM_NODES autoscaling { max_node_count = MAX_NODES location_policy = "ANY" } node_config { machine_type = MACHINE_TYPE reservation_affinity { consume_reservation_type = "SPECIFIC_RESERVATION" key = "compute.googleapis.com/reservation-name" values = [RESERVATION_LABEL_VALUES] } flex_start = false } placement_policy { policy_name = WORKLOAD_POLICY_NAME } }다음을 바꿉니다.
NODE_POOL_RESOURCE_NAME: Terraform 템플릿의 노드 풀 리소스 이름입니다.PROJECT_ID: 프로젝트 ID입니다.CLUSTER_NAME: 노드 풀을 추가할 기존 클러스터의 이름입니다.POOL_NAME: 만들 노드 풀의 이름입니다.NODE_ZONES: GKE가 노드 풀을 만드는 하나 이상의 영역을 쉼표로 구분한 목록NUM_NODES: 노드 풀의 노드 수입니다. 0이거나 TPU 칩 수의 곱을 4(멀티 호스트 TPU 슬라이스의 TPU 슬라이스 노드마다 칩이 4개 있기 때문)로 나눈 값이어야 합니다. 예를 들어TPU_TOPOLOGY이4x8이면 칩이 32개 있으므로NUM_NODES는 8이어야 합니다. TPU 토폴로지에 대한 자세한 내용은 TPU 버전 선택의 표를 참조하세요.TPU_TOPOLOGY: TPU 슬라이스에 대해 선택된 물리적 토폴로지를 나타냅니다. 토폴로지 형식은 사용 중인 TPU 버전에 따라 달라집니다. TPU 토폴로지에 대한 자세한 내용은 토폴로지 선택의 표를 참조하세요.
선택적으로 다음 변수를 사용할 수도 있습니다.
RESERVATION_NAME: TPU 예약을 사용하는 경우 노드 풀을 만들 때 사용할 예약 리소스 라벨 목록을 제공합니다.reservation_affinity필드에RESERVATION_LABEL_VALUES를 채우는 방법에 대한 자세한 내용은 Terraform 제공업체를 참조하세요.autoscaling: 자동 확장이 사용 설정된 노드 풀을 만듭니다. GKE는 멀티 호스트 TPU 슬라이스 노드 풀을 확장할 때 노드 풀을 0에서 최대 크기로 원자적으로 수직 확장합니다.MAX_NODES: 노드 풀의 최대 크기입니다. 이 값은TPU_TOPOLOGY에 정의된 값의 곱 ({A}x{B}x{C})을 각 VM의 칩 수로 나눈 값과 같아야 합니다. 예를 들어TPU_TOPOLOGY이2x2x2이면 곱은 8입니다.tpu7x-standard-4t의 각 VM에는 4개의 칩이 있으므로 노드 수는 2입니다.
spot: TPU 슬라이스 노드에 스팟 VM을 사용할 노드 풀입니다. 노드 풀을 만든 후에는 이 설정을 변경할 수 없습니다. 자세한 내용은 스팟 VM을 참조하세요.flex_start: flex-start 소비 옵션을 사용할 노드 풀입니다.spot이 사용 설정된 경우 이 설정을true로 설정할 수 없습니다.
기타 TPU 버전
Google Cloud CLI, Terraform 또는 Google Cloud 콘솔을 사용하여 v3, v4, v5p, v5e, Trillium (v6e) 버전에서 멀티 호스트 TPU 슬라이스 노드 풀을 만들 수 있습니다.
gcloud
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--node-locations=NODE_ZONES \
--machine-type=MACHINE_TYPE \
--tpu-topology=TPU_TOPOLOGY \
--reservation-affinity=specific \
--reservation=FUTURE_RESERVATION_NAME
다음을 바꿉니다.
NODE_POOL_NAME: 새 노드 풀의 이름입니다.CLUSTER_NAME: 클러스터의 이름입니다.CONTROL_PLANE_LOCATION: 사용할 TPU 버전에 따른 영역의 이름입니다. 사용 가능한 위치를 확인하려면 GKE의 TPU 가용성을 참조하세요.NODE_ZONES: GKE가 노드 풀을 만드는 하나 이상의 영역을 쉼표로 구분한 목록MACHINE_TYPE: 노드에 사용할 머신 유형. TPU 호환 머신 유형에 관한 자세한 내용은 TPU 버전 선택의 표를 참고하세요.TPU_TOPOLOGY: TPU 토폴로지입니다. 예를 들면2x2x2입니다. 지원되는 모든 TPU 토폴로지를 확인하려면 토폴로지 섹션을 참고하세요.FUTURE_RESERVATION_NAME: 미래 예약의 이름
Terraform
google제공업체 버전 4.84.0 이상을 사용해야 합니다.Terraform 구성에 다음 블록을 추가합니다.
resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" { provider = google project = PROJECT_ID cluster = CLUSTER_NAME name = POOL_NAME location = CLUSTER_LOCATION node_locations = [NODE_ZONES] initial_node_count = NUM_NODES autoscaling { max_node_count = MAX_NODES location_policy = "ANY" } node_config { machine_type = MACHINE_TYPE reservation_affinity { consume_reservation_type = "SPECIFIC_RESERVATION" key = "compute.googleapis.com/reservation-name" values = [RESERVATION_LABEL_VALUES] } flex_start = false } placement_policy { type = "COMPACT" tpu_topology = TPU_TOPOLOGY } }다음을 바꿉니다.
NODE_POOL_RESOURCE_NAME: Terraform 템플릿의 노드 풀 리소스 이름입니다.PROJECT_ID: 프로젝트 ID입니다.CLUSTER_NAME: 노드 풀을 추가할 기존 클러스터의 이름입니다.POOL_NAME: 만들 노드 풀의 이름입니다.CLUSTER_LOCATION: 클러스터의 컴퓨팅 위치입니다. Kubernetes 컨트롤 플레인의 신뢰성 향상을 위해 리전 클러스터를 사용하는 것이 좋습니다. 영역 클러스터를 사용할 수도 있습니다. 자세한 내용은 TPU 버전 및 토폴로지 선택을 참조하세요.NODE_ZONES: GKE가 노드 풀을 만드는 하나 이상의 영역을 쉼표로 구분한 목록NUM_NODES: 노드 풀의 노드 수입니다. 0이거나 TPU 칩 수의 곱을 4(멀티 호스트 TPU 슬라이스의 TPU 슬라이스 노드마다 칩이 4개 있기 때문)로 나눈 값이어야 합니다. 예를 들어TPU_TOPOLOGY가4x8이면 칩이 32개 있으므로NUM_NODES는 8이어야 합니다. TPU 토폴로지에 대한 자세한 내용은 TPU 버전 선택의 표를 참조하세요.TPU_TOPOLOGY: TPU 슬라이스의 물리적 토폴로지를 나타냅니다. 토폴로지 형식은 사용 중인 TPU 버전에 따라 달라집니다. TPU 토폴로지에 대한 자세한 내용은 토폴로지 선택의 표를 참조하세요.
선택적으로 다음 변수를 사용할 수도 있습니다.
RESERVATION_NAME: TPU 예약을 사용하는 경우 노드 풀을 만들 때 사용할 예약 리소스의 라벨 목록입니다.reservation_affinity필드에RESERVATION_LABEL_VALUES를 채우는 방법에 대한 자세한 내용은 Terraform 제공업체를 참조하세요.autoscaling: 자동 확장이 사용 설정된 노드 풀을 만듭니다. GKE는 멀티 호스트 TPU 슬라이스 노드 풀을 확장할 때 노드 풀을 0에서 최대 크기로 원자적으로 수직 확장합니다.MAX_NODES: 노드 풀의 최대 크기입니다.TPU_TOPOLOGY에 정의된 값의 곱 ({A}x{B}x{C})을 각 VM의 칩 수로 나눈 값이어야 합니다.
spot: 노드 풀에서 TPU 슬라이스 노드에 스팟 VM을 사용할 수 있게 합니다. 노드 풀을 만든 후에는 변경할 수 없습니다. 자세한 내용은 스팟 VM을 참조하세요.flex_start: flex-start 소비 옵션을 사용하도록 노드 풀을 설정합니다.spot이 사용 설정된 경우true로 설정할 수 없습니다.
콘솔
TPU가 포함된 노드 풀을 만들려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
클러스터 목록에서 수정하려는 클러스터 이름을 클릭합니다.
add_box 노드 풀 추가를 클릭합니다.
노드 풀 세부정보 섹션에서 노드 위치 지정 체크박스를 선택합니다.
사용할 TPU 버전에 따른 영역의 이름. 사용 가능한 위치를 확인하려면 GKE의 TPU 가용성을 참조하세요.
탐색창에서 노드를 클릭합니다.
머신 구성 섹션에서 TPU를 선택합니다.
시리즈 드롭다운 메뉴에서 다음 중 하나를 선택합니다.
- CT3: TPU v3, 단일 호스트 기기
- CT3P: TPU v3, 멀티 호스트 포드 슬라이스
- CT4P: TPU v4
- CT5LP: TPU v5e
- CT5P: TPU v5p
- CT6E: TPU Trillium(v6e)
머신 유형 드롭다운 메뉴에서 노드에 사용할 머신 이름을 선택합니다. TPU 버전 선택 표를 사용하여 멀티 호스트 TPU 슬라이스 노드 풀을 만드는 머신 유형 및 TPU 토폴로지를 정의하는 방법을 알아봅니다.
TPU 토폴로지 드롭다운 메뉴에서 TPU 슬라이스의 물리적 토폴로지를 선택합니다.
필요한 변경사항 대화상자에서 변경을 클릭합니다.
부팅 디스크 유형이 표준 영구 디스크 또는 SSD 영구 디스크인지 확인합니다.
선택적으로 노드 풀의 노드에 스팟 VM을 사용하려면 스팟 VM에서 노드 사용 설정 체크박스를 선택합니다.
만들기를 클릭합니다.
일정 예약으로 노드 풀을 만든 후에는 다른 TPU 노드 풀과 마찬가지로 워크로드를 배포할 수 있습니다. 캘린더 모드에서 미래용 예약을 사용하는 방식은 다른 유형의 예약과 동일합니다. 자세한 내용은 예약된 영역별 리소스 소비를 참고하세요.
다음 단계
예약한 TPU 리소스를 사용하는 생성형 AI 모델의 GKE 배포 예를 사용해 보세요.
GKE AI Labs에서 GKE를 활용하여 AI/ML 이니셔티브를 가속화하기 위한 실험용 샘플 살펴보기