- Google의 첫 번째 TPU(Tensor Processing Unit) v1은 딥 러닝을 활용한 새로운 서비스의 기회와 필요한 하드웨어의 규모 및 비용을 고려하여 10배의 비용-성능 이점을 제공하는 ASIC(Application Specific Integrated Circuit) 개발을 목표로 함.
- TPU는 텐서 연산을 가속화하기 위해 설계되었으며, 텐서는 벡터, 스칼라, 다른 텐서 간의 다차원 배열 관계를 매핑하는 연산을 의미함.
- 행렬 곱셈은 신경망의 핵심 연산으로, 입력 벡터와 가중치 행렬을 곱한 후 활성화 함수를 적용하여 은닉층과 출력층을 계산하는 데 사용됨.
Google의 첫 번째 텐서 처리 장치: 기원
- TPU v1 프로젝트는 2013년 말에 시작되어 15개월 만에 개발되었으며, 이는 신경망 가속기에 관심이 있는 사람들에게 흥미로운 주제임.
- TPU v1의 개발 배경과 목표는 이전 포스트에서 다루었으며, 이번 포스트에서는 TPU v1의 구조와 성능에 대해 더 자세히 살펴봄.
구조와 성능
- TPU v1의 설계는 1978년 H.T Kung과 Charles E. Leiserson의 논문 "Systolic Arrays (for VLSI)"에서 제시된 아키텍처를 기반으로 함.
- Systolic array는 프로세서 네트워크로 구성되어 주기적으로 데이터를 계산하고 시스템을 통해 전달함으로써 효율적인 행렬 곱셈을 수행함.
- TPU v1의 systolic array는 256x256의 곱셈/누적 유닛으로 구성되어 있으며, 중간 결과를 메인 메모리에 저장하고 가져올 필요 없이 자동으로 필요한 결과를 생성함.
Multiply/Accumulate Units (MACs)
- TPU v1은 8비트 x 8비트 정수 곱셈을 수행하며, 부동 소수점 계산보다 더 적은 다이 면적을 필요로 하는 양자화를 활용함.
명령어 세트
- TPU v1은 약 20개의 복잡한 명령어 세트(CISC)를 사용하며, 이 명령어들은 호스트 컴퓨터에서 PCIe 인터페이스를 통해 전송됨.
- 주요 명령어에는 호스트 메모리 읽기, 가중치 읽기, 행렬 곱셈/합성, 활성화, 호스트 메모리 쓰기 등이 포함됨.
소프트웨어
- TPU v1의 하드웨어는 Tensorflow와 같은 소프트웨어 스택을 지원하여 CPU 및 GPU에서 개발된 애플리케이션을 TPU로 빠르게 이식할 수 있도록 함.
제조 및 다이
- TPU v1은 TSMC의 28nm 공정을 사용하여 제작되었으며, 다이 면적은 Google이 데이터 센터에서 사용하던 Intel Haswell CPU 및 Nvidia K80 GPU 칩의 절반 미만임.
성능
- TPU v1은 추론을 더 효율적으로 만들기 위해 설계되었으며, Nvidia K80 GPU 및 Haswell CPU에 비해 약 15배에서 30배 빠른 추론 속도와 에너지 효율성을 제공함.
교훈
- TPU v1의 맞춤형 아키텍처는 현대의 CPU 및 GPU보다 훨씬 더 나은 성능과 에너지 사용을 가능하게 함.
- TPU v1은 추론을 빠르고 전력 효율적으로 만드는 것을 목표로 설계되었으며, 훈련을 위한 설계는 아니었음.
GN⁺의 의견
- TPU v1의 개발은 구글이 대규모 데이터 센터에서의 추론 작업을 최적화하기 위해 특수 목적 하드웨어로 전환하는 중요한 전환점을 나타냄.
- Systolic array 아키텍처는 데이터 흐름을 최적화하여 메모리 접근을 최소화하고, 이는 에너지 효율성과 성능 향상에 기여함.
- TPU v1의 성공은 이후에 다양한 버전의 TPU 개발로 이어지며, AI 추론 하드웨어의 발전에 중요한 역할을 함.
- TPU와 유사한 기능을 제공하는 다른 제품으로는 Nvidia의 Tensor Core를 탑재한 GPU, Intel의 Nervana NNP, 그리고 Amazon의 Inferentia가 있음.
- TPU 기술을 도입할 때는 기존 인프라와의 호환성, 소프트웨어 스택, 그리고 특정 애플리케이션에 대한 최적화 수준을 고려해야 함. TPU를 선택함으로써 얻을 수 있는 이점은 추론 작업의 속도 향상과 에너지 효율성이지만, 특정 모델이나 데이터 유형에 대한 최적화가 필요할 수 있음.