이 페이지에서는 Google Kubernetes Engine(GKE)에서 Tensor Processing Unit(TPU)의 사용량을 계획하여 TPU 구성 오류, 사용 불가 오류 또는 할당량 부족으로 인한 중단의 위험을 줄이는 방법을 설명합니다.
GKE에서 TPU를 사용하기 전에 GKE의 TPU 정의 및 용어를 숙지해야 합니다.
TPU 구성 계획
GKE 클러스터에서 TPU를 사용하려면 구성을 계획해야 합니다. 다음 단계를 따르는 것이 좋습니다.
- GKE 작업 모드 선택: GKE Autopilot 또는 Standard 클러스터의 TPU에서 워크로드를 실행합니다. 완전 관리형 Kubernetes 환경을 위해서는 Autopilot을 사용하는 것이 좋습니다.
- TPU 버전 선택: TPU 유형마다 가격 대비 성능, 학습 처리량, 서빙 지연 시간과 같은 기능이 다릅니다. TPU 유형은 사용 가능한 CPU 및 메모리 용량에 영향을 미칩니다.
- TPU 가용성 확인: TPU는 특정 Google Cloud 리전에서 사용할 수 있습니다. GKE 워크로드에서 TPU 유형을 사용하려면 클러스터에서 해당 유형에 지원되는 리전에 있어야 합니다.
- TPU 토폴로지 선택: TPU 슬라이스 내에서 TPU의 물리적 배열입니다. 모델의 동시 로드 요구사항과 일치하는 토폴로지를 선택합니다.
이 페이지의 참조 표를 사용하여 노드 풀이 단일 호스트 TPU 슬라이스 노드인지 멀티 호스트 TPU 슬라이스 노드인지 확인하는 것이 좋습니다.
GKE 작업 모드 선택
클러스터에 사용할 수 있는 GKE 작업 모드에서 TPU를 사용할 수 있습니다.
- Autopilot 모드(권장): GKE는 노드 구성, 자동 확장, 자동 업그레이드, 기준 보안 구성, 기준 네트워킹 구성과 같은 기본 인프라를 관리합니다. Autopilot에서 TPU 유형과 토폴로지를 선택한 후 Kubernetes 매니페스트에 지정합니다. GKE는 TPU를 사용한 노드 프로비저닝과 워크로드 예약을 관리합니다.
- Standard 모드: 개별 노드 구성을 포함하여 기본 인프라를 관리합니다.
워크로드에 가장 적합한 GKE 작업 모드를 선택하려면 GKE 작업 모드 선택을 참조하세요.
TPU 버전 선택
TPU 슬라이스의 VM은 다음과 같은 기술적 특성을 갖습니다.
Autopilot
TPU 버전 | 머신 유형 | vCPU 수 | 메모리(GiB) | NUMA 노드 수 | TPU 슬라이스 노드의 최대 TPU 칩 수 |
---|---|---|---|---|---|
TPU v5p |
tpu-v5p-slice |
208 | 448 | 2 | 6,144 |
TPU v5e |
tpu-v5-lite-podslice |
24~224 | 48~384 | 1 | 256 |
TPU v5e(단일 호스트 전용) |
tpu-v5-lite-device |
24~224 | 48~384 | 1~2 | 8 |
TPU v4 |
tpu-v4-podslice |
240 | 407 | 2 | 4,096 |
Standard
TPU 버전 | 머신 유형 | vCPU 수 | 메모리(GiB) | NUMA 노드 수 | 선점될 가능성 |
---|---|---|---|---|---|
TPU v5p |
ct5p-hightpu-4t |
208 | 448 | 2 | |
TPU v5e |
ct5l-hightpu-1t |
24 | 48 | 1 | 높음 |
TPU v5e |
ct5l-hightpu-4t |
112 | 192 | 1 | 보통 |
TPU v5e |
ct5l-hightpu-8t |
224 | 384 | 2 | 낮음 |
TPU v5e |
ct5lp-hightpu-1t |
24 | 48 | 1 | 높음 |
TPU v5e |
ct5lp-hightpu-4t |
112 | 192 | 1 | 보통 |
TPU v5e |
ct5lp-hightpu-8t |
224 | 384 | 1 | 낮음 |
TPU v4 |
ct4p-hightpu-4t |
240 | 407 | 2 |
사용할 TPU 구성을 결정하려면 Cloud TPU 가격 책정 문서에서 TPU 사양과 가격 책정을 검토하세요.
제한사항
사용할 TPU를 선택할 때는 다음 제한사항을 고려하세요.
- GKE 비용 할당 및 사용량 측정에는 예약된 TPU v4의 사용량이나 비용에 대한 데이터가 포함되지 않습니다.
- TPU v5p 및 v5e는 us-east5에서 ribtide/image 스트리밍을 지원하지 않습니다.
- TPU v5p 자동 확장은 최소 버전 1.29.2-gke.1035000 또는 1.28.7-gke.1020000을 실행하는 컨트롤 플레인이 있는 GKE 클러스터에서 지원됩니다.
- 용량 예약의 경우 특정 예약을 사용합니다.
GKE에서 TPU 가용성 확인
TPU는 특정 Google Cloud 리전에서 사용 가능합니다. GKE 클러스터에서 TPU 유형을 사용하려면 클러스터에서 해당 유형에 지원되는 리전에 있어야 합니다.
Autopilot
Cloud TPU 문서의 TPU 리전 및 영역을 참조하세요.
Standard
다음 표에는 각 TPU 버전 및 머신 유형의 TPU 가용성이 나와 있습니다.
TPU 버전 | 머신 유형이 다음으로 시작함 | 최소 GKE 버전 | 가용성 | 영역 |
---|---|---|---|---|
TPU v5e | ct5l- |
1.27.2-gke.2100 | 정식 버전 | europe-west4-b |
us-central1-a |
||||
TPU v5e | ct5lp- |
1.27.2-gke.2100 | 정식 버전 | europe-west4-a 1 |
us-central1-a 1 |
||||
us-east1-c |
||||
us-east5-b 1 |
||||
us-west1-c |
||||
us-west4-a |
||||
us-west4-b 1 |
||||
TPU v5p | ct5p- |
1.28.3-gke.1024000 | 정식 버전 | us-east1-d |
us-east5-a |
||||
us-east5-c |
||||
TPU v4 | ct4p- |
1.26.1-gke.1500 | 정식 버전 | us-central2-b |
-
특정 영역(
europe-west4-a
,us-east5-b
,us-west4-b
)에서ct5lp-
로 시작하지만ct5l-
로 시작하지 않는 머신 유형으로 단일 호스트 TPU v5e 노드 풀을 만들 수 있습니다. 이러한 영역에서는2x4
이상 토폴로지로ct5lp-hightpu-4t
를 사용할 수 있습니다.us-west4
리전에 단일 호스트 TPU v5e를 만들려면us-west4-a
영역을 선택하고ct5lp-hightpu-1t
와 같이ct5lp-
로 시작하는 머신 유형을 사용합니다. 위 표에 나열된 다른 리전에서 단일 호스트 TPU v5e를 만들려면ct5l-
로 시작하는 머신 유형(예:ct5l-hightpu-1t
,ct5l-hightpu-4t
,ct5l-hightpu-8t
)을 사용하세요.ct5l-
로 시작하는 머신 유형에는ct5lp-
로 시작하는 머신 유형과 다른 할당량이 필요합니다. ↩
토폴로지 선택
TPU 버전을 결정한 후 해당 TPU 유형에서 지원되는 토폴로지를 선택합니다. TPU 유형에 따라 토폴로지는 2차원이거나 3차원입니다. 모델의 동시 로드 요구사항은 토폴로지를 결정하는 데 도움이 됩니다. 토폴로지의 각 크기의 곱을 계산하여 슬라이스의 TPU 칩 수를 식별할 수 있습니다. 예를 들면 다음과 같습니다.
2x2x2
는 8칩 멀티 호스트 TPU v4 슬라이스입니다.2x2
는 4칩 단일 호스트 TPU v5e 슬라이스입니다.
특정 토폴로지에서 단일 호스트 및 멀티 호스트 TPU 슬라이스 노드를 모두 지원하는 경우 워크로드에서 요청하는 TPU 칩 수에 따라 호스트 유형이 결정됩니다.
예를 들어 TPU v5e(tpu-v5-lite-podslice
)는 2x4
토폴로지를 단일 및 멀티 호스트 모두로 지원합니다. 선택하는 옵션에 따라 다음이 적용됩니다.
- 워크로드에서 칩 4개를 요청하면 TPU 칩 4개가 있는 멀티 호스트 노드를 가져옵니다.
- 워크로드에서 칩 8개를 요청하면 TPU 칩 8개가 있는 단일 호스트 노드를 가져옵니다.
다음 표를 사용하여 사용 사례에 맞는 TPU 머신 유형과 토폴로지를 선택하세요.
- 소규모 모델 학습 또는 추론의 경우 단일 호스트 TPU 슬라이스 노드 풀과 함께 TPU v4 또는 TPU v5e를 사용합니다.
대규모 모델 학습 또는 추론의 경우 멀티 호스트 TPU 슬라이스 노드 풀과 함께 TPU v4 또는 TPU v5e를 사용합니다.
Autopilot
TPU 버전 | 머신 유형 | 토폴로지 | 슬라이스의 TPU 칩 수 | 노드 수 | 노드 풀 유형 |
---|---|---|---|---|---|
TPU v5p | tpu-v5p-slice |
2x2x1 | 4 | 1 | 단일 호스트 |
2x2x2 | 8 | 2 | 멀티 호스트 | ||
2x2x4 | 16 | 4 | 멀티 호스트 | ||
2x4x4 | 32 | 8 | 멀티 호스트 | ||
4x4x4 | 64 | 16 | 멀티 호스트 | ||
{A}x{B}x{C} | A*B*C | (A*B*C/4)1 | 멀티 호스트 | ||
TPU v5e | tpu-v5-lite-podslice 2 |
1x1 | 1 | 1 | 단일 호스트 |
2x2 | 4 | 1 | |||
2x4 | 8 | 1 | |||
2x4 | 2 | 1 | 멀티 호스트 | ||
4x4 | 16 | 4 | |||
4x8 | 32 | 8 | |||
8x8 | 64 | 16 | |||
8x16 | 128 | 32 | |||
16x16 | 256 | 64 | |||
TPU v5e(단일 호스트 전용) | tpu-v5-lite-device |
1x1 | 1 | 1 | 단일 호스트 |
2x2 | 4 | 1 | |||
2x4 | 8 | 1 | |||
TPU v4 | tpu-v4-podslice 2 |
2x2x1 | 4 | 1 | 단일 호스트 |
2x2x2 | 8 | 2 | 멀티 호스트 | ||
2x2x4 | 16 | 4 | 멀티 호스트 | ||
2x4x4 | 32 | 8 | 멀티 호스트 | ||
4x4x4 | 64 | 16 | 멀티 호스트 | ||
{A}x{B}x{C} | A*B*C | (A*B*C/4)1 | 멀티 호스트 |
-
토폴로지 곱을 4로 나눈 값으로 계산됩니다. ↩
칩 64개를 초과하는 커스텀 토폴로지가 지원됩니다. 다음 조건이 적용됩니다.
- 칩이 64개를 초과하는 경우
{A}
,{B}
,{C}
는 4의 배수여야 합니다. - 가장 큰 토폴로지는
16x16x24
입니다. - 값은
8x12x16
과 같이{A}
≤{B}
≤{C}
여야 합니다.
- 칩이 64개를 초과하는 경우
-
커스텀 토폴로지는 지원되지 않습니다.
TPU 유형과 토폴로지를 선택한 후에는 워크로드 매니페스트에 이들을 지정합니다. 자세한 내용은 GKE Autopilot에서 TPU 워크로드 배포를 참조하세요.
Standard
TPU 버전 | 머신 유형 | 토폴로지 | TPU 칩 수 | VM 수 | 노드 풀 유형 |
---|---|---|---|---|---|
TPU v5p | ct5p-hightpu-4t |
2x2x1 | 4 | 1 | 단일 호스트 |
2x2x2 | 8 | 2 | 멀티 호스트 | ||
2x2x4 | 16 | 4 | 멀티 호스트 | ||
2x4x4 | 32 | 8 | 멀티 호스트 | ||
{A}x{B}x{C} | A*B*C | (A*B*C/4)1 | 멀티 호스트 | ||
TPU v5e | ct5l-hightpu-1t |
1x1 | 1 | 1 | 단일 호스트 |
ct5l-hightpu-4t |
2x2 | 4 | 1 | 단일 호스트 | |
ct5l-hightpu-8t |
2x4 | 8 | 1 | 단일 호스트 | |
ct5lp-hightpu-1t |
1x1 | 1 | 1 | 단일 호스트 | |
ct5lp-hightpu-4t |
2x2 | 4 | 1 | 단일 호스트 | |
ct5lp-hightpu-8t |
2x4 | 8 | 1 | 단일 호스트 | |
ct5lp-hightpu-4t |
2x4 | 8 | 2 | 멀티 호스트 | |
4x4 | 16 | 4 | 멀티 호스트 | ||
4x8 | 32 | 8 | 멀티 호스트 | ||
8x8 | 64 | 16 | 멀티 호스트 | ||
8x16 | 128 | 32 | 멀티 호스트 | ||
16x16 | 256 | 64 | 멀티 호스트 | ||
TPU v4 | ct4p-hightpu-4t |
2x2x1 | 4 | 1 | 단일 호스트 |
2x2x2 | 8 | 2 | 멀티 호스트 | ||
2x2x4 | 16 | 4 | 멀티 호스트 | ||
2x4x4 | 32 | 8 | 멀티 호스트 | ||
{A}x{B}x{C} | A*B*C | (A*B*C/4)1 | 멀티 호스트 |
-
토폴로지 곱을 4로 나눈 값으로 계산됩니다. ↩
고급 구성
다음 섹션에서는 고급 TPU 구성의 예약 권장사항을 설명합니다.
TPU 예약
약정을 구매하면 TPU 예약을 사용할 수 있습니다. GKE에서 모든 TPU 예약을 사용할 수 있습니다.
TPU 슬라이스 노드 풀을 만들 때 --reservation
및 --reservation-affinity=specific
플래그를 사용하여 예약된 TPU 인스턴스를 사용합니다.
GKE에서 TPU 자동 확장
GKE는 Tensor Processing Unit(TPU)을 지원하여 머신러닝 워크로드를 가속화합니다. 단일 호스트 TPU 슬라이스 노드 풀과 멀티 호스트 TPU 슬라이스 노드 풀 모두 자동 확장 및 자동 프로비저닝을 지원합니다.
GKE 클러스터에서 --enable-autoprovisioning
플래그를 사용하면 GKE는 대기 중인 워크로드의 요구사항을 충족하는 TPU 버전 및 토폴로지를 사용하여 단일 호스트 또는 멀티 호스트 TPU 슬라이스 노드 풀을 만들거나 삭제합니다.
--enable-autoscaling
을 사용하는 경우 GKE는 다음과 같이 해당 유형을 기준으로 노드 풀을 확장합니다.
단일 호스트 TPU 슬라이스 노드 풀: GKE는 기존 노드 풀에서 TPU 노드를 추가하거나 삭제합니다. 노드 풀은 0부터 --max-nodes 및 --total-max-nodes 플래그에 따라 결정되는 노드 풀의 최대 크기 사이의 TPU 노드 수를 포함할 수 있습니다. 노드 풀이 확장되면 노드 풀에서 모든 TPU 노드의 머신 유형 및 토폴로지는 동일합니다. 단일 호스트 TPU 슬라이스 노드 풀을 만드는 방법에 대한 자세한 내용은 노드 풀 만들기를 참조하세요.
멀티 호스트 TPU 슬라이스 노드 풀: GKE는 노드 풀을 0부터 TPU 토폴로지를 충족하는 데 필요한 노드 수로 원자적으로 수직 확장합니다. 예를 들어, 머신 유형이
ct5lp-hightpu-4t
이고 토폴로지가16x16
인 TPU 노드 풀의 경우, 노드 풀에는 64개의 노드가 포함됩니다. GKE 자동 확장 처리는 이 노드 풀에 노드가 정확히 0개 또는 64개 있도록 합니다. 축소하면 GKE는 예약된 모든 포드를 제거하고 전체 노드 풀을 0으로 드레이닝합니다. 멀티 호스트 TPU 슬라이스 노드 풀을 만드는 방법에 대한 자세한 내용은 노드 풀 만들기를 참조하세요.
Standard 클러스터의 CPU
GKE는 각 TPU 슬라이스를 자체 노드에 배치하므로 이 섹션은 Autopilot 클러스터에 적용되지 않습니다. 자세한 내용은 Autopilot 모드에서 TPU가 작동하는 방식을 참조하세요.
Standard 클러스터의 경우 다음과 같은 예약 권장사항을 고려하세요.
TPU 슬라이스 노드의 VM에서 TPU가 아닌 워크로드를 예약하려면 GKE 포드가 google.com/tpu
taint를 허용할 수 있는지 확인합니다. 워크로드를 특정 노드에 배포하려면 노드 선택기를 사용하세요.
Kubernetes 리소스 관리 및 우선순위는 TPU의 VM을 다른 VM 유형과 동일하게 취급합니다. TPU가 필요한 포드에 동일한 노드의 다른 포드보다 예약 우선순위를 적용하려면 해당 TPU 슬라이스에 대한 최대 CPU 또는 메모리를 요청합니다. 우선순위가 낮은 TPU 슬라이스는 다음을 실행해야 합니다.
- 노드에 TPU 워크로드에 할당 가능한 리소스를 충분히 확보할 수 있도록 CPU 및 메모리 요청을 낮게 설정합니다. 자세한 내용은 Kubernetes에서 리소스 요청 및 한도를 적용하는 방법을 참조하세요.
- 포드에서 사용되지 않은 모든 주기를 사용하도록 버스트할 수 있도록 CPU 한도(무제한)를 설정합니다.
- 노드 압력이 사라질 위험 없이 포드가 올바르게 작동할 수 있도록 적절한 메모리 한도를 설정합니다.
Kubernetes 포드가 CPU와 메모리를 요청하지 않으면(TPU를 요청하더라도) Kubernetes에서 이를 최선의 포드로 간주하며 CPU와 메모리가 필요하다고 보장할 수 없습니다. CPU 및 메모리를 명시적으로 요청하는 포드만 그러한 보장이 있습니다. 특정 Kubernetes 예약의 경우 명시적 CPU 및 메모리 요청으로 포드 요구사항을 구성합니다. 자세한 내용은 포드 및 컨테이너에 대한 리소스 관리를 참조하세요.
권장사항에 관한 자세한 내용은 Kubernetes 권장사항: 리소스 요청 및 한도를 참조하세요.
워크로드 중단 감소
TPU를 사용하여 머신러닝 모델을 학습하는 중에 워크로드가 중단되면 마지막 체크포인트 이후 수행된 모든 작업이 손실됩니다. 워크로드가 중단될 가능성을 줄이려면 다음 단계를 따르세요.
- 다른 모든 작업보다 이 작업의 우선순위를 높게 설정합니다. 리소스가 부족하면 GKE 스케줄러는 우선순위가 낮은 작업을 선점하여 우선순위가 더 높은 작업을 예약합니다. 이렇게 하면 우선순위가 더 높은 워크로드에서 필요한 모든 리소스(클러스터에서 사용 가능한 총 리소스까지)를 수신할 수 있습니다. 자세한 내용은 포드 우선순위 및 선점을 참조하세요.
- 유지보수 제외 구성: 유지보수 제외는 자동 유지보수가 금지되는 반복되지 않는 기간입니다. 자세한 내용은 유지보수 제외를 참조하세요.
- Autopilot에서 연장된 실행 시간 포드 사용: GKE에서 축소 또는 노드 업그레이드를 위해 포드를 종료하기 전의 유예 기간(최대 7일) 동안 연장된 실행 시간 포드를 사용합니다.
노드 유지보수로 인한 중단 처리
TPU를 호스팅하는 GKE 노드는 유지보수 이벤트 또는 기타 중단으로 인해 노드가 종료될 수 있습니다. 버전 1.29.1-gke.1425000 이상을 실행하는 컨트롤 플레인이 있는 GKE 클러스터에서 워크로드가 단계적으로 종료되도록 GKE를 구성하여 워크로드에 대한 중단을 줄일 수 있습니다.
AI/ML 워크로드를 실행하는 GKE 노드에서 발생할 수 있는 서비스 중단 이벤트를 이해, 구성, 모니터링하려면 GPU 및 TPU의 GKE 노드 서비스 중단 관리를 참조하세요.
TPU 사용률 극대화
TPU에 대한 투자를 극대화하려면 작업 우선순위 조합을 예약하고 이를 큐에 추가하여 TPU가 작동하는 시간을 극대화합니다. 작업 수준 예약 및 선점을 수행하려면 작업을 큐로 조정하는 Kubernetes의 부가기능을 사용해야 합니다. 이 사용 사례에는 Kueue를 사용하는 것이 좋습니다.
다음 단계
- GKE에 TPU 워크로드 배포에 따라 GKE로 Cloud TPU 설정하기
- Cloud TPU를 사용한 머신러닝 작업 시의 권장사항 알아보기
- GKE를 사용한 Cloud TPU에서 대규모 머신러닝 빌드
- TPU에서 KubeRay로 대규모 언어 모델 제공