TPU 구성

TPU v4 구성

TPU v4 Pod는 재구성이 가능한 고속 링크로 상호 연결된 4,096개의 칩으로 구성되어 있습니다. TPU v4의 유연한 네트워킹을 사용하면 다양한 방식으로 칩을 동일한 크기의 Podslice로 연결할 수 있습니다. TPU Podslice를 만들 때 TPU 버전과 필요한 TPU 리소스 수를 지정합니다. TPU v4 Podslice를 만들 때 다음 두 가지 방법 중 하나로 유형과 크기를 지정할 수 있습니다.

  1. AcceleratorType 사용

    이 방법은 토폴로지를 지정하지 않는 경우에 권장됩니다.

  2. AcceleratorConfig 사용

    물리적 토폴로지를 맞춤설정하려면 AcceleratorConfig를 사용하는 것이 좋습니다. 이는 일반적으로 Podslice가 칩 256개를 초과하는 성능 조정에 필요합니다.

AcceleratorType을 사용하여 v4 TPU를 구성하려면 TPU Podslice를 만들 때 --accelerator-type 플래그를 사용합니다. --accelerator-type을 TPU 버전과 사용하려는 TensorCore 수를 포함하는 문자열로 설정합니다. 예를 들어 TensorCore 32개가 있는 v4 Podslice를 만들려면 --accelerator-type=v4-32를 사용합니다.

AcceleratorConfig를 사용하여 v4 TPU를 구성하려면 --version--topology 플래그를 사용합니다. --version를 사용할 TPU 버전으로 설정하고 --topology를 Podslice에 있는 TPU 칩의 물리적 배열로 설정합니다. 예를 들어 칩이 16개 있는 v4 Podslice를 만들려면 --version=v4--topology=2x2x4를 사용합니다.

3튜플인 AxBxC를 사용하여 TPU 토폴로지를 지정합니다. 여기서 A<=B<=C이고 A, B, C는 모두 <=4이거나 4의 모든 정수 배수입니다. A, B, C 값은 3개 차원 각각의 칩 수입니다. 2A=B=C 또는 2A=2B=C인 토폴로지에는 전체 통신에 최적화된 토폴로지 변이(예: 4×4×8, 8×8×16, 12×12×24)도 있습니다. 이러한 토폴로지를 '왜곡 토러스'라고 합니다. 지원 가능한 모든 토폴로지에 대해 왜곡 토러스 구성을 지정할 수 있습니다. 지원되는 왜곡 토폴로지의 목록은 변이 구성을 참조하세요.

다음 명령어는 4x4x8 배열로 정렬된 128개의 TPU 칩이 포함된 v4 TPU Podslice를 만듭니다.

  $ gcloud compute tpus tpu-vm create tpu-name
    --zone=zone
    --type=v4
    --topology=4x4x8
    --version=tpu-vm-tf-2.13.0

--accelerator-type을 사용하여 칩 수와 TensorCore 수가 동일한 v4 TPU Podslice를 만들 수 있습니다.

  $ gcloud compute tpus tpu-vm create tpu-name
    --zone=zone
    --accelerator-type=v4-512
    --version=tpu-vm-tf-2.13.0

TPU 버전 다음의 번호(v4)는 TensorCore 수를 지정합니다. v4 TPU에는 2개의 TensorCore가 있으므로 TPU 칩 수는 512/2 = 256이 됩니다.

다음 이미지는 몇 가지 일반적인 TPU v4 토폴로지를 보여줍니다.

이미지

큰 Podslice는 하나 이상의 4x4x4 '큐브'의 칩에서 빌드할 수 있습니다.

토폴로지 변이

동일한 수의 칩을 포함하는 일부 토폴로지는 다양한 방식으로 정렬할 수 있습니다. 예를 들어 512개 칩이 포함된 TPU Podslice(TensorCore 1,024개)는 4x4x32, 4x8x16, 8x8x8 토폴로지를 사용하여 구성할 수 있습니다. 2,048개의 칩이 포함된 TPU Podslice(TensorCore 4,096개)는 4x4x128, 4x8x64, 4x16x32, 8x16x16 등 더 많은 토폴로지 옵션을 제공합니다. 2,048개의 칩이 포함된 TPU Podslice(TensorCore 4,096개)는 4x4x128, 4x8x64, 4x16x32, 8x16x16 등 더 많은 토폴로지 옵션을 제공합니다.

