Cloud 텐서 처리 장치(TPU)

TPU(텐서 처리 장치)는 Google에서 맞춤 개발한 ASIC(Application-Specific Integrated Circuits)로서 머신러닝 작업 부하를 빠르게 처리하는 데 사용됩니다. TPU는 Google이 머신러닝 분야에서 쌓은 심화된 경험과 경쟁력을 바탕으로 설계되었습니다.

Cloud TPU를 사용하면 TensorFlow를 통해 Google의 TPU 가속기 하드웨어에서 머신러닝 워크로드를 실행할 수 있습니다. Cloud TPU는 연구원, 개발자, 기업이 CPU, GPU, TPU를 사용할 수 있는 텐서플로우 컴퓨팅 클러스터를 빌드할 때 최대의 성능과 유연성을 발휘하도록 설계되었습니다. 고급 Tensorflow API 덕분에 Cloud TPU 하드웨어에서 모델을 쉽게 실행할 수 있습니다.

TPU의 이점

Cloud TPU 리소스는 머신러닝 애플리케이션에서 주로 사용되는 선형대수 연산 성능을 가속화합니다. TPU를 사용하면 복잡한 대형 신경망 모델을 학습시킬 때 정확성 달성 시간을 최소화할 수 있습니다. 다른 하드웨어 플랫폼에서는 학습하는 데 몇 주가 걸렸던 모델이 TPU에서는 몇 시간이면 수렴 단계에 도달할 수 있습니다.

가용성

Cloud TPU를 사용할 수 있는 영역은 다음과 같습니다.

미국

TPU 유형(v2) TPU v2 코어 총 TPU 메모리 리전/영역
v2-8 8 64GiB us-central1-b
us-central1-c
us-central1-f
v2-32 32 256GiB us-central1-a
v2-128 128 1TiB us-central1-a
v2-256 256 2TiB us-central1-a
v2-512 512 4TiB us-central1-a
TPU 유형(v3) TPU v3 코어 총 TPU 메모리 사용 가능한 영역
v3-8 8 128GiB us-central1-a
us-central1-b
us-central1-f

유럽

TPU 유형(v2) TPU v2 코어 총 TPU 메모리 리전/영역
v2-8 8 64GiB europe-west4-a
v2-32 32 256GiB europe-west4-a
v2-128 128 1TiB europe-west4-a
v2-256 256 2TiB europe-west4-a
v2-512 512 4TiB europe-west4-a
TPU 유형(v3) TPU v3 코어 총 TPU 메모리 사용 가능한 영역
v3-8 8 128GiB europe-west4-a
v3-32 32 512GiB europe-west4-a
v3-64 64 1TiB europe-west4-a
v3-128 128 2TiB europe-west4-a
v3-256 256 4TiB europe-west4-a
v3-512 512 8TiB europe-west4-a
v3-1024 1024 16TiB europe-west4-a
v3-2048 2048 32TiB europe-west4-a

아시아 태평양

TPU 유형(v2) TPU v2 코어 총 TPU 메모리 리전/영역
v2-8 8 64GiB asia-east1-c

Cloud TPU 프로그래밍 모델

Cloud TPU는 조밀 벡터 및 행렬 연산을 매우 빠르게 수행합니다. Cloud TPU와 호스트 메모리 간의 데이터 전송은 연산 속도에 비해 느립니다. PCIe 버스의 속도는 Cloud TPU 교차점과 온칩 고대역폭 메모리(HBM)에 비해 훨씬 느립니다. 이는 실행이 호스트와 기기 사이를 오가는 동안 모델의 부분 컴파일이 PCIe 버스를 통해 데이터가 도달하기를 기다리며 대부분 유휴 상태로 있기 때문에 기기를 매우 비효율적으로 사용한다는 의미입니다. 이 문제를 완화하기 위해 Cloud TPU의 프로그래밍 모델은 TPU에서 대부분의 학습을 실행하도록 설계되었으며 이상적인 조건에서는 전체 학습 루프를 학습시킬 수 있습니다.

TPUEstimator에서 구현된 프로그래밍 모델의 핵심적인 특징은 다음과 같습니다.

  • 모든 모델 매개변수는 온칩 고대역폭 메모리에 저장됩니다.
  • Cloud TPU에서 연산을 실행하는 비용은 많은 학습 단계를 루프로 실행하는 것으로 분할 상쇄됩니다.
  • 입력 학습 데이터는 Cloud TPU에서 '인피드' 큐로 스트리밍됩니다. Cloud TPU에서 실행되는 프로그램은 각 학습 단계 중에 이러한 큐에서 배치를 가져옵니다.
  • 호스트 머신(Cloud TPU 기기에 연결된 CPU)에서 실행되는 TensorFlow 서버는 Cloud TPU 하드웨어로 '인피드'하기 전에 데이터를 가져와서 사전 처리합니다.
  • 데이터 동시 로드: Cloud TPU의 코어가 각각의 자체 HBM에 상주하는 동일한 프로그램을 동기적으로 실행합니다. 모든 코어의 각 신경망 단계 마지막에 축소 작업이 수행됩니다.

