1P by GN⁺ | ★ favorite | 댓글 1개
  • Google TPU v1은 딥러닝 서비스의 추론 비용과 규모를 감당하기 위해, GPU 대비 10배 비용 대비 성능을 목표로 2013년 말부터 15개월 만에 개발된 ASIC임
  • 핵심은 1978년 H.T. Kung과 Charles E. Leiserson의 시스톨릭 배열을 256×256 MAC 구조로 구현해, 행렬 곱셈 중간 결과의 메모리 왕복을 줄인 점임
  • TPU v1은 PCIe로 호스트와 통신하고 DDR3-2133에 가중치를 저장하며, Read_Host_Memory, Read_Weights, Matrix_Multiply / Convolve, Activate, Write_Host_Memory 같은 소수 명령으로 추론 흐름을 구성함
  • 8-bit×8-bit 정수 곱셈과 양자화로 부동소수점 계산의 다이 면적 부담을 피했고, TensorFlow와 연동되는 User Space Driver·Kernel Driver가 실행을 제어함
  • Intel Haswell CPU와 Nvidia K80 GPU가 당시 비교 대상이었으며, TPU v1은 추론에서 약 15~30배 빠르고 GPU 대비 상대적 증분 성능/Watt가 25~29배 높았지만 학습용 장치는 아니었음

추론 비용을 낮추기 위한 TPU v1의 출발점

  • TPU v1 프로젝트의 목표는 딥러닝 기반 서비스가 요구하는 대규모 하드웨어 비용을 낮추기 위해 추론용 ASIC을 빠르게 만드는 것이었음
    • 목표치는 GPU 대비 추론에서 10배 비용 대비 성능 우위였음
    • 빠른 개발, 높은 성능, 대규모 적용, 새로운 워크로드의 즉시 지원, 비용 효율성이 함께 요구됨
  • TPU라는 이름은 텐서 연산을 가속하는 장치라는 점에서 나옴
    • 실제 TPU v1 하드웨어가 다루는 핵심 계산은 주로 벡터와 행렬 연산
    • 신경망의 은닉층과 출력층은 입력값 벡터와 가중치 행렬의 곱에 활성화 함수를 적용한 결과로 표현될 수 있음
    • 여러 입력 데이터가 들어오면 행렬 곱셈 결과의 각 항목에 활성화 함수를 적용하는 형태가 됨

시스톨릭 배열로 행렬 곱셈 처리

  • TPU v1은 H.T. Kung과 Charles E. Leiserson의 1978년 논문 Systolic Arrays (for VLSI)에 나온 시스톨릭 시스템 개념을 사용함
    • 여러 프로세서가 규칙적인 리듬으로 데이터를 계산하고 전달하는 구조임
    • 각 프로세서는 짧은 계산을 수행하면서 데이터를 계속 안팎으로 이동시킴
  • 단순한 2×2 행렬 곱셈에서는 입력값을 위쪽과 왼쪽에서 올바른 순서로 넣으면 결과가 2×2 MAC 배열에서 자연스럽게 나옴
    • 각 MAC은 곱셈과 누산을 수행함
    • 부분합은 배열 안에 저장되고, 최종 결과는 이동하는 대각선 형태로 나타남
    • 2×2 예시는 4단계가 필요하지만 실제로는 왼쪽 위 MAC이 비는 즉시 다음 행렬 곱셈을 시작할 수 있어, 2사이클마다 새 행렬 곱셈이 가능함
  • 핵심은 데이터를 올바른 순서로 시스톨릭 배열에 공급하면 값과 결과의 흐름 자체가 필요한 계산 순서를 만든다는 점임
    • 중간 결과를 메인 메모리에 저장했다가 다시 가져올 필요가 없음
    • 행렬 곱셈 유닛의 구조와 입력 순서 덕분에 중간 결과가 필요한 시점에 자동으로 사용 가능함

