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를 선택함으로써 얻을 수 있는 이점은 추론 작업의 속도 향상과 에너지 효율성이지만, 특정 모델이나 데이터 유형에 대한 최적화가 필요할 수 있음.
Groq CEO Jonathon Ross가 팟캐스트 인터뷰에서 구글에서 TPU의 원형을 만든 과정에 대해 이야기함. 처음에는 인접 팀의 추론 속도 문제를 해결하기 위해 자신의 20% 시간에 FPGA를 만들었음. Jeff Dean이 수학적 계산을 한 후 ASIC으로 전환하기로 결정함. 현재 Google은 TPU 팀을 독립 회사로 분사해야 한다는 의견이 있음. TPU는 NVidia에 대한 유일한 신뢰할 수 있는 경쟁자이며, 소프트웨어 지원은 NVidia에 이어 두 번째로 좋음.
Google이 TPU를 발명하고 Google Research가 LLM에 대한 주요 논문을 발표했음에도 NVidia와 AI 스타트업들이 시장 가치의 대부분을 차지하고 있는 상황에 대한 의문 제기.
Google 직원이 TPU v5를 확인해볼 것을 권장함. PyTorch/JAX를 지원하여 TensorFlow만 사용할 때보다 훨씬 사용하기 쉬움.
한 기사가 실리콘을 통해 추상적인 부분들을 어떻게 연결하는지 잘 설명함. CISC 명령어가 LLM 추론 단계에 어떻게 매핑되는지 보는 것이 흥미로움.
Google이 2nm EUV 기술에 진출하고 2nm 이하로 나아가야 한다는 의견. ASML이 제공하는 전자 리소그래피 기술을 확보하면 매우 강력한 결과를 얻을 수 있음. Google X의 대담한 프로젝트가 될 수 있으며, TPU가 정말 좋다면 자체 팹과 기술을 갖춘 비즈니스로 좋은 기회가 될 수 있음.
현재 TPU의 이름이 어떤 해양 생물인지에 대한 질문.
OP(Original Poster)의 인용: "TPU v1은 대략 20개의 명령어만을 가진 CISC 설계를 사용함." 이에 대한 반응으로 CISC/RISC가 연구 프로그램에서 마케팅 용어에 이르기까지 다양한 단계를 거쳤으며, 이제는 의미 없는 소리가 되었다는 풍자적 의견.
TPU 하드웨어가 실제로는 벡터와 행렬 연산만 수행하는데, 왜 "텐서"라는 용어를 사용하는지 이해하지 못한다는 댓글.