TPU (Tensor Processing Unit)
텐서 처리 장치(TPU)는 신경망 연산을 위한 Google의 맞춤형 칩입니다. 시스톨릭 배열의 작동 방식, GPU와의 비교, Edge TPU를 살펴봅니다.
텐서 처리 장치(TPU)는 Google이 신경망의 학습과 추론을 가속하기 위해 설계하는 주문형 집적 회로(ASIC)입니다. TPU는 대규모 행렬 곱셈 장치를 중심으로 구성되는데, 행렬 곱셈이 딥러닝 작업의 대부분을 차지하기 때문입니다. Google은 2015년부터 데이터 센터에서 TPU를 운영하고 있으며, TPU로 Gemini 모델을 학습하고 다른 기업에 Cloud TPU로 대여합니다. 2026년 4월에 발표된 8세대는 학습용 TPU 8t와 추론용 TPU 8i의 두 칩으로 구성됩니다.
TPU의 작동 방식#
각 TPU의 핵심은 시스톨릭 어레이로 배열된 행렬 곱셈 장치(MXU)입니다. 시스톨릭 어레이는 곱셈-누산 셀로 구성된 격자로, 셀끼리 데이터를 직접 전달합니다. 가중치를 셀에 한 번 로드하고 입력을 클록 주기마다 한 단계씩 격자에 흘려보내며 부분 합은 열을 따라 전달하므로, 메모리에서 가져온 각 값을 여러 셀이 재사용합니다. 산술 연산보다 메모리 읽기에 훨씬 많은 시간과 에너지가 들어가므로 이 설계의 효율성이 높습니다. Cloud TPU v2 및 v3에서 각 MXU는 128×128 어레이였으며, bfloat16으로 곱하고 FP32로 누산했습니다. 간단한 시뮬레이션으로 4×4 격자에서 데이터가 흐르는 모습을 확인할 수 있습니다.
import numpy as np
rng = np.random.default_rng(0)
W = rng.integers(-5, 5, (4, 4)) # weights, preloaded one per cell of a 4x4 grid
X = rng.integers(-5, 5, (6, 4)) # six input rows stream through the grid
Y = np.zeros((6, 4), dtype=int)
# Cell (k, j) holds W[k, j]. Input X[i, k] enters row k from the left and reaches
# cell (k, j) at cycle i + k + j, where it is multiplied by the stored weight and
# added to the partial sum for Y[i, j] passing down column j
cycles = 6 + 4 + 4 - 2
for t in range(cycles):
for k in range(4):
for j in range(4):
i = t - k - j
if 0 <= i < 6:
Y[i, j] += X[i, k] * W[k, j]
print(f"{X.size * 4} multiply-adds in {cycles} cycles, equal to X @ W: {np.array_equal(Y, X @ W)}")96 multiply-adds in 12 cycles, equal to X @ W: True을 출력합니다. 셀 16개가 정확한 행렬 곱을 계산하며 각 가중치는 메모리에서 한 번만 읽혀 입력 행 6개 전체에 재사용됩니다. 1세대 TPU는 이 패턴을 8비트 셀 256×256 격자에서 실행해 주기당 곱셈-누산 65,536회를 수행했으며, 최대 초당 92조 연산을 제공했습니다. 단순하고 결정적인 실행 방식은 추론에서 99번째 백분위수 응답 시간 목표를 달성하려는 Google의 목표에 적합했습니다.
TPU는 XLA가 컴파일한 코드를 실행합니다. XLA는 JAX, TensorFlow 또는 PyTorch의 전체 계산 그래프를 가져와 행렬 연산 장치에 매핑합니다. 칩은 전용 인터커넥트로 연결되어 수천 개 규모의 포드를 구성하며, 이를 통해 가장 큰 파운데이션 모델을 여러 TPU에서 동시에 학습합니다.
TPU, GPU 및 CPU 비교#
- CPU: 분기 처리와 범용 코드에 적합한 소수의 강력한 코어를 갖추며, 대부분의 학습 파이프라인에서 데이터 로딩과 전처리를 담당합니다.
- GPU: 행렬 연산용 Tensor Core와 수천 개의 프로그래밍 가능 코어를 갖춥니다. GPU는 거의 모든 모델과 프레임워크를 실행할 수 있으며 다양한 공급업체와 클라우드에서 판매됩니다.
- TPU: 대규모 밀집 행렬 연산의 효율성을 위해 유연성을 낮춘 장치입니다. 정적 텐서 형태의 워크로드에서 가장 좋은 성능을 내며, 형태가 바뀌면 XLA가 다시 컴파일합니다. 사용자 지정 연산, 잦은 분기 또는 고정밀 산술에는 적합하지 않습니다.
- NPU: 휴대폰, 노트북 및 엣지 칩에서 사용하는 신경망 가속기의 일반적인 명칭이며, Edge TPU도 여기에 포함됩니다.
Edge TPU#
Edge TPU는 Google의 Coral USB Accelerator, M.2 및 PCIe 모듈과 Dev Board에 탑재되는 소형 추론 전용 TPU입니다. 2와트의 전력으로 초당 4조 회 연산을 수행하고 8비트 정수 연산만 지원하므로, 네트워크는 모델 양자화를 통해 INT8로 완전히 변환된 뒤 Google의 Edge TPU Compiler로 컴파일되며, 컴파일러는 지원되는 연산을 칩에 배치하고 나머지 연산은 호스트 CPU에서 실행합니다. Ultralytics YOLO는 두 단계를 모두 자동화하기 위해 format="edgetpu"을 사용하며, 이 도구는 INT8 양자화를 활성화하고 x86-64 Linux 머신에서 컴파일러를 실행하여 Coral USB Accelerator가 장착된 Raspberry Pi와 같은 보드에서 실행되는 모델을 생성합니다:
from ultralytics import YOLO
# Load the smallest YOLO26 detection model
model = YOLO("yolo26n.pt")
# Quantize to INT8 and compile for the Edge TPU (x86-64 Linux only)
path = model.export(format="edgetpu")
print(f"Edge TPU model: {path}")Google의 Coral 플랫폼은 현재 2025년 10월에 웨어러블 기기용으로 발표한 오픈 소스 RISC-V 가속기 설계인 Coral NPU를 중심으로 하며, 수 밀리와트의 전력으로 초당 5120억 연산을 처리하는 것을 목표로 합니다.










