Cloud TPU 소개

Tensor Processing Unit 또는 TPU는 Google에서 머신러닝 워크로드를 위해 설계한 하드웨어 가속기입니다. TPU 하드웨어에 대한 자세한 내용은 시스템 아키텍처를 참조하세요. Cloud TPU는 Google Cloud Platform에서 TPU를 확장 가능한 컴퓨팅 리소스로 제공하는 웹 서비스입니다.

TPU는 머신러닝 알고리즘에서 자주 쓰이는 대규모 행렬 연산을 수행하도록 설계된 하드웨어를 사용하여 모델을 보다 효율적으로 학습시킵니다. TPU는 더 큰 모델과 배치 크기를 사용할 수 있도록 온칩 고대역폭 메모리를 제공합니다. 여러 TPU를 포드라는 그룹으로 묶을 수 있으므로 코드를 거의 또는 전혀 변경하지 않고도 워크로드 수직 확장이 가능합니다.

머신러닝 프로젝트를 단일 TPU로 시작하고 프로덕션을 위해 TPU Pod로 확장하는 것이 좋습니다. 시작하려면 Google의 연구 및 엔지니어링 팀이 TPU에 사용하도록 최적화한 오픈소스 참조 모델 세트를 활용할 수 있습니다. 자세한 내용은 참조 모델을 참조하세요.

기본 원리

다른 가속기가 ML 모델 학습의 연산 문제를 어떻게 처리하는지를 알면 TPU의 작동 원리를 이해하는 데 도움이 됩니다.

CPU의 작동 원리

CPU는 폰 노이만 구조에 기반한 범용 프로세서입니다. 따라서 CPU는 다음과 같이 소프트웨어 및 메모리와 연동합니다.

CPU의 원리를 표현하는 그림

CPU의 최대 장점은 유연성입니다. 다양한 유형의 애플리케이션에 대해 CPU에서 모든 종류의 소프트웨어를 로드할 수 있습니다. 예를 들어 PC에서 워드 프로세싱, 로켓 엔진을 제어, 은행 거래 실행 또는 신경망으로 이미지 분류에 CPU를 사용할 수 있습니다.

CPU는 메모리에서 값을 로드하고, 값에 대한 계산을 수행하고, 모든 계산의 결과를 메모리에 다시 저장합니다. 메모리 액세스 속도는 계산 속도에 비해 느리므로 메모리 액세스 속도가 CPU의 총 처리량을 제한할 수 있습니다. 이를 폰 노이만 병목 현상이라고 합니다.

GPU의 작동 원리

처리량을 높이기 위해 GPU에는 단일 프로세서에 수천 개의 산술 논리 장치(ALU)가 포함되어 있습니다. 최신 GPU에는 일반적으로 2,500개~5,000개의 ALU가 포함됩니다. 따라서 수천 개의 곱셈과 덧셈을 동시에 실행할 수 있습니다.

GPU의 원리를 표현하는 그림

이 GPU 아키텍처는 신경망의 행렬 연산과 같은 대규모 병렬처리 애플리케이션에 적합합니다. 실제로 일반적인 딥 러닝 학습 워크로드에서 GPU는 CPU보다 훨씬 더 많은 처리량을 제공할 수 있습니다.

그러나 GPU도 수많은 애플리케이션과 소프트웨어를 지원해야 하는 범용 프로세서입니다. 따라서 GPU도 CPU와 동일한 문제를 겪습니다. 수천 개의 ALU에서 이루어지는 각각의 연산에서 GPU는 레지스터 또는 공유 메모리에 액세스하여 피연산자를 읽고 중간 계산 결과를 저장해야 합니다.

TPU의 작동 원리

Google이 설계한 Cloud TPU는 신경망 작업 부하에 특화된 행렬 프로세서입니다. TPU는 문서 작성, 로켓 엔진 제어, 은행 거래 처리에 사용할 수는 없지만 신경망에 사용되는 대규모 행렬 연산을 고속으로 처리할 수 있습니다.

TPU의 주 임무는 승산 누적 연산이 조합된 행렬 처리입니다. TPU에는 수천 개의 누산기가 포함되어 있어 서로 직접 연결되어 대규모 실제 행렬을 형성합니다. 이 방식을 시스톨릭 배열 아키텍처라고 합니다. Cloud TPU v3의 경우 단일 프로세서에 128 x 128 ALU로 이루어진 시스톨릭 배열 2개가 포함됩니다.

TPU 호스트가 데이터를 인피드 큐로 스트리밍합니다. TPU는 인피드 큐에서 데이터를 로드하고 HBM 메모리에 저장합니다. 계산이 완료되면 TPU가 결과를 아웃피드 큐에 로드합니다. 그런 다음 TPU 호스트는 아웃피드 큐에서 결과를 읽고 호스트 메모리에 저장합니다.

