TPU 유형 및 토폴로지
개요
TPU 구성을 만들 때는 TPU 유형과 크기 또는 TPU 유형과 토폴로지(논리적 칩 배열)를 지정해야 합니다.
gcloud create
작업에서 이를 수행하는 두 가지 방법이 있습니다.
- 요청하는 유형(v2, v3 또는 v4)과 TensorCore 수를 지정하는 단일
accelerator-type
문자열을 만듭니다. topology
플래그와 함께 TPUtype
매개변수를 지정합니다.
이러한 accelerator-type
문자열 또는 type
및 topology
플래그를 사용하여 TPU를 만드는 예시는 TPU 유형을 참조하세요.
다양한 Cloud TPU 버전 및 토폴로지에 대한 자세한 내용은 시스템 아키텍처 문서를 참조하세요.
TPU 유형
TPU 구성을 지정하려면 gcloud
명령어의 'accelerator-type' 플래그를 사용합니다. TPU 구성은 TPU 버전과 TensorCore 수로 구성됩니다. 예를 들어 다음 gcloud
명령어는 TensorCore 128개가 있는 v3
TPU를 만듭니다.
$ gcloud compute tpus tpu-vm create tpu-name
--zone=zone
--accelerator-type=v3-128
--version=tpu-vm-tf-2.11.0
TPU 구성을 TPU 칩 수와 논리적 배열(토폴로지)로 지정할 수도 있습니다. 자세한 내용은 칩 기반 TPU 구성을 참조하세요.
TensorCore 기반 TPU 구성
모든 TPU 유형은 버전 다음에 TensorCore 수(예: 8, 32, 128)가 뒤따릅니다.
예를 들어 --accelerator-type=v2-8
는 TensorCore 8개가 있는 v2
TPU를 지정하고 v3-1024
는 TensorCore 1024개가 있는 v3
TPU(v3
포드의 슬라이스)를 지정합니다.
칩 토폴로지 기반 TPU 구성
v4 구성은 TPU 버전 및 토폴로지로 지정됩니다. 토폴로지는 칩이 배열되는 방식을 설명하는 3튜플로 지정됩니다. 예를 들어 32-TensorCore 구성은 칩에서 2x2x4로 표현될 수 있습니다(각각 2개의 TensorCore가 있는 16개의 칩). 3튜플은 TPU 버전이 필요한 구성이 아닌 토폴로지만 지정합니다.
v4 토폴로지의 표현은 AxBxC이며, 여기서 A<=B<=C이고 A, B, C는 모두 <=4이거나 4의 모든 정수 배수입니다. A, B, C 값은 세 차원의 칩 수입니다. 2A=B=C 또는 2A=2B=C인 토폴로지에는 전체 통신에 최적화된 변이(예: 4×4×8, 8×8×16, 12×12×24)도 있습니다.
v4 토폴로지에 대한 자세한 내용은 TPU v4 구성을 참조하세요.
칩 토폴로지 기반 토폴로지(v4) 만들기
v4에서는 TensorCore가 아닌 기기가 표시되며 칩당 기기 1개입니다. 칩 토폴로지 기반 토폴로지를 지정하기 위해 v4에 3차원 토폴로지 형식(예: 4x4x4)과 gcloud
TPU 만들기 작업의 --topology
플래그를 도입했습니다. 토폴로지 변이 아래에 표시된 표에 지원되는 다른 칩 토폴로지 기반 토폴로지의 예시가 포함되어 있습니다.
gcloud
만들기 작업에 type
및 topology
플래그를 사용하여 v4 유형 및 토폴로지를 지정할 수 있습니다. 예를 들어 다음 gcloud
명령어는 4x4x4 큐브 토폴로지에 64개의 칩이 있는 v4
TPU를 만듭니다.
$ gcloud alpha compute tpus tpu-vm create tpu-name
--zone=zone
--type=v4
--topology=4x4x4
--version=tpu-vm-tf-2.11.0
--type
에 지원되는 값은 v4
입니다.
토폴로지 변이
지정된 TensorCore 또는 칩 수와 관련된 표준 토폴로지는 큐브와 가장 유사한 토폴로지입니다(토폴로지 형태 참조). 이 형태가 데이터 병렬 ML 학습에 가장 적합할 가능성이 높습니다. 다른 토폴로지는 여러 종류의 동시 로드가 있는 워크로드(예: 모델 및 데이터 동시 로드 또는 시뮬레이션의 공간 분할)에 유용할 수 있습니다. 이러한 워크로드는 슬라이스 형태가 사용된 동시 로드와 일치할 때 최고의 성능을 발휘합니다. 예를 들어 X축에 4방향 모델 동시 로드를 배치하고 Y 및 Z차원에 256방향 데이터 동시 로드를 배치하면 4x16x16 토폴로지와 일치합니다.
동시 로드의 차원이 여러 개인 모델은 토러스 차원에 매핑된 동시 로드 차원에서 가장 잘 작동합니다. 일반적으로 데이터+모델 병렬 대규모 언어 모델(LLM)이 여기에 해당합니다. 예를 들어 토폴로지 8x16x16이 있는 TPU v4 포드 슬라이스의 경우 토러스 차원은 8, 16, 16입니다. 8방향 또는 16방향 모델 동시 로드(물리적 토러스 차원 중 하나에 매핑)를 사용하면 성능이 더 개선됩니다. 4방향 모델 동시 로드는 토러스 차원에 맞게 정렬되지 않으므로 이 토폴로지의 차선입니다. 칩 수가 동일한 4x16x32 토폴로지를 사용하는 것이 최적의 방법입니다.
작은 v4 토폴로지
Cloud TPU는 64개 칩이 있는 4x4x4 큐브보다 작은 다음 TPU v4 슬라이스를 지원합니다. 다음과 같은 TensorCore 기반 이름(예: v4-32) 또는 토폴로지(예: 2x2x4)를 사용하여 이러한 작은 v4 토폴로지를 만들 수 있습니다.
이름(TensorCore 수 기반) | 칩 수 | 토폴로지 |
v4-8 | 4 | 2x2x1 |
v4-16 | 8 | 2x2x2 |
v4-32 | 16 | 2x2x4 |
v4-64 | 32 | 2x4x4 |
큰 v4 토폴로지
TPU v4 슬라이스는 64개의 칩 단위로 제공되며, 세 차원 모두에서 4의 배수인 형태를 띱니다. 차원도 오름차순이어야 합니다. 다음 표에 몇 가지 예시가 나와 있습니다. 이러한 토폴로지 중 일부는 토폴로지 API를 통해서만 실행할 수 있는 '커스텀' 토폴로지입니다. 일반적으로 사용되는 토폴로지와 칩 수가 동일하기 때문입니다.
이름(TensorCore 수 기반) | 칩 수 | 토폴로지 |
v4-128 | 64 | 4x4x4 |
v4-256 | 128 | 4x4x8 |
v4-512 | 256 | 4x8x8 |
토폴로지 API 보기 | 256 | 4x4x16 |
v4-1024 | 512 | 8x8x8 |
v4-1536 | 768 | 8x8x12 |
v4-2048 | 1024 | 8x8x16 |
토폴로지 API 보기 | 1024 | 4x16x16 |
v4-4096 | 2048 | 8x16x16 |
… | … | … |
토폴로지 API
커스텀 토폴로지로 Cloud TPU Pod 슬라이스를 만들려면 다음과 같이 gcloud
TPU API를 사용하면 됩니다.
$ gcloud alpha compute tpus tpu-vm create tpu-name \
--zone=us-central2-b \
--subnetwork=tpusubnet \
--type=v4 \
--topology=4x4x16 \
--version=runtime-version
토폴로지 형태
다음 이미지는 가능한 3가지 토폴로지 형태와 관련 topology
플래그 설정을 보여줍니다.
TPU 유형 호환성
TPU 유형을 TensorCore 또는 칩 수가 동일한 다른 TPU 유형(예: v3-128
및 v4-128
)으로 변경하고 코드 변경 없이 학습 스크립트를 실행할 수 있습니다.
하지만 칩 또는 TensorCore 수가 더 많거나 적은 TPU 유형으로 변경하는 경우 상당한 조정과 최적화 수행이 필요합니다.
자세한 내용은 TPU Pod에서 학습을 참조하세요.