지정된 칩 수와 연결된 기본 토폴로지는 큐브와 가장 유사한 토폴로지입니다(토폴로지 형태 참조). 이 형태는 데이터 병렬 ML 학습에 가장 적합할 수 있습니다. 다른 토폴로지는 여러 종류의 동시 로드가 있는 워크로드(예: 모델 및 데이터 동시 로드 또는 시뮬레이션의 공간 분할)에 유용할 수 있습니다. 이러한 워크로드는 토폴로지가 사용된 동시 로드와 일치할 때 최고의 성능을 발휘합니다. 예를 들어 X 차원에 4방향 모델 동시 로드를 배치하고 Y 및 Z차원에 256방향 데이터 동시 로드를 배치하면 4x16x16 토폴로지와 일치합니다.

여러 차원의 동시 로드가 있는 모델은 TPU 토폴로지 차원에 매핑된 동시 로드 차원에서 가장 잘 작동합니다. 일반적으로 데이터+모델 병렬 대규모 언어 모델(LLM)이 여기에 해당합니다. 예를 들어 토폴로지 8x16x16이 있는 TPU v4 Podslice의 경우 토폴로지 차원은 8, 16, 16입니다. 8방향 또는 16방향 모델 동시 로드(물리적 토폴로지 차원 중 하나에 매핑)를 사용하면 성능이 더 개선됩니다. 4방향 모델 동시 로드는 TPU 토폴로지 차원에 맞게 정렬되지 않으므로 이 토폴로지의 차선입니다. 칩 수가 동일한 4x16x32 토폴로지를 사용하는 것이 최적의 방법입니다.

TPU v4 구성은 64개 칩보다 작은 토폴로지(소형 토폴로지)와 64개 칩보다 큰 토폴로지(대형 토폴로지)가 있는 그룹 두 개로 구성됩니다.

작은 v4 토폴로지

Cloud TPU는 64개 칩이 있는 4x4x4 큐브보다 작은 다음 TPU v4 Podslice를 지원합니다. 다음과 같은 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 Podslice는 64개의 칩 단위로 제공되며, 세 차원 모두에서 4의 배수인 형태를 띱니다. 차원도 오름차순이어야 합니다. 다음 표에 몇 가지 예시가 나와 있습니다. 이러한 토폴로지 중 일부는 --type--topology 플래그를 통해서만 만들 수 있는 '커스텀' 토폴로지입니다. 칩을 정렬하는 방법이 두 개 이상 있기 때문입니다.

다음 명령어는 8x8x8 배열로 정렬된 512개의 TPU 칩이 포함된 v4 TPU Podslice를 만듭니다.

  $ gcloud compute tpus tpu-vm create tpu-name
    --zone=zone
    --type=v4
    --topology=8x8x8
    --version=tpu-vm-tf-2.13.0

--accelerator-type을 사용하여 칩 수와 TensorCore 수가 동일한 v4 TPU Podslice를 만들 수 있습니다.

  $ gcloud compute tpus tpu-vm create tpu-name
    --zone=zone
    --accelerator-type=v4-1024
    --version=tpu-vm-tf-2.13.0
이름(TensorCore 수 기반) 칩 수 토폴로지
v4-128 64 4x4x4
v4-256 128 4x4x8
v4-512 256 4x8x8
해당 사항 없음 - --type--topology 플래그를 사용해야 함 256 4x4x16
v4-1024 512 8x8x8
v4-1536 768 8x8x12
v4-2048 1024 8x8x16
해당 사항 없음 - --type--topology 플래그를 사용해야 함 1024 4x16x16
v4-4096 2048 8x16x16

TPU v3 구성

TPU v3 Pod는 고속 링크로 상호 연결된 1,024개의 칩으로 구성되어 있습니다. TPU v3 기기 또는 Podslice를 만들려면 gcloud compute tpus tpu-vm 명령어에 --accelerator-type 플래그를 사용합니다. TPU 버전과 TPU 코어 수를 지정하여 가속기 유형을 지정합니다. 단일 v3 TPU의 경우 --accelerator-type=v3-8을 사용합니다. TensorCore 128개가 포함된 v3 Podslice의 경우 --accelerator-type=v3-128을 사용합니다.

다음 명령어는 TensorCore 128개가 포함된 v3 TPU Podslice를 만드는 방법을 보여줍니다.

  $ gcloud compute tpus tpu-vm create tpu-name
    --zone=zone
    --accelerator-type=v3-128
    --version=tpu-vm-tf-2.13.0

다음 표에는 지원되는 v3 TPU 유형이 나열되어 있습니다.

TPU 버전 지원 종료
v3-8 (종료일 미정)
v3-32 (종료일 미정)
v3-128 (종료일 미정)
v3-256 (종료일 미정)
v3-512 (종료일 미정)
v3-1024 (종료일 미정)
v3-2048 (종료일 미정)

TPU 관리에 대한 자세한 내용은 TPU 관리를 참조하세요. Cloud TPU의 다양한 버전에 대한 자세한 내용은 시스템 아키텍처를 참조하세요.