행렬 작업을 수행하기 위해 TPU는 매개변수를 HBM 메모리에서 MXU로 로드합니다.

TPU가 메모리에서 매개변수를 로드하는 방식을 표현하는 그림

그런 다음 TPU가 HBM 메모리에서 데이터를 로드합니다. 각 곱셈이 실행된 결과가 다음 누산기로 전달됩니다. 출력은 데이터와 매개변수 간의 모든 곱셈 결과의 합입니다. 행렬 곱셈 연산 중에는 메모리 액세스가 필요하지 않습니다.

TPU가 메모리에서 데이터를 로드하는 방식을 표현하는 그림

따라서 TPU는 신경망 연산 시 탁월한 연산 처리량을 달성할 수 있습니다.

TPU 사용 시기

Cloud TPU는 특정 워크로드에 최적화되어 있습니다. 상황에 따라 Compute Engine 인스턴스에서 GPU 또는 CPU를 사용하여 머신러닝 워크로드를 실행해야 할 수 있습니다. 일반적으로 다음 가이드라인을 기반으로 워크로드에 가장 적합한 하드웨어를 결정할 수 있습니다

CPU

  • 최대 유연성이 필요한 신속한 프로토타입 생성
  • 학습에 오랜 시간이 걸리지 않는 단순 모델
  • 유효 배치 크기가 작은 소형 모델
  • C++로 작성된 많은 커스텀 TensorFlow/PyTorch/JAX 작업을 포함하는 모델
  • 호스트 시스템의 사용 가능한 I/O 또는 네트워킹 대역폭으로 제한된 모델

GPU

  • 최소한 부분적으로라도 CPU에서 실행해야 하는 커스텀 TensorFlow/PyTorch/JAX 작업이 상당히 많은 모델
  • Cloud TPU에서 사용할 수 없는 TensorFlow/PyTorch 작업이 포함된 모델
  • 유효 배치 크기가 비교적 큰 중대형 모델

TPU

  • 행렬 연산이 주를 이루는 모델
  • 기본 학습 루프 내에 커스텀 TensorFlow/PyTorch/JAX 작업이 없는 모델
  • 몇 주 또는 몇 달간 학습시키는 모델
  • 유효 배치 크기가 큰 대형 모델

Cloud TPU는 다음 작업 부하에 적합하지 않습니다.

  • 분기 생성이 자주 필요하거나 요소별 대수가 많은 선형 대수 프로그램
  • 희소 방식으로 메모리에 액세스하는 워크로드
  • 고정밀 연산이 필요한 워크로드
  • 기본 학습 루프에 커스텀 작업이 포함된 신경망 워크로드

VPC 서비스 제어 통합

Cloud TPU VPC 서비스 제어를 사용하면 Cloud TPU 리소스 주위에 보안 경계를 정의하고 경계를 넘는 데이터 이동을 제어할 수 있습니다. VPC 서비스 제어에 대한 자세한 내용은 VPC 서비스 제어 개요를 참조하세요. Cloud TPU를 VPC 서비스 제어와 함께 사용할 때의 제한사항을 알아보려면 지원되는 제품 및 제한사항을 참조하세요.

Cloud TPU 시작하기

Google Cloud 계정을 설정합니다. Cloud TPU 리소스를 사용하려면 먼저 Google Cloud 계정과 프로젝트를 만들어야 합니다.
Cloud TPU API 활성화 모델을 학습시키려면 Compute Engine 및 Cloud TPU API를 활성화해야 합니다.
Cloud Storage 버킷에 대한 Cloud TPU 액세스 권한 부여 Cloud TPU를 사용하려면 데이터 세트를 저장할 Cloud Storage 버킷에 액세스해야 합니다.
모델 학습시키기 우선 Cloud TPU 빠른 시작 또는 단일 프로세서에 중 하나를 읽어보세요.
모델 분석 모델 학습 중에 텐서보드 또는 기타 도구를 사용하여 모델을 시각화하고 학습률, 손실, 정확성 등의 주요 측정항목을 추적합니다.

다음 단계

Cloud TPU에 대해 더 알고 싶으신가요? 다음 리소스를 참고하시기 바랍니다.

Compute Engine을 사용한 빠른 시작 빠른 시작 중 하나를 통해 Cloud TPU로 모델을 학습시켜 보세요.
TPU Colabs 무료 Colab를 사용하여 Cloud TPU를 실험해 봅니다.
Cloud TPU 가이드 참조 ML 모델을 사용하여 Cloud TPU를 테스트해 봅니다.
Cloud TPU 시스템 아키텍처 TPU에 대해 더 자세히 알아봅니다.
가격 책정 Cloud TPU가 머신러닝 작업 부하를 얼마나 비용 효율적으로 처리할 수 있는지 확인해 봅니다.
영업팀에 문의 구체적인 구현이나 애플리케이션에 대해 논의하고 싶으신가요? Cloud TPU 영업 담당자에게 문의하세요.