TPU v1 시스템 구성

  • TPU v1은 호스트 컴퓨터와 PCIe 고속 직렬 버스로 통신하고, 자체 DDR3 DRAM에 직접 접근함
  • 주요 구성 요소는 다음과 같음
    • DDR3 DRAM / Weight FIFO
      • 가중치는 DDR3-2133 인터페이스로 연결된 DDR3 RAM 칩에 저장됨
      • 호스트 메모리에서 PCIe를 통해 미리 로드된 뒤, Matrix Multiply Unit에서 쓰기 위해 Weight FIFO로 이동함
    • Matrix Multiply Unit
      • 256×256 MAC으로 구성된 시스톨릭 배열임
      • 위쪽에서 256개 가중치, 왼쪽에서 256개 데이터 입력을 받음
    • Accumulators
      • 시스톨릭 행렬 유닛 아래쪽에서 나온 결과를 저장함
    • Activation
      • 신경망의 활성화 함수를 적용하는 단계임
    • Unified Buffer / Systolic Data Setup
      • 활성화 함수 적용 결과를 저장하고, 다음 층 계산을 위해 Matrix Multiply Unit의 입력으로 다시 공급할 준비를 함

계산 형식과 명령어 집합

  • TPU v1의 Matrix Multiply Unit은 8-bit×8-bit 정수 곱셈을 수행함
    • 양자화를 사용해 더 큰 다이 면적이 필요한 부동소수점 계산을 피함
  • 명령어 집합은 약 20개 명령을 가진 CISC 설계임
    • 명령어는 메모리에서 가져오지 않고 호스트 컴퓨터가 PCIe를 통해 보냄
  • 추론 흐름 대부분은 5개 주요 명령으로 구성됨
    • Read_Host_Memory
      • 입력값을 호스트 메모리에서 PCIe를 통해 Unified Buffer로 읽음
    • Read_Weights
      • 가중치 메모리에서 Weight FIFO로 가중치를 읽음
    • Matrix_Multiply / Convolve
      • Unified Buffer의 입력을 Accumulators로 보내며 행렬 곱셈 또는 컨볼루션을 수행함
      • B×256 입력과 256×256 상수 가중치 입력을 곱해 B×256 출력을 만들고, B개의 파이프라인 사이클이 걸림
    • Activate
      • Accumulators의 입력에 ReLU, Sigmoid 등 인공 뉴런의 비선형 함수를 적용하고 결과를 Unified Buffer에 출력함
    • Write_Host_Memory
      • Unified Buffer의 결과를 PCIe를 통해 호스트 메모리에 씀
  • 이 흐름은 대략 다음 형태로 볼 수 있음
Read_Host_Memory
Read_Weights
Loop_Start
    Matrix_Multiply
    Activate
Loop_End
Write_Host_Memory
  • 행렬 유닛은 Unified Buffer 읽기·쓰기를 줄여 에너지를 아끼기 위해 시스톨릭 실행을 사용함
    • 데이터는 왼쪽에서 들어오고, 가중치는 위쪽에서 로드됨
    • 256개 원소의 MAC 연산은 대각선 파면처럼 행렬을 통과함

TensorFlow와 드라이버 스택

  • TPU v1 하드웨어를 실제 서비스에서 쓰려면 이를 지원하는 소프트웨어 스택이 필요했음
    • Google은 TensorFlow를 개발·사용했기 때문에, TensorFlow가 TPU v1과 동작하도록 드라이버를 만드는 일이 핵심 단계였음
  • TPU 소프트웨어 스택은 CPU와 GPU용 스택과 호환되어야 했음
    • 애플리케이션을 TPU로 빠르게 이식할 수 있어야 했음
    • TPU에서 실행되는 애플리케이션 부분은 일반적으로 TensorFlow로 작성되고, GPU 또는 TPU에서 실행 가능한 API로 컴파일됨
  • GPU처럼 TPU 스택도 User Space DriverKernel Driver로 나뉨
    • Kernel Driver는 가볍게 유지되며 메모리 관리와 인터럽트만 처리하고 장기 안정성을 목표로 함
    • User Space Driver는 자주 바뀌며 TPU 실행 설정과 제어, TPU 순서에 맞춘 데이터 재형식화, API 호출의 TPU 명령 변환, 애플리케이션 바이너리 생성을 담당함

28nm 공정과 다이 배치

  • TPU v1은 TSMC의 비교적 성숙한 28nm 공정으로 제조됨
    • 당시 Google 데이터센터에서 쓰던 Intel Haswell CPU와 Nvidia K80 GPU 칩은 더 진보된 공정으로 만들어졌음
    • Google에 따르면 TPU v1의 다이 면적은 이들 칩 다이 면적의 절반 미만임
  • 단순한 ISA는 디코딩과 관련 작업에 필요한 다이 오버헤드를 낮췄음
    • control 영역은 다이 면적의 2% 만 차지함
    • Matrix Multiply Unit은 24%, Unified Buffer는 29% 를 차지함

