TPU

 

[image]
[image]
알파고 '''실물'''
1. 개요
1.1. 텐서의 의미
2. 전용 소프트웨어
3. 상용화
4. 성능
5. 버전
6. 관련 문서


1. 개요


Tensor Processing Unit의 약자.
구글에서 2016년 5월에 발표한 데이터 분석 및 딥러닝용 하드웨어이다. 벡터/행렬연산의 병렬처리에 특화되어 있으며 넘사벽급의 전성비를 자랑한다. 비결은 8비트 정수 연산을 활용하는 것이다.[1] # 이는 NVIDIA등에서도 실현한적 있다. 차이점이라면, TPU는 모델의 실행뿐만 아니라 학습 과정에도 8비트 정수 연산을 활용할 것으로 추정된다는 것. (자세한 정보 공개가 없는 상황이라 정확하진 않지만) GPGPU에서 딥러닝에 필요한 것들만 남기고 나머질 다 빼버린 설계와 비슷하다는 추측도 있다. 성능 항목의 PCI-E 병목 문제를 생각하면 APU(정확히는 HSA)나 NVLINK에 가까운 구조를 포함하는 것일 수도 있다. NVIDIA의 경우에는 P100과 같은 칩셋으로 16비트 부동소숫점 연산을 사용해 모델을 훈련시키고, P4/P40과 같은 제품을 통해 8비트 정수 연산을 활용해 모델을 실행하는 것을 이상적으로 보았다. 구글 엔지니어 블로그에 의하면 알파고도 GPU가 아닌 TPU상으로 구현되어 있다고 한다.

1.1. 텐서의 의미


텐서 항목 참조.

2. 전용 소프트웨어


TPU를 위한 소프트웨어로는 구글에서 오픈소스로 공개한 TensorFlow 공식 웹사이트가 있다. 오픈 소스로 공개된 버전은 TPU가 아닌 GPU를 위한것으로 주의요망.

3. 상용화


출시 시점에서 가장 빠르게 TPU를 이용할수 있는 방법은 Google Cloud Platform을 통해 Cloud TPU 임대 베타서비스를 이용할 수 있다. 대당 6.5$/h
현재 소비자가 구할수 있는 TPU는 edge TPU 기반의 제품인 코랄 보드[2] 일체형 보드에서 부터 M.2 PCI-E확장모듈까지 다양한 폼펙터의 TPU구성을 갖춘 제품이다 다만 구글이 데이터센터용으로 쓰는 TPU가 아닌 저전력 버전 기반이라 성능은 다르다. 또한 텐서플로우를 지원한다는게 특징.
NVIDIAGeForce 20부터 TPU와 비슷한 기능을 하는 Tensor Core를 내장하기 시작했다. 용도는 다름아닌 레이트레이싱과 DLSS 안티에일리어싱 보조용.

4. 성능


구글에서 최근에 발표한 뉴럴기계번역 논문에 의하면 '''특정 조건하에서''' TPU의 속도는 GPU (Tesla K80, Kepler 코어 2개가 장착되어 있다)[3][4] 의 10배 이상 빠르다고 한다출처. 물론 해당 속도는 기계번역과정에서의 decoding단계에서 측정한거라 굉장히 제한된 조건하에서 측정한것이다. 기계 번역의 decoding 단계는 학습단계와 달리 beam search라고 부르는 '가능한 탐색루트에서 최적의 루트를 찾아내는 탐색과정'이 필요한지라 GPU에서만 돌릴수는 없고 (GPU는 CPU와 달리 탐색과 같은 범용처리에 굉장히 약하여 보통 CPU가 담당한다.) CPU와 데이터를 주고받으면서 처리해야 하는데 문제는 pci-e 버스에서 생기는 latency가 너무 길어 GPU의 장점인 빠른 병렬처리속도를 상쇄한다는것이다. 요리사가 아무리 빨리 요리를 만들어내도 배달에서 시간이 오래걸리면 꽝이라는걸 생각해보자. TPU도 마찬가지로 CPU에 탐색을 의존해야 하지만 구글에서는 latency 문제를 효과적으로 해결한것으로 보인다. (혹자는 비록 TPU의 메모리 시스템이 공개되지 않았지만 CPU와 램을 공유하는게 아닌가 생각해본다.) 한줄로 요약하면 '''CPU와 데이터를 주고 받는 특정 조건하에서는 TPU가 압도적으로 빠르다''' 가 되겠다. 물론 절대적인 1:1 속도 비교가 아니더라도 압도적인 전성비를 자랑하는 TPU는 동일 체적의 공간에서 랙서버 운용시 GPU 대비 훨씬 많은 연산력을 제공한다. 흥미로운 점은 해당 논문에서 비교로 사용된 88 코어... 듀얼 CPU의 속도도 GPU로 decoding하는것보다 빠르다는 점이다. 아무리 CPU라 할지라도 88코어면 1TFLOPS를 상회하는 연산력을 가지고 있고 GPU는 워낙에 pci-e latency에 쥐약이라 엔비디아가 괜히 PCI-E가 아닌 NV-LINK를 미는게 아니다.

5. 버전


  • TPU 1.0
Google I/O 2016에서 소개되었다. Norm Jouppi에 따르면 뉴럴 네트워크 연산에 대해 TPU는 최신 CPU및 GPU보다 15~30배 빠르며, 전성비는 30~80배 향상되었다고 한다.
  • TPU 2.0
2017년 12월 초, Jeff Dean 과 Chris Ying에 의해 발표되었다. 구글의 머신러닝 시스템 워크샵에서 설명된 바에 따르면, TPU 2.0은 600 GB/S의 메모리 대역폭과 최대성능 45 TFLOPS의 칩 4개를 연결해 최대 180 TFLOPS의 성능을 발휘할 수 있다.
  • TPU 3.0
2018년 5월 초, 순다르 피차이는 Google I/O 개발자 컨퍼런스 기조 연설에서 TPU의 3번째 버전을 공개하였다. 이전제품보다 8배 빨라졌으며, 수랭식으로 냉각된다. TPU 3.0의 포드는 100 PFLOPS 이상의 성능을 낼 수 있다고 주장한다.
  • TPU 4.0
향후 공개될것으로 예상되는 TPU.
  • EDGE TPU
소형, 저전력 플랫폼용 ML가속기. 텐서플로우 라이트와 같이 사용할수 있으며 데이터센터 용이 아닌 일반 상용제품으로 현재 소비자가 구할수 있는 유일한 구글제 TPU제품이다.

6. 관련 문서



[1] 당연한 이야기지만, 같은 비트라도 정수 연산이 부동 소수점 연산보다 더 빠르다. 하드웨어의 구현도 정수 연산이 더 쉬우니 가성비가 있다. [2] 구글과 관계된 회사에서 제품화 했기 때문에 보통 구글 코랄 보드라고 부른다[3] 현재 해외직구 시 480만원[4] TESLA K80은 GTX780의 사촌뻘 되는 칩셋을 사용한 카드이며 클럭이 몹시 낮아져있기 때문에 부동소수점 성능 자체는 AMD FURY X, GTX1070과 비슷한 수준이다.