TPU v2 구성

TPU v2 Pod는 재구성이 가능한 고속 링크로 상호 연결된 512개의 칩으로 구성되어 있습니다. TPU v2 Podslice를 만들려면 gcloud compute tpus tpu-vm 명령어에 --accelerator-type 플래그를 사용합니다. TPU 버전과 TPU 코어 수를 지정하여 가속기 유형을 지정합니다. 단일 v2 TPU의 경우 --accelerator-type=v2-8을 사용합니다. TensorCore 128개가 포함된 v2 Podslice의 경우 --accelerator-type=v2-128을 사용합니다.

다음 명령어는 TensorCore 128개가 포함된 v2 TPU Podslice를 만드는 방법을 보여줍니다.

  $ gcloud compute tpus tpu-vm create tpu-name
    --zone=zone
    --accelerator-type=v2-128
    --version=tpu-vm-tf-2.13.0

TPU 관리에 대한 자세한 내용은 TPU 관리를 참조하세요. Cloud TPU의 다양한 버전에 대한 자세한 내용은 시스템 아키텍처를 참조하세요.

다음 표에는 지원되는 v2 TPU 유형이 나열되어 있습니다.

TPU 버전 지원 종료
v2-8 (종료일 미정)
v2-32 (종료일 미정)
v2-128 (종료일 미정)
v2-256 (종료일 미정)
v2-512 (종료일 미정)

TPU 유형 호환성

TPU 유형을 TensorCore 또는 칩 수가 동일한 다른 TPU 유형(예: v3-128v4-128)으로 변경하고 코드 변경 없이 학습 스크립트를 실행할 수 있습니다. 하지만 칩 또는 TensorCore 수가 더 많거나 적은 TPU 유형으로 변경하는 경우 상당한 조정과 최적화 수행이 필요합니다. 자세한 내용은 TPU Pod에서 학습을 참조하세요.

TPU 소프트웨어 버전

사용해야 하는 TPU 소프트웨어 버전은 TPU 아키텍처, TPU VM 또는 TPU 노드, 사용 중인 ML 프레임워크(TensorFlow, PyTorch, JAX)에 따라 달라집니다.

TPU VM

TPU 소프트웨어 버전은 TensorFlow, PyTorch, JAX 프레임워크에서 사용할 수 있습니다.

TensorFlow

모델이 작성된 TensorFlow 버전과 일치하는 TPU 소프트웨어 버전을 사용합니다. 예를 들어 TensorFlow 2.13.0을 사용하는 경우 tpu-vm-tf-2.13.0 TPU 소프트웨어 버전을 사용합니다. 현재 TPU에 지원되는 TensorFlow TPU VM 소프트웨어 버전은 다음과 같습니다.

  • tpu-vm-tf-2.13.0
  • tpu-vm-tf-2.12.1
  • tpu-vm-tf-2.12.0
  • tpu-vm-tf-2.11.1
  • tpu-vm-tf-2.11.0
  • tpu-vm-tf-2.10.1
  • tpu-vm-tf-2.10.0
  • tpu-vm-tf-2.9.3
  • tpu-vm-tf-2.9.1
  • tpu-vm-tf-2.8.4
  • tpu-vm-tf-2.8.3
  • tpu-vm-tf-2.8.0
  • tpu-vm-tf-2.7.4
  • tpu-vm-tf-2.7.3

Podslice를 사용하는 경우 사용하려는 TPU 소프트웨어 버전에 -pod를 추가합니다. 예를 들면 tpu-vm-tf-2.13.0-pod입니다.

TPU v4가 있는 TPU VM

TensorFlow를 사용하여 TPU v4에서 모델을 학습시키는 경우 다음 표에 나온 v4 버전 중 하나를 사용하세요.

TensorFlow 버전 TPU 소프트웨어 버전
2.13.0 tpu-vm-tf-2.13.0, tpu-vm-tf-2.13.0-pod
2.12.1 tpu-vm-tf-2.12.1, tpu-vm-tf-2.12.1-pod
2.12.0 tpu-vm-tf-2.12.0, tpu-vm-tf-2.12.0-pod
2.11.1 tpu-vm-tf-2.11.1, tpu-vm-tf-2.11.1-pod
2.11.0 tpu-vm-tf-2.11.0, tpu-vm-tf-2.11.0-pod
2.10.0 tpu-vm-tf-2.10.0-v4, tpu-vm-tf-2.10.0-pod-v4
2.10.1 tpu-vm-tf-2.10.1, tpu-vm-tf-2.10.1-pod
2.9.3 tpu-vm-tf-2.9.3-v4, tpu-vm-tf-2.9.3-pod-v4
2.9.2 tpu-vm-tf-2.9.2-v4, tpu-vm-tf-2.9.2-pod-v4
2.9.1 tpu-vm-tf-2.9.1-v4, tpu-vm-tf-2.9.1-pod-v4