TPU 사용 시기

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

  • CPU

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

    • 소스가 존재하지 않거나 변경이 번거로운 모델
    • 최소한 부분적으로라도 CPU에서 실행해야 하는 커스텀 TensorFlow 작업이 상당히 많은 모델
    • Cloud TPU에서 사용할 수 없는 TensorFlow 작업으로 구성된 모델(사용 가능한 TensorFlow 작업 목록 참조)
    • 유효 배치 크기가 비교적 큰 중대형 모델
  • TPU

    • 행렬 연산이 주를 이루는 모델
    • 기본 학습 루프 내에 커스텀 TensorFlow 작업이 없는 모델
    • 몇 주 또는 몇 달간 학습시키는 모델
    • 효과적인 배치 크기가 매우 큰 대형, 초대형 모델

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

  • 빈번한 브랜치 생성이 필요하거나 요소별 대수가 대부분인 선형대수 프로그램. TPU는 대량의 행렬 곱셈을 신속하게 수행하는 데 최적화되어 있으므로 행렬 곱셈에 치우치지 않은 워크로드의 경우 다른 플랫폼에 비해 TPU에서 우수한 성능을 보일 확률이 적습니다.
  • TPU에서 사용할 수 없는 분산 방식으로 메모리에 액세스하는 워크로드
  • 고정밀 연산이 필요한 워크로드. 예를 들어 배정밀도 연산은 TPU에 적합하지 않습니다.
  • C++로 작성된 커스텀 TensorFlow 작업을 포함하는 신경망 워크로드. 특히 기본 학습 루프 본문의 커스텀 작업은 TPU에 적합하지 않습니다.

신경망 작업 부하는 TPU에서 전체 학습 루프를 반복적으로 여러 번 실행할 수 있어야 합니다. TPU 자체의 근본적인 요건은 아니지만 효율성을 위해 TPU 소프트웨어 생태계상 필요한 현재 제약조건 중 하나입니다.

기존 학습과의 차이

일반적인 텐서플로우 학습 그래프는 다음과 같은 다양한 기능을 제공하는 중복된 여러 하위 그래프로 구성되어 있습니다.

  • 학습 데이터를 읽는 I/O 오퍼레이션
  • 대부분 대기열로 연결된 입력 사전 처리 단계
  • 모델 변수
  • 변수의 초기화 코드
  • 모델 자체
  • 손실 함수
  • 기울기 코드(일반적으로 자동 생성됨)
  • 학습 모니터링을 위한 요약 오퍼레이션
  • 체크포인트를 위한 저장/복원 작업

Cloud TPU에서 TensorFlow 프로그램은 XLA JIT(Just-In-Time) 컴파일러에 의해 컴파일됩니다. Cloud TPU에서 학습할 때 하드웨어에서 컴파일되고 실행되는 유일한 코드는 모델의 조밀한 부분에 해당하는 손실 및 기울기 하위 그래프입니다. 텐서플로우 프로그램의 모든 기타 부분은 호스트 머신(Cloud TPU 서버)에서 일반 분산형 텐서플로우 세션의 일부로 실행됩니다. 이 세션은 일반적으로 학습 데이터, 모든 사전 처리 코드(예: 압축 이미지 디코딩, 무작위 샘플링/자르기, 학습 미니배치 조합), 그래프의 모든 유지보수 부분(예: 체크포인트 저장/복원)을 읽는 I/O 작업으로 구성되어 있습니다.

모델 개발 권장사항

단일 Cloud TPU 칩에 2개의 코어가 포함되어 있으며, 각 코어는 대부분 조밀 행렬 곱셈과 컨볼루션으로 이루어진 프로그램을 신속하게 처리하도록 설계된 여러 행렬 단위(MXU)로 구성됩니다(하드웨어 아키텍처 참조). 일반적으로 행렬 곱셈을 수행하는 데 소비하는 실행 시간의 비율이 높은 프로그램이 Cloud TPU에 적합합니다. 연산의 대부분이 비행렬 작업(예: 추가, 구조 변경, 연결)인 프로그램은 높은 MXU 사용률을 달성할 가능성이 별로 없습니다. 아래에는 Cloud TPU에 적합한 모델을 선택하고 빌드하는 데 도움이 되는 몇 가지 가이드라인이 나와 있습니다.

복제본

단일 Cloud TPU 기기가 4개의 칩으로 구성되어 있으며, 각 칩에 2개의 TPU 코어가 포함되어 있습니다. 따라서 Cloud TPU를 효율적으로 활용하려면 프로그램이 각 8개의 코어를 활용해야 합니다. TPUEstimator복제된 연산을 빌드하고 실행하기 위한 그래프 연산자를 제공합니다. 각 복제본은 기본적으로 각 코어에서 실행되는 학습 그래프의 복사본으로, 전체 배치 크기의 8분의 1을 포함하는 미니 배치를 학습시킵니다.