성능 비교와 명확한 한계

  • TPU v1은 이미 학습된 모델을 Google 규모의 실제 서비스에서 더 효율적으로 쓰기 위한 추론용 장치임
    • 학습 속도나 효율을 개선하기 위해 설계된 장치가 아님
    • 추론과 학습은 특화 하드웨어 개발에서 서로 다른 과제를 만듦
  • 2013년 기준 핵심 비교 대상은 Intel Haswell CPU와 Nvidia K80 GPU였음
    • TPU v1은 K80 GPU보다 MAC 수가 25배 많음
    • TPU v1은 K80 GPU보다 온칩 메모리가 3.5배 많음
    • TPU v1은 K80 GPU와 Haswell CPU보다 추론에서 약 15~30배 빠름
    • GPU 대비 상대적 증분 성능/Watt는 25~29배
  • 맞춤형 아키텍처 덕분에 TPU v1은 당시 CPU와 GPU보다 높은 추론 성능과 낮은 에너지 사용을 달성함
  • 빠른 추론과 전력 효율이라는 단일 목표에 집중한 첫 세대 설계였기 때문에, 학습용으로는 설계되지 않았다는 한계가 남아 있음

댓글과 토론

Hacker News 의견들
  • Groq CEO Jonathan Ross가 최근 팟캐스트 인터뷰에서 Google에서 초기 TPU를 만들던 이야기를 했는데, 원래는 추론 속도 문제를 겪던 팀 근처에 앉아 있다가 20% 시간에 만든 FPGA였다고 함
    동작하는 걸 만든 뒤 Jeff Dean이 계산해 보고 ASIC으로 가기로 했다고 함
    지금이라면 Google이 TPU 팀을 별도 회사로 분사해야 한다고 봄. Nvidia에 맞설 유일하게 신뢰할 만한 경쟁자이고, 소프트웨어 지원도 Nvidia 다음 수준임
    https://open.spotify.com/episode/0V9kRgNS7Ds6zh3GjdXUAQ?si=q...

    • Nvidia의 장점은 중요도 순으로 보면 예약된 파운드리 물량, 고도로 통합된 소프트웨어, 이미 존재하는 하드웨어 구조, 고객 관계 정도라고 봄
      하지만 각각 약점이 있음. 파운드리 물량은 빡빡하지만, Nvidia는 더 비싼 AI 칩을 팔 수 있다면 소비자용 GPU 시장을 희생할 수 있음. 경쟁자가 몇 년 전부터 크게 베팅하거나 Intel처럼 많은 생산 능력을 가진 회사가 우선순위를 바꾸면 이 장점은 사라짐
      독점 소프트웨어가 업계 표준이면 편하지만, 실제 중요도는 용례에 크게 좌우됨. TPU용 하드웨어 설계는 GPU보다 본질적으로 훨씬 단순해 보이며, 레이 트레이싱·텍스처 샘플러·래스터화가 필요 없고 대부분 행렬 곱셈과 메모리만 많이 있으면 됨
      고객 관계는 대화에 계속 끼는 데 유용하지만, 조금이라도 이점을 찾는 시장에서는 달러당 FLOPS가 가장 높은 하드웨어 공급자가 생산 능력을 채울 만큼의 고객은 확보할 것임. 그래서 몇 년 뒤면 경쟁이 꽤 빠르게 현실화될 것 같음
    • Google이 TPU 팀을 별도 회사로 분사해야 한다는 말에는, 시장 규모와 거의 독점에 가까운 상황을 보면 Pixel 하드웨어 사업을 거의 즉시 넘어설 가능성이 있다고 봄
      다만 TPU는 Google 내부에서도 비교적 희소한 컴퓨팅 자원이고, 내부 수요를 맞추기도 어려울 가능성이 큼
    • Amazon은 비슷한 일을 하던 Annapurna Labs를 인수해서 자체 Trainium/Inferentia 실리콘을 갖고 있고, 지원 면에서는 Google보다 확실히 더 많음
    • Nvidia의 유일하게 신뢰할 만한 경쟁자가 TPU라는 말은 틀렸음. AMD와 Intel도 Habana를 통해 H100급 성능의 GPU를 갖고 있음
    • Groq는 정말 대단함. 많은 스타트업이 허풍과 약속만 들고 나오는데, Groq는 이미 작동하는 멋진 제품을 들고 등장했고 그것만으로도 좋아할 이유가 충분함
      회사를 이렇게까지 존중한다고 말하는 경우가 거의 없는데, Groq는 정말 존중함
  • Google이 TPU를 발명하고 Google Research가 LLM 논문까지 냈는데, 왜 NVDA와 AI 스타트업들이 가치의 거의 100%를 가져갔는지 모르겠음

    • Xerox와 PARC에 대한 오래된 농담으로, “복사기 회사에 종이 없는 사무실을 팔기 어렵다”는 설명이 있음
      Google의 경우에는 ChatGPT 같은 것을 널리 제공하자고 제안하면, 검색 엔진 유료 노출과 사람들이 방문하지 않아도 될 사이트의 광고 매출을 잠식할 수 있다는 비유가 가능함. 그래서 경쟁상 필요할 때만, 충격이 덜한 방식으로 조심스럽게 도입하자는 판단이 나왔을 수도 있음
      실제로 그렇게 단순하지는 않겠지만, 그게 이유라면 꽤 웃길 듯함
    • Google은 수십억 달러 규모의 이익을 내지 않는 제품에는 18개월 이상 집중하지 못함. 광고에 취해 있음
    • Google이 AI에서 가치를 못 가져갈 거라고 말하기엔 너무 이름. 자기 제품들에 AI를 통합할 기회가 충분히 있음
    • 역사적 선례로는 Xerox PARC를 보면 됨
    • OpenAI가 훨씬 높은 보상으로 Google 인재들을 빼갔음
      https://www.linkedin.com/posts/eolver_googles-defense-agains...
  • Google 직원인데, 한동안 TPU를 안 봤다면 v5를 확인해 보길 권함. 이제 PyTorch/JAX를 지원해서 TensorFlow 전용일 때보다 훨씬 쓰기 쉬워짐

    • 내 서버에 꽂을 TPU v5를 어디서 살 수 있나? 답이 “클라우드”라면, 그게 Nvidia가 압도하는 이유임
  • 이 글은 추상적으로 흩어져 있던 여러 조각이 실제로 실리콘 안에서 어떻게 흐르는지 잘 연결해 줬음
    단순한 CISC 명령들이 LLM 추론 단계에 거의 그대로 대응되는 걸 보는 게 특히 좋았음

  • 잘 모르는 걸 드러내는 멍청한 질문일 수도 있지만, 소비자 쪽에서는 M1~M4 칩이 일부 AI 작업에 좋다는 말을 계속 듣고 있음
    요즘 내게 가장 중요한 건 Photoshop, Resolve 같은 도구인데, Apple의 새 독자 칩에서 내 오래된 머신보다 훨씬 빠르게 도는 걸 봤음
    이게 이 칩이나 H100이 할 수 있는 일로 잘 이어지지 않을 수도 있지만, 어느 정도라도 이어지는지 궁금함. 물론 Apple은 독자 칩을 따로 팔지 않으니 실용화하려면 외장형 서버 같은 형태로 GPU와 AI 칩을 잔뜩 넣은 제품을 내야 할 것임

    • 전문가라고 하긴 어렵지만 M1과 여러 GPU를 벤치마크해 봤음
      M* 칩은 통합 메모리를 쓰고, 특히 Pro/Max/Ultra는 1080 같은 GPU와 비교해도 메모리 대역폭이 매우 높음. M1 Ultra의 메모리 대역폭은 2080과 3090 사이 정도임
      작은 배치 크기, 특히 로컬 작업 대부분처럼 배치 1에서는 추론이 연산 능력보다 메모리 대역폭에 막힘. 그래서 M* 칩이 머신러닝에 좋다는 말이 나옴
      하지만 H100은 주로 거대한 배치 크기의 학습에 쓰이고, 큰 모델을 학습하려면 많은 상호 연결이 필요함. 그 규모에서는 산술 강도가 매우 높아서, M* 칩은 네트워크로 묶을 수 있다고 해도 경쟁력이 크지 않음. H100처럼 전력을 많이 먹는 칩과는 전력/효율 파레토 곡선의 다른 지점을 택한 셈임
  • Google이 정말 해야 할 일은 2nm EUV 영역에 들어가고 2nm 아래로 내려가는 것임
    전자 리소그래피든 ASML이 칩에 찍어내는 기술이든 그런 걸 갖게 되면 정말 위험한 존재가 됨. Google X식 하드코어 문샷 프로젝트가 필요할 것 같음
    아니면 장비 하나를 살 5억 달러쯤은 갖고 있을지도 모름. TPU가 정말 그렇게 좋다면 자체 기술과 자체 팹까지 수직 통합하는 좋은 사업이 될 수 있음

    • 솔직히 불가능에 가까움. 먼저 알아내야 할 수십 년치 영업비밀, 첫 첨단 팹을 짓는 데 드는 수백억 또는 수천억 달러의 자본, 제대로 기능하는 사업으로 성숙하기까지 걸릴 10~20년, 그리고 그들이 만들 물량이 너무 미미하다는 점을 생각하면, 지금의 첨단 공정보다 몇 년 뒤처진 곳에 10년 뒤쯤 도달하려고 5천억 달러를 태우는 꼴이 될 가능성이 큼
      현재 첨단 팹이 수익을 내는 이유는 다양한 고객과 용도를 위한 범용 컴퓨팅 장치를 만들며 수십 년간 축적된 인재와 엔지니어링 덕분임. 게다가 고객들이 Micron의 칩온칩 HDI 수율 개선, Xilinx의 다이 간 통신 패브릭과 멀티칩 기판 설계처럼 핵심 영역에서 독립적으로 혁신을 밀어줌
      TPU는 필요한 물량을 절대 만들 수 없고, 수익성 있는 규모의 경제를 만들 고객도 끌어오지 못함. Google은 경쟁사 대비 매력적인 가격도 제시해야 함
      충분히 설득력 있는 사업성이 있다면 기존 팹들이 기꺼이 물량을 배정해 줄 것임. TPU는 아직 전혀 그 정도로 설득력 있지 않음
  • TensTorrent의 Jim Keller가 AI 코어를 만드는 다른 접근법을 설명한 발표를 들었음. RISC-V 코어 5개를 두고 하나는 데이터 적재, 하나는 데이터 업로드, 나머지는 행렬 연산 전용으로 쓰는 방식임
    그는 Google TPU도 언급했는데, 프로그래밍이 VLIW를 다루는 것 같고 컴파일러에 약 500명이 붙어 있었다고 했음

  • 원문에 “TPU v1은 약 20개 명령만 가진 CISC 설계”라고 되어 있는데, CISC/RISC는 날카로운 관찰에서 연구 프로그램, 혁명적 기술, 마케팅 유행어를 거쳐 결국 완전히 의미 없는 소리까지 온 것 같아 웃김
    용어의 생애주기라고 해야 할 듯함

    • 잘 모르겠지만, 컴퓨터 구조에서 배운 바로는 CISC와 RISC의 차이는 명령 개수 자체보다 명령의 복잡도와 더 관련 있었음
      그래서 TPU가 명령 수가 적어도 각 명령이 꽤 복잡하다면 CISC일 수 있음. 다만 컴퓨터 구조를 마지막으로 들은 게 15년 전 대학원 수업이라 기억이 흐릿함. 그 학기 대부분을 이제는 쓸모없어진 Itanium 관련 작업으로 보냈기도 함
    • 사용 가능한 명령 개수가 CISC를 구분한다고 암시하는 것 같은데, 원래 그런 기준은 아니었음
  • 파운드리 물량 수요가 엄청나 보이는데, Microsoft나 Google이 독자 칩을 만들고 생산이 필요할 때 어떻게 줄 맨 앞으로 가는지 궁금함
    충분히 단순해서 “낡고 수요가 덜한” 팹에서도 만들 수 있는 건가? Apple과 Nvidia는 많은 파운드리 물량을 이미 잡고 있는 걸로 알고 있음

  • LLM이 정말 -1, 0, 1 양자화로 크게 자리 잡으면 하드웨어가 어떻게 바뀔지 궁금함