TensorFlow 패치 버전에 대한 자세한 내용은 지원되는 TensorFlow 패치 버전을 참조하세요.

TPU VM은 TensorFlow 및 해당 Libtpu 라이브러리가 사전 설치되어 생성됩니다. 자체 VM 이미지를 만드는 경우 다음 TensorFlow TPU 소프트웨어 버전과 해당 Libtpu 버전을 지정합니다.

TensorFlow 버전 libtpu.so 버전
2.13.0 1.7.0
2.12.1 1.6.1
2.12.0 1.6.0
2.11.1 1.5.1
2.11.0 1.5.0
2.10.1 1.4.1
2.10.0 1.4.0
2.9.3 1.3.2
2.9.1 1.3.0
2.8.3 1.2.3
2.8.* 1.2.0
2.7.3 1.1.2

PyTorch

모델이 작성된 PyTorch 버전과 일치하는 TPU 소프트웨어 버전을 사용합니다. 예를 들어 PyTorch 1.13과 TPU v2 또는 v3을 사용하는 경우 tpu-vm-pt-1.13 TPU 소프트웨어 버전을 사용합니다. TPU v4를 사용하는 경우 tpu-vm-v4-pt-1.13 TPU 소프트웨어 버전을 사용합니다. TPU Pod에는 동일한 TPU 소프트웨어 버전이 사용됩니다(예: v2-32, v3-128, v4-32). 현재 지원되는 TPU 소프트웨어 버전은 다음과 같습니다.

TPU v2/v3:
  • tpu-vm-pt-2.0(pytorch-2.0)
  • tpu-vm-pt-1.13(pytorch-1.13)
  • tpu-vm-pt-1.12(pytorch-1.12)
  • tpu-vm-pt-1.11(pytorch-1.11)
  • tpu-vm-pt-1.10(pytorch-1.10)
  • v2-alpha(pytorch-1.8.1)
TPU v4:
  • tpu-vm-v4-pt-2.0(pytorch-2.0)
  • tpu-vm-v4-pt-1.13(pytorch-1.13)

TPU VM을 만들면 최신 버전의 PyTorch가 TPU VM에 사전 설치됩니다. PyTorch를 설치하면 올바른 버전의 libtpu.so가 자동으로 설치됩니다.

현재 PyTorch 소프트웨어 버전을 변경하려면 PyTorch 버전 변경을 참조하세요.

JAX

JAX 특정 TPU 소프트웨어 버전이 없으므로 TPU VM에 JAX를 수동으로 설치해야 합니다. 모든 TPU 버전에 tpu-ubuntu2204-base를 사용합니다. JAX를 설치하면 올바른 버전의 libtpu.so가 자동으로 설치됩니다.

TPU 노드

TensorFlow

모델이 작성된 TensorFlow 버전과 일치하는 TPU 소프트웨어 버전을 사용합니다. 예를 들어 TF 2.12.0을 사용하는 경우 2.12.0 TPU 소프트웨어 버전을 사용합니다. TensorFlow 특정 TPU 소프트웨어 버전은 다음과 같습니다.

  • 2.12.1
  • 2.12.0
  • 2.11.1
  • 2.11.0
  • 2.10.1
  • 2.10.0
  • 2.9.3
  • 2.9.1
  • 2.8.4
  • 2.8.2
  • 2.7.3

TensorFlow 패치 버전에 대한 자세한 내용은 지원되는 TensorFlow 패치 버전을 참조하세요.

TPU 노드를 만들면 최신 버전의 TensorFlow가 TPU 노드에 사전 설치됩니다.

PyTorch

모델이 작성된 PyTorch 버전과 일치하는 TPU 소프트웨어 버전을 사용합니다. 예를 들어 PyTorch 1.9를 사용하는 경우 pytorch-1.9 소프트웨어 버전을 사용합니다.

PyTorch 특정 TPU 소프트웨어 버전은 다음과 같습니다.

  • pytorch-2.0
  • pytorch-1.13
  • pytorch-1.12
  • pytorch-1.11
  • pytorch-1.10
  • pytorch-1.9
  • pytorch-1.8
  • pytorch-1.7
  • pytorch-1.6

  • pytorch-nightly

TPU 노드를 만들면 최신 버전의 PyTorch가 TPU 노드에 사전 설치됩니다.

JAX

TPU VM에 JAX를 수동으로 설치해야 하므로 JAX 특정 TPU 소프트웨어 버전이 사전에 설치되어 있지 않습니다. TensorFlow에 나열된 소프트웨어 버전을 사용할 수 있습니다.

다음 단계