레이아웃

XLA 컴파일러는 행렬 곱셈을 더 작은 단위의 블록 타일로 나누는 작업을 비롯한 코드 변환을 수행하여 MXU(행렬 단위)에서 연산을 효과적으로 실행합니다. MXU 하드웨어의 구조인 128x128 시스톨릭 배열과 TPU 메모리 하위 시스템의 설계는 8배수의 차원을 선호하며 효과적인 타일 생성 작업을 위해 XLA 컴파일러에서 사용됩니다. 따라서 타일 생성에 보다 도움이 되는 특정한 레이아웃도 있지만, 타일을 생성하려면 먼저 형태 변경이 필요한 레이아웃도 있습니다. 형태 변경 오퍼레이션은 Cloud TPU에서 메모리의 제약을 받는 경우가 많습니다.

형태

XLA 컴파일러는 첫 번째 배치에 대해 적시에 텐서플로우 그래프를 컴파일합니다. 후속 배치에 다른 형태가 있으면 모델이 작동하지 않습니다. 형태가 바뀔 때마다 그래프를 다시 컴파일하는 작업이 오래 걸리기 때문입니다. 따라서 실시간으로 변경되는 동적 형태의 텐서가 포함된 모델은 TPU에 적합하지 않습니다.

패딩

고성능 Cloud TPU 프로그램을 사용하면 조밀 연산을 128x128 조각 타일로 쉽게 나눌 수 있습니다. 행렬 연산이 전체 MXU를 차지하지 못하는 경우 컴파일러는 0(영)으로 텐서를 패딩합니다. 패딩에는 두 가지 취약점이 있습니다.

  • 0(영)으로 패딩된 텐서는 TPU 코어 사용률이 낮습니다.
  • 패딩은 텐서에 필요한 온칩 메모리 저장용량을 늘려 최악의 경우 메모리 부족 오류로 이어질 수 있습니다.

패딩은 필요한 경우 XLA 컴파일러에 의해 자동으로 수행되지만, op_profile 도구를 사용하여 수행되는 패딩의 양을 직접 결정할 수도 있습니다. TPU에 적절하게 맞는 텐서 차원을 선택하여 패딩을 피할 수 있습니다.

크기

적절한 텐서 크기를 선택하는 것만으로 TPU 하드웨어, 특히 MXU의 성능을 끌어올리는 데 큰 도움이 됩니다. XLA 컴파일러는 배치 크기 또는 특징 차원을 사용하여 MXU를 최대한 활용하려고 합니다. 따라서 이 중 하나는 128의 배수여야 합니다. 그렇지 않으면 컴파일러가 이 중 하나를 128로 패딩합니다. 이상적으로는 특징 차원과 배치 크기가 모두 8의 배수여야 메모리 하위 시스템에서 높은 성능을 끌어낼 수 있습니다.

작업

사용 가능한 텐서플로우 오퍼레이션 목록을 참조하세요.

VPC 서비스 제어 통합

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

Edge TPU

클라우드에서 학습된 머신러닝 모델은 점차 에지(사물 인터넷(IoT)의 에지에서 작동하는 기기)에서 추론을 실행해야 합니다. 이러한 기기에는 실시간 데이터를 수집하고 지능형 결정을 내린 다음 다른 기기나 클라우드에 조치를 취하거나 정보를 전달하는 센서 및 기타 스마트 기기가 포함됩니다.

이러한 기기는 배터리 전원 등 제한된 전력으로 작동해야 하므로 Google은 저전력 기기에서 ML 추론을 가속화하도록 Edge TPU 보조 프로세서를 설계했습니다. 개별 Edge TPU는 2와트의 전력만 사용하여 초당 4조 작업(4TOPS)을 수행할 수 있습니다. 즉, 와트당 2TOPS를 얻습니다. 예를 들어, Edge TPU는 MobileNet V2와 같은 최첨단 모바일 비전 모델을 초당 거의 400프레임으로 전력 효율적으로 실행할 수 있습니다.

저전력 ML 가속기는 Cloud TPU와 Cloud IoT를 보완하여 AI 기반 솔루션을 지원하는 엔드 투 엔드(클라우드 투 에지, 하드웨어와 소프트웨어) 인프라를 제공합니다.

Edge TPU는 단일 보드 컴퓨터, 시스템 온 모듈, PCIe/M.2 카드, 표면 장착 모듈 등 다양한 폼 팩터의 프로토타입 제작 및 프로덕션 기기에 사용할 수 있습니다. Edge TPU 및 사용 가능한 모든 제품에 대한 자세한 내용은 coral.ai를 방문하세요.

다음 단계

  • TPU 빠른 시작을 참조하여 Cloud TPU 리소스 사용 시작하기
  • Cloud TPU 가이드 중 하나를 완료하여 Cloud TPU 리소스에서 일반적인 머신러닝 워크로드를 실행하는 방법